diff options
author | Mark Johnston <markj@FreeBSD.org> | 2021-02-16 14:30:21 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2021-02-16 14:40:02 +0000 |
commit | 0fc8a796722846d0d676548aa0f5cc660199db73 (patch) | |
tree | 80c22249e6f3a176889367dbce00f5da4ae592c6 /sys/amd64/linux32/linux32_sysvec.c | |
parent | 2d936e6c99ad1c4fb01f6c99a96dcc924ee44b9d (diff) | |
download | src-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.c | 3 |
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); |