diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2013-10-01 10:41:23 -0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2013-10-01 10:41:23 -0400 |
commit | 698fa1d163c560343b8012a0a916440d076b6c8a (patch) | |
tree | c71270827595520732a4a7f5ffd9f6fc79596b4c /fs/fuse | |
parent | 6314efee3cfeea2da12dbc05edfa20e5a42391bd (diff) |
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: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse')
-rw-r--r-- | fs/fuse/dir.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index a75159846a75..b7989f2ab4c4 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c | |||
@@ -1068,6 +1068,8 @@ static int fuse_access(struct inode *inode, int mask) | |||
1068 | struct fuse_access_in inarg; | 1068 | struct fuse_access_in inarg; |
1069 | int err; | 1069 | int err; |
1070 | 1070 | ||
1071 | BUG_ON(mask & MAY_NOT_BLOCK); | ||
1072 | |||
1071 | if (fc->no_access) | 1073 | if (fc->no_access) |
1072 | return 0; | 1074 | return 0; |
1073 | 1075 | ||
@@ -1155,9 +1157,6 @@ static int fuse_permission(struct inode *inode, int mask) | |||
1155 | noticed immediately, only after the attribute | 1157 | noticed immediately, only after the attribute |
1156 | timeout has expired */ | 1158 | timeout has expired */ |
1157 | } else if (mask & (MAY_ACCESS | MAY_CHDIR)) { | 1159 | } else if (mask & (MAY_ACCESS | MAY_CHDIR)) { |
1158 | if (mask & MAY_NOT_BLOCK) | ||
1159 | return -ECHILD; | ||
1160 | |||
1161 | err = fuse_access(inode, mask); | 1160 | err = fuse_access(inode, mask); |
1162 | } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) { | 1161 | } else if ((mask & MAY_EXEC) && S_ISREG(inode->i_mode)) { |
1163 | if (!(inode->i_mode & S_IXUGO)) { | 1162 | if (!(inode->i_mode & S_IXUGO)) { |