Browse Source

btrfs: check link counter overflow in link(2)

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Al Viro 14 years ago
parent
commit
c055e99eea
1 changed files with 3 additions and 0 deletions
  1. 3 0
      fs/btrfs/inode.c

+ 3 - 0
fs/btrfs/inode.c

@@ -4837,6 +4837,9 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
 	if (root->objectid != BTRFS_I(inode)->root->objectid)
 	if (root->objectid != BTRFS_I(inode)->root->objectid)
 		return -EXDEV;
 		return -EXDEV;
 
 
+	if (inode->i_nlink == ~0U)
+		return -EMLINK;
+
 	btrfs_inc_nlink(inode);
 	btrfs_inc_nlink(inode);
 	inode->i_ctime = CURRENT_TIME;
 	inode->i_ctime = CURRENT_TIME;