Commit c9d8f5f0 authored by Kirill Tkhai's avatar Kirill Tkhai Committed by Miklos Szeredi
Browse files

fuse: Protect fi->nlookup with fi->lock



This continues previous patch and introduces the same protection for
nlookup field.

Signed-off-by: default avatarKirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent f15ecfef
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -207,9 +207,9 @@ static int fuse_dentry_revalidate(struct dentry *entry, unsigned int flags)
				fuse_queue_forget(fc, forget, outarg.nodeid, 1);
				goto invalid;
			}
			spin_lock(&fc->lock);
			spin_lock(&fi->lock);
			fi->nlookup++;
			spin_unlock(&fc->lock);
			spin_unlock(&fi->lock);
		}
		kfree(forget);
		if (ret == -ENOMEM)
+2 −2
Original line number Diff line number Diff line
@@ -325,9 +325,9 @@ struct inode *fuse_iget(struct super_block *sb, u64 nodeid,
	}

	fi = get_fuse_inode(inode);
	spin_lock(&fc->lock);
	spin_lock(&fi->lock);
	fi->nlookup++;
	spin_unlock(&fc->lock);
	spin_unlock(&fi->lock);
	fuse_change_attributes(inode, attr, attr_valid, attr_version);

	return inode;
+2 −2
Original line number Diff line number Diff line
@@ -213,9 +213,9 @@ retry:
		}

		fi = get_fuse_inode(inode);
		spin_lock(&fc->lock);
		spin_lock(&fi->lock);
		fi->nlookup++;
		spin_unlock(&fc->lock);
		spin_unlock(&fi->lock);

		forget_all_cached_acls(inode);
		fuse_change_attributes(inode, &o->attr,