aboutsummaryrefslogtreecommitdiffstats
path: root/fs/hostfs/hostfs_kern.c
diff options
context:
space:
mode:
authorNick Piggin <npiggin@kernel.dk>2011-01-07 01:49:58 -0500
committerNick Piggin <npiggin@kernel.dk>2011-01-07 01:50:29 -0500
commitb74c79e99389cd79b31fcc08f82c24e492e63c7e (patch)
tree763c6b412517306670bc625e90035f2d16bb739f /fs/hostfs/hostfs_kern.c
parent34286d6662308d82aed891852d04c7c3a2649b16 (diff)
fs: provide rcu-walk aware permission i_ops
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/hostfs/hostfs_kern.c')
-rw-r--r--fs/hostfs/hostfs_kern.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c
index 0bc81cf256b8..d3244d949a4e 100644
--- a/fs/hostfs/hostfs_kern.c
+++ b/fs/hostfs/hostfs_kern.c
@@ -749,11 +749,14 @@ int hostfs_rename(struct inode *from_ino, struct dentry *from,
749 return err; 749 return err;
750} 750}
751 751
752int hostfs_permission(struct inode *ino, int desired) 752int hostfs_permission(struct inode *ino, int desired, unsigned int flags)
753{ 753{
754 char *name; 754 char *name;
755 int r = 0, w = 0, x = 0, err; 755 int r = 0, w = 0, x = 0, err;
756 756
757 if (flags & IPERM_FLAG_RCU)
758 return -ECHILD;
759
757 if (desired & MAY_READ) r = 1; 760 if (desired & MAY_READ) r = 1;
758 if (desired & MAY_WRITE) w = 1; 761 if (desired & MAY_WRITE) w = 1;
759 if (desired & MAY_EXEC) x = 1; 762 if (desired & MAY_EXEC) x = 1;
@@ -768,7 +771,7 @@ int hostfs_permission(struct inode *ino, int desired)
768 err = access_file(name, r, w, x); 771 err = access_file(name, r, w, x);
769 __putname(name); 772 __putname(name);
770 if (!err) 773 if (!err)
771 err = generic_permission(ino, desired, NULL); 774 err = generic_permission(ino, desired, flags, NULL);
772 return err; 775 return err;
773} 776}
774 777