| .. | .. |
|---|
| 14 | 14 | #include <linux/mnt_namespace.h> |
|---|
| 15 | 15 | #include <linux/user_namespace.h> |
|---|
| 16 | 16 | #include <linux/namei.h> |
|---|
| 17 | | -#include <linux/delay.h> |
|---|
| 18 | 17 | #include <linux/security.h> |
|---|
| 19 | 18 | #include <linux/cred.h> |
|---|
| 20 | 19 | #include <linux/idr.h> |
|---|
| .. | .. |
|---|
| 322 | 321 | * incremented count after it has set MNT_WRITE_HOLD. |
|---|
| 323 | 322 | */ |
|---|
| 324 | 323 | smp_mb(); |
|---|
| 325 | | - while (READ_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD) { |
|---|
| 326 | | - preempt_enable(); |
|---|
| 327 | | - cpu_chill(); |
|---|
| 328 | | - preempt_disable(); |
|---|
| 329 | | - } |
|---|
| 324 | + while (READ_ONCE(mnt->mnt.mnt_flags) & MNT_WRITE_HOLD) |
|---|
| 325 | + cpu_relax(); |
|---|
| 330 | 326 | /* |
|---|
| 331 | 327 | * After the slowpath clears MNT_WRITE_HOLD, mnt_is_readonly will |
|---|
| 332 | 328 | * be set to match its requirements. So we must not load that until |
|---|