aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2026-02-06 15:30:26 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2026-02-06 15:30:26 +0000
commit06fd19b5349a1ff27ef338619fdade596986fc2f (patch)
treee26731d3de7cb08f522abea8b1e6e77d865309ed
parent73ab91aaade5f33459fda16d9daf6526ab668c42 (diff)
spibus: Don't leak KVA when freeing a mmap region
Effort: CHERI upstreaming Sponsored by: AFRL, DARPA Differential Revision: https://reviews.freebsd.org/D54837
-rw-r--r--sys/dev/spibus/spigen.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/spibus/spigen.c b/sys/dev/spibus/spigen.c
index 66c93e927281..39b94c6123fc 100644
--- a/sys/dev/spibus/spigen.c
+++ b/sys/dev/spibus/spigen.c
@@ -283,8 +283,10 @@ spigen_mmap_cleanup(void *arg)
{
struct spigen_mmap *mmap = arg;
- if (mmap->kvaddr != 0)
+ if (mmap->kvaddr != 0) {
pmap_qremove(mmap->kvaddr, mmap->bufsize / PAGE_SIZE);
+ kva_free(mmap->kvaddr, mmap->bufsize);
+ }
if (mmap->bufobj != NULL)
vm_object_deallocate(mmap->bufobj);
free(mmap, M_DEVBUF);