diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 30f5b11d7dd35cb34cd1bae5b02a208f466460cf..cbd3a7d6fa681acfc0b00cb515fcddbcf8880f49 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -3142,7 +3142,9 @@ int btrfs_search_slot_for_read(struct btrfs_root *root, if (ret < 0) return ret; if (!ret) { - p->slots[0] = btrfs_header_nritems(leaf) - 1; + leaf = p->nodes[0]; + if (p->slots[0] == btrfs_header_nritems(leaf)) + p->slots[0]--; return 0; } if (!return_any)