r-o-bind-mounts-elevate-write-count-opened-files
commit09162d93896dce17135b43fe1e26cbae1b8a7e68
authorDave Hansen <haveblue@us.ibm.com>
Tue, 6 Nov 2007 00:06:33 +0000 (6 00:06 +0000)
committerMatthias Urlichs <smurf@hera.kernel.org>
Wed, 14 Nov 2007 11:29:56 +0000 (14 11:29 +0000)
tree8b6656f0d16ae7cceede3cd63b6c483ecc28e2bd
parent8a8414a89314f8c4f0ddc1454c0a841fad2835a0
r-o-bind-mounts-elevate-write-count-opened-files

This is the first really tricky patch in the series.  It elevates the writer
count on a mount each time a non-special file is opened for write.

We used to do this in may_open(), but Miklos pointed out that __dentry_open()
is used as well to create filps.  This will cover even those cases, while a
call in may_open() would not have.

There is also an elevated count around the vfs_create() call in open_namei().
See the comments for more details, but we need this to fix a 'create, remount,
fail r/w open()' race.

Some filesystems forego the use of normal vfs calls to create
struct files.   Make sure that these users elevate the mnt
writer count because they will get __fput(), and we need
to make sure they're balanced.

Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/file_table.c
fs/namei.c
fs/open.c
ipc/mqueue.c