From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from wtarreau.pck.nerim.net ([62.212.114.60]:1747 "EHLO 1wt.eu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1761512AbcALKVv (ORCPT ); Tue, 12 Jan 2016 05:21:51 -0500 Date: Tue, 12 Jan 2016 11:21:06 +0100 From: Willy Tarreau To: Peter Zijlstra Cc: Byungchul Park , stable@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [STABLE] kernel oops which can be fixed by peterz's patches Message-ID: <20160112102106.GA20507@1wt.eu> References: <20160105085211.GB3621@X58A-UD3R> <20160105091444.GZ6357@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160105091444.GZ6357@twins.programming.kicks-ass.net> Sender: stable-owner@vger.kernel.org List-ID: Hi Peter, On Tue, Jan 05, 2016 at 10:14:44AM +0100, Peter Zijlstra wrote: > On Tue, Jan 05, 2016 at 05:52:11PM +0900, Byungchul Park wrote: > > > > Upstream commits to be applied > > ============================== > > > > e3fca9e: sched: Replace post_schedule with a balance callback list > > 4c9a4bc: sched: Allow balance callbacks for check_class_changed() > > 8046d68: sched,rt: Remove return value from pull_rt_task() > > fd7a4be: sched, rt: Convert switched_{from, to}_rt() / prio_changed_rt() to balance callbacks > > 0ea60c2: sched,dl: Remove return value from pull_dl_task() > > 9916e21: sched, dl: Convert switched_{from, to}_dl() / prio_changed_dl() to balance callbacks > > > > The reason why these should be applied > > ====================================== > > > > Our products developed using 3.16 kernel, faced a kernel oops which can > > be fixed with above upstreamed patches. The oops is caused by "Unable > > to handle kernel NULL pointer dereference at virtual address 000000xx" > > in the call path, > > > > __sched_setscheduler() > > check_class_changed() > > switched_to_fair() > > check_preempt_curr() > > check_preempt_wakeup() > > find_matching_se() > > is_same_group() > > > > by "if (se->cfs_rq == pse->cfs_rq) // se, pse == NULL" condition. > > 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. I didn't check the code, but for older kernels, can't we simply get rid of the issue by adding an extra test on se/pse before dereferencing it, even if that implies a suboptimal fix which is always better than an oops ? I must confess I don't feel at ease with backporting so many sensitive changes into 2.6.32! Thanks, Willy