]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fuse: verify nlink
authorMiklos Szeredi <mszeredi@redhat.com>
Tue, 12 Nov 2019 10:49:04 +0000 (11:49 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Tue, 11 Feb 2020 20:03:38 +0000 (20:03 +0000)
commit c634da718db9b2fac201df2ae1b1b095344ce5eb upstream.

When adding a new hard link, make sure that i_nlink doesn't overflow.

Fixes: ac45d61357e8 ("fuse: fix nlink after unlink")
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
[bwh: Backported to 3.16: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/fuse/dir.c

index 45e0c10919f6b1d571b9e6d0f4368ba17a80802b..2f9f078b4a02ee350027791f03297b18fce28f8a 100644 (file)
@@ -890,7 +890,8 @@ static int fuse_link(struct dentry *entry, struct inode *newdir,
 
                spin_lock(&fc->lock);
                fi->attr_version = ++fc->attr_version;
-               inc_nlink(inode);
+               if (likely(inode->i_nlink < UINT_MAX))
+                       inc_nlink(inode);
                spin_unlock(&fc->lock);
                fuse_invalidate_attr(inode);
                fuse_update_ctime(inode);