1
linux/drivers
Arjan van de Ven 8e7795ef6b [PATCH] lockdep: annotate USBFS
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.

Has no effect on non-lockdep kernels.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-03 15:27:08 -07:00
..
acorn [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
acpi [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
amba [PATCH] 64bit resource: fix up printks for resources in misc drivers 2006-06-27 09:23:59 -07:00
atm [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
base Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial 2006-06-30 15:39:30 -07:00
block [PATCH] lockdep: floppy.c irq release fix 2006-07-03 15:27:00 -07:00
bluetooth Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cdrom [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
char [PATCH] lockdep: print all lock classes on SysRQ-D 2006-07-03 15:27:04 -07:00
clocksource [PATCH] GTOD: add scx200 HRT clocksource 2006-06-26 09:58:21 -07:00
connector [PATCH] connector-exports 2006-06-23 07:43:06 -07:00
cpufreq Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
crypto [CRYPTO] padlock: Rearrange context structure to reduce code size 2006-06-26 17:34:39 +10:00
dio
dma [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
edac [PATCH] EDAC: fix module names quoted in sysfs 2006-07-01 09:55:58 -07:00
eisa Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
fc4 [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
firmware Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
hwmon Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
i2c [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
ide [PATCH] irq-flags: ide: Use the new IRQF_ constants 2006-07-02 13:58:49 -07:00
ieee1394 [PATCH] lockdep: annotate ieee1394 skb-queue-head locking 2006-07-03 15:27:08 -07:00
infiniband [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
input [PATCH] lockdep: annotate serio 2006-07-03 15:27:07 -07:00
isdn [PATCH] irq-flags: isdn: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
leds Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
macintosh [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
mca
md Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
media [PATCH] irq-flags: media: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
message [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
mfd [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
misc [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
mmc Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-mmc 2006-07-02 16:35:07 -07:00
mtd Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
net [PATCH] irq-flags: drivers/net: Use the new IRQF_ constants 2006-07-02 13:58:51 -07:00
nubus Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
oprofile [PATCH] oprofile: convert from semaphores to mutexes 2006-06-25 10:01:04 -07:00
parisc [PATCH] irq-flags: PARISC: Use the new IRQF_ constants 2006-07-02 13:58:52 -07:00
parport [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
pci [PATCH] irq-flags: pci: Use the new IRQF_ constants 2006-07-02 13:58:52 -07:00
pcmcia Merge branch 'genirq' of master.kernel.org:/home/rmk/linux-2.6-arm 2006-07-02 15:07:45 -07:00
pnp [PATCH] PNPACPI: support shareable interrupts 2006-07-03 15:26:58 -07:00
rapidio Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
rtc [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
s390 [PATCH] lockdep: s390 turn validator off in machine-check handler 2006-07-03 15:27:05 -07:00
sbus [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
scsi [PATCH] irq-flags: scsi: Use the new IRQF_ constants 2006-07-02 13:58:53 -07:00
serial [PATCH] lockdep: annotate serial 2006-07-03 15:27:06 -07:00
sh
sn [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
spi Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
tc [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
telephony Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/devfs-2.6 2006-06-29 14:19:21 -07:00
usb [PATCH] lockdep: annotate USBFS 2006-07-03 15:27:08 -07:00
video [PATCH] fbdev: Add framebuffer and display update module support for pnx4008 2006-07-03 15:26:59 -07:00
w1 [PATCH] connector-exports 2006-06-23 07:43:06 -07:00
zorro Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
Kconfig [I/OAT]: DMA memcpy subsystem 2006-06-17 21:18:43 -07:00
Makefile [PATCH] Time: i386 Clocksource Drivers 2006-06-26 09:58:21 -07:00