Bläddra i källkod

Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4

Pull ext4 regression fixes from Ted Ts'o:
 "Bug fixes, including two regressions introduced in v3.8.  The most
  serious of these regressions is a buffer cache leak."

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
  ext4: remove duplicate call to ext4_bread() in ext4_init_new_dir()
  ext4: release buffer in failed path in dx_probe()
  ext4: fix configuration dependencies for ext4 ACLs and security labels
Linus Torvalds 12 år sedan
förälder
incheckning
f77637206d
2 ändrade filer med 3 tillägg och 2 borttagningar
  1. 2 0
      fs/ext4/Kconfig
  2. 1 2
      fs/ext4/namei.c

+ 2 - 0
fs/ext4/Kconfig

@@ -41,6 +41,7 @@ config EXT4_USE_FOR_EXT23
 
 
 config EXT4_FS_POSIX_ACL
 config EXT4_FS_POSIX_ACL
 	bool "Ext4 POSIX Access Control Lists"
 	bool "Ext4 POSIX Access Control Lists"
+	depends on EXT4_FS
 	select FS_POSIX_ACL
 	select FS_POSIX_ACL
 	help
 	help
 	  POSIX Access Control Lists (ACLs) support permissions for users and
 	  POSIX Access Control Lists (ACLs) support permissions for users and
@@ -53,6 +54,7 @@ config EXT4_FS_POSIX_ACL
 
 
 config EXT4_FS_SECURITY
 config EXT4_FS_SECURITY
 	bool "Ext4 Security Labels"
 	bool "Ext4 Security Labels"
+	depends on EXT4_FS
 	help
 	help
 	  Security labels support alternative access control models
 	  Security labels support alternative access control models
 	  implemented by security modules like SELinux.  This option
 	  implemented by security modules like SELinux.  This option

+ 1 - 2
fs/ext4/namei.c

@@ -722,7 +722,7 @@ dx_probe(const struct qstr *d_name, struct inode *dir,
 			ext4_warning(dir->i_sb, "Node failed checksum");
 			ext4_warning(dir->i_sb, "Node failed checksum");
 			brelse(bh);
 			brelse(bh);
 			*err = ERR_BAD_DX_DIR;
 			*err = ERR_BAD_DX_DIR;
-			goto fail;
+			goto fail2;
 		}
 		}
 		set_buffer_verified(bh);
 		set_buffer_verified(bh);
 
 
@@ -2368,7 +2368,6 @@ static int ext4_init_new_dir(handle_t *handle, struct inode *dir,
 	}
 	}
 
 
 	inode->i_size = EXT4_I(inode)->i_disksize = blocksize;
 	inode->i_size = EXT4_I(inode)->i_disksize = blocksize;
-	dir_block = ext4_bread(handle, inode, 0, 1, &err);
 	if (!(dir_block = ext4_bread(handle, inode, 0, 1, &err))) {
 	if (!(dir_block = ext4_bread(handle, inode, 0, 1, &err))) {
 		if (!err) {
 		if (!err) {
 			err = -EIO;
 			err = -EIO;