[bug report] mm: memcontrol: switch to rstat

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Johannes Weiner,

The patch 2d146aa3aa84: "mm: memcontrol: switch to rstat" from Apr
29, 2021, leads to the following static checker warning:

	kernel/cgroup/rstat.c:200 cgroup_rstat_flush()
	warn: sleeping in atomic context

mm/memcontrol.c
  3572  static unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap)
  3573  {
  3574          unsigned long val;
  3575  
  3576          if (mem_cgroup_is_root(memcg)) {
  3577                  cgroup_rstat_flush(memcg->css.cgroup);
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

This is from static analysis and potentially a false positive.  The
problem is that mem_cgroup_usage() is called from __mem_cgroup_threshold()
which holds an rcu_read_lock().  And the cgroup_rstat_flush() function
can sleep.

  3578                  val = memcg_page_state(memcg, NR_FILE_PAGES) +
  3579                          memcg_page_state(memcg, NR_ANON_MAPPED);
  3580                  if (swap)
  3581                          val += memcg_page_state(memcg, MEMCG_SWAP);
  3582          } else {
  3583                  if (!swap)
  3584                          val = page_counter_read(&memcg->memory);
  3585                  else
  3586                          val = page_counter_read(&memcg->memsw);
  3587          }
  3588          return val;
  3589  }

regards,
dan carpenter



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux