Hi Alexander!

On 7/20/22 14:05, Alexander Atanasov wrote:
> Fix off-by-one error - tries to free the failed allocation and
> it leaks the first successful

Could you please elaborate? I do not see the difference in behavior.

if we have failed on 2nd allocation
we have i = 1
io_vec[0] was set 
io_vec[1] was failed
we jump to err: label
doing i-- end call put_page for io_vec[0]
2nd turn fails.
So looks like all works correctly.
With your patch situation is not changed.

Am I missed something perhaps?

Thank you,
        Vasily Averin

> Signed-off-by: Alexander Atanasov <alexander.atana...@virtuozzo.com>
> ---
>  drivers/md/dm-ploop-cmd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c
> index 429a03cce392..e4ea738828bc 100644
> --- a/drivers/md/dm-ploop-cmd.c
> +++ b/drivers/md/dm-ploop-cmd.c
> @@ -489,7 +489,7 @@ struct pio *alloc_pio_with_pages(struct ploop *ploop)
>  
>       return pio;
>  err:
> -     while (i-- > 0)
> +     while (--i >= 0)
>               put_page(pio->bi_io_vec[i].bv_page);
>       kfree(pio);
>       return NULL;

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to