On 30.08.2018 21:02, Sasha Levin wrote: > From: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx> > > [ Upstream commit 44bd4a4759d5a714767aa6be7e806ab54b7fa3a8 ] This commit is not needed for stable. And I think, there are no more commits in this series, which depend on it. > This is just refactoring to allow the next patches to have memcg pointer > in list_lru_from_kmem(). > > Link: http://lkml.kernel.org/r/153063060664.1818.9541345386733498582.stgit@localhost.localdomain > Signed-off-by: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx> > Acked-by: Vladimir Davydov <vdavydov.dev@xxxxxxxxx> > Tested-by: Shakeel Butt <shakeelb@xxxxxxxxxx> > Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > Cc: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: Guenter Roeck <linux@xxxxxxxxxxxx> > Cc: "Huang, Ying" <ying.huang@xxxxxxxxx> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > Cc: Josef Bacik <jbacik@xxxxxx> > Cc: Li RongQing <lirongqing@xxxxxxxxx> > Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> > Cc: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxxxx> > Cc: Minchan Kim <minchan@xxxxxxxxxx> > Cc: Philippe Ombredanne <pombredanne@xxxxxxxx> > Cc: Roman Gushchin <guro@xxxxxx> > Cc: Sahitya Tummala <stummala@xxxxxxxxxxxxxx> > Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > Cc: Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Waiman Long <longman@xxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx> > --- > mm/list_lru.c | 25 +++++++++++++++++-------- > 1 file changed, 17 insertions(+), 8 deletions(-) > > diff --git a/mm/list_lru.c b/mm/list_lru.c > index fcfb6c89ed47..426ec49f9325 100644 > --- a/mm/list_lru.c > +++ b/mm/list_lru.c > @@ -75,18 +75,24 @@ static __always_inline struct mem_cgroup *mem_cgroup_from_kmem(void *ptr) > } > > static inline struct list_lru_one * > -list_lru_from_kmem(struct list_lru_node *nlru, void *ptr) > +list_lru_from_kmem(struct list_lru_node *nlru, void *ptr, > + struct mem_cgroup **memcg_ptr) > { > - struct mem_cgroup *memcg; > + struct list_lru_one *l = &nlru->lru; > + struct mem_cgroup *memcg = NULL; > > if (!nlru->memcg_lrus) > - return &nlru->lru; > + goto out; > > memcg = mem_cgroup_from_kmem(ptr); > if (!memcg) > - return &nlru->lru; > + goto out; > > - return list_lru_from_memcg_idx(nlru, memcg_cache_id(memcg)); > + l = list_lru_from_memcg_idx(nlru, memcg_cache_id(memcg)); > +out: > + if (memcg_ptr) > + *memcg_ptr = memcg; > + return l; > } > #else > static inline bool list_lru_memcg_aware(struct list_lru *lru) > @@ -101,8 +107,11 @@ list_lru_from_memcg_idx(struct list_lru_node *nlru, int idx) > } > > static inline struct list_lru_one * > -list_lru_from_kmem(struct list_lru_node *nlru, void *ptr) > +list_lru_from_kmem(struct list_lru_node *nlru, void *ptr, > + struct mem_cgroup **memcg_ptr) > { > + if (memcg_ptr) > + *memcg_ptr = NULL; > return &nlru->lru; > } > #endif /* CONFIG_MEMCG && !CONFIG_SLOB */ > @@ -115,7 +124,7 @@ bool list_lru_add(struct list_lru *lru, struct list_head *item) > > spin_lock(&nlru->lock); > if (list_empty(item)) { > - l = list_lru_from_kmem(nlru, item); > + l = list_lru_from_kmem(nlru, item, NULL); > list_add_tail(item, &l->list); > l->nr_items++; > nlru->nr_items++; > @@ -135,7 +144,7 @@ bool list_lru_del(struct list_lru *lru, struct list_head *item) > > spin_lock(&nlru->lock); > if (!list_empty(item)) { > - l = list_lru_from_kmem(nlru, item); > + l = list_lru_from_kmem(nlru, item, NULL); > list_del_init(item); > l->nr_items--; > nlru->nr_items--; >