[PATCH] xen: pvblock: fix the maximum io size in one operation

Tom Rini trini at konsulko.com
Wed Nov 29 17:58:03 CET 2023


On Wed, Nov 15, 2023 at 10:53:45AM +0900, AKASHI Takahiro wrote:

> The current implementation may cause BUG_ON() in blkfront_aio()
> 	BUG_ON(n > BLKIF_MAX_SEGMENTS_PER_REQUEST);
> 
> In pvblock_iop(), a read/write operation will be split into smaller
> chunks of data so that the size in one access (aio_nbytes) is limited
> to, at the maximum,
> 	BLKIF_MAX_SEGMENTS_PER_REQUEST * PAGE_SIZE
> 
> But this works only if when the *buffer* passed in to pvblock_io()
> is page-aligned. If not, the given data region may stand across
> (BLKIF_MAX_SEGMENTS_PER_REQUEST + 1) pages. See the logic in
> blkfront_aio():
> 	start = (uintptr_t)aiocbp->aio_buf & PAGE_MASK;
> 	end = ((uintptr_t)aiocbp->aio_buf + aiocbp->aio_nbytes +
> 	       PAGE_SIZE - 1) & PAGE_MASK;
> Then this will lead to BUG_ON() above.
> 
> This can be fixed by decreasing the maximum size of aio_nbytes.
> 
> Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> Fixes: commit 3a739cc6c948 ("xen: pvblock: Implement front-back protocol and do IO")

Applied to u-boot/next, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20231129/e443a46b/attachment.sig>


More information about the U-Boot mailing list