public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: Aaron Tomlin <atomlin@redhat•com>
To: peterz@infradead•org
Cc: dzickus@redhat•com, jcastillo@redhat•com, riel@redhat•com,
	x86@kernel•org, akpm@linux-foundation•org, minchan@kernel•org,
	bmr@redhat•com, prarit@redhat•com, oleg@redhat•com,
	rostedt@goodmis•org, linux-kernel@vger•kernel.org,
	hannes@cmpxchg•org, mingo@redhat•com,
	aneesh.kumar@linux•vnet.ibm.com, atomlin@redhat•com,
	jgh@redhat•com, linuxppc-dev@lists•ozlabs.org,
	tglx@linutronix•de, akpm@google•com
Subject: [PATCH v4 0/3] sched: Always check the integrity of the canary
Date: Fri, 12 Sep 2014 14:16:16 +0100	[thread overview]
Message-ID: <1410527779-8133-1-git-send-email-atomlin@redhat.com> (raw)

Hi Peter,

Please let me know if this iteration is satisfactory. Thanks.


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.

The first patch adds a canary to init_task's end of stack.
While the second patch provides a helper to determine the
integrity of the canary. The third checks for a stack
overrun and takes appropriate action since the damage
is already done, there is no point in continuing.


Changes since v3:

 * Add Michael Ellerman's Acked-by to first patch
   (for powerpc)
 * Fix compiler error - Michael Ellerman
 * Set default Kconfig option to n - Michael Ellerman

Changes since v2:

 * Use BUG_ON in schedule_debug() - Peter Zijlstra
 * Use a more explicit function
   name for setting the canary - Chuck Ebbert

Changes since v1:

 * Rebased against v3.17-rc4
 * Add a canary to init_task - Oleg Nesterov
 * Fix various code formatting issues - Peter Zijlstra
 * Introduce Kconfig option - Peter Zijlstra

Aaron Tomlin (3):
  init/main.c: Give init_task a canary
  sched: Add helper for task stack page overrun checking
  sched: BUG when stack end location is over written

 arch/powerpc/mm/fault.c    |  5 +----
 arch/x86/mm/fault.c        |  5 +----
 include/linux/sched.h      |  4 ++++
 init/main.c                |  1 +
 kernel/fork.c              | 12 +++++++++---
 kernel/sched/core.c        |  3 +++
 kernel/trace/trace_stack.c |  4 +---
 lib/Kconfig.debug          | 12 ++++++++++++
 8 files changed, 32 insertions(+), 14 deletions(-)

-- 
1.9.3

             reply	other threads:[~2014-09-12 13:19 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-12 13:16 Aaron Tomlin [this message]
2014-09-12 13:16 ` [PATCH v4 1/3] init/main.c: Give init_task a canary Aaron Tomlin
2014-09-18 20:27   ` Oleg Nesterov
2014-09-12 13:16 ` [PATCH v4 2/3] sched: Add helper for task stack page overrun checking Aaron Tomlin
2014-09-12 13:16 ` [PATCH v4 3/3] sched: BUG when stack end location is over written 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=1410527779-8133-1-git-send-email-atomlin@redhat.com \
    --to=atomlin@redhat$(echo .)com \
    --cc=akpm@google$(echo .)com \
    --cc=akpm@linux-foundation$(echo .)org \
    --cc=aneesh.kumar@linux$(echo .)vnet.ibm.com \
    --cc=bmr@redhat$(echo .)com \
    --cc=dzickus@redhat$(echo .)com \
    --cc=hannes@cmpxchg$(echo .)org \
    --cc=jcastillo@redhat$(echo .)com \
    --cc=jgh@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=peterz@infradead$(echo .)org \
    --cc=prarit@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