android_kernel_sony_sdm845/kernel
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jason A. Donenfeld bb61b00db2 timekeeping: Add raw clock fallback for random_get_entropy()
commit 1366992e16bddd5e2d9a561687f367f9f802e2e4 upstream.

The addition of random_get_entropy_fallback() provides access to
whichever time source has the highest frequency, which is useful for
gathering entropy on platforms without available cycle counters. It's
not necessarily as good as being able to quickly access a cycle counter
that the CPU has, but it's still something, even when it falls back to
being jiffies-based.

In the event that a given arch does not define get_cycles(), falling
back to the get_cycles() default implementation that returns 0 is really
not the best we can do. Instead, at least calling
random_get_entropy_fallback() would be preferable, because that always
needs to return _something_, even falling back to jiffies eventually.
It's not as though random_get_entropy_fallback() is super high precision
or guaranteed to be entropic, but basically anything that's not zero all
the time is better than returning zero all the time.

Finally, since random_get_entropy_fallback() is used during extremely
early boot when randomizing freelists in mm_init(), it can be called
before timekeeping has been initialized. In that case there really is
nothing we can do; jiffies hasn't even started ticking yet. So just give
up and return 0.

Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-25 11:45:13 +02:00
..
bpf bpf: Add kconfig knob for disabling unpriv bpf by default 2022-02-16 12:43:54 +01:00
configs config: android: enable CONFIG_SECCOMP 2016-10-11 15:06:32 -07:00
debug kdb: Make memory allocations more robust 2021-03-03 17:44:31 +01:00
events perf: Fix sys_perf_event_open() race against self 2022-05-25 08:39:49 +02:00
gcov gcov: add support for GCC 10.1 2020-09-23 08:46:14 +02:00
irq random: remove unused irq_flags argument from add_interrupt_randomness() 2022-06-25 11:45:04 +02:00
livepatch livepatch/module: make TAINT_LIVEPATCH module-specific 2016-08-26 14:42:08 +02:00
locking locking/lockdep: Avoid RCU-induced noinstr fail 2021-11-26 11:48:27 +01:00
power PM: suspend: fix return value of __setup handler 2022-04-20 09:06:31 +02:00
printk printk: fix return value of printk.devkmsg __setup handler 2022-04-20 09:06:33 +02:00
rcu rcuperf: Fix cleanup path for invalid perf_type strings 2019-05-31 06:48:30 -07:00
sched sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa 2022-04-20 09:06:32 +02:00
time timekeeping: Add raw clock fallback for random_get_entropy() 2022-06-25 11:45:13 +02:00
trace tracing: Avoid adding tracer option before update_tracer_options 2022-06-14 16:52:38 +02:00
.gitignore
acct.c kernel/acct.c: fix the acct->needcheck check in check_free_space() 2018-01-10 09:29:51 +01:00
async.c kernel/async.c: revert "async: simplify lowest_in_progress()" 2018-02-17 13:21:18 +01:00
audit.c audit: fix a net reference leak in audit_list_rules_send() 2021-04-07 12:05:41 +02:00
audit.h audit: fix a net reference leak in audit_list_rules_send() 2021-04-07 12:05:41 +02:00
audit_fsnotify.c
audit_tree.c
audit_watch.c audit: CONFIG_CHANGE don't log internal bookkeeping as an event 2020-10-01 20:40:07 +02:00
auditfilter.c audit: fix a net reference leak in audit_list_rules_send() 2021-04-07 12:05:41 +02:00
auditsc.c audit: print empty EXECVE args 2019-11-28 18:28:55 +01:00
backtracetest.c
bounds.c kbuild: fix kernel/bounds.c 'W=1' warning 2018-11-13 11:16:57 -08:00
capability.c ptrace: Capture the ptracer's creds not PT_PTRACE_CAP 2017-01-06 10:40:13 +01:00
cgroup.c cgroup-v1: Require capabilities to set release_agent 2022-02-11 08:41:17 +01:00
cgroup_freezer.c
cgroup_pids.c cgroup: pids: use atomic64_t for pids->limit 2019-12-21 10:42:02 +01:00
compat.c
configs.c
context_tracking.c
cpu.c random: clear fast pool, crng, and batches in cpuhp bring up 2022-06-25 11:45:10 +02:00
cpu_pm.c kernel/cpu_pm: Fix uninitted local in cpu_pm 2020-06-20 10:24:21 +02:00
cpuset.c sched/cpuset/pm: Fix cpuset vs. suspend-resume bugs 2017-10-12 11:51:25 +02:00
crash_dump.c
cred.c memcg: account security cred as well to kmemcg 2020-01-12 11:24:13 +01:00
delayacct.c
dma.c
exec_domain.c
exit.c futex: Mark the begin of futex exit explicitly 2021-02-03 23:19:49 +01:00
extable.c kernel/extable.c: mark core_kernel_text notrace 2017-07-21 07:42:21 +02:00
fork.c mm/hugetlb: initialize hugetlb_usage in mm_init 2021-09-22 11:43:08 +02:00
freezer.c freezer, oom: check TIF_MEMDIE on the correct task 2016-07-28 16:07:41 -07:00
futex.c mm, futex: fix shared futex pgoff on shmem huge page 2021-07-11 12:46:40 +02:00
groups.c kernel: make groups_sort calling a responsibility group_info allocators 2018-01-10 09:29:52 +01:00
hung_task.c kernel: hung_task.c: disable on suspend 2019-04-20 09:07:52 +02:00
irq_work.c
jump_label.c jump_label: Invoke jump_label_test() via early_initcall() 2017-12-14 09:28:24 +01:00
kallsyms.c
kcmp.c
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kcov.c kcov: ensure irq code sees a valid area 2018-08-03 07:55:12 +02:00
kexec.c kexec: allow architectures to override boot mapping 2016-08-02 19:35:27 -04:00
kexec_core.c objtool, x86: Add several functions and files to the objtool whitelist 2018-06-05 10:28:57 +02:00
kexec_file.c kernel: kexec_file: fix error return code of kexec_calculate_store_digests() 2021-05-22 10:40:31 +02:00
kexec_internal.h
kmod.c usermodehelper: reset umask to default before executing user process 2020-10-14 09:48:14 +02:00
kprobes.c kprobes: Limit max data_size of the kretprobe instances 2021-12-08 08:45:06 +01:00
ksysfs.c kexec: add a kexec_crash_loaded() function 2016-08-02 19:35:30 -04:00
kthread.c kthread: prevent deadlock when kthread_mod_delayed_work() races with kthread_cancel_delayed_work_sync() 2021-07-11 12:46:41 +02:00
latencytop.c
Makefile elfcore: fix building with clang 2021-02-10 09:09:25 +01:00
membarrier.c Fix: Disable sys_membarrier when nohz_full is enabled 2017-03-12 06:41:45 +01:00
memremap.c mm, devm_memremap_pages: kill mapping "System RAM" support 2019-01-13 10:03:51 +01:00
module-internal.h
module.c module: Ignore _GLOBAL_OFFSET_TABLE_ when warning for undefined symbols 2021-03-03 17:44:44 +01:00
module_signing.c
notifier.c x86/mm: split vmalloc_sync_all() 2020-04-02 17:20:26 +02:00
nsproxy.c
padata.c padata: purge get_cpu and reorder_via_wq from padata_do_serial 2020-05-27 16:41:53 +02:00
panic.c panic: ensure preemption is disabled during panic() 2019-10-17 13:42:25 -07:00
params.c
pid.c pidns: disable pid allocation if pid_ns_prepare_proc() is failed in alloc_pid() 2018-04-13 19:47:53 +02:00
pid_namespace.c memcg: enable accounting for pids in nested pid namespaces 2021-09-22 11:43:08 +02:00
profile.c profiling: fix shift-out-of-bounds bugs 2021-09-26 13:36:18 +02:00
ptrace.c ptrace: Reimplement PTRACE_KILL by always sending SIGKILL 2022-06-14 16:52:28 +02:00
range.c
reboot.c reboot: fix overflow parsing reboot cpu number 2020-11-18 18:26:32 +01:00
relay.c kernel/relay.c: fix memleak on destroy relay channel 2020-08-26 10:29:03 +02:00
resource.c resource: fix integer overflow at reallocation 2018-04-24 09:34:09 +02:00
seccomp.c seccomp: Add missing return in non-void function 2021-03-03 17:44:43 +01:00
signal.c signal: Remove the bogus sigkill_pending in ptrace_stop 2021-11-26 11:48:24 +01:00
smp.c smp: Fix offline cpu check in flush_smp_call_function_queue() 2022-04-20 09:06:46 +02:00
smpboot.c kthread/smpboot: do not park in kthread_create_on_cpu() 2016-10-11 15:06:33 -07:00
smpboot.h
softirq.c Mark HI and TASKLET softirq synchronous 2018-08-15 18:14:42 +02:00
stacktrace.c stacktrace, lockdep: Fix address, newline ugliness 2017-02-14 15:25:42 -08:00
stop_machine.c stop_machine: Use raw spinlocks 2018-08-03 07:55:24 +02:00
sys.c prctl: allow to setup brk for et_dyn executables 2021-09-26 13:36:18 +02:00
sys_ni.c x86/pkeys: Fix pkeys build breakage for some non-x86 arches 2016-09-13 14:41:36 +02:00
sysctl.c x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation reporting 2022-03-11 10:03:31 +01:00
sysctl_binary.c
task_work.c task_work: use READ_ONCE/lockless_dereference, avoid pi_lock if !task_works 2016-08-02 19:35:02 -04:00
taskstats.c taskstats: fix data-race 2020-01-12 11:24:12 +01:00
test_kprobes.c
torture.c torture: Convert torture_shutdown() to hrtimer 2016-08-22 10:01:49 -07:00
tracepoint.c tracepoint: Do not fail unregistering a probe due to memory failure 2021-03-03 17:44:38 +01:00
tsacct.c taskstats: Cleanup the use of task->exit_code 2022-02-23 11:56:40 +01:00
ucount.c kernel/ucount.c: mark user_header with kmemleak_ignore() 2017-06-17 06:41:51 +02:00
uid16.c kernel: make groups_sort calling a responsibility group_info allocators 2018-01-10 09:29:52 +01:00
up.c smp: Add function to execute a function synchronously on a CPU 2016-09-05 13:52:39 +02:00
user-return-notifier.c
user.c
user_namespace.c userns: move user access out of the mutex 2018-09-09 20:01:24 +02:00
utsname.c Merge branch 'nsfs-ioctls' into HEAD 2016-09-22 20:00:36 -05:00
utsname_sysctl.c sys: don't hold uts_sem while accessing userspace memory 2018-09-09 20:01:24 +02:00
watchdog.c kernel/watchdog: prevent false hardlockup on overloaded system 2017-06-17 06:41:57 +02:00
watchdog_hld.c kernel/watchdog: prevent false hardlockup on overloaded system 2017-06-17 06:41:57 +02:00
workqueue.c workqueue: make workqueue available early during boot 2022-06-25 11:45:09 +02:00
workqueue_internal.h workqueue: Fix NULL pointer dereference 2017-11-15 15:53:17 +01:00