Re: [PATCH 4.2 25/54] memcg: convert threshold to bytes

Ben Hutchings
2015-10-24T05:47:18Z

[-- Attachment #1: Type: text/plain, Size: 1552 bytes --]

On Fri, 2015-10-23 at 10:45 -0700, Greg Kroah-Hartman wrote:
> 4.2-stable review patch.  If anyone has any objections, please let me know.
>
> ------------------
>
> From: Shaohua Li <shli@fb.com>
>
> commit 424cdc14138088ada1b0e407a2195b2783c6e5ef upstream.
>
> page_counter_memparse() returns pages for the threshold, while
> mem_cgroup_usage() returns bytes for memory usage.  Convert the
> threshold to bytes.
>
> Fixes: 3e32cb2e0a12b6915 ("memcg: rename cgroup_event to mem_cgroup_event").
> Signed-off-by: Shaohua Li <shli@fb.com>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Acked-by: Michal Hocko <mhocko@suse.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> ---
>  mm/memcontrol.c |    1 +
>  1 file changed, 1 insertion(+)
>
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -3687,6 +3687,7 @@ static int __mem_cgroup_usage_register_e
>  > > ret = page_counter_memparse(args, "-1", &threshold);
>  > > if (ret)
>  > > > return ret;
> +> > threshold <<= PAGE_SHIFT;
>
>  > > mutex_lock(&memcg->thresholds_lock);
>

mem_cgroup_usage() returns a u64 and I think that the types of
threshold and mem_cgroup_threshold::threshold also need be changed to
u64 to avoid overflow on large 32-bit systems.

Ben.

--
Ben Hutchings
Beware of bugs in the above code;
I have only proved it correct, not tried it. - Donald Knuth

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]