diff --git a/drivers/virt/haven/hh_rm_core.c b/drivers/virt/haven/hh_rm_core.c index 551397120848..2a66a690b9c5 100644 --- a/drivers/virt/haven/hh_rm_core.c +++ b/drivers/virt/haven/hh_rm_core.c @@ -644,14 +644,14 @@ void *hh_rm_call(hh_rm_msgid_t message_id, connection->recv_buff, connection->recv_buff_size, false); - mutex_lock(&hh_rm_call_idr_lock); - idr_remove(&hh_rm_call_idr, connection->seq); - mutex_unlock(&hh_rm_call_idr_lock); - ret = connection->recv_buff; *resp_buff_size = connection->recv_buff_size; out: + mutex_lock(&hh_rm_call_idr_lock); + idr_remove(&hh_rm_call_idr, connection->seq); + mutex_unlock(&hh_rm_call_idr_lock); + kfree(connection); return ret; }