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. 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