Re: [PATCH v2] cgroup/cpuset: rebind mm mempolicy to effective_mems, not mems_allowed

From: David Hildenbrand (Arm)

Date: Mon Jun 29 2026 - 03:35:37 EST


On 6/28/26 08:15, Andrew Morton wrote:
> On Sun, 14 Jun 2026 06:25:55 -0700 Farhad Alemi <farhad.alemi@xxxxxxxxxxxx> wrote:
>
>> Creating a child cpuset where cpuset.mems is never set leads to a div/0
>> when a VMA mempolicy with MPOL_F_RELATIVE_NODES rebinds in response to a
>> CPU hotplug event.
>>
>> Reproduction steps:
>> 1) Create a cgroup w/ cpuset controls (do not set cpuset.mems)
>> 2) Move the task into the child cpuset
>> 3) Create a VMA mempolicy for that task with MPOL_F_RELATIVE_NODES
>> 4) unplug and hotplug a cpu
>> echo 0 > /sys/devices/system/cpu/cpu1/online
>> echo 1 > /sys/devices/system/cpu/cpu1/online
>> 5) mempolicy rebind does a div/0 in mpol_relative_nodemask on the
>> call to __nodes_fold()
>
> Oops.
>
>> The cpuset code passes (cs->mems_allowed) which is not guaranteed to have
>> nodes to the rebind routine. Use cs->effective_mems instead, which is
>> guaranteed to have a non-empty nodemask.
>
> Well gee, what happened with this patch.
>
> I apologize for misfiling a cc:stable bugfix into my post-rc1 backlog
> pile, but I got there in the end.
>
> I guess this is an MM patch, even though it's against
> kernel/cgroup/cpuset.c.
>
> Nobody cc'ed Tejun. Fixed.
>
> David acked v1 but is being coy about the v2 patch?

Yes, after the discussion, I think we should add comment similar to what I proposed.
--
Cheers,

David