From d7a8e8ae5770e11ee136d714974394e309604967 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Tue, 18 Mar 2025 19:10:38 +0200 Subject: [PATCH] fix memory leak caused by improper process destruction --- inc/process.h | 2 ++ src/kernel.c | 2 +- src/process.c | 8 ++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/inc/process.h b/inc/process.h index c24ddfa..f14f870 100644 --- a/inc/process.h +++ b/inc/process.h @@ -27,6 +27,8 @@ struct Process *Process(size_t proc_id, size_t total_pages_owned, size_t ws_size); +void PROCESS_destroy(struct Process *p); + size_t PROCESS_run_for(struct Process *p, size_t time_bits); void PROCESS_change_working_set(struct Process *p); diff --git a/src/kernel.c b/src/kernel.c index 49c8c5e..d71d029 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -119,7 +119,7 @@ RUNQ_remove_current_process(void) break; } - free(tp); + PROCESS_destroy(tp); runq->proc_amount--; } diff --git a/src/process.c b/src/process.c index e0b3b68..e851155 100644 --- a/src/process.c +++ b/src/process.c @@ -29,6 +29,14 @@ Process(size_t proc_id, size_t max_accesses, size_t total_pages_owned, size_t ws return p; } +void +PROCESS_destroy(struct Process *p) +{ + free(p->pt); + free(p->ws); + free(p); +} + size_t PROCESS_run_for(struct Process *p, size_t time_bits) {