From 35296c8210ca8c1c02f9978dd54639f2d04a61f4 Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Wed, 24 Feb 2021 16:53:56 +0900 Subject: [PATCH] uti: fix syscall response is mis-consumed by __do_in_kernel_irq_syscall Refs: #1617 Change-Id: Iddd8ccd81d7f692f1f45ec888d31c2a87ec521ce --- executer/kernel/mcctrl/syscall.c | 3 ++- kernel/syscall.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/executer/kernel/mcctrl/syscall.c b/executer/kernel/mcctrl/syscall.c index 57eac652..111cbc49 100644 --- a/executer/kernel/mcctrl/syscall.c +++ b/executer/kernel/mcctrl/syscall.c @@ -366,6 +366,7 @@ retry_alloc: #define STATUS_IN_PROGRESS 0 #define STATUS_SYSCALL 4 +#define __NR_syscall_response 8001 req->valid = 0; if (__notify_syscall_requester(usrdata->os, packet, resp) < 0) { @@ -440,7 +441,7 @@ retry_alloc: req->valid = 0; /* check result */ - if (req->number != __NR_mmap) { + if (req->number != __NR_syscall_response) { printk("%s:unexpected response. %lx %lx\n", __FUNCTION__, req->number, req->args[0]); syscall_ret = -EIO; diff --git a/kernel/syscall.c b/kernel/syscall.c index 5e60aa5c..688ec32c 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -244,6 +244,7 @@ long do_syscall(struct syscall_request *req, int cpu) #define STATUS_COMPLETED 1 #define STATUS_PAGE_FAULT 3 #define STATUS_SYSCALL 4 +#define __NR_syscall_response 8001 while (smp_load_acquire(&res.status) != STATUS_COMPLETED) { while (smp_load_acquire(&res.status) == STATUS_IN_PROGRESS) { struct cpu_local_var *v; @@ -372,7 +373,7 @@ long do_syscall(struct syscall_request *req, int cpu) } /* send result */ - req2.number = __NR_mmap; + req2.number = __NR_syscall_response; req2.args[1] = syscall_ret; /* The current thread is the requester and only the waiting thread * may serve the request */