diff options
author | David S. Miller <davem@davemloft.net> | 2017-10-22 08:36:53 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-22 08:39:14 -0400 |
commit | f8ddadc4db6c7b7029b6d0e0d9af24f74ad27ca2 (patch) | |
tree | 0a6432aba336bae42313613f4c891bcfce02bd4e /fs/xfs/xfs_acl.c | |
parent | bdd091bab8c631bd2801af838e344fad34566410 (diff) | |
parent | b5ac3beb5a9f0ef0ea64cd85faf94c0dc4de0e42 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
There were quite a few overlapping sets of changes here.
Daniel's bug fix for off-by-ones in the new BPF branch instructions,
along with the added allowances for "data_end > ptr + x" forms
collided with the metadata additions.
Along with those three changes came veritifer test cases, which in
their final form I tried to group together properly. If I had just
trimmed GIT's conflict tags as-is, this would have split up the
meta tests unnecessarily.
In the socketmap code, a set of preemption disabling changes
overlapped with the rename of bpf_compute_data_end() to
bpf_compute_data_pointers().
Changes were made to the mv88e6060.c driver set addr method
which got removed in net-next.
The hyperv transport socket layer had a locking change in 'net'
which overlapped with a change of socket state macro usage
in 'net-next'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'fs/xfs/xfs_acl.c')
-rw-r--r-- | fs/xfs/xfs_acl.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index 7034e17535de..3354140de07e 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c | |||
@@ -247,6 +247,8 @@ xfs_set_mode(struct inode *inode, umode_t mode) | |||
247 | int | 247 | int |
248 | xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) | 248 | xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) |
249 | { | 249 | { |
250 | umode_t mode; | ||
251 | bool set_mode = false; | ||
250 | int error = 0; | 252 | int error = 0; |
251 | 253 | ||
252 | if (!acl) | 254 | if (!acl) |
@@ -257,16 +259,24 @@ xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) | |||
257 | return error; | 259 | return error; |
258 | 260 | ||
259 | if (type == ACL_TYPE_ACCESS) { | 261 | if (type == ACL_TYPE_ACCESS) { |
260 | umode_t mode; | ||
261 | |||
262 | error = posix_acl_update_mode(inode, &mode, &acl); | 262 | error = posix_acl_update_mode(inode, &mode, &acl); |
263 | if (error) | 263 | if (error) |
264 | return error; | 264 | return error; |
265 | error = xfs_set_mode(inode, mode); | 265 | set_mode = true; |
266 | if (error) | ||
267 | return error; | ||
268 | } | 266 | } |
269 | 267 | ||
270 | set_acl: | 268 | set_acl: |
271 | return __xfs_set_acl(inode, acl, type); | 269 | error = __xfs_set_acl(inode, acl, type); |
270 | if (error) | ||
271 | return error; | ||
272 | |||
273 | /* | ||
274 | * We set the mode after successfully updating the ACL xattr because the | ||
275 | * xattr update can fail at ENOSPC and we don't want to change the mode | ||
276 | * if the ACL update hasn't been applied. | ||
277 | */ | ||
278 | if (set_mode) | ||
279 | error = xfs_set_mode(inode, mode); | ||
280 | |||
281 | return error; | ||
272 | } | 282 | } |