inode_permission() calls devcgroup_inode_permission() and almost all such calls are _not_ for device nodes; let's at least keep the common path straight...
Showing the changes to include/linux (1 of 2 files). Show all
Unified · Split
| @@ -2,8 +2,16 @@ · 1 unmodified line | |||
| 2 | #include <linux/fs.h> | 2 | #include <linux/fs.h> |
| 3 | 3 | ||
| 4 | #ifdef CONFIG_CGROUP_DEVICE | 4 | #ifdef CONFIG_CGROUP_DEVICE |
| 5 | extern int devcgroup_inode_permission(struct inode *inode, int mask); | 5 | extern int __devcgroup_inode_permission(struct inode *inode, int mask); |
| 6 | extern int devcgroup_inode_mknod(int mode, dev_t dev); | 6 | extern int devcgroup_inode_mknod(int mode, dev_t dev); |
| 7 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) | ||
| 8 | { | ||
| 9 | if (likely(!inode->i_rdev)) | ||
| 10 | return 0; | ||
| 11 | if (!S_ISBLK(inode->i_mode) && !S_ISCHR(inode->i_mode)) | ||
| 12 | return 0; | ||
| 13 | return __devcgroup_inode_permission(inode, mask); | ||
| 14 | } | ||
| 7 | #else | 15 | #else |
| 8 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) | 16 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) |
| 9 | { return 0; } | 17 | { return 0; } |