diff options
Diffstat (limited to 'fs/btrfs/ctree.c')
| -rw-r--r-- | fs/btrfs/ctree.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 6276add8538a..a85cf7d23309 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -1786,10 +1786,12 @@ static noinline int generic_bin_search(struct extent_buffer *eb,  			if (!err) {  				tmp = (struct btrfs_disk_key *)(kaddr + offset -  							map_start); -			} else { +			} else if (err == 1) {  				read_extent_buffer(eb, &unaligned,  						   offset, sizeof(unaligned));  				tmp = &unaligned; +			} else { +				return err;  			}  		} else { @@ -2830,6 +2832,8 @@ cow_done:  		}  		ret = key_search(b, key, level, &prev_cmp, &slot); +		if (ret < 0) +			goto done;  		if (level != 0) {  			int dec = 0;  | 
