1
0
mirror of https://github.com/systemd/systemd synced 2026-03-19 03:24:45 +01:00

Compare commits

..

No commits in common. "e9bbb6ef0402e050efc7d7b4e6d9424599d2a803" and "e4948b0f0ada46db50247f203e5d238cee01f471" have entirely different histories.

43 changed files with 174 additions and 978 deletions

5
NEWS
View File

@ -165,7 +165,7 @@ CHANGES WITH 249 in spe:
* In .network files a new OutgoingInterface= setting has been added to * In .network files a new OutgoingInterface= setting has been added to
specify the output interface in bridge FDB setups. specify the output interface in bridge FDB setups.
* In .network files the Multipath group ID may now be configured for * In ,network files the Multipath group ID may now be configured for
[NextHop] entries, via the new Group= setting. [NextHop] entries, via the new Group= setting.
* The DHCP server logic configured in .network files gained a new * The DHCP server logic configured in .network files gained a new
@ -452,6 +452,9 @@ CHANGES WITH 249 in spe:
time, birth time, change time, modification time) to look at when time, birth time, change time, modification time) to look at when
deciding whether a path has aged enough to be cleaned. deciding whether a path has aged enough to be cleaned.
* Journal files, which are allocated in fixed incremenets, are now
truncated when rotated/archived to remove unused space from their tails.
* A new IPv6StableSecretAddress= setting has been added to .network * A new IPv6StableSecretAddress= setting has been added to .network
files, which takes an IPv6 address to use as secret for IPv6 address files, which takes an IPv6 address to use as secret for IPv6 address
generation. generation.

4
TODO
View File

@ -26,8 +26,6 @@ Janitorial Clean-ups:
Features: Features:
* in sd-id128: also parse UUIDs in RFC4122 URN syntax (i.e. chop off urn:uuid: prefix)
* ability to insert trusted configuration and secrets into the boot parameters * ability to insert trusted configuration and secrets into the boot parameters
of a kernel booting in a VM or on baremetal some way, via TPM of a kernel booting in a VM or on baremetal some way, via TPM
protection. idea: protection. idea:
@ -1031,6 +1029,8 @@ Features:
here: here:
http://blog.vmsplice.net/2020/07/rethinking-event-loop-integration-for.html http://blog.vmsplice.net/2020/07/rethinking-event-loop-integration-for.html
* investigate endianness issues of UUID vs. GUID
* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we * dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we
should be able to safely try another attempt when the bus call LoadUnit() is invoked. should be able to safely try another attempt when the bus call LoadUnit() is invoked.

View File

@ -147,13 +147,15 @@
<refsect1> <refsect1>
<title>Relation to OSF UUIDs</title> <title>Relation to OSF UUIDs</title>
<para>Note that the machine ID historically is not an OSF UUID as defined by <ulink <para>Note that the machine ID historically is not an OSF UUID as
url="https://tools.ietf.org/html/rfc4122">RFC 4122</ulink>, nor a Microsoft GUID; however, starting with defined by <ulink url="https://tools.ietf.org/html/rfc4122">RFC
systemd v30, newly generated machine IDs do qualify as Variant 1 Version 4 UUIDs, as per RFC 4122.</para> 4122</ulink>, nor a Microsoft GUID; however, starting with systemd
v30, newly generated machine IDs do qualify as v4 UUIDs.</para>
<para>In order to maintain compatibility with existing installations, an application requiring a strictly <para>In order to maintain compatibility with existing
RFC 4122 compliant UUID should decode the machine ID, and then (non-reversibly) apply the following installations, an application requiring a UUID should decode the
operations to turn it into a valid RFC 4122 Variant 1 Version 4 UUID. With <literal>id</literal> being an machine ID, and then apply the following operations to turn it
into a valid OSF v4 UUID. With <literal>id</literal> being an
unsigned character array:</para> unsigned character array:</para>
<programlisting>/* Set UUID version to 4 --- truly random generation */ <programlisting>/* Set UUID version to 4 --- truly random generation */

View File

@ -50,11 +50,13 @@
<refsect1> <refsect1>
<title>Description</title> <title>Description</title>
<para><filename>sd-id128.h</filename> provides APIs to process and generate 128-bit ID values. The <para><filename>sd-id128.h</filename> provides APIs to process and
128-bit ID values processed and generated by these APIs are a generalization of OSF UUIDs as defined by generate 128-bit ID values. The 128-bit ID values processed and
<ulink url="https://tools.ietf.org/html/rfc4122">RFC 4122</ulink> but use a simpler string format. These generated by these APIs are a generalization of OSF UUIDs as
functions impose no structure on the used IDs, much unlike OSF UUIDs or Microsoft GUIDs, but are mostly defined by <ulink url="https://tools.ietf.org/html/rfc4122">RFC
compatible with those types of IDs. 4122</ulink> but use a simpler string format. These functions
impose no structure on the used IDs, much unlike OSF UUIDs or
Microsoft GUIDs, but are fully compatible with those types of IDs.
</para> </para>
<para>See <para>See
@ -99,7 +101,8 @@
int main(int argc, char **argv) { int main(int argc, char **argv) {
puts("Match for coredumps: MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR); puts("Match for coredumps: MESSAGE_ID=" SD_MESSAGE_COREDUMP_STR);
}</programlisting> }
</programlisting>
<para><function>SD_ID128_CONST_STR()</function> may be used to <para><function>SD_ID128_CONST_STR()</function> may be used to
convert constant 128-bit IDs into constant strings for output. The convert constant 128-bit IDs into constant strings for output. The
@ -122,13 +125,9 @@ int main(int argc, char **argv) {
}</programlisting> }</programlisting>
<para><constant>SD_ID128_UUID_FORMAT_STR</constant> is similar to <para><constant>SD_ID128_UUID_FORMAT_STR</constant> is similar to
<constant>SD_ID128_FORMAT_STR</constant> but includes separating hyphens to conform to the "<ulink <constant>SD_ID128_FORMAT_STR</constant> but includes separating hyphens to conform to the
url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical "<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical representation</ulink>".
representation</ulink>". This formats the string based on <ulink </para>
url="https://tools.ietf.org/html/rfc4122">RFC4122</ulink> Variant 1 rules, i.e. converting from Big
Endian byte order. This matches behaviour of most other Linux userspace infrastructure. It's probably
best to avoid UUIDs of other variants, in order to avoid unnecessary ambiguities. All 128-bit IDs
generated by the sd-id128 APIs strictly conform to Variant 1 Version 4 UUIDs, as per RFC 4122.</para>
<para>Use <function>sd_id128_equal()</function> to compare two 128-bit IDs:</para> <para>Use <function>sd_id128_equal()</function> to compare two 128-bit IDs:</para>

View File

@ -101,10 +101,10 @@
<para>Note that <function>sd_id128_get_machine_app_specific()</function>, <para>Note that <function>sd_id128_get_machine_app_specific()</function>,
<function>sd_id128_get_boot()</function>, <function>sd_id128_get_boot_app_specific()</function>, and <function>sd_id128_get_boot()</function>, <function>sd_id128_get_boot_app_specific()</function>, and
<function>sd_id128_get_invocation()</function> always return UUID Variant 1 Version 4 compatible IDs. <function>sd_id128_get_invocation()</function> always return UUID v4 compatible IDs.
<function>sd_id128_get_machine()</function> will also return a UUID Variant 1 Version 4 compatible ID on <function>sd_id128_get_machine()</function> will also return a UUID v4-compatible ID on new installations
new installations but might not on older. It is possible to convert the machine ID non-reversibly into a but might not on older. It is possible to convert the machine ID into a UUID v4-compatible one. For more
UUID Variant 1 Version 4 compatible one. For more information, see information, see
<citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>. It is <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>. It is
hence guaranteed that these functions will never return the ID consisting of all zero or all one bits hence guaranteed that these functions will never return the ID consisting of all zero or all one bits
(<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>) — with the possible exception of (<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>) — with the possible exception of

View File

@ -42,9 +42,9 @@
<filename>/dev/urandom</filename> kernel random number <filename>/dev/urandom</filename> kernel random number
generator.</para> generator.</para>
<para>Note that <function>sd_id128_randomize()</function> always returns a UUID Variant 1 Version 4 <para>Note that <function>sd_id128_randomize()</function> always returns a UUID v4-compatible ID. It is
compatible ID. It is hence guaranteed that this function will never return the ID consisting of all zero hence guaranteed that this function will never return the ID consisting of all zero or all one bits
or all one bits (<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>).</para> (<constant>SD_ID128_NULL</constant>, <constant>SD_ID128_ALLF</constant>).</para>
<para>For more information about the <literal>sd_id128_t</literal> <para>For more information about the <literal>sd_id128_t</literal>
type, see type, see

View File

@ -54,11 +54,6 @@
<constant>NULL</constant> the function will validate the passed ID string, but not actually return it in parsed <constant>NULL</constant> the function will validate the passed ID string, but not actually return it in parsed
form.</para> form.</para>
<para>Note that when parsing 37 character UUIDs this is done strictly in Big Endian byte order,
i.e. according to <ulink url="https://tools.ietf.org/html/rfc4122">RFC4122</ulink> Variant 1
rules, even if the UUID encodes a different variant. This matches behaviour in various other Linux
userspace tools. It's probably wise to avoid UUIDs of other variant types.</para>
<para>For more information about the <literal>sd_id128_t</literal> <para>For more information about the <literal>sd_id128_t</literal>
type see type see
<citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>. <citerefentry><refentrytitle>sd-id128</refentrytitle><manvolnum>3</manvolnum></citerefentry>.

View File

@ -660,7 +660,6 @@ foreach header : ['crypt.h',
'valgrind/memcheck.h', 'valgrind/memcheck.h',
'valgrind/valgrind.h', 'valgrind/valgrind.h',
'linux/time_types.h', 'linux/time_types.h',
'sys/sdt.h',
] ]
conf.set10('HAVE_' + header.underscorify().to_upper(), conf.set10('HAVE_' + header.underscorify().to_upper(),

View File

@ -356,13 +356,11 @@ arch_list = [
'mipso32', 'mipso32',
'powerpc', 'powerpc',
'powerpc64', 'powerpc64',
'riscv32',
'riscv64', 'riscv64',
's390', 's390',
's390x', 's390x',
'sparc', 'sparc',
'x86_64' 'x86_64']
]
run_target( run_target(
'update-syscall-tables', 'update-syscall-tables',

View File

@ -22,12 +22,7 @@
# error "Unknown MIPS ABI" # error "Unknown MIPS ABI"
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# elif __riscv_xlen == 64
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# elif defined(__sparc__) # elif defined(__sparc__)
# elif defined(__x86_64__) # elif defined(__x86_64__)
@ -66,14 +61,8 @@
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_bpf 361 # define systemd_NR_bpf 361
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_bpf 280 # define systemd_NR_bpf 280
# elif __riscv_xlen == 64
# define systemd_NR_bpf 280
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_bpf 351 # define systemd_NR_bpf 351
# elif defined(__sparc__) # elif defined(__sparc__)
@ -130,14 +119,8 @@ assert_cc(__NR_bpf == systemd_NR_bpf);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_close_range 436 # define systemd_NR_close_range 436
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_close_range 436 # define systemd_NR_close_range 436
# elif __riscv_xlen == 64
# define systemd_NR_close_range 436
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_close_range 436 # define systemd_NR_close_range 436
# elif defined(__sparc__) # elif defined(__sparc__)
@ -194,14 +177,8 @@ assert_cc(__NR_close_range == systemd_NR_close_range);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_copy_file_range 379 # define systemd_NR_copy_file_range 379
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_copy_file_range 285 # define systemd_NR_copy_file_range 285
# elif __riscv_xlen == 64
# define systemd_NR_copy_file_range 285
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_copy_file_range 375 # define systemd_NR_copy_file_range 375
# elif defined(__sparc__) # elif defined(__sparc__)
@ -258,14 +235,8 @@ assert_cc(__NR_copy_file_range == systemd_NR_copy_file_range);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_epoll_pwait2 441 # define systemd_NR_epoll_pwait2 441
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_epoll_pwait2 441 # define systemd_NR_epoll_pwait2 441
# elif __riscv_xlen == 64
# define systemd_NR_epoll_pwait2 441
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_epoll_pwait2 441 # define systemd_NR_epoll_pwait2 441
# elif defined(__sparc__) # elif defined(__sparc__)
@ -322,14 +293,8 @@ assert_cc(__NR_epoll_pwait2 == systemd_NR_epoll_pwait2);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_getrandom 359 # define systemd_NR_getrandom 359
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_getrandom 278 # define systemd_NR_getrandom 278
# elif __riscv_xlen == 64
# define systemd_NR_getrandom 278
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_getrandom 349 # define systemd_NR_getrandom 349
# elif defined(__sparc__) # elif defined(__sparc__)
@ -386,14 +351,8 @@ assert_cc(__NR_getrandom == systemd_NR_getrandom);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_memfd_create 360 # define systemd_NR_memfd_create 360
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_memfd_create 279 # define systemd_NR_memfd_create 279
# elif __riscv_xlen == 64
# define systemd_NR_memfd_create 279
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_memfd_create 350 # define systemd_NR_memfd_create 350
# elif defined(__sparc__) # elif defined(__sparc__)
@ -450,14 +409,8 @@ assert_cc(__NR_memfd_create == systemd_NR_memfd_create);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_mount_setattr 442 # define systemd_NR_mount_setattr 442
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_mount_setattr 442 # define systemd_NR_mount_setattr 442
# elif __riscv_xlen == 64
# define systemd_NR_mount_setattr 442
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_mount_setattr 442 # define systemd_NR_mount_setattr 442
# elif defined(__sparc__) # elif defined(__sparc__)
@ -514,14 +467,8 @@ assert_cc(__NR_mount_setattr == systemd_NR_mount_setattr);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_move_mount 429 # define systemd_NR_move_mount 429
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_move_mount 429 # define systemd_NR_move_mount 429
# elif __riscv_xlen == 64
# define systemd_NR_move_mount 429
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_move_mount 429 # define systemd_NR_move_mount 429
# elif defined(__sparc__) # elif defined(__sparc__)
@ -578,14 +525,8 @@ assert_cc(__NR_move_mount == systemd_NR_move_mount);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_name_to_handle_at 345 # define systemd_NR_name_to_handle_at 345
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_name_to_handle_at 264 # define systemd_NR_name_to_handle_at 264
# elif __riscv_xlen == 64
# define systemd_NR_name_to_handle_at 264
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_name_to_handle_at 335 # define systemd_NR_name_to_handle_at 335
# elif defined(__sparc__) # elif defined(__sparc__)
@ -642,14 +583,8 @@ assert_cc(__NR_name_to_handle_at == systemd_NR_name_to_handle_at);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_open_tree 428 # define systemd_NR_open_tree 428
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_open_tree 428 # define systemd_NR_open_tree 428
# elif __riscv_xlen == 64
# define systemd_NR_open_tree 428
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_open_tree 428 # define systemd_NR_open_tree 428
# elif defined(__sparc__) # elif defined(__sparc__)
@ -706,14 +641,8 @@ assert_cc(__NR_open_tree == systemd_NR_open_tree);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_pidfd_open 434 # define systemd_NR_pidfd_open 434
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_pidfd_open 434 # define systemd_NR_pidfd_open 434
# elif __riscv_xlen == 64
# define systemd_NR_pidfd_open 434
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_pidfd_open 434 # define systemd_NR_pidfd_open 434
# elif defined(__sparc__) # elif defined(__sparc__)
@ -770,14 +699,8 @@ assert_cc(__NR_pidfd_open == systemd_NR_pidfd_open);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_pidfd_send_signal 424 # define systemd_NR_pidfd_send_signal 424
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_pidfd_send_signal 424 # define systemd_NR_pidfd_send_signal 424
# elif __riscv_xlen == 64
# define systemd_NR_pidfd_send_signal 424
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_pidfd_send_signal 424 # define systemd_NR_pidfd_send_signal 424
# elif defined(__sparc__) # elif defined(__sparc__)
@ -834,14 +757,8 @@ assert_cc(__NR_pidfd_send_signal == systemd_NR_pidfd_send_signal);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_pkey_mprotect 386 # define systemd_NR_pkey_mprotect 386
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_pkey_mprotect 288 # define systemd_NR_pkey_mprotect 288
# elif __riscv_xlen == 64
# define systemd_NR_pkey_mprotect 288
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_pkey_mprotect 384 # define systemd_NR_pkey_mprotect 384
# elif defined(__sparc__) # elif defined(__sparc__)
@ -898,14 +815,8 @@ assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_renameat2 357 # define systemd_NR_renameat2 357
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_renameat2 276 # define systemd_NR_renameat2 276
# elif __riscv_xlen == 64
# define systemd_NR_renameat2 276
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_renameat2 347 # define systemd_NR_renameat2 347
# elif defined(__sparc__) # elif defined(__sparc__)
@ -962,14 +873,8 @@ assert_cc(__NR_renameat2 == systemd_NR_renameat2);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_setns 350 # define systemd_NR_setns 350
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_setns 268 # define systemd_NR_setns 268
# elif __riscv_xlen == 64
# define systemd_NR_setns 268
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_setns 339 # define systemd_NR_setns 339
# elif defined(__sparc__) # elif defined(__sparc__)
@ -1026,14 +931,8 @@ assert_cc(__NR_setns == systemd_NR_setns);
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_statx 383 # define systemd_NR_statx 383
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_statx 291 # define systemd_NR_statx 291
# elif __riscv_xlen == 64
# define systemd_NR_statx 291
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_statx 379 # define systemd_NR_statx 379
# elif defined(__sparc__) # elif defined(__sparc__)

View File

@ -73,14 +73,8 @@ DEF_TEMPLATE_B = '''\
# endif # endif
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define systemd_NR_{syscall} {nr_powerpc} # define systemd_NR_{syscall} {nr_powerpc}
# elif defined(__riscv) # elif defined(__riscv) && defined(__LP64__)
# if __riscv_xlen == 32
# define systemd_NR_{syscall} {nr_riscv32}
# elif __riscv_xlen == 64
# define systemd_NR_{syscall} {nr_riscv64} # define systemd_NR_{syscall} {nr_riscv64}
# else
# error "Unknown RISC-V ABI"
# endif
# elif defined(__s390__) # elif defined(__s390__)
# define systemd_NR_{syscall} {nr_s390} # define systemd_NR_{syscall} {nr_s390}
# elif defined(__sparc__) # elif defined(__sparc__)

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load kexec_load
keyctl keyctl
kill kill
landlock_add_rule
landlock_create_ruleset
landlock_restrict_self
lchown lchown
lchown32 lchown32
lgetxattr lgetxattr

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 448 kexec_load 448
keyctl 441 keyctl 441
kill 37 kill 37
landlock_add_rule 555
landlock_create_ruleset 554
landlock_restrict_self 556
lchown 208 lchown 208
lchown32 lchown32
lgetxattr 386 lgetxattr 386
@ -404,7 +401,7 @@ pwritev 491
pwritev2 521 pwritev2 521
query_module 347 query_module 347
quotactl 148 quotactl 148
quotactl_path quotactl_path 553
read 3 read 3
readahead 379 readahead 379
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load 294
kexec_load 104 kexec_load 104
keyctl 219 keyctl 219
kill 129 kill 129
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown lchown
lchown32 lchown32
lgetxattr 9 lgetxattr 9
@ -404,7 +401,7 @@ pwritev 70
pwritev2 287 pwritev2 287
query_module query_module
quotactl 60 quotactl 60
quotactl_path quotactl_path 443
read 63 read 63
readahead 213 readahead 213
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load 401
kexec_load 347 kexec_load 347
keyctl 311 keyctl 311
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 16 lchown 16
lchown32 198 lchown32 198
lgetxattr 230 lgetxattr 230
@ -404,7 +401,7 @@ pwritev 362
pwritev2 393 pwritev2 393
query_module query_module
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 225 readahead 225
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load 294
kexec_load 104 kexec_load 104
keyctl 219 keyctl 219
kill 129 kill 129
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown lchown
lchown32 lchown32
lgetxattr 9 lgetxattr 9
@ -404,7 +401,7 @@ pwritev 70
pwritev2 287 pwritev2 287
query_module query_module
quotactl 60 quotactl 60
quotactl_path quotactl_path 443
read 63 read 63
readahead 213 readahead 213
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 283 kexec_load 283
keyctl 288 keyctl 288
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 16 lchown 16
lchown32 198 lchown32 198
lgetxattr 230 lgetxattr 230
@ -404,7 +401,7 @@ pwritev 334
pwritev2 379 pwritev2 379
query_module 167 query_module 167
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 225 readahead 225
readdir 89 readdir 89

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 1268 kexec_load 1268
keyctl 1273 keyctl 1273
kill 1053 kill 1053
landlock_add_rule 1469
landlock_create_ruleset 1468
landlock_restrict_self 1470
lchown 1124 lchown 1124
lchown32 lchown32
lgetxattr 1221 lgetxattr 1221
@ -404,7 +401,7 @@ pwritev 1320
pwritev2 1349 pwritev2 1349
query_module query_module
quotactl 1137 quotactl 1137
quotactl_path quotactl_path 1467
read 1026 read 1026
readahead 1216 readahead 1216
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 313 kexec_load 313
keyctl 281 keyctl 281
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 182 lchown 182
lchown32 212 lchown32 212
lgetxattr 227 lgetxattr 227
@ -404,7 +401,7 @@ pwritev 330
pwritev2 378 pwritev2 378
query_module 167 query_module 167
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 240 readahead 240
readdir 89 readdir 89

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 5270 kexec_load 5270
keyctl 5241 keyctl 5241
kill 5060 kill 5060
landlock_add_rule 5445
landlock_create_ruleset 5444
landlock_restrict_self 5446
lchown 5092 lchown 5092
lchown32 lchown32
lgetxattr 5184 lgetxattr 5184
@ -404,7 +401,7 @@ pwritev 5290
pwritev2 5322 pwritev2 5322
query_module 5171 query_module 5171
quotactl 5172 quotactl 5172
quotactl_path quotactl_path 5443
read 5000 read 5000
readahead 5179 readahead 5179
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 6274 kexec_load 6274
keyctl 6245 keyctl 6245
kill 6060 kill 6060
landlock_add_rule 6445
landlock_create_ruleset 6444
landlock_restrict_self 6446
lchown 6092 lchown 6092
lchown32 lchown32
lgetxattr 6184 lgetxattr 6184
@ -404,7 +401,7 @@ pwritev 6294
pwritev2 6326 pwritev2 6326
query_module 6171 query_module 6171
quotactl 6172 quotactl 6172
quotactl_path quotactl_path 6443
read 6000 read 6000
readahead 6179 readahead 6179
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 4311 kexec_load 4311
keyctl 4282 keyctl 4282
kill 4037 kill 4037
landlock_add_rule 4445
landlock_create_ruleset 4444
landlock_restrict_self 4446
lchown 4016 lchown 4016
lchown32 lchown32
lgetxattr 4228 lgetxattr 4228
@ -404,7 +401,7 @@ pwritev 4331
pwritev2 4362 pwritev2 4362
query_module 4187 query_module 4187
quotactl 4131 quotactl 4131
quotactl_path quotactl_path 4443
read 4003 read 4003
readahead 4223 readahead 4223
readdir 4089 readdir 4089

View File

@ -182,9 +182,6 @@ kexec_file_load 382
kexec_load 268 kexec_load 268
keyctl 271 keyctl 271
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 16 lchown 16
lchown32 lchown32
lgetxattr 213 lgetxattr 213
@ -404,7 +401,7 @@ pwritev 321
pwritev2 381 pwritev2 381
query_module 166 query_module 166
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 191 readahead 191
readdir 89 readdir 89

View File

@ -182,9 +182,6 @@ kexec_file_load 382
kexec_load 268 kexec_load 268
keyctl 271 keyctl 271
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 16 lchown 16
lchown32 lchown32
lgetxattr 213 lgetxattr 213
@ -404,7 +401,7 @@ pwritev 321
pwritev2 381 pwritev2 381
query_module 166 query_module 166
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 191 readahead 191
readdir 89 readdir 89

View File

@ -1,598 +0,0 @@
_llseek
_newselect
_sysctl
accept 202
accept4 242
access
acct 89
add_key 217
adjtimex
alarm
arc_gettls
arc_settls
arc_usr_cmpxchg
arch_prctl
arm_fadvise64_64
atomic_barrier
atomic_cmpxchg_32
bdflush
bind 200
bpf 280
brk 214
cachectl
cacheflush
capget 90
capset 91
chdir 49
chmod
chown
chown32
chroot 51
clock_adjtime
clock_adjtime64 405
clock_getres
clock_getres_time64 406
clock_gettime
clock_gettime64 403
clock_nanosleep
clock_nanosleep_time64 407
clock_settime
clock_settime64 404
clone 220
clone2
clone3
close 57
close_range 436
connect 203
copy_file_range 285
creat
create_module
delete_module 106
dipc
dup 23
dup2
dup3 24
epoll_create
epoll_create1 20
epoll_ctl 21
epoll_ctl_old
epoll_pwait 22
epoll_pwait2 441
epoll_wait
epoll_wait_old
eventfd
eventfd2 19
exec_with_loader
execv
execve 221
execveat 281
exit 93
exit_group 94
faccessat 48
faccessat2 439
fadvise64
fadvise64_64 223
fallocate 47
fanotify_init 262
fanotify_mark 263
fchdir 50
fchmod 52
fchmodat 53
fchown 55
fchown32
fchownat 54
fcntl
fcntl64 25
fdatasync 83
fgetxattr 10
finit_module 273
flistxattr 13
flock 32
fork
fp_udfiex_crtl
fremovexattr 16
fsconfig 431
fsetxattr 7
fsmount 432
fsopen 430
fspick 433
fstat
fstat64
fstatat64
fstatfs
fstatfs64 44
fsync 82
ftruncate
ftruncate64 46
futex
futex_time64 422
futimesat
get_kernel_syms
get_mempolicy 236
get_robust_list 100
get_thread_area
getcpu 168
getcwd 17
getdents
getdents64 61
getdomainname
getdtablesize
getegid 177
getegid32
geteuid 175
geteuid32
getgid 176
getgid32
getgroups 158
getgroups32
gethostname
getitimer 102
getpagesize
getpeername 205
getpgid 155
getpgrp
getpid 172
getpmsg
getppid 173
getpriority 141
getrandom 278
getresgid 150
getresgid32
getresuid 148
getresuid32
getrlimit
getrusage 165
getsid 156
getsockname 204
getsockopt 209
gettid 178
gettimeofday
getuid 174
getuid32
getunwind
getxattr 8
getxgid
getxpid
getxuid
idle
init_module 105
inotify_add_watch 27
inotify_init
inotify_init1 26
inotify_rm_watch 28
io_cancel 3
io_destroy 1
io_getevents
io_pgetevents
io_pgetevents_time64 416
io_setup 0
io_submit 2
io_uring_enter 426
io_uring_register 427
io_uring_setup 425
ioctl 29
ioperm
iopl
ioprio_get 31
ioprio_set 30
ipc
kcmp 272
kern_features
kexec_file_load 294
kexec_load 104
keyctl 219
kill 129
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown
lchown32
lgetxattr 9
link
linkat 37
listen 201
listxattr 11
llistxattr 12
lookup_dcookie 18
lremovexattr 15
lseek
lsetxattr 6
lstat
lstat64
madvise 233
mbind 235
membarrier 283
memfd_create 279
memory_ordering
migrate_pages 238
mincore 232
mkdir
mkdirat 34
mknod
mknodat 33
mlock 228
mlock2 284
mlockall 230
mmap
mmap2 222
modify_ldt
mount 40
mount_setattr 442
move_mount 429
move_pages 239
mprotect 226
mq_getsetattr 185
mq_notify 184
mq_open 180
mq_timedreceive
mq_timedreceive_time64 419
mq_timedsend
mq_timedsend_time64 418
mq_unlink 181
mremap 216
msgctl 187
msgget 186
msgrcv 188
msgsnd 189
msync 227
multiplexer
munlock 229
munlockall 231
munmap 215
name_to_handle_at 264
nanosleep
newfstatat
nfsservctl 42
nice
old_adjtimex
old_getpagesize
oldfstat
oldlstat
oldolduname
oldstat
oldumount
olduname
open
open_by_handle_at 265
open_tree 428
openat 56
openat2 437
or1k_atomic
osf_adjtime
osf_afs_syscall
osf_alt_plock
osf_alt_setsid
osf_alt_sigpending
osf_asynch_daemon
osf_audcntl
osf_audgen
osf_chflags
osf_execve
osf_exportfs
osf_fchflags
osf_fdatasync
osf_fpathconf
osf_fstat
osf_fstatfs
osf_fstatfs64
osf_fuser
osf_getaddressconf
osf_getdirentries
osf_getdomainname
osf_getfh
osf_getfsstat
osf_gethostid
osf_getitimer
osf_getlogin
osf_getmnt
osf_getrusage
osf_getsysinfo
osf_gettimeofday
osf_kloadcall
osf_kmodcall
osf_lstat
osf_memcntl
osf_mincore
osf_mount
osf_mremap
osf_msfs_syscall
osf_msleep
osf_mvalid
osf_mwakeup
osf_naccept
osf_nfssvc
osf_ngetpeername
osf_ngetsockname
osf_nrecvfrom
osf_nrecvmsg
osf_nsendmsg
osf_ntp_adjtime
osf_ntp_gettime
osf_old_creat
osf_old_fstat
osf_old_getpgrp
osf_old_killpg
osf_old_lstat
osf_old_open
osf_old_sigaction
osf_old_sigblock
osf_old_sigreturn
osf_old_sigsetmask
osf_old_sigvec
osf_old_stat
osf_old_vadvise
osf_old_vtrace
osf_old_wait
osf_oldquota
osf_pathconf
osf_pid_block
osf_pid_unblock
osf_plock
osf_priocntlset
osf_profil
osf_proplist_syscall
osf_reboot
osf_revoke
osf_sbrk
osf_security
osf_select
osf_set_program_attributes
osf_set_speculative
osf_sethostid
osf_setitimer
osf_setlogin
osf_setsysinfo
osf_settimeofday
osf_shmat
osf_signal
osf_sigprocmask
osf_sigsendset
osf_sigstack
osf_sigwaitprim
osf_sstk
osf_stat
osf_statfs
osf_statfs64
osf_subsys_info
osf_swapctl
osf_swapon
osf_syscall
osf_sysinfo
osf_table
osf_uadmin
osf_usleep_thread
osf_uswitch
osf_utc_adjtime
osf_utc_gettime
osf_utimes
osf_utsname
osf_wait4
osf_waitid
pause
pciconfig_iobase
pciconfig_read
pciconfig_write
perf_event_open 241
perfctr
perfmonctl
personality 92
pidfd_getfd 438
pidfd_open 434
pidfd_send_signal 424
pipe
pipe2 59
pivot_root 41
pkey_alloc 289
pkey_free 290
pkey_mprotect 288
poll
ppoll
ppoll_time64 414
prctl 167
pread64 67
preadv 69
preadv2 286
prlimit64 261
process_madvise 440
process_vm_readv 270
process_vm_writev 271
pselect6
pselect6_time64 413
ptrace 117
pwrite64 68
pwritev 70
pwritev2 287
query_module
quotactl 60
quotactl_path
read 63
readahead 213
readdir
readlink
readlinkat 78
readv 65
reboot 142
recv
recvfrom 207
recvmmsg
recvmmsg_time64 417
recvmsg 212
remap_file_pages 234
removexattr 14
rename
renameat
renameat2 276
request_key 218
restart_syscall 128
riscv_flush_icache 259
rmdir
rseq 293
rt_sigaction 134
rt_sigpending 136
rt_sigprocmask 135
rt_sigqueueinfo 138
rt_sigreturn 139
rt_sigsuspend 133
rt_sigtimedwait
rt_sigtimedwait_time64 421
rt_tgsigqueueinfo 240
rtas
s390_guarded_storage
s390_pci_mmio_read
s390_pci_mmio_write
s390_runtime_instr
s390_sthyi
sched_get_affinity
sched_get_priority_max 125
sched_get_priority_min 126
sched_getaffinity 123
sched_getattr 275
sched_getparam 121
sched_getscheduler 120
sched_rr_get_interval
sched_rr_get_interval_time64 423
sched_set_affinity
sched_setaffinity 122
sched_setattr 274
sched_setparam 118
sched_setscheduler 119
sched_yield 124
seccomp 277
select
semctl 191
semget 190
semop 193
semtimedop
semtimedop_time64 420
send
sendfile
sendfile64 71
sendmmsg 269
sendmsg 211
sendto 206
set_mempolicy 237
set_robust_list 99
set_thread_area
set_tid_address 96
setdomainname 162
setfsgid 152
setfsgid32
setfsuid 151
setfsuid32
setgid 144
setgid32
setgroups 159
setgroups32
sethae
sethostname 161
setitimer 103
setns 268
setpgid 154
setpgrp
setpriority 140
setregid 143
setregid32
setresgid 149
setresgid32
setresuid 147
setresuid32
setreuid 145
setreuid32
setrlimit
setsid 157
setsockopt 208
settimeofday
setuid 146
setuid32
setxattr 5
sgetmask
shmat 196
shmctl 195
shmdt 197
shmget 194
shutdown 210
sigaction
sigaltstack 132
signal
signalfd
signalfd4 74
sigpending
sigprocmask
sigreturn
sigsuspend
socket 198
socketcall
socketpair 199
splice 76
spu_create
spu_run
ssetmask
stat
stat64
statfs
statfs64 43
statx 291
stime
subpage_prot
swapcontext
swapoff 225
swapon 224
switch_endian
symlink
symlinkat 36
sync 81
sync_file_range 84
sync_file_range2
syncfs 267
sys_debug_setcontext
syscall
sysfs
sysinfo 179
syslog 116
sysmips
tee 77
tgkill 131
time
timer_create 107
timer_delete 111
timer_getoverrun 109
timer_gettime
timer_gettime64 408
timer_settime
timer_settime64 409
timerfd
timerfd_create 85
timerfd_gettime
timerfd_gettime64 410
timerfd_settime
timerfd_settime64 411
times 153
tkill 130
truncate
truncate64 45
ugetrlimit
umask 166
umount
umount2 39
uname 160
unlink
unlinkat 35
unshare 97
uselib
userfaultfd 282
ustat
utime
utimensat
utimensat_time64 412
utimes
utrap_install
vfork
vhangup 58
vm86
vm86old
vmsplice 75
wait4
waitid 95
waitpid
write 64
writev 66

View File

@ -182,9 +182,6 @@ kexec_file_load 294
kexec_load 104 kexec_load 104
keyctl 219 keyctl 219
kill 129 kill 129
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown lchown
lchown32 lchown32
lgetxattr 9 lgetxattr 9
@ -404,7 +401,7 @@ pwritev 70
pwritev2 287 pwritev2 287
query_module query_module
quotactl 60 quotactl 60
quotactl_path quotactl_path 443
read 63 read 63
readahead 213 readahead 213
readdir readdir

View File

@ -182,9 +182,6 @@ kexec_file_load 381
kexec_load 277 kexec_load 277
keyctl 280 keyctl 280
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 16 lchown 16
lchown32 198 lchown32 198
lgetxattr 228 lgetxattr 228
@ -404,7 +401,7 @@ pwritev 329
pwritev2 377 pwritev2 377
query_module 167 query_module 167
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 222 readahead 222
readdir 89 readdir 89

View File

@ -182,9 +182,6 @@ kexec_file_load 381
kexec_load 277 kexec_load 277
keyctl 280 keyctl 280
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 198 lchown 198
lchown32 lchown32
lgetxattr 228 lgetxattr 228
@ -404,7 +401,7 @@ pwritev 329
pwritev2 377 pwritev2 377
query_module 167 query_module 167
quotactl 131 quotactl 131
quotactl_path quotactl_path 443
read 3 read 3
readahead 222 readahead 222
readdir 89 readdir 89

View File

@ -182,9 +182,6 @@ kexec_file_load
kexec_load 306 kexec_load 306
keyctl 283 keyctl 283
kill 37 kill 37
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 16 lchown 16
lchown32 31 lchown32 31
lgetxattr 173 lgetxattr 173
@ -404,7 +401,7 @@ pwritev 325
pwritev2 359 pwritev2 359
query_module 184 query_module 184
quotactl 165 quotactl 165
quotactl_path quotactl_path 443
read 3 read 3
readahead 205 readahead 205
readdir 204 readdir 204

View File

@ -182,9 +182,6 @@ kexec_file_load 320
kexec_load 246 kexec_load 246
keyctl 250 keyctl 250
kill 62 kill 62
landlock_add_rule 445
landlock_create_ruleset 444
landlock_restrict_self 446
lchown 94 lchown 94
lchown32 lchown32
lgetxattr 192 lgetxattr 192
@ -404,7 +401,7 @@ pwritev 296
pwritev2 328 pwritev2 328
query_module 178 query_module 178
quotactl 179 quotactl 179
quotactl_path quotactl_path 443
read 0 read 0
readahead 187 readahead 187
readdir readdir

View File

@ -89,6 +89,41 @@
# pragma GCC diagnostic ignored "-Waddress-of-packed-member" # pragma GCC diagnostic ignored "-Waddress-of-packed-member"
#endif #endif
static int journal_file_tail_end(JournalFile *f, uint64_t *ret_offset) {
Object *tail;
uint64_t p;
int r;
assert(f);
assert(f->header);
assert(ret_offset);
p = le64toh(f->header->tail_object_offset);
if (p == 0)
p = le64toh(f->header->header_size);
else {
uint64_t sz;
r = journal_file_move_to_object(f, OBJECT_UNUSED, p, &tail);
if (r < 0)
return r;
sz = le64toh(READ_NOW(tail->object.size));
if (sz > UINT64_MAX - sizeof(uint64_t) + 1)
return -EBADMSG;
sz = ALIGN64(sz);
if (p > UINT64_MAX - sz)
return -EBADMSG;
p += sz;
}
*ret_offset = p;
return 0;
}
/* This may be called from a separate thread to prevent blocking the caller for the duration of fsync(). /* This may be called from a separate thread to prevent blocking the caller for the duration of fsync().
* As a result we use atomic operations on f->offline_state for inter-thread communications with * As a result we use atomic operations on f->offline_state for inter-thread communications with
* journal_file_set_offline() and journal_file_set_online(). */ * journal_file_set_offline() and journal_file_set_online(). */
@ -122,6 +157,25 @@ static void journal_file_set_offline_internal(JournalFile *f) {
f->header->state = f->archive ? STATE_ARCHIVED : STATE_OFFLINE; f->header->state = f->archive ? STATE_ARCHIVED : STATE_OFFLINE;
(void) fsync(f->fd); (void) fsync(f->fd);
if (f->archive) {
uint64_t p;
int r;
/* truncate excess from the end of archives */
r = journal_file_tail_end(f, &p);
if (r < 0)
log_debug_errno(r, "Failed to determine end of tail object, ignoring: %m");
else {
/* arena_size can't exceed the file size, ensure it's updated before truncating */
f->header->arena_size = htole64(p - le64toh(f->header->header_size));
(void) fsync(f->fd);
if (ftruncate(f->fd, p) < 0)
log_debug_errno(errno, "Failed to truncate archive at end of tail object, ignoring: %m");
}
}
break; break;
case OFFLINE_OFFLINING: case OFFLINE_OFFLINING:
@ -1054,7 +1108,7 @@ int journal_file_append_object(
int r; int r;
uint64_t p; uint64_t p;
Object *tail, *o; Object *o;
void *t; void *t;
assert(f); assert(f);
@ -1066,27 +1120,10 @@ int journal_file_append_object(
if (r < 0) if (r < 0)
return r; return r;
p = le64toh(f->header->tail_object_offset); r = journal_file_tail_end(f, &p);
if (p == 0)
p = le64toh(f->header->header_size);
else {
uint64_t sz;
r = journal_file_move_to_object(f, OBJECT_UNUSED, p, &tail);
if (r < 0) if (r < 0)
return r; return r;
sz = le64toh(READ_NOW(tail->object.size));
if (sz > UINT64_MAX - sizeof(uint64_t) + 1)
return -EBADMSG;
sz = ALIGN64(sz);
if (p > UINT64_MAX - sz)
return -EBADMSG;
p += sz;
}
r = journal_file_allocate(f, p, size); r = journal_file_allocate(f, p, size);
if (r < 0) if (r < 0)
return r; return r;

View File

@ -26,7 +26,6 @@
#include "netlink-util.h" #include "netlink-util.h"
#include "networkd-manager.h" #include "networkd-manager.h"
#include "networkd-queue.h" #include "networkd-queue.h"
#include "networkd-setlink.h"
#include "nlmon.h" #include "nlmon.h"
#include "path-lookup.h" #include "path-lookup.h"
#include "siphash24.h" #include "siphash24.h"
@ -551,7 +550,7 @@ static bool netdev_is_ready_to_create(NetDev *netdev, Link *link) {
req = (Request) { req = (Request) {
.link = link, .link = link,
.type = REQUEST_TYPE_SET_LINK, .type = REQUEST_TYPE_SET_LINK,
.set_link_operation_ptr = INT_TO_PTR(SET_LINK_MTU), .set_link_operation = SET_LINK_MTU,
}; };
if (ordered_set_contains(link->manager->request_queue, &req)) if (ordered_set_contains(link->manager->request_queue, &req))

View File

@ -12,7 +12,6 @@
#include "networkd-route.h" #include "networkd-route.h"
#include "networkd-routing-policy-rule.h" #include "networkd-routing-policy-rule.h"
#include "networkd-queue.h" #include "networkd-queue.h"
#include "networkd-setlink.h"
static void request_free_object(RequestType type, void *object) { static void request_free_object(RequestType type, void *object) {
switch(type) { switch(type) {
@ -124,10 +123,9 @@ static void request_hash_func(const Request *req, struct siphash *state) {
case REQUEST_TYPE_ROUTING_POLICY_RULE: case REQUEST_TYPE_ROUTING_POLICY_RULE:
routing_policy_rule_hash_func(req->rule, state); routing_policy_rule_hash_func(req->rule, state);
break; break;
case REQUEST_TYPE_SET_LINK: { case REQUEST_TYPE_SET_LINK:
trivial_hash_func(req->set_link_operation_ptr, state); siphash24_compress(&req->set_link_operation, sizeof(req->set_link_operation), state);
break; break;
}
case REQUEST_TYPE_UP_DOWN: case REQUEST_TYPE_UP_DOWN:
break; break;
default: default:
@ -174,7 +172,7 @@ static int request_compare_func(const struct Request *a, const struct Request *b
case REQUEST_TYPE_ROUTING_POLICY_RULE: case REQUEST_TYPE_ROUTING_POLICY_RULE:
return routing_policy_rule_compare_func(a->rule, b->rule); return routing_policy_rule_compare_func(a->rule, b->rule);
case REQUEST_TYPE_SET_LINK: case REQUEST_TYPE_SET_LINK:
return trivial_compare_func(a->set_link_operation_ptr, b->set_link_operation_ptr); return CMP(a->set_link_operation, b->set_link_operation);
case REQUEST_TYPE_UP_DOWN: case REQUEST_TYPE_UP_DOWN:
return 0; return 0;
default: default:

View File

@ -4,6 +4,7 @@
#include "sd-event.h" #include "sd-event.h"
#include "networkd-link.h" #include "networkd-link.h"
#include "networkd-setlink.h"
typedef struct Address Address; typedef struct Address Address;
typedef struct AddressLabel AddressLabel; typedef struct AddressLabel AddressLabel;
@ -39,6 +40,8 @@ typedef enum RequestType {
_REQUEST_TYPE_INVALID = -EINVAL, _REQUEST_TYPE_INVALID = -EINVAL,
} RequestType; } RequestType;
assert_cc(sizeof(SetLinkOperation) <= sizeof(void*));
typedef struct Request { typedef struct Request {
Link *link; Link *link;
RequestType type; RequestType type;
@ -53,7 +56,7 @@ typedef struct Request {
NextHop *nexthop; NextHop *nexthop;
Route *route; Route *route;
RoutingPolicyRule *rule; RoutingPolicyRule *rule;
void *set_link_operation_ptr; SetLinkOperation set_link_operation;
NetDev *netdev; NetDev *netdev;
void *object; void *object;
}; };

View File

@ -10,8 +10,8 @@
#include "networkd-link.h" #include "networkd-link.h"
#include "networkd-manager.h" #include "networkd-manager.h"
#include "networkd-queue.h" #include "networkd-queue.h"
#include "networkd-setlink.h"
#include "string-table.h" #include "string-table.h"
#include "sysctl-util.h"
static const char *const set_link_operation_table[_SET_LINK_OPERATION_MAX] = { static const char *const set_link_operation_table[_SET_LINK_OPERATION_MAX] = {
[SET_LINK_ADDRESS_GENERATION_MODE] = "IPv6LL address generation mode", [SET_LINK_ADDRESS_GENERATION_MODE] = "IPv6LL address generation mode",
@ -491,7 +491,7 @@ static bool link_is_ready_to_call_set_link(Request *req) {
assert(req); assert(req);
link = req->link; link = req->link;
op = PTR_TO_INT(req->set_link_operation_ptr); op = req->set_link_operation;
if (!IN_SET(link->state, LINK_STATE_INITIALIZED, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED)) if (!IN_SET(link->state, LINK_STATE_INITIALIZED, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED))
return false; return false;
@ -572,27 +572,23 @@ static bool link_is_ready_to_call_set_link(Request *req) {
} }
int request_process_set_link(Request *req) { int request_process_set_link(Request *req) {
SetLinkOperation op;
int r; int r;
assert(req); assert(req);
assert(req->link); assert(req->link);
assert(req->type == REQUEST_TYPE_SET_LINK); assert(req->type == REQUEST_TYPE_SET_LINK);
assert(req->set_link_operation >= 0 && req->set_link_operation < _SET_LINK_OPERATION_MAX);
assert(req->netlink_handler); assert(req->netlink_handler);
op = PTR_TO_INT(req->set_link_operation_ptr);
assert(op >= 0 && op < _SET_LINK_OPERATION_MAX);
if (!link_is_ready_to_call_set_link(req)) if (!link_is_ready_to_call_set_link(req))
return 0; return 0;
r = link_configure(req->link, op, req->userdata, req->netlink_handler); r = link_configure(req->link, req->set_link_operation, req->userdata, req->netlink_handler);
if (r < 0) if (r < 0)
return log_link_error_errno(req->link, r, "Failed to set %s: %m", return log_link_error_errno(req->link, r, "Failed to set %s: %m",
set_link_operation_to_string(op)); set_link_operation_to_string(req->set_link_operation));
if (op == SET_LINK_FLAGS) if (req->set_link_operation == SET_LINK_FLAGS)
req->link->set_flags_messages++; req->link->set_flags_messages++;
return 1; return 1;

View File

@ -21,10 +21,6 @@ typedef enum SetLinkOperation {
_SET_LINK_OPERATION_INVALID = -EINVAL, _SET_LINK_OPERATION_INVALID = -EINVAL,
} SetLinkOperation; } SetLinkOperation;
/* SetLinkOperation is casted to int, then stored in void* with INT_TO_PTR(). */
assert_cc(sizeof(SetLinkOperation) <= sizeof(void*));
assert_cc(sizeof(SetLinkOperation) <= sizeof(int));
int link_request_to_set_addrgen_mode(Link *link); int link_request_to_set_addrgen_mode(Link *link);
int link_request_to_set_bond(Link *link); int link_request_to_set_bond(Link *link);
int link_request_to_set_bridge(Link *link); int link_request_to_set_bridge(Link *link);

View File

@ -691,6 +691,7 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"open_by_handle_at\0" "open_by_handle_at\0"
"pivot_root\0" "pivot_root\0"
"quotactl\0" "quotactl\0"
"quotactl_path\0"
"setdomainname\0" "setdomainname\0"
"setfsuid\0" "setfsuid\0"
"setfsuid32\0" "setfsuid32\0"

View File

@ -1,11 +1,6 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once #pragma once
#if HAVE_SYS_SDT_H
#define SDT_USE_VARIADIC
#include <sys/sdt.h>
#endif
#include "sd-device.h" #include "sd-device.h"
#include "time-util.h" #include "time-util.h"
@ -51,30 +46,3 @@ int udev_resolve_subsys_kernel(const char *string, char *result, size_t maxsize,
int udev_queue_is_empty(void); int udev_queue_is_empty(void);
int udev_queue_init(void); int udev_queue_init(void);
#if HAVE_SYS_SDT_H
/* Each trace point can have different number of additional arguments. Note that when the macro is used only
* additional arguments are listed in the macro invocation!
*
* Default arguments for each trace point are as follows:
* - arg0 - action
* - arg1 - sysname
* - arg2 - syspath
* - arg3 - subsystem
*/
#define DEVICE_TRACE_POINT(name, dev, ...) \
do { \
PROTECT_ERRNO; \
const char *_n = NULL, *_p = NULL, *_s = NULL; \
sd_device *_d = (dev); \
sd_device_action_t _a = _SD_DEVICE_ACTION_INVALID; \
(void) sd_device_get_action(_d, &_a); \
(void) sd_device_get_sysname(_d, &_n); \
(void) sd_device_get_syspath(_d, &_p); \
(void) sd_device_get_subsystem(_d, &_s); \
STAP_PROBEV(udev, name, device_action_to_string(_a), _n, _p, _s __VA_OPT__(,) __VA_ARGS__);\
} while(false);
#else
#define DEVICE_TRACE_POINT(name, dev, ...) ((void) 0)
#endif

View File

@ -63,9 +63,7 @@ int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret);
#define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" #define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
#define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).bytes[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes[13], (x).bytes[14], (x).bytes[15] #define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).bytes[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes[13], (x).bytes[14], (x).bytes[15]
/* Like SD_ID128_FORMAT_STR, but formats as UUID, not in plain format (Strictly Big Endian byte order, /* Like SD_ID128_FORMAT_STR, but formats as UUID, not in plain format */
* i.e. treats everything as RFC4122 Variant 1 UUIDs, even if variant says otherwise, but matching other
* Linux userspace behaviour.) */
#define SD_ID128_UUID_FORMAT_STR "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x" #define SD_ID128_UUID_FORMAT_STR "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
#define SD_ID128_CONST_STR(x) \ #define SD_ID128_CONST_STR(x) \

View File

@ -805,18 +805,10 @@ static void test_load_syscall_filter_set_raw(void) {
assert_se(s = hashmap_new(NULL)); assert_se(s = hashmap_new(NULL));
#if defined __NR_access && __NR_access >= 0 #if defined __NR_access && __NR_access >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(-1)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(-1)) >= 0);
log_debug("has access()"); #else
#endif
#if defined __NR_faccessat && __NR_faccessat >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(-1)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(-1)) >= 0);
log_debug("has faccessat()");
#endif
#if defined __NR_faccessat2 && __NR_faccessat2 >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat2 + 1), INT_TO_PTR(-1)) >= 0);
log_debug("has faccessat2()");
#endif #endif
assert_se(!hashmap_isempty(s));
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0); assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0);
assert_se(access("/", F_OK) < 0); assert_se(access("/", F_OK) < 0);
@ -824,16 +816,14 @@ static void test_load_syscall_filter_set_raw(void) {
assert_se(poll(NULL, 0, 0) == 0); assert_se(poll(NULL, 0, 0) == 0);
hashmap_clear(s); s = hashmap_free(s);
assert_se(s = hashmap_new(NULL));
#if defined __NR_access && __NR_access >= 0 #if defined __NR_access && __NR_access >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(EILSEQ)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_access + 1), INT_TO_PTR(EILSEQ)) >= 0);
#endif #else
#if defined __NR_faccessat && __NR_faccessat >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(EILSEQ)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat + 1), INT_TO_PTR(EILSEQ)) >= 0);
#endif #endif
#if defined __NR_faccessat2 && __NR_faccessat2 >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_faccessat2 + 1), INT_TO_PTR(EILSEQ)) >= 0);
#endif
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0); assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUCLEAN), true) >= 0);
@ -842,21 +832,15 @@ static void test_load_syscall_filter_set_raw(void) {
assert_se(poll(NULL, 0, 0) == 0); assert_se(poll(NULL, 0, 0) == 0);
hashmap_clear(s); s = hashmap_free(s);
assert_se(s = hashmap_new(NULL));
#if defined __NR_poll && __NR_poll >= 0 #if defined __NR_poll && __NR_poll >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(-1)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(-1)) >= 0);
log_debug("has poll()"); #elif defined __NR_ppoll
#endif
#if defined __NR_ppoll && __NR_ppoll >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(-1)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(-1)) >= 0);
log_debug("has ppoll()");
#endif
#if defined __NR_ppoll_time64 && __NR_ppoll_time64 >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll_time64 + 1), INT_TO_PTR(-1)) >= 0);
log_debug("has ppoll_time64()");
#endif #endif
assert_se(!hashmap_isempty(s));
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0); assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0);
assert_se(access("/", F_OK) < 0); assert_se(access("/", F_OK) < 0);
@ -865,16 +849,15 @@ static void test_load_syscall_filter_set_raw(void) {
assert_se(poll(NULL, 0, 0) < 0); assert_se(poll(NULL, 0, 0) < 0);
assert_se(errno == EUNATCH); assert_se(errno == EUNATCH);
hashmap_clear(s); s = hashmap_free(s);
assert_se(s = hashmap_new(NULL));
#if defined __NR_poll && __NR_poll >= 0 #if defined __NR_poll && __NR_poll >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(EILSEQ)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_poll + 1), INT_TO_PTR(EILSEQ)) >= 0);
#endif #elif defined __NR_ppoll
#if defined __NR_ppoll && __NR_ppoll >= 0 assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(-1)) >= 0);
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(EILSEQ)) >= 0); assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll + 1), INT_TO_PTR(EILSEQ)) >= 0);
#endif #endif
#if defined __NR_ppoll_time64 && __NR_ppoll_time64 >= 0
assert_se(hashmap_put(s, UINT32_TO_PTR(__NR_ppoll_time64 + 1), INT_TO_PTR(EILSEQ)) >= 0);
#endif
assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0); assert_se(seccomp_load_syscall_filter_set_raw(SCMP_ACT_ALLOW, s, SCMP_ACT_ERRNO(EUNATCH), true) >= 0);

View File

@ -603,8 +603,6 @@ static int on_spawn_timeout(sd_event_source *s, uint64_t usec, void *userdata) {
assert(spawn); assert(spawn);
DEVICE_TRACE_POINT(spawn_timeout, spawn->device, spawn->cmd);
kill_and_sigcont(spawn->pid, spawn->timeout_signal); kill_and_sigcont(spawn->pid, spawn->timeout_signal);
log_device_error(spawn->device, "Spawned process '%s' ["PID_FMT"] timed out after %s, killing", log_device_error(spawn->device, "Spawned process '%s' ["PID_FMT"] timed out after %s, killing",
@ -650,8 +648,6 @@ static int on_spawn_sigchld(sd_event_source *s, const siginfo_t *si, void *userd
log_device_error(spawn->device, "Process '%s' failed due to unknown reason.", spawn->cmd); log_device_error(spawn->device, "Process '%s' failed due to unknown reason.", spawn->cmd);
} }
DEVICE_TRACE_POINT(spawn_exit, spawn->device, spawn->cmd);
sd_event_exit(sd_event_source_get_event(s), ret); sd_event_exit(sd_event_source_get_event(s), ret);
return 1; return 1;
} }
@ -789,8 +785,6 @@ int udev_event_spawn(UdevEvent *event,
(void) close_all_fds(NULL, 0); (void) close_all_fds(NULL, 0);
(void) rlimit_nofile_safe(); (void) rlimit_nofile_safe();
DEVICE_TRACE_POINT(spawn_exec, event->dev, cmd);
execve(argv[0], argv, envp); execve(argv[0], argv, envp);
_exit(EXIT_FAILURE); _exit(EXIT_FAILURE);
} }
@ -1020,14 +1014,10 @@ int udev_event_execute_rules(
return r; return r;
} }
DEVICE_TRACE_POINT(rules_start, dev);
r = udev_rules_apply_to_event(rules, event, timeout_usec, timeout_signal, properties_list); r = udev_rules_apply_to_event(rules, event, timeout_usec, timeout_signal, properties_list);
if (r < 0) if (r < 0)
return log_device_debug_errno(dev, r, "Failed to apply udev rules: %m"); return log_device_debug_errno(dev, r, "Failed to apply udev rules: %m");
DEVICE_TRACE_POINT(rules_finished, dev);
r = rename_netif(event); r = rename_netif(event);
if (r < 0) if (r < 0)
return r; return r;

View File

@ -29,7 +29,6 @@
#include "udev-builtin.h" #include "udev-builtin.h"
#include "udev-event.h" #include "udev-event.h"
#include "udev-rules.h" #include "udev-rules.h"
#include "udev-util.h"
#include "user-util.h" #include "user-util.h"
#include "virt.h" #include "virt.h"
@ -2262,9 +2261,6 @@ static int udev_rule_apply_line_to_event(
return 0; return 0;
event->esc = ESCAPE_UNSET; event->esc = ESCAPE_UNSET;
DEVICE_TRACE_POINT(rules_apply_line, event->dev, line->rule_file->filename, line->line_number);
LIST_FOREACH_SAFE(tokens, token, next_token, line->tokens) { LIST_FOREACH_SAFE(tokens, token, next_token, line->tokens) {
line->current_token = token; line->current_token = token;

View File

@ -617,8 +617,6 @@ static int worker_spawn(Manager *manager, struct event *event) {
return log_error_errno(r, "Failed to fork() worker: %m"); return log_error_errno(r, "Failed to fork() worker: %m");
} }
if (r == 0) { if (r == 0) {
DEVICE_TRACE_POINT(worker_spawned, event->dev, getpid());
/* Worker process */ /* Worker process */
r = worker_main(manager, worker_monitor, sd_device_ref(event->dev)); r = worker_main(manager, worker_monitor, sd_device_ref(event->dev));
log_close(); log_close();
@ -1047,8 +1045,6 @@ static int on_uevent(sd_device_monitor *monitor, sd_device *dev, void *userdata)
assert(manager); assert(manager);
DEVICE_TRACE_POINT(kernel_uevent_received, dev);
device_ensure_usec_initialized(dev, NULL); device_ensure_usec_initialized(dev, NULL);
r = event_queue_insert(manager, dev); r = event_queue_insert(manager, dev);
@ -1184,8 +1180,6 @@ static int synthesize_change_one(sd_device *dev, sd_device *target) {
if (r < 0) if (r < 0)
return log_device_debug_errno(target, r, "Failed to trigger 'change' uevent: %m"); return log_device_debug_errno(target, r, "Failed to trigger 'change' uevent: %m");
DEVICE_TRACE_POINT(synthetic_change_event, dev);
return 0; return 0;
} }