summaryrefslogtreecommitdiffstats
path: root/sys/syscall_untyped.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-09-29 12:53:57 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-09-29 12:53:57 -0400
commitc2788174198632e0c8bdbfa7762081f595460bdf (patch)
tree373b1f5c7cfe0e87f29c1c8956579c58b4f22bf9 /sys/syscall_untyped.c
parent8de23ca36173cfdb3c609074496115ebd9045887 (diff)
downloadjove-kernel-c2788174198632e0c8bdbfa7762081f595460bdf.tar.gz
jove-kernel-c2788174198632e0c8bdbfa7762081f595460bdf.tar.bz2
jove-kernel-c2788174198632e0c8bdbfa7762081f595460bdf.zip
move process code into proc. add panic folder
Diffstat (limited to 'sys/syscall_untyped.c')
-rw-r--r--sys/syscall_untyped.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/sys/syscall_untyped.c b/sys/syscall_untyped.c
index a117387..8fe592d 100644
--- a/sys/syscall_untyped.c
+++ b/sys/syscall_untyped.c
@@ -19,10 +19,13 @@ s_syscall_untyped_split(
bytes_needed += payload->dest_pathlen * 2;
CHECK_TOOSMALL(bytes_needed, payload_bytes, "Message is too small for destination path!");
- jove_perm_obj_t dest = link_try_traverse(
- lockstack_push(lockstack,
- objdir_trygetobj(objdir, payload->dest_path, payload->dest_pathlen)),
- lockstack);
+ jove_perm_obj_t dest = link_try_traverse_objdir(
+ objdir, lockstack, payload->dest_pathlen, payload->dest_path);
+ if(errno) {
+ klogf("Unable to get destination object %P: %s\n",
+ payload->dest_path, payload->dest_pathlen, errstr(errno));
+ return errno;
+ }
CHECK_OBJTYPE(dest.obj, JOVE_OBJ_NONE, "Destination path is occupied!");
@@ -49,10 +52,14 @@ s_syscall_untyped_merge(
bytes_needed += payload->pathlen * 2;
CHECK_TOOSMALL(bytes_needed, payload_bytes, "Message is too small for second path!");
- jove_perm_obj_t untyped = link_try_traverse(
- lockstack_push(lockstack,
- objdir_getobj(objdir, payload->path, payload->pathlen)),
- lockstack);
+ jove_perm_obj_t untyped = link_try_traverse_objdir(
+ objdir, lockstack, payload->pathlen, payload->path);
+ if(errno) {
+ klogf("Unable to retrieve untyped object %P : %s\n",
+ payload->path, payload->pathlen, errstr(errno));
+ return errno;
+ }
+
CHECK_OBJTYPE(untyped.obj, JOVE_OBJ_UNTYPED, "Second object is not an untyped!");
CHECK_OBJPERM(untyped, SYSCALL_PERM_UNTYPED_MERGE, "Second untyped does not have permission to merge!");