aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64/linux32/linux32_sysvec.c
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2021-02-16 14:30:21 +0000
committerMark Johnston <markj@FreeBSD.org>2021-02-16 14:40:02 +0000
commit0fc8a796722846d0d676548aa0f5cc660199db73 (patch)
tree80c22249e6f3a176889367dbce00f5da4ae592c6 /sys/amd64/linux32/linux32_sysvec.c
parent2d936e6c99ad1c4fb01f6c99a96dcc924ee44b9d (diff)
downloadsrc-0fc8a796722846d0d676548aa0f5cc660199db73.tar.gz
src-0fc8a796722846d0d676548aa0f5cc660199db73.zip
linux: Unmap the VDSO page when unloading
linux_shared_page_init() creates an object and grabs and maps a single page to back the VDSO. When destroying the VDSO object, we failed to destroy the mapping and free KVA. Fix this. Reviewed by: kib MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28696
Diffstat (limited to 'sys/amd64/linux32/linux32_sysvec.c')
-rw-r--r--sys/amd64/linux32/linux32_sysvec.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/amd64/linux32/linux32_sysvec.c b/sys/amd64/linux32/linux32_sysvec.c
index d06a1fb17d9b..bb86baefaec4 100644
--- a/sys/amd64/linux32/linux32_sysvec.c
+++ b/sys/amd64/linux32/linux32_sysvec.c
@@ -961,7 +961,8 @@ static void
linux_vdso_deinstall(void *param)
{
- __elfN(linux_shared_page_fini)(linux_shared_page_obj);
+ __elfN(linux_shared_page_fini)(linux_shared_page_obj,
+ linux_shared_page_mapping);
}
SYSUNINIT(elf_linux_vdso_uninit, SI_SUB_EXEC, SI_ORDER_FIRST,
linux_vdso_deinstall, NULL);