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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Jul 2014 03:12:01 +0000 (20:12 -0700)
commit 7d78874273463a784759916fc3e0b4e2eb141c70 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/extent_io.c

index 85bbd01..a5a4815 100644 (file)
@@ -1686,6 +1686,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;