memcg: make mem_cgroup_read_stat() unsigned

mem_cgroup_read_stat() returns a page count by summing per cpu page
counters.  The summing is racy wrt.  updates, so a transient negative
sum is possible.  Callers don't want negative values:

 - mem_cgroup_wb_stats() doesn't want negative nr_dirty or nr_writeback.
   This could confuse dirty throttling.

 - oom reports and memory.stat shouldn't show confusing negative usage.

 - tree_usage() already avoids negatives.

Avoid returning negative page counts from mem_cgroup_read_stat() and
convert it to unsigned.

[ fix old typo while we're in there]
Signed-off-by: Greg Thelen <>
Cc: Johannes Weiner <>
Acked-by: Michal Hocko <>
Cc: <>	[4.2+]
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
1 file changed