lkml.org 
[lkml]   [2002]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] remove unneeded inode semaphores from driverfs
Hi,

__remove_file() in driverfs/inode.c calls down(&dentry->d_inode->i_sem)
before calling vfs_unlink(dentry->d_parent->d_inode,dentry) which
tries to claim the same semaphore causing the livelock.
driverfs_remove_dir() makes the same calling vfs_rmdir().

These bugs are triggered by driverfs for IDE patch by Pavel Machek.

Best regards.

--
Andrey Panin | Embedded systems software engineer
pazke@orbita1.ru | PGP key: wwwkeys.eu.pgp.netdiff -urN -X /usr/share/dontdiff /linux.vanilla/fs/driverfs/inode.c /linux/fs/driverfs/inode.c
--- /linux.vanilla/fs/driverfs/inode.c Sun Feb 17 15:15:57 2002
+++ /linux/fs/driverfs/inode.c Sat Feb 23 22:42:38 2002
@@ -698,11 +698,9 @@
static void __remove_file(struct dentry * dentry)
{
dget(dentry);
- down(&dentry->d_inode->i_sem);

vfs_unlink(dentry->d_parent->d_inode,dentry);

- up(&dentry->d_inode->i_sem);
dput(dentry);

/* remove reference count from when file was created */
@@ -766,7 +764,6 @@
dentry = dget(dir->dentry);
dget(dentry->d_parent);
down(&dentry->d_parent->d_inode->i_sem);
- down(&dentry->d_inode->i_sem);

node = dir->files.next;
while (node != &dir->files) {
@@ -782,7 +779,6 @@

vfs_rmdir(dentry->d_parent->d_inode,dentry);
up(&dentry->d_parent->d_inode->i_sem);
- up(&dentry->d_inode->i_sem);

/* remove reference count from when directory was created */
dput(dentry);[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2005-03-22 13:24    [W:0.060 / U:0.472 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site