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

Commit a3012453 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull ext[23], udf and quota fixes from Jan Kara:
 "Assorted fixes in quota, ext2, ext3 & udf.

  Probably the most important is a fix of fs corruption issue in ext2
  XIP support (OTOH xip is rarely used)"

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  ext2: Fix fs corruption in ext2_get_xip_mem()
  quota: info leak in quota_getquota()
  jbd: Revert "jbd: remove dependency on __GFP_NOFAIL"
  udf: fix for pathetic mount times in case of invalid file system
  ext3: Count journal as bsddf overhead in ext3_statfs
parents dd1d1399 7ba3ec57
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -632,6 +632,8 @@ static int ext2_get_blocks(struct inode *inode,
	int count = 0;
	ext2_fsblk_t first_block = 0;

	BUG_ON(maxblocks == 0);

	depth = ext2_block_to_path(inode,iblock,offsets,&blocks_to_boundary);

	if (depth == 0)
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ __ext2_get_block(struct inode *inode, pgoff_t pgoff, int create,
	int rc;

	memset(&tmp, 0, sizeof(struct buffer_head));
	tmp.b_size = 1 << inode->i_blkbits;
	rc = ext2_get_block(inode, pgoff, &tmp, create);
	*result = tmp.b_blocknr;

+4 −0
Original line number Diff line number Diff line
@@ -2825,6 +2825,10 @@ static int ext3_statfs (struct dentry * dentry, struct kstatfs * buf)
		 * bitmap, and an inode table.
		 */
		overhead += ngroups * (2 + sbi->s_itb_per_group);

		/* Add the journal blocks as well */
                overhead += sbi->s_journal->j_maxlen;

		sbi->s_overhead_last = overhead;
		smp_wmb();
		sbi->s_blocks_last = le32_to_cpu(es->s_blocks_count);
+4 −4
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@
#include <linux/mm.h>
#include <linux/highmem.h>
#include <linux/hrtimer.h>
#include <linux/backing-dev.h>

static void __journal_temp_unlink_buffer(struct journal_head *jh);

@@ -100,10 +99,11 @@ static int start_this_handle(journal_t *journal, handle_t *handle)

alloc_transaction:
	if (!journal->j_running_transaction) {
		new_transaction = kzalloc(sizeof(*new_transaction), GFP_NOFS);
		new_transaction = kzalloc(sizeof(*new_transaction),
						GFP_NOFS|__GFP_NOFAIL);
		if (!new_transaction) {
			congestion_wait(BLK_RW_ASYNC, HZ/50);
			goto alloc_transaction;
			ret = -ENOMEM;
			goto out;
		}
	}

+1 −0
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ static int quota_setinfo(struct super_block *sb, int type, void __user *addr)

static void copy_to_if_dqblk(struct if_dqblk *dst, struct fs_disk_quota *src)
{
	memset(dst, 0, sizeof(*dst));
	dst->dqb_bhardlimit = src->d_blk_hardlimit;
	dst->dqb_bsoftlimit = src->d_blk_softlimit;
	dst->dqb_curspace = src->d_bcount;
Loading