diff options
| -rw-r--r-- | mm/memcontrol.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 31ab9c3f0178..b659260c56ad 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
| @@ -4507,6 +4507,12 @@ static void mem_cgroup_usage_unregister_event(struct cgroup *cgrp, | |||
| 4507 | swap_buffers: | 4507 | swap_buffers: |
| 4508 | /* Swap primary and spare array */ | 4508 | /* Swap primary and spare array */ |
| 4509 | thresholds->spare = thresholds->primary; | 4509 | thresholds->spare = thresholds->primary; |
| 4510 | /* If all events are unregistered, free the spare array */ | ||
| 4511 | if (!new) { | ||
| 4512 | kfree(thresholds->spare); | ||
| 4513 | thresholds->spare = NULL; | ||
| 4514 | } | ||
| 4515 | |||
| 4510 | rcu_assign_pointer(thresholds->primary, new); | 4516 | rcu_assign_pointer(thresholds->primary, new); |
| 4511 | 4517 | ||
| 4512 | /* To be sure that nobody uses thresholds */ | 4518 | /* To be sure that nobody uses thresholds */ |
