Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

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

Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>

authored by

Kirill Tkhai and committed by
Miklos Szeredi
c9d8f5f0 f15ecfef

+6 -6
+2 -2
fs/fuse/dir.c
··· 207 207 fuse_queue_forget(fc, forget, outarg.nodeid, 1); 208 208 goto invalid; 209 209 } 210 - spin_lock(&fc->lock); 210 + spin_lock(&fi->lock); 211 211 fi->nlookup++; 212 - spin_unlock(&fc->lock); 212 + spin_unlock(&fi->lock); 213 213 } 214 214 kfree(forget); 215 215 if (ret == -ENOMEM)
+2 -2
fs/fuse/inode.c
··· 325 325 } 326 326 327 327 fi = get_fuse_inode(inode); 328 - spin_lock(&fc->lock); 328 + spin_lock(&fi->lock); 329 329 fi->nlookup++; 330 - spin_unlock(&fc->lock); 330 + spin_unlock(&fi->lock); 331 331 fuse_change_attributes(inode, attr, attr_valid, attr_version); 332 332 333 333 return inode;
+2 -2
fs/fuse/readdir.c
··· 213 213 } 214 214 215 215 fi = get_fuse_inode(inode); 216 - spin_lock(&fc->lock); 216 + spin_lock(&fi->lock); 217 217 fi->nlookup++; 218 - spin_unlock(&fc->lock); 218 + spin_unlock(&fi->lock); 219 219 220 220 forget_all_cached_acls(inode); 221 221 fuse_change_attributes(inode, &o->attr,