Skip to contentSkip to conversation

BUG: pdcraid OOPS due to uninitialized variable access

DISCUSSION Borsenkow Andrej 2 participants 2 messages Jul 14, 2002

lore
Share & tools
lore
#0 lore raw

On both 2.4.18-6mdk (from 8.2) and in current cooker pdcraid oopses immediately after insertion. The reason is usage of uninitialized variable in drivers/ide/pdcraid.c:

static void __init probedisk(int devindex,int device, int raidlevel)

{
        int i;
        int major, minor;
        struct promise_raid_conf *prom;
        static unsigned char block[4096];
        struct block_device *bdev;

        if (devlist[devindex].device!=-1) /* already assigned to another
array
*/
                return;
        if (strcmp("Promise Technology, Inc.",prom->promise_id))
                return; /* magic number must match */

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

here it bails out. prom is initialized later:

       major = devlist[devindex].major;
        minor = devlist[devindex].minor;

        if (read_disk_sb(major,minor,(unsigned
char*)&block,sizeof(block)))
                return;


        prom = (struct promise_raid_conf*)&block[512];

I am sorry, I do not have vanilla kernel so I cannot check if bug is in general kernel or Mandrake-specific.

-andrej

#1 lore raw
Quoted 6 lines · Borsenkow Andrej

On both 2.4.18-6mdk (from 8.2) and in current cooker pdcraid oopses immediately after insertion. The reason is usage of uninitialized variable in drivers/ide/pdcraid.c:

I am sorry, I do not have vanilla kernel so I cannot check if bug is in general kernel or Mandrake-specific.

This appears to be broken vendor specific hack. This code doesn't appear in the base pdcraid code. I guess they tried to make the autodetect more accurate and got it wrong. It would be interesting to know what the goal was and why it wasnt posted to the maintainers ?

Alan