Re: times(2) sys call bug?
From: Paul Mackerras <hidden>
Date: 2008-11-21 09:03:06
Gabriel Paubert writes:
On Fri, Nov 21, 2008 at 10:52:14AM +1100, Paul Mackerras wrote:quoted
Joakim Tjernlund writes:quoted
This little hack changes the kernel sys call handling in an crude way and then it works. Apperently the kernel thinks is an error if the syscall returns a value between -_LAST_ERRNO and -1.Try this patch and let me if it fixes it. If it does I'll push it upstream.With your patch, you won't get EFAULT if you pass a bad address, but a constant, time independent value, unless I miss something.
I think you are missing something, namely that I put the call to force_successful_syscall_return() AFTER the return -EFAULT. You should get an EFAULT error if the address is bad, i.e. on return to userspace with cr0.SO = 1 and r3 = EFAULT (note, not -EFAULT). On a non-error return you should get cr0.SO = 0 and r3 containing the return value (even if it's -EFAULT). It's possible that glibc will stuff it up again after that but I hope not. Paul.