kobject_register needs return value checks (was: What protectiondoes sysfs_readdir have with SMP/Preemption?)

From: Steven Rostedt
Date: Wed Nov 23 2005 - 10:24:41 EST


I'm doing some tests to see what happens on a failure of setting up
something in the sysfs, and I've discovered a few areas that don't test
the return value of kobject_register. The test was due to a memory
problem in a custom kernel that showed that sysfs didn't quite handle
the error cases well.

I did the following command:

find . -name "*.c" ! -type d | xargs grep "kobject_register"

I found 27 hits. Of these:

14 - checked the return value.
1 - reference in .mod.c file /* ignore it */
3 - in comments /* ignore it */
1 - declaration of actual function /* ignore it */
1 - EXPORT_SYMBOL /* ignore it */
1 - inside a printk quote. /* ignore it */

and ...

6 - calls without checking return values.

Here are the culprits:

./drivers/acpi/scan.c: kobject_register(&device->kobj);
./drivers/firmware/efivars.c: kobject_register(&new_efivar->kobj);
./drivers/md/md.c: kobject_register(&mddev->kobj);
./drivers/parisc/pdc_stable.c: kobject_register(&entry->kobj);
./fs/partitions/check.c: kobject_register(&p->kobj);
./kernel/params.c: kobject_register(&mk->kobj);


Normally, these would not return errors, but in case they do, the kernel
should be robust enough to handle it.

I tried to CC all the maintainers of the above files.

-- Steve


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/