summaryrefslogtreecommitdiffstats
path: root/fs/namespace.c
diff options
context:
space:
mode:
authorMiao Xie2012-11-16 10:23:50 +0100
committerAl Viro2012-12-20 19:36:18 +0100
commit1e75529e3c6c18dc535f38454173c4f2dfa99685 (patch)
treee875baa006457bdffd536fe97fffe03078c91c4f /fs/namespace.c
parentMerge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc (diff)
downloadkernel-qcow2-linux-1e75529e3c6c18dc535f38454173c4f2dfa99685.tar.gz
kernel-qcow2-linux-1e75529e3c6c18dc535f38454173c4f2dfa99685.tar.xz
kernel-qcow2-linux-1e75529e3c6c18dc535f38454173c4f2dfa99685.zip
vfs, freeze: use ACCESS_ONCE() to guard access to ->mnt_flags
The compiler may optimize the while loop and make the check just be done once, so we should use ACCESS_ONCE() to guard access to ->mnt_flags Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/namespace.c')
-rw-r--r--fs/namespace.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/namespace.c b/fs/namespace.c
index 398a50ff2438..55605c552787 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -313,7 +313,7 @@ int __mnt_want_write(struct vfsmount *m)
* incremented count after it has set MNT_WRITE_HOLD.
*/
smp_mb();
- while (mnt->mnt.mnt_flags & MNT_WRITE_HOLD)
+ while (ACCESS_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD)
cpu_relax();
/*
* After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will