Re: [PATCH v2] memcg: skip cgroup_file_notify if spinning is not allowed
From: Andrew Morton
Date: Mon Sep 22 2025 - 19:04:44 EST
On Mon, 22 Sep 2025 15:02:03 -0700 Shakeel Butt <shakeel.butt@xxxxxxxxx> wrote:
> Generally memcg charging is allowed from all the contexts including NMI
> where even spinning on spinlock can cause locking issues. However one
> call chain was missed during the addition of memcg charging from any
> context support. That is try_charge_memcg() -> memcg_memory_event() ->
> cgroup_file_notify().
>
> The possible function call tree under cgroup_file_notify() can acquire
> many different spin locks in spinning mode. Some of them are
> cgroup_file_kn_lock, kernfs_notify_lock, pool_workqeue's lock. So, let's
> just skip cgroup_file_notify() from memcg charging if the context does
> not allow spinning.
>
> Alternative approach was also explored where instead of skipping
> cgroup_file_notify(), we defer the memcg event processing to irq_work
> [1]. However it adds complexity and it was decided to keep things simple
> until we need more memcg events with !allow_spinning requirement.
>
> Link: https://lore.kernel.org/all/5qi2llyzf7gklncflo6gxoozljbm4h3tpnuv4u4ej4ztysvi6f@x44v7nz2wdzd/ [1]
> Signed-off-by: Shakeel Butt <shakeel.butt@xxxxxxxxx>
> Acked-by: Michal Hocko <mhocko@xxxxxxxx>
Fixes a possible kernel deadlock, yes?
Is a cc:stable appropriate and can we identify a Fixes: target?
Thanks.
(Did it ever generate lockdep warnings?)