aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2023-08-10 13:25:44 +0200
committerMikael Olsson <mikael.olsson@arm.com>2023-08-11 10:45:43 +0200
commit1182f38708e8df8378e3b6c4cf8c3f6193d53d82 (patch)
tree6cd5e45e574929bdcfc959a5bb199760a0a2d956
parente9c3f076d1e99c11729627723d008b6686946995 (diff)
downloadethos-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.c3
-rw-r--r--kernel/ethosu_inference.c2
-rw-r--r--kernel/ethosu_network.c2
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;