From 1182f38708e8df8378e3b6c4cf8c3f6193d53d82 Mon Sep 17 00:00:00 2001 From: Mikael Olsson Date: Thu, 10 Aug 2023 13:25:44 +0200 Subject: Clear inference related data before freeing it To not leave behind any data in memory from buffers, inferences and networks, the memory allocated for them is now cleared before it is freed. Change-Id: I68c221b190e78f9b4c5022016c38f4ced5e78166 Signed-off-by: Mikael Olsson --- kernel/ethosu_buffer.c | 3 +++ kernel/ethosu_inference.c | 2 ++ kernel/ethosu_network.c | 2 ++ 3 files changed, 7 insertions(+) diff --git a/kernel/ethosu_buffer.c b/kernel/ethosu_buffer.c index fb4a8b4..9033f8b 100644 --- a/kernel/ethosu_buffer.c +++ b/kernel/ethosu_buffer.c @@ -75,9 +75,11 @@ static void ethosu_buffer_destroy(struct kref *kref) dev_info(dev, "Buffer destroy. buf=0x%pK", buf); + memset(buf->cpu_addr, 0, buf->capacity); dma_free_coherent(dev, buf->capacity, buf->cpu_addr, buf->dma_addr); + memset(buf, 0, sizeof(*buf)); devm_kfree(dev, buf); } @@ -214,6 +216,7 @@ free_dma: buf->dma_addr); free_buf: + memset(buf, 0, sizeof(*buf)); devm_kfree(dev, buf); return ret; diff --git a/kernel/ethosu_inference.c b/kernel/ethosu_inference.c index bc38236..4dcdc0a 100644 --- a/kernel/ethosu_inference.c +++ b/kernel/ethosu_inference.c @@ -166,6 +166,7 @@ static void ethosu_inference_kref_destroy(struct kref *kref) ethosu_buffer_put(inf->ofm[inf->ofm_count]); ethosu_network_put(inf->net); + memset(inf, 0, sizeof(*inf)); devm_kfree(dev, inf); } @@ -384,6 +385,7 @@ put_ifm: ethosu_buffer_put(inf->ifm[inf->ifm_count]); kfree: + memset(inf, 0, sizeof(*inf)); devm_kfree(dev, inf); return ret; diff --git a/kernel/ethosu_network.c b/kernel/ethosu_network.c index d64d6d7..52f6144 100644 --- a/kernel/ethosu_network.c +++ b/kernel/ethosu_network.c @@ -74,6 +74,7 @@ static void ethosu_network_destroy(struct kref *kref) if (net->buf != NULL) ethosu_buffer_put(net->buf); + memset(net, 0, sizeof(*net)); devm_kfree(dev, net); } @@ -198,6 +199,7 @@ put_buf: ethosu_buffer_put(net->buf); free_net: + memset(net, 0, sizeof(*net)); devm_kfree(dev, net); return ret; -- cgit v1.2.1