Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [Medium] mm: infinite loop in swiotlb_init_late() when remap fails
--

commit 9e7f1b72520615870ee21508117e4c5c7e0eb684
Author: Aneesh Kumar K.V (Arm) <[email protected]>

swiotlb: Align shared IO TLB pools to the shared granule size
    
This commit aligns and sizes the early memblock pool to the common CoCo
shared granule, leaving the slot count unchanged. It replaces the default
and dynamic pool set_memory calls with helpers to keep alignment validation
and architecture dispatch centralized. Pages are intentionally leaked if
their private state cannot be restored safely.

> diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
> index ded7016a46a71..394db93b7eb96 100644
> --- a/kernel/dma/swiotlb.c
> +++ b/kernel/dma/swiotlb.c

[ ... ]

> @@ -578,7 +578,7 @@ int swiotlb_init_late(size_t size, gfp_t gfp_mask,
>               swiotlb_adjust_nareas(num_possible_cpus());
>  
>  retry:
> -     order = get_order(nslabs << IO_TLB_SHIFT);
> +     order = get_order(ALIGN(nslabs << IO_TLB_SHIFT, 
> cc_shared_granule_size()));
>       nslabs = SLABS_PER_PAGE << order;

[Severity: Medium]
If remap() fails later in this function, nslabs is halved and the code jumps
back to the retry label to try a smaller allocation:

kernel/dma/swiotlb.c:swiotlb_init_late() {
    ...
        if (remap)
                rc = remap(vstart, nslabs);
        if (rc) {
                free_pages((unsigned long)vstart, order);

                nslabs = ALIGN(nslabs >> 1, IO_TLB_SEGSIZE);
                if (nslabs < IO_TLB_MIN_SLABS)
                        return rc;
                retried = true;
                goto retry;
        }
    ...
}

Does the new ALIGN macro at the retry label risk inflating the halved size
back to its original value if cc_shared_granule_size() is >= 2MB?

If so, this would restore nslabs to its original failing value, overriding
the shrinking mechanism and creating an infinite loop.

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=8

Reply via email to