Run ND6 timer at most once per second.
I observed a constantly running nd6_timer() taking exclusive net
lock. Problem is that routes, both expired and cached, are not
deleted. Regardless of the question what to do with such routes,
restarting the ND6 timer immediately does not make sense. Limit
calling nd6_timer() to once per second.
OK stsp@
Limit softnet threads to number of CPU.
Currently 8 softnet threads are always startet, but only up to
number of CPU are used. So remove useless threads. Softnet tasks
must be initialized before autoconf is running. Drivers need the
tasks to attach queues. But number of CPU is known only after
autoconf has discovered them. Split softnet initialization code
into softnet_init() and softnet_percpu(). The latter destroys task
queues that are not needed. At that point softnet threads have not
been forked as they were deferred. Rename function softnet_count()
consistently.
OK mlarkin@
Fix relocation handling for PLT entries with a r_addend
On sparc64 the first 32768 PLT entries use a direct form of relocation
while all other entires afterwards use a PC relative pointer that initally
points at PLT0 and is then fixed up to point at the function. These entries
use the r_addend.
This relocation mode was broken in two ways:
- kbind only modified 32bit of the 64bit pointer
- the offset calculation used the wrong base pointer. It used the address
of the PLT0 entry instead of the object base address.
Introduce a simple _dl_reloc_addend() wrapper which does the calculation
in both the _dl_bind and _dl_md_reloc_all_plt case. Adjust the kbind
calls to update two Elf_Word values so the pointer is swapped by the kernel.
There is still an issue that kbind(2) does not update this 64bit value in
an atomic operation.
This fixes the stage1 gcc15 cc1 and cc1plus binaries that have over 60'000
PLT entries.
With and OK miod@ jca@
Implement Canonical Cache Representation filemode decoder
Decode and verify CCR objects using the profile described in draft-spaghetti-sidrops-rpki-ccr-00
OK & with tb@
Add bcmstbintc(4), a driver for the L2 interrupt controller found on
Broadcom Set-top Box SoCs (such as the BCM2712 found in the Raspberry Pi 5).
ok mglocker@, bmercer@
Cleanup the kernel fuse device code to remove support for ioctl. This
is no longer needed since an fbuf is now read or written in one go,
rather than a combination of read(2) or write(2) and ioctl(2) to read
or write the buffer used by the vfs syscalls read, write, readlink and
readdir.
ok mpi@, ok jca@ to drop it.
Call aes_set_encrypt_key_generic() from aes_set_decrypt_key_generic().
With the renaming, aes_set_decrypt_key_generic() should now call
aes_set_encrypt_key_generic() directly.
Allow generic AES implementation to be used as a fallback.
Rename the C based AES implementation to *_generic() and provide
*_internal() wrappers for these. This allows for architectures to provide
accelerated versions without having to also provide a fallback
implementation.
ok tb@
Zero the round keys on AES_set_{en,de}crypt_key() function entry.
This avoids leaving previous round keys around on failure, or leaving parts
of previous round keys behind if reused with a smaller key size.
ok tb@
Validate AES_set_{encrypt,decrypt}_key() inputs at API boundary.
Every aes_set_{encrypt,decrypt}_key_internal() implementation is currently
required to check the inputs and return appropriate error codes. Pull the
input validation up to the API boundary, setting key->rounds at the same
time. Additionally, call aes_set_encrypt_key_internal() directly from
aes_set_decrypt_key_internal(), rather than going back through the public
API.
ok tb@
wycheproof: rework test selection
Since this has grown organically, the test selection has become a weird mix
of globs, regexes and test variants and it is hard to reason about what is
run and why. Instead, load all the json files from testvectors_v1/ and look
at algorithm (almost always available) and test schema to figure out if we
support it in libcrypto and the test harness. This separates the logic of
the test runner better from the test selection. Also make it a fatal error
if we don't explicitly skip an unknown algorithm.