On Thu 21-01-16 11:38:46, Christoph Lameter wrote: > On Thu, 21 Jan 2016, Michal Hocko wrote: > > > It goes like this: > > CPU0: CPU1 > > vmstat_update > > cpumask_test_and_set_cpu (0->1) > > [...] > > vmstat_shepherd > > <enter idle> > > cpumask_test_and_clear_cpu(CPU0) (1->0) > > quiet_vmstat > > cpumask_test_and_set_cpu (0->1) > > queue_delayed_work_on(CPU0) > > refresh_cpu_vm_stats() > > [...] > > vmstat_update > > nothing_to_do > > cpumask_test_and_set_cpu (1->1) > > VM_BUG_ON > > > > Or am I missing something? > > Ok then the following should fix it:
Wouldn't it be much more easier and simply get rid of the VM_BUG_ON? What is the point of keeping it in the first place. The code can perfectly cope with the race. -- Michal Hocko SUSE Labs

