On Mon, 8 Nov 2010 17:15:20 -0800 Greg Thelen <gthelen@xxxxxxxxxx> wrote: > Use page counts rather than byte counts to avoid overflowing > unsigned long local variables. > > Signed-off-by: Greg Thelen <gthelen@xxxxxxxxxx> > --- > mm/memcontrol.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 6c7115d..b287afd 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -1345,17 +1345,17 @@ memcg_hierarchical_free_pages(struct mem_cgroup *mem) > { > unsigned long free, min_free; > hmm, the default value of RES_LIMIT is LLONG_MAX, so I think we must declare "free" as unsinged long long to avoid overflow. Thanks, Daisuke Nishimura. > - min_free = global_page_state(NR_FREE_PAGES) << PAGE_SHIFT; > + min_free = global_page_state(NR_FREE_PAGES); > > while (mem) { > - free = res_counter_read_u64(&mem->res, RES_LIMIT) - > - res_counter_read_u64(&mem->res, RES_USAGE); > + free = (res_counter_read_u64(&mem->res, RES_LIMIT) - > + res_counter_read_u64(&mem->res, RES_USAGE)) >> > + PAGE_SHIFT; > min_free = min(min_free, free); > mem = parent_mem_cgroup(mem); > } > > - /* Translate free memory in pages */ > - return min_free >> PAGE_SHIFT; > + return min_free; > } > > /* > -- > 1.7.3.1 > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>