Re: BUG-lockdep and freeze (was: Arrr! Linux 2.6.18)

From: Andi Kleen
Date: Sat Sep 30 2006 - 18:25:46 EST


On Sunday 01 October 2006 00:10, Ingo Molnar wrote:
>
> * Andi Kleen <ak@xxxxxxx> wrote:
>
> > > Why not just add the simple validation?
> > >
> > > A kernel stack is one page in size. If you move to another page, you
> > > terminate. It's that simple.
> >
> > No, it's not. On x86-64 it can be three or more stacks nested in
> > complicated ways (process stack, interrupt stack, exception stack) The
> > exception stack can happen multiple times.
>
> it could be cleanly handled though: in June i suggested to use the
> next-stack pointers at the end of exception pages.

Yes, but then you couldn't validate it like Linus asked for.
Also we've had cases where this information was corrupted

(e.g. when RSP starts somewhere completely bogus)

> The only current
> complexity here is that the 'linking' of exception pages is non-uniform,
> it depends on the type of page. That's largely why that complex
> statemachine had to be implemented, to match up the type of the page.
> Since those pointers are put there by us, there's no real reason why we
> couldnt standardize them.

Also how would you know in what kind of stack you are to select the right
check mask (since exception stacks are larger than 8K)? You would also need make
unvalidated assumptions again.

The unwinder already does stronger validation than any of this.

That particularly case here was a hole in the fallback logic that got
actually fixed before 2.6.18 (not it was a -rc3 or so)

-Andi

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