Re: [PATCH] libxfs: fix krealloc to allow freeing data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 08, 2024 at 09:51:18PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@xxxxxxxxxx>
> 
> A recent refactoring to xfs_idata_realloc in the kernel made it depend
> on krealloc returning NULL if the new size is zero.  The xfsprogs
> wrapper instead aborts, so we need to make it follow the kernel
> behavior.
> 
> Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>

Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx>

> ---
>  libxfs/kmem.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/libxfs/kmem.c b/libxfs/kmem.c
> index 42d813088d6a..c264be018bdc 100644
> --- a/libxfs/kmem.c
> +++ b/libxfs/kmem.c
> @@ -98,6 +98,16 @@ kmem_zalloc(size_t size, int flags)
>  void *
>  krealloc(void *ptr, size_t new_size, int flags)
>  {
> +	/*
> +	 * If @new_size is zero, Linux krealloc will free the memory and return
> +	 * NULL, so force that behavior here.  The return value of realloc with
> +	 * a zero size is implementation dependent, so we cannot use that.
> +	 */
> +	if (!new_size) {
> +		free(ptr);
> +		return NULL;
> +	}
> +
>  	ptr = realloc(ptr, new_size);
>  	if (ptr == NULL) {
>  		fprintf(stderr, _("%s: realloc failed (%d bytes): %s\n"),




[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux