linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/2] memcg fixups that fell through cracks in 3.5
@ 2012-10-04 18:09 Johannes Weiner
  2012-10-04 18:09 ` [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit Johannes Weiner
  2012-10-04 18:09 ` [patch 2/2] mm: memcg: clean up mm_match_cgroup() signature Johannes Weiner
  0 siblings, 2 replies; 7+ messages in thread
From: Johannes Weiner @ 2012-10-04 18:09 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Michal Hocko, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

Hi Andrew,

an older version of "mm: memcg: count pte references from every member
of the reclaimed hierarchy" patch made it into the 3.5
(c3ac9a8ade65ccbfd145fbff895ae8d8d62d09b0) by accident and I didn't
notice until just now.  #1 is a fixup on top, tagged for 3.5-stable.

#2 is a cleanup you requested but probably missed as it was attached
to a mail buried in the thread.  For 3.6.

Patches against mm.git.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit
  2012-10-04 18:09 [patch 0/2] memcg fixups that fell through cracks in 3.5 Johannes Weiner
@ 2012-10-04 18:09 ` Johannes Weiner
  2012-10-04 18:49   ` Michal Hocko
  2012-10-04 18:09 ` [patch 2/2] mm: memcg: clean up mm_match_cgroup() signature Johannes Weiner
  1 sibling, 1 reply; 7+ messages in thread
From: Johannes Weiner @ 2012-10-04 18:09 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Michal Hocko, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

page_referenced() counts only references of mm's that are associated
with the memcg hierarchy that is being reclaimed.  However, if it
races with the owner of the mm exiting, mm->owner may be NULL.  Don't
crash, just ignore the reference.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: stable@kernel.org [3.5]
---
 include/linux/memcontrol.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 8d9489f..8686294 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -91,7 +91,7 @@ int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
 
 	rcu_read_lock();
 	memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
-	match = __mem_cgroup_same_or_subtree(cgroup, memcg);
+	match = memcg && __mem_cgroup_same_or_subtree(cgroup, memcg);
 	rcu_read_unlock();
 	return match;
 }
-- 
1.7.11.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [patch 2/2] mm: memcg: clean up mm_match_cgroup() signature
  2012-10-04 18:09 [patch 0/2] memcg fixups that fell through cracks in 3.5 Johannes Weiner
  2012-10-04 18:09 ` [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit Johannes Weiner
@ 2012-10-04 18:09 ` Johannes Weiner
  2012-10-05 20:53   ` Andrew Morton
  1 sibling, 1 reply; 7+ messages in thread
From: Johannes Weiner @ 2012-10-04 18:09 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Michal Hocko, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

It really should return a boolean for match/no match.  And since it
takes a memcg, not a cgroup, fix that parameter name as well.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
---
 include/linux/memcontrol.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 8686294..7698182 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -84,14 +84,14 @@ extern struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg);
 extern struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont);
 
 static inline
-int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
+bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg)
 {
-	struct mem_cgroup *memcg;
-	int match;
+	struct mem_cgroup *task_memcg;
+	bool match;
 
 	rcu_read_lock();
-	memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
-	match = memcg && __mem_cgroup_same_or_subtree(cgroup, memcg);
+	task_memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
+	match = task_memcg && __mem_cgroup_same_or_subtree(memcg, task_memcg);
 	rcu_read_unlock();
 	return match;
 }
@@ -258,10 +258,10 @@ static inline struct mem_cgroup *try_get_mem_cgroup_from_mm(struct mm_struct *mm
 	return NULL;
 }
 
-static inline int mm_match_cgroup(struct mm_struct *mm,
+static inline bool mm_match_cgroup(struct mm_struct *mm,
 		struct mem_cgroup *memcg)
 {
-	return 1;
+	return true;
 }
 
 static inline int task_in_mem_cgroup(struct task_struct *task,
-- 
1.7.11.4

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit
  2012-10-04 18:09 ` [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit Johannes Weiner
@ 2012-10-04 18:49   ` Michal Hocko
  2012-10-04 20:19     ` Johannes Weiner
  0 siblings, 1 reply; 7+ messages in thread
From: Michal Hocko @ 2012-10-04 18:49 UTC (permalink / raw)
  To: Johannes Weiner
  Cc: Andrew Morton, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

On Thu 04-10-12 14:09:16, Johannes Weiner wrote:
> page_referenced() counts only references of mm's that are associated
> with the memcg hierarchy that is being reclaimed.  However, if it
> races with the owner of the mm exiting, mm->owner may be NULL.  Don't
> crash, just ignore the reference.

This seems to be fixed by Hugh's patch 3a981f48 "memcg: fix use_hierarchy
css_is_ancestor oops regression" which seems to be merged already.

> 
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
> Cc: stable@kernel.org [3.5]
> ---
>  include/linux/memcontrol.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index 8d9489f..8686294 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -91,7 +91,7 @@ int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
>  
>  	rcu_read_lock();
>  	memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
> -	match = __mem_cgroup_same_or_subtree(cgroup, memcg);
> +	match = memcg && __mem_cgroup_same_or_subtree(cgroup, memcg);
>  	rcu_read_unlock();
>  	return match;
>  }
> -- 
> 1.7.11.4
> 

-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit
  2012-10-04 18:49   ` Michal Hocko
@ 2012-10-04 20:19     ` Johannes Weiner
  2012-10-05  7:05       ` Michal Hocko
  0 siblings, 1 reply; 7+ messages in thread
From: Johannes Weiner @ 2012-10-04 20:19 UTC (permalink / raw)
  To: Michal Hocko
  Cc: Andrew Morton, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

On Thu, Oct 04, 2012 at 08:49:58PM +0200, Michal Hocko wrote:
> On Thu 04-10-12 14:09:16, Johannes Weiner wrote:
> > page_referenced() counts only references of mm's that are associated
> > with the memcg hierarchy that is being reclaimed.  However, if it
> > races with the owner of the mm exiting, mm->owner may be NULL.  Don't
> > crash, just ignore the reference.
> 
> This seems to be fixed by Hugh's patch 3a981f48 "memcg: fix use_hierarchy
> css_is_ancestor oops regression" which seems to be merged already.

And look who acked the patch.  I'll show myself out...

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit
  2012-10-04 20:19     ` Johannes Weiner
@ 2012-10-05  7:05       ` Michal Hocko
  0 siblings, 0 replies; 7+ messages in thread
From: Michal Hocko @ 2012-10-05  7:05 UTC (permalink / raw)
  To: Johannes Weiner
  Cc: Andrew Morton, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

On Thu 04-10-12 16:19:08, Johannes Weiner wrote:
> On Thu, Oct 04, 2012 at 08:49:58PM +0200, Michal Hocko wrote:
> > On Thu 04-10-12 14:09:16, Johannes Weiner wrote:
> > > page_referenced() counts only references of mm's that are associated
> > > with the memcg hierarchy that is being reclaimed.  However, if it
> > > races with the owner of the mm exiting, mm->owner may be NULL.  Don't
> > > crash, just ignore the reference.
> > 
> > This seems to be fixed by Hugh's patch 3a981f48 "memcg: fix use_hierarchy
> > css_is_ancestor oops regression" which seems to be merged already.
> 
> And look who acked the patch.  I'll show myself out...

My memory is a bit fuzzy but I remember we had two alternatives and
Hugh's won.

-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [patch 2/2] mm: memcg: clean up mm_match_cgroup() signature
  2012-10-04 18:09 ` [patch 2/2] mm: memcg: clean up mm_match_cgroup() signature Johannes Weiner
@ 2012-10-05 20:53   ` Andrew Morton
  0 siblings, 0 replies; 7+ messages in thread
From: Andrew Morton @ 2012-10-05 20:53 UTC (permalink / raw)
  To: Johannes Weiner
  Cc: Michal Hocko, Konstantin Khlebnikov, linux-mm, cgroups,
	linux-kernel

On Thu,  4 Oct 2012 14:09:17 -0400
Johannes Weiner <hannes@cmpxchg.org> wrote:

> It really should return a boolean for match/no match.  And since it
> takes a memcg, not a cgroup, fix that parameter name as well.
> 
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -84,14 +84,14 @@ extern struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg);
>  extern struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont);
>  
>  static inline
> -int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
> +bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg)
>  {
> -	struct mem_cgroup *memcg;
> -	int match;
> +	struct mem_cgroup *task_memcg;
> +	bool match;
>  
>  	rcu_read_lock();
> -	memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
> -	match = memcg && __mem_cgroup_same_or_subtree(cgroup, memcg);
> +	task_memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
> +	match = task_memcg && __mem_cgroup_same_or_subtree(memcg, task_memcg);
>  	rcu_read_unlock();
>  	return match;
>  }

This needed massaging after droppage of your [1/2]:



From: Johannes Weiner <hannes@cmpxchg.org>
Subject: mm: memcg: clean up mm_match_cgroup() signature

It really should return a boolean for match/no match.  And since it
takes a memcg, not a cgroup, fix that parameter name as well.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
---
 1 file changed, 7 insertions(+), 7 deletions(-)

index 8686294..7698182 100644
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 include/linux/memcontrol.h |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff -puN include/linux/memcontrol.h~mm-memcg-clean-up-mm_match_cgroup-signature include/linux/memcontrol.h
--- a/include/linux/memcontrol.h~mm-memcg-clean-up-mm_match_cgroup-signature
+++ a/include/linux/memcontrol.h
@@ -84,13 +84,13 @@ extern struct mem_cgroup *parent_mem_cgr
 extern struct mem_cgroup *mem_cgroup_from_cont(struct cgroup *cont);
 
 static inline
-int mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *cgroup)
+bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg)
 {
-	struct mem_cgroup *memcg;
-	int match;
+	struct mem_cgroup *task_memcg;
+	bool match;
 
 	rcu_read_lock();
-	memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
+	task_memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
 	match = __mem_cgroup_same_or_subtree(cgroup, task_memcg);
 	rcu_read_unlock();
 	return match;
@@ -258,10 +258,10 @@ static inline struct mem_cgroup *try_get
 	return NULL;
 }
 
-static inline int mm_match_cgroup(struct mm_struct *mm,
+static inline bool mm_match_cgroup(struct mm_struct *mm,
 		struct mem_cgroup *memcg)
 {
-	return 1;
+	return true;
 }
 
 static inline int task_in_mem_cgroup(struct task_struct *task,
_


Also,


From: Andrew Morton <akpm@linux-foundation.org>
Subject: mm-memcg-clean-up-mm_match_cgroup-signature-fix

mm_match_cgroup is not a macro

Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 include/linux/memcontrol.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff -puN include/linux/memcontrol.h~mm-memcg-clean-up-mm_match_cgroup-signature-fix include/linux/memcontrol.h
--- a/include/linux/memcontrol.h~mm-memcg-clean-up-mm_match_cgroup-signature-fix
+++ a/include/linux/memcontrol.h
@@ -90,7 +90,7 @@ bool mm_match_cgroup(const struct mm_str
 	bool match;
 
 	rcu_read_lock();
-	task_memcg = mem_cgroup_from_task(rcu_dereference((mm)->owner));
+	task_memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
 	match = __mem_cgroup_same_or_subtree(cgroup, task_memcg);
 	rcu_read_unlock();
 	return match;
_

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-10-05 20:53 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-04 18:09 [patch 0/2] memcg fixups that fell through cracks in 3.5 Johannes Weiner
2012-10-04 18:09 ` [patch 1/2] mm: memcontrol: handle potential crash when rmap races with task exit Johannes Weiner
2012-10-04 18:49   ` Michal Hocko
2012-10-04 20:19     ` Johannes Weiner
2012-10-05  7:05       ` Michal Hocko
2012-10-04 18:09 ` [patch 2/2] mm: memcg: clean up mm_match_cgroup() signature Johannes Weiner
2012-10-05 20:53   ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).