Re: [PATCH v3 02/17] kexec: Extract kexec_free_segment_cma() from kimage_free_cma()

Mike Rapoport <[email protected]>
Newsgroups gmane.linux.ports.ppc.embedded
Message-ID <178829364020.3691424.17302958503793700435.b4-review__15905.8460312494$1788293688$gmane$org@b4>
Hi,

> kimage_free_cma() relies on image->nr_segments to iterate over segments.
> When an architecture loader (e.g., arm64) truncates nr_segments on a
> mid-way failure, CMA pages allocated beyond the new boundary become
> unreachable, causing silent memory leaks.
> 
> Extract the per-segment freeing logic into the exported helper
> kexec_free_segment_cma(), so that architecture loaders can release
> individual segments before nr_segments is truncated. Refactor
> kimage_free_cma() to loop over the new helper, preserving existing
> behavior.
> 
> Cc: Andrew Morton <[email protected]>
> Cc: Baoquan He <[email protected]>
> Cc: Mike Rapoport <[email protected]>
> Cc: Pasha Tatashin <[email protected]>
> Cc: Pratyush Yadav <[email protected]>
> Signed-off-by: Jinjie Ruan <[email protected]>
>
> diff --git a/include/linux/kexec.h b/include/linux/kexec.h
> index 83c296c0eb6cc..d7c83938dfd3d 100644
> --- a/include/linux/kexec.h
> +++ b/include/linux/kexec.h
> @@ -533,6 +533,7 @@ extern bool kexec_file_dbg_print;
>  
>  extern void *kimage_map_segment(struct kimage *image, int idx);
>  extern void kimage_unmap_segment(void *buffer);
> +extern void kexec_free_segment_cma(struct kimage *image, unsigned long idx);

No need for extern, even though it's inconsistent with old declarations.

-- 
Sincerely yours,
Mike.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.