Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0db91f0

Browse filesBrowse files
Pass kernel load address to the monitor plugins
Signed-off-by: Vitaly Chipounov <vitaly@cyberhaven.io>
1 parent c8df595 commit 0db91f0
Copy full SHA for 0db91f0

File tree

Expand file treeCollapse file tree

6 files changed

+40
-33
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+40
-33
lines changed

‎decree-cgc-cfe/kernel/s2e/s2e.c

Copy file name to clipboardExpand all lines: decree-cgc-cfe/kernel/s2e/s2e.c
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ static int __init s2e_init(void)
3838

3939
/* Send addresses and offsets to the DecreeMonitor plugin */
4040
if (s2e_decree_monitor_enabled) {
41-
s2e_decree_init(PAGE_OFFSET, task_struct_pid_offset);
41+
s2e_decree_init(PAGE_OFFSET, __START_KERNEL, task_struct_pid_offset);
4242
}
4343

4444
return 0;

‎include/s2e/decree/commands.h

Copy file name to clipboardExpand all lines: include/s2e/decree/commands.h
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,9 @@ struct S2E_DECREEMON_VMA {
182182
} __attribute__((packed));
183183

184184
struct S2E_DECREEMON_COMMAND_INIT {
185-
uint64_t page_offset;
186-
uint64_t task_struct_pid_offset;
185+
uint64_t page_offset;
186+
uint64_t start_kernel;
187+
uint64_t task_struct_pid_offset;
187188
} __attribute__((packed));
188189

189190
struct S2E_DECREEMON_COMMAND_KERNEL_PANIC {

‎include/s2e/decree/decree_monitor.h

Copy file name to clipboardExpand all lines: include/s2e/decree/decree_monitor.h
+14-12Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -353,19 +353,21 @@ static inline void s2e_decree_do_set_args(pid_t pid, const char *name, struct S2
353353
}
354354
}
355355

356-
static inline void s2e_decree_init(uint64_t page_offset, uint64_t task_struct_pid_offset)
356+
static inline void s2e_decree_init(uint64_t page_offset, uint64_t start_kernel,
357+
uint64_t task_struct_pid_offset)
357358
{
358-
if (s2e_decree_monitor_enabled) {
359-
struct S2E_DECREEMON_COMMAND cmd = { 0 };
360-
361-
cmd.Command = DECREE_INIT;
362-
cmd.version = S2E_DECREEMON_COMMAND_VERSION;
363-
cmd.currentPid = -1;
364-
cmd.Init.page_offset = page_offset;
365-
cmd.Init.task_struct_pid_offset = task_struct_pid_offset;
366-
367-
s2e_invoke_plugin("DecreeMonitor", &cmd, sizeof(cmd));
368-
}
359+
if (s2e_decree_monitor_enabled) {
360+
struct S2E_DECREEMON_COMMAND cmd = {0};
361+
362+
cmd.Command = DECREE_INIT;
363+
cmd.version = S2E_DECREEMON_COMMAND_VERSION;
364+
cmd.currentPid = -1;
365+
cmd.Init.page_offset = page_offset;
366+
cmd.Init.start_kernel = start_kernel;
367+
cmd.Init.task_struct_pid_offset = task_struct_pid_offset;
368+
369+
s2e_invoke_plugin("DecreeMonitor", &cmd, sizeof(cmd));
370+
}
369371
}
370372

371373
static inline void s2e_decree_kernel_panic(const char *msg, unsigned msg_size)

‎include/s2e/linux/commands.h

Copy file name to clipboardExpand all lines: include/s2e/linux/commands.h
+5-4Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,11 @@ struct S2E_LINUXMON_COMMAND_PROCESS_EXIT {
7878
} __attribute__((packed));
7979

8080
struct S2E_LINUXMON_COMMAND_INIT {
81-
uint64_t page_offset;
82-
uint64_t current_task_address;
83-
uint64_t task_struct_pid_offset;
84-
uint64_t task_struct_tgid_offset;
81+
uint64_t page_offset;
82+
uint64_t start_kernel;
83+
uint64_t current_task_address;
84+
uint64_t task_struct_pid_offset;
85+
uint64_t task_struct_tgid_offset;
8586
} __attribute__((packed));
8687

8788
struct S2E_LINUXMON_COMMAND_KERNEL_PANIC {

‎include/s2e/linux/linux_monitor.h

Copy file name to clipboardExpand all lines: include/s2e/linux/linux_monitor.h
+15-12Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,19 +94,22 @@ static inline void s2e_linux_process_exit(pid_t pid, const char *name, uint64_t
9494
s2e_invoke_plugin("LinuxMonitor", &cmd, sizeof(cmd));
9595
}
9696

97-
static inline void s2e_linux_init(uint64_t page_offset, uint64_t current_task_address, uint64_t task_struct_pid_offset,
98-
uint64_t task_struct_tgid_offset)
97+
static inline void s2e_linux_init(uint64_t page_offset, uint64_t start_kernel,
98+
uint64_t current_task_address,
99+
uint64_t task_struct_pid_offset,
100+
uint64_t task_struct_tgid_offset)
99101
{
100-
struct S2E_LINUXMON_COMMAND cmd = { 0 };
101-
cmd.version = S2E_LINUXMON_COMMAND_VERSION;
102-
cmd.Command = LINUX_INIT;
103-
cmd.currentPid = -1;
104-
cmd.Init.page_offset = page_offset;
105-
cmd.Init.current_task_address = current_task_address;
106-
cmd.Init.task_struct_pid_offset = task_struct_pid_offset;
107-
cmd.Init.task_struct_tgid_offset = task_struct_tgid_offset;
108-
109-
s2e_invoke_plugin("LinuxMonitor", &cmd, sizeof(cmd));
102+
struct S2E_LINUXMON_COMMAND cmd = {0};
103+
cmd.version = S2E_LINUXMON_COMMAND_VERSION;
104+
cmd.Command = LINUX_INIT;
105+
cmd.currentPid = -1;
106+
cmd.Init.page_offset = page_offset;
107+
cmd.Init.start_kernel = start_kernel;
108+
cmd.Init.current_task_address = current_task_address;
109+
cmd.Init.task_struct_pid_offset = task_struct_pid_offset;
110+
cmd.Init.task_struct_tgid_offset = task_struct_tgid_offset;
111+
112+
s2e_invoke_plugin("LinuxMonitor", &cmd, sizeof(cmd));
110113
}
111114

112115
static inline void s2e_linux_kernel_panic(const char *msg, unsigned msg_size)

‎linux-4.9.3/kernel/s2e/s2e.c

Copy file name to clipboardExpand all lines: linux-4.9.3/kernel/s2e/s2e.c
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ static int __init s2e_init(void)
4646

4747
/* Send addresses and offsets to the LinuxMonitor plugin */
4848
if (s2e_linux_monitor_enabled) {
49-
s2e_linux_init(PAGE_OFFSET, current_task_addr, task_struct_pid_offset,
50-
task_struct_tgid_offset);
49+
s2e_linux_init(PAGE_OFFSET, __START_KERNEL, current_task_addr,
50+
task_struct_pid_offset, task_struct_tgid_offset);
5151
}
5252

5353
return 0;

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.