diff options
Diffstat (limited to 'fs/posix_acl.c')
-rw-r--r-- | fs/posix_acl.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/posix_acl.c b/fs/posix_acl.c index b1cf6bf4b41d..0aa9f1676726 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c | |||
@@ -386,3 +386,21 @@ posix_acl_chmod_masq(struct posix_acl *acl, mode_t mode) | |||
386 | 386 | ||
387 | return 0; | 387 | return 0; |
388 | } | 388 | } |
389 | |||
390 | int | ||
391 | posix_acl_chmod(struct posix_acl **acl, gfp_t gfp, mode_t mode) | ||
392 | { | ||
393 | struct posix_acl *clone = posix_acl_clone(*acl, gfp); | ||
394 | int err = -ENOMEM; | ||
395 | if (clone) { | ||
396 | err = posix_acl_chmod_masq(clone, mode); | ||
397 | if (err) { | ||
398 | posix_acl_release(clone); | ||
399 | clone = NULL; | ||
400 | } | ||
401 | } | ||
402 | posix_acl_release(*acl); | ||
403 | *acl = clone; | ||
404 | return err; | ||
405 | } | ||
406 | EXPORT_SYMBOL(posix_acl_chmod); | ||