Hi all,
just a quick question. Is it the right mailing list to ask something related to
the kernel 2.6?
I found a strange implementation of the #define __access_ok in the specified
file.
I cannot think it is a bug and I like to know where I can post issue like this.
By the way, the problem is as follow
The implementation of this define is
#define __access_ok(addr,size) \
((addr) <= current->thread.fs.seg \
&& ((size) == 0 || (size) - 1 <= current->thread.fs.seg - (addr)))
Il looks like it checking if a given pointer is in the user address space
(stack) but,
as far as I know, on the ppc the stack is growing from the highest addresses to
the
lowest.
Therefore I would have expcted something like this
#define __access_ok(addr,size) \
((addr) >= current->thread.fs.seg \
&& ((size) == 0 || (size) - 1 <= (addr) - current->thread.fs.seg))
This my guess is "confirmed" by the following function in the same file
extern __inline__ int strnlen_user(const char __user *str, long len)
{
unsigned long top = current->thread.fs.seg;
if ((unsigned long)str > top)
return 0;
return __strnlen_user(str, len, top);
}
where the relationship address vs thread.fs.seg is the other way round.
Thanks for your help
Lapo
-------------------------------------------------
WebMail Tele2 http://www.tele2.it
-------------------------------------------------