From: Greg KH <greg@kroah.com>

This fixes an oops when a kobject is unregistered before it's child is.
The usb-serial devices show this bug very easily (yank out a device
while its port is opened...)

Patch was originally written by Mike Gorse <mgorse@mgorse.dhs.org>



 fs/sysfs/dir.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)

diff -puN fs/sysfs/dir.c~sysfs-oops-fix fs/sysfs/dir.c
--- 25/fs/sysfs/dir.c~sysfs-oops-fix	2003-12-22 20:19:01.000000000 -0800
+++ 25-akpm/fs/sysfs/dir.c	2003-12-22 20:19:01.000000000 -0800
@@ -83,7 +83,8 @@ static void remove_dir(struct dentry * d
 	struct dentry * parent = dget(d->d_parent);
 	down(&parent->d_inode->i_sem);
 	d_delete(d);
-	simple_rmdir(parent->d_inode,d);
+	if (d->d_inode)
+		simple_rmdir(parent->d_inode,d);
 
 	pr_debug(" o %s removing done (%d)\n",d->d_name.name,
 		 atomic_read(&d->d_count));

_