memcg: reduce function dereference
authorSha Zhengju <handai.szj@taobao.com>
Thu, 12 Sep 2013 22:13:49 +0000 (15:13 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Sep 2013 22:38:02 +0000 (15:38 -0700)
This function dereferences res far too often, so optimize it.

Signed-off-by: Sha Zhengju <handai.szj@taobao.com>
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Michal Hocko <mhocko@suse.cz>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Jeff Liu <jeff.liu@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/res_counter.c

index 085d3ae478fe5ac7c89da55b6215a49bd8cd9c4d..4aa8a305aedeb23cf7ad15aa2750898057b3c0d4 100644 (file)
@@ -178,27 +178,30 @@ u64 res_counter_read_u64(struct res_counter *counter, int member)
 #endif
 
 int res_counter_memparse_write_strategy(const char *buf,
-                                       unsigned long long *res)
+                                       unsigned long long *resp)
 {
        char *end;
+       unsigned long long res;
 
        /* return RES_COUNTER_MAX(unlimited) if "-1" is specified */
        if (*buf == '-') {
-               *res = simple_strtoull(buf + 1, &end, 10);
-               if (*res != 1 || *end != '\0')
+               res = simple_strtoull(buf + 1, &end, 10);
+               if (res != 1 || *end != '\0')
                        return -EINVAL;
-               *res = RES_COUNTER_MAX;
+               *resp = RES_COUNTER_MAX;
                return 0;
        }
 
-       *res = memparse(buf, &end);
+       res = memparse(buf, &end);
        if (*end != '\0')
                return -EINVAL;
 
-       if (PAGE_ALIGN(*res) >= *res)
-               *res = PAGE_ALIGN(*res);
+       if (PAGE_ALIGN(res) >= res)
+               res = PAGE_ALIGN(res);
        else
-               *res = RES_COUNTER_MAX;
+               res = RES_COUNTER_MAX;
+
+       *resp = res;
 
        return 0;
 }