Re: [akpm-mm:mm-unstable 338/431] mm/nommu.c:579:2: error: call to undeclared function 'vma_mas_store'; ISO C99 and later do not support implicit function declarations

From: Liam Howlett
Date: Tue May 10 2022 - 13:36:09 EST


* Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> [220510 10:08]:
> On Tue, 10 May 2022 20:52:04 +0800 kernel test robot <lkp@xxxxxxxxx> wrote:
>
> > >> mm/nommu.c:579:2: error: call to undeclared function 'vma_mas_store'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> > vma_mas_store(vma, &mas);
>
> Thanks.
>
> I queued the below temp fix for now. Hopefully it makes sense for nommu.

Yes that works. I'm trying to figure out the best way to keep my
tracepoints in the mmap.c version and I think this is probably better
than yet-another-underscore or dropping tracepoints all together.

I think in the long run, it might be better to put these prototypes into
mm/internal.h to limit the users.

>
>
>
> From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Subject: mapletree: build fix
>
> Fix the vma_mas_store/vma_mas_remove issues. Missing prototypes, missing
> implementation on nommu.
>
> Cc: "Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx>
> Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> ---
>
> include/linux/mm.h | 3 +++
> mm/mmap.c | 4 ++--
> mm/nommu.c | 13 +++++++++++++
> 3 files changed, 18 insertions(+), 2 deletions(-)
>
> --- a/mm/nommu.c~mapletree-build-fix
> +++ a/mm/nommu.c
> @@ -544,6 +544,19 @@ static void put_nommu_region(struct vm_r
> __put_nommu_region(region);
> }
>
> +void vma_mas_store(struct vm_area_struct *vma, struct ma_state *mas)
> +{
> + mas_set_range(mas, vma->vm_start, vma->vm_end - 1);
> + mas_store_prealloc(mas, vma);
> +}
> +
> +void vma_mas_remove(struct vm_area_struct *vma, struct ma_state *mas)
> +{
> + mas->index = vma->vm_start;
> + mas->last = vma->vm_end - 1;
> + mas_store_prealloc(mas, NULL);
> +}
> +
> /*
> * add a VMA into a process's mm_struct in the appropriate place in the list
> * and tree and add to the address space's page tree also if not an anonymous
> --- a/mm/mmap.c~mapletree-build-fix
> +++ a/mm/mmap.c
> @@ -475,7 +475,7 @@ static void __vma_link_file(struct vm_ar
> *
> * Note: the end address is inclusive in the maple tree.
> */
> -inline void vma_mas_store(struct vm_area_struct *vma, struct ma_state *mas)
> +void vma_mas_store(struct vm_area_struct *vma, struct ma_state *mas)
> {
> trace_vma_store(mas->tree, vma);
> mas_set_range(mas, vma->vm_start, vma->vm_end - 1);
> @@ -491,7 +491,7 @@ inline void vma_mas_store(struct vm_area
> * been established and points to the correct location.
> * Note: the end address is inclusive in the maple tree.
> */
> -static inline void vma_mas_remove(struct vm_area_struct *vma, struct ma_state *mas)
> +void vma_mas_remove(struct vm_area_struct *vma, struct ma_state *mas)
> {
> trace_vma_mas_szero(mas->tree, vma->vm_start, vma->vm_end - 1);
> mas->index = vma->vm_start;
> --- a/include/linux/mm.h~mapletree-build-fix
> +++ a/include/linux/mm.h
> @@ -2669,6 +2669,9 @@ extern struct vm_area_struct *copy_vma(s
> bool *need_rmap_locks);
> extern void exit_mmap(struct mm_struct *);
>
> +void vma_mas_store(struct vm_area_struct *vma, struct ma_state *mas);
> +void vma_mas_remove(struct vm_area_struct *vma, struct ma_state *mas);
> +
> static inline int check_data_rlimit(unsigned long rlim,
> unsigned long new,
> unsigned long start,
> _
>