summaryrefslogtreecommitdiffstats
path: root/sys/syscall_region.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/syscall_region.c')
-rw-r--r--sys/syscall_region.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/syscall_region.c b/sys/syscall_region.c
index 959d615..dc81634 100644
--- a/sys/syscall_region.c
+++ b/sys/syscall_region.c
@@ -7,7 +7,7 @@
static int
s_syscall_region_alloc(jove_owned_obj_t *region_obj,
- jove_owned_obj_t *objdir_obj,
+ jove_obj_t *objdir_obj,
lockstack_t *lockstack,
size_t bytes_left,
void *payload_data)
@@ -20,8 +20,9 @@ s_syscall_region_alloc(jove_owned_obj_t *region_obj,
CHECK_TOOSMALL(bytes_needed, bytes_left, "Message too small for subject path");
- jove_perm_obj_t subject = link_try_traverse_objdir(
- objdir_obj, lockstack, payload->dest_pathlen, payload->dest_path);
+ jove_perm_obj_t subject = link_traverse_objdir(objdir_obj, payload->dest_pathlen, payload->dest_path);
+ lockstack_push(lockstack, subject.obj);
+
CHECK_OBJEXISTS(subject.obj, "Destination path is bad.");
CHECK_OBJPERM(subject, SYSCALL_PERM_REGION_ALLOC_TGT, "Destination path does not have correct permissions.");
CHECK_OBJTYPE(subject.obj, JOVE_OBJ_NONE, "Destination object is not JOVE_OBJ_NONE");