<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Greg KH &lt;greg@kroah.com&gt;

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 &lt;mgorse@mgorse.dhs.org&gt;



 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-&gt;d_parent);
 	down(&amp;parent-&gt;d_inode-&gt;i_sem);
 	d_delete(d);
-	simple_rmdir(parent-&gt;d_inode,d);
+	if (d-&gt;d_inode)
+		simple_rmdir(parent-&gt;d_inode,d);
 
 	pr_debug(" o %s removing done (%d)\n",d-&gt;d_name.name,
 		 atomic_read(&amp;d-&gt;d_count));

_
</pre></body></html>