aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/file.c')
-rw-r--r--fs/ocfs2/file.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index b64ef7c6e2d2..8786b3c490aa 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -945,6 +945,28 @@ bail:
945 return err; 945 return err;
946} 946}
947 947
948int ocfs2_permission(struct inode *inode, int mask, struct nameidata *nd)
949{
950 int ret;
951
952 mlog_entry_void();
953
954 ret = ocfs2_meta_lock(inode, NULL, 0);
955 if (ret) {
956 mlog_errno(ret);
957 goto out;
958 }
959
960 ret = generic_permission(inode, mask, NULL);
961 if (ret)
962 mlog_errno(ret);
963
964 ocfs2_meta_unlock(inode, 0);
965out:
966 mlog_exit(ret);
967 return ret;
968}
969
948static int ocfs2_write_remove_suid(struct inode *inode) 970static int ocfs2_write_remove_suid(struct inode *inode)
949{ 971{
950 int ret; 972 int ret;
@@ -1329,11 +1351,13 @@ bail:
1329struct inode_operations ocfs2_file_iops = { 1351struct inode_operations ocfs2_file_iops = {
1330 .setattr = ocfs2_setattr, 1352 .setattr = ocfs2_setattr,
1331 .getattr = ocfs2_getattr, 1353 .getattr = ocfs2_getattr,
1354 .permission = ocfs2_permission,
1332}; 1355};
1333 1356
1334struct inode_operations ocfs2_special_file_iops = { 1357struct inode_operations ocfs2_special_file_iops = {
1335 .setattr = ocfs2_setattr, 1358 .setattr = ocfs2_setattr,
1336 .getattr = ocfs2_getattr, 1359 .getattr = ocfs2_getattr,
1360 .permission = ocfs2_permission,
1337}; 1361};
1338 1362
1339const struct file_operations ocfs2_fops = { 1363const struct file_operations ocfs2_fops = {