Page MenuHomeFreeBSD

D29460.id.diff
No OneTemporary

D29460.id.diff

diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
--- a/sys/kern/kern_exec.c
+++ b/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);
diff --git a/sys/kern/subr_asan.c b/sys/kern/subr_asan.c
--- a/sys/kern/subr_asan.c
+++ b/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:
diff --git a/sys/sys/asan.h b/sys/sys/asan.h
--- a/sys/sys/asan.h
+++ b/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, 1:43 PM (8 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31607416
Default Alt Text
D29460.id.diff (1 KB)

Event Timeline