Re: [PATCH] swiotlb: add overflow checks to swiotlb_bounce

From: Konrad Rzeszutek Wilk
Date: Tue Jul 13 2021 - 19:54:19 EST


On Wed, Jul 07, 2021 at 02:12:54PM +0900, Dominique Martinet wrote:
> This is a follow-up on 5f89468e2f06 ("swiotlb: manipulate orig_addr
> when tlb_addr has offset") which fixed unaligned dma mappings,
> making sure the following overflows are caught:
>
> - offset of the start of the slot within the device bigger than
> requested address' offset, in other words if the base address
> given in swiotlb_tbl_map_single to create the mapping (orig_addr)
> was after the requested address for the sync (tlb_offset) in the
> same block:
>
> |------------------------------------------| block
> <----------------------------> mapped part of the block
> ^
> orig_addr
> ^
> invalid tlb_addr for sync
>
> - if the resulting offset was bigger than the allocation size
> this one could happen if the mapping was not until the end. e.g.
>
> |------------------------------------------| block
> <---------------------> mapped part of the block
> ^ ^
> orig_addr invalid tlb_addr
>
> Both should never happen so print a warning and bail out without trying
> to adjust the sizes/offsets: the first one could try to sync from
> orig_addr to whatever is left of the requested size, but the later
> really has nothing to sync there...
>
> Signed-off-by: Dominique Martinet <dominique.martinet@xxxxxxxxxxxxxxxxx>
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Cc: Bumyong Lee <bumyong.lee@xxxxxxxxxxx>
> Cc: Chanho Park <chanho61.park@xxxxxxxxxxx>
> Cc: Christoph Hellwig <hch@xxxxxx>
> ---
>
> Hi Konrad,
>
> here's the follow up for the swiotlb/caamjr regression I had promissed.

Awesome!
> It doesn't really change anything, and I confirmed I don't hit either of
> the warnings on our board, but it's probably best to have as either
> could really happen.

:nods:

I put it in the devel/for-linus-5.14 and linux-next. Thank you!