Commit 698fa1d1 authored by Miklos Szeredi's avatar Miklos Szeredi

fuse: no RCU mode in fuse_access()

fuse_access() is never called in RCU walk, only on the final component of
access(2) and chdir(2)...
Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
parent 6314efee
...@@ -1068,6 +1068,8 @@ static int fuse_access(struct inode *inode, int mask) ...@@ -1068,6 +1068,8 @@ static int fuse_access(struct inode *inode, int mask)
struct fuse_access_in inarg; struct fuse_access_in inarg;
int err; int err;
BUG_ON(mask & MAY_NOT_BLOCK);
if (fc->no_access) if (fc->no_access)
return 0; return 0;
...@@ -1155,9 +1157,6 @@ static int fuse_permission(struct inode *inode, int mask) ...@@ -1155,9 +1157,6 @@ static int fuse_permission(struct inode *inode, int mask)
noticed immediately, only after the attribute noticed immediately, only after the attribute
timeout has expired */ timeout has expired */
} else if (mask & (MAY_ACCESS | MAY_CHDIR)) { } else if (mask & (MAY_ACCESS | MAY_CHDIR)) {
if (mask & MAY_NOT_BLOCK)
return -ECHILD;
err = fuse_access(inode, mask); err = fuse_access(inode, mask);
} else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) { } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) {
if (!(inode->i_mode & S_IXUGO)) { if (!(inode->i_mode & S_IXUGO)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment