diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2010-09-28 00:27:39 +0530 |
---|---|---|
committer | Eric Van Hensbergen <ericvh@gmail.com> | 2010-10-28 09:08:46 -0500 |
commit | 85ff872d3f4a62d076d698bd1fa15ca2a4d7c100 (patch) | |
tree | 16d74f328ccb0b81470b1fbc4cad1b37e4df7ab8 /fs/9p/vfs_inode.c | |
parent | 8e44a0805fc9d77475060280136aa491aa7d7060 (diff) |
fs/9p: Implement POSIX ACL permission checking function
The ACL value is fetched as a part of inode initialization
from the server and the permission checking function use the
cached value of the ACL
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'fs/9p/vfs_inode.c')
-rw-r--r-- | fs/9p/vfs_inode.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index c3d200d41dca..1249b8323961 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -36,6 +36,7 @@ #include <linux/sched.h> #include <linux/slab.h> #include <linux/xattr.h> +#include <linux/posix_acl.h> #include <net/9p/9p.h> #include <net/9p/client.h> @@ -44,6 +45,7 @@ #include "fid.h" #include "cache.h" #include "xattr.h" +#include "acl.h" static const struct inode_operations v9fs_dir_inode_operations; static const struct inode_operations v9fs_dir_inode_operations_dotu; @@ -500,6 +502,11 @@ v9fs_inode_dotl(struct v9fs_session_info *v9ses, struct p9_fid *fid, v9fs_vcookie_set_qid(ret, &st->qid); v9fs_cache_inode_get_cookie(ret); #endif + err = v9fs_get_acl(ret, fid); + if (err) { + iput(ret); + goto error; + } kfree(st); return ret; error: @@ -1959,7 +1966,7 @@ static const struct inode_operations v9fs_dir_inode_operations_dotl = { .getxattr = generic_getxattr, .removexattr = generic_removexattr, .listxattr = v9fs_listxattr, - + .check_acl = v9fs_check_acl, }; static const struct inode_operations v9fs_dir_inode_operations = { @@ -1986,6 +1993,7 @@ static const struct inode_operations v9fs_file_inode_operations_dotl = { .getxattr = generic_getxattr, .removexattr = generic_removexattr, .listxattr = v9fs_listxattr, + .check_acl = v9fs_check_acl, }; static const struct inode_operations v9fs_symlink_inode_operations = { |