The patch titled IDE core: driver layer error checking has been added to the -mm tree. Its filename is ide-core-must_check-fixes.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: IDE core: driver layer error checking From: Randy Dunlap <rdunlap@xxxxxxxxxxxx> Check driver layer return values in IDE core. Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/ide/ide-probe.c | 25 +++++++++++++++++++++---- drivers/ide/ide-proc.c | 22 ++++++++++++++++++---- drivers/ide/ide.c | 8 +++++++- 3 files changed, 46 insertions(+), 9 deletions(-) diff -puN drivers/ide/ide.c~ide-core-must_check-fixes drivers/ide/ide.c --- a/drivers/ide/ide.c~ide-core-must_check-fixes +++ a/drivers/ide/ide.c @@ -1994,10 +1994,16 @@ EXPORT_SYMBOL_GPL(ide_bus_type); */ static int __init ide_init(void) { + int ret; + printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n"); system_bus_speed = ide_system_bus_speed(); - bus_register(&ide_bus_type); + ret = bus_register(&ide_bus_type); + if (ret < 0) { + printk(KERN_WARNING "IDE: bus_register error: %d\n", ret); + return ret; + } init_ide_data(); diff -puN drivers/ide/ide-probe.c~ide-core-must_check-fixes drivers/ide/ide-probe.c --- a/drivers/ide/ide-probe.c~ide-core-must_check-fixes +++ a/drivers/ide/ide-probe.c @@ -623,6 +623,8 @@ static void hwif_release_dev (struct dev static void hwif_register (ide_hwif_t *hwif) { + int ret; + /* register with global device tree */ strlcpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE); hwif->gendev.driver_data = hwif; @@ -634,7 +636,10 @@ static void hwif_register (ide_hwif_t *h hwif->gendev.parent = NULL; } hwif->gendev.release = hwif_release_dev; - device_register(&hwif->gendev); + ret = device_register(&hwif->gendev); + if (ret < 0) + printk(KERN_WARNING "IDE: %s: device_register error: %d\n", + __FUNCTION__, ret); } static int wait_hwif_ready(ide_hwif_t *hwif) @@ -884,13 +889,19 @@ int probe_hwif_init_with_fixup(ide_hwif_ if (hwif->present) { u16 unit = 0; + int ret; + for (unit = 0; unit < MAX_DRIVES; ++unit) { ide_drive_t *drive = &hwif->drives[unit]; /* For now don't attach absent drives, we may want them on default or a new "empty" class for hotplug reprobing ? */ if (drive->present) { - device_register(&drive->gendev); + ret = device_register(&drive->gendev); + if (ret < 0) + printk(KERN_WARNING "IDE: %s: " + "device_register error: %d\n", + __FUNCTION__, ret); } } } @@ -1409,8 +1420,14 @@ int ideprobe_init (void) if (hwif->chipset == ide_unknown || hwif->chipset == ide_forced) hwif->chipset = ide_generic; for (unit = 0; unit < MAX_DRIVES; ++unit) - if (hwif->drives[unit].present) - device_register(&hwif->drives[unit].gendev); + if (hwif->drives[unit].present) { + int ret = device_register( + &hwif->drives[unit].gendev); + if (ret < 0) + printk(KERN_WARNING "IDE: %s: " + "device_register error: %d\n", + __FUNCTION__, ret); + } } } return 0; diff -puN drivers/ide/ide-proc.c~ide-core-must_check-fixes drivers/ide/ide-proc.c --- a/drivers/ide/ide-proc.c~ide-core-must_check-fixes +++ a/drivers/ide/ide-proc.c @@ -326,15 +326,24 @@ static int ide_replace_subdriver(ide_dri { struct device *dev = &drive->gendev; int ret = 1; + int err; down_write(&dev->bus->subsys.rwsem); device_release_driver(dev); /* FIXME: device can still be in use by previous driver */ strlcpy(drive->driver_req, driver, sizeof(drive->driver_req)); - device_attach(dev); + err = device_attach(dev); + if (err < 0) + printk(KERN_WARNING "IDE: %s: device_attach error: %d\n", + __FUNCTION__, err); drive->driver_req[0] = 0; - if (dev->driver == NULL) - device_attach(dev); + if (dev->driver == NULL) { + err = device_attach(dev); + if (err < 0) + printk(KERN_WARNING + "IDE: %s: device_attach(2) error: %d\n", + __FUNCTION__, err); + } if (dev->driver && !strcmp(dev->driver->name, driver)) ret = 0; up_write(&dev->bus->subsys.rwsem); @@ -524,7 +533,12 @@ static int proc_print_driver(struct devi static int ide_drivers_show(struct seq_file *s, void *p) { - bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver); + int err; + + err = bus_for_each_drv(&ide_bus_type, NULL, s, proc_print_driver); + if (err < 0) + printk(KERN_WARNING "IDE: %s: bus_for_each_drv error: %d\n", + __FUNCTION__, err); return 0; } _ Patches currently in -mm which might be from rdunlap@xxxxxxxxxxxx are acpi-bus-add-missing-newline.patch fix-undefined-missing-references-in-isa-miro-sound-driver.patch sysfs_remove_bin_file-no-return-value-dump_stack-on.patch pcie-check-and-return-bus_register-errors.patch pcie-check-and-return-bus_register-errors-fix.patch pcie-cleanup-on-probe-error.patch aic7-cleanup-module_parm_desc-strings.patch dc395x-fix-printk-format-warning.patch areca-raid-linux-scsi-driver.patch consistently-use-max_errno-in-__syscall_return.patch consistently-use-max_errno-in-__syscall_return-fix.patch eisa-bus-modalias-attributes-support-1.patch bttv-must_check-fixes.patch ide-core-must_check-fixes.patch input-must_check-fixes.patch kernel-params-must_check-fixes.patch kobject-must_check-fixes.patch pcmcia-ds-must_check-fixes.patch scsi_debug-must_check-fixes.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html