Skip to contentSkip to conversation

Linux 4.19.138

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Aug 7, 2020 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 4.19.138 kernel.

All users of the 4.19 kernel series must upgrade.

The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile                      |    2 -
 arch/arm/include/asm/percpu.h |    2 +
 drivers/char/random.c         |    1 
 fs/ext4/inode.c               |    5 ++
 include/linux/prandom.h       |   78 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/random.h        |   63 ++-------------------------------
 kernel/time/timer.c           |    8 ++++
 lib/random32.c                |    2 -
 8 files changed, 100 insertions(+), 61 deletions(-)

Greg Kroah-Hartman (1):

      Linux 4.19.138

Grygorii Strashko (1):
ARM: percpu.h: fix build error

Jiang Ying (1):
ext4: fix direct I/O read error

Linus Torvalds (2):
random32: remove net_rand_state from the latent entropy gcc plugin
random32: move the pseudo-random 32-bit definitions to prandom.h

Willy Tarreau (2):
random32: update the net random state on interrupt and activity
random: fix circular include dependency on arm64 after addition of percpu.h

author maintainer
#1 lore raw
Makefile +1 -1
index edf1799c08d2..daaa8ab2f550 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 4
 PATCHLEVEL = 19
-SUBLEVEL = 137
+SUBLEVEL = 138
 EXTRAVERSION =
 NAME = "People's Front"
 
arch/arm/include/asm/percpu.h +2 -0
index a89b4076cde4..72821b4721ad 100644
@@ -16,6 +16,8 @@
 #ifndef _ASM_ARM_PERCPU_H_
 #define _ASM_ARM_PERCPU_H_
 
+#include <asm/thread_info.h>
+
 /*
  * Same as asm-generic/percpu.h, except that we store the per cpu offset
  * in the TPIDRPRW. TPIDRPRW only exists on V6K and V7
drivers/char/random.c +1 -0
index d5f970d039bb..6a5d4dfafc47 100644
@@ -1257,6 +1257,7 @@ void add_interrupt_randomness(int irq, int irq_flags)
 
 	fast_mix(fast_pool);
 	add_interrupt_bench(cycles);
+	this_cpu_add(net_rand_state.s1, fast_pool->pool[cycles & 3]);
 
 	if (unlikely(crng_init == 0)) {
 		if ((fast_pool->count >= 64) &&
fs/ext4/inode.c +5 -0
index 3b1a7597af15..cd833f4e64ef 100644
@@ -3848,6 +3848,11 @@ static ssize_t ext4_direct_IO_read(struct kiocb *iocb, struct iov_iter *iter)
 	struct inode *inode = mapping->host;
 	size_t count = iov_iter_count(iter);
 	ssize_t ret;
+	loff_t offset = iocb->ki_pos;
+	loff_t size = i_size_read(inode);
+
+	if (offset >= size)
+		return 0;
 
 	/*
 	 * Shared inode_lock is enough for us - it protects against concurrent
include/linux/prandom.h new file +78 -0

78 lines not on this page · raw message

include/linux/random.h +4 -59

75 lines not on this page · raw message

kernel/time/timer.c +8 -0
index 6c54cf481fde..61e41ea3a96e 100644
@@ -44,6 +44,7 @@
 #include <linux/sched/debug.h>
 #include <linux/slab.h>
 #include <linux/compat.h>
+#include <linux/random.h>
 
 #include <linux/uaccess.h>
 #include <asm/unistd.h>
@@ -1654,6 +1655,13 @@ void update_process_times(int user_tick)
 	scheduler_tick();
 	if (IS_ENABLED(CONFIG_POSIX_TIMERS))
 		run_posix_cpu_timers(p);
+
+	/* The current CPU might make use of net randoms without receiving IRQs
+	 * to renew them often enough. Let's update the net_rand_state from a
+	 * non-constant value that's not affine to the number of calls to make
+	 * sure it's updated when there's some activity (we don't care in idle).
+	 */
+	this_cpu_add(net_rand_state.s1, rol32(jiffies, 24) + user_tick);
 }
 
 /**
lib/random32.c +1 -1
index 4aaa76404d56..036de0c93e22 100644
@@ -48,7 +48,7 @@ static inline void prandom_state_selftest(void)
 }
 #endif
 
-static DEFINE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;
+DEFINE_PER_CPU(struct rnd_state, net_rand_state);
 
 /**
  *	prandom_u32_state - seeded pseudo-random number generator.