aboutsummaryrefslogtreecommitdiff
path: root/sys/arm64/linux/linux_sysvec.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arm64/linux/linux_sysvec.c')
-rw-r--r--sys/arm64/linux/linux_sysvec.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/arm64/linux/linux_sysvec.c b/sys/arm64/linux/linux_sysvec.c
index 5b33b63fba92..8619535c57e9 100644
--- a/sys/arm64/linux/linux_sysvec.c
+++ b/sys/arm64/linux/linux_sysvec.c
@@ -141,6 +141,13 @@ linux_set_syscall_retval(struct thread *td, int error)
td->td_retval[1] = td->td_frame->tf_x[1];
cpu_set_syscall_retval(td, error);
+
+ if (__predict_false(error != 0)) {
+ if (error != ERESTART && error != EJUSTRETURN) {
+ td->td_frame->tf_x[0] =
+ SV_ABI_ERRNO(td->td_proc, error);
+ }
+ }
}
static int