Re: [patch] kobject: don't oops on null kobject.name

From: Chuck Ebbert
Date: Fri Jan 13 2006 - 22:09:05 EST


In-Reply-To: <20060114000246.GA7549@xxxxxxxxx>

On Fri, 13 Jan 2006, Greg KH wrote:

> Hm, I looked at the only user of kobjects in the kernel that I know of
> that doesn't use sysfs (the cdev code) and even it sets the kobject name
> to something sane, so I think we should be safe with this.

Well, something is still wrong.

I applied your patch to prevent registration of objects with null names on
top of my patch, then applied this to see if my test still triggered, and
the message was printed:


--- 2.6.15a.orig/lib/kobject.c
+++ 2.6.15a/lib/kobject.c
@@ -72,8 +72,10 @@ static int get_kobj_path_length(struct k
* Add 1 to strlen for leading '/' of each level.
*/
do {
- if (kobject_name(parent) == NULL)
+ if (kobject_name(parent) == NULL) {
+ printk("get_kobj_path_length: encountered NULL name\n");
return 0;
+ }
length += strlen(kobject_name(parent)) + 1;
parent = parent->parent;
} while (parent);


To reproduce:

Start with vanilla 2.6.15 and apply the three patches, which I called:

kobject_dont_register_null_name.patch <- my original
kobject_handle_null_object_name.patch <- Greg's
kobject_debug_null_path.patch <- included above

On a machine with an ATAPI CD-ROM, boot with "hdx=ide-scsi" where
hdx is the CD-ROM's drivename. Then try to mount a CD:

mount -t iso9660 /dev/hdx /mnt/cdrom

Note that hdx is being controlled by ide-scsi so this should fail. You
will see the message from my new patch print in the kernel log.

NOTE: This won't happen on 2.6.15-current because
fs/super.c::kill_block_super() no longer calls kobject_uevent().

--
Chuck
Currently reading: _Olympos_ by Dan Simmons
-
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/