linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Randy Dunlap <rdunlap@xenotime.net>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, yrl.pp-manager.tt@hitachi.com
Subject: Re: [RFC PATCH 3/5] x86: add a sysctl parameter to panic on stack overflow
Date: Thu, 10 Nov 2011 14:55:38 -0500	[thread overview]
Message-ID: <20111110195538.GB22646@phenom.dumpdata.com> (raw)
In-Reply-To: <20111107055301.7928.91628.stgit@ltc219.sdl.hitachi.co.jp>

On Mon, Nov 07, 2011 at 02:53:01PM +0900, Mitsuo Hayasaka wrote:
> This patch adds kernel.panic_on_stackoverflow sysctl parameter,
> which can cause a panic when detecting the stack overflow.

Why would we want to panic?
> 
> Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
> Cc: Randy Dunlap <rdunlap@xenotime.net>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> ---
> 
>  Documentation/sysctl/kernel.txt |   13 +++++++++++++
>  arch/x86/kernel/irq_64.c        |    2 ++
>  include/linux/kernel.h          |    1 +
>  include/linux/sysctl.h          |    1 +
>  kernel/sysctl.c                 |    9 +++++++++
>  kernel/sysctl_binary.c          |    1 +
>  6 files changed, 27 insertions(+), 0 deletions(-)
> 
> diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt
> index 704e474..eb8d263 100644
> --- a/Documentation/sysctl/kernel.txt
> +++ b/Documentation/sysctl/kernel.txt
> @@ -48,6 +48,7 @@ show up in /proc/sys/kernel:
>  - panic
>  - panic_on_oops
>  - panic_on_unrecovered_nmi
> +- panic_on_stackoverflow
>  - pid_max
>  - powersave-nap               [ PPC only ]
>  - printk
> @@ -385,6 +386,18 @@ Controls the kernel's behaviour when an oops or BUG is encountered.
>  
>  ==============================================================
>  
> +panic_on_stackoverflow:
> +
> +Controls the kernel's behaviour when detecting stack overflow.
> +This file shows up if CONFIG_DEBUG_STACKOVERFLOW is enabled.
> +
> +0: try to continue operation.
> +
> +1: panic immediately.
> +
> +==============================================================
> +
> +
>  pid_max:
>  
>  PID allocation wrap value.  When the kernel's next PID value
> diff --git a/arch/x86/kernel/irq_64.c b/arch/x86/kernel/irq_64.c
> index 530cfd0..d720813 100644
> --- a/arch/x86/kernel/irq_64.c
> +++ b/arch/x86/kernel/irq_64.c
> @@ -20,6 +20,8 @@
>  #include <asm/idle.h>
>  #include <asm/apic.h>
>  
> +int sysctl_panic_on_stackoverflow;

__read_mostly

> +
>  DEFINE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat);
>  EXPORT_PER_CPU_SYMBOL(irq_stat);
>  
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 8eefcf7..19b3595 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -339,6 +339,7 @@ extern int panic_timeout;
>  extern int panic_on_oops;
>  extern int panic_on_unrecovered_nmi;
>  extern int panic_on_io_nmi;
> +extern int sysctl_panic_on_stackoverflow;
>  extern const char *print_tainted(void);
>  extern void add_taint(unsigned flag);
>  extern int test_taint(unsigned flag);
> diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
> index 9a1ec10..4b9dc3d 100644
> --- a/include/linux/sysctl.h
> +++ b/include/linux/sysctl.h
> @@ -153,6 +153,7 @@ enum
>  	KERN_MAX_LOCK_DEPTH=74, /* int: rtmutex's maximum lock depth */
>  	KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */
>  	KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
> +	KERN_PANIC_ON_STACKOVERFLOW = 77, /* int: panic on stack overflow */
>  };
>  
>  
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index 11d65b5..08a18f9 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -792,6 +792,15 @@ static struct ctl_table kern_table[] = {
>  		.mode		= 0644,
>  		.proc_handler	= proc_dointvec,
>  	},
> +#if defined(CONFIG_DEBUG_STACKOVERFLOW)
> +	{
> +		.procname	= "panic_on_stackoverflow",
> +		.data		= &sysctl_panic_on_stackoverflow,
> +		.maxlen		= sizeof(int),
> +		.mode		= 0644,
> +		.proc_handler	= proc_dointvec,
> +	},
> +#endif
>  	{
>  		.procname	= "bootloader_type",
>  		.data		= &bootloader_type,
> diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c
> index 6318b51..24fc654 100644
> --- a/kernel/sysctl_binary.c
> +++ b/kernel/sysctl_binary.c
> @@ -137,6 +137,7 @@ static const struct bin_table bin_kern_table[] = {
>  	{ CTL_INT,	KERN_COMPAT_LOG,		"compat-log" },
>  	{ CTL_INT,	KERN_MAX_LOCK_DEPTH,		"max_lock_depth" },
>  	{ CTL_INT,	KERN_PANIC_ON_NMI,		"panic_on_unrecovered_nmi" },
> +	{ CTL_INT,	KERN_PANIC_ON_STACKOVERFLOW,	"panic_on_stackoverflow" },

This shouldn't be wrapped in the #ifdef?

>  	{}
>  };
>  
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

  reply	other threads:[~2011-11-10 19:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-07  5:51 [RFC PATCH 0/5] x86: check stack overflows more reliably Mitsuo Hayasaka
2011-11-07  5:52 ` [RFC PATCH 1/5] x86: add user_mode_vm check in stack_overflow_check Mitsuo Hayasaka
2011-11-10 19:52   ` Konrad Rzeszutek Wilk
2011-11-15  5:47     ` HAYASAKA Mitsuo
2011-11-07  5:52 ` [RFC PATCH 2/5] x86: check stack overflow in detail Mitsuo Hayasaka
2011-11-07  5:53 ` [RFC PATCH 3/5] x86: add a sysctl parameter to panic on stack overflow Mitsuo Hayasaka
2011-11-10 19:55   ` Konrad Rzeszutek Wilk [this message]
2011-11-15  5:51     ` HAYASAKA Mitsuo
2011-11-17  7:11     ` HAYASAKA Mitsuo
2011-11-17 16:00       ` Konrad Rzeszutek Wilk
2011-11-17 16:06         ` H. Peter Anvin
2011-11-07  5:53 ` [RFC PATCH 4/5] x86: panic on detection of " Mitsuo Hayasaka
2011-11-10 19:59   ` Konrad Rzeszutek Wilk
2011-11-15  5:53     ` HAYASAKA Mitsuo
2011-11-07  5:53 ` [RFC PATCH 5/5] x86: change range of stack overflow checking Mitsuo Hayasaka
2011-11-07  7:00 ` [RFC PATCH 0/5] x86: check stack overflows more reliably Pekka Enberg
2011-11-08  7:34   ` HAYASAKA Mitsuo
2011-11-17 16:59     ` Jason Baron
2011-11-23  8:55       ` HAYASAKA Mitsuo

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=20111110195538.GB22646@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=hpa@zytor.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mitsuo.hayasaka.hu@hitachi.com \
    --cc=rdunlap@xenotime.net \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yrl.pp-manager.tt@hitachi.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).