diff options
author | Mikael Olsson <mikael.olsson@arm.com> | 2023-08-10 13:25:44 +0200 |
---|---|---|
committer | Mikael Olsson <mikael.olsson@arm.com> | 2023-08-11 10:45:43 +0200 |
commit | 1182f38708e8df8378e3b6c4cf8c3f6193d53d82 (patch) | |
tree | 6cd5e45e574929bdcfc959a5bb199760a0a2d956 | |
parent | e9c3f076d1e99c11729627723d008b6686946995 (diff) | |
download | ethos-u-linux-driver-stack-1182f38708e8df8378e3b6c4cf8c3f6193d53d82.tar.gz |
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 <mikael.olsson@arm.com>
-rw-r--r-- | kernel/ethosu_buffer.c | 3 | ||||
-rw-r--r-- | kernel/ethosu_inference.c | 2 | ||||
-rw-r--r-- | kernel/ethosu_network.c | 2 |
3 files changed, 7 insertions, 0 deletions
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; |