summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsf <sf@openbsd.org>2015-04-19 06:30:20 +0000
committersf <sf@openbsd.org>2015-04-19 06:30:20 +0000
commitad6fa6e613a7490c2c5a2a4793aeb1d5e7ab79fe (patch)
tree74c0e597ed9d5ab434758fee86d4769211cb9d1d
parentBinary code patching on i386 (diff)
downloadwireguard-openbsd-ad6fa6e613a7490c2c5a2a4793aeb1d5e7ab79fe.tar.xz
wireguard-openbsd-ad6fa6e613a7490c2c5a2a4793aeb1d5e7ab79fe.zip
Add a missing pmap_kremove
Noticed by mlarkin@
-rw-r--r--sys/arch/amd64/amd64/codepatch.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/arch/amd64/amd64/codepatch.c b/sys/arch/amd64/amd64/codepatch.c
index 4e9ed6b55a0..c0a33bbe5eb 100644
--- a/sys/arch/amd64/amd64/codepatch.c
+++ b/sys/arch/amd64/amd64/codepatch.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: codepatch.c,v 1.1 2015/01/16 10:17:51 sf Exp $ */
+/* $OpenBSD: codepatch.c,v 1.2 2015/04/19 06:30:20 sf Exp $ */
/*
* Copyright (c) 2014-2015 Stefan Fritsch <sf@sfritsch.de>
*
@@ -90,8 +90,10 @@ void *codepatch_maprw(vaddr_t *nva, vaddr_t dest)
void codepatch_unmaprw(vaddr_t nva)
{
- if (nva != 0)
- km_free((void *)nva, 2 * PAGE_SIZE, &kv_any, &kp_none);
+ if (nva == 0)
+ return;
+ pmap_kremove(nva, 2 * PAGE_SIZE);
+ km_free((void *)nva, 2 * PAGE_SIZE, &kv_any, &kp_none);
}
/* Patch with NOPs */