cvs commit: src/sys/sys proc.h

Sam Leffler sam at errno.com
Wed Jan 30 16:58:49 PST 2008


Alexander Motin wrote:
> Sam Leffler wrote:
>> Alexander Motin wrote:
>>> mav         2008-01-30 21:24:10 UTC
>>>
>>>   FreeBSD src repository
>>>
>>>   Modified files:
>>>     sys/sys              proc.h   Log:
>>>   Implement GET_STACK_USAGE() macro to get the current kernel thread 
>>> stack usage.
>>>   This implemntation made for growing down stack organization like 
>>> i386/amd64
>>>   platforms have, but prefers different machine dependent version if 
>>> it is present.
>>
>> I think it is a mistake to fallback to a MD implementation; your MI 
>> implementation is broken on architectures that do not use the model 
>> you used so you any user of this will silently fail on such 
>> architectures.  I suggest you need to fix this before you use this 
>> macro in any MI code.
>
> This implementation covers the most of popular architectures. The only 
> architecture with different stack organization recalled in maillist 
> was ia64 which has two stacks with local variables part is still 
> growing down. As I have no work experience with architectures other 
> then i386/amd64 I will gladly accept any help with implementing this.
>
> This time I am going to use this as a hint for stack protection engine 
> in netgraph subsystem. In case of incorrect implementation there could 
> be only two consequences: or nothing will change from present state 
> for stack growing down, but differently (ia64). or protection become 
> paranoid but slow for stack growing up.
>
Your change guarantees code will silently break at some point in time 
(almost certainly long after anyone remembers this email exchange).  
Just because you don't have a system where this fails doesn't justify 
adding a hack like this.  I repeat, please fix it or remove it before 
anyone uses it.  My suggestion is you make this MD and on architectures 
where you haven't tested it you add a #error.

    Sam



More information about the cvs-all mailing list