diff options
| author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:49:58 -0500 |
|---|---|---|
| committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:29 -0500 |
| commit | b74c79e99389cd79b31fcc08f82c24e492e63c7e (patch) | |
| tree | 763c6b412517306670bc625e90035f2d16bb739f /fs/hostfs | |
| parent | 34286d6662308d82aed891852d04c7c3a2649b16 (diff) | |
fs: provide rcu-walk aware permission i_ops
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/hostfs')
| -rw-r--r-- | fs/hostfs/hostfs_kern.c | 7 |
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 | ||
| 752 | int hostfs_permission(struct inode *ino, int desired) | 752 | int 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 | ||
