Messages in this thread Patch in this message |  | | Date | Wed, 10 Oct 2001 17:27:27 -0700 | From | Chris Wright <> | Subject | [PATCH] minor code duplication in fs/proc/base.c |
| |
While looking through the proc code I noticed the standard_permission() function is essentially the same as vfs_permission(). It appears there is no need to maintain this code separately. For example, the recent tweaks in vfs_permission() didn't make it into standard_permission(). If it helps, here is a patch. It is against 2.4.11, but it applies cleanly 2.4.10-ac11.
thanks, -chris
--- linux-2.4.11/fs/proc/base.c Fri Jul 20 12:39:56 2001 +++ linux-2.4.11-proc/fs/proc/base.c Wed Oct 10 17:10:25 2001 @@ -184,29 +184,6 @@ /* permission checks */ -static int standard_permission(struct inode *inode, int mask) -{ - int mode = inode->i_mode; - - if ((mask & S_IWOTH) && IS_RDONLY(inode) && - (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) - return -EROFS; /* Nobody gets write access to a read-only fs */ - else if ((mask & S_IWOTH) && IS_IMMUTABLE(inode)) - return -EACCES; /* Nobody gets write access to an immutable file */ - else if (current->fsuid == inode->i_uid) - mode >>= 6; - else if (in_group_p(inode->i_gid)) - mode >>= 3; - if (((mode & mask & S_IRWXO) == mask) || capable(CAP_DAC_OVERRIDE)) - return 0; - /* read and search access */ - if ((mask == S_IROTH) || - (S_ISDIR(mode) && !(mask & ~(S_IROTH | S_IXOTH)))) - if (capable(CAP_DAC_READ_SEARCH)) - return 0; - return -EACCES; -} - static int proc_check_root(struct inode *inode) { struct dentry *de, *base, *root; @@ -249,7 +226,7 @@ static int proc_permission(struct inode *inode, int mask) { - if (standard_permission(inode, mask) != 0) + if (vfs_permission(inode, mask) != 0) return -EACCES; return proc_check_root(inode); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |