diff options
author | David Chinner <dgc@sgi.com> | 2008-04-09 22:20:58 -0400 |
---|---|---|
committer | Lachlan McIlroy <lachlan@redback.melbourne.sgi.com> | 2008-04-17 21:57:46 -0400 |
commit | 0c928299676c8df2b00e75d5691cd4846e6c0868 (patch) | |
tree | 48c4bd6b8157afa7016cb633dc872b15028c2294 /fs/xfs/xfs_acl.c | |
parent | 88ab02085363b7c45935d66ab3e969b4fec9a20c (diff) |
[XFS] Catch errors from xfs_acl_setmode().
Propagate the error status from xfs_acl_setmode() so that callers know if
the ACl was set correctly or not.
SGI-PV: 980084
SGI-Modid: xfs-linux-melb:xfs-kern:30792a
Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Niv Sardi <xaiki@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_acl.c')
-rw-r--r-- | fs/xfs/xfs_acl.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index 7272fe39a92d..98b515d39187 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c | |||
@@ -307,12 +307,13 @@ xfs_acl_vset( | |||
307 | 307 | ||
308 | VN_HOLD(vp); | 308 | VN_HOLD(vp); |
309 | error = xfs_acl_allow_set(vp, kind); | 309 | error = xfs_acl_allow_set(vp, kind); |
310 | if (error) | ||
311 | goto out; | ||
312 | 310 | ||
313 | /* Incoming ACL exists, set file mode based on its value */ | 311 | /* Incoming ACL exists, set file mode based on its value */ |
314 | if (kind == _ACL_TYPE_ACCESS) | 312 | if (!error && kind == _ACL_TYPE_ACCESS) |
315 | xfs_acl_setmode(vp, xfs_acl, &basicperms); | 313 | error = xfs_acl_setmode(vp, xfs_acl, &basicperms); |
314 | |||
315 | if (error) | ||
316 | goto out; | ||
316 | 317 | ||
317 | /* | 318 | /* |
318 | * If we have more than std unix permissions, set up the actual attr. | 319 | * If we have more than std unix permissions, set up the actual attr. |
@@ -707,7 +708,9 @@ xfs_acl_inherit( | |||
707 | 708 | ||
708 | memcpy(cacl, pdaclp, sizeof(xfs_acl_t)); | 709 | memcpy(cacl, pdaclp, sizeof(xfs_acl_t)); |
709 | xfs_acl_filter_mode(mode, cacl); | 710 | xfs_acl_filter_mode(mode, cacl); |
710 | xfs_acl_setmode(vp, cacl, &basicperms); | 711 | error = xfs_acl_setmode(vp, cacl, &basicperms); |
712 | if (error) | ||
713 | goto out_error; | ||
711 | 714 | ||
712 | /* | 715 | /* |
713 | * Set the Default and Access ACL on the file. The mode is already | 716 | * Set the Default and Access ACL on the file. The mode is already |
@@ -720,6 +723,7 @@ xfs_acl_inherit( | |||
720 | xfs_acl_set_attr(vp, pdaclp, _ACL_TYPE_DEFAULT, &error); | 723 | xfs_acl_set_attr(vp, pdaclp, _ACL_TYPE_DEFAULT, &error); |
721 | if (!error && !basicperms) | 724 | if (!error && !basicperms) |
722 | xfs_acl_set_attr(vp, cacl, _ACL_TYPE_ACCESS, &error); | 725 | xfs_acl_set_attr(vp, cacl, _ACL_TYPE_ACCESS, &error); |
726 | out_error: | ||
723 | _ACL_FREE(cacl); | 727 | _ACL_FREE(cacl); |
724 | return error; | 728 | return error; |
725 | } | 729 | } |