summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mm/memcontrol.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index c01da86e6a2e..15f552a85a52 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2969,6 +2969,9 @@ static void __account_obj_stock(struct obj_cgroup *objcg,
{
int *bytes;
+ if (!stock)
+ goto direct;
+
/*
* Save vmstat data in stock and skip vmstat array update unless
* accumulating over a page of vmstat data or when pgdat changes.
@@ -3008,6 +3011,7 @@ static void __account_obj_stock(struct obj_cgroup *objcg,
nr = 0;
}
}
+direct:
if (nr)
mod_objcg_mlstate(objcg, pgdat, idx, nr);
}
@@ -3124,7 +3128,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes,
stock = trylock_stock();
if (!stock) {
if (pgdat)
- mod_objcg_mlstate(objcg, pgdat, idx, nr_acct);
+ __account_obj_stock(objcg, NULL, nr_acct, pgdat, idx);
nr_pages = nr_bytes >> PAGE_SHIFT;
nr_bytes = nr_bytes & (PAGE_SIZE - 1);
atomic_add(nr_bytes, &objcg->nr_charged_bytes);