diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-10-02 01:21:47 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-10-02 01:21:47 -0400 |
commit | 4235d8292938d5523d2a7959c97aa6b9c115abbc (patch) | |
tree | e250928d01f248cdcb136990be43fce4b078f8de | |
parent | 2848a7109905c7e5bc0eb9382955a43be6e1fc08 (diff) | |
download | 4.12-rt-patches-4235d8292938d5523d2a7959c97aa6b9c115abbc.tar.gz |
refresh random-avoid-preempt_disable-ed-section.patch
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | patches/random-avoid-preempt_disable-ed-section.patch | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/patches/random-avoid-preempt_disable-ed-section.patch b/patches/random-avoid-preempt_disable-ed-section.patch index eef8df002426c..5b2b5baf9225e 100644 --- a/patches/random-avoid-preempt_disable-ed-section.patch +++ b/patches/random-avoid-preempt_disable-ed-section.patch @@ -1,3 +1,4 @@ +From 27a1cd3f65bc0ad863dc7ca28c2b2ac1a588defb Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 12 May 2017 15:46:17 +0200 Subject: [PATCH] random: avoid preempt_disable()ed section @@ -8,13 +9,12 @@ Work around it with local_locks. Cc: stable-rt@vger.kernel.org # where it applies to Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ---- - drivers/char/random.c | 11 +++++++---- - 1 file changed, 7 insertions(+), 4 deletions(-) +diff --git a/drivers/char/random.c b/drivers/char/random.c +index baa9005df4f6..723b3b320f0a 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c -@@ -265,6 +265,7 @@ +@@ -262,6 +262,7 @@ #include <linux/syscalls.h> #include <linux/completion.h> #include <linux/uuid.h> @@ -22,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #include <crypto/chacha20.h> #include <asm/processor.h> -@@ -2030,6 +2031,7 @@ static rwlock_t batched_entropy_reset_lo +@@ -2022,6 +2023,7 @@ struct batched_entropy { * goal of being quite fast and not depleting entropy. */ static DEFINE_PER_CPU(struct batched_entropy, batched_entropy_u64); @@ -30,19 +30,17 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> u64 get_random_u64(void) { u64 ret; -@@ -2046,7 +2048,7 @@ u64 get_random_u64(void) +@@ -2036,18 +2038,19 @@ u64 get_random_u64(void) return ret; #endif - batch = &get_cpu_var(batched_entropy_u64); + batch = &get_locked_var(batched_entropy_u64_lock, batched_entropy_u64); - if (use_lock) - read_lock_irqsave(&batched_entropy_reset_lock, flags); if (batch->position % ARRAY_SIZE(batch->entropy_u64) == 0) { -@@ -2056,12 +2058,13 @@ u64 get_random_u64(void) + extract_crng((u8 *)batch->entropy_u64); + batch->position = 0; + } ret = batch->entropy_u64[batch->position++]; - if (use_lock) - read_unlock_irqrestore(&batched_entropy_reset_lock, flags); - put_cpu_var(batched_entropy_u64); + put_locked_var(batched_entropy_u64_lock, batched_entropy_u64); return ret; @@ -54,21 +52,22 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> u32 get_random_u32(void) { u32 ret; -@@ -2072,7 +2075,7 @@ u32 get_random_u32(void) +@@ -2056,13 +2059,13 @@ u32 get_random_u32(void) if (arch_get_random_int(&ret)) return ret; - batch = &get_cpu_var(batched_entropy_u32); + batch = &get_locked_var(batched_entropy_u32_lock, batched_entropy_u32); - if (use_lock) - read_lock_irqsave(&batched_entropy_reset_lock, flags); if (batch->position % ARRAY_SIZE(batch->entropy_u32) == 0) { -@@ -2082,7 +2085,7 @@ u32 get_random_u32(void) + extract_crng((u8 *)batch->entropy_u32); + batch->position = 0; + } ret = batch->entropy_u32[batch->position++]; - if (use_lock) - read_unlock_irqrestore(&batched_entropy_reset_lock, flags); - put_cpu_var(batched_entropy_u32); + put_locked_var(batched_entropy_u32_lock, batched_entropy_u32); return ret; } EXPORT_SYMBOL(get_random_u32); +-- +2.1.4 + |