All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phil Staub <phils@windriver.com>
To: Adam Jiang <jiang.adam@gmail.com>
Cc: linux-mips@linux-mips.org
Subject: Re: How to detect STACKOVEFLOW on mips
Date: Wed, 30 Jun 2010 07:27:10 -0700	[thread overview]
Message-ID: <4C2B543E.2010309@windriver.com> (raw)
In-Reply-To: <AANLkTimL7YMyb2ahmTgl8dqV_DNfsROjDhLEDm4jyVWE@mail.gmail.com>

On 06/29/2010 10:59 PM, Adam Jiang wrote:
> Hello, list.
>
> I'm having a problem with kernel mode stack on my box. It seems that
> STACKOVERFLOW happened to Linux kernel. However, I can't prove it
> because the lack of any detection in __do_IRQ() function just like on
> the other architectures. If you know something about, please help me
> on following two questions.
> - Is there any possible to do this on MIPS?

The mechanisms I know about for detecting stack overflow include:

1. Use of the MMU - stack ends at a page boundary, adjacent page is
either unmapped or mapped read-only and causes an exception if violated.

2. Hooks inserted into toolchain to cause any stack decrement to be
first tested against a limit.

3. Fill entire stack with a recognizable pattern before first
use. After suspected stack overflow, check to see if the pattern has
been disturbed in the area of the stack limit.

(Disclaimer: I've used all of these in some form on other OSes, but
not on Linux. Someone else may have a more directly relevant answer.)

> - or, more simple question, how could I get the address $sp pointed by
> asm() notation in C?

How about something like:

{
	long x;
	...
	asm("move %0,$29":"=g"(x));
	...
}

Phil

>
> Any suggestion from you will be appreciated.
>
> Best regards,
> /Adam
>
>


-- 
Phil Staub, Senior Member of Technical Staff, Wind River
Direct: 702.290.0470 Fax: 702.982.0085

  reply	other threads:[~2010-06-30 14:27 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-30  5:59 How to detect STACKOVEFLOW on mips Adam Jiang
2010-06-30 14:27 ` Phil Staub [this message]
2010-06-30 14:57   ` Ralf Baechle
2010-06-30 18:16   ` David VomLehn
2010-06-30 22:13     ` Maciej W. Rozycki
2010-06-30 14:50 ` Ralf Baechle
2010-06-30 21:57   ` Matt Fleming
2010-07-05 10:56     ` Ralf Baechle
2010-07-05 13:09       ` Matt Fleming
2010-07-05 13:35         ` Ralf Baechle
2010-07-05 14:08           ` Matt Fleming

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=4C2B543E.2010309@windriver.com \
    --to=phils@windriver.com \
    --cc=jiang.adam@gmail.com \
    --cc=linux-mips@linux-mips.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.