Re: linux-next: manual merge of the bpf-next tree with the mm-unstable tree
From: Chen Ridong
Date: Mon Jan 05 2026 - 21:44:50 EST
On 2026/1/6 10:15, Alexei Starovoitov wrote:
> On Sun, Jan 4, 2026 at 6:04 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>>
>> Hi all,
>>
>> Today's linux-next merge of the bpf-next tree got a semantic conflict in:
>>
>> include/linux/memcontrol.h
>> mm/memcontrol-v1.c
>> mm/memcontrol.c
>>
>> between commit:
>>
>> eb557e10dcac ("memcg: move mem_cgroup_usage memcontrol-v1.c")
>>
>> from the mm-unstable tree and commit:
>>
>> 99430ab8b804 ("mm: introduce BPF kfuncs to access memcg statistics and events")
>>
>> from the bpf-next tree producing this build failure:
>>
>> mm/memcontrol-v1.c:430:22: error: static declaration of 'mem_cgroup_usage' follows non-static declaration
>> 430 | static unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap)
>> | ^~~~~~~~~~~~~~~~
>> In file included from mm/memcontrol-v1.c:3:
>> include/linux/memcontrol.h:953:15: note: previous declaration of 'mem_cgroup_usage' with type 'long unsigned int(struct mem_cgroup *, bool)' {aka 'long unsigned int(struct mem_cgroup *, _Bool)'}
>> 953 | unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap);
>> | ^~~~~~~~~~~~~~~~
>>
>> I fixed it up (I reverted the mm-unstable tree commit) and can carry the
>> fix as necessary. This is now fixed as far as linux-next is concerned,
>> but any non trivial conflicts should be mentioned to your upstream
>> maintainer when your tree is submitted for merging. You may also want
>> to consider cooperating with the maintainer of the conflicting tree to
>> minimise any particularly complex conflicts.
>
> Hey All,
>
> what's the proper fix here?
>
> Roman,
>
> looks like adding mem_cgroup_usage() to include/linux/memcontrol.h
> wasn't really necessary, since kfuncs don't use it anyway?
> Should we just remove that line in bpf-next?
>
I agree, mem_cgroup_usage() is not declared in next.
I'm wondering why there is a difference between next and bpf-next.
> Just:
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index 6a5d65487b70..229ac9835adb 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -950,7 +950,6 @@ static inline void mod_memcg_page_state(struct page *page,
> }
>
> unsigned long memcg_events(struct mem_cgroup *memcg, int event);
> -unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap);
> unsigned long memcg_page_state(struct mem_cgroup *memcg, int idx);
> unsigned long memcg_page_state_output(struct mem_cgroup *memcg, int item);
> bool memcg_stat_item_valid(int idx);
>
> compiles fine.
>
> If you agree pls send an official patch.
>
--
Best regards,
Ridong