From: Marcus Shawcroft Date: Sun, 12 May 2013 17:09:33 +0000 (+0100) Subject: [AArch64] Fix out of range branch from ioctl() and clone() X-Git-Tag: glibc-2.18~288 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d842b1440dc2adc84387b460d4ed536042dd7322;p=thirdparty%2Fglibc.git [AArch64] Fix out of range branch from ioctl() and clone() 2013-05-12 Marcus Shawcroft * sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Do not call sycall_error directly with a confitional branch. * sysdeps/unix/sysv/linux/aarch64/ioctl.S (__ioctl): Do not call sycall_error directly with a confitional branch. --- diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64 index f01388f3844..a611ac22cf6 100644 --- a/ports/ChangeLog.aarch64 +++ b/ports/ChangeLog.aarch64 @@ -1,3 +1,11 @@ +2013-05-12 Marcus Shawcroft + + * sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): + Do not call sycall_error directly with a confitional branch. + + * sysdeps/unix/sysv/linux/aarch64/ioctl.S (__ioctl): + Do not call sycall_error directly with a confitional branch. + 2013-03-19 Andreas Schwab * sysdeps/unix/sysv/linux/aarch64/configure.in: Set diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S index 999ecf21ce4..b359e6e8a32 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S +++ b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S @@ -65,9 +65,10 @@ ENTRY(__clone) svc 0x0 cmp x0, #0 beq 2f - blt C_SYMBOL_NAME(__syscall_error) + blt 3f RET 1: mov x0, #-EINVAL +3: b syscall_error 2: diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S index b089bb55c5b..2e08cf708cf 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S +++ b/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S @@ -24,9 +24,7 @@ ENTRY(__ioctl) sxtw x0, w0 svc #0x0 cmn x0, #0x1, lsl #12 - b.hi C_SYMBOL_NAME(__syscall_error) - ret - + PSEUDO_RET PSEUDO_END (__ioctl) weak_alias (__ioctl, ioctl)