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>
This commit is contained in:
parent
f01af9f858
commit
1e75529e3c
|
@ -313,7 +313,7 @@ int __mnt_want_write(struct vfsmount *m)
|
||||||
* incremented count after it has set MNT_WRITE_HOLD.
|
* incremented count after it has set MNT_WRITE_HOLD.
|
||||||
*/
|
*/
|
||||||
smp_mb();
|
smp_mb();
|
||||||
while (mnt->mnt.mnt_flags & MNT_WRITE_HOLD)
|
while (ACCESS_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD)
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
/*
|
/*
|
||||||
* After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will
|
* After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will
|
||||||
|
|
Reference in New Issue