Re: 4k stacks

From: linux-os (Dick Johnson)
Date: Wed Dec 28 2005 - 08:14:04 EST



On Sat, 24 Dec 2005, Denis Vlasenko wrote:

> On Thursday 22 December 2005 23:53, linux-os (Dick Johnson) wrote:
>>
>> Yesterday I sent a patch to add stack-poison so the stack usage
>> could be observed.
>>
>> Today I wrote a small program and tested the stack usage. Both
>> the program and the patch is attached. The result is:
>>
>> Offset : 2ec8f000 Available Stack bytes = 3104
>> Offset : 2ecb1000 Available Stack bytes = 3104
>> Offset : 2ee5f000 Available Stack bytes = 20
>> Offset : 2f36d000 Available Stack bytes = 3104
>> Offset : 2fd09000 Available Stack bytes = 3012
>> Offset : 2fd0b000 Available Stack bytes = 3312
>> Offset : 2fd0f000 Available Stack bytes = 2132
>> Offset : 2fd2f000 Available Stack bytes = 2744
>> Offset : 2fd57000 Available Stack bytes = 2900
>> Offset : 2fdd5000 Available Stack bytes = 1400
>> Offset : 2fe35000 Available Stack bytes = 2832
>> Offset : 2ff3f000 Available Stack bytes = 776
>> Offset : 2ff45000 Available Stack bytes = 3188
>>
>> This, after compiling the kernel. I did not have 4k stacks
>> enabled for this test so any crashing of the stack beyond
>> one page will not hurt the system. This was on linux-2.6.13.4.
>>
>> Anyway, I tried to enable 4k stacks and the machine would
>> not boot past trying to install the first module. It just
>> stopped with the interrupts disabled. So, I am now rebuilding
>> the kernel back as I write this. That's why I am using 2.6.13
>> at the moment.
>>
>> Anyway, getting down to 20 bytes of stack-space available
>> seems to be pretty scary.
>
> + movl %esp, %edi
> + movl %edi, %ecx
> + andl $~0x1000, %edi
> + subl %edi, %ecx
>
> ecx will be equal to ?

Whatever the stack was minus that value ANDed with NOT 0x1000,
i.e. 0x1000 minus the stack already in use. The code assumes
that the stack starts and ends on a 0x1000 (page) boundary.
If that's not true, then all bets are off.

>
> + movb $'Q', %al
> + rep stosb
> --
> vda
>

Cheers,
Dick Johnson
Penguin : Linux version 2.6.13.4 on an i686 machine (5591.11 BogoMips).
Warning : 98.36% of all statistics are fiction.
.

****************************************************************
The information transmitted in this message is confidential and may be privileged. Any review, retransmission, dissemination, or other use of this information by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify Analogic Corporation immediately - by replying to this message or by sending an email to DeliveryErrors@xxxxxxxxxxxx - and destroy all copies of this information, including any attachments, without reading or disclosing them.

Thank you.
-
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/