diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 7a501e73d880..5811f6a2da48 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1910,6 +1910,9 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf) if (!only_release_metadata) btrfs_free_reserved_data_space(inode, data_reserved, page_start, reserved_space); + if (data_reserved) + goto out_reserve; + goto out_noreserve; } @@ -2019,6 +2022,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf) else btrfs_delalloc_release_space(inode, data_reserved, page_start, reserved_space, true); +out_reserve: extent_changeset_free(data_reserved); out_noreserve: if (only_release_metadata)