|
@@ -1801,7 +1801,11 @@ static noinline int copy_to_sk(struct btrfs_root *root,
|
|
|
item_off = btrfs_item_ptr_offset(leaf, i);
|
|
|
item_len = btrfs_item_size_nr(leaf, i);
|
|
|
|
|
|
- if (item_len > BTRFS_SEARCH_ARGS_BUFSIZE)
|
|
|
+ btrfs_item_key_to_cpu(leaf, key, i);
|
|
|
+ if (!key_in_sk(key, sk))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ if (sizeof(sh) + item_len > BTRFS_SEARCH_ARGS_BUFSIZE)
|
|
|
item_len = 0;
|
|
|
|
|
|
if (sizeof(sh) + item_len + *sk_offset >
|
|
@@ -1810,10 +1814,6 @@ static noinline int copy_to_sk(struct btrfs_root *root,
|
|
|
goto overflow;
|
|
|
}
|
|
|
|
|
|
- btrfs_item_key_to_cpu(leaf, key, i);
|
|
|
- if (!key_in_sk(key, sk))
|
|
|
- continue;
|
|
|
-
|
|
|
sh.objectid = key->objectid;
|
|
|
sh.offset = key->offset;
|
|
|
sh.type = key->type;
|