Hi Shakeel, On Fri, Apr 19, 2024 at 04:39:49PM -0700, Shakeel Butt wrote: > @@ -2983,10 +2984,6 @@ void mem_cgroup_commit_charge(struct folio *folio, struct mem_cgroup *memcg) > > #ifdef CONFIG_MEMCG_KMEM > > -/* > - * mod_objcg_mlstate() may be called with irq enabled, so > - * mod_memcg_lruvec_state() should be used. > - */ > static inline void mod_objcg_mlstate(struct obj_cgroup *objcg, > struct pglist_data *pgdat, > enum node_stat_item idx, int nr) > @@ -2994,10 +2991,12 @@ static inline void mod_objcg_mlstate(struct obj_cgroup *objcg, > struct mem_cgroup *memcg; > struct lruvec *lruvec; > > + lockdep_assert_irqs_disabled(); > + > rcu_read_lock(); > memcg = obj_cgroup_memcg(objcg); > lruvec = mem_cgroup_lruvec(memcg, pgdat); > - mod_memcg_lruvec_state(lruvec, idx, nr); > + __mod_memcg_lruvec_state(lruvec, idx, nr); > rcu_read_unlock(); > } Best to rename it to __mod_objcg_mlstate() as well to follow the naming pattern for whether caller or callee handles IRQ toggling? Otherwise, looks great to me! Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>