Messages in this thread Patch in this message | | | Date | Tue, 26 Feb 2002 11:59:46 +0300 | From | Andrey Panin <> | 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] | |