From: Mike Galbraith <umgwanakikbuti@gmail.com>
To: Byungchul Park <byungchul.park@lge.com>,
Greg KH <gregkh@linuxfoundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
stable@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [STABLE] kernel oops which can be fixed by peterz's patches
Date: Wed, 17 Feb 2016 04:02:59 +0100 [thread overview]
Message-ID: <1455678179.3531.15.camel@gmail.com> (raw)
In-Reply-To: <20160217020008.GC5972@X58A-UD3R>
On Wed, 2016-02-17 at 11:00 +0900, Byungchul Park wrote:
> On Tue, Feb 16, 2016 at 04:41:39PM -0800, Greg KH wrote:
> > On Wed, Feb 17, 2016 at 09:11:03AM +0900, Byungchul Park wrote:
> > > On Tue, Feb 16, 2016 at 09:42:12AM -0800, Greg KH wrote:
> > > > On Tue, Feb 16, 2016 at 09:44:35AM +0100, Peter Zijlstra wrote:
> > > > > On Tue, Feb 16, 2016 at 04:08:37PM +0900, Byungchul Park wrote:
> > > > > > On Mon, Jan 25, 2016 at 04:25:03PM +0900, Byungchul Park wrote:
> > > > > > > On Tue, Jan 05, 2016 at 10:14:44AM +0100, Peter Zijlstra wrote:
> > > > > > > > So the reason I didn't mark them for stable is that they were non
> > > > > > > > trivial, however they've been in for a while now and nothing broke, so I
> > > > > > > > suppose backporting them isn't a problem.
> > > > > > >
> > > > > > > Hello,
> > > > > > >
> > > > > > > What do you think about the way to solve this oops problem? Could you just
> > > > > > > give your opinion of the way? Or ack or nack about this backporting?
> > > > > >
> > > > > > Or would it be better to create a new simple patch with which we can solve
> > > > > > the oops problem, because your patch is too complicated to backport to
> > > > > > stable tree? What do you think about that?
> > > > >
> > > > > I would prefer just backporting existing stuff, we know that works.
> > > > >
> > > > > A separate patch for stable doesn't make sense to me; you get extra
> > > > > chances for fail and a divergent code-base.
> > > >
> > > > I agree, I REALLY don't want to take patches that are not
> > > > identical-as-much-as-possible to what is in Linus's tree, because almost
> > > > every time we do, the patch is broken in some way.
> > >
> > > I also agree and got it. Then could you check if this backporting is done
> > > properly?
> >
> > What backporting of what to where by whom?
> >
> > Come on, someone needs to actually send in some patches, in the correct
> > format, before anyone can do anything with them...
>
> I am sorry for not ccing you when I sent the patches at first. (I didn't
> know I should do it.) There are the patches in this thread. Refer to,
>
> https://lkml.org/lkml/2016/1/5/60
Anybody wanting to fix up a < 3.14 kernel can use the below.
sched: fix __sched_setscheduler() vs load balancing race
__sched_setscheduler() may release rq->lock in pull_rt_task() as a task is
being changed rt -> fair class. load balancing may sneak in, move the task
behind __sched_setscheduler()'s back, which explodes in switched_to_fair()
when the passed but no longer valid rq is used. Tell can_migrate_task() to
say no if ->pi_lock is held.
@stable: Kernels that predate SCHED_DEADLINE can use this simple (and tested)
check in lieu of backport of the full 18 patch mainline treatment.
Signed-off-by: Mike Galbraith <umgwanakikbuti@gmail.com>
---
kernel/sched/fair.c | 9 +++++++++
1 file changed, 9 insertions(+)
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4008,6 +4008,7 @@ int can_migrate_task(struct task_struct
* 2) cannot be migrated to this CPU due to cpus_allowed, or
* 3) running (obviously), or
* 4) are cache-hot on their current CPU.
+ * 5) p->pi_lock is held.
*/
if (throttled_lb_pair(task_group(p), env->src_cpu, env->dst_cpu))
return 0;
@@ -4049,6 +4050,14 @@ int can_migrate_task(struct task_struct
}
/*
+ * rt -> fair class change may be in progress. If we sneak in should
+ * double_lock_balance() release rq->lock, and move the task, we will
+ * cause switched_to_fair() to meet a passed but no longer valid rq.
+ */
+ if (raw_spin_is_locked(&p->pi_lock))
+ return 0;
+
+ /*
* Aggressive migration if:
* 1) task is cache cold, or
* 2) too many balance attempts have failed.
next prev parent reply other threads:[~2016-02-17 3:03 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-05 8:52 [STABLE] kernel oops which can be fixed by peterz's patches Byungchul Park
2016-01-05 9:14 ` Peter Zijlstra
2016-01-12 8:47 ` Byungchul Park
2016-01-12 10:21 ` Willy Tarreau
2016-01-25 7:25 ` Byungchul Park
2016-02-16 7:08 ` Byungchul Park
2016-02-16 8:44 ` Peter Zijlstra
2016-02-16 17:42 ` Greg KH
2016-02-17 0:11 ` Byungchul Park
2016-02-17 0:41 ` Greg KH
2016-02-17 2:00 ` Byungchul Park
2016-02-17 3:01 ` Greg KH
2016-02-17 3:02 ` Mike Galbraith [this message]
2016-02-23 21:05 ` Ben Hutchings
2016-02-23 21:06 ` Ben Hutchings
2016-01-05 9:16 ` [PATCH for v3.14.58 1/7] sched: Clean up idle task SMP logic Byungchul Park
2016-01-05 9:16 ` [PATCH for v3.14.58 2/7] sched: Replace post_schedule with a balance callback list Byungchul Park
2016-01-05 9:16 ` [PATCH for v3.14.58 3/7] sched: Allow balance callbacks for check_class_changed() Byungchul Park
2016-01-05 9:16 ` [PATCH for v3.14.58 4/7] sched,rt: Remove return value from pull_rt_task() Byungchul Park
2016-01-05 9:16 ` [PATCH for v3.14.58 5/7] sched, rt: Convert switched_{from, to}_rt() / prio_changed_rt() to balance callbacks Byungchul Park
2016-01-05 9:16 ` [PATCH for v3.14.58 6/7] sched,dl: Remove return value from pull_dl_task() Byungchul Park
2016-01-05 9:16 ` [PATCH for v3.14.58 7/7] sched, dl: Convert switched_{from, to}_dl() / prio_changed_dl() to balance callbacks Byungchul Park
2016-01-05 9:24 ` [PATCH for v3.18.25 1/6] sched: Replace post_schedule with a balance callback list Byungchul Park
2016-01-05 9:24 ` [PATCH for v3.18.25 2/6] sched: Allow balance callbacks for check_class_changed() Byungchul Park
2016-01-05 9:24 ` [PATCH for v3.18.25 3/6] sched,rt: Remove return value from pull_rt_task() Byungchul Park
2016-01-05 9:24 ` [PATCH for v3.18.25 4/6] sched, rt: Convert switched_{from, to}_rt() / prio_changed_rt() to balance callbacks Byungchul Park
2016-01-05 9:24 ` [PATCH for v3.18.25 5/6] sched,dl: Remove return value from pull_dl_task() Byungchul Park
2016-01-05 9:24 ` [PATCH for v3.18.25 6/6] sched, dl: Convert switched_{from, to}_dl() / prio_changed_dl() to balance callbacks Byungchul Park
2016-03-01 8:15 ` [STABLE] kernel oops which can be fixed by peterz's patches Greg KH
2016-07-18 6:31 ` Byungchul Park
2016-07-18 12:09 ` Greg KH
2016-07-18 23:59 ` Byungchul Park
2016-06-13 18:31 ` Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455678179.3531.15.camel@gmail.com \
--to=umgwanakikbuti@gmail.com \
--cc=byungchul.park@lge.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.