Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7c0a167 authored by Miklos Szeredi's avatar Miklos Szeredi
Browse files

fuse: make fuse_dentry_revalidate() RCU aware



Only bail out of fuse_dentry_revalidate() on LOOKUP_RCU when blocking
is actually necessary.

CC: Nick Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@suse.cz>
parent 19690ddb
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -158,10 +158,7 @@ static int fuse_dentry_revalidate(struct dentry *entry, struct nameidata *nd)
{
	struct inode *inode;

	if (nd && nd->flags & LOOKUP_RCU)
		return -ECHILD;

	inode = entry->d_inode;
	inode = ACCESS_ONCE(entry->d_inode);
	if (inode && is_bad_inode(inode))
		return 0;
	else if (fuse_dentry_time(entry) < get_jiffies_64()) {
@@ -177,6 +174,9 @@ static int fuse_dentry_revalidate(struct dentry *entry, struct nameidata *nd)
		if (!inode)
			return 0;

		if (nd->flags & LOOKUP_RCU)
			return -ECHILD;

		fc = get_fuse_conn(inode);
		req = fuse_get_req(fc);
		if (IS_ERR(req))