[PATCH] dnotify race fix
authorAlexander Viro <viro@math.psu.edu>
Mon, 18 Feb 2002 00:35:06 +0000 (16:35 -0800)
committerLinus Torvalds <torvalds@penguin.transmeta.com>
Mon, 18 Feb 2002 00:35:06 +0000 (16:35 -0800)
commit222099f6c32004454f8c44ade53135adc2e1b179
tree0ee50c85c5e82808b005e11f0812287666a2f4c6
parentcb625b80c8ee31f556250b055224249ed89fe3bd
[PATCH] dnotify race fix

A bunch of places dereferences ->d_parent->d_inode with no
protection whatsoever (e.g. on return from read()).  It's an
SMP race on all boxen and pretty wide UP race if we have dnotify
set on parent (race between read() and rename() and similar beasts).

Patch below is the first one in a series of ->d_parent-related
fixes.  It adds a helper (dnotify_parent(dentry, event)) and converts
places that did inode_dir_notify(dentry->d_parent->d_inode,...) to it.

Please, apply.  Notice that problem exists in 2.4 and unlike 2.5
there we can't switch to saner API (basically, reporting file events on
file, not on a parent directory).

Some of the further fixes depend on Pat's and Greg's (driverfs and usbdevfs
resp.) patches, so getting them merged would make life easier.  And yes,
some of further chunks (e.g. smbfs ->revalidate() and friends) will also
have to go into 2.4 - they are independent from any threading projects ;-/
arch/mips64/kernel/linux32.c
fs/attr.c
fs/read_write.c
include/linux/dnotify.h