|
|
@@ -2111,6 +2111,7 @@ static int replay_xattr_deletes(struct btrfs_trans_handle *trans,
|
|
|
struct btrfs_path *path,
|
|
|
const u64 ino)
|
|
|
{
|
|
|
+ struct btrfs_fs_info *fs_info = root->fs_info;
|
|
|
struct btrfs_key search_key;
|
|
|
struct btrfs_path *log_path;
|
|
|
int i;
|
|
|
@@ -2152,6 +2153,12 @@ process_leaf:
|
|
|
u32 this_len = sizeof(*di) + name_len + data_len;
|
|
|
char *name;
|
|
|
|
|
|
+ ret = verify_dir_item(fs_info, path->nodes[0],
|
|
|
+ path->slots[0], di);
|
|
|
+ if (ret) {
|
|
|
+ ret = -EIO;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
name = kmalloc(name_len, GFP_NOFS);
|
|
|
if (!name) {
|
|
|
ret = -ENOMEM;
|