On Sat 13-02-21 01:01:58, Muchun Song wrote: > The memcg ID cannot be zero, but we can pass zero to mem_cgroup_from_id, > so idr_find() is pointless and wastes CPU cycles. Is this possible at all to happen? If not why should we add a test for _all_ invocations? > > Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> > --- > mm/memcontrol.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index a3f26522765a..68ed4b297c13 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -5173,6 +5173,9 @@ static inline void mem_cgroup_id_put(struct mem_cgroup *memcg) > struct mem_cgroup *mem_cgroup_from_id(unsigned short id) > { > WARN_ON_ONCE(!rcu_read_lock_held()); > + /* The memcg ID cannot be zero. */ > + if (id == 0) > + return NULL; > return idr_find(&mem_cgroup_idr, id); > } > > -- > 2.11.0 -- Michal Hocko SUSE Labs