Ok, this is due to the silly library stub seemingly thinking that a large
positive value is in fact a error condition due to sign problems.
That doesn't mean that the kernel is broken: there are other system calls
that return large numbers that might be thought of as negative even though
they aren't errors (just an example: mmap() can return addresses with the
high bit set, and always could).
Instead of testing the sign bit, the low-level system call should
probably do something like this:
... do system call, return in %eax ...
movl %eax,%edx
addl $4095,%edx
jc error error if return was -1 .. -4095
Is somebody willing to fix up the module loader?
Linus