From: Peter Zijlstra <peterz@infradead•org>
To: Aaron Tomlin <atomlin@redhat•com>
Cc: dzickus@redhat•com, jcastillo@redhat•com, riel@redhat•com,
bmr@redhat•com, x86@kernel•org, oleg@redhat•com,
rostedt@goodmis•org, linux-kernel@vger•kernel.org,
minchan@kernel•org, mingo@redhat•com,
aneesh.kumar@linux•vnet.ibm.com, hannes@cmpxchg•org,
tglx@linutronix•de, linuxppc-dev@lists•ozlabs.org,
akpm@linux-foundation•org, pzijlstr@redhat•com
Subject: Re: [PATCH 2/2] sched: BUG when stack end location is over written
Date: Thu, 4 Sep 2014 17:32:31 +0200 [thread overview]
Message-ID: <20140904153231.GE346@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <1409842224-11847-3-git-send-email-atomlin@redhat.com>
On Thu, Sep 04, 2014 at 03:50:24PM +0100, Aaron Tomlin wrote:
> Currently in the event of a stack overrun a call to schedule()
> does not check for this type of corruption. This corruption is
> often silent and can go unnoticed. However once the corrupted
> region is examined at a later stage, the outcome is undefined
> and often results in a sporadic page fault which cannot be
> handled.
>
> This patch checks for a stack overrun and takes appropriate
> action since the damage is already done, there is no point
> in continuing.
>
> Signed-off-by: Aaron Tomlin <atomlin@redhat•com>
> ---
> kernel/sched/core.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index ec1a286..d6af6a0 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -2660,6 +2660,9 @@ static noinline void __schedule_bug(struct task_struct *prev)
> */
> static inline void schedule_debug(struct task_struct *prev)
> {
> + if (unlikely(prev != &init_task &&
> + task_stack_end_corrupted(prev)))
> + BUG();
superfluous linebreak, also we appear to have BUG_ON() for situations
just like these.
secondly, while I appreciate the 'feature' you're making schedule()
slower for everybody, what do you propose to do about that?
next prev parent reply other threads:[~2014-09-04 15:32 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-04 14:50 [PATCH 0/2] sched: Always check the integrity of the canary Aaron Tomlin
2014-09-04 14:50 ` [PATCH 1/2] sched: Add helper for task stack page overrun checking Aaron Tomlin
2014-09-04 15:02 ` Oleg Nesterov
2014-09-04 15:52 ` Aaron Tomlin
2014-09-04 15:30 ` Peter Zijlstra
2014-09-04 14:50 ` [PATCH 2/2] sched: BUG when stack end location is over written Aaron Tomlin
2014-09-04 15:32 ` Peter Zijlstra [this message]
2014-09-04 16:11 ` Aaron Tomlin
2014-09-08 19:23 ` [PATCH v2 0/3] sched: Always check the integrity of the canary Aaron Tomlin
2014-09-08 19:23 ` [PATCH 1/3] init/main.c: Give init_task a canary Aaron Tomlin
2014-09-08 19:23 ` [PATCH 2/3] sched: Add helper for task stack page overrun checking Aaron Tomlin
2014-09-08 19:23 ` [PATCH 3/3] sched: BUG when stack end location is over written Aaron Tomlin
2014-09-09 9:42 ` [PATCH v2 0/3] sched: Always check the integrity of the canary Aaron Tomlin
2014-09-09 9:42 ` [PATCH v2 1/3] init/main.c: Give init_task a canary Aaron Tomlin
2014-09-10 7:26 ` Chuck Ebbert
2014-09-10 13:29 ` Aaron Tomlin
2014-09-11 12:23 ` Chuck Ebbert
2014-09-11 14:47 ` Aaron Tomlin
2014-09-09 9:42 ` [PATCH v2 2/3] sched: Add helper for task stack page overrun checking Aaron Tomlin
2014-09-09 9:42 ` [PATCH v2 3/3] sched: BUG when stack end location is over written Aaron Tomlin
2014-09-11 15:41 ` [PATCH v3 0/3] sched: Always check the integrity of the canary Aaron Tomlin
2014-09-11 15:41 ` [PATCH v3 1/3] init/main.c: Give init_task a canary Aaron Tomlin
2014-09-12 7:28 ` Michael Ellerman
2014-09-11 15:41 ` [PATCH v3 2/3] sched: Add helper for task stack page overrun checking Aaron Tomlin
2014-09-11 15:41 ` [PATCH v3 3/3] sched: BUG when stack end location is over written Aaron Tomlin
2014-09-12 4:06 ` Michael Ellerman
2014-09-12 9:44 ` Aaron Tomlin
2014-09-12 10:58 ` Mike Galbraith
2014-09-15 2:39 ` Michael Ellerman
2014-09-12 6:04 ` Michael Ellerman
2014-09-12 9:50 ` Aaron Tomlin
2014-09-11 15:53 ` [PATCH v3 0/3] sched: Always check the integrity of the canary Peter Zijlstra
2014-09-11 15:59 ` Aaron Tomlin
2014-09-11 16:02 ` David Laight
2014-09-11 17:26 ` Chuck Ebbert
2014-09-12 8:43 ` David Laight
2014-09-11 17:44 ` Aaron Tomlin
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=20140904153231.GE346@worktop.programming.kicks-ass.net \
--to=peterz@infradead$(echo .)org \
--cc=akpm@linux-foundation$(echo .)org \
--cc=aneesh.kumar@linux$(echo .)vnet.ibm.com \
--cc=atomlin@redhat$(echo .)com \
--cc=bmr@redhat$(echo .)com \
--cc=dzickus@redhat$(echo .)com \
--cc=hannes@cmpxchg$(echo .)org \
--cc=jcastillo@redhat$(echo .)com \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=minchan@kernel$(echo .)org \
--cc=mingo@redhat$(echo .)com \
--cc=oleg@redhat$(echo .)com \
--cc=pzijlstr@redhat$(echo .)com \
--cc=riel@redhat$(echo .)com \
--cc=rostedt@goodmis$(echo .)org \
--cc=tglx@linutronix$(echo .)de \
--cc=x86@kernel$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox