syscalls with 6 arguments broken on x86 32bit

Hi, I originally reported this for uClibc but I think it might be interesting for uclibc-ng as well (or even more since original uClibc gets more and more stale): See https://bugs.busybox.net/show_bug.cgi?id=8611 Maybe you also find a better approach as the one I implemented. - ron -- Ronald Wahl - ronald.wahl@raritan.com - Phone +49 375271349-0 Fax -99 Raritan Deutschland GmbH, Kornmarkt 7, 08056 Zwickau, Germany USt-IdNr. DE813094160, Steuer-Nr. 227/117/01749 Amtsgericht Chemnitz HRB 23605 Geschäftsführung: Abdulrasul Damji, Ralf Ploenes

Hi Ronald, Ronald Wahl wrote,
Hi,
I originally reported this for uClibc but I think it might be interesting for uclibc-ng as well (or even more since original uClibc gets more and more stale):
See https://bugs.busybox.net/show_bug.cgi?id=8611
Maybe you also find a better approach as the one I implemented.
Thanks for the report. I will try the patch. Do you have some small test-case or a real life application failing, so I can test on my x86 machine? best regards Waldemar

Hello, On Mon, 25 Jan 2016 21:16:49 +0100, Waldemar Brodkorb wrote:
I originally reported this for uClibc but I think it might be interesting for uclibc-ng as well (or even more since original uClibc gets more and more stale):
See https://bugs.busybox.net/show_bug.cgi?id=8611
Maybe you also find a better approach as the one I implemented.
Thanks for the report. I will try the patch. Do you have some small test-case or a real life application failing, so I can test on my x86 machine?
If the bug is really that syscalls with 6 arguments are broken, then you can try with any of those system calls: fs/compat.c:COMPAT_SYSCALL_DEFINE6(pselect6, int, n, compat_ulong_t __user *, inp, fs/eventpoll.c:SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events, fs/select.c:SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp, fs/splice.c:SYSCALL_DEFINE6(splice, int, fd_in, loff_t __user *, off_in, ipc/syscall.c:SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, kernel/fork.c:SYSCALL_DEFINE6(clone, unsigned long, clone_flags, unsigned long, newsp, kernel/futex.c:SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, etc. Best regards, Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com

On 25.01.2016 21:16, Waldemar Brodkorb wrote:
Ronald Wahl wrote,
I originally reported this for uClibc but I think it might be interesting for uclibc-ng as well (or even more since original uClibc gets more and more stale):
See https://bugs.busybox.net/show_bug.cgi?id=8611
Maybe you also find a better approach as the one I implemented.
Thanks for the report. I will try the patch. Do you have some small test-case or a real life application failing, so I can test on my x86 machine?
Just hacked something together but it's incomplete and not for automatic testing. I have attached it to the uClibc bug report including a short comment. - ron -- Ronald Wahl - ronald.wahl@raritan.com - Phone +49 375271349-0 Fax -99 Raritan Deutschland GmbH, Kornmarkt 7, 08056 Zwickau, Germany USt-IdNr. DE813094160, Steuer-Nr. 227/117/01749 Amtsgericht Chemnitz HRB 23605 Geschäftsführung: Abdulrasul Damji, Ralf Ploenes
participants (3)
-
Ronald Wahl
-
Thomas Petazzoni
-
Waldemar Brodkorb