diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2012-11-16 04:23:50 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-12-20 13:36:18 -0500 |
commit | 1e75529e3c6c18dc535f38454173c4f2dfa99685 (patch) | |
tree | e875baa006457bdffd536fe97fffe03078c91c4f /fs/namespace.c | |
parent | f01af9f85855e38fbd601e033a8eac204cc4cc1c (diff) |
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.c | 2 |
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) | |||
313 | * incremented count after it has set MNT_WRITE_HOLD. | 313 | * incremented count after it has set MNT_WRITE_HOLD. |
314 | */ | 314 | */ |
315 | smp_mb(); | 315 | smp_mb(); |
316 | while (mnt->mnt.mnt_flags & MNT_WRITE_HOLD) | 316 | while (ACCESS_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD) |
317 | cpu_relax(); | 317 | cpu_relax(); |
318 | /* | 318 | /* |
319 | * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will | 319 | * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will |