* [patch] sched: fix unregister_fair_sched_group [not found] <20101130005539.617388324@google.com> @ 2010-11-30 0:55 ` Paul Turner 2010-11-30 9:09 ` [tip:sched/core] sched: Fix unregister_fair_sched_group() tip-bot for Paul Turner 0 siblings, 1 reply; 2+ messages in thread From: Paul Turner @ 2010-11-30 0:55 UTC (permalink / raw) To: linux-kernel; +Cc: Ingo Molnar, Peter Zijlstra, Mike Galbraith [-- Attachment #1: sched-fix_unregister.patch --] [-- Type: text/plain, Size: 1069 bytes --] In the flipping and flopping between calling unregister_fair_sched_group on a per-cpu versus per-group basis we ended up in a bad state. Remove from the list for the passed cpu as opposed to some arbitrary index. (This fixes explosions w/ autogroup as well as a group creation/destruction stress test) Signed-off-by: Paul Turner <pjt@google.com> --- kernel/sched.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) Index: tip/kernel/sched.c =================================================================== --- tip.orig/kernel/sched.c +++ tip/kernel/sched.c @@ -8097,7 +8097,6 @@ static inline void unregister_fair_sched { struct rq *rq = cpu_rq(cpu); unsigned long flags; - int i; /* * Only empty task groups can be destroyed; so we can speculatively @@ -8107,7 +8106,7 @@ static inline void unregister_fair_sched return; raw_spin_lock_irqsave(&rq->lock, flags); - list_del_leaf_cfs_rq(tg->cfs_rq[i]); + list_del_leaf_cfs_rq(tg->cfs_rq[cpu]); raw_spin_unlock_irqrestore(&rq->lock, flags); } #else /* !CONFG_FAIR_GROUP_SCHED */ ^ permalink raw reply [flat|nested] 2+ messages in thread
* [tip:sched/core] sched: Fix unregister_fair_sched_group() 2010-11-30 0:55 ` [patch] sched: fix unregister_fair_sched_group Paul Turner @ 2010-11-30 9:09 ` tip-bot for Paul Turner 0 siblings, 0 replies; 2+ messages in thread From: tip-bot for Paul Turner @ 2010-11-30 9:09 UTC (permalink / raw) To: linux-tip-commits Cc: linux-kernel, hpa, mingo, a.p.zijlstra, efault, pjt, tglx, sfr, mingo Commit-ID: 822bc180a7f7a7bc5fcaaea195f41b487cc8cae8 Gitweb: http://git.kernel.org/tip/822bc180a7f7a7bc5fcaaea195f41b487cc8cae8 Author: Paul Turner <pjt@google.com> AuthorDate: Mon, 29 Nov 2010 16:55:40 -0800 Committer: Ingo Molnar <mingo@elte.hu> CommitDate: Tue, 30 Nov 2010 10:07:10 +0100 sched: Fix unregister_fair_sched_group() In the flipping and flopping between calling unregister_fair_sched_group() on a per-cpu versus per-group basis we ended up in a bad state. Remove from the list for the passed cpu as opposed to some arbitrary index. ( This fixes explosions w/ autogroup as well as a group creation/destruction stress test. ) Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Paul Turner <pjt@google.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> LKML-Reference: <20101130005740.080828123@google.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> --- kernel/sched.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/kernel/sched.c b/kernel/sched.c index 35a6373..66ef579 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -8085,7 +8085,6 @@ static inline void unregister_fair_sched_group(struct task_group *tg, int cpu) { struct rq *rq = cpu_rq(cpu); unsigned long flags; - int i; /* * Only empty task groups can be destroyed; so we can speculatively @@ -8095,7 +8094,7 @@ static inline void unregister_fair_sched_group(struct task_group *tg, int cpu) return; raw_spin_lock_irqsave(&rq->lock, flags); - list_del_leaf_cfs_rq(tg->cfs_rq[i]); + list_del_leaf_cfs_rq(tg->cfs_rq[cpu]); raw_spin_unlock_irqrestore(&rq->lock, flags); } #else /* !CONFG_FAIR_GROUP_SCHED */ ^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-11-30 9:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20101130005539.617388324@google.com>
2010-11-30 0:55 ` [patch] sched: fix unregister_fair_sched_group Paul Turner
2010-11-30 9:09 ` [tip:sched/core] sched: Fix unregister_fair_sched_group() tip-bot for Paul Turner
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.