mirror of
https://github.com/adulau/aha.git
synced 2024-12-30 20:56:23 +00:00
[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>
This commit is contained in:
parent
88ab020853
commit
0c92829967
1 changed files with 9 additions and 5 deletions
|
@ -307,12 +307,13 @@ xfs_acl_vset(
|
||||||
|
|
||||||
VN_HOLD(vp);
|
VN_HOLD(vp);
|
||||||
error = xfs_acl_allow_set(vp, kind);
|
error = xfs_acl_allow_set(vp, kind);
|
||||||
if (error)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
/* Incoming ACL exists, set file mode based on its value */
|
/* Incoming ACL exists, set file mode based on its value */
|
||||||
if (kind == _ACL_TYPE_ACCESS)
|
if (!error && kind == _ACL_TYPE_ACCESS)
|
||||||
xfs_acl_setmode(vp, xfs_acl, &basicperms);
|
error = xfs_acl_setmode(vp, xfs_acl, &basicperms);
|
||||||
|
|
||||||
|
if (error)
|
||||||
|
goto out;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we have more than std unix permissions, set up the actual attr.
|
* If we have more than std unix permissions, set up the actual attr.
|
||||||
|
@ -707,7 +708,9 @@ xfs_acl_inherit(
|
||||||
|
|
||||||
memcpy(cacl, pdaclp, sizeof(xfs_acl_t));
|
memcpy(cacl, pdaclp, sizeof(xfs_acl_t));
|
||||||
xfs_acl_filter_mode(mode, cacl);
|
xfs_acl_filter_mode(mode, cacl);
|
||||||
xfs_acl_setmode(vp, cacl, &basicperms);
|
error = xfs_acl_setmode(vp, cacl, &basicperms);
|
||||||
|
if (error)
|
||||||
|
goto out_error;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the Default and Access ACL on the file. The mode is already
|
* Set the Default and Access ACL on the file. The mode is already
|
||||||
|
@ -720,6 +723,7 @@ xfs_acl_inherit(
|
||||||
xfs_acl_set_attr(vp, pdaclp, _ACL_TYPE_DEFAULT, &error);
|
xfs_acl_set_attr(vp, pdaclp, _ACL_TYPE_DEFAULT, &error);
|
||||||
if (!error && !basicperms)
|
if (!error && !basicperms)
|
||||||
xfs_acl_set_attr(vp, cacl, _ACL_TYPE_ACCESS, &error);
|
xfs_acl_set_attr(vp, cacl, _ACL_TYPE_ACCESS, &error);
|
||||||
|
out_error:
|
||||||
_ACL_FREE(cacl);
|
_ACL_FREE(cacl);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue