--- /dev/null
+From b30c541a149ea2e6e40101c5615738951202cfec Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 24 Jan 2023 14:14:19 -0700
+Subject: arch: fix broken BuildID for arm64 and riscv
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit 99cb0d917ffa1ab628bb67364ca9b162c07699b1 upstream.
+
+Dennis Gilmore reports that the BuildID is missing in the arm64 vmlinux
+since commit 994b7ac1697b ("arm64: remove special treatment for the
+link order of head.o").
+
+The issue is that the type of .notes section, which contains the BuildID,
+changed from NOTES to PROGBITS.
+
+Ard Biesheuvel figured out that whichever object gets linked first gets
+to decide the type of a section. The PROGBITS type is the result of the
+compiler emitting .note.GNU-stack as PROGBITS rather than NOTE.
+
+While Ard provided a fix for arm64, I want to fix this globally because
+the same issue is happening on riscv since commit 2348e6bf4421 ("riscv:
+remove special treatment for the link order of head.o"). This problem
+will happen in general for other architectures if they start to drop
+unneeded entries from scripts/head-object-list.txt.
+
+Discard .note.GNU-stack in include/asm-generic/vmlinux.lds.h.
+
+Link: https://lore.kernel.org/lkml/CAABkxwuQoz1CTbyb57n0ZX65eSYiTonFCU8-LCQc=74D=xE=rA@mail.gmail.com/
+Fixes: 994b7ac1697b ("arm64: remove special treatment for the link order of head.o")
+Fixes: 2348e6bf4421 ("riscv: remove special treatment for the link order of head.o")
+Reported-by: Dennis Gilmore <dennis@ausil.us>
+Suggested-by: Ard Biesheuvel <ardb@kernel.org>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/asm-generic/vmlinux.lds.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
+index 2d45d98773e2..a68535f36d13 100644
+--- a/include/asm-generic/vmlinux.lds.h
++++ b/include/asm-generic/vmlinux.lds.h
+@@ -825,7 +825,12 @@
+ #define TRACEDATA
+ #endif
+
++/*
++ * Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler.
++ * Otherwise, the type of .notes section would become PROGBITS instead of NOTES.
++ */
+ #define NOTES \
++ /DISCARD/ : { *(.note.GNU-stack) } \
+ .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
+ __start_notes = .; \
+ KEEP(*(.note.*)) \
+--
+2.39.0
+
--- /dev/null
+From 9028703c4b66afcf57d3daf348ae65d58edf6236 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 26 Jan 2023 16:38:17 +0300
+Subject: Bluetooth: hci_sync: cancel cmd_timer if hci_open failed
+
+From: Archie Pusaka <apusaka@chromium.org>
+
+commit 97dfaf073f5881c624856ef293be307b6166115c upstream.
+
+If a command is already sent, we take care of freeing it, but we
+also need to cancel the timeout as well.
+
+Signed-off-by: Archie Pusaka <apusaka@chromium.org>
+Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@google.com>
+Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/bluetooth/hci_core.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
+index e5e1c139f211..eb5b2f45deec 100644
+--- a/net/bluetooth/hci_core.c
++++ b/net/bluetooth/hci_core.c
+@@ -1582,6 +1582,7 @@ static int hci_dev_do_open(struct hci_dev *hdev)
+ hdev->flush(hdev);
+
+ if (hdev->sent_cmd) {
++ cancel_delayed_work_sync(&hdev->cmd_timer);
+ kfree_skb(hdev->sent_cmd);
+ hdev->sent_cmd = NULL;
+ }
+--
+2.39.0
+
--- /dev/null
+From 9943f3ecf056c7f39297f35e702e91a54c5fe9b4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 24 Jan 2023 14:14:20 -0700
+Subject: powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT
+
+From: Michael Ellerman <mpe@ellerman.id.au>
+
+commit 4b9880dbf3bdba3a7c56445137c3d0e30aaa0a40 upstream.
+
+The powerpc linker script explicitly includes .exit.text, because
+otherwise the link fails due to references from __bug_table and
+__ex_table. The code is freed (discarded) at runtime along with
+.init.text and data.
+
+That has worked in the past despite powerpc not defining
+RUNTIME_DISCARD_EXIT because DISCARDS appears late in the powerpc linker
+script (line 410), and the explicit inclusion of .exit.text
+earlier (line 280) supersedes the discard.
+
+However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and
+riscv") introduced an earlier use of DISCARD as part of the RO_DATA
+macro (line 136). With binutils < 2.36 that causes the DISCARD
+directives later in the script to be applied earlier [1], causing
+.exit.text to actually be discarded at link time, leading to build
+errors:
+
+ '.exit.text' referenced in section '__bug_table' of crypto/algboss.o: defined in
+ discarded section '.exit.text' of crypto/algboss.o
+ '.exit.text' referenced in section '__ex_table' of drivers/nvdimm/core.o: defined in
+ discarded section '.exit.text' of drivers/nvdimm/core.o
+
+Fix it by defining RUNTIME_DISCARD_EXIT, which causes the generic
+DISCARDS macro to not include .exit.text at all.
+
+1: https://lore.kernel.org/lkml/87fscp2v7k.fsf@igel.home/
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20230105132349.384666-1-mpe@ellerman.id.au
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/powerpc/kernel/vmlinux.lds.S | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
+index 3ea360cad337..4d5e1662a0ba 100644
+--- a/arch/powerpc/kernel/vmlinux.lds.S
++++ b/arch/powerpc/kernel/vmlinux.lds.S
+@@ -6,6 +6,7 @@
+ #endif
+
+ #define BSS_FIRST_SECTIONS *(.bss.prominit)
++#define RUNTIME_DISCARD_EXIT
+
+ #include <asm/page.h>
+ #include <asm-generic/vmlinux.lds.h>
+--
+2.39.0
+
--- /dev/null
+From 5b4a7c35df5825ef9383bd378172a24a199cb61b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 24 Jan 2023 14:14:21 -0700
+Subject: powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds
+
+From: Michael Ellerman <mpe@ellerman.id.au>
+
+commit 07b050f9290ee012a407a0f64151db902a1520f5 upstream.
+
+Relocatable kernels must not discard relocations, they need to be
+processed at runtime. As such they are included for CONFIG_RELOCATABLE
+builds in the powerpc linker script (line 340).
+
+However they are also unconditionally discarded later in the
+script (line 414). Previously that worked because the earlier inclusion
+superseded the discard.
+
+However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and
+riscv") introduced an earlier use of DISCARD as part of the RO_DATA
+macro (line 137). With binutils < 2.36 that causes the DISCARD
+directives later in the script to be applied earlier, causing .rela* to
+actually be discarded at link time, leading to build warnings and a
+kernel that doesn't boot:
+
+ ld: warning: discarding dynamic section .rela.init.rodata
+
+Fix it by conditionally discarding .rela* only when CONFIG_RELOCATABLE
+is disabled.
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+
+Link: https://lore.kernel.org/r/20230105132349.384666-2-mpe@ellerman.id.au
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/powerpc/kernel/vmlinux.lds.S | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
+index 4d5e1662a0ba..46dfb3701c6e 100644
+--- a/arch/powerpc/kernel/vmlinux.lds.S
++++ b/arch/powerpc/kernel/vmlinux.lds.S
+@@ -395,9 +395,12 @@ SECTIONS
+ DISCARDS
+ /DISCARD/ : {
+ *(*.EMB.apuinfo)
+- *(.glink .iplt .plt .rela* .comment)
++ *(.glink .iplt .plt .comment)
+ *(.gnu.version*)
+ *(.gnu.attributes)
+ *(.eh_frame)
++#ifndef CONFIG_RELOCATABLE
++ *(.rela*)
++#endif
+ }
+ }
+--
+2.39.0
+
--- /dev/null
+From 063ef1805df9364bd86cd4b986a82814e7dacef3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 26 Jan 2023 09:21:24 -0500
+Subject: Revert "Revert "xhci: Set HCD flag to defer primary roothub
+ registration""
+
+This reverts commit 049849492b77aa0df7f7130f1d522f3553c4084b.
+
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/usb/host/xhci.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
+index 35d96796854d..b8915790a20a 100644
+--- a/drivers/usb/host/xhci.c
++++ b/drivers/usb/host/xhci.c
+@@ -693,6 +693,7 @@ int xhci_run(struct usb_hcd *hcd)
+ if (ret)
+ xhci_free_command(xhci, command);
+ }
++ set_bit(HCD_FLAG_DEFER_RH_REGISTER, &hcd->flags);
+ xhci_dbg_trace(xhci, trace_xhci_dbg_init,
+ "Finished xhci_run for USB2 roothub");
+
+--
+2.39.0
+
--- /dev/null
+From 9ba5c19fec2f2639d8538a7889e3e5bc00003389 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 24 Jan 2023 14:14:22 -0700
+Subject: s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld <
+ 2.36
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit a494398bde273143c2352dd373cad8211f7d94b2 upstream.
+
+Nathan Chancellor reports that the s390 vmlinux fails to link with
+GNU ld < 2.36 since commit 99cb0d917ffa ("arch: fix broken BuildID
+for arm64 and riscv").
+
+It happens for defconfig, or more specifically for CONFIG_EXPOLINE=y.
+
+ $ s390x-linux-gnu-ld --version | head -n1
+ GNU ld (GNU Binutils for Debian) 2.35.2
+ $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- allnoconfig
+ $ ./scripts/config -e CONFIG_EXPOLINE
+ $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- olddefconfig
+ $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu-
+ `.exit.text' referenced in section `.s390_return_reg' of drivers/base/dd.o: defined in discarded section `.exit.text' of drivers/base/dd.o
+ make[1]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1
+ make: *** [Makefile:1252: vmlinux] Error 2
+
+arch/s390/kernel/vmlinux.lds.S wants to keep EXIT_TEXT:
+
+ .exit.text : {
+ EXIT_TEXT
+ }
+
+But, at the same time, EXIT_TEXT is thrown away by DISCARD because
+s390 does not define RUNTIME_DISCARD_EXIT.
+
+I still do not understand why the latter wins after 99cb0d917ffa,
+but defining RUNTIME_DISCARD_EXIT seems correct because the comment
+line in arch/s390/kernel/vmlinux.lds.S says:
+
+ /*
+ * .exit.text is discarded at runtime, not link time,
+ * to deal with references from __bug_table
+ */
+
+Nathan also found that binutils commit 21401fc7bf67 ("Duplicate output
+sections in scripts") cured this issue, so we cannot reproduce it with
+binutils 2.36+, but it is better to not rely on it.
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Link: https://lore.kernel.org/all/Y7Jal56f6UBh1abE@dev-arch.thelio-3990X/
+Reported-by: Nathan Chancellor <nathan@kernel.org>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Link: https://lore.kernel.org/r/20230105031306.1455409-1-masahiroy@kernel.org
+Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/s390/kernel/vmlinux.lds.S | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
+index 4df41695caec..a471bd480397 100644
+--- a/arch/s390/kernel/vmlinux.lds.S
++++ b/arch/s390/kernel/vmlinux.lds.S
+@@ -15,6 +15,8 @@
+ /* Handle ro_after_init data on our own. */
+ #define RO_AFTER_INIT_DATA
+
++#define RUNTIME_DISCARD_EXIT
++
+ #include <asm-generic/vmlinux.lds.h>
+ #include <asm/vmlinux.lds.h>
+
+--
+2.39.0
+
mmc-sdhci-esdhc-imx-correct-the-tuning-start-tap-and.patch
revert-selftests-bpf-check-null-propagation-only-nei.patch
netfilter-conntrack-do-not-renew-entry-stuck-in-tcp-.patch
+x86-vmlinux.lds-add-runtime_discard_exit-to-generic-.patch
+arch-fix-broken-buildid-for-arm64-and-riscv.patch
+powerpc-vmlinux.lds-define-runtime_discard_exit.patch
+powerpc-vmlinux.lds-don-t-discard-.rela-for-relocata.patch
+s390-define-runtime_discard_exit-to-fix-link-error-w.patch
+sh-define-runtime_discard_exit.patch
+revert-revert-xhci-set-hcd-flag-to-defer-primary-roo.patch
+bluetooth-hci_sync-cancel-cmd_timer-if-hci_open-fail.patch
--- /dev/null
+From f4cdd0fccd2723a36ff28dbb7f76867a5d751d25 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 24 Jan 2023 14:14:23 -0700
+Subject: sh: define RUNTIME_DISCARD_EXIT
+
+From: Tom Saeger <tom.saeger@oracle.com>
+
+sh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since
+commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv").
+
+This is similar to fixes for powerpc and s390:
+commit 4b9880dbf3bd ("powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT").
+commit a494398bde27 ("s390: define RUNTIME_DISCARD_EXIT to fix link error
+with GNU ld < 2.36").
+
+ $ sh4-linux-gnu-ld --version | head -n1
+ GNU ld (GNU Binutils for Debian) 2.35.2
+
+ $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig
+ $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
+
+ `.exit.text' referenced in section `__bug_table' of crypto/algboss.o:
+ defined in discarded section `.exit.text' of crypto/algboss.o
+ `.exit.text' referenced in section `__bug_table' of
+ drivers/char/hw_random/core.o: defined in discarded section
+ `.exit.text' of drivers/char/hw_random/core.o
+ make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1
+ make[1]: *** [Makefile:1252: vmlinux] Error 2
+
+arch/sh/kernel/vmlinux.lds.S keeps EXIT_TEXT:
+
+ /*
+ * .exit.text is discarded at runtime, not link time, to deal with
+ * references from __bug_table
+ */
+ .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }
+
+However, EXIT_TEXT is thrown away by
+DISCARD(include/asm-generic/vmlinux.lds.h) because
+sh does not define RUNTIME_DISCARD_EXIT.
+
+GNU ld 2.40 does not have this issue and builds fine.
+This corresponds with Masahiro's comments in a494398bde27:
+"Nathan [Chancellor] also found that binutils
+commit 21401fc7bf67 ("Duplicate output sections in scripts") cured this
+issue, so we cannot reproduce it with binutils 2.36+, but it is better
+to not rely on it."
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Link: https://lore.kernel.org/all/Y7Jal56f6UBh1abE@dev-arch.thelio-3990X/
+Link: https://lore.kernel.org/all/20230123194218.47ssfzhrpnv3xfez@oracle.com/
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/sh/kernel/vmlinux.lds.S | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S
+index 77a59d8c6b4d..ec3bae172b20 100644
+--- a/arch/sh/kernel/vmlinux.lds.S
++++ b/arch/sh/kernel/vmlinux.lds.S
+@@ -10,6 +10,7 @@ OUTPUT_ARCH(sh:sh5)
+ #define LOAD_OFFSET 0
+ OUTPUT_ARCH(sh)
+ #endif
++#define RUNTIME_DISCARD_EXIT
+
+ #include <asm/thread_info.h>
+ #include <asm/cache.h>
+--
+2.39.0
+
--- /dev/null
+From c278befb01681aafe2e59159bec29516fa681dea Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 24 Jan 2023 14:14:18 -0700
+Subject: x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS
+
+From: H.J. Lu <hjl.tools@gmail.com>
+
+commit 84d5f77fc2ee4e010c2c037750e32f06e55224b0 upstream.
+
+In the x86 kernel, .exit.text and .exit.data sections are discarded at
+runtime, not by the linker. Add RUNTIME_DISCARD_EXIT to generic DISCARDS
+and define it in the x86 kernel linker script to keep them.
+
+The sections are added before the DISCARD directive so document here
+only the situation explicitly as this change doesn't have any effect on
+the generated kernel. Also, other architectures like ARM64 will use it
+too so generalize the approach with the RUNTIME_DISCARD_EXIT define.
+
+ [ bp: Massage and extend commit message. ]
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Kees Cook <keescook@chromium.org>
+Link: https://lkml.kernel.org/r/20200326193021.255002-1-hjl.tools@gmail.com
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/kernel/vmlinux.lds.S | 1 +
+ include/asm-generic/vmlinux.lds.h | 11 +++++++++--
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
+index 1afe211d7a7c..0ae3cd9a25ea 100644
+--- a/arch/x86/kernel/vmlinux.lds.S
++++ b/arch/x86/kernel/vmlinux.lds.S
+@@ -21,6 +21,7 @@
+ #define LOAD_OFFSET __START_KERNEL_map
+ #endif
+
++#define RUNTIME_DISCARD_EXIT
+ #include <asm-generic/vmlinux.lds.h>
+ #include <asm/asm-offsets.h>
+ #include <asm/thread_info.h>
+diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
+index c3bcac22c389..2d45d98773e2 100644
+--- a/include/asm-generic/vmlinux.lds.h
++++ b/include/asm-generic/vmlinux.lds.h
+@@ -900,10 +900,17 @@
+ * section definitions so that such archs put those in earlier section
+ * definitions.
+ */
++#ifdef RUNTIME_DISCARD_EXIT
++#define EXIT_DISCARDS
++#else
++#define EXIT_DISCARDS \
++ EXIT_TEXT \
++ EXIT_DATA
++#endif
++
+ #define DISCARDS \
+ /DISCARD/ : { \
+- EXIT_TEXT \
+- EXIT_DATA \
++ EXIT_DISCARDS \
+ EXIT_CALL \
+ *(.discard) \
+ *(.discard.*) \
+--
+2.39.0
+