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, | |||
1786 | if (!err) { | 1786 | if (!err) { |
1787 | tmp = (struct btrfs_disk_key *)(kaddr + offset - | 1787 | tmp = (struct btrfs_disk_key *)(kaddr + offset - |
1788 | map_start); | 1788 | map_start); |
1789 | } else { | 1789 | } else if (err == 1) { |
1790 | read_extent_buffer(eb, &unaligned, | 1790 | read_extent_buffer(eb, &unaligned, |
1791 | offset, sizeof(unaligned)); | 1791 | offset, sizeof(unaligned)); |
1792 | tmp = &unaligned; | 1792 | tmp = &unaligned; |
1793 | } else { | ||
1794 | return err; | ||
1793 | } | 1795 | } |
1794 | 1796 | ||
1795 | } else { | 1797 | } else { |
@@ -2830,6 +2832,8 @@ cow_done: | |||
2830 | } | 2832 | } |
2831 | 2833 | ||
2832 | ret = key_search(b, key, level, &prev_cmp, &slot); | 2834 | ret = key_search(b, key, level, &prev_cmp, &slot); |
2835 | if (ret < 0) | ||
2836 | goto done; | ||
2833 | 2837 | ||
2834 | if (level != 0) { | 2838 | if (level != 0) { |
2835 | int dec = 0; | 2839 | int dec = 0; |