aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
Diffstat (limited to 'mm')
-rw-r--r--mm/memcontrol.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 23d8cf5a86c3..0eda67376df4 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -3491,16 +3491,17 @@ static void __mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3491swap_buffers: 3491swap_buffers:
3492 /* Swap primary and spare array */ 3492 /* Swap primary and spare array */
3493 thresholds->spare = thresholds->primary; 3493 thresholds->spare = thresholds->primary;
3494 /* If all events are unregistered, free the spare array */
3495 if (!new) {
3496 kfree(thresholds->spare);
3497 thresholds->spare = NULL;
3498 }
3499 3494
3500 rcu_assign_pointer(thresholds->primary, new); 3495 rcu_assign_pointer(thresholds->primary, new);
3501 3496
3502 /* To be sure that nobody uses thresholds */ 3497 /* To be sure that nobody uses thresholds */
3503 synchronize_rcu(); 3498 synchronize_rcu();
3499
3500 /* If all events are unregistered, free the spare array */
3501 if (!new) {
3502 kfree(thresholds->spare);
3503 thresholds->spare = NULL;
3504 }
3504unlock: 3505unlock:
3505 mutex_unlock(&memcg->thresholds_lock); 3506 mutex_unlock(&memcg->thresholds_lock);
3506} 3507}