diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index a1e97183bcf9eeb0b1f7ea2ee28d22f92a1cd628..638b5e28857487d8c066dd640a508a1318b707c5 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -793,8 +793,11 @@ static inline void count_memcg_event_mm(struct mm_struct *mm, static inline void memcg_memory_event(struct mem_cgroup *memcg, enum memcg_memory_event event) { - atomic_long_inc(&memcg->memory_events[event]); - cgroup_file_notify(&memcg->events_file); + do { + atomic_long_inc(&memcg->memory_events[event]); + cgroup_file_notify(&memcg->events_file); + } while ((memcg = parent_mem_cgroup(memcg)) && + !mem_cgroup_is_root(memcg)); } static inline void memcg_memory_event_mm(struct mm_struct *mm,