Re: [PATCH v5 21/36] proc/kcore: include private-node RAM in the kcore RAM map
From: Omar Sandoval
Date: Mon Jul 20 2026 - 16:12:01 EST
On Mon, Jul 20, 2026 at 03:34:15PM -0400, Gregory Price wrote:
> The kcore_ram_list bounds its scan at the highest pfn in N_MEMORY.
>
> As a result, private nodes placed above the last N_MEMORY node, which is
> the common case for device/CXL memory - is truncated out of /proc/kcore.
>
> Include N_MEMORY_PRIVATE nodes in the scan boundary. /proc/kcore is
> root-only (CAP_SYS_RAWIO), so this exposes nothing new - it just lets
> a debugger read private-node memory like any other RAM.
>
> Signed-off-by: Gregory Price <gourry@xxxxxxxxxx>
> ---
> fs/proc/kcore.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c
> index 390547b992acd..f67194dc2a9b8 100644
> --- a/fs/proc/kcore.c
> +++ b/fs/proc/kcore.c
> @@ -251,11 +251,14 @@ static int kcore_ram_list(struct list_head *list)
> {
> int nid, ret;
> unsigned long end_pfn;
> + nodemask_t mem;
>
> /* Not initialized....update now */
> /* find out "max pfn" */
> end_pfn = 0;
> - for_each_node_state(nid, N_MEMORY) {
> + /* Include private node memory in the scan */
> + nodes_or(mem, node_states[N_MEMORY], node_states[N_MEMORY_PRIVATE]);
> + for_each_node_mask(nid, mem) {
> unsigned long node_end;
> node_end = node_end_pfn(nid);
> if (end_pfn < node_end)
> --
> 2.53.0-Meta
>
I'm sure this is the least of your concern with this series, but FWIW:
Acked-by: Omar Sandoval <osandov@xxxxxxxxxxx>
If everything goes well, kcore.c is quiet enough that this can probably
just be merged through whatever tree takes the rest of this work.