From 914faf042dfbf157b62ebd7fea21b062f538556b Mon Sep 17 00:00:00 2001 From: NAKAMURA Gou Date: Wed, 6 Jan 2016 14:56:52 +0900 Subject: [PATCH] add missing kfree() for channel lookup table --- executer/kernel/mcctrl/ikc.c | 1 + executer/kernel/mcctrl/mcctrl.h | 1 + executer/kernel/mcctrl/syscall.c | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/executer/kernel/mcctrl/ikc.c b/executer/kernel/mcctrl/ikc.c index 719cd57d..9a7a2a4d 100644 --- a/executer/kernel/mcctrl/ikc.c +++ b/executer/kernel/mcctrl/ikc.c @@ -388,6 +388,7 @@ void destroy_ikc_channels(ihk_os_t os) } free_page((unsigned long)usrdata->mcctrl_doorbell_va); + destroy_peer_channel_registry(usrdata); kfree(usrdata->channels); kfree(usrdata); } diff --git a/executer/kernel/mcctrl/mcctrl.h b/executer/kernel/mcctrl/mcctrl.h index 8a4f4c6b..64f451f6 100644 --- a/executer/kernel/mcctrl/mcctrl.h +++ b/executer/kernel/mcctrl/mcctrl.h @@ -226,6 +226,7 @@ int reserve_user_space(struct mcctrl_usrdata *usrdata, unsigned long *startp, /* syscall.c */ int init_peer_channel_registry(struct mcctrl_usrdata *ud); +void destroy_peer_channel_registry(struct mcctrl_usrdata *ud); int register_peer_channel(struct mcctrl_usrdata *ud, void *key, struct mcctrl_channel *ch); int deregister_peer_channel(struct mcctrl_usrdata *ud, void *key, struct mcctrl_channel *ch); struct mcctrl_channel *get_peer_channel(struct mcctrl_usrdata *ud, void *key); diff --git a/executer/kernel/mcctrl/syscall.c b/executer/kernel/mcctrl/syscall.c index d21c187e..598840a3 100644 --- a/executer/kernel/mcctrl/syscall.c +++ b/executer/kernel/mcctrl/syscall.c @@ -83,6 +83,13 @@ int init_peer_channel_registry(struct mcctrl_usrdata *ud) return 0; } +void destroy_peer_channel_registry(struct mcctrl_usrdata *ud) +{ + kfree(ud->keys); + ud->keys = NULL; + return; +} + int register_peer_channel(struct mcctrl_usrdata *ud, void *key, struct mcctrl_channel *ch) { int cpu;