On Sun, Jan 31 01:20, Kevin Wolf wrote: > ! kernel2: Der aktuelle Speicherkontext muss auch beim Unmappen immer > noch nicht zwingend der Kontext des aktuellen Prozesses sein > + kernel2: Panic wenn versucht wird, das Mapping einer Kernelpage in > einem inaktiven Kontext zu aendern > > Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx> > --- > src/kernel2/src/arch/i386/mm/mm_context.c | 12 +++++++++++- > src/kernel2/src/syscalls/rpc.c | 2 +- > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/src/kernel2/src/arch/i386/mm/mm_context.c b/src/kernel2/src/arch/i386/mm/mm_context.c > index 20edcfa..07a5be8 100644 > --- a/src/kernel2/src/arch/i386/mm/mm_context.c > +++ b/src/kernel2/src/arch/i386/mm/mm_context.c > @@ -271,7 +271,17 @@ static bool map_page > panic("Adressen sind nicht 4K-aligned (virt = %x, phys = %x)", > vaddr, paddr); > } > - > + > + // Kernelpages duerfen immer nur im gerade aktiven Kontext gemappt werden. > + // Ales andere ergibt keinen Sinn, weil diese Bereiche ohnehin zwischen > + // allen Kontexten synchron gehalten werden muessen. > + if ((context != &mmc_current_context()) && > + ((uintptr_t) vaddr >= KERNEL_MEM_START) && > + ((uintptr_t) vaddr < KERNEL_MEM_END)) > + { > + panic("Versuch, Kernelpages in inaktivem Kontext zu mappen"); > + } > + > // Falls es sich im den aktuellen Kontext handelt, muss das Page directory > // nicht gemappt werden, sonst schon. > > diff --git a/src/kernel2/src/syscalls/rpc.c b/src/kernel2/src/syscalls/rpc.c > index 53f5396..70e0920 100644 > --- a/src/kernel2/src/syscalls/rpc.c > +++ b/src/kernel2/src/syscalls/rpc.c > @@ -282,7 +282,7 @@ static int do_fastrpc(pid_t callee_pid, size_t metadata_size, void* metadata, > callee_isf->eip = (uintptr_t) callee->process->rpc_handler; > > // Temporaere Mappings wieder aufheben > - mmc_unmap(¤t_process->context, first_stack_page, > + mmc_unmap(&mmc_current_context(), first_stack_page, > NUM_PAGES(rounded_data_size)); > > vmm_kernel_unmap(callee_isf, sizeof(*callee_isf)); Wenn du mit der Panic-Meldung so zufrieden bist, dann rein damit. ;-) Acked-by: Antoine Kaufmann <toni@xxxxxxxxxx> -- Antoine Kaufmann <toni@xxxxxxxxxxxxxxxx>
Attachment:
pgp2LGLpw89Pd.pgp
Description: PGP signature