Hay
Date
May 29, 2025, 7:10 a.m.

Environment
qemu-armv7
x15

<8>[  130.870007] <LAVA_SIGNAL_STARTTC openat2_openat2_test>
exit=1timeout set to 45
selftests: openat2: resolve_test
TAP version 13
1..88
ok 1 [beneath] jump to / fails with -18 (Invalid cross-device link)
ok 2 [beneath] absolute link to $root fails with -18 (Invalid cross-device link)
ok 3 [beneath] chained absolute links to $root fails with -18 (Invalid cross-device link)
ok 4 [beneath] jump outside $root fails with -18 (Invalid cross-device link)
ok 5 [beneath] temporary jump outside $root fails with -18 (Invalid cross-device link)
ok 6 [beneath] symlink temporary jump outside $root fails with -18 (Invalid cross-device link)
ok 7 [beneath] chained symlink temporary jump outside $root fails with -18 (Invalid cross-device link)
ok 8 [beneath] garbage links to $root fails with -18 (Invalid cross-device link)
ok 9 [beneath] chained garbage links to $root fails with -18 (Invalid cross-device link)
ok 10 [beneath] ordinary path to 'root' gives path 'root'
ok 11 [beneath] ordinary path to 'etc' gives path 'etc'
ok 12 [beneath] ordinary path to 'etc/passwd' gives path 'etc/passwd'
ok 13 [beneath] relative symlink inside $root gives path 'etc/passwd'
ok 14 [beneath] chained-'..' relative symlink inside $root gives path 'etc/passwd'
ok 15 [beneath] absolute symlink component outside $root fails with -18 (Invalid cross-device link)
ok 16 [beneath] absolute symlink target outside $root fails with -18 (Invalid cross-device link)
ok 17 [beneath] absolute path outside $root fails with -18 (Invalid cross-device link)
ok 18 [beneath] cheeky absolute path outside $root fails with -18 (Invalid cross-device link)
ok 19 [beneath] chained cheeky absolute path outside $root fails with -18 (Invalid cross-device link)
ok 20 [beneath] tricky '..'-chained symlink outside $root fails with -18 (Invalid cross-device link)
ok 21 [beneath] tricky absolute + '..'-chained symlink outside $root fails with -18 (Invalid cross-device link)
ok 22 [beneath] tricky garbage link outside $root fails with -18 (Invalid cross-device link)
ok 23 [beneath] tricky absolute + garbage link outside $root fails with -18 (Invalid cross-device link)
ok 24 [in_root] jump to / gives path '.'
ok 25 [in_root] absolute symlink to /root gives path '.'
ok 26 [in_root] chained absolute symlinks to /root gives path '.'
ok 27 [in_root] '..' at root gives path '.'
ok 28 [in_root] '../root' at root gives path 'root'
ok 29 [in_root] relative symlink containing '..' above root gives path 'root'
ok 30 [in_root] garbage link to /root gives path 'root'
ok 31 [in_root] chained garbage links to /root gives path 'root'
ok 32 [in_root] relative path to 'root' gives path 'root'
ok 33 [in_root] relative path to 'etc' gives path 'etc'
ok 34 [in_root] relative path to 'etc/passwd' gives path 'etc/passwd'
ok 35 [in_root] relative symlink to 'etc/passwd' gives path 'etc/passwd'
ok 36 [in_root] chained-'..' relative symlink to 'etc/passwd' gives path 'etc/passwd'
ok 37 [in_root] chained-'..' absolute + relative symlink to 'etc/passwd' gives path 'etc/passwd'
ok 38 [in_root] absolute symlink to 'etc/passwd' gives path 'etc/passwd'
ok 39 [in_root] absolute path 'etc/passwd' gives path 'etc/passwd'
ok 40 [in_root] cheeky absolute path 'etc/passwd' gives path 'etc/passwd'
ok 41 [in_root] chained cheeky absolute path 'etc/passwd' gives path 'etc/passwd'
ok 42 [in_root] tricky '..'-chained symlink outside $root gives path 'etc/passwd'
ok 43 [in_root] tricky absolute + '..'-chained symlink outside $root gives path 'etc/passwd'
ok 44 [in_root] tricky absolute path + absolute + '..'-chained symlink outside $root gives path 'etc/passwd'
ok 45 [in_root] tricky garbage link outside $root gives path 'etc/passwd'
ok 46 [in_root] tricky absolute + garbage link outside $root gives path 'etc/passwd'
ok 47 [in_root] tricky absolute path + absolute + garbage link outside $root gives path 'etc/passwd'
ok 48 [in_root] O_CREAT of relative path inside $root gives path 'newfile1'
ok 49 [in_root] O_CREAT of absolute path gives path 'newfile2'
ok 50 [in_root] O_CREAT of tricky symlink outside root gives path 'newfile3'
ok 51 [no_xdev] cross into $mnt fails with -18 (Invalid cross-device link)
ok 52 [no_xdev] cross into $mnt/ fails with -18 (Invalid cross-device link)
ok 53 [no_xdev] cross into $mnt/. fails with -18 (Invalid cross-device link)
ok 54 [no_xdev] goto mountpoint root gives path 'mnt'
ok 55 [no_xdev] cross up through '..' fails with -18 (Invalid cross-device link)
ok 56 [no_xdev] temporary cross up through '..' fails with -18 (Invalid cross-device link)
ok 57 [no_xdev] temporary relative symlink cross up fails with -18 (Invalid cross-device link)
ok 58 [no_xdev] temporary absolute symlink cross up fails with -18 (Invalid cross-device link)
ok 59 [no_xdev] jump to / directly gives path '/'
ok 60 [no_xdev] jump to / (from /) directly gives path '/'
ok 61 [no_xdev] jump to / then proc fails with -18 (Invalid cross-device link)
ok 62 [no_xdev] jump to / then tmp fails with -18 (Invalid cross-device link)
ok 63 [no_xdev] cross through magic-link to self/root fails with -18 (Invalid cross-device link)
ok 64 [no_xdev] cross through magic-link to self/cwd fails with -18 (Invalid cross-device link)
ok 65 [no_xdev] jump through magic-link to same procfs gives path '/proc'
ok 66 [no_magiclinks] ordinary relative symlink gives path 'etc/passwd'
ok 67 [no_magiclinks] symlink to magic-link fails with -40 (Too many levels of symbolic links)
ok 68 [no_magiclinks] normal path to magic-link fails with -40 (Too many levels of symbolic links)
ok 69 [no_magiclinks] normal path to magic-link with O_NOFOLLOW gives path '/proc/355/exe'
ok 70 [no_magiclinks] symlink to magic-link path component fails with -40 (Too many levels of symbolic links)
ok 71 [no_magiclinks] magic-link path component fails with -40 (Too many levels of symbolic links)
ok 72 [no_magiclinks] magic-link path component with O_NOFOLLOW fails with -40 (Too many levels of symbolic links)
ok 73 [no_symlinks] ordinary path to '.' gives path '.'
ok 74 [no_symlinks] ordinary path to 'root' gives path 'root'
ok 75 [no_symlinks] ordinary path to 'etc' gives path 'etc'
ok 76 [no_symlinks] ordinary path to 'etc/passwd' gives path 'etc/passwd'
ok 77 [no_symlinks] relative symlink target fails with -40 (Too many levels of symbolic links)
ok 78 [no_symlinks] relative symlink component fails with -40 (Too many levels of symbolic links)
ok 79 [no_symlinks] absolute symlink target fails with -40 (Too many levels of symbolic links)
ok 80 [no_symlinks] absolute symlink component fails with -40 (Too many levels of symbolic links)
ok 81 [no_symlinks] cheeky garbage link fails with -40 (Too many levels of symbolic links)
ok 82 [no_symlinks] cheeky absolute + garbage link fails with -40 (Too many levels of symbolic links)
ok 83 [no_symlinks] cheeky absolute + absolute symlink fails with -40 (Too many levels of symbolic links)
ok 84 [no_symlinks] relative symlink with O_NOFOLLOW gives path 'relsym'
ok 85 [no_symlinks] absolute symlink with O_NOFOLLOW gives path 'abssym'
ok 86 [no_symlinks] trailing symlink with O_NOFOLLOW gives path 'cheeky/garbagelink'
ok 87 [no_symlinks] multiple symlink components with O_NOFOLLOW fails with -40 (Too many levels of symbolic links)
ok 88 [no_symlinks] multiple symlink (and garbage link) components with O_NOFOLLOW fails with -40 (Too many levels of symbolic links)
# Totals: pass:88 fail:0 xfail:0 xpass:0 skip:0 error:0
<8>[  130.931398] <LAVA_SIGNAL_ENDTC openat2_openat2_test>
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_0_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_1_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_2_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_3_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_4_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_5_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_6_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_7_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_8_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_9_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_11_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_17_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_87_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_0_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_1_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_2_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_3_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_4_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_5_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_6_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_7_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_8_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_9_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_11_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_17_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_87_succeeds pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_0_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_1_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_2_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_3_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_4_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_5_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_6_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_7_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_8_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_9_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_11_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_17_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_87_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_0_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_1_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_2_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_3_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_4_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_5_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_6_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_7_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_8_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_9_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_11_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_17_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_87_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_0_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_1_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_2_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_3_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_4_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_5_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_6_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_7_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_8_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_9_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_11_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_17_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_87_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_0_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_1_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_2_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_3_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_4_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_5_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_6_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_7_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_8_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_9_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_11_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_17_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_87_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_0_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_1_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_2_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_3_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_4_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_5_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_6_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_7_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_8_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_9_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_11_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_17_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_87_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_incompatible_flags_O_TMPFILE_O_PATH_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_TMPFILE_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_compatible_flags_O_PATH_O_CLOEXEC_succeeds pass
openat2_openat2_test_openat2_with_compatible_flags_O_PATH_O_DIRECTORY_succeeds pass
openat2_openat2_test_openat2_with_compatible_flags_O_PATH_O_NOFOLLOW_succeeds pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_RDWR_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_EXCL_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_NOCTTY_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_DIRECT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_LARGEFILE_fails_with_22_Invalid_argument fail
openat2_openat2_test_openat2_with_non-zero_how_mode_and_O_RDONLY_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_non-zero_how_mode_and_O_PATH_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_valid_how_mode_and_O_CREAT_succeeds pass
openat2_openat2_test_openat2_with_valid_how_mode_and_O_TMPFILE_succeeds pass
openat2_openat2_test_openat2_with_invalid_how_mode_and_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_very_large_how_mode_and_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_mode_and_O_TMPFILE_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_very_large_how_mode_and_O_TMPFILE_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_resolve_flags_BENEATH_IN_ROOT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_RDONLY_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_TMPFILE_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_PATH_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_currently_unknown_bit_1_63_fails_with_22_Invalid_argument pass
openat2_openat2_test fail


ok 1 [beneath] jump to / fails with -18 (Invalid cross-device link)
ok 2 [beneath] absolute link to $root fails with -18 (Invalid cross-device link)
ok 3 [beneath] chained absolute links to $root fails with -18 (Invalid cross-device link)
ok 4 [beneath] jump outside $root fails with -18 (Invalid cross-device link)
ok 5 [beneath] temporary jump outside $root fails with -18 (Invalid cross-device link)
ok 6 [beneath] symlink temporary jump outside $root fails with -18 (Invalid cross-device link)
ok 7 [beneath] chained symlink temporary jump outside $root fails with -18 (Invalid cross-device link)
ok 8 [beneath] garbage links to $root fails with -18 (Invalid cross-device link)
ok 9 [beneath] chained garbage links to $root fails with -18 (Invalid cross-device link)
ok 10 [beneath] ordinary path to 'root' gives path 'root'
ok 11 [beneath] ordinary path to 'etc' gives path 'etc'
ok 12 [beneath] ordinary path to 'etc/passwd' gives path 'etc/passwd'
ok 13 [beneath] relative symlink inside $root gives path 'etc/passwd'
ok 14 [beneath] chained-'..' relative symlink inside $root gives path 'etc/passwd'
ok 15 [beneath] absolute symlink component outside $root fails with -18 (Invalid cross-device link)
ok 16 [beneath] absolute symlink target outside $root fails with -18 (Invalid cross-device link)
ok 17 [beneath] absolute path outside $root fails with -18 (Invalid cross-device link)
ok 18 [beneath] cheeky absolute path outside $root fails with -18 (Invalid cross-device link)
ok 19 [beneath] chained cheeky absolute path outside $root fails with -18 (Invalid cross-device link)
ok 20 [beneath] tricky '..'-chained symlink outside $root fails with -18 (Invalid cross-device link)
ok 21 [beneath] tricky absolute + '..'-chained symlink outside $root fails with -18 (Invalid cross-device link)
ok 22 [beneath] tricky garbage link outside $root fails with -18 (Invalid cross-device link)
ok 23 [beneath] tricky absolute + garbage link outside $root fails with -18 (Invalid cross-device link)
ok 24 [in_root] jump to / gives path '.'
ok 25 [in_root] absolute symlink to /root gives path '.'
ok 26 [in_root] chained absolute symlinks to /root gives path '.'
ok 27 [in_root] '..' at root gives path '.'
ok 28 [in_root] '../root' at root gives path 'root'
ok 29 [in_root] relative symlink containing '..' above root gives path 'root'
ok 30 [in_root] garbage link to /root gives path 'root'
ok 31 [in_root] chained garbage links to /root gives path 'root'
ok 32 [in_root] relative path to 'root' gives path 'root'
ok 33 [in_root] relative path to 'etc' gives path 'etc'
ok 34 [in_root] relative path to 'etc/passwd' gives path 'etc/passwd'
ok 35 [in_root] relative symlink to 'etc/passwd' gives path 'etc/passwd'
ok 36 [in_root] chained-'..' relative symlink to 'etc/passwd' gives path 'etc/passwd'
ok 37 [in_root] chained-'..' absolute + relative symlink to 'etc/passwd' gives path 'etc/passwd'
ok 38 [in_root] absolute symlink to 'etc/passwd' gives path 'etc/passwd'
ok 39 [in_root] absolute path 'etc/passwd' gives path 'etc/passwd'
ok 40 [in_root] cheeky absolute path 'etc/passwd' gives path 'etc/passwd'
ok 41 [in_root] chained cheeky absolute path 'etc/passwd' gives path 'etc/passwd'
ok 42 [in_root] tricky '..'-chained symlink outside $root gives path 'etc/passwd'
ok 43 [in_root] tricky absolute + '..'-chained symlink outside $root gives path 'etc/passwd'
ok 44 [in_root] tricky absolute path + absolute + '..'-chained symlink outside $root gives path 'etc/passwd'
ok 45 [in_root] tricky garbage link outside $root gives path 'etc/passwd'
ok 46 [in_root] tricky absolute + garbage link outside $root gives path 'etc/passwd'
ok 47 [in_root] tricky absolute path + absolute + garbage link outside $root gives path 'etc/passwd'
ok 48 [in_root] O_CREAT of relative pa[   54.162384] <LAVA_SIGNAL_ENDTC openat2_openat2_test>
th inside $root gives path 'newfile1'
ok 49 [in_root] O_CREAT of absolute path gives path 'newfile2'
ok 50 [in_root] O_CREAT of tricky symlink outside root gives path 'newfile3'
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_0_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_1_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_2_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_3_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_4_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_5_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_6_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_7_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_8_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_9_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_11_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_17_succeeds pass
openat2_openat2_test_openat2_with_normal_struct_argument_misalign_87_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_0_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_1_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_2_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_3_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_4_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_5_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_6_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_7_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_8_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_9_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_11_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_17_succeeds pass
openat2_openat2_test_openat2_with_bigger_struct_zeroed_out_argument_misalign_87_succeeds pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_0_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_1_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_2_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_3_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_4_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_5_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_6_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_7_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_8_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_9_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_11_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_17_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_zero-sized_struct_argument_misalign_87_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_0_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_1_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_2_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_3_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_4_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_5_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_6_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_7_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_8_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_9_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_11_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_17_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_smaller-than-v0_struct_argument_misalign_87_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_0_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_1_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_2_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_3_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_4_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_5_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_6_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_7_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_8_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_9_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_11_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_17_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_first_future_field_argument_misalign_87_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_0_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_1_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_2_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_3_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_4_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_5_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_6_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_7_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_8_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_9_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_11_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_17_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_in_middle_of_future_fields_argument_misalign_87_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_0_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_1_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_2_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_3_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_4_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_5_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_6_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_7_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_8_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_9_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_11_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_17_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_bigger_struct_non-zero_data_at_end_of_future_fields_argument_misalign_87_fails_with_7_Argument_list_too_long pass
openat2_openat2_test_openat2_with_incompatible_flags_O_TMPFILE_O_PATH_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_TMPFILE_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_compatible_flags_O_PATH_O_CLOEXEC_succeeds pass
openat2_openat2_test_openat2_with_compatible_flags_O_PATH_O_DIRECTORY_succeeds pass
openat2_openat2_test_openat2_with_compatible_flags_O_PATH_O_NOFOLLOW_succeeds pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_RDWR_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_EXCL_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_NOCTTY_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_DIRECT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_flags_O_PATH_O_LARGEFILE_fails_with_22_Invalid_argument fail
openat2_openat2_test_openat2_with_non-zero_how_mode_and_O_RDONLY_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_non-zero_how_mode_and_O_PATH_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_valid_how_mode_and_O_CREAT_succeeds pass
openat2_openat2_test_openat2_with_valid_how_mode_and_O_TMPFILE_succeeds pass
openat2_openat2_test_openat2_with_invalid_how_mode_and_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_very_large_how_mode_and_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_mode_and_O_TMPFILE_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_very_large_how_mode_and_O_TMPFILE_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_incompatible_resolve_flags_BENEATH_IN_ROOT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_RDONLY_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_CREAT_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_TMPFILE_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_invalid_how_resolve_and_O_PATH_fails_with_22_Invalid_argument pass
openat2_openat2_test_openat2_with_currently_unknown_bit_1_63_fails_with_22_Invalid_argument pass
openat2_openat2_test fail