lkml.org 
[lkml]   [2006]   [Jun]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[Patch] Lockdep: add parent-child annotations to usbfs
From
Date
Hi,

In usbfs's fs_remove_file() function, the aim is to remove a file or
directory from usbfs. This is done by first taking the i_mutex of the
parent directory of this file/dir via
mutex_lock(&parent->d_inode->i_mutex);
and then to call either usbfs_rmdir() for a directory or usbfs_unlink()
for a file. Both these functions then take the i_mutex for the
to-be-removed object themselves:
mutex_lock(&inode->i_mutex);

This is a classical parent->child locking order relationship that the
VFS uses all over the place; the VFS locking rule is "you need to take
the parent first". This patch annotates the usbfs code to make this
explicit and thus informs the lockdep code that those two locks indeed
have this relationship.

The rules for unlink that we already use in the VFS for unlink are to
use I_MUTEX_PARENT for the parent directory, and a normal mutex for the
file itself; this patch follows that convention.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

---
drivers/usb/core/inode.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Index: linux-2.6.17-rc5-mm1.5/drivers/usb/core/inode.c
===================================================================
--- linux-2.6.17-rc5-mm1.5.orig/drivers/usb/core/inode.c
+++ linux-2.6.17-rc5-mm1.5/drivers/usb/core/inode.c

@@ -528,7 +528,7 @@ static void fs_remove_file (struct dentr
if (!parent || !parent->d_inode)
return;

- mutex_lock(&parent->d_inode->i_mutex);
+ mutex_lock_nested(&parent->d_inode->i_mutex, I_MUTEX_PARENT);
if (usbfs_positive(dentry)) {
if (dentry->d_inode) {
if (S_ISDIR(dentry->d_inode->i_mode))
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-06-02 08:51    [W:0.022 / U:1.308 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site