Re: [Bluez-devel] Oops involving RFCOMM and sysfs

Tejun Heo
2008-01-07T15:24:22Z

[-- Attachment #1: Type: text/plain, Size: 726 bytes --]

Gabor Gombas wrote:
> Hi,
>
> On Sat, Jan 05, 2008 at 07:50:39AM +0000, Al Viro wrote:
>
>> Could you stick
>> if (!parent->d_inode)
>> printk(KERN_WARNING "sysfs locking blows: %s",
>> parent->d_name.name);
>> right before
>> mutex_lock(&parent->d_inode->i_mutex);
>> dentry = lookup_one_noperm(cur->s_name, parent);
>> mutex_unlock(&parent->d_inode->i_mutex);
>> in sysfs_get_dentry() (fs/sysfs/dir.c) and verify that it does, indeed,
>> trigger?
>
> Here it is:
>
> Jan 7 14:35:43 twister kernel: sysfs locking blows: acl001BAFE1624D<1>Unable to handle kernel NULL pointer dereference at 00000000000000b8 RIP:

Does the attached patch fix the problem?

--
tejun

[-- Attachment #2: kill-extra-put-in-sysfs_move_dir.patch --]
[-- Type: text/x-patch, Size: 341 bytes --]

diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 3371629..4e7f3bf 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -878,7 +878,6 @@ again:
error = 0;
d_add(new_dentry, NULL);
d_move(old_dentry, new_dentry);
- dput(new_dentry);

/* Remove from old parent's list and insert into new parent's list. */
sysfs_unlink_sibling(sd);