Re: [PATCH] lib/scatterlist: Fix to calculate the last_pg properly

From: Logan Gunthorpe
Date: Mon Jan 09 2023 - 13:10:33 EST




On 2023-01-09 07:47, Yishai Hadas wrote:
> The last_pg is wrong, it is actually the first page of the last
> scatterlist element. To get the last page of the last scatterlist
> element we have to add prv->length. So it is checking mergability
> against the wrong page, Further, a SG element is not guaranteed to end
> on a page boundary, so we have to check the sub page location also for
> merge eligibility.
>
> Fix the above by checking physical contiguity, compute the actual last
> page and then call pages_are_mergable().
>
> Fixes: 1567b49d1a40 ("lib/scatterlist: add check when merging zone device pages")
> Reported-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Signed-off-by: Yishai Hadas <yishaih@xxxxxxxxxx>

Looks right by my eye, thanks.

Reviewed-by: Logan Gunthorpe <logang@xxxxxxxxxxxx>

Logan