mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
fs: add get_acl helper
Factor out the code to get an ACL either from the inode or disk from check_acl, so that it can be used elsewhere later on. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
committed by
Al Viro
parent
5c8ebd57b6
commit
2982baa2ae
@@ -26,6 +26,33 @@ EXPORT_SYMBOL(posix_acl_valid);
|
||||
EXPORT_SYMBOL(posix_acl_equiv_mode);
|
||||
EXPORT_SYMBOL(posix_acl_from_mode);
|
||||
|
||||
struct posix_acl *get_acl(struct inode *inode, int type)
|
||||
{
|
||||
struct posix_acl *acl;
|
||||
|
||||
acl = get_cached_acl(inode, type);
|
||||
if (acl != ACL_NOT_CACHED)
|
||||
return acl;
|
||||
|
||||
if (!IS_POSIXACL(inode))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* A filesystem can force a ACL callback by just never filling the
|
||||
* ACL cache. But normally you'd fill the cache either at inode
|
||||
* instantiation time, or on the first ->get_acl call.
|
||||
*
|
||||
* If the filesystem doesn't have a get_acl() function at all, we'll
|
||||
* just create the negative cache entry.
|
||||
*/
|
||||
if (!inode->i_op->get_acl) {
|
||||
set_cached_acl(inode, type, NULL);
|
||||
return NULL;
|
||||
}
|
||||
return inode->i_op->get_acl(inode, type);
|
||||
}
|
||||
EXPORT_SYMBOL(get_acl);
|
||||
|
||||
/*
|
||||
* Init a fresh posix_acl
|
||||
*/
|
||||
|
Reference in New Issue
Block a user