2002-07-14 17:31:55

by Borsenkow Andrej

[permalink] [raw]
Subject: BUG: pdcraid OOPS due to uninitialized variable access

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


2002-07-14 22:02:03

by Alan

[permalink] [raw]
Subject: Re: BUG: pdcraid OOPS due to uninitialized variable access

On Sun, 2002-07-14 at 18:34, Borsenkow Andrej wrote:
> 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