From 81f9e758dc40ba6397d59da10ee998d16274eb5c Mon Sep 17 00:00:00 2001 From: Matheus Date: Sat, 6 Dec 2025 18:48:48 -0300 Subject: [PATCH] kernel: misc fixes --- kernel-src/include/kernel/abi.h | 4 +++- kernel-src/include/x86-64/arch/idt.h | 2 +- kernel-src/mm/vmm.c | 1 + kernel-src/sys/signal.c | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/kernel-src/include/kernel/abi.h b/kernel-src/include/kernel/abi.h index 290442de..4733b7bb 100644 --- a/kernel-src/include/kernel/abi.h +++ b/kernel-src/include/kernel/abi.h @@ -55,12 +55,14 @@ typedef struct { #define DT_SOCK 12 #define DT_WHT 14 +#define NAME_MAX 255 + typedef struct { ino_t d_ino; off_t d_off; unsigned short d_reclen; unsigned char d_type; - char d_name[1024]; + char d_name[NAME_MAX+1]; } dent_t; #define TYPE_FIFO 1 diff --git a/kernel-src/include/x86-64/arch/idt.h b/kernel-src/include/x86-64/arch/idt.h index c8783540..11e084dd 100644 --- a/kernel-src/include/x86-64/arch/idt.h +++ b/kernel-src/include/x86-64/arch/idt.h @@ -1,5 +1,5 @@ #ifndef _IDT_H -#define _IDT_h +#define _IDT_H void arch_idt_reload(); void arch_idt_setup(); diff --git a/kernel-src/mm/vmm.c b/kernel-src/mm/vmm.c index 4e266af0..e488dbe1 100644 --- a/kernel-src/mm/vmm.c +++ b/kernel-src/mm/vmm.c @@ -906,6 +906,7 @@ vmmcontext_t *vmm_fork(vmmcontext_t *oldcontext) { range = range->next; } + // TODO do only userspace invalidation as to not send ipi to all cores arch_mmu_invalidate_range(NULL, 0); MUTEX_RELEASE(&oldcontext->space.lock); diff --git a/kernel-src/sys/signal.c b/kernel-src/sys/signal.c index e0475993..a161bf58 100644 --- a/kernel-src/sys/signal.c +++ b/kernel-src/sys/signal.c @@ -579,7 +579,7 @@ bool signal_check(struct thread_t *thread, context_t *context, bool syscall, uin memset(&sigframe->siginfo, 0, sizeof(siginfo_t)); if (signal == SIGSEGV) - sigframe->siginfo.__si_fields.__sigfault.si_addr = CTX_TRAP_ADDR(context); + sigframe->siginfo.__si_fields.__sigfault.si_addr = (void *)CTX_TRAP_ADDR(context); if (usercopy_touser(stack, sigframe, ARCH_SIGFRAME_SIZE)) { printf("signal: bad user stack %p (altstack %p) handling signal %d trapno %lu\n", stack, altstack, signal, sigframe->mcontext.gregs[MCONTEXT_REG_TRAPNO]);