Re: [PATCH] mm/util: fix a data race in __vm_enough_memory()

From: Qian Cai
Date: Thu Jan 30 2020 - 06:50:32 EST




> On Jan 29, 2020, at 11:20 PM, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> I'm really not a fan of exposing the internals of a percpu_counter outside
> the percpu_counter.h file. Why shouldn't this be fixed by putting the
> READ_ONCE() inside percpu_counter_read()?

It is because not all places suffer from a data race. For example, in __wb_update_bandwidth(), it was protected by a lock. I was a bit worry about blindly adding READ_ONCE() inside percpu_counter_read() might has unexpected side-effect. For example, it is unnecessary to have READ_ONCE() for a volatile variable. So, I thought just to keep the change minimal with a trade off by exposing a bit internal details as you mentioned.

However, I had also copied the percpu maintainers to see if they have any preferences?