Thread (5 messages) 5 messages, 2 authors, 2021-12-10

Re: [PATCH-next v2] mm/memcg: Properly handle memcg_stock access for PREEMPT_RT

flat view

From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2021-12-10 16:34:38
Also in: cgroups, lkml

On 2021-12-10 11:29:31 [-0500], Waiman Long wrote:
On 12/10/21 08:01, Sebastian Andrzej Siewior wrote:
quoted
On 2021-12-09 21:52:28 [-0500], Waiman Long wrote:
…
quoted
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
…
quoted
@@ -2210,7 +2211,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
  	struct memcg_stock_pcp *stock;
  	unsigned long flags;
-	local_irq_save(flags);
+	local_lock_irqsave(&memcg_stock.lock, flags);
Why is this one using the lock? It isn't accessing irq_obj, right?
Well, the lock isn't just for irq_obj. It protects the whole memcg_stock
structure which include irq_obj. Sometimes, data in irq_obj (or task_obj)
will get transfer to nr_pages and vice versa. So it is easier to use one
single lock for the whole thing.
This needs way better documentation what protects what any why.
I don't like the quick slapping for RT only usage without any kind of
explanation. Once you think you know it is irq_obj only you end up here
where you have the lock again for no obvious reason.
Cheers,
Longman
Sebastian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help