fs: dcache: Use READ_ONCE when accessing i_dir_seq
i_dir_seq is subject to concurrent modification by a cmpxchg or store-release operation, so ensure that the relaxed access in d_alloc_parallel uses READ_ONCE. Reported-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
015555fd4d
commit
8cc07c808c
|
@ -2507,7 +2507,7 @@ struct dentry *d_alloc_parallel(struct dentry *parent,
|
|||
}
|
||||
|
||||
hlist_bl_lock(b);
|
||||
if (unlikely(parent->d_inode->i_dir_seq != seq)) {
|
||||
if (unlikely(READ_ONCE(parent->d_inode->i_dir_seq) != seq)) {
|
||||
hlist_bl_unlock(b);
|
||||
rcu_read_unlock();
|
||||
goto retry;
|
||||
|
|
Loading…
Reference in New Issue