Btrfs: fix double free in find_lock_delalloc_range
authorChris Mason <clm@fb.com>
Wed, 21 May 2014 12:49:54 +0000 (05:49 -0700)
committerChris Mason <clm@fb.com>
Tue, 10 Jun 2014 00:20:52 +0000 (17:20 -0700)
We need to NULL the cached_state after freeing it, otherwise
we might free it again if find_delalloc_range doesn't find anything.

Signed-off-by: Chris Mason <clm@fb.com>
cc: stable@vger.kernel.org

fs/btrfs/extent_io.c

index 8285ed0464fa0645426b38081a9b9cf298eec284..0f425dea4523cca91c680e0684f165cfaaa9ff5f 100644 (file)
@@ -1693,6 +1693,7 @@ again:
                 * shortening the size of the delalloc range we're searching
                 */
                free_extent_state(cached_state);
+               cached_state = NULL;
                if (!loops) {
                        max_bytes = PAGE_CACHE_SIZE;
                        loops = 1;