Jason A. Donenfeld
3266fba206
random: remove ratelimiting for in-kernel unseeded randomness
...
commit cc1e127bfa95b5fb2f9307e7168bf8b2b45b4c5e upstream.
The CONFIG_WARN_ALL_UNSEEDED_RANDOM debug option controls whether the
kernel warns about all unseeded randomness or just the first instance.
There's some complicated rate limiting and comparison to the previous
caller, such that even with CONFIG_WARN_ALL_UNSEEDED_RANDOM enabled,
developers still don't see all the messages or even an accurate count of
how many were missed. This is the result of basically parallel
mechanisms aimed at accomplishing more or less the same thing, added at
different points in random.c history, which sort of compete with the
first-instance-only limiting we have now.
It turns out, however, that nobody cares about the first unseeded
randomness instance of in-kernel users. The same first user has been
there for ages now, and nobody is doing anything about it. It isn't even
clear that anybody _can_ do anything about it. Most places that can do
something about it have switched over to using get_random_bytes_wait()
or wait_for_random_bytes(), which is the right thing to do, but there is
still much code that needs randomness sometimes during init, and as a
geeneral rule, if you're not using one of the _wait functions or the
readiness notifier callback, you're bound to be doing it wrong just
based on that fact alone.
So warning about this same first user that can't easily change is simply
not an effective mechanism for anything at all. Users can't do anything
about it, as the Kconfig text points out -- the problem isn't in
userspace code -- and kernel developers don't or more often can't react
to it.
Instead, show the warning for all instances when CONFIG_WARN_ALL_UNSEEDED_RANDOM
is set, so that developers can debug things need be, or if it isn't set,
don't show a warning at all.
At the same time, CONFIG_WARN_ALL_UNSEEDED_RANDOM now implies setting
random.ratelimit_disable=1 on by default, since if you care about one
you probably care about the other too. And we can clean up usage around
the related urandom_warning ratelimiter as well (whose behavior isn't
changing), so that it properly counts missed messages after the 10
message threshold is reached.
Cc: Theodore Ts'o <tytso@mit.edu>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-22 14:11:17 +02:00
..
842
lib: 842: no need to check return value of debugfs_create functions
2019-07-03 16:57:17 +02:00
crypto
lib/crypto: blake2s: move hmac construction into wireguard
2022-06-22 14:11:02 +02:00
dim
dim: initialize all struct fields
2022-05-18 09:47:25 +02:00
fonts
Fonts: Replace discarded const qualifier
2020-11-10 12:37:26 +01:00
livepatch
lz4
lz4: fix LZ4_decompress_safe_partial read out of bound
2022-04-15 14:18:39 +02:00
lzo
lib/lzo: fix ambiguous encoding bug in lzo-rle
2020-06-17 16:40:28 +02:00
math
mpi
lib/mpi: use kcalloc in mpi_resize
2021-09-15 09:47:29 +02:00
raid6
lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3
2022-04-15 14:18:23 +02:00
reed_solomon
rslib: Make some functions static
2019-07-02 08:41:37 +02:00
vdso
lib/vdso: Make clock_getres() POSIX compliant again
2019-10-23 14:48:23 +02:00
xz
lib/xz: Validate the value before assigning it to an enum variable
2021-11-17 09:48:31 +01:00
zlib_deflate
zlib_inflate
lib/zlib: remove outdated and incorrect pre-increment optimization
2020-06-24 17:50:39 +02:00
zstd
lib/zstd/mem.h: replace __inline by inline
2019-09-15 19:42:16 +02:00
.gitignore
argv_split.c
ashldi3.c
ashrdi3.c
asn1_decoder.c
assoc_array.c
assoc_array: Fix BUG_ON during garbage collect
2022-06-06 08:33:50 +02:00
atomic64.c
atomic64_test.c
audit.c
bcd.c
bch.c
bitmap.c
cpumask: Implement cpumask_or_equal()
2019-07-25 15:47:37 +02:00
bitrev.c
bsearch.c
btree.c
bucket_locks.c
bug.c
bug: Remove redundant condition check in report_bug
2021-05-14 09:44:27 +02:00
build_OID_registry
bust_spinlocks.c
chacha.c
check_signature.c
checksum.c
clz_ctz.c
clz_tab.c
cmdline.c
cmpdi2.c
compat_audit.c
cpu_rmap.c
cpumask.c
crc-ccitt.c
crc-itu-t.c
crc-t10dif.c
crc-t10dif: Fix potential crypto notify dead-lock
2020-08-19 08:15:54 +02:00
crc4.c
crc7.c
crc8.c
crc16.c
crc32.c
lib/crc32.c: fix trivial typo in preprocessor condition
2020-10-29 09:57:52 +01:00
crc32defs.h
crc32test.c
lib/crc32test: remove extra local_irq_disable/enable
2020-11-10 12:37:27 +01:00
crc64.c
ctype.c
debug_info.c
debug_locks.c
debugobjects.c
debugobjects: Fix various data races
2020-02-24 08:36:52 +01:00
dec_and_lock.c
decompress.c
decompress_bunzip2.c
decompress_inflate.c
decompress_unlz4.c
lib/decompress_unlz4.c: correctly handle zero-padding around initrds.
2021-07-20 16:10:46 +02:00
decompress_unlzma.c
decompress_unlzo.c
decompress_unxz.c
lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression
2021-11-17 09:48:31 +01:00
devres.c
devres: keep both device name and resource name in pretty name
2020-08-21 13:05:32 +02:00
digsig.c
Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs"
2019-07-10 18:43:43 -07:00
dump_stack.c
dump_stack: avoid the livelock of the dump_lock
2019-11-06 08:47:50 -08:00
dynamic_debug.c
dyndbg: fix a BUG_ON in ddebug_describe_flags
2020-08-19 08:16:04 +02:00
dynamic_queue_limits.c
earlycpio.c
error-inject.c
errseq.c
extable.c
lib/extable.c: add missing prototypes
2019-09-25 17:51:39 -07:00
fault-inject.c
fdt.c
fdt_empty_tree.c
fdt_ro.c
fdt_rw.c
fdt_strerror.c
fdt_sw.c
fdt_wip.c
find_bit.c
uapi: rename ext2_swab() to swab() and share globally in swab.h
2020-04-13 10:48:07 +02:00
find_bit_benchmark.c
flex_proportions.c
gen_crc32table.c
gen_crc64table.c
genalloc.c
lib/genalloc: fix the overflow when size is too big
2021-01-12 20:16:10 +01:00
generic-radix-tree.c
lib/generic-radix-tree.c: add kmemleak annotations
2019-10-14 15:04:00 -07:00
glob.c
globtest.c
hexdump.c
hex2bin: fix access beyond string end
2022-05-09 09:03:22 +02:00
hweight.c
idr.c
ida: Free allocated bitmap in error path
2020-10-29 09:57:47 +01:00
inflate.c
interval_tree.c
interval_tree_test.c
iomap.c
iomap_copy.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 504
2019-06-19 17:09:56 +02:00
iommu-helper.c
ioremap.c
mm/ioremap: probe platform for p4d huge map support
2019-07-16 19:23:22 -07:00
iov_iter.c
lib/iov_iter: initialize "flags" in new pipe_buffer
2022-02-23 11:59:59 +01:00
irq_poll.c
irq_regs.c
is_single_threaded.c
kasprintf.c
Kconfig
ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE
2022-03-19 13:40:16 +01:00
Kconfig.debug
random: remove ratelimiting for in-kernel unseeded randomness
2022-06-22 14:11:17 +02:00
Kconfig.kasan
kasan: add memory corruption identification for software tag-based mode
2019-09-24 15:54:07 -07:00
Kconfig.kgdb
Kconfig.ubsan
kfifo.c
Partially revert "kfifo: fix kfifo_alloc() and kfifo_init()"
2019-08-30 18:47:15 -07:00
klist.c
kobject.c
kobject: Restore old behaviour of kobject_del(NULL)
2020-09-17 13:47:52 +02:00
kobject_uevent.c
kobject_uevent: remove warning in init_uevent_argv()
2021-05-19 10:08:33 +02:00
kstrtox.c
lib: vsprintf: Fix handling of number field widths in vsscanf
2021-07-14 16:53:16 +02:00
kstrtox.h
lib: vsprintf: Fix handling of number field widths in vsscanf
2021-07-14 16:53:16 +02:00
libcrc32c.c
list_debug.c
list_sort.c
lib: list_sort.c: add a blank line to avoid kernel-doc warnings
2019-06-20 14:07:34 -06:00
llist.c
locking-selftest-hardirq.h
locking-selftest-mutex.h
locking-selftest-rlock-hardirq.h
locking-selftest-rlock-softirq.h
locking-selftest-rlock.h
locking-selftest-rsem.h
locking-selftest-rtmutex.h
locking-selftest-softirq.h
locking-selftest-spin-hardirq.h
locking-selftest-spin-softirq.h
locking-selftest-spin.h
locking-selftest-wlock-hardirq.h
locking-selftest-wlock-softirq.h
locking-selftest-wlock.h
locking-selftest-wsem.h
locking-selftest.c
lockref.c
logic_pio.c
PCI: Fix pci_register_io_range() memory leak
2021-03-17 17:03:44 +01:00
lru_cache.c
lshrdi3.c
Makefile
avoid __memcat_p link failure
2021-05-07 10:51:37 +02:00
memcat_p.c
memory-notifier-error-inject.c
memweight.c
muldi3.c
net_utils.c
netdev-notifier-error-inject.c
nlattr.c
net: fix nla_strcmp to handle more then one trailing null character
2021-05-19 10:08:27 +02:00
nmi_backtrace.c
nodemask.c
nodemask: Fix return values to be unsigned
2022-06-14 18:12:02 +02:00
notifier-error-inject.c
lib: notifier-error-inject: no need to check return value of debugfs_create functions
2019-07-03 16:57:18 +02:00
notifier-error-inject.h
objagg.c
of-reconfig-notifier-error-inject.c
oid_registry.c
once.c
once: Fix panic when module unload
2021-09-03 10:08:12 +02:00
packing.c
parman.c
parser.c
pci_iomap.c
percpu-refcount.c
Merge branch 'for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu
2019-07-14 16:17:18 -07:00
percpu_counter.c
percpu_test.c
plist.c
pm-notifier-error-inject.c
radix-tree.c
idr: Fix idr_alloc_u32 on 32-bit systems
2019-11-03 06:36:50 -05:00
random32.c
random: replace custom notifier chain with standard one
2022-06-22 14:11:13 +02:00
ratelimit.c
rbtree.c
lib/rbtree: avoid generating code twice for the cached versions
2019-07-16 19:23:22 -07:00
rbtree_test.c
augmented rbtree: add new RB_DECLARE_CALLBACKS_MAX macro
2019-09-25 17:51:39 -07:00
refcount.c
rhashtable.c
sbitmap.c
sbitmap: only queue kyber's wait callback if not already active
2020-01-12 12:21:44 +01:00
scatterlist.c
sgl_alloc_order: fix memory leak
2020-11-05 11:43:22 +01:00
seq_buf.c
seq_buf: Fix overflow in seq_buf_putmem_hex()
2021-07-19 08:53:16 +02:00
sg_pool.c
SCSI sg on 20190709
2019-07-11 15:17:41 -07:00
sg_split.c
lib: scatterlist: Fix to support no mapped sg
2019-08-08 07:45:01 -06:00
sha1.c
lib/crypto: sha1: re-roll loops to reduce code size
2022-06-22 14:11:03 +02:00
show_mem.c
mm: remove quicklist page table caches
2019-09-24 15:54:09 -07:00
siphash.c
siphash: use one source of truth for siphash permutations
2022-06-22 14:11:16 +02:00
smp_processor_id.c
sort.c
media: lib/sort.c: implement sort() variant taking context argument
2019-08-19 13:14:53 -03:00
stackdepot.c
lib: stackdepot: turn depot_lock spinlock to raw_spinlock
2021-05-22 11:38:30 +02:00
stmp_device.c
string.c
lib/string.c: implement stpcpy
2020-10-01 13:18:23 +02:00
string_helpers.c
lib/string_helpers: fix some kerneldoc warnings
2019-07-16 19:23:22 -07:00
strncpy_from_user.c
lib: Reduce user_access_begin() boundaries in strncpy_from_user() and strnlen_user()
2020-01-29 16:45:29 +01:00
strnlen_user.c
lib: Reduce user_access_begin() boundaries in strncpy_from_user() and strnlen_user()
2020-01-29 16:45:29 +01:00
syscall.c
lib/syscall: fix syscall registers retrieval on 32-bit platforms
2020-12-11 13:23:32 +01:00
test-kstrtox.c
test-string_helpers.c
test_bitfield.c
test_bitmap.c
test_blackhole_dev.c
blackhole_dev: add a selftest
2019-07-01 19:34:46 -07:00
test_bpf.c
bpf/tests: Do not PASS tests without actually testing the result
2021-09-22 12:26:29 +02:00
test_debug_virtual.c
test_firmware.c
test_firmware: add support for request_firmware_into_buf
2019-09-04 13:31:28 +02:00
test_hash.c
test_hexdump.c
test_ida.c
test_kasan.c
kasan: stop tests being eliminated as dead code with FORTIFY_SOURCE
2020-06-22 09:31:12 +02:00
test_kmod.c
lib/test: use after free in register_test_dev_kmod()
2022-04-15 14:18:21 +02:00
test_list_sort.c
test_memcat_p.c
test_meminit.c
lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test
2022-01-27 09:19:55 +01:00
test_module.c
test_objagg.c
test_objagg: Fix potential memory leak in error handling
2020-06-30 15:37:04 -04:00
test_overflow.c
lib/test_overflow.c: avoid tainting the kernel and fix wrap size
2019-07-16 19:23:22 -07:00
test_parman.c
test_printf.c
vsprintf: don't obfuscate NULL and error pointers
2020-05-27 17:46:43 +02:00
test_rhashtable.c
test_siphash.c
test_sort.c
test_stackinit.c
lib/test_stackinit: Fix static initializer test
2021-09-22 12:26:38 +02:00
test_static_key_base.c
test_static_keys.c
test_string.c
lib/test_string.c: add some testcases for strchr and strnchr
2019-07-16 19:23:22 -07:00
test_strscpy.c
test_sysctl.c
test_ubsan.c
test_user_copy.c
usercopy: Avoid soft lockups in test_check_nonzero_user()
2019-10-16 14:56:21 +02:00
test_uuid.c
test_vmalloc.c
test_xarray.c
XArray: Fix xas_create_range() when multi-order entry present
2022-04-15 14:18:28 +02:00
textsearch.c
lib: textsearch: fix escapes in example code
2019-10-03 12:12:23 -04:00
timerqueue.c
lib/timerqueue: Rely on rbtree semantics for next timer
2019-07-24 17:38:01 +02:00
ts_bm.c
ts_fsm.c
ts_kmp.c
ubsan.c
lib/ubsan: don't serialize UBSAN report
2020-01-09 10:20:07 +01:00
ubsan.h
ucmpdi2.c
ucs2_string.c
usercopy.c
lib: introduce copy_struct_from_user() helper
2019-10-01 15:45:03 +02:00
uuid.c
vsprintf.c
random: replace custom notifier chain with standard one
2022-06-22 14:11:13 +02:00
win_minmax.c
xarray.c
XArray: Update the LRU list in xas_split()
2022-04-15 14:18:28 +02:00
xxhash.c