Page MenuHomeFreeBSD

D28696.id83980.diff
No OneTemporary

D28696.id83980.diff

Index: sys/amd64/linux/linux_sysvec.c
===================================================================
--- sys/amd64/linux/linux_sysvec.c
+++ sys/amd64/linux/linux_sysvec.c
@@ -818,7 +818,8 @@
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);
Index: sys/amd64/linux32/linux32_sysvec.c
===================================================================
--- sys/amd64/linux32/linux32_sysvec.c
+++ sys/amd64/linux32/linux32_sysvec.c
@@ -961,7 +961,8 @@
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);
Index: sys/arm64/linux/linux_sysvec.c
===================================================================
--- sys/arm64/linux/linux_sysvec.c
+++ sys/arm64/linux/linux_sysvec.c
@@ -461,7 +461,8 @@
{
LIN_SDT_PROBE0(sysvec, linux_vdso_deinstall, todo);
- __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);
Index: sys/compat/linux/linux_vdso.h
===================================================================
--- sys/compat/linux/linux_vdso.h
+++ sys/compat/linux/linux_vdso.h
@@ -39,7 +39,7 @@
};
vm_object_t __elfN(linux_shared_page_init)(char **);
-void __elfN(linux_shared_page_fini)(vm_object_t);
+void __elfN(linux_shared_page_fini)(vm_object_t, void *);
void __elfN(linux_vdso_fixup)(struct sysentvec *);
void __elfN(linux_vdso_reloc)(struct sysentvec *);
void __elfN(linux_vdso_sym_init)(struct linux_vdso_sym *);
Index: sys/compat/linux/linux_vdso.c
===================================================================
--- sys/compat/linux/linux_vdso.c
+++ sys/compat/linux/linux_vdso.c
@@ -93,9 +93,13 @@
}
void
-__elfN(linux_shared_page_fini)(vm_object_t obj)
+__elfN(linux_shared_page_fini)(vm_object_t obj, void *mapping)
{
+ vm_offset_t va;
+ va = (vm_offset_t)mapping;
+ pmap_qremove(va, 1);
+ kva_free(va, PAGE_SIZE);
vm_object_deallocate(obj);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Dec 26, 9:40 PM (12 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15608075
Default Alt Text
D28696.id83980.diff (2 KB)

Event Timeline