Check for access rights on a posix-like filesystem
int generic_permission(struct inode * inode, int mask);
inode
inode to check access rights for
mask
right to check for (MAY_READ, MAY_WRITE, MAY_EXEC, ...)
Used to check for read/write/execute permissions on a file. We use “fsuid” for this, letting us set arbitrary permissions for filesystem access without changing the “normal” uids which are used for other things.
generic_permission is rcu-walk aware. It returns -ECHILD in case an rcu-walk request cannot be satisfied (eg. requires blocking or too much complexity). It would then be called again in ref-walk mode.