From d842b1440dc2adc84387b460d4ed536042dd7322 Mon Sep 17 00:00:00 2001 From: Marcus Shawcroft Date: Sun, 12 May 2013 18:09:33 +0100 Subject: [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. --- ports/ChangeLog.aarch64 | 8 ++++++++ ports/sysdeps/unix/sysv/linux/aarch64/clone.S | 3 ++- ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S | 4 +--- 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'ports') diff --git a/ports/ChangeLog.aarch64 b/ports/ChangeLog.aarch64 index f01388f384..a611ac22cf 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 999ecf21ce..b359e6e8a3 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 b089bb55c5..2e08cf708c 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) -- cgit v1.2.3