Skip to content

Commit 61f1b4e

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]> (cherry picked from commit 5862285) Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent 4748bb7 commit 61f1b4e

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
@@ -454,11 +454,20 @@ func DefaultProfile(sp *specs.Spec) *specs.LinuxSeccomp {
454454

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

0 commit comments

Comments
 (0)