Messages in this thread | | | Date | Mon, 21 Apr 2008 21:20:58 -0700 | From | Arjan van de Ven <> | Subject | Re: [PATCH] use canary at end of stack to indicate overruns at oops time |
| |
On Mon, 21 Apr 2008 22:44:39 -0500 Eric Sandeen <sandeen@redhat.com> wrote:
> Use a canary at the end of the stack to clearly indicate > at oops time whether the stack has ever overflowed. > > This is a very simple implementation with a couple of > drawbacks: > > 1) a thread may legitimately use exactly up to the last > word on the stack > > -- but the chances of doing this and then oopsing later seem slim > > 2) it's possible that the stack usage isn't dense enough > that the canary location could get skipped over > > -- but the worst that happens is that we don't flag the overrun > > With the code in place, an intentionally-bloated stack oops does: > > BUG: unable to handle kernel paging request at ffff8103f84cc680 > IP: [<ffffffff810253df>] update_curr+0x9a/0xa8 > PGD 8063 PUD 0 > Thread overran stack or stack corrupted > Oops: 0000 [1] SMP > CPU 0
I like this but I wonder if it's useful to do this for the irq stacks too;
either way
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
(I'll also add detection of your printk to the kerneloops.org website)
| |