Skip to content

Commit 5862285

Browse files
committed
seccomp: allow sync_file_range2 on supported architectures.
On a ppc64le host, running postgres (tried with 9.4 to 9.6) gives the following warning when trying to flush data to disks (which happens very frequently): WARNING: could not flush dirty data: Operation not permitted. A quick dig in postgres source code indicate it uses sync_file_range(2) to flush data; which on ppe64le and arm64 is translated to sync_file_range2(2) for alignements reasons. The profile did not allow sync_file_range2(2), making postgres sad because it can not flush its buffers. arm_sync_file_range(2) is an ancient alias to sync_file_range2(2), the syscall was renamed in Linux 2.6.22 when the same syscall was added for PowerPC. Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 117d678 commit 5862285

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

contrib/seccomp/seccomp_default.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,11 +455,20 @@ func DefaultProfile(sp *specs.Spec) *specs.LinuxSeccomp {
455455

456456
// include by arch
457457
switch runtime.GOARCH {
458+
case "ppc64le":
459+
s.Syscalls = append(s.Syscalls, specs.LinuxSyscall{
460+
Names: []string{
461+
"sync_file_range2",
462+
},
463+
Action: specs.ActAllow,
464+
Args: []specs.LinuxSeccompArg{},
465+
})
458466
case "arm", "arm64":
459467
s.Syscalls = append(s.Syscalls, specs.LinuxSyscall{
460468
Names: []string{
461469
"arm_fadvise64_64",
462470
"arm_sync_file_range",
471+
"sync_file_range2",
463472
"breakpoint",
464473
"cacheflush",
465474
"set_tls",

0 commit comments

Comments
 (0)