From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nick Desaulniers <ndesaulniers@google.com>, Arnd Bergmann <arnd@kernel.org>, Tao Zhang <quic_taozha@quicinc.com>, Arnd Bergmann <arnd@arndb.de>, Suzuki K Poulose <suzuki.poulose@arm.com>, Sasha Levin <sashal@kernel.org>, mathieu.poirier@linaro.org, alexander.shishkin@linux.intel.com, nathan@kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev Subject: [PATCH AUTOSEL 5.19 32/64] coresight: etm4x: avoid build failure with unrolled loops Date: Sun, 14 Aug 2022 11:24:05 -0400 [thread overview] Message-ID: <20220814152437.2374207-32-sashal@kernel.org> (raw) In-Reply-To: <20220814152437.2374207-1-sashal@kernel.org> From: Nick Desaulniers <ndesaulniers@google.com> [ Upstream commit 4d45bc82df667ad9e9cb8361830e54fc1264e993 ] When the following configs are enabled: * CORESIGHT * CORESIGHT_SOURCE_ETM4X * UBSAN * UBSAN_TRAP Clang fails assemble the kernel with the error: <instantiation>:1:7: error: expected constant expression in '.inst' directive .inst (0xd5200000|((((2) << 19) | ((1) << 16) | (((((((((((0x160 + (i * 4))))) >> 2))) >> 7) & 0x7)) << 12) | ((((((((((0x160 + (i * 4))))) >> 2))) & 0xf)) << 8) | (((((((((((0x160 + (i * 4))))) >> 2))) >> 4) & 0x7)) << 5)))|(.L__reg_num_x8)) ^ drivers/hwtracing/coresight/coresight-etm4x-core.c:702:4: note: while in macro instantiation etm4x_relaxed_read32(csa, TRCCNTVRn(i)); ^ drivers/hwtracing/coresight/coresight-etm4x.h:403:4: note: expanded from macro 'etm4x_relaxed_read32' read_etm4x_sysreg_offset((offset), false))) ^ drivers/hwtracing/coresight/coresight-etm4x.h:383:12: note: expanded from macro 'read_etm4x_sysreg_offset' __val = read_etm4x_sysreg_const_offset((offset)); \ ^ drivers/hwtracing/coresight/coresight-etm4x.h:149:2: note: expanded from macro 'read_etm4x_sysreg_const_offset' READ_ETM4x_REG(ETM4x_OFFSET_TO_REG(offset)) ^ drivers/hwtracing/coresight/coresight-etm4x.h:144:2: note: expanded from macro 'READ_ETM4x_REG' read_sysreg_s(ETM4x_REG_NUM_TO_SYSREG((reg))) ^ arch/arm64/include/asm/sysreg.h:1108:15: note: expanded from macro 'read_sysreg_s' asm volatile(__mrs_s("%0", r) : "=r" (__val)); \ ^ arch/arm64/include/asm/sysreg.h:1074:2: note: expanded from macro '__mrs_s' " mrs_s " v ", " __stringify(r) "\n" \ ^ Consider the definitions of TRCSSCSRn and TRCCNTVRn: drivers/hwtracing/coresight/coresight-etm4x.h:56 #define TRCCNTVRn(n) (0x160 + (n * 4)) drivers/hwtracing/coresight/coresight-etm4x.h:81 #define TRCSSCSRn(n) (0x2A0 + (n * 4)) Where the macro parameter is expanded to i; a loop induction variable from etm4_disable_hw. When any compiler can determine that loops may be unrolled, then the __builtin_constant_p check in read_etm4x_sysreg_offset() defined in drivers/hwtracing/coresight/coresight-etm4x.h may evaluate to true. This can lead to the expression `(0x160 + (i * 4))` being passed to read_etm4x_sysreg_const_offset. Via the trace above, this is passed through READ_ETM4x_REG, read_sysreg_s, and finally to __mrs_s where it is string-ified and used directly in inline asm. Regardless of which compiler or compiler options determine whether a loop can or can't be unrolled, which determines whether __builtin_constant_p evaluates to true when passed an expression using a loop induction variable, it is NEVER safe to allow the preprocessor to construct inline asm like: asm volatile (".inst (0x160 + (i * 4))" : "=r"(__val)); ^ expected constant expression Instead of read_etm4x_sysreg_offset() using __builtin_constant_p(), use __is_constexpr from include/linux/const.h instead to ensure only expressions that are valid integer constant expressions get passed through to read_sysreg_s(). This is not a bug in clang; it's a potentially unsafe use of the macro arguments in read_etm4x_sysreg_offset dependent on __builtin_constant_p. Link: https://github.com/ClangBuiltLinux/linux/issues/1310 Reported-by: Arnd Bergmann <arnd@kernel.org> Reported-by: Tao Zhang <quic_taozha@quicinc.com> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20220708231520.3958391-1-ndesaulniers@google.com Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/hwtracing/coresight/coresight-etm4x.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h index 33869c1d20c3..a7bfea31f7d8 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x.h +++ b/drivers/hwtracing/coresight/coresight-etm4x.h @@ -7,6 +7,7 @@ #define _CORESIGHT_CORESIGHT_ETM_H #include <asm/local.h> +#include <linux/const.h> #include <linux/spinlock.h> #include <linux/types.h> #include "coresight-priv.h" @@ -515,7 +516,7 @@ ({ \ u64 __val; \ \ - if (__builtin_constant_p((offset))) \ + if (__is_constexpr((offset))) \ __val = read_etm4x_sysreg_const_offset((offset)); \ else \ __val = etm4x_sysreg_read((offset), true, (_64bit)); \ -- 2.35.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nick Desaulniers <ndesaulniers@google.com>, Arnd Bergmann <arnd@kernel.org>, Tao Zhang <quic_taozha@quicinc.com>, Arnd Bergmann <arnd@arndb.de>, Suzuki K Poulose <suzuki.poulose@arm.com>, Sasha Levin <sashal@kernel.org>, mathieu.poirier@linaro.org, alexander.shishkin@linux.intel.com, nathan@kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev Subject: [PATCH AUTOSEL 5.19 32/64] coresight: etm4x: avoid build failure with unrolled loops Date: Sun, 14 Aug 2022 11:24:05 -0400 [thread overview] Message-ID: <20220814152437.2374207-32-sashal@kernel.org> (raw) In-Reply-To: <20220814152437.2374207-1-sashal@kernel.org> From: Nick Desaulniers <ndesaulniers@google.com> [ Upstream commit 4d45bc82df667ad9e9cb8361830e54fc1264e993 ] When the following configs are enabled: * CORESIGHT * CORESIGHT_SOURCE_ETM4X * UBSAN * UBSAN_TRAP Clang fails assemble the kernel with the error: <instantiation>:1:7: error: expected constant expression in '.inst' directive .inst (0xd5200000|((((2) << 19) | ((1) << 16) | (((((((((((0x160 + (i * 4))))) >> 2))) >> 7) & 0x7)) << 12) | ((((((((((0x160 + (i * 4))))) >> 2))) & 0xf)) << 8) | (((((((((((0x160 + (i * 4))))) >> 2))) >> 4) & 0x7)) << 5)))|(.L__reg_num_x8)) ^ drivers/hwtracing/coresight/coresight-etm4x-core.c:702:4: note: while in macro instantiation etm4x_relaxed_read32(csa, TRCCNTVRn(i)); ^ drivers/hwtracing/coresight/coresight-etm4x.h:403:4: note: expanded from macro 'etm4x_relaxed_read32' read_etm4x_sysreg_offset((offset), false))) ^ drivers/hwtracing/coresight/coresight-etm4x.h:383:12: note: expanded from macro 'read_etm4x_sysreg_offset' __val = read_etm4x_sysreg_const_offset((offset)); \ ^ drivers/hwtracing/coresight/coresight-etm4x.h:149:2: note: expanded from macro 'read_etm4x_sysreg_const_offset' READ_ETM4x_REG(ETM4x_OFFSET_TO_REG(offset)) ^ drivers/hwtracing/coresight/coresight-etm4x.h:144:2: note: expanded from macro 'READ_ETM4x_REG' read_sysreg_s(ETM4x_REG_NUM_TO_SYSREG((reg))) ^ arch/arm64/include/asm/sysreg.h:1108:15: note: expanded from macro 'read_sysreg_s' asm volatile(__mrs_s("%0", r) : "=r" (__val)); \ ^ arch/arm64/include/asm/sysreg.h:1074:2: note: expanded from macro '__mrs_s' " mrs_s " v ", " __stringify(r) "\n" \ ^ Consider the definitions of TRCSSCSRn and TRCCNTVRn: drivers/hwtracing/coresight/coresight-etm4x.h:56 #define TRCCNTVRn(n) (0x160 + (n * 4)) drivers/hwtracing/coresight/coresight-etm4x.h:81 #define TRCSSCSRn(n) (0x2A0 + (n * 4)) Where the macro parameter is expanded to i; a loop induction variable from etm4_disable_hw. When any compiler can determine that loops may be unrolled, then the __builtin_constant_p check in read_etm4x_sysreg_offset() defined in drivers/hwtracing/coresight/coresight-etm4x.h may evaluate to true. This can lead to the expression `(0x160 + (i * 4))` being passed to read_etm4x_sysreg_const_offset. Via the trace above, this is passed through READ_ETM4x_REG, read_sysreg_s, and finally to __mrs_s where it is string-ified and used directly in inline asm. Regardless of which compiler or compiler options determine whether a loop can or can't be unrolled, which determines whether __builtin_constant_p evaluates to true when passed an expression using a loop induction variable, it is NEVER safe to allow the preprocessor to construct inline asm like: asm volatile (".inst (0x160 + (i * 4))" : "=r"(__val)); ^ expected constant expression Instead of read_etm4x_sysreg_offset() using __builtin_constant_p(), use __is_constexpr from include/linux/const.h instead to ensure only expressions that are valid integer constant expressions get passed through to read_sysreg_s(). This is not a bug in clang; it's a potentially unsafe use of the macro arguments in read_etm4x_sysreg_offset dependent on __builtin_constant_p. Link: https://github.com/ClangBuiltLinux/linux/issues/1310 Reported-by: Arnd Bergmann <arnd@kernel.org> Reported-by: Tao Zhang <quic_taozha@quicinc.com> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20220708231520.3958391-1-ndesaulniers@google.com Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/hwtracing/coresight/coresight-etm4x.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/hwtracing/coresight/coresight-etm4x.h b/drivers/hwtracing/coresight/coresight-etm4x.h index 33869c1d20c3..a7bfea31f7d8 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x.h +++ b/drivers/hwtracing/coresight/coresight-etm4x.h @@ -7,6 +7,7 @@ #define _CORESIGHT_CORESIGHT_ETM_H #include <asm/local.h> +#include <linux/const.h> #include <linux/spinlock.h> #include <linux/types.h> #include "coresight-priv.h" @@ -515,7 +516,7 @@ ({ \ u64 __val; \ \ - if (__builtin_constant_p((offset))) \ + if (__is_constexpr((offset))) \ __val = read_etm4x_sysreg_const_offset((offset)); \ else \ __val = etm4x_sysreg_read((offset), true, (_64bit)); \ -- 2.35.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-08-14 15:28 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-08-14 15:23 [PATCH AUTOSEL 5.19 01/64] thunderbolt: Change downstream router's TMU rate in both TMU uni/bidir mode Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 02/64] HID: multitouch: new device class fix Lenovo X12 trackpad sticky Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 03/64] PCI: Add ACS quirk for Broadcom BCM5750x NICs Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 04/64] platform/chrome: cros_ec_proto: don't show MKBP version if unsupported Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 05/64] staging: r8188eu: add error handling of rtw_read8 Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 06/64] staging: r8188eu: add error handling of rtw_read16 Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 07/64] staging: r8188eu: add error handling of rtw_read32 Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 08/64] usb: cdns3 fix use-after-free at workaround 2 Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 09/64] usb: cdns3: fix random warning message when driver load Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 10/64] usb: gadget: uvc: calculate the number of request depending on framesize Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 11/64] usb: gadget: uvc: call uvc uvcg_warn on completed status instead of uvcg_info Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 12/64] PCI: aardvark: Fix reporting Slot capabilities on emulated bridge Sasha Levin 2022-08-14 15:23 ` Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 13/64] scsi: ufs: core: Add UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 14/64] scsi: ufs: core: Add UFSHCD_QUIRK_HIBERN_FASTAUTO Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 15/64] irqchip/tegra: Fix overflow implicit truncation warnings Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 16/64] drm/meson: " Sasha Levin 2022-08-14 15:23 ` Sasha Levin 2022-08-14 15:23 ` Sasha Levin 2022-08-14 15:23 ` Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 17/64] clk: ti: Stop using legacy clkctrl names for omap4 and 5 Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 18/64] scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators Sasha Levin 2022-08-14 15:23 ` Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 19/64] usb: typec: mux: Add CONFIG guards for functions Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 20/64] usb: host: ohci-ppc-of: Fix refcount leak bug Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 21/64] usb: renesas: " Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 22/64] scsi: iscsi: Fix HW conn removal use after free Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 23/64] usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 24/64] vboxguest: Do not use devm for irq Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 25/64] clk: qcom: ipq8074: dont disable gcc_sleep_clk_src Sasha Levin 2022-08-14 15:23 ` [PATCH AUTOSEL 5.19 26/64] uacce: Handle parent device removal or parent driver module rmmod Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 27/64] zram: do not lookup algorithm in backends table Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 28/64] clk: qcom: clk-alpha-pll: fix clk_trion_pll_configure description Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 29/64] scsi: lpfc: Prevent buffer overflow crashes in debugfs with malformed user input Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 30/64] scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 31/64] gadgetfs: ep_io - wait until IRQ finishes Sasha Levin 2022-08-14 15:24 ` Sasha Levin [this message] 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 32/64] coresight: etm4x: avoid build failure with unrolled loops Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 33/64] habanalabs: add terminating NULL to attrs arrays Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 34/64] habanalabs/gaudi: invoke device reset from one code block Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 35/64] habanalabs/gaudi: fix shift out of bounds Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 36/64] habanalabs/gaudi: mask constant value before cast Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 37/64] mmc: tmio: avoid glitches when resetting Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 38/64] scsi: ufs: ufs-exynos: Change ufs phy control sequence Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 39/64] pinctrl: intel: Check against matching data instead of ACPI companion Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 40/64] cxl: Fix a memory leak in an error handling path Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 41/64] PCI/ACPI: Guard ARM64-specific mcfg_quirks Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 42/64] um: add "noreboot" command line option for PANIC_TIMEOUT=-1 setups Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 43/64] of: overlay: Move devicetree_corrupt() check up Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 44/64] dmaengine: dw-axi-dmac: do not print NULL LLI during error Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 45/64] dmaengine: dw-axi-dmac: ignore interrupt if no descriptor Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 46/64] mmc: renesas_sdhi: newer SoCs don't need manual tap correction Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 47/64] ACPI: PPTT: Leave the table mapped for the runtime usage Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 48/64] RDMA/rxe: Limit the number of calls to each tasklet Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 49/64] csky/kprobe: reclaim insn_slot on kprobe unregistration Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 50/64] selftests/kprobe: Do not test for GRP/ without event failures Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 51/64] dmaengine: tegra: Add terminate() for Tegra234 Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 52/64] dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 53/64] Revert "RDMA/rxe: Create duplicate mapping tables for FMRs" Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 54/64] ARM: 9202/1: kasan: support CONFIG_KASAN_VMALLOC Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-16 14:45 ` Ard Biesheuvel 2022-08-16 14:45 ` Ard Biesheuvel 2022-08-20 14:37 ` Sasha Levin 2022-08-20 14:37 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 55/64] ARM: 9203/1: kconfig: fix MODULE_PLTS for KASAN with KASAN_VMALLOC Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 56/64] openrisc: io: Define iounmap argument as volatile Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 57/64] phy: samsung: phy-exynos-pcie: sanitize init/power_on callbacks Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 58/64] md: Notify sysfs sync_completed in md_reap_sync_thread() Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 59/64] md/raid5: Make logic blocking check consistent with logic that blocks Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 60/64] nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 61/64] drivers:md:fix a potential use-after-free bug Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 62/64] ext4: avoid remove directory when directory is corrupted Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 63/64] ext4: block range must be validated before use in ext4_mb_clear_bb() Sasha Levin 2022-08-14 15:24 ` [PATCH AUTOSEL 5.19 64/64] ext4: avoid resizing to a partial cluster size Sasha Levin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220814152437.2374207-32-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=alexander.shishkin@linux.intel.com \ --cc=arnd@arndb.de \ --cc=arnd@kernel.org \ --cc=coresight@lists.linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=llvm@lists.linux.dev \ --cc=mathieu.poirier@linaro.org \ --cc=nathan@kernel.org \ --cc=ndesaulniers@google.com \ --cc=quic_taozha@quicinc.com \ --cc=stable@vger.kernel.org \ --cc=suzuki.poulose@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.