--- linux-2.5.67/fs/partitions/check.c Tue Apr 8 16:21:30 2003 +++ linux-2.5.67.new/fs/partitions/check.c Tue Apr 8 16:26:01 2003 @@ -163,13 +163,13 @@ static void devfs_register_partition(str struct hd_struct *p = dev->part; char devname[16]; - if (p[part-1].de) + if (p[part-1]->de) return; dir = dev->de; if (!dir) return; sprintf(devname, "part%d", part); - p[part-1].de = devfs_register (dir, devname, 0, + p[part-1]->de = devfs_register (dir, devname, 0, dev->major, dev->first_minor + part, S_IFBLK | S_IRUSR | S_IWUSR, dev->fops, NULL); @@ -281,14 +281,13 @@ void add_partition(struct gendisk *disk, memset(p, 0, sizeof(struct hd_struct)); p->start_sect = start; p->nr_sects = len; + p->partno = part; + disk->part[part-1] = p; devfs_register_partition(disk, part); snprintf(p->kobj.name,KOBJ_NAME_LEN,"%s%d",disk->kobj.name,part); p->kobj.parent = &disk->kobj; p->kobj.ktype = &ktype_part; kobject_register(&p->kobj); - - p->partno = part; - disk->part[part-1] = p; } static void disk_sysfs_symlinks(struct gendisk *disk)