Re: [PATCH 1/9] memcg: accounting for allocations called with disabled BH
From: Roman Gushchin <hidden>
Date: 2021-03-09 20:39:32
Also in:
linux-mm
From: Roman Gushchin <hidden>
Date: 2021-03-09 20:39:32
Also in:
linux-mm
On Tue, Mar 09, 2021 at 11:03:48AM +0300, Vasily Averin wrote:
in_interrupt() check in memcg_kmem_bypass() is incorrect because it does not allow to account memory allocation called from task context with disabled BH, i.e. inside spin_lock_bh()/spin_unlock_bh() sections Signed-off-by: Vasily Averin <redacted>
Good catch!
It looks like the bug was there for years: in_interrupt() was there since
the commit 7ae1e1d0f8ac ("memcg: kmem controller infrastructure") from 2012!
So I guess there is no point for a stable fix, but it's definitely nice to
have it fixed.
Acked-by: Roman Gushchin <redacted>
for this patch and the rest of the series.
Thank you!
--- mm/memcontrol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 845eec0..568f2cb 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c@@ -1076,7 +1076,7 @@ static __always_inline bool memcg_kmem_bypass(void) return false; /* Memcg to charge can't be determined. */ - if (in_interrupt() || !current->mm || (current->flags & PF_KTHREAD)) + if (!in_task() || !current->mm || (current->flags & PF_KTHREAD)) return true; return false;-- 1.8.3.1