diff --git a/src/syscalls.c b/src/syscalls.c index 5b2cd92a..c5ebe64a 100644 --- a/src/syscalls.c +++ b/src/syscalls.c @@ -42,6 +42,13 @@ int abi_syscall_resolve_name_munge(const struct arch_def *arch, const char *name) { + int sys = __NR_SCMP_ERROR; + + /* Check if arch implements syscall directly and return its number */ + sys = arch->syscall_resolve_name_raw(name); + if (sys != __NR_SCMP_ERROR) { + return sys; + } #define _ABI_SYSCALL_RES_NAME_CHK(NAME) \ if (!strcmp(name, #NAME)) return __PNR_##NAME; @@ -79,7 +86,7 @@ int abi_syscall_resolve_name_munge(const struct arch_def *arch, _ABI_SYSCALL_RES_NAME_CHK(shmget) _ABI_SYSCALL_RES_NAME_CHK(shmctl) - return arch->syscall_resolve_name_raw(name); + return __NR_SCMP_ERROR; } /** diff --git a/tests/30-sim-socket_syscalls.tests b/tests/30-sim-socket_syscalls.tests index be499a58..8662c798 100644 --- a/tests/30-sim-socket_syscalls.tests +++ b/tests/30-sim-socket_syscalls.tests @@ -44,9 +44,10 @@ test type: bpf-sim 30-sim-socket_syscalls +sh 352 0 1 2 N N N ALLOW # direct syscalls 30-sim-socket_syscalls +x86,+ppc64le,+mipsel,+sh accept 5 N N N N N ALLOW -30-sim-socket_syscalls +x86,+ppc64le,+mipsel,+sh accept 0 1 2 N N N KILL +30-sim-socket_syscalls +x86 accept 0 1 2 N N N KILL +30-sim-socket_syscalls +ppc64le,+mipsel,+sh accept 0 1 2 N N N ALLOW 30-sim-socket_syscalls +x86,+ppc64le,+mipsel,+sh accept4 18 1 2 N N N ALLOW -30-sim-socket_syscalls +x86,+ppc64le,+mipsel,+sh accept4 0 1 2 N N N KILL +30-sim-socket_syscalls +x86,+ppc64le,+mipsel,+sh accept4 0 1 2 N N N ALLOW 30-sim-socket_syscalls +x86_64 socket 0 1 2 N N N ALLOW 30-sim-socket_syscalls +x86_64 connect 0 1 2 N N N ALLOW 30-sim-socket_syscalls +x86_64 accept4 0 1 2 N N N ALLOW diff --git a/tests/33-sim-socket_syscalls_be.tests b/tests/33-sim-socket_syscalls_be.tests index 11e25526..f5a10a4c 100644 --- a/tests/33-sim-socket_syscalls_be.tests +++ b/tests/33-sim-socket_syscalls_be.tests @@ -21,9 +21,10 @@ test type: bpf-sim 33-sim-socket_syscalls_be +s390,+s390x 373 0 1 2 N N N ALLOW 33-sim-socket_syscalls_be +ppc 338 0 1 2 N N N ALLOW 33-sim-socket_syscalls_be +s390,+s390x,+ppc accept 5 N N N N N ALLOW -33-sim-socket_syscalls_be +s390,+s390x,+ppc accept 0 1 2 N N N KILL +33-sim-socket_syscalls_be +s390,+s390x accept 0 1 2 N N N KILL +33-sim-socket_syscalls_be +ppc accept 0 1 2 N N N ALLOW 33-sim-socket_syscalls_be +s390,+s390x,+ppc accept4 18 1 2 N N N ALLOW -33-sim-socket_syscalls_be +s390,+s390x,+ppc accept4 0 1 2 N N N KILL +33-sim-socket_syscalls_be +s390,+s390x,+ppc accept4 0 1 2 N N N ALLOW test type: bpf-valgrind