Re: [PATCH v2 4/6] ext4: allocate extended attribute value in vmalloc area
From: Jan Kara
Date: Wed Dec 07 2022 - 05:58:27 EST
On Wed 07-12-22 15:40:41, Ye Bin wrote:
> From: Ye Bin <yebin10@xxxxxxxxxx>
>
> Now, extended attribute value maxium length is 64K. The memory requested here
> does not need continuous physical addresses, so it is appropriate to use
> kvmalloc to request memory. At the same time, it can also cope with the
> situation that the extended attribute will become longer in the future.
>
> Signed-off-by: Ye Bin <yebin10@xxxxxxxxxx>
Looks good. Feel free to add:
Reviewed-by: Jan Kara <jack@xxxxxxx>
Thanks!
Honza
> ---
> fs/ext4/xattr.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
> index 75287422c36c..efa623658c12 100644
> --- a/fs/ext4/xattr.c
> +++ b/fs/ext4/xattr.c
> @@ -2579,7 +2579,7 @@ static int ext4_xattr_move_to_block(handle_t *handle, struct inode *inode,
>
> is = kzalloc(sizeof(struct ext4_xattr_ibody_find), GFP_NOFS);
> bs = kzalloc(sizeof(struct ext4_xattr_block_find), GFP_NOFS);
> - buffer = kmalloc(value_size, GFP_NOFS);
> + buffer = kvmalloc(value_size, GFP_NOFS);
> b_entry_name = kmalloc(entry->e_name_len + 1, GFP_NOFS);
> if (!is || !bs || !buffer || !b_entry_name) {
> error = -ENOMEM;
> @@ -2631,7 +2631,7 @@ static int ext4_xattr_move_to_block(handle_t *handle, struct inode *inode,
> error = 0;
> out:
> kfree(b_entry_name);
> - kfree(buffer);
> + kvfree(buffer);
> if (is)
> brelse(is->iloc.bh);
> if (bs)
> --
> 2.31.1
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR