[PATCH 1/7] powerpc/entry: convert to common and generic entry
Luming Yu
luming.yu at shingroup.cn
Fri Oct 25 13:50:05 AEDT 2024
On Thu, Oct 24, 2024 at 04:43:04PM +0800, Luming Yu wrote:
> On Wed, Oct 23, 2024 at 12:53:47PM +1100, Michael Ellerman wrote:
> > "虞陆铭" <luming.yu at shingroup.cn> writes:
> > >>Le 12/10/2024 à 05:56, Luming Yu a écrit :
> > >>> convert powerpc entry code in syscall and fault to use syscall_work
> > >>> and irqentry_state as well as common calls implemented in generic
> > >>> entry infrastructure.
> > >>>
> > >>> Signed-off-by: Luming Yu <luming.yu at shingroup.cn>
> > >>> ---
> > >>> arch/powerpc/Kconfig | 1 +
> > >>> arch/powerpc/include/asm/hw_irq.h | 5 +++++
> > >>> arch/powerpc/include/asm/processor.h | 6 ++++++
> > >>> arch/powerpc/include/asm/syscall.h | 5 +++++
> > >>> arch/powerpc/include/asm/thread_info.h | 1 +
> > >>> arch/powerpc/kernel/syscall.c | 5 ++++-
> > >>> arch/powerpc/mm/fault.c | 3 +++
> > >>> 7 files changed, 25 insertions(+), 1 deletion(-)
> > >>>
> > >>
> > >>...
> > >>
> > >>> diff --git a/arch/powerpc/kernel/syscall.c b/arch/powerpc/kernel/syscall.c
> > >>> index 77fedb190c93..e0338bd8d383 100644
> > >>> --- a/arch/powerpc/kernel/syscall.c
> > >>> +++ b/arch/powerpc/kernel/syscall.c
> > >>> @@ -3,6 +3,7 @@
> > >>> #include <linux/compat.h>
> > >>> #include <linux/context_tracking.h>
> > >>> #include <linux/randomize_kstack.h>
> > >>> +#include <linux/entry-common.h>
> > >>>
> > >>> #include <asm/interrupt.h>
> > >>> #include <asm/kup.h>
> > >>> @@ -131,7 +132,7 @@ notrace long system_call_exception(struct pt_regs *regs, unsigned long r0)
> > >>> * and the test against NR_syscalls will fail and the return
> > >>> * value to be used is in regs->gpr[3].
> > >>> */
> > >>> - r0 = do_syscall_trace_enter(regs);
> > >>> + r0 = syscall_enter_from_user_mode(regs, r0);
> > >>
> > >>Can you provide details on how this works ?
> > > I assume the common entry would take over th details.
> > > So I just made the switch from the high level call.
> > >
> > As you said as the subtle ABI requirement about regs->r3 needs to
> > > be restored, I'm wondering which test can capture the lost
> > > ABI feature. As simple Boot test is insufficient, what is the test set
> > > that can capture it?
> >
> > The seccomp selftest did exercise it back when I originally wrote that
> > code. I don't know for sure that it still does, but that would be a good
> > start.
> >
> > It's in tools/testing/selftests/seccomp/
> Thanks for the hint.
> It seems to be running into some not ok cases the way hits the bpf test that doesn't return.
> I will re-run with the same kernel w/o the patch-set to sort out the cases that could be
> caused by the patch Then I will try to debug out the root cause.
w/o the patch set, all ok, as below. So, it would great if the test of feature can be used in
linux-ci github workflow. And I'm clear what needs to be done in v2 now.
[root at 10 linux-ci]# make -C tools/testing/selftests TARGETS=seccomp run_tests
make: Entering directory '/root/linux-ci/tools/testing/selftests'
make[1]: Nothing to be done for 'all'.
TAP version 13
1..2
# timeout set to 180
# selftests: seccomp: seccomp_bpf
# TAP version 13
# 1..98
# # Starting 98 tests from 8 test cases.
# # RUN global.kcmp ...
# # OK global.kcmp
# ok 1 global.kcmp
# # RUN global.mode_strict_support ...
# # OK global.mode_strict_support
# ok 2 global.mode_strict_support
# # RUN global.mode_strict_cannot_call_prctl ...
# # OK global.mode_strict_cannot_call_prctl
# ok 3 global.mode_strict_cannot_call_prctl
# # RUN global.no_new_privs_support ...
# # OK global.no_new_privs_support
# ok 4 global.no_new_privs_support
# # RUN global.mode_filter_support ...
# # OK global.mode_filter_support
# ok 5 global.mode_filter_support
# # RUN global.mode_filter_without_nnp ...
# # OK global.mode_filter_without_nnp
# ok 6 global.mode_filter_without_nnp
# # RUN global.filter_size_limits ...
# # OK global.filter_size_limits
# ok 7 global.filter_size_limits
# # RUN global.filter_chain_limits ...
# # OK global.filter_chain_limits
# ok 8 global.filter_chain_limits
# # RUN global.mode_filter_cannot_move_to_strict ...
# # OK global.mode_filter_cannot_move_to_strict
# ok 9 global.mode_filter_cannot_move_to_strict
# # RUN global.mode_filter_get_seccomp ...
# # OK global.mode_filter_get_seccomp
# ok 10 global.mode_filter_get_seccomp
# # RUN global.ALLOW_all ...
# # OK global.ALLOW_all
# ok 11 global.ALLOW_all
# # RUN global.empty_prog ...
# # OK global.empty_prog
# ok 12 global.empty_prog
# # RUN global.log_all ...
# # OK global.log_all
# ok 13 global.log_all
# # RUN global.unknown_ret_is_kill_inside ...
# # OK global.unknown_ret_is_kill_inside
# ok 14 global.unknown_ret_is_kill_inside
# # RUN global.unknown_ret_is_kill_above_allow ...
# # OK global.unknown_ret_is_kill_above_allow
# ok 15 global.unknown_ret_is_kill_above_allow
# # RUN global.KILL_all ...
# # OK global.KILL_all
# ok 16 global.KILL_all
# # RUN global.KILL_one ...
# # OK global.KILL_one
# ok 17 global.KILL_one
# # RUN global.KILL_one_arg_one ...
# # OK global.KILL_one_arg_one
# ok 18 global.KILL_one_arg_one
# # RUN global.KILL_one_arg_six ...
# # OK global.KILL_one_arg_six
# ok 19 global.KILL_one_arg_six
# # RUN global.KILL_thread ...
# # OK global.KILL_thread
# ok 20 global.KILL_thread
# # RUN global.KILL_process ...
# # OK global.KILL_process
# ok 21 global.KILL_process
# # RUN global.KILL_unknown ...
# # OK global.KILL_unknown
# ok 22 global.KILL_unknown
# # RUN global.arg_out_of_range ...
# # OK global.arg_out_of_range
# ok 23 global.arg_out_of_range
# # RUN global.ERRNO_valid ...
# # OK global.ERRNO_valid
# ok 24 global.ERRNO_valid
# # RUN global.ERRNO_zero ...
# # OK global.ERRNO_zero
# ok 25 global.ERRNO_zero
# # RUN global.ERRNO_capped ...
# # OK global.ERRNO_capped
# ok 26 global.ERRNO_capped
# # RUN global.ERRNO_order ...
# # OK global.ERRNO_order
# ok 27 global.ERRNO_order
# # RUN global.negative_ENOSYS ...
# # OK global.negative_ENOSYS
# ok 28 global.negative_ENOSYS
# # RUN global.seccomp_syscall ...
# # OK global.seccomp_syscall
# ok 29 global.seccomp_syscall
# # RUN global.seccomp_syscall_mode_lock ...
# # OK global.seccomp_syscall_mode_lock
# ok 30 global.seccomp_syscall_mode_lock
# # RUN global.detect_seccomp_filter_flags ...
# # OK global.detect_seccomp_filter_flags
# ok 31 global.detect_seccomp_filter_flags
# # RUN global.TSYNC_first ...
# # OK global.TSYNC_first
# ok 32 global.TSYNC_first
# # RUN global.syscall_restart ...
# # OK global.syscall_restart
# ok 33 global.syscall_restart
# # RUN global.filter_flag_log ...
# # OK global.filter_flag_log
# ok 34 global.filter_flag_log
# # RUN global.get_action_avail ...
# # OK global.get_action_avail
# ok 35 global.get_action_avail
# # RUN global.get_metadata ...
# # OK global.get_metadata
# ok 36 global.get_metadata
# # RUN global.user_notification_basic ...
# # OK global.user_notification_basic
# ok 37 global.user_notification_basic
# # RUN global.user_notification_with_tsync ...
# # OK global.user_notification_with_tsync
# ok 38 global.user_notification_with_tsync
# # RUN global.user_notification_kill_in_middle ...
# # OK global.user_notification_kill_in_middle
# ok 39 global.user_notification_kill_in_middle
# # RUN global.user_notification_signal ...
# # OK global.user_notification_signal
# ok 40 global.user_notification_signal
# # RUN global.user_notification_closed_listener ...
# # OK global.user_notification_closed_listener
# ok 41 global.user_notification_closed_listener
# # RUN global.user_notification_child_pid_ns ...
# # OK global.user_notification_child_pid_ns
# ok 42 global.user_notification_child_pid_ns
# # RUN global.user_notification_sibling_pid_ns ...
# # OK global.user_notification_sibling_pid_ns
# ok 43 global.user_notification_sibling_pid_ns
# # RUN global.user_notification_fault_recv ...
# # OK global.user_notification_fault_recv
# ok 44 global.user_notification_fault_recv
# # RUN global.seccomp_get_notif_sizes ...
# # OK global.seccomp_get_notif_sizes
# ok 45 global.seccomp_get_notif_sizes
# # RUN global.user_notification_continue ...
# # OK global.user_notification_continue
# ok 46 global.user_notification_continue
# # RUN global.user_notification_filter_empty ...
# # OK global.user_notification_filter_empty
# ok 47 global.user_notification_filter_empty
# # RUN global.user_ioctl_notification_filter_empty ...
# # OK global.user_ioctl_notification_filter_empty
# ok 48 global.user_ioctl_notification_filter_empty
# # RUN global.user_notification_filter_empty_threaded ...
# # OK global.user_notification_filter_empty_threaded
# ok 49 global.user_notification_filter_empty_threaded
# # RUN global.user_notification_addfd ...
# # OK global.user_notification_addfd
# ok 50 global.user_notification_addfd
# # RUN global.user_notification_addfd_rlimit ...
# # OK global.user_notification_addfd_rlimit
# ok 51 global.user_notification_addfd_rlimit
# # RUN global.user_notification_sync ...
# # OK global.user_notification_sync
# ok 52 global.user_notification_sync
# # RUN global.user_notification_fifo ...
# # OK global.user_notification_fifo
# ok 53 global.user_notification_fifo
# # RUN global.user_notification_wait_killable_pre_notification ...
# # OK global.user_notification_wait_killable_pre_notification
# ok 54 global.user_notification_wait_killable_pre_notification
# # RUN global.user_notification_wait_killable ...
# # OK global.user_notification_wait_killable
# ok 55 global.user_notification_wait_killable
# # RUN global.user_notification_wait_killable_fatal ...
# # OK global.user_notification_wait_killable_fatal
# ok 56 global.user_notification_wait_killable_fatal
# # RUN global.tsync_vs_dead_thread_leader ...
# # OK global.tsync_vs_dead_thread_leader
# ok 57 global.tsync_vs_dead_thread_leader
# # RUN TRAP.dfl ...
# # OK TRAP.dfl
# ok 58 TRAP.dfl
# # RUN TRAP.ign ...
# # OK TRAP.ign
# ok 59 TRAP.ign
# # RUN TRAP.handler ...
# # OK TRAP.handler
# ok 60 TRAP.handler
# # RUN precedence.allow_ok ...
# # OK precedence.allow_ok
# ok 61 precedence.allow_ok
# # RUN precedence.kill_is_highest ...
# # OK precedence.kill_is_highest
# ok 62 precedence.kill_is_highest
# # RUN precedence.kill_is_highest_in_any_order ...
# # OK precedence.kill_is_highest_in_any_order
# ok 63 precedence.kill_is_highest_in_any_order
# # RUN precedence.trap_is_second ...
# # OK precedence.trap_is_second
# ok 64 precedence.trap_is_second
# # RUN precedence.trap_is_second_in_any_order ...
# # OK precedence.trap_is_second_in_any_order
# ok 65 precedence.trap_is_second_in_any_order
# # RUN precedence.errno_is_third ...
# # OK precedence.errno_is_third
# ok 66 precedence.errno_is_third
# # RUN precedence.errno_is_third_in_any_order ...
# # OK precedence.errno_is_third_in_any_order
# ok 67 precedence.errno_is_third_in_any_order
# # RUN precedence.trace_is_fourth ...
# # OK precedence.trace_is_fourth
# ok 68 precedence.trace_is_fourth
# # RUN precedence.trace_is_fourth_in_any_order ...
# # OK precedence.trace_is_fourth_in_any_order
# ok 69 precedence.trace_is_fourth_in_any_order
# # RUN precedence.log_is_fifth ...
# # OK precedence.log_is_fifth
# ok 70 precedence.log_is_fifth
# # RUN precedence.log_is_fifth_in_any_order ...
# # OK precedence.log_is_fifth_in_any_order
# ok 71 precedence.log_is_fifth_in_any_order
# # RUN TRACE_poke.read_has_side_effects ...
# # OK TRACE_poke.read_has_side_effects
# ok 72 TRACE_poke.read_has_side_effects
# # RUN TRACE_poke.getpid_runs_normally ...
# # OK TRACE_poke.getpid_runs_normally
# ok 73 TRACE_poke.getpid_runs_normally
# # RUN TRACE_syscall.ptrace.negative_ENOSYS ...
# # OK TRACE_syscall.ptrace.negative_ENOSYS
# ok 74 TRACE_syscall.ptrace.negative_ENOSYS
# # RUN TRACE_syscall.ptrace.syscall_allowed ...
# # OK TRACE_syscall.ptrace.syscall_allowed
# ok 75 TRACE_syscall.ptrace.syscall_allowed
# # RUN TRACE_syscall.ptrace.syscall_redirected ...
# # OK TRACE_syscall.ptrace.syscall_redirected
# ok 76 TRACE_syscall.ptrace.syscall_redirected
# # RUN TRACE_syscall.ptrace.syscall_errno ...
# # OK TRACE_syscall.ptrace.syscall_errno
# ok 77 TRACE_syscall.ptrace.syscall_errno
# # RUN TRACE_syscall.ptrace.syscall_faked ...
# # OK TRACE_syscall.ptrace.syscall_faked
# ok 78 TRACE_syscall.ptrace.syscall_faked
# # RUN TRACE_syscall.ptrace.kill_immediate ...
# # OK TRACE_syscall.ptrace.kill_immediate
# ok 79 TRACE_syscall.ptrace.kill_immediate
# # RUN TRACE_syscall.ptrace.skip_after ...
# # OK TRACE_syscall.ptrace.skip_after
# ok 80 TRACE_syscall.ptrace.skip_after
# # RUN TRACE_syscall.ptrace.kill_after ...
# # OK TRACE_syscall.ptrace.kill_after
# ok 81 TRACE_syscall.ptrace.kill_after
# # RUN TRACE_syscall.seccomp.negative_ENOSYS ...
# # OK TRACE_syscall.seccomp.negative_ENOSYS
# ok 82 TRACE_syscall.seccomp.negative_ENOSYS
# # RUN TRACE_syscall.seccomp.syscall_allowed ...
# # OK TRACE_syscall.seccomp.syscall_allowed
# ok 83 TRACE_syscall.seccomp.syscall_allowed
# # RUN TRACE_syscall.seccomp.syscall_redirected ...
# # OK TRACE_syscall.seccomp.syscall_redirected
# ok 84 TRACE_syscall.seccomp.syscall_redirected
# # RUN TRACE_syscall.seccomp.syscall_errno ...
# # OK TRACE_syscall.seccomp.syscall_errno
# ok 85 TRACE_syscall.seccomp.syscall_errno
# # RUN TRACE_syscall.seccomp.syscall_faked ...
# # OK TRACE_syscall.seccomp.syscall_faked
# ok 86 TRACE_syscall.seccomp.syscall_faked
# # RUN TRACE_syscall.seccomp.kill_immediate ...
# # OK TRACE_syscall.seccomp.kill_immediate
# ok 87 TRACE_syscall.seccomp.kill_immediate
# # RUN TRACE_syscall.seccomp.skip_after ...
# # OK TRACE_syscall.seccomp.skip_after
# ok 88 TRACE_syscall.seccomp.skip_after
# # RUN TRACE_syscall.seccomp.kill_after ...
# # OK TRACE_syscall.seccomp.kill_after
# ok 89 TRACE_syscall.seccomp.kill_after
# # RUN TSYNC.siblings_fail_prctl ...
# # OK TSYNC.siblings_fail_prctl
# ok 90 TSYNC.siblings_fail_prctl
# # RUN TSYNC.two_siblings_with_ancestor ...
# # OK TSYNC.two_siblings_with_ancestor
# ok 91 TSYNC.two_siblings_with_ancestor
# # RUN TSYNC.two_sibling_want_nnp ...
# # OK TSYNC.two_sibling_want_nnp
# ok 92 TSYNC.two_sibling_want_nnp
# # RUN TSYNC.two_siblings_with_no_filter ...
# # OK TSYNC.two_siblings_with_no_filter
# ok 93 TSYNC.two_siblings_with_no_filter
# # RUN TSYNC.two_siblings_with_one_divergence ...
# # OK TSYNC.two_siblings_with_one_divergence
# ok 94 TSYNC.two_siblings_with_one_divergence
# # RUN TSYNC.two_siblings_with_one_divergence_no_tid_in_err ...
# # OK TSYNC.two_siblings_with_one_divergence_no_tid_in_err
# ok 95 TSYNC.two_siblings_with_one_divergence_no_tid_in_err
# # RUN TSYNC.two_siblings_not_under_filter ...
# # OK TSYNC.two_siblings_not_under_filter
# ok 96 TSYNC.two_siblings_not_under_filter
# # RUN O_SUSPEND_SECCOMP.setoptions ...
# # OK O_SUSPEND_SECCOMP.setoptions
# ok 97 O_SUSPEND_SECCOMP.setoptions
# # RUN O_SUSPEND_SECCOMP.seize ...
# # OK O_SUSPEND_SECCOMP.seize
# ok 98 O_SUSPEND_SECCOMP.seize
# # PASSED: 98 / 98 tests passed.
# # Totals: pass:98 fail:0 xfail:0 xpass:0 skip:0 error:0
ok 1 selftests: seccomp: seccomp_bpf
# timeout set to 180
# selftests: seccomp: seccomp_benchmark
# TAP version 13
# 1..7
# # Running on:
# # Linux 10.0.2.15 6.12.0-rc1-gf85c105361db #6 SMP Thu Oct 24 12:16:15 UTC 2024 ppc64le GNU/Linux
# # Current BPF sysctl settings:
# # /proc/sys/net/core/bpf_jit_enable:1
# # /proc/sys/net/core/bpf_jit_harden:0
# Pinned to CPU 16 of 16
# # Calibrating sample size for 15 seconds worth of syscalls ...
# # Benchmarking 56397315 syscalls...
[ 263.908829][ C15] sched: DL replenish lagged too much
# # 12.720538528 - 0.000000000 = 12720538528 (12.7s)
# # getpid native: 225 ns
# # 31.362959638 - 12.720723906 = 18642235732 (18.6s)
# # getpid RET_ALLOW 1 filter (bitmap): 330 ns
# # 50.202651764 - 31.363058760 = 18839593004 (18.8s)
# # getpid RET_ALLOW 2 filters (bitmap): 334 ns
# # 73.073719578 - 50.202778500 = 22870941078 (22.9s)
# # getpid RET_ALLOW 3 filters (full): 405 ns
# # 97.560580500 - 73.073834670 = 24486745830 (24.5s)
# # getpid RET_ALLOW 4 filters (full): 434 ns
# # Estimated total seccomp overhead for 1 bitmapped filter: 105 ns
# # Estimated total seccomp overhead for 2 bitmapped filters: 109 ns
# # Estimated total seccomp overhead for 3 full filters: 180 ns
# # Estimated total seccomp overhead for 4 full filters: 209 ns
# # Estimated seccomp entry overhead: 101 ns
# # Estimated seccomp per-filter overhead (last 2 diff): 29 ns
# # Estimated seccomp per-filter overhead (filters / 4): 27 ns
# # Expectations:
# # native ≤ 1 bitmap (225 ≤ 330): ✔️
# ok 1 native ≤ 1 bitmap
# # native ≤ 1 filter (225 ≤ 405): ✔️
# ok 2 native ≤ 1 filter
# # per-filter (last 2 diff) ≈ per-filter (filters / 4) (29 ≈ 27): ✔️
# ok 3 per-filter (last 2 diff) ≈ per-filter (filters / 4)
# # 1 bitmapped ≈ 2 bitmapped (105 ≈ 109): ✔️
# ok 4 1 bitmapped ≈ 2 bitmapped
# # entry ≈ 1 bitmapped (101 ≈ 105): ✔️
# ok 5 entry ≈ 1 bitmapped
# # entry ≈ 2 bitmapped (101 ≈ 109): ✔️
# ok 6 entry ≈ 2 bitmapped
# # native + entry + (per filter * 4) ≈ 4 filters total (442 ≈ 434): ✔️
# ok 7 native + entry + (per filter * 4) ≈ 4 filters total
# # Totals: pass:7 fail:0 xfail:0 xpass:0 skip:0 error:0
ok 2 selftests: seccomp: seccomp_benchmark
make: Leaving directory '/root/linux-ci/tools/testing/selftests'
> [root at 10 linux-ci]# make -C tools/testing/selftests TARGETS=seccomp run_tests
> make: Entering directory '/root/linux-ci/tools/testing/selftests'
> make[1]: Nothing to be done for 'all'.
> TAP version 13
> 1..2
> # timeout set to 180
> # selftests: seccomp: seccomp_bpf
> # TAP version 13
> # 1..98
> # # Starting 98 tests from 8 test cases.
> # # RUN global.kcmp ...
> # # OK global.kcmp
> # ok 1 global.kcmp
> # # RUN global.mode_strict_support ...
> # # OK global.mode_strict_support
> # ok 2 global.mode_strict_support
> # # RUN global.mode_strict_cannot_call_prctl ...
> # # seccomp_bpf.c:359:mode_strict_cannot_call_prctl:Expected 0 (0) == true (1)
> # # seccomp_bpf.c:360:mode_strict_cannot_call_prctl:Unreachable!
> # # mode_strict_cannot_call_prctl: Test exited normally instead of by signal (code: 1)
> # # FAIL global.mode_strict_cannot_call_prctl
> # not ok 3 global.mode_strict_cannot_call_prctl
> # # RUN global.no_new_privs_support ...
> # # OK global.no_new_privs_support
> # ok 4 global.no_new_privs_support
> # # RUN global.mode_filter_support ...
> # # OK global.mode_filter_support
> # ok 5 global.mode_filter_support
> # # RUN global.mode_filter_without_nnp ...
> # # OK global.mode_filter_without_nnp
> # ok 6 global.mode_filter_without_nnp
> # # RUN global.filter_size_limits ...
> # # OK global.filter_size_limits
> # ok 7 global.filter_size_limits
> # # RUN global.filter_chain_limits ...
> # # OK global.filter_chain_limits
> # ok 8 global.filter_chain_limits
> # # RUN global.mode_filter_cannot_move_to_strict ...
> # # OK global.mode_filter_cannot_move_to_strict
> # ok 9 global.mode_filter_cannot_move_to_strict
> # # RUN global.mode_filter_get_seccomp ...
> # # OK global.mode_filter_get_seccomp
> # ok 10 global.mode_filter_get_seccomp
> # # RUN global.ALLOW_all ...
> # # OK global.ALLOW_all
> # ok 11 global.ALLOW_all
> # # RUN global.empty_prog ...
> # # OK global.empty_prog
> # ok 12 global.empty_prog
> # # RUN global.log_all ...
> # # OK global.log_all
> # ok 13 global.log_all
> # # RUN global.unknown_ret_is_kill_inside ...
> # # seccomp_bpf.c:621:unknown_ret_is_kill_inside:Expected 0 (0) == syscall(__NR_getpid) (1406)
> # # seccomp_bpf.c:622:unknown_ret_is_kill_inside:getpid() shouldn't ever return
> # # unknown_ret_is_kill_inside: Test exited normally instead of by signal (code: 1)
> # # FAIL global.unknown_ret_is_kill_inside
> # not ok 14 global.unknown_ret_is_kill_inside
> # # RUN global.unknown_ret_is_kill_above_allow ...
> # # seccomp_bpf.c:643:unknown_ret_is_kill_above_allow:Expected 0 (0) == syscall(__NR_getpid) (1407)
> # # seccomp_bpf.c:644:unknown_ret_is_kill_above_allow:getpid() shouldn't ever return
> # # unknown_ret_is_kill_above_allow: Test exited normally instead of by signal (code: 1)
> # # FAIL global.unknown_ret_is_kill_above_allow
> # not ok 15 global.unknown_ret_is_kill_above_allow
> # # RUN global.KILL_all ...
> # # KILL_all: Test exited normally instead of by signal (code: 0)
> # # FAIL global.KILL_all
> # not ok 16 global.KILL_all
> # # RUN global.KILL_one ...
> # # seccomp_bpf.c:690:KILL_one:Expected 0 (0) == syscall(__NR_getpid) (1409)
> # # KILL_one: Test exited normally instead of by signal (code: 1)
> # # FAIL global.KILL_one
> # not ok 17 global.KILL_one
> # # RUN global.KILL_one_arg_one ...
> # # seccomp_bpf.c:726:KILL_one_arg_one:Expected 0 (0) == syscall(__NR_times, &fatal_address) (4295224651)
> # # KILL_one_arg_one: Test exited normally instead of by signal (code: 1)
> # # FAIL global.KILL_one_arg_one
> # not ok 18 global.KILL_one_arg_one
> # # RUN global.KILL_one_arg_six ...
> # # KILL_one_arg_six: Test exited normally instead of by signal (code: 0)
> # # FAIL global.KILL_one_arg_six
> # not ok 19 global.KILL_one_arg_six
> # # RUN global.KILL_thread ...
> # # seccomp_bpf.c:856:KILL_thread:Expected SIBLING_EXIT_FAILURE (195951310) != (unsigned long)status (195951310)
> # # seccomp_bpf.c:881:KILL_thread:Expected 0 (0) != WIFEXITED(status) (0)
> # # KILL_thread: Test terminated by assertion
> # # FAIL global.KILL_thread
> # not ok 20 global.KILL_thread
> # # RUN global.KILL_process ...
> # # seccomp_bpf.c:856:KILL_process:Expected SIBLING_EXIT_FAILURE (195951310) != (unsigned long)status (195951310)
> # # seccomp_bpf.c:901:KILL_process:Expected SIGSYS (31) == WTERMSIG(status) (6)
> # # KILL_process: Test terminated by assertion
> # # FAIL global.KILL_process
> # not ok 21 global.KILL_process
> # # RUN global.KILL_unknown ...
> # # seccomp_bpf.c:856:KILL_unknown:Expected SIBLING_EXIT_FAILURE (195951310) != (unsigned long)status (195951310)
> # # seccomp_bpf.c:922:KILL_unknown:Expected SIGSYS (31) == WTERMSIG(status) (6)
> # # KILL_unknown: Test terminated by assertion
> # # FAIL global.KILL_unknown
> # not ok 22 global.KILL_unknown
> # # RUN global.arg_out_of_range ...
> # # OK global.arg_out_of_range
> # ok 23 global.arg_out_of_range
> # # RUN global.ERRNO_valid ...
> # # seccomp_bpf.c:974:ERRNO_valid:Expected E2BIG (7) == errno (9)
> # # ERRNO_valid: Test failed
> # # FAIL global.ERRNO_valid
> # not ok 24 global.ERRNO_valid
> # # RUN global.ERRNO_zero ...
> # # seccomp_bpf.c:992:ERRNO_zero:Expected 0 (0) == read(-1, NULL, 0) (-1)
> # # ERRNO_zero: Test failed
> # # FAIL global.ERRNO_zero
> # not ok 25 global.ERRNO_zero
> # # RUN global.ERRNO_capped ...
> # # seccomp_bpf.c:1014:ERRNO_capped:Expected 4095 (4095) == errno (9)
> # # ERRNO_capped: Test failed
> # # FAIL global.ERRNO_capped
> # not ok 26 global.ERRNO_capped
> # # RUN global.ERRNO_order ...
> # # seccomp_bpf.c:1045:ERRNO_order:Expected 12 (12) == errno (9)
> # # ERRNO_order: Test failed
> # # FAIL global.ERRNO_order
> # not ok 27 global.ERRNO_order
> # # RUN global.negative_ENOSYS ...
> # # OK global.negative_ENOSYS
> # ok 28 global.negative_ENOSYS
> # # RUN global.seccomp_syscall ...
> # # OK global.seccomp_syscall
> # ok 29 global.seccomp_syscall
> # # RUN global.seccomp_syscall_mode_lock ...
> # # OK global.seccomp_syscall_mode_lock
> # ok 30 global.seccomp_syscall_mode_lock
> # # RUN global.detect_seccomp_filter_flags ...
> # # OK global.detect_seccomp_filter_flags
> # ok 31 global.detect_seccomp_filter_flags
> # # RUN global.TSYNC_first ...
> # # OK global.TSYNC_first
> # ok 32 global.TSYNC_first
> # # RUN global.syscall_restart ...
> # # syscall_restart: Test terminated by timeout
> # # FAIL global.syscall_restart
> # not ok 33 global.syscall_restart
> # # RUN global.filter_flag_log ...
> # # seccomp_bpf.c:3239:filter_flag_log:Expected 0 (0) == syscall(__NR_getpid) (1482)
> # # filter_flag_log: Test exited normally instead of by signal (code: 1)
> # # FAIL global.filter_flag_log
> # not ok 34 global.filter_flag_log
> # # RUN global.get_action_avail ...
> # # OK global.get_action_avail
> # ok 35 global.get_action_avail
> # # RUN global.get_metadata ...
> # # OK global.get_metadata
> # ok 36 global.get_metadata
> # # RUN global.user_notification_basic ...
> # # seccomp_bpf.c:3397:user_notification_basic:Expected 0 (0) == WEXITSTATUS(status) (1)
> # # user_notification_basic: Test terminated by timeout
> # # FAIL global.user_notification_basic
> # not ok 37 global.user_notification_basic
> # # RUN global.user_notification_with_tsync ...
> # # OK global.user_notification_with_tsync
> # ok 38 global.user_notification_with_tsync
> # # RUN global.user_notification_kill_in_middle ...
> # # user_notification_kill_in_middle: Test terminated by timeout
> # # FAIL global.user_notification_kill_in_middle
> # not ok 39 global.user_notification_kill_in_middle
> # # RUN global.user_notification_signal ...
> # # user_notification_signal: Test terminated by timeout
> # # FAIL global.user_notification_signal
> # not ok 40 global.user_notification_signal
> # # RUN global.user_notification_closed_listener ...
> # # seccomp_bpf.c:3647:user_notification_closed_listener:Expected 0 (0) == WEXITSTATUS(status) (1)
> # # user_notification_closed_listener: Test failed
> # # FAIL global.user_notification_closed_listener
> # not ok 41 global.user_notification_closed_listener
> # # RUN global.user_notification_child_pid_ns ...
> # # user_notification_child_pid_ns: Test terminated by timeout
> # # FAIL global.user_notification_child_pid_ns
> # not ok 42 global.user_notification_child_pid_ns
> # # RUN global.user_notification_sibling_pid_ns ...
> # # seccomp_bpf.c:3728:user_notification_sibling_pid_ns:Expected 0 (0) == WEXITSTATUS(status) (1)
> # # seccomp_bpf.c:3764:user_notification_sibling_pid_ns:Expected 0 (0) == WEXITSTATUS(status) (1)
>
>
> >
> > cheers
> >
>
More information about the Linuxppc-dev
mailing list