--- /dev/null
+From 1c9df907da83812e4f33b59d3d142c864d9da57f Mon Sep 17 00:00:00 2001
+From: Willy Tarreau <w@1wt.eu>
+Date: Thu, 30 Jul 2020 07:59:24 +0200
+Subject: random: fix circular include dependency on arm64 after addition of percpu.h
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+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
+@@ -8,7 +8,7 @@
+
+ #include <linux/list.h>
+ #include <linux/once.h>
+-#include <linux/percpu.h>
++#include <asm/percpu.h>
+
+ #include <uapi/linux/random.h>
+