Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08d9329c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull misc udf, ext2, ext3, and isofs fixes from Jan Kara:
 "Assorted, mostly trivial, fixes for udf, ext2, ext3, and isofs.  I'm
  on vacation and scarcely checking email since we are expecting baby
  any day now but these fixes should be safe to go in and I don't want
  to delay them unnecessarily."

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  udf: avoid info leak on export
  isofs: avoid info leak on export
  udf: Improve table length check to avoid possible overflow
  ext3: Check return value of blkdev_issue_flush()
  jbd: Check return value of blkdev_issue_flush()
  udf: Do not decrement i_blocks when freeing indirect extent block
  udf: Fix memory leak when mounting
  ext2: cleanup the confused goto label
  UDF: Remove unnecessary variable "offset" from udf_fill_inode
  udf: stop using s_dirt
  ext3: force ro mount if ext3_setup_super() fails
  quota: fix checkpatch.pl warning by replacing <asm/uaccess.h> with <linux/uaccess.h>
parents 2c05b2c8 0143fc5e
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -771,13 +771,13 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent)
	err = -ENOMEM;
	err = -ENOMEM;
	sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
	sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
	if (!sbi)
	if (!sbi)
		goto failed_unlock;
		goto failed;


	sbi->s_blockgroup_lock =
	sbi->s_blockgroup_lock =
		kzalloc(sizeof(struct blockgroup_lock), GFP_KERNEL);
		kzalloc(sizeof(struct blockgroup_lock), GFP_KERNEL);
	if (!sbi->s_blockgroup_lock) {
	if (!sbi->s_blockgroup_lock) {
		kfree(sbi);
		kfree(sbi);
		goto failed_unlock;
		goto failed;
	}
	}
	sb->s_fs_info = sbi;
	sb->s_fs_info = sbi;
	sbi->s_sb_block = sb_block;
	sbi->s_sb_block = sb_block;
@@ -1130,7 +1130,7 @@ failed_sbi:
	sb->s_fs_info = NULL;
	sb->s_fs_info = NULL;
	kfree(sbi->s_blockgroup_lock);
	kfree(sbi->s_blockgroup_lock);
	kfree(sbi);
	kfree(sbi);
failed_unlock:
failed:
	return ret;
	return ret;
}
}


+7 −2
Original line number Original line Diff line number Diff line
@@ -92,8 +92,13 @@ int ext3_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
	 * disk caches manually so that data really is on persistent
	 * disk caches manually so that data really is on persistent
	 * storage
	 * storage
	 */
	 */
	if (needs_barrier)
	if (needs_barrier) {
		blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
		int err;

		err = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
		if (!ret)
			ret = err;
	}
out:
out:
	trace_ext3_sync_file_exit(inode, ret);
	trace_ext3_sync_file_exit(inode, ret);
	return ret;
	return ret;
+2 −1
Original line number Original line Diff line number Diff line
@@ -2058,7 +2058,8 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
		goto failed_mount3;
		goto failed_mount3;
	}
	}


	ext3_setup_super (sb, es, sb->s_flags & MS_RDONLY);
	if (ext3_setup_super(sb, es, sb->s_flags & MS_RDONLY))
		sb->s_flags |= MS_RDONLY;


	EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
	EXT3_SB(sb)->s_mount_state |= EXT3_ORPHAN_FS;
	ext3_orphan_cleanup(sb, es);
	ext3_orphan_cleanup(sb, es);
+1 −0
Original line number Original line Diff line number Diff line
@@ -134,6 +134,7 @@ isofs_export_encode_fh(struct inode *inode,
	len = 3;
	len = 3;
	fh32[0] = ei->i_iget5_block;
	fh32[0] = ei->i_iget5_block;
 	fh16[2] = (__u16)ei->i_iget5_offset;  /* fh16 [sic] */
 	fh16[2] = (__u16)ei->i_iget5_offset;  /* fh16 [sic] */
	fh16[3] = 0;  /* avoid leaking uninitialized data */
	fh32[2] = inode->i_generation;
	fh32[2] = inode->i_generation;
	if (parent) {
	if (parent) {
		struct iso_inode_info *eparent;
		struct iso_inode_info *eparent;
+5 −2
Original line number Original line Diff line number Diff line
@@ -265,8 +265,11 @@ int journal_recover(journal_t *journal)
	if (!err)
	if (!err)
		err = err2;
		err = err2;
	/* Flush disk caches to get replayed data on the permanent storage */
	/* Flush disk caches to get replayed data on the permanent storage */
	if (journal->j_flags & JFS_BARRIER)
	if (journal->j_flags & JFS_BARRIER) {
		blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
		err2 = blkdev_issue_flush(journal->j_fs_dev, GFP_KERNEL, NULL);
		if (!err)
			err = err2;
	}


	return err;
	return err;
}
}
Loading