Page MenuHomeFreeBSD

D29460.id86417.diff
No OneTemporary

D29460.id86417.diff

Index: sys/kern/kern_exec.c
===================================================================
--- sys/kern/kern_exec.c
+++ sys/kern/kern_exec.c
@@ -37,6 +37,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/acct.h>
+#include <sys/asan.h>
#include <sys/capsicum.h>
#include <sys/eventhandler.h>
#include <sys/exec.h>
@@ -1328,6 +1329,8 @@
SLIST_REMOVE_HEAD(&exec_args_kva_freelist, next);
mtx_unlock(&exec_args_kva_mtx);
}
+ kasan_mark((void *)argkva->addr, exec_map_entry_size,
+ exec_map_entry_size, 0);
*(struct exec_args_kva **)cookie = argkva;
return (argkva->addr);
}
@@ -1338,6 +1341,8 @@
vm_offset_t base;
base = argkva->addr;
+ kasan_mark((void *)argkva->addr, 0, exec_map_entry_size,
+ KASAN_EXEC_ARGS_FREED);
if (argkva->gen != gen) {
(void)vm_map_madvise(exec_map, base, base + exec_map_entry_size,
MADV_FREE);
Index: sys/kern/subr_asan.c
===================================================================
--- sys/kern/subr_asan.c
+++ sys/kern/subr_asan.c
@@ -153,6 +153,8 @@
return "UMAUseAfterFree";
case KASAN_KSTACK_FREED:
return "KernelStack";
+ case KASAN_EXEC_ARGS_FREED:
+ return "ExecKVA";
case 1 ... 7:
return "RedZonePartial";
case KASAN_STACK_LEFT:
Index: sys/sys/asan.h
===================================================================
--- sys/sys/asan.h
+++ sys/sys/asan.h
@@ -53,6 +53,7 @@
#define KASAN_KMEM_REDZONE 0xFC
#define KASAN_UMA_FREED 0xFD
#define KASAN_KSTACK_FREED 0xFE
+#define KASAN_EXEC_ARGS_FREED 0xFF
void kasan_init(void);
void kasan_shadow_map(void *, size_t);

File Metadata

Mime Type
text/plain
Expires
Thu, Apr 16, 4:43 PM (9 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31559782
Default Alt Text
D29460.id86417.diff (1 KB)

Event Timeline