Re: [PATCH] mm: add some missing includes to mm-local headers

From: Vlastimil Babka (SUSE)

Date: Tue Aug 04 2026 - 07:04:05 EST


On 8/4/26 12:08, Lorenzo Stoakes (ARM) wrote:
> There are a number of internal headers local to mm/ which reference
> functions and data types without including the relevant headers.
>
> mm/vma.h is a special case that intentionally does not include additional
> headers, but the others are not.
>
> This breaks tooling like clangd (which is where I noticed this), though the
> build is OK due to the C files including the headers happening to include
> required dependencies.
>
> It's better to be explicit about dependencies anyway, so add the missing
> includes and fix clangd as a bonus.
>
> Signed-off-by: Lorenzo Stoakes (ARM) <ljs@xxxxxxxxxx>

Acked-by: Vlastimil Babka (SUSE) <vbabka@xxxxxxxxxx>

> ---
> mm/cma.h | 1 +
> mm/hugetlb_cma.h | 2 ++
> mm/memcontrol-v1.h | 1 +
> mm/pgalloc-track.h | 3 +++
> mm/shuffle.h | 2 ++
> mm/swap.h | 1 +
> mm/vmalloc.h | 2 ++
> 7 files changed, 12 insertions(+)
>
> diff --git a/mm/cma.h b/mm/cma.h
> index c70180c36559..ab6d39898ea5 100644
> --- a/mm/cma.h
> +++ b/mm/cma.h
> @@ -2,6 +2,7 @@
> #ifndef __MM_CMA_H__
> #define __MM_CMA_H__
>
> +#include <linux/cma.h>
> #include <linux/debugfs.h>
> #include <linux/kobject.h>
>
> diff --git a/mm/hugetlb_cma.h b/mm/hugetlb_cma.h
> index 3aa483573d17..730b2b4965b6 100644
> --- a/mm/hugetlb_cma.h
> +++ b/mm/hugetlb_cma.h
> @@ -2,6 +2,8 @@
> #ifndef _LINUX_HUGETLB_CMA_H
> #define _LINUX_HUGETLB_CMA_H
>
> +#include <linux/hugetlb.h>
> +
> #ifdef CONFIG_CMA
> void hugetlb_cma_free_frozen_folio(struct folio *folio);
> struct folio *hugetlb_cma_alloc_frozen_folio(int order, gfp_t gfp_mask,
> diff --git a/mm/memcontrol-v1.h b/mm/memcontrol-v1.h
> index 0f703f239c80..1e394269c613 100644
> --- a/mm/memcontrol-v1.h
> +++ b/mm/memcontrol-v1.h
> @@ -4,6 +4,7 @@
> #define __MM_MEMCONTROL_V1_H
>
> #include <linux/cgroup-defs.h>
> +#include <linux/memcontrol.h>
>
> /* Cgroup v1 and v2 common declarations */
>
> diff --git a/mm/pgalloc-track.h b/mm/pgalloc-track.h
> index e9e879de8649..1a6de1358a21 100644
> --- a/mm/pgalloc-track.h
> +++ b/mm/pgalloc-track.h
> @@ -2,6 +2,9 @@
> #ifndef _LINUX_PGALLOC_TRACK_H
> #define _LINUX_PGALLOC_TRACK_H
>
> +#include <linux/mm.h>
> +#include <linux/pgtable.h>
> +
> #if defined(CONFIG_MMU)
> static inline p4d_t *p4d_alloc_track(struct mm_struct *mm, pgd_t *pgd,
> unsigned long address,
> diff --git a/mm/shuffle.h b/mm/shuffle.h
> index 61bbcddeeee6..11bec7521ab8 100644
> --- a/mm/shuffle.h
> +++ b/mm/shuffle.h
> @@ -2,7 +2,9 @@
> // Copyright(c) 2018 Intel Corporation. All rights reserved.
> #ifndef _MM_SHUFFLE_H
> #define _MM_SHUFFLE_H
> +
> #include <linux/jump_label.h>
> +#include <linux/mmzone.h>
>
> #define SHUFFLE_ORDER MAX_PAGE_ORDER
>
> diff --git a/mm/swap.h b/mm/swap.h
> index d077e5893a42..ec580c713204 100644
> --- a/mm/swap.h
> +++ b/mm/swap.h
> @@ -5,6 +5,7 @@
> #include <linux/atomic.h> /* for atomic_long_t */
> #include <linux/mm.h> /* for PAGE_SHIFT */
> #include <linux/memcontrol.h> /* for mem_cgroup_swappiness() */
> +#include <linux/swap.h> /* for MAX_SWAPFILES_SHIFT, struct swap_info_struct */
>
> struct mempolicy;
> struct swap_iocb;
> diff --git a/mm/vmalloc.h b/mm/vmalloc.h
> index dcfe30eaa80c..8866ddcff668 100644
> --- a/mm/vmalloc.h
> +++ b/mm/vmalloc.h
> @@ -5,6 +5,8 @@
> #ifndef __MM_VMALLOC_H
> #define __MM_VMALLOC_H
>
> +#include <linux/vmalloc.h>
> +
> #ifdef CONFIG_MMU
> void __init vmalloc_init(void);
> int __must_check vmap_pages_range_noflush(unsigned long addr, unsigned long end,
>
> ---
> base-commit: e47602c51d20a93fa1711ed896dc9480de4374d9
> change-id: 20260804-fix-some-local-headers-0ebc15f34c72
>
> Cheers,