On Wed, Apr 27, 2022 at 5:22 AM Michal Koutný <mkoutny@xxxxxxxx> wrote: > > On Tue, Apr 26, 2022 at 10:23:32PM -0700, Shakeel Butt <shakeelb@xxxxxxxxxx> wrote: > > [...] > > > > > > +static inline struct mem_cgroup *get_mem_cgroup_from_obj(void *p) > > > +{ > > > + struct mem_cgroup *memcg; > > > + > > > > Do we need memcg_kmem_enabled() check here or maybe > > mem_cgroup_from_obj() should be doing memcg_kmem_enabled() instead of > > mem_cgroup_disabled() as we can have "cgroup.memory=nokmem" boot > > param. > > I reckon such a guard is on the charge side and readers should treat > NULL and root_mem_group equally. Or is there a case when these two are > different? > > (I can see it's different semantics when stored in current->active_memcg > (and active_memcg() getter) but for such "outer" callers like here it > seems equal.) I was more thinking about possible shortcut optimization and unrelated to this patch. Vasily, can you please add documentation for get_mem_cgroup_from_obj() similar to get_mem_cgroup_from_mm()? Also for mem_cgroup_or_root(). Please note that root_mem_cgroup can be NULL during early boot.