diff options
Diffstat (limited to 'fs/ocfs2/acl.c')
-rw-r--r-- | fs/ocfs2/acl.c | 24 |
1 files changed, 6 insertions, 18 deletions
diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c index 480200e94e83..783c58d9daf1 100644 --- a/fs/ocfs2/acl.c +++ b/fs/ocfs2/acl.c | |||
@@ -290,7 +290,7 @@ static int ocfs2_set_acl(handle_t *handle, | |||
290 | return ret; | 290 | return ret; |
291 | } | 291 | } |
292 | 292 | ||
293 | int ocfs2_check_acl(struct inode *inode, int mask) | 293 | struct posix_acl *ocfs2_iop_get_acl(struct inode *inode, int type) |
294 | { | 294 | { |
295 | struct ocfs2_super *osb; | 295 | struct ocfs2_super *osb; |
296 | struct buffer_head *di_bh = NULL; | 296 | struct buffer_head *di_bh = NULL; |
@@ -299,29 +299,17 @@ int ocfs2_check_acl(struct inode *inode, int mask) | |||
299 | 299 | ||
300 | osb = OCFS2_SB(inode->i_sb); | 300 | osb = OCFS2_SB(inode->i_sb); |
301 | if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) | 301 | if (!(osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL)) |
302 | return ret; | 302 | return NULL; |
303 | 303 | ||
304 | ret = ocfs2_read_inode_block(inode, &di_bh); | 304 | ret = ocfs2_read_inode_block(inode, &di_bh); |
305 | if (ret < 0) { | 305 | if (ret < 0) |
306 | mlog_errno(ret); | 306 | return ERR_PTR(ret); |
307 | return ret; | ||
308 | } | ||
309 | 307 | ||
310 | acl = ocfs2_get_acl_nolock(inode, ACL_TYPE_ACCESS, di_bh); | 308 | acl = ocfs2_get_acl_nolock(inode, type, di_bh); |
311 | 309 | ||
312 | brelse(di_bh); | 310 | brelse(di_bh); |
313 | 311 | ||
314 | if (IS_ERR(acl)) { | 312 | return acl; |
315 | mlog_errno(PTR_ERR(acl)); | ||
316 | return PTR_ERR(acl); | ||
317 | } | ||
318 | if (acl) { | ||
319 | ret = posix_acl_permission(inode, acl, mask); | ||
320 | posix_acl_release(acl); | ||
321 | return ret; | ||
322 | } | ||
323 | |||
324 | return -EAGAIN; | ||
325 | } | 313 | } |
326 | 314 | ||
327 | int ocfs2_acl_chmod(struct inode *inode) | 315 | int ocfs2_acl_chmod(struct inode *inode) |