Re: [PATCH v3 16/51] x86/32: put real return address on stack in entry code

From: H. Peter Anvin
Date: Mon Aug 15 2016 - 15:23:23 EST


On 08/15/16 11:25, Josh Poimboeuf wrote:
> On Mon, Aug 15, 2016 at 11:04:42AM -0700, H. Peter Anvin wrote:
>> On 08/15/16 08:09, Josh Poimboeuf wrote:
>>> On Sun, Aug 14, 2016 at 12:31:47AM -0700, Andy Lutomirski wrote:
>>>> On Fri, Aug 12, 2016 at 7:28 AM, Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote:
>>>>> This standardizes the stacks of idle tasks to be consistent with other
>>>>> tasks on 32-bit.
>>>>
>>>> It might be nice to stick a ud2 or 1: hlt; jmp 1b or similar
>>>> afterwards to make it clear that initial_code can't return.
>>>
>>> Yeah, I'll do something like that.
>>>
>>
>> "Standardizing the stack" how? A zero on the stack terminates the stack
>> trace.
>
> Instead of zero, user tasks have a real return address at that spot.
> This makes idle tasks consistent with that, so we have a well defined
> "end of stack". Also it makes the stack trace more useful since it
> shows what entry code was involved in calling into C.
>

So how is the stack terminated, and does things like kdb and kgdb need
modifications? Or is there now a stack termination above the struct
pt_regs?

-hpa