Commit af61b96b4f68f7ab25ebf34fed275fabf64f2edc

Authored by Paul E. McKenney
Committed by Ingo Molnar
1 parent 7dc5215798

vfs: Abstract rcu_dereference_check for files-fdtable use

Create an rcu_dereference_check_fdtable() that encapsulates the
rcu_dereference_check() condition for fcheck_files() use.  This
has the beneficial side-effect of getting rid of a very long
line.

Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: laijs@cn.fujitsu.com
Cc: dipankar@in.ibm.com
Cc: mathieu.desnoyers@polymtl.ca
Cc: josh@joshtriplett.org
Cc: dvhltc@us.ibm.com
Cc: niv@us.ibm.com
Cc: peterz@infradead.org
Cc: rostedt@goodmis.org
Cc: Valdis.Kletnieks@vt.edu
Cc: dhowells@redhat.com
LKML-Reference: <1266887105-1528-9-git-send-email-paulmck@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 1 changed file with 7 additions and 4 deletions Side-by-side Diff

include/linux/fdtable.h
... ... @@ -57,12 +57,15 @@
57 57 struct file * fd_array[NR_OPEN_DEFAULT];
58 58 };
59 59  
60   -#define files_fdtable(files) \
61   - (rcu_dereference_check((files)->fdt, \
  60 +#define rcu_dereference_check_fdtable(files, fdtfd) \
  61 + (rcu_dereference_check((fdtfd), \
62 62 rcu_read_lock_held() || \
63 63 lockdep_is_held(&(files)->file_lock) || \
64   - atomic_read(&files->count) == 1))
  64 + atomic_read(&(files)->count) == 1))
65 65  
  66 +#define files_fdtable(files) \
  67 + (rcu_dereference_check_fdtable((files), (files)->fdt))
  68 +
66 69 struct file_operations;
67 70 struct vfsmount;
68 71 struct dentry;
... ... @@ -82,7 +85,7 @@
82 85 struct fdtable *fdt = files_fdtable(files);
83 86  
84 87 if (fd < fdt->max_fds)
85   - file = rcu_dereference_check(fdt->fd[fd], rcu_read_lock_held() || lockdep_is_held(&files->file_lock) || atomic_read(&files->count) == 1);
  88 + file = rcu_dereference_check_fdtable(files, fdt->fd[fd]);
86 89 return file;
87 90 }
88 91