[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20140401235147.GB21410@thunk.org>
Date: Tue, 1 Apr 2014 19:51:47 -0400
From: Theodore Ts'o <tytso@....edu>
To: Eric Whitney <enwlinux@...il.com>
Cc: linux-ext4@...r.kernel.org
Subject: Re: [PATCH] ext4: fix premature freeing of partial clusters split
across
On Tue, Apr 01, 2014 at 07:36:46PM -0400, Eric Whitney wrote:
> Xfstests generic/311 and shared/298 fail when run on a bigalloc file
> system. Kernel error messages produced during the tests report that
> blocks to be freed are already on the to-be-freed list. When e2fsck
> is run at the end of the tests, it typically reports bad i_blocks and
> bad free blocks counts.
>
> The bug that causes these failures is located in ext4_ext_rm_leaf().
> Code at the end of the function frees a partial cluster if it's not
> shared with an extent remaining in the leaf. However, if all the
> extents in the leaf have been removed, the code dereferences an
> invalid extent pointer (off the front of the leaf) when the check for
> sharing is made. This generally has the effect of unconditionally
> freeing the partial cluster, which leads to the observed failures
> when the partial cluster is shared with the last extent in the next
> leaf.
>
> Fix this by attempting to free the cluster only if extents remain in
> the leaf. Any remaining partial cluster will be freed if possible
> when the next leaf is processed or when leaf removal is complete.
>
> Signed-off-by: Eric Whitney <enwlinux@...il.com>
Thanks, applied.
I added a "Cc: stable@...r.kernel.org" for this patch.
Cheers,
- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists