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 | 2 | #include <linux/fs.h> |
| 3 | 3 | |
| 4 | 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 | 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 | 15 | #else |
| 8 | 16 | static inline int devcgroup_inode_permission(struct inode *inode, int mask) |
| 9 | 17 | { return 0; } |