mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-07 15:15:29 +00:00
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>
This commit is contained in:
parent
7dc5215798
commit
af61b96b4f
1 changed files with 7 additions and 4 deletions
|
@ -57,11 +57,14 @@ struct files_struct {
|
||||||
struct file * fd_array[NR_OPEN_DEFAULT];
|
struct file * fd_array[NR_OPEN_DEFAULT];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define files_fdtable(files) \
|
#define rcu_dereference_check_fdtable(files, fdtfd) \
|
||||||
(rcu_dereference_check((files)->fdt, \
|
(rcu_dereference_check((fdtfd), \
|
||||||
rcu_read_lock_held() || \
|
rcu_read_lock_held() || \
|
||||||
lockdep_is_held(&(files)->file_lock) || \
|
lockdep_is_held(&(files)->file_lock) || \
|
||||||
atomic_read(&files->count) == 1))
|
atomic_read(&(files)->count) == 1))
|
||||||
|
|
||||||
|
#define files_fdtable(files) \
|
||||||
|
(rcu_dereference_check_fdtable((files), (files)->fdt))
|
||||||
|
|
||||||
struct file_operations;
|
struct file_operations;
|
||||||
struct vfsmount;
|
struct vfsmount;
|
||||||
|
@ -82,7 +85,7 @@ static inline struct file * fcheck_files(struct files_struct *files, unsigned in
|
||||||
struct fdtable *fdt = files_fdtable(files);
|
struct fdtable *fdt = files_fdtable(files);
|
||||||
|
|
||||||
if (fd < fdt->max_fds)
|
if (fd < fdt->max_fds)
|
||||||
file = rcu_dereference_check(fdt->fd[fd], rcu_read_lock_held() || lockdep_is_held(&files->file_lock) || atomic_read(&files->count) == 1);
|
file = rcu_dereference_check_fdtable(files, fdt->fd[fd]);
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue