Re: [PATCH 3/5] repair: handle memory allocation failure from blkmap_grow

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

 



>  static blkmap_t *
>  blkmap_grow(
> -	blkmap_t	**blkmapp)
> +	blkmap_t	*blkmap)
>  {
>  	pthread_key_t	key = dblkmap_key;
> -	blkmap_t	*blkmap = *blkmapp;
> +	blkmap_t	*new_blkmap;
> +	int		new_naexts = blkmap->naexts + 4;
>  
>  	if (pthread_getspecific(key) != blkmap) {
>  		key = ablkmap_key;
>  		ASSERT(pthread_getspecific(key) == blkmap);
>  	}
>  
> -	blkmap->naexts += 4;
> -	blkmap = realloc(blkmap, BLKMAP_SIZE(blkmap->naexts));
> -	if (blkmap == NULL)
> - 		do_error(_("realloc failed in blkmap_grow\n"));
> -	*blkmapp = blkmap;
> -	pthread_setspecific(key, blkmap);
> -	return blkmap;
> +	new_blkmap = realloc(blkmap, BLKMAP_SIZE(new_naexts));
> +	if (!new_blkmap) {
> + 		do_error(_("realloc failed in blkmap_grow\n"));
> +		return NULL;
> +	}
> +	blkmap->naexts = new_naexts;

Why would we modify naexts in the old blkmap?

Otherwise looks fine.

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux