diff options
Diffstat (limited to 'fs/namei.c')
-rw-r--r-- | fs/namei.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/namei.c b/fs/namei.c index d11f404667e9..b83d38f614ff 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -1678,6 +1678,15 @@ struct file *do_filp_open(int dfd, const char *pathname, | |||
1678 | int will_write; | 1678 | int will_write; |
1679 | int flag = open_to_namei_flags(open_flag); | 1679 | int flag = open_to_namei_flags(open_flag); |
1680 | 1680 | ||
1681 | /* | ||
1682 | * O_SYNC is implemented as __O_SYNC|O_DSYNC. As many places only | ||
1683 | * check for O_DSYNC if the need any syncing at all we enforce it's | ||
1684 | * always set instead of having to deal with possibly weird behaviour | ||
1685 | * for malicious applications setting only __O_SYNC. | ||
1686 | */ | ||
1687 | if (open_flag & __O_SYNC) | ||
1688 | open_flag |= O_DSYNC; | ||
1689 | |||
1681 | if (!acc_mode) | 1690 | if (!acc_mode) |
1682 | acc_mode = MAY_OPEN | ACC_MODE(flag); | 1691 | acc_mode = MAY_OPEN | ACC_MODE(flag); |
1683 | 1692 | ||