diff options
author | 2005-09-16 19:28:13 -0700 | |
---|---|---|
committer | 2005-09-17 11:50:02 -0700 | |
commit | 4fb3a53860cee2aaaf81186c451b7da0b95b45c1 (patch) | |
tree | db66ba7d3886644729707586aed781c445e12c16 /fs/locks.c | |
parent | [PATCH] CodingStyle: memory allocation (diff) | |
download | linux-4fb3a53860cee2aaaf81186c451b7da0b95b45c1.tar.gz linux-4fb3a53860cee2aaaf81186c451b7da0b95b45c1.tar.bz2 linux-4fb3a53860cee2aaaf81186c451b7da0b95b45c1.zip |
[PATCH] files: fix preemption issues
With the new fdtable locking rules, you have to protect fdtable with either
->file_lock or rcu_read_lock/unlock(). There are some places where we
aren't doing either. This patch fixes those places.
Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/locks.c')
-rw-r--r-- | fs/locks.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/locks.c b/fs/locks.c index c2c09b4798d6..f7daa5f48949 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -124,6 +124,7 @@ #include <linux/smp_lock.h> #include <linux/syscalls.h> #include <linux/time.h> +#include <linux/rcupdate.h> #include <asm/semaphore.h> #include <asm/uaccess.h> @@ -2205,6 +2206,7 @@ void steal_locks(fl_owner_t from) lock_kernel(); j = 0; + rcu_read_lock(); fdt = files_fdtable(files); for (;;) { unsigned long set; @@ -2222,6 +2224,7 @@ void steal_locks(fl_owner_t from) set >>= 1; } } + rcu_read_unlock(); unlock_kernel(); } EXPORT_SYMBOL(steal_locks); |