mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
overlayfs, locking: Remove smp_mb__before_spinlock() usage
While we could replace the smp_mb__before_spinlock() with the new smp_mb__after_spinlock(), the normal pattern is to use smp_store_release() to publish an object that is used for lockless_dereference() -- and mirrors the regular rcu_assign_pointer() / rcu_dereference() patterns. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
8b1b436dd1
commit
ff7a5fb0f1
@ -446,14 +446,14 @@ static int ovl_dir_fsync(struct file *file, loff_t start, loff_t end,
|
|||||||
|
|
||||||
ovl_path_upper(dentry, &upperpath);
|
ovl_path_upper(dentry, &upperpath);
|
||||||
realfile = ovl_path_open(&upperpath, O_RDONLY);
|
realfile = ovl_path_open(&upperpath, O_RDONLY);
|
||||||
smp_mb__before_spinlock();
|
|
||||||
inode_lock(inode);
|
inode_lock(inode);
|
||||||
if (!od->upperfile) {
|
if (!od->upperfile) {
|
||||||
if (IS_ERR(realfile)) {
|
if (IS_ERR(realfile)) {
|
||||||
inode_unlock(inode);
|
inode_unlock(inode);
|
||||||
return PTR_ERR(realfile);
|
return PTR_ERR(realfile);
|
||||||
}
|
}
|
||||||
od->upperfile = realfile;
|
smp_store_release(&od->upperfile, realfile);
|
||||||
} else {
|
} else {
|
||||||
/* somebody has beaten us to it */
|
/* somebody has beaten us to it */
|
||||||
if (!IS_ERR(realfile))
|
if (!IS_ERR(realfile))
|
||||||
|
Loading…
Reference in New Issue
Block a user