Re: [PATCH v2 0/2] mm/cma: fix range selection in cma_declare_contiguous_multi()

From: Mike Rapoport

Date: Thu Oct 29 2026 - 08:23:05 EST


On Wed, Oct 14, 2026 at 08:53:39PM -0600, Ivy Lopez wrote:
> These two patches fix two independent bugs in the multi-range selection
> of cma_declare_contiguous_multi(), found by code inspection with the
> help of an LLM (both patches carry Assisted-by: LLM).

cma_declare_contiguous_multi() seems broken in many ways.
I'm working on a patch to rewrite it.

> Patch 1 fixes list_insert_sorted(), which does not actually sort: it
> stops at the wrong entry and, when no entry matches, inserts before the
> last entry instead of appending. The caller assumes the list tail is the
> smallest recorded range and that the list is walked largest first.
>
> Patch 2 fixes sizesum counting the size of ranges that were skipped
> because the list was full, so the sizesum < total_size check can pass
> when the recorded ranges cannot cover the request, and the function
> returns 0 having reserved less than asked for.
>
> Each patch fixes a distinct failure and neither depends on the other.
> No kernel-level reproducer was produced and nothing was tested beyond
> compiling; the examples in the commit messages come from a userspace
> copy of the helper and the selection loop, written from the source.
>
> Changes in v2:
> - resend as a series with a cover letter, as requested by Lorenzo
> - commit messages now state how the bugs were found and that they were
> not tested on hardware or in a booted kernel
> - add Assisted-by: LLM
> - patch 1: correct the sentence about the first inserted range staying
> at the tail (only until it is evicted)
> - rebased on the current akpm/mm-new
> - no code changes
>
> v1: https://lore.kernel.org/all/20261011003059.169430-1-skunkolee@xxxxxxxxx/
>
> Ivy Lopez (2):
> mm/cma: fix list_insert_sorted() ordering
> mm/cma: do not count skipped ranges in cma_declare_contiguous_multi()
>
> mm/cma.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
>
> --
> 2.56.0
>
>

--
Sincerely yours,
Mike.