@@ -46,6 +46,12 @@ bool g_syscall_sandbox_log_violation_before_terminating{false};
46
46
47
47
// Define system call numbers for x86_64 that are referenced in the system call profile
48
48
// but not provided by the kernel headers used in the GUIX build.
49
+ // Usually, they can be found via "grep name /usr/include/x86_64-linux-gnu/asm/unistd_64.h"
50
+
51
+ #ifndef __NR_clone3
52
+ #define __NR_clone3 435
53
+ #endif
54
+
49
55
#ifndef __NR_statx
50
56
#define __NR_statx 332
51
57
#endif
@@ -115,6 +121,7 @@ const std::map<uint32_t, std::string> LINUX_SYSCALLS{
115
121
{__NR_clock_nanosleep, " clock_nanosleep" },
116
122
{__NR_clock_settime, " clock_settime" },
117
123
{__NR_clone, " clone" },
124
+ {__NR_clone3, " clone3" },
118
125
{__NR_close, " close" },
119
126
{__NR_connect, " connect" },
120
127
{__NR_copy_file_range, " copy_file_range" },
@@ -540,6 +547,7 @@ class SeccompPolicyBuilder
540
547
allowed_syscalls.insert (__NR_brk); // change data segment size
541
548
allowed_syscalls.insert (__NR_madvise); // give advice about use of memory
542
549
allowed_syscalls.insert (__NR_membarrier); // issue memory barriers on a set of threads
550
+ allowed_syscalls.insert (__NR_mincore); // check if virtual memory is in RAM
543
551
allowed_syscalls.insert (__NR_mlock); // lock memory
544
552
allowed_syscalls.insert (__NR_mmap); // map files or devices into memory
545
553
allowed_syscalls.insert (__NR_mprotect); // set protection on a region of memory
@@ -705,6 +713,7 @@ class SeccompPolicyBuilder
705
713
void AllowProcessStartOrDeath ()
706
714
{
707
715
allowed_syscalls.insert (__NR_clone); // create a child process
716
+ allowed_syscalls.insert (__NR_clone3); // create a child process
708
717
allowed_syscalls.insert (__NR_exit); // terminate the calling process
709
718
allowed_syscalls.insert (__NR_exit_group); // exit all threads in a process
710
719
allowed_syscalls.insert (__NR_fork); // create a child process
0 commit comments