diff options
author | Himbeer <himbeer@disroot.org> | 2024-07-31 22:06:39 +0200 |
---|---|---|
committer | Himbeer <himbeer@disroot.org> | 2024-07-31 22:07:25 +0200 |
commit | d1099518ff4723d8507726b2332a7ecacf6cd7b6 (patch) | |
tree | 6034a7f2412642d13234e8cea1322b81f8127605 | |
parent | ce80670795a8c3dc8840a4b034a25b4aa07b4608 (diff) |
Revert "syscall: Provide userinit access (permissions controlled via paging in the future)"
This reverts commit 270c8f02867bf959fa86a44fcb76bb0680571695.
-rw-r--r-- | linker.ld | 7 | ||||
-rw-r--r-- | src/lib/paging.zig | 3 | ||||
-rw-r--r-- | src/lib/process.zig | 4 | ||||
-rw-r--r-- | src/lib/syscall.zig | 9 | ||||
-rw-r--r-- | src/lib/userinit.zig | 2 |
5 files changed, 1 insertions, 24 deletions
@@ -38,13 +38,6 @@ SECTIONS { PROVIDE(_rodata_end = .); } > ram AT > ram : lo_r - .userinit : ALIGN(4K) { - PROVIDE(_userinit_start = .); - - *(.userinit .userinit.*) - - PROVIDE(_userinit_end = .); - } > ram AT > ram : lo_r .data : ALIGN(4K) { PROVIDE(_data_start = .); diff --git a/src/lib/paging.zig b/src/lib/paging.zig index d69a17c..dd1feeb 100644 --- a/src/lib/paging.zig +++ b/src/lib/paging.zig @@ -14,8 +14,6 @@ pub const text_start = @extern(*anyopaque, .{ .name = "_text_start" }); pub const text_end = @extern(*anyopaque, .{ .name = "_text_end" }); pub const rodata_start = @extern(*anyopaque, .{ .name = "_rodata_start" }); pub const rodata_end = @extern(*anyopaque, .{ .name = "_rodata_end" }); -pub const userinit_start = @extern(*anyopaque, .{ .name = "_userinit_start" }); -pub const userinit_end = @extern(*anyopaque, .{ .name = "_userinit_end" }); pub const data_start = @extern(*anyopaque, .{ .name = "_data_start" }); pub const data_end = @extern(*anyopaque, .{ .name = "_data_end" }); pub const bss_start = @extern(*anyopaque, .{ .name = "_bss_start" }); @@ -460,7 +458,6 @@ pub const Table = struct { pub fn mapKernel(root: *Table) !void { try root.identityMapRange(@intFromPtr(text_start), @intFromPtr(text_end), EntryFlags.readExec); try root.identityMapRange(@intFromPtr(rodata_start), @intFromPtr(rodata_end), EntryFlags.readOnly); - try root.identityMapRange(@intFromPtr(userinit_start), @intFromPtr(userinit_end), EntryFlags.readOnly); try root.identityMapRange(@intFromPtr(data_start), @intFromPtr(data_end), EntryFlags.readWrite); try root.identityMapRange(@intFromPtr(bss_start), @intFromPtr(bss_end), EntryFlags.readWrite); try root.identityMapRange(@intFromPtr(stack_start), @intFromPtr(stack_end), EntryFlags.readWrite); diff --git a/src/lib/process.zig b/src/lib/process.zig index 99a89bd..c8e6d5e 100644 --- a/src/lib/process.zig +++ b/src/lib/process.zig @@ -235,10 +235,6 @@ pub fn create(allocator: Allocator, elf_buf: []align(@alignOf(elf.Elf64_Ehdr)) c try procmem.mapKernel(); - const userinit_start = @intFromPtr(paging.userinit_start); - const userinit_end = @intFromPtr(paging.userinit_end); - try procmem.identityMapRange(userinit_start, userinit_end, paging.EntryFlags.userReadOnly); - const parse_source = std.io.fixedBufferStream(elf_buf); var it = hdr.program_header_iterator(parse_source); diff --git a/src/lib/syscall.zig b/src/lib/syscall.zig index ca8e2c8..5ca10cf 100644 --- a/src/lib/syscall.zig +++ b/src/lib/syscall.zig @@ -11,7 +11,6 @@ const mem = @import("mem.zig"); const paging = @import("paging.zig"); const process = @import("process.zig"); const riscv = @import("riscv.zig"); -const userinit = @import("userinit.zig"); pub const Error = error{ ZeroAddressSupplied, @@ -30,7 +29,6 @@ pub fn handler(proc: *process.Info, trap_frame: *TrapFrame) !void { 100004 => trap_frame.setReturnValue(terminate(proc, trap_frame)), 100005 => trap_frame.setReturnValue(processId(proc)), 100006 => trap_frame.setReturnValue(threadId(proc)), - 100007 => trap_frame.setReturnValue(rawUserinit(trap_frame)), 100008 => trap_frame.setReturnValue(devicesByKind(trap_frame)), 100009 => trap_frame.setReturnValue(join(proc, trap_frame)), 100010 => trap_frame.setReturnValue(leave(proc, trap_frame)), @@ -148,13 +146,6 @@ fn threadId(proc: *const process.Info) usize { return proc.thread_id; } -// rawUserinit(ptr: *[*]const u8) usize -fn rawUserinit(trap_frame: *const TrapFrame) usize { - const ptr: *[*]const u8 = @ptrFromInt(trap_frame.general_purpose_registers[10]); - ptr.* = userinit.tarball; - return userinit.tarball.len; -} - // devicesByKind(kind: hwinfo.DevKind, devices: [*]hwinfo.Dev, len: usize) !usize fn devicesByKind(trap_frame: *const TrapFrame) !usize { const kind: hwinfo.DevKind = @enumFromInt(trap_frame.general_purpose_registers[10]); diff --git a/src/lib/userinit.zig b/src/lib/userinit.zig index 7eb0eea..8c77cdd 100644 --- a/src/lib/userinit.zig +++ b/src/lib/userinit.zig @@ -2,4 +2,4 @@ // // SPDX-License-Identifier: AGPL-3.0-or-later -pub export var tarball linksection(".userinit") = @embedFile("cfg/userinit.tar"); +pub const tarball = @embedFile("cfg/userinit.tar"); |