Commit d8cddf2a authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba
Browse files

btrfs: don't return VM_FAULT_SIGBUS on failure to set delalloc for mmap write



If the call to btrfs_set_extent_delalloc() fails we are always returning
VM_FAULT_SIGBUS, which is odd since the error means "bad access" and the
most likely cause for btrfs_set_extent_delalloc() is -ENOMEM, which should
be translated to VM_FAULT_OOM.

Instead of returning VM_FAULT_SIGBUS return vmf_error(ret2), which gives
us a more appropriate return value, and we use that everywhere else too.

Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent a08625f8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1937,7 +1937,7 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
					&cached_state);
	if (ret2) {
		btrfs_unlock_extent(io_tree, page_start, page_end, &cached_state);
		ret = VM_FAULT_SIGBUS;
		ret = vmf_error(ret2);
		goto out_unlock;
	}