On Wed, Aug 25, 2004 at 10:18:04AM +0800, Macleod wrote: > After trace system, found this problem is from scall_o32.S > line 161 in 2.4.26 kernel. > > bltz t0, bad_stack # -> sp is bad > > If stack address larger than 0x7fffffff, branch will take, > and that's why I got "-4142" errno on select system call > even parameters in stack are correct. I tried to remove this > line and seems "select" works fine. Oh yes, I forgot on this one :-) It's intentional; making all syscalls work from kernel mode would add some overhead. Possible solutions: - move to 64-bit kernels; the 64-bit syscall interface happens to support upto 8 arguments for syscalls from kernel mode. - move your module or parts of it to userspace. Something that's using select suspiciously looks like something that shouldn't be in the kernel. - use the proper kernel APIs. Kernel programming isn't user space programming. Ralf