diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/locks.c | 14 | ||||
-rw-r--r-- | fs/nfsd/nfs4state.c | 2 | ||||
-rw-r--r-- | fs/nfsd/vfs.c | 2 | ||||
-rw-r--r-- | fs/read_write.c | 2 |
4 files changed, 7 insertions, 13 deletions
diff --git a/fs/locks.c b/fs/locks.c index 43dbc7f566fa..9a3fe0d8285b 100644 --- a/fs/locks.c +++ b/fs/locks.c | |||
@@ -1119,7 +1119,7 @@ int locks_mandatory_area(int read_write, struct inode *inode, | |||
1119 | * If we've been sleeping someone might have | 1119 | * If we've been sleeping someone might have |
1120 | * changed the permissions behind our back. | 1120 | * changed the permissions behind our back. |
1121 | */ | 1121 | */ |
1122 | if ((inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID) | 1122 | if (__mandatory_lock(inode)) |
1123 | continue; | 1123 | continue; |
1124 | } | 1124 | } |
1125 | 1125 | ||
@@ -1761,9 +1761,7 @@ int fcntl_setlk(unsigned int fd, struct file *filp, unsigned int cmd, | |||
1761 | /* Don't allow mandatory locks on files that may be memory mapped | 1761 | /* Don't allow mandatory locks on files that may be memory mapped |
1762 | * and shared. | 1762 | * and shared. |
1763 | */ | 1763 | */ |
1764 | if (IS_MANDLOCK(inode) && | 1764 | if (mandatory_lock(inode) && mapping_writably_mapped(filp->f_mapping)) { |
1765 | (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID && | ||
1766 | mapping_writably_mapped(filp->f_mapping)) { | ||
1767 | error = -EAGAIN; | 1765 | error = -EAGAIN; |
1768 | goto out; | 1766 | goto out; |
1769 | } | 1767 | } |
@@ -1887,9 +1885,7 @@ int fcntl_setlk64(unsigned int fd, struct file *filp, unsigned int cmd, | |||
1887 | /* Don't allow mandatory locks on files that may be memory mapped | 1885 | /* Don't allow mandatory locks on files that may be memory mapped |
1888 | * and shared. | 1886 | * and shared. |
1889 | */ | 1887 | */ |
1890 | if (IS_MANDLOCK(inode) && | 1888 | if (mandatory_lock(inode) && mapping_writably_mapped(filp->f_mapping)) { |
1891 | (inode->i_mode & (S_ISGID | S_IXGRP)) == S_ISGID && | ||
1892 | mapping_writably_mapped(filp->f_mapping)) { | ||
1893 | error = -EAGAIN; | 1889 | error = -EAGAIN; |
1894 | goto out; | 1890 | goto out; |
1895 | } | 1891 | } |
@@ -2083,9 +2079,7 @@ static void lock_get_status(char* out, struct file_lock *fl, int id, char *pfx) | |||
2083 | out += sprintf(out, "%6s %s ", | 2079 | out += sprintf(out, "%6s %s ", |
2084 | (fl->fl_flags & FL_ACCESS) ? "ACCESS" : "POSIX ", | 2080 | (fl->fl_flags & FL_ACCESS) ? "ACCESS" : "POSIX ", |
2085 | (inode == NULL) ? "*NOINODE*" : | 2081 | (inode == NULL) ? "*NOINODE*" : |
2086 | (IS_MANDLOCK(inode) && | 2082 | mandatory_lock(inode) ? "MANDATORY" : "ADVISORY "); |
2087 | (inode->i_mode & (S_IXGRP | S_ISGID)) == S_ISGID) ? | ||
2088 | "MANDATORY" : "ADVISORY "); | ||
2089 | } else if (IS_FLOCK(fl)) { | 2083 | } else if (IS_FLOCK(fl)) { |
2090 | if (fl->fl_type & LOCK_MAND) { | 2084 | if (fl->fl_type & LOCK_MAND) { |
2091 | out += sprintf(out, "FLOCK MSNFS "); | 2085 | out += sprintf(out, "FLOCK MSNFS "); |
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 3f559700788f..3c028b9c6e0e 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -2044,7 +2044,7 @@ static inline int | |||
2044 | io_during_grace_disallowed(struct inode *inode, int flags) | 2044 | io_during_grace_disallowed(struct inode *inode, int flags) |
2045 | { | 2045 | { |
2046 | return nfs4_in_grace() && (flags & (RD_STATE | WR_STATE)) | 2046 | return nfs4_in_grace() && (flags & (RD_STATE | WR_STATE)) |
2047 | && MANDATORY_LOCK(inode); | 2047 | && mandatory_lock(inode); |
2048 | } | 2048 | } |
2049 | 2049 | ||
2050 | /* | 2050 | /* |
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 7867151ebb83..9152f87eea18 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c | |||
@@ -65,7 +65,7 @@ | |||
65 | * locks on them because there is no way to know if the accesser has | 65 | * locks on them because there is no way to know if the accesser has |
66 | * the lock. | 66 | * the lock. |
67 | */ | 67 | */ |
68 | #define IS_ISMNDLK(i) (S_ISREG((i)->i_mode) && MANDATORY_LOCK(i)) | 68 | #define IS_ISMNDLK(i) (S_ISREG((i)->i_mode) && mandatory_lock(i)) |
69 | 69 | ||
70 | /* | 70 | /* |
71 | * This is a cache of readahead params that help us choose the proper | 71 | * This is a cache of readahead params that help us choose the proper |
diff --git a/fs/read_write.c b/fs/read_write.c index 507ddff48a9a..124693e8d3fa 100644 --- a/fs/read_write.c +++ b/fs/read_write.c | |||
@@ -205,7 +205,7 @@ int rw_verify_area(int read_write, struct file *file, loff_t *ppos, size_t count | |||
205 | if (unlikely((pos < 0) || (loff_t) (pos + count) < 0)) | 205 | if (unlikely((pos < 0) || (loff_t) (pos + count) < 0)) |
206 | goto Einval; | 206 | goto Einval; |
207 | 207 | ||
208 | if (unlikely(inode->i_flock && MANDATORY_LOCK(inode))) { | 208 | if (unlikely(inode->i_flock && mandatory_lock(inode))) { |
209 | int retval = locks_mandatory_area( | 209 | int retval = locks_mandatory_area( |
210 | read_write == READ ? FLOCK_VERIFY_READ : FLOCK_VERIFY_WRITE, | 210 | read_write == READ ? FLOCK_VERIFY_READ : FLOCK_VERIFY_WRITE, |
211 | inode, file, pos, count); | 211 | inode, file, pos, count); |