diff options
Diffstat (limited to 'fs/btrfs/dir-item.c')
| -rw-r--r-- | fs/btrfs/dir-item.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/fs/btrfs/dir-item.c b/fs/btrfs/dir-item.c index 79e594e341c..a0691df5dce 100644 --- a/fs/btrfs/dir-item.c +++ b/fs/btrfs/dir-item.c @@ -58,7 +58,7 @@ static struct btrfs_dir_item *insert_with_overflow(struct btrfs_trans_handle  		return ERR_PTR(ret);  	WARN_ON(ret > 0);  	leaf = path->nodes[0]; -	item = btrfs_item_nr(leaf, path->slots[0]); +	item = btrfs_item_nr(path->slots[0]);  	ptr = btrfs_item_ptr(leaf, path->slots[0], char);  	BUG_ON(data_size > btrfs_item_size(leaf, item));  	ptr += btrfs_item_size(leaf, item) - data_size; @@ -261,7 +261,7 @@ int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir,  	 * see if there is room in the item to insert this  	 * name  	 */ -	data_size = sizeof(*di) + name_len + sizeof(struct btrfs_item); +	data_size = sizeof(*di) + name_len;  	leaf = path->nodes[0];  	slot = path->slots[0];  	if (data_size + btrfs_item_size_nr(leaf, slot) + @@ -459,7 +459,7 @@ int verify_dir_item(struct btrfs_root *root,  	u8 type = btrfs_dir_type(leaf, dir_item);  	if (type >= BTRFS_FT_MAX) { -		printk(KERN_CRIT "btrfs: invalid dir item type: %d\n", +		btrfs_crit(root->fs_info, "invalid dir item type: %d",  		       (int)type);  		return 1;  	} @@ -468,14 +468,16 @@ int verify_dir_item(struct btrfs_root *root,  		namelen = XATTR_NAME_MAX;  	if (btrfs_dir_name_len(leaf, dir_item) > namelen) { -		printk(KERN_CRIT "btrfs: invalid dir item name len: %u\n", +		btrfs_crit(root->fs_info, "invalid dir item name len: %u",  		       (unsigned)btrfs_dir_data_len(leaf, dir_item));  		return 1;  	}  	/* BTRFS_MAX_XATTR_SIZE is the same for all dir items */ -	if (btrfs_dir_data_len(leaf, dir_item) > BTRFS_MAX_XATTR_SIZE(root)) { -		printk(KERN_CRIT "btrfs: invalid dir item data len: %u\n", +	if ((btrfs_dir_data_len(leaf, dir_item) + +	     btrfs_dir_name_len(leaf, dir_item)) > BTRFS_MAX_XATTR_SIZE(root)) { +		btrfs_crit(root->fs_info, "invalid dir item name + data len: %u + %u", +		       (unsigned)btrfs_dir_name_len(leaf, dir_item),  		       (unsigned)btrfs_dir_data_len(leaf, dir_item));  		return 1;  	}  | 
