aboutsummaryrefslogtreecommitdiff
path: root/common/uapi/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/uapi/ipc.c')
-rw-r--r--common/uapi/ipc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/common/uapi/ipc.c b/common/uapi/ipc.c
index d71f53c..1596169 100644
--- a/common/uapi/ipc.c
+++ b/common/uapi/ipc.c
@@ -155,6 +155,11 @@ static struct stack_diff enter_rpc(struct tcb *t, struct sys_ret a)
*/
static void leave_rpc(struct tcb *t, struct sys_ret a)
{
+ /* if we're not in an rpc, the user messed something up. */
+ /** @todo choose or come up with more fitting error value. */
+ if (!is_rpc(t))
+ return_args(t, SYS_RET1(ERR_MISC));
+
vm_t rpc_stack = t->rpc_stack + BASE_PAGE_SIZE;
struct call_ctx *ctx = (struct call_ctx *)(rpc_stack) - 1;
t->regs = ctx->regs;