linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 5.7 0/6] 5.7.14-rc1 review
@ 2020-08-05 15:52 Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 1/6] random32: update the net random state on interrupt and activity Greg Kroah-Hartman
                   ` (6 more replies)
  0 siblings, 7 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, torvalds, akpm, linux, shuah, patches,
	ben.hutchings, lkft-triage, stable

This is the start of the stable review cycle for the 5.7.14 release.
There are 6 patches in this series, all will be posted as a response
to this one.  If anyone has any issues with these being applied, please
let me know.

Responses should be made by Fri, 07 Aug 2020 15:34:53 +0000.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.14-rc1.gz
or in the git tree and branch at:
	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 5.7.14-rc1

Marc Zyngier <maz@kernel.org>
    arm64: Workaround circular dependency in pointer_auth.h

Linus Torvalds <torvalds@linux-foundation.org>
    random32: move the pseudo-random 32-bit definitions to prandom.h

Linus Torvalds <torvalds@linux-foundation.org>
    random32: remove net_rand_state from the latent entropy gcc plugin

Willy Tarreau <w@1wt.eu>
    random: fix circular include dependency on arm64 after addition of percpu.h

Grygorii Strashko <grygorii.strashko@ti.com>
    ARM: percpu.h: fix build error

Willy Tarreau <w@1wt.eu>
    random32: update the net random state on interrupt and activity


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

Diffstat:

 Makefile                              |  4 +-
 arch/arm/include/asm/percpu.h         |  2 +
 arch/arm64/include/asm/pointer_auth.h |  8 +++-
 drivers/char/random.c                 |  1 +
 include/linux/prandom.h               | 78 +++++++++++++++++++++++++++++++++++
 include/linux/random.h                | 63 ++--------------------------
 kernel/time/timer.c                   |  8 ++++
 lib/random32.c                        |  2 +-
 8 files changed, 103 insertions(+), 63 deletions(-)



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5.7 1/6] random32: update the net random state on interrupt and activity
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
@ 2020-08-05 15:52 ` Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 2/6] ARM: percpu.h: fix build error Greg Kroah-Hartman
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Amit Klein, Linus Torvalds,
	Eric Dumazet, Jason A. Donenfeld, Andy Lutomirski, Kees Cook,
	Thomas Gleixner, Peter Zijlstra, Willy Tarreau

From: Willy Tarreau <w@1wt.eu>

commit f227e3ec3b5cad859ad15666874405e8c1bbc1d4 upstream.

This modifies the first 32 bits out of the 128 bits of a random CPU's
net_rand_state on interrupt or CPU activity to complicate remote
observations that could lead to guessing the network RNG's internal
state.

Note that depending on some network devices' interrupt rate moderation
or binding, this re-seeding might happen on every packet or even almost
never.

In addition, with NOHZ some CPUs might not even get timer interrupts,
leaving their local state rarely updated, while they are running
networked processes making use of the random state.  For this reason, we
also perform this update in update_process_times() in order to at least
update the state when there is user or system activity, since it's the
only case we care about.

Reported-by: Amit Klein <aksecurity@gmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Eric Dumazet <edumazet@google.com>
Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/char/random.c  |    1 +
 include/linux/random.h |    3 +++
 kernel/time/timer.c    |    8 ++++++++
 lib/random32.c         |    2 +-
 4 files changed, 13 insertions(+), 1 deletion(-)

--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1277,6 +1277,7 @@ void add_interrupt_randomness(int irq, i
 
 	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) &&
--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/list.h>
 #include <linux/once.h>
+#include <linux/percpu.h>
 
 #include <uapi/linux/random.h>
 
@@ -119,6 +120,8 @@ struct rnd_state {
 	__u32 s1, s2, s3, s4;
 };
 
+DECLARE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;
+
 u32 prandom_u32_state(struct rnd_state *state);
 void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
 void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state);
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -43,6 +43,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>
@@ -1743,6 +1744,13 @@ void update_process_times(int user_tick)
 	scheduler_tick();
 	if (IS_ENABLED(CONFIG_POSIX_TIMERS))
 		run_posix_cpu_timers();
+
+	/* 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);
 }
 
 /**
--- a/lib/random32.c
+++ b/lib/random32.c
@@ -48,7 +48,7 @@ static inline void prandom_state_selftes
 }
 #endif
 
-static DEFINE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;
+DEFINE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;
 
 /**
  *	prandom_u32_state - seeded pseudo-random number generator.



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5.7 2/6] ARM: percpu.h: fix build error
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 1/6] random32: update the net random state on interrupt and activity Greg Kroah-Hartman
@ 2020-08-05 15:52 ` Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 3/6] random: fix circular include dependency on arm64 after addition of percpu.h Greg Kroah-Hartman
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Grygorii Strashko, Linus Torvalds

From: Grygorii Strashko <grygorii.strashko@ti.com>

commit aa54ea903abb02303bf55855fb51e3fcee135d70 upstream.

Fix build error for the case:
  defined(CONFIG_SMP) && !defined(CONFIG_CPU_V6)

config: keystone_defconfig

  CC      arch/arm/kernel/signal.o
  In file included from ../include/linux/random.h:14,
                    from ../arch/arm/kernel/signal.c:8:
  ../arch/arm/include/asm/percpu.h: In function ‘__my_cpu_offset’:
  ../arch/arm/include/asm/percpu.h:29:34: error: ‘current_stack_pointer’ undeclared (first use in this function); did you mean ‘user_stack_pointer’?
      : "Q" (*(const unsigned long *)current_stack_pointer));
                                     ^~~~~~~~~~~~~~~~~~~~~
                                     user_stack_pointer

Fixes: f227e3ec3b5c ("random32: update the net random state on interrupt and activity")
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/arm/include/asm/percpu.h |    2 ++
 1 file changed, 2 insertions(+)

--- a/arch/arm/include/asm/percpu.h
+++ b/arch/arm/include/asm/percpu.h
@@ -5,6 +5,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



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5.7 3/6] random: fix circular include dependency on arm64 after addition of percpu.h
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 1/6] random32: update the net random state on interrupt and activity Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 2/6] ARM: percpu.h: fix build error Greg Kroah-Hartman
@ 2020-08-05 15:52 ` Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 4/6] random32: remove net_rand_state from the latent entropy gcc plugin Greg Kroah-Hartman
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Daniel Díaz, Kees Cook,
	Marc Zyngier, Stephen Rothwell, Willy Tarreau, Linus Torvalds

From: Willy Tarreau <w@1wt.eu>

commit 1c9df907da83812e4f33b59d3d142c864d9da57f upstream.

Daniel Díaz and Kees Cook independently reported that commit
f227e3ec3b5c ("random32: update the net random state on interrupt and
activity") broke arm64 due to a circular dependency on include files
since the addition of percpu.h in random.h.

The correct fix would definitely be to move all the prandom32 stuff out
of random.h but for backporting, a smaller solution is preferred.

This one replaces linux/percpu.h with asm/percpu.h, and this fixes the
problem on x86_64, arm64, arm, and mips.  Note that moving percpu.h
around didn't change anything and that removing it entirely broke
differently.  When backporting, such options might still be considered
if this patch fails to help.

[ It turns out that an alternate fix seems to be to just remove the
  troublesome <asm/pointer_auth.h> remove from the arm64 <asm/smp.h>
  that causes the circular dependency.

  But we might as well do the whole belt-and-suspenders thing, and
  minimize inclusion in <linux/random.h> too. Either will fix the
  problem, and both are good changes.   - Linus ]

Reported-by: Daniel Díaz <daniel.diaz@linaro.org>
Reported-by: Kees Cook <keescook@chromium.org>
Tested-by: Marc Zyngier <maz@kernel.org>
Fixes: f227e3ec3b5c
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/random.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -11,7 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/list.h>
 #include <linux/once.h>
-#include <linux/percpu.h>
+#include <asm/percpu.h>
 
 #include <uapi/linux/random.h>
 



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5.7 4/6] random32: remove net_rand_state from the latent entropy gcc plugin
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
                   ` (2 preceding siblings ...)
  2020-08-05 15:52 ` [PATCH 5.7 3/6] random: fix circular include dependency on arm64 after addition of percpu.h Greg Kroah-Hartman
@ 2020-08-05 15:52 ` Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 5/6] random32: move the pseudo-random 32-bit definitions to prandom.h Greg Kroah-Hartman
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Stephen Rothwell, Emese Revfy,
	Kees Cook, Willy Tarreau, Linus Torvalds

From: Linus Torvalds <torvalds@linux-foundation.org>

commit 83bdc7275e6206f560d247be856bceba3e1ed8f2 upstream.

It turns out that the plugin right now ends up being really unhappy
about the change from 'static' to 'extern' storage that happened in
commit f227e3ec3b5c ("random32: update the net random state on interrupt
and activity").

This is probably a trivial fix for the latent_entropy plugin, but for
now, just remove net_rand_state from the list of things the plugin
worries about.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Emese Revfy <re.emese@gmail.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Willy Tarreau <w@1wt.eu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/random.h |    2 +-
 lib/random32.c         |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -120,7 +120,7 @@ struct rnd_state {
 	__u32 s1, s2, s3, s4;
 };
 
-DECLARE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;
+DECLARE_PER_CPU(struct rnd_state, net_rand_state);
 
 u32 prandom_u32_state(struct rnd_state *state);
 void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
--- a/lib/random32.c
+++ b/lib/random32.c
@@ -48,7 +48,7 @@ static inline void prandom_state_selftes
 }
 #endif
 
-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.



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5.7 5/6] random32: move the pseudo-random 32-bit definitions to prandom.h
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
                   ` (3 preceding siblings ...)
  2020-08-05 15:52 ` [PATCH 5.7 4/6] random32: remove net_rand_state from the latent entropy gcc plugin Greg Kroah-Hartman
@ 2020-08-05 15:52 ` Greg Kroah-Hartman
  2020-08-05 15:52 ` [PATCH 5.7 6/6] [PATCH] arm64: Workaround circular dependency in pointer_auth.h Greg Kroah-Hartman
  2020-08-05 17:39 ` [PATCH 5.7 0/6] 5.7.14-rc1 review Naresh Kamboju
  6 siblings, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, stable, Guenter Roeck, Willy Tarreau, Linus Torvalds

From: Linus Torvalds <torvalds@linux-foundation.org>

commit c0842fbc1b18c7a044e6ff3e8fa78bfa822c7d1a upstream.

The addition of percpu.h to the list of includes in random.h revealed
some circular dependencies on arm64 and possibly other platforms.  This
include was added solely for the pseudo-random definitions, which have
nothing to do with the rest of the definitions in this file but are
still there for legacy reasons.

This patch moves the pseudo-random parts to linux/prandom.h and the
percpu.h include with it, which is now guarded by _LINUX_PRANDOM_H and
protected against recursive inclusion.

A further cleanup step would be to remove this from <linux/random.h>
entirely, and make people who use the prandom infrastructure include
just the new header file.  That's a bit of a churn patch, but grepping
for "prandom_" and "next_pseudo_random32" "struct rnd_state" should
catch most users.

But it turns out that that nice cleanup step is fairly painful, because
a _lot_ of code currently seems to depend on the implicit include of
<linux/random.h>, which can currently come in a lot of ways, including
such fairly core headfers as <linux/net.h>.

So the "nice cleanup" part may or may never happen.

Fixes: 1c9df907da83 ("random: fix circular include dependency on arm64 after addition of percpu.h")
Tested-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 include/linux/prandom.h |   78 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/random.h  |   66 ++--------------------------------------
 2 files changed, 82 insertions(+), 62 deletions(-)

--- /dev/null
+++ b/include/linux/prandom.h
@@ -0,0 +1,78 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * include/linux/prandom.h
+ *
+ * Include file for the fast pseudo-random 32-bit
+ * generation.
+ */
+#ifndef _LINUX_PRANDOM_H
+#define _LINUX_PRANDOM_H
+
+#include <linux/types.h>
+#include <linux/percpu.h>
+
+u32 prandom_u32(void);
+void prandom_bytes(void *buf, size_t nbytes);
+void prandom_seed(u32 seed);
+void prandom_reseed_late(void);
+
+struct rnd_state {
+	__u32 s1, s2, s3, s4;
+};
+
+DECLARE_PER_CPU(struct rnd_state, net_rand_state);
+
+u32 prandom_u32_state(struct rnd_state *state);
+void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
+void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state);
+
+#define prandom_init_once(pcpu_state)			\
+	DO_ONCE(prandom_seed_full_state, (pcpu_state))
+
+/**
+ * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro)
+ * @ep_ro: right open interval endpoint
+ *
+ * Returns a pseudo-random number that is in interval [0, ep_ro). Note
+ * that the result depends on PRNG being well distributed in [0, ~0U]
+ * u32 space. Here we use maximally equidistributed combined Tausworthe
+ * generator, that is, prandom_u32(). This is useful when requesting a
+ * random index of an array containing ep_ro elements, for example.
+ *
+ * Returns: pseudo-random number in interval [0, ep_ro)
+ */
+static inline u32 prandom_u32_max(u32 ep_ro)
+{
+	return (u32)(((u64) prandom_u32() * ep_ro) >> 32);
+}
+
+/*
+ * Handle minimum values for seeds
+ */
+static inline u32 __seed(u32 x, u32 m)
+{
+	return (x < m) ? x + m : x;
+}
+
+/**
+ * prandom_seed_state - set seed for prandom_u32_state().
+ * @state: pointer to state structure to receive the seed.
+ * @seed: arbitrary 64-bit value to use as a seed.
+ */
+static inline void prandom_seed_state(struct rnd_state *state, u64 seed)
+{
+	u32 i = (seed >> 32) ^ (seed << 10) ^ seed;
+
+	state->s1 = __seed(i,   2U);
+	state->s2 = __seed(i,   8U);
+	state->s3 = __seed(i,  16U);
+	state->s4 = __seed(i, 128U);
+}
+
+/* Pseudo random number generator from numerical recipes. */
+static inline u32 next_pseudo_random32(u32 seed)
+{
+	return seed * 1664525 + 1013904223;
+}
+
+#endif
--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -11,7 +11,6 @@
 #include <linux/kernel.h>
 #include <linux/list.h>
 #include <linux/once.h>
-#include <asm/percpu.h>
 
 #include <uapi/linux/random.h>
 
@@ -111,63 +110,12 @@ declare_get_random_var_wait(long)
 
 unsigned long randomize_page(unsigned long start, unsigned long range);
 
-u32 prandom_u32(void);
-void prandom_bytes(void *buf, size_t nbytes);
-void prandom_seed(u32 seed);
-void prandom_reseed_late(void);
-
-struct rnd_state {
-	__u32 s1, s2, s3, s4;
-};
-
-DECLARE_PER_CPU(struct rnd_state, net_rand_state);
-
-u32 prandom_u32_state(struct rnd_state *state);
-void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
-void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state);
-
-#define prandom_init_once(pcpu_state)			\
-	DO_ONCE(prandom_seed_full_state, (pcpu_state))
-
-/**
- * prandom_u32_max - returns a pseudo-random number in interval [0, ep_ro)
- * @ep_ro: right open interval endpoint
- *
- * Returns a pseudo-random number that is in interval [0, ep_ro). Note
- * that the result depends on PRNG being well distributed in [0, ~0U]
- * u32 space. Here we use maximally equidistributed combined Tausworthe
- * generator, that is, prandom_u32(). This is useful when requesting a
- * random index of an array containing ep_ro elements, for example.
- *
- * Returns: pseudo-random number in interval [0, ep_ro)
- */
-static inline u32 prandom_u32_max(u32 ep_ro)
-{
-	return (u32)(((u64) prandom_u32() * ep_ro) >> 32);
-}
-
 /*
- * Handle minimum values for seeds
- */
-static inline u32 __seed(u32 x, u32 m)
-{
-	return (x < m) ? x + m : x;
-}
-
-/**
- * prandom_seed_state - set seed for prandom_u32_state().
- * @state: pointer to state structure to receive the seed.
- * @seed: arbitrary 64-bit value to use as a seed.
+ * This is designed to be standalone for just prandom
+ * users, but for now we include it from <linux/random.h>
+ * for legacy reasons.
  */
-static inline void prandom_seed_state(struct rnd_state *state, u64 seed)
-{
-	u32 i = (seed >> 32) ^ (seed << 10) ^ seed;
-
-	state->s1 = __seed(i,   2U);
-	state->s2 = __seed(i,   8U);
-	state->s3 = __seed(i,  16U);
-	state->s4 = __seed(i, 128U);
-}
+#include <linux/prandom.h>
 
 #ifdef CONFIG_ARCH_RANDOM
 # include <asm/archrandom.h>
@@ -210,10 +158,4 @@ static inline bool __init arch_get_rando
 }
 #endif
 
-/* Pseudo random number generator from numerical recipes. */
-static inline u32 next_pseudo_random32(u32 seed)
-{
-	return seed * 1664525 + 1013904223;
-}
-
 #endif /* _LINUX_RANDOM_H */



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 5.7 6/6] [PATCH] arm64: Workaround circular dependency in pointer_auth.h
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
                   ` (4 preceding siblings ...)
  2020-08-05 15:52 ` [PATCH 5.7 5/6] random32: move the pseudo-random 32-bit definitions to prandom.h Greg Kroah-Hartman
@ 2020-08-05 15:52 ` Greg Kroah-Hartman
  2020-08-05 17:39 ` [PATCH 5.7 0/6] 5.7.14-rc1 review Naresh Kamboju
  6 siblings, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 15:52 UTC (permalink / raw)
  To: linux-kernel; +Cc: Greg Kroah-Hartman, stable, Marc Zyngier

From: Marc Zyngier <maz@kernel.org>

With the backport of f227e3ec3b5c ("random32: update the net random
state on interrupt and activity") and its associated fixes, the
arm64 build explodes early:

In file included from ../include/linux/smp.h:67,
                  from ../include/linux/percpu.h:7,
                  from ../include/linux/prandom.h:12,
                  from ../include/linux/random.h:118,
                  from ../arch/arm64/include/asm/pointer_auth.h:6,
                  from ../arch/arm64/include/asm/processor.h:39,
                  from ../include/linux/mutex.h:19,
                  from ../include/linux/kernfs.h:12,
                  from ../include/linux/sysfs.h:16,
                  from ../include/linux/kobject.h:20,
                  from ../include/linux/of.h:17,
                  from ../include/linux/irqdomain.h:35,
                  from ../include/linux/acpi.h:13,
                  from ../include/acpi/apei.h:9,
                  from ../include/acpi/ghes.h:5,
                  from ../include/linux/arm_sdei.h:8,
                  from ../arch/arm64/kernel/asm-offsets.c:10:
../arch/arm64/include/asm/smp.h:100:29: error: field ‘ptrauth_key’ has
incomplete type

This is due to struct ptrauth_keys_kernel not being defined before
we transitively include asm/smp.h from linux/random.h.

Paper over it by moving the inclusion of linux/random.h *after* the
type has been defined.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm64/include/asm/pointer_auth.h |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- a/arch/arm64/include/asm/pointer_auth.h
+++ b/arch/arm64/include/asm/pointer_auth.h
@@ -3,7 +3,6 @@
 #define __ASM_POINTER_AUTH_H
 
 #include <linux/bitops.h>
-#include <linux/random.h>
 
 #include <asm/cpufeature.h>
 #include <asm/memory.h>
@@ -34,6 +33,13 @@ struct ptrauth_keys_kernel {
 	struct ptrauth_key apia;
 };
 
+/*
+ * Only include random.h once ptrauth_keys_* structures are defined
+ * to avoid yet another circular include hell (random.h * ends up
+ * including asm/smp.h, which requires ptrauth_keys_kernel).
+ */
+#include <linux/random.h>
+
 static inline void ptrauth_keys_init_user(struct ptrauth_keys_user *keys)
 {
 	if (system_supports_address_auth()) {



^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
                   ` (5 preceding siblings ...)
  2020-08-05 15:52 ` [PATCH 5.7 6/6] [PATCH] arm64: Workaround circular dependency in pointer_auth.h Greg Kroah-Hartman
@ 2020-08-05 17:39 ` Naresh Kamboju
  2020-08-05 18:01   ` Linus Torvalds
  2020-08-05 18:24   ` Guenter Roeck
  6 siblings, 2 replies; 17+ messages in thread
From: Naresh Kamboju @ 2020-08-05 17:39 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Marc Zyngier
  Cc: open list, Shuah Khan, patches, lkft-triage, Ben Hutchings,
	linux- stable, Andrew Morton, Linus Torvalds, Guenter Roeck, w,
	Grygorii Strashko

On Wed, 5 Aug 2020 at 21:22, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 5.7.14 release.
> There are 6 patches in this series, all will be posted as a response
> to this one.  If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Fri, 07 Aug 2020 15:34:53 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.14-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
> -------------
> Pseudo-Shortlog of commits:
>
> Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>     Linux 5.7.14-rc1
>
> Marc Zyngier <maz@kernel.org>
>     arm64: Workaround circular dependency in pointer_auth.h
>
> Linus Torvalds <torvalds@linux-foundation.org>
>     random32: move the pseudo-random 32-bit definitions to prandom.h
>
> Linus Torvalds <torvalds@linux-foundation.org>
>     random32: remove net_rand_state from the latent entropy gcc plugin
>
> Willy Tarreau <w@1wt.eu>
>     random: fix circular include dependency on arm64 after addition of percpu.h
>
> Grygorii Strashko <grygorii.strashko@ti.com>
>     ARM: percpu.h: fix build error
>
> Willy Tarreau <w@1wt.eu>
>     random32: update the net random state on interrupt and activity
>

[ sorry if it is not interesting ! ]

While building with old gcc-7.3.0 the build breaks for arm64
whereas build PASS on gcc-8, gcc-9 and gcc-10.

with gcc 7.3.0 build breaks log,

In file included from arch/arm64/include/asm/archrandom.h:9:0,
                 from arch/arm64/kernel/kaslr.c:14:
include/linux/random.h: In function 'arch_get_random_seed_long_early':
include/linux/random.h:149:9: error: implicit declaration of function
'arch_get_random_seed_long'; did you mean
'arch_get_random_seed_long_early'?
[-Werror=implicit-function-declaration]
  return arch_get_random_seed_long(v);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
         arch_get_random_seed_long_early
include/linux/random.h: In function 'arch_get_random_long_early':
include/linux/random.h:157:9: error: implicit declaration of function
'arch_get_random_long'; did you mean 'get_random_long'?
[-Werror=implicit-function-declaration]
  return arch_get_random_long(v);
         ^~~~~~~~~~~~~~~~~~~~
         get_random_long
In file included from arch/arm64/kernel/kaslr.c:14:0:
arch/arm64/include/asm/archrandom.h: At top level:
arch/arm64/include/asm/archrandom.h:30:33: error: conflicting types
for 'arch_get_random_long'
 static inline bool __must_check arch_get_random_long(unsigned long *v)
                                 ^~~~~~~~~~~~~~~~~~~~
In file included from arch/arm64/include/asm/archrandom.h:9:0,
                 from arch/arm64/kernel/kaslr.c:14:
include/linux/random.h:157:9: note: previous implicit declaration of
'arch_get_random_long' was here
  return arch_get_random_long(v);
         ^~~~~~~~~~~~~~~~~~~~
In file included from arch/arm64/kernel/kaslr.c:14:0:
arch/arm64/include/asm/archrandom.h:40:33: error: conflicting types
for 'arch_get_random_seed_long'
 static inline bool __must_check arch_get_random_seed_long(unsigned long *v)
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/arm64/include/asm/archrandom.h:9:0,
                 from arch/arm64/kernel/kaslr.c:14:
include/linux/random.h:149:9: note: previous implicit declaration of
'arch_get_random_seed_long' was here
  return arch_get_random_seed_long(v);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/arm64/kernel/kaslr.c:14:0:
arch/arm64/include/asm/archrandom.h:72:1: error: redefinition of
'arch_get_random_seed_long_early'
 arch_get_random_seed_long_early(unsigned long *v)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from arch/arm64/include/asm/archrandom.h:9:0,
                 from arch/arm64/kernel/kaslr.c:14:
include/linux/random.h:146:27: note: previous definition of
'arch_get_random_seed_long_early' was here
 static inline bool __init arch_get_random_seed_long_early(unsigned long *v)


-- 
Linaro LKFT
https://lkft.linaro.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 17:39 ` [PATCH 5.7 0/6] 5.7.14-rc1 review Naresh Kamboju
@ 2020-08-05 18:01   ` Linus Torvalds
  2020-08-05 18:27     ` Guenter Roeck
  2020-08-05 18:24   ` Guenter Roeck
  1 sibling, 1 reply; 17+ messages in thread
From: Linus Torvalds @ 2020-08-05 18:01 UTC (permalink / raw)
  To: Naresh Kamboju
  Cc: Greg Kroah-Hartman, Marc Zyngier, open list, Shuah Khan, patches,
	lkft-triage, Ben Hutchings, linux- stable, Andrew Morton,
	Guenter Roeck, Willy Tarreau, Grygorii Strashko

On Wed, Aug 5, 2020 at 10:39 AM Naresh Kamboju
<naresh.kamboju@linaro.org> wrote:
>
> [ sorry if it is not interesting ! ]

It's a bit interesting only because it is so odd.

> While building with old gcc-7.3.0 the build breaks for arm64
> whereas build PASS on gcc-8, gcc-9 and gcc-10.

Can you double-check that your gcc-7.3 setup is actually building the same tree?

Yeah, I know that's a slightly strange thing to ask, but your build
log really looks very odd. There should be nothing in that error that
is in any way compiler version specific.

Sure, we may have some header that checks the compiler version and
does something different based on that, and I guess that could be
going on. Except I don't even find anything remotely like that
anywhere. I do find some compiler version tests, but most ofd them
would trigger for all those compiler versions

Or is there perhaps some other configuration difference?

             Linus

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 17:39 ` [PATCH 5.7 0/6] 5.7.14-rc1 review Naresh Kamboju
  2020-08-05 18:01   ` Linus Torvalds
@ 2020-08-05 18:24   ` Guenter Roeck
  2020-08-05 18:37     ` Linus Torvalds
  1 sibling, 1 reply; 17+ messages in thread
From: Guenter Roeck @ 2020-08-05 18:24 UTC (permalink / raw)
  To: Naresh Kamboju, Greg Kroah-Hartman, Marc Zyngier
  Cc: open list, Shuah Khan, patches, lkft-triage, Ben Hutchings,
	linux- stable, Andrew Morton, Linus Torvalds, w,
	Grygorii Strashko

On 8/5/20 10:39 AM, Naresh Kamboju wrote:
> On Wed, 5 Aug 2020 at 21:22, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
>>
>> This is the start of the stable review cycle for the 5.7.14 release.
>> There are 6 patches in this series, all will be posted as a response
>> to this one.  If anyone has any issues with these being applied, please
>> let me know.
>>
>> Responses should be made by Fri, 07 Aug 2020 15:34:53 +0000.
>> Anything received after that time might be too late.
>>
>> The whole patch series can be found in one patch at:
>>         https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.7.14-rc1.gz
>> or in the git tree and branch at:
>>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.7.y
>> and the diffstat can be found below.
>>
>> thanks,
>>
>> greg k-h
>>
>> -------------
>> Pseudo-Shortlog of commits:
>>
>> Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>>     Linux 5.7.14-rc1
>>
>> Marc Zyngier <maz@kernel.org>
>>     arm64: Workaround circular dependency in pointer_auth.h
>>
>> Linus Torvalds <torvalds@linux-foundation.org>
>>     random32: move the pseudo-random 32-bit definitions to prandom.h
>>
>> Linus Torvalds <torvalds@linux-foundation.org>
>>     random32: remove net_rand_state from the latent entropy gcc plugin
>>
>> Willy Tarreau <w@1wt.eu>
>>     random: fix circular include dependency on arm64 after addition of percpu.h
>>
>> Grygorii Strashko <grygorii.strashko@ti.com>
>>     ARM: percpu.h: fix build error
>>
>> Willy Tarreau <w@1wt.eu>
>>     random32: update the net random state on interrupt and activity
>>
> 
> [ sorry if it is not interesting ! ]
> 
> While building with old gcc-7.3.0 the build breaks for arm64
> whereas build PASS on gcc-8, gcc-9 and gcc-10.
> 
> with gcc 7.3.0 build breaks log,
> 
Same with older versions of gcc. I don't see the problem with the
mainline kernel.

I think this is caused by more recursive includes.
arch/arm64/include/asm/archrandom.h includes include/linux/random.h
which includes arch/arm64/include/asm/archrandom.h to get the definition
of arch_get_random_seed_long_early (which it won't get because of
the recursion).

What I don't really understand is how this works with new versions
of gcc.

Guenter

> In file included from arch/arm64/include/asm/archrandom.h:9:0,
>                  from arch/arm64/kernel/kaslr.c:14:
> include/linux/random.h: In function 'arch_get_random_seed_long_early':
> include/linux/random.h:149:9: error: implicit declaration of function
> 'arch_get_random_seed_long'; did you mean
> 'arch_get_random_seed_long_early'?
> [-Werror=implicit-function-declaration]
>   return arch_get_random_seed_long(v);
>          ^~~~~~~~~~~~~~~~~~~~~~~~~
>          arch_get_random_seed_long_early
> include/linux/random.h: In function 'arch_get_random_long_early':
> include/linux/random.h:157:9: error: implicit declaration of function
> 'arch_get_random_long'; did you mean 'get_random_long'?
> [-Werror=implicit-function-declaration]
>   return arch_get_random_long(v);
>          ^~~~~~~~~~~~~~~~~~~~
>          get_random_long
> In file included from arch/arm64/kernel/kaslr.c:14:0:
> arch/arm64/include/asm/archrandom.h: At top level:
> arch/arm64/include/asm/archrandom.h:30:33: error: conflicting types
> for 'arch_get_random_long'
>  static inline bool __must_check arch_get_random_long(unsigned long *v)
>                                  ^~~~~~~~~~~~~~~~~~~~
> In file included from arch/arm64/include/asm/archrandom.h:9:0,
>                  from arch/arm64/kernel/kaslr.c:14:
> include/linux/random.h:157:9: note: previous implicit declaration of
> 'arch_get_random_long' was here
>   return arch_get_random_long(v);
>          ^~~~~~~~~~~~~~~~~~~~
> In file included from arch/arm64/kernel/kaslr.c:14:0:
> arch/arm64/include/asm/archrandom.h:40:33: error: conflicting types
> for 'arch_get_random_seed_long'
>  static inline bool __must_check arch_get_random_seed_long(unsigned long *v)
>                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from arch/arm64/include/asm/archrandom.h:9:0,
>                  from arch/arm64/kernel/kaslr.c:14:
> include/linux/random.h:149:9: note: previous implicit declaration of
> 'arch_get_random_seed_long' was here
>   return arch_get_random_seed_long(v);
>          ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from arch/arm64/kernel/kaslr.c:14:0:
> arch/arm64/include/asm/archrandom.h:72:1: error: redefinition of
> 'arch_get_random_seed_long_early'
>  arch_get_random_seed_long_early(unsigned long *v)
>  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from arch/arm64/include/asm/archrandom.h:9:0,
>                  from arch/arm64/kernel/kaslr.c:14:
> include/linux/random.h:146:27: note: previous definition of
> 'arch_get_random_seed_long_early' was here
>  static inline bool __init arch_get_random_seed_long_early(unsigned long *v)
> 
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 18:01   ` Linus Torvalds
@ 2020-08-05 18:27     ` Guenter Roeck
  0 siblings, 0 replies; 17+ messages in thread
From: Guenter Roeck @ 2020-08-05 18:27 UTC (permalink / raw)
  To: Linus Torvalds, Naresh Kamboju
  Cc: Greg Kroah-Hartman, Marc Zyngier, open list, Shuah Khan, patches,
	lkft-triage, Ben Hutchings, linux- stable, Andrew Morton,
	Willy Tarreau, Grygorii Strashko

On 8/5/20 11:01 AM, Linus Torvalds wrote:
> On Wed, Aug 5, 2020 at 10:39 AM Naresh Kamboju
> <naresh.kamboju@linaro.org> wrote:
>>
>> [ sorry if it is not interesting ! ]
> 
> It's a bit interesting only because it is so odd.
> 
>> While building with old gcc-7.3.0 the build breaks for arm64
>> whereas build PASS on gcc-8, gcc-9 and gcc-10.
> 
> Can you double-check that your gcc-7.3 setup is actually building the same tree?
> 

I see the same problem. I built images manually, using the same source
tree, so I am quite sure it is the same tree (at least in my case).

> Yeah, I know that's a slightly strange thing to ask, but your build
> log really looks very odd. There should be nothing in that error that
> is in any way compiler version specific.
> 

Same confusion here. I'll be stuck in a meeting for the next hour;
unless someone else figures out what is going on I'll get back
to it afterwards.

Guenter

> Sure, we may have some header that checks the compiler version and
> does something different based on that, and I guess that could be
> going on. Except I don't even find anything remotely like that
> anywhere. I do find some compiler version tests, but most ofd them
> would trigger for all those compiler versions
> 
> Or is there perhaps some other configuration difference?
> 
>              Linus
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 18:24   ` Guenter Roeck
@ 2020-08-05 18:37     ` Linus Torvalds
  2020-08-05 19:24       ` Guenter Roeck
  2020-08-05 19:26       ` Daniel Díaz
  0 siblings, 2 replies; 17+ messages in thread
From: Linus Torvalds @ 2020-08-05 18:37 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Naresh Kamboju, Greg Kroah-Hartman, Marc Zyngier, open list,
	Shuah Khan, patches, lkft-triage, Ben Hutchings, linux- stable,
	Andrew Morton, Willy Tarreau, Grygorii Strashko

On Wed, Aug 5, 2020 at 11:24 AM Guenter Roeck <linux@roeck-us.net> wrote:
>
> Same with older versions of gcc. I don't see the problem with the
> mainline kernel.

  https://www.youtube.com/watch?v=-b5aW08ivHU

> I think this is caused by more recursive includes.
> arch/arm64/include/asm/archrandom.h includes include/linux/random.h
> which includes arch/arm64/include/asm/archrandom.h to get the definition
> of arch_get_random_seed_long_early (which it won't get because of
> the recursion).
>
> What I don't really understand is how this works with new versions
> of gcc.

Is that the only place it triggers?

Because the trivial fix would be something like the appended, which is
the right thing to do anyway.

              Linus

diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index 07c4c8cc4a67..9ded4237e1c1 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -11,8 +11,8 @@
 #include <linux/sched.h>
 #include <linux/types.h>
 #include <linux/pgtable.h>
+#include <linux/random.h>

-#include <asm/archrandom.h>
 #include <asm/cacheflush.h>
 #include <asm/fixmap.h>
 #include <asm/kernel-pgtable.h>

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 18:37     ` Linus Torvalds
@ 2020-08-05 19:24       ` Guenter Roeck
  2020-08-05 19:45         ` Linus Torvalds
  2020-08-05 19:26       ` Daniel Díaz
  1 sibling, 1 reply; 17+ messages in thread
From: Guenter Roeck @ 2020-08-05 19:24 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Naresh Kamboju, Greg Kroah-Hartman, Marc Zyngier, open list,
	Shuah Khan, patches, lkft-triage, Ben Hutchings, linux- stable,
	Andrew Morton, Willy Tarreau, Grygorii Strashko

On 8/5/20 11:37 AM, Linus Torvalds wrote:
> On Wed, Aug 5, 2020 at 11:24 AM Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> Same with older versions of gcc. I don't see the problem with the
>> mainline kernel.
> 
>   https://www.youtube.com/watch?v=-b5aW08ivHU
> 
>> I think this is caused by more recursive includes.
>> arch/arm64/include/asm/archrandom.h includes include/linux/random.h
>> which includes arch/arm64/include/asm/archrandom.h to get the definition
>> of arch_get_random_seed_long_early (which it won't get because of
>> the recursion).
>>
>> What I don't really understand is how this works with new versions
>> of gcc.
> 
> Is that the only place it triggers?
> 
> Because the trivial fix would be something like the appended, which is
> the right thing to do anyway.
> 

Correct.

gcc-7.x and older don't support CONFIG_ARM64_PTR_AUTH. Result is that
./arch/arm64/include/asm/pointer_auth.h doesn't include <linux/random.h>
for those compiler versions, which results in the problem.

In the mainline kernel, ./arch/arm64/include/asm/pointer_auth.h
always includes <linux/random.h>, so the problem isn't seen (or, rather,
it is hidden) there.

The problem is caused (exposed) by Marc's commit ("arm64: Workaround
circular dependency in pointer_auth.h"), which makes the include of
linux/random.h conditional.

Guenter

>               Linus
> 
> diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
> index 07c4c8cc4a67..9ded4237e1c1 100644
> --- a/arch/arm64/kernel/kaslr.c
> +++ b/arch/arm64/kernel/kaslr.c
> @@ -11,8 +11,8 @@
>  #include <linux/sched.h>
>  #include <linux/types.h>
>  #include <linux/pgtable.h>
> +#include <linux/random.h>
> 
> -#include <asm/archrandom.h>
>  #include <asm/cacheflush.h>
>  #include <asm/fixmap.h>
>  #include <asm/kernel-pgtable.h>
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 18:37     ` Linus Torvalds
  2020-08-05 19:24       ` Guenter Roeck
@ 2020-08-05 19:26       ` Daniel Díaz
  1 sibling, 0 replies; 17+ messages in thread
From: Daniel Díaz @ 2020-08-05 19:26 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Guenter Roeck, Ben Hutchings, Grygorii Strashko,
	Greg Kroah-Hartman, patches, lkft-triage, open list,
	linux- stable, Marc Zyngier, Andrew Morton, Shuah Khan,
	Willy Tarreau

Hello!

On Wed, 5 Aug 2020 at 13:37, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> On Wed, Aug 5, 2020 at 11:24 AM Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > Same with older versions of gcc. I don't see the problem with the
> > mainline kernel.
>
>   https://www.youtube.com/watch?v=-b5aW08ivHU
>
> > I think this is caused by more recursive includes.
> > arch/arm64/include/asm/archrandom.h includes include/linux/random.h
> > which includes arch/arm64/include/asm/archrandom.h to get the definition
> > of arch_get_random_seed_long_early (which it won't get because of
> > the recursion).
> >
> > What I don't really understand is how this works with new versions
> > of gcc.
>
> Is that the only place it triggers?

Yes

> Because the trivial fix would be something like the appended, which is
> the right thing to do anyway.
>
>               Linus
>
> diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
> index 07c4c8cc4a67..9ded4237e1c1 100644
> --- a/arch/arm64/kernel/kaslr.c
> +++ b/arch/arm64/kernel/kaslr.c
> @@ -11,8 +11,8 @@
>  #include <linux/sched.h>
>  #include <linux/types.h>
>  #include <linux/pgtable.h>
> +#include <linux/random.h>
>
> -#include <asm/archrandom.h>
>  #include <asm/cacheflush.h>
>  #include <asm/fixmap.h>
>  #include <asm/kernel-pgtable.h>

Tested-by: Daniel Díaz <daniel.diaz@linaro.org>

This patch works fine. Built with gcc 7.3.0 and glibc 2.27.

Greetings!

Daniel Díaz
daniel.diaz@linaro.org

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 19:24       ` Guenter Roeck
@ 2020-08-05 19:45         ` Linus Torvalds
  2020-08-05 19:58           ` Greg Kroah-Hartman
  2020-08-06  0:09           ` Guenter Roeck
  0 siblings, 2 replies; 17+ messages in thread
From: Linus Torvalds @ 2020-08-05 19:45 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Naresh Kamboju, Greg Kroah-Hartman, Marc Zyngier, open list,
	Shuah Khan, patches, lkft-triage, Ben Hutchings, linux- stable,
	Andrew Morton, Willy Tarreau, Grygorii Strashko

On Wed, Aug 5, 2020 at 12:24 PM Guenter Roeck <linux@roeck-us.net> wrote:
>
> On 8/5/20 11:37 AM, Linus Torvalds wrote:
> >
> > Because the trivial fix would be something like the appended, which is
> > the right thing to do anyway.
>
> Correct.

I'll take that as an Ack, and also remove the crazy reverse include
from archrandom.h that most definitely shouldn't be there.

It's now commit 585524081ecd ("random: random.h should include
archrandom.h, not the other way around") in my tree, because a grep
for "archrandom.h" shows that now the only place it exists is
<linux/random.h> and a few files that cannot possibly affect arm64
(because they are on x86 and powerpc, neither of which has that insane
reverse include).

               Linus

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 19:45         ` Linus Torvalds
@ 2020-08-05 19:58           ` Greg Kroah-Hartman
  2020-08-06  0:09           ` Guenter Roeck
  1 sibling, 0 replies; 17+ messages in thread
From: Greg Kroah-Hartman @ 2020-08-05 19:58 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Guenter Roeck, Naresh Kamboju, Marc Zyngier, open list,
	Shuah Khan, patches, lkft-triage, Ben Hutchings, linux- stable,
	Andrew Morton, Willy Tarreau, Grygorii Strashko

On Wed, Aug 05, 2020 at 12:45:25PM -0700, Linus Torvalds wrote:
> On Wed, Aug 5, 2020 at 12:24 PM Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > On 8/5/20 11:37 AM, Linus Torvalds wrote:
> > >
> > > Because the trivial fix would be something like the appended, which is
> > > the right thing to do anyway.
> >
> > Correct.
> 
> I'll take that as an Ack, and also remove the crazy reverse include
> from archrandom.h that most definitely shouldn't be there.
> 
> It's now commit 585524081ecd ("random: random.h should include
> archrandom.h, not the other way around") in my tree, because a grep
> for "archrandom.h" shows that now the only place it exists is
> <linux/random.h> and a few files that cannot possibly affect arm64
> (because they are on x86 and powerpc, neither of which has that insane
> reverse include).

Thanks, I've queued this up for 5.7.y now.  Doesn't look relevant for
older kernels, but I haven't gotten reports of them not building just
yet :)

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5.7 0/6] 5.7.14-rc1 review
  2020-08-05 19:45         ` Linus Torvalds
  2020-08-05 19:58           ` Greg Kroah-Hartman
@ 2020-08-06  0:09           ` Guenter Roeck
  1 sibling, 0 replies; 17+ messages in thread
From: Guenter Roeck @ 2020-08-06  0:09 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Naresh Kamboju, Greg Kroah-Hartman, Marc Zyngier, open list,
	Shuah Khan, patches, lkft-triage, Ben Hutchings, linux- stable,
	Andrew Morton, Willy Tarreau, Grygorii Strashko

On 8/5/20 12:45 PM, Linus Torvalds wrote:
> On Wed, Aug 5, 2020 at 12:24 PM Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> On 8/5/20 11:37 AM, Linus Torvalds wrote:
>>>
>>> Because the trivial fix would be something like the appended, which is
>>> the right thing to do anyway.
>>
>> Correct.
> 
> I'll take that as an Ack, and also remove the crazy reverse include
> from archrandom.h that most definitely shouldn't be there.
> 
Thanks, appreciated.

> It's now commit 585524081ecd ("random: random.h should include
> archrandom.h, not the other way around") in my tree, because a grep
> for "archrandom.h" shows that now the only place it exists is
> <linux/random.h> and a few files that cannot possibly affect arm64
> (because they are on x86 and powerpc, neither of which has that insane
> reverse include).
> 

I tried to build arm64 on current mainline, after reverting the dts
patches which cause the build failures there. Builds fine with both
gcc 7.4.0 and 9.3.0. 5.7.14-rc2 builds as well with both old and new
compilers. So hopefully we are fine.

Guenter

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2020-08-06  0:09 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-05 15:52 [PATCH 5.7 0/6] 5.7.14-rc1 review Greg Kroah-Hartman
2020-08-05 15:52 ` [PATCH 5.7 1/6] random32: update the net random state on interrupt and activity Greg Kroah-Hartman
2020-08-05 15:52 ` [PATCH 5.7 2/6] ARM: percpu.h: fix build error Greg Kroah-Hartman
2020-08-05 15:52 ` [PATCH 5.7 3/6] random: fix circular include dependency on arm64 after addition of percpu.h Greg Kroah-Hartman
2020-08-05 15:52 ` [PATCH 5.7 4/6] random32: remove net_rand_state from the latent entropy gcc plugin Greg Kroah-Hartman
2020-08-05 15:52 ` [PATCH 5.7 5/6] random32: move the pseudo-random 32-bit definitions to prandom.h Greg Kroah-Hartman
2020-08-05 15:52 ` [PATCH 5.7 6/6] [PATCH] arm64: Workaround circular dependency in pointer_auth.h Greg Kroah-Hartman
2020-08-05 17:39 ` [PATCH 5.7 0/6] 5.7.14-rc1 review Naresh Kamboju
2020-08-05 18:01   ` Linus Torvalds
2020-08-05 18:27     ` Guenter Roeck
2020-08-05 18:24   ` Guenter Roeck
2020-08-05 18:37     ` Linus Torvalds
2020-08-05 19:24       ` Guenter Roeck
2020-08-05 19:45         ` Linus Torvalds
2020-08-05 19:58           ` Greg Kroah-Hartman
2020-08-06  0:09           ` Guenter Roeck
2020-08-05 19:26       ` Daniel Díaz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).