[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] kernel2: RPC: Überflüssiges temporäres Mapping entfernt



* kernel2: Es gibt keinen Grund, für das ISF des aufgerufenen Prozesses
  ein temporäres Mapping durchzuführen - ist eh Kernelspeicher und daher
  überall zugreifbar

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/kernel2/src/syscalls/rpc.c |   11 +----------
 1 files changed, 1 insertions(+), 10 deletions(-)

diff --git a/src/kernel2/src/syscalls/rpc.c b/src/kernel2/src/syscalls/rpc.c
index 6fcf8b1..e898021 100644
--- a/src/kernel2/src/syscalls/rpc.c
+++ b/src/kernel2/src/syscalls/rpc.c
@@ -196,23 +196,16 @@ int do_fastrpc(pid_t callee_pid, size_t metadata_size, void* metadata,
         goto fail_retry;
     }
 
-    // Interrupt Stack Frame des aufgerufenen Tasks mappen
-    paddr_t callee_isf_phys =
-        mmc_resolve(&callee->process->context, callee->user_isf);
-
-    interrupt_stack_frame_t* callee_isf = (interrupt_stack_frame_t*)
-        vmm_kernel_automap(callee_isf_phys, sizeof(*callee_isf));
-
     // Wenn sich der Task gerade in einem Kernel-Int befindet, lassen wir ihn
     // besser in Ruhe und probieren spaeter nochmal.
     if ((current_thread != callee) &&
         (callee->kernel_stack != callee->user_isf))
     {
-        vmm_kernel_unmap(callee_isf, sizeof(*callee_isf));
         return -EAGAIN;
     }
 
     // RPC-Backlinkinformation anlegen
+    interrupt_stack_frame_t* callee_isf = callee->user_isf;
     rpc_t* rpc = malloc(sizeof(rpc_t));
 
     rpc->old_eip = callee_isf->eip;
@@ -279,8 +272,6 @@ int do_fastrpc(pid_t callee_pid, size_t metadata_size, void* metadata,
     mmc_unmap(&mmc_current_context(), first_stack_page,
         NUM_PAGES(rounded_data_size));
 
-    vmm_kernel_unmap(callee_isf, sizeof(*callee_isf));
-
 //    kprintf("[%d => %d] RPC durchgefuehrt.\n",
 //        current_process->pid,
 //        callee->process->pid);
-- 
1.6.0.2