[lkml]   [2022]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH 4.14 009/237] random: remove preempt disabled region
From: Ingo Molnar <>

commit b34fbaa9289328c7aec67d2b8b8b7d02bc61c67d upstream.

No need to keep preemption disabled across the whole function.

mix_pool_bytes() uses a spin_lock() to protect the pool and there are
other places like write_pool() whhich invoke mix_pool_bytes() without
disabling preemption.
credit_entropy_bits() is invoked from other places like
add_hwgenerator_randomness() without disabling preemption.

Before commit 95b709b6be49 ("random: drop trickle mode") the function
used __this_cpu_inc_return() which would require disabled preemption.
The preempt_disable() section was added in commit 43d5d3018c37 ("[PATCH]
random driver preempt robustness", history tree). It was claimed that
the code relied on "vt_ioctl() being called under BKL".

Cc: "Theodore Ts'o" <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
[bigeasy: enhance the commit message]
Signed-off-by: Sebastian Andrzej Siewior <>
Signed-off-by: Theodore Ts'o <>
Signed-off-by: Jason A. Donenfeld <>
Signed-off-by: Greg Kroah-Hartman <>
drivers/char/random.c | 4 ----
1 file changed, 4 deletions(-)

--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1136,8 +1136,6 @@ static void add_timer_randomness(struct
} sample;
long delta, delta2, delta3;

- preempt_disable();
sample.jiffies = jiffies;
sample.cycles = random_get_entropy();
sample.num = num;
@@ -1175,8 +1173,6 @@ static void add_timer_randomness(struct
* and limit entropy entimate to 12 bits.
credit_entropy_bits(r, min_t(int, fls(delta>>1), 11));
- preempt_enable();

void add_input_randomness(unsigned int type, unsigned int code,

 \ /
  Last update: 2022-06-23 19:24    [W:0.557 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site