aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;