> iov_iter_get_pages2() returns a byte count that excludes the offset
> into the first page, but also returns a reference to that page in
> pages[].
>
> On the misaligned-I/O fallback,
> vhost_scsi_revert_map_iov_to_sgl() puts pages already added to the SG
> list. The cleanup loop starts at pages[npages], but accounts for its
> first page as PAGE_SIZE bytes rather than PAGE_SIZE - offset. If the
> remaining data starts at a non-zero offset, it can finish one page
> early and leave a page reference behind.
>
> Use PAGE_SIZE - offset for the first remaining page and clear offset
> for later pages, as in the mapping loop. Without this, each affected
> request leaks one page reference.
>
> Fixes: bca939d5bcd0 ("vhost-scsi: Dynamically allocate scatterlists")
> Signed-off-by: Jia Jia <[email protected]>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review ยท
https://sashiko.dev/#/patchset/[email protected]?part=1