diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-20 23:09:15 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-20 23:09:15 -0400 |
| commit | 36698206504fca9198b8563f1fc2c9e38e063e11 (patch) | |
| tree | f02b63c9b35a7962786b5dcdb1af15a63f5de1cf /fs/proc | |
| parent | ef46222e7b56e728e423527d430cb2013c595491 (diff) | |
| parent | 482e0cd3dbaa70f2a2bead4b5f2c0d203ef654ba (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
devcgroup_inode_permission: take "is it a device node" checks to inlined wrapper
fix comment in generic_permission()
kill obsolete comment for follow_down()
proc_sys_permission() is OK in RCU mode
reiserfs_permission() doesn't need to bail out in RCU mode
proc_fd_permission() is doesn't need to bail out in RCU mode
nilfs2_permission() doesn't need to bail out in RCU mode
logfs doesn't need ->permission() at all
coda_ioctl_permission() is safe in RCU mode
cifs_permission() doesn't need to bail out in RCU mode
bad_inode_permission() is safe from RCU mode
ubifs: dereferencing an ERR_PTR in ubifs_mount()
Diffstat (limited to 'fs/proc')
| -rw-r--r-- | fs/proc/base.c | 6 | ||||
| -rw-r--r-- | fs/proc/proc_sysctl.c | 3 |
2 files changed, 1 insertions, 8 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 14def991d9dd..8a84210ca080 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
| @@ -2169,11 +2169,7 @@ static const struct file_operations proc_fd_operations = { | |||
| 2169 | */ | 2169 | */ |
| 2170 | static int proc_fd_permission(struct inode *inode, int mask, unsigned int flags) | 2170 | static int proc_fd_permission(struct inode *inode, int mask, unsigned int flags) |
| 2171 | { | 2171 | { |
| 2172 | int rv; | 2172 | int rv = generic_permission(inode, mask, flags, NULL); |
| 2173 | |||
| 2174 | if (flags & IPERM_FLAG_RCU) | ||
| 2175 | return -ECHILD; | ||
| 2176 | rv = generic_permission(inode, mask, flags, NULL); | ||
| 2177 | if (rv == 0) | 2173 | if (rv == 0) |
| 2178 | return 0; | 2174 | return 0; |
| 2179 | if (task_pid(current) == proc_pid(inode)) | 2175 | if (task_pid(current) == proc_pid(inode)) |
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index f50133c11c24..d167de365a8d 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c | |||
| @@ -304,9 +304,6 @@ static int proc_sys_permission(struct inode *inode, int mask,unsigned int flags) | |||
| 304 | struct ctl_table *table; | 304 | struct ctl_table *table; |
| 305 | int error; | 305 | int error; |
| 306 | 306 | ||
| 307 | if (flags & IPERM_FLAG_RCU) | ||
| 308 | return -ECHILD; | ||
| 309 | |||
| 310 | /* Executable files are not allowed under /proc/sys/ */ | 307 | /* Executable files are not allowed under /proc/sys/ */ |
| 311 | if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) | 308 | if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) |
| 312 | return -EACCES; | 309 | return -EACCES; |
