Messages in this thread | | | Subject | Re: [PATCH tip/core/rcu 07/13] vfs: apply lockdep-based checking to rcu_dereference() uses | From | Peter Zijlstra <> | Date | Sun, 14 Feb 2010 11:12:10 +0100 |
| |
On Thu, 2010-02-11 at 16:00 -0800, Paul E. McKenney wrote: > > -#define files_fdtable(files) (rcu_dereference((files)->fdt)) > +#define files_fdtable(files) \ > + (rcu_dereference_check((files)->fdt, \ > + rcu_read_lock_held() || \ > + lockdep_is_held(&(files)->file_lock) || > \ > + atomic_read(&files->count) == 1)) > > struct file_operations; > struct vfsmount; > @@ -78,7 +82,7 @@ static inline struct file * fcheck_files(struct files_struct *files, unsigned in > struct fdtable *fdt = files_fdtable(files); > > if (fd < fdt->max_fds) > - file = rcu_dereference(fdt->fd[fd]); > + file = rcu_dereference_check(fdt->fd[fd], rcu_read_lock_held() || lockdep_is_held(&files->file_lock) || atomic_read(&files->count) == 1); > return file;
I'm almost thinking you can do something smart here and not replicate that condition :-)
| |