diff -urNX dontdiff linux-2.6.6/fs/sysfs/dir.c linux/fs/sysfs/dir.c --- linux-2.6.6/fs/sysfs/dir.c 2004-05-09 22:32:28.000000000 -0400 +++ linux/fs/sysfs/dir.c 2004-05-23 15:15:08.000000000 -0400 @@ -26,6 +26,9 @@ { int error; + if (!p) + return -EFAULT; + down(&p->d_inode->i_sem); *d = sysfs_get_dentry(p,n); if (!IS_ERR(*d)) { @@ -95,7 +98,8 @@ void sysfs_remove_subdir(struct dentry * d) { - remove_dir(d); + if (d) + remove_dir(d); } @@ -164,6 +168,11 @@ if (!kobj->parent) return; + if (!kobj->dentry) { + kobject_set_name(kobj,new_name); + return; + } + parent = kobj->parent->dentry; down(&parent->d_inode->i_sem);