[PATCH 00/10] Bump minimum supported version of LLVM for building the kernel to 15.0.0

1 view
Skip to first unread message

Nathan Chancellor

unread,
Aug 18, 2025, 2:57:59 PMAug 18
to Andrew Morton, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, Nathan Chancellor, linux-...@vger.kernel.org, linux-h...@vger.kernel.org, Russell King, Ard Biesheuvel, linux-ar...@lists.infradead.org, Catalin Marinas, Will Deacon, Thomas Bogendoerfer, linux...@vger.kernel.org, Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin, Christophe Leroy, linuxp...@lists.ozlabs.org, Palmer Dabbelt, Alexandre Ghiti, linux...@lists.infradead.org, Josh Poimboeuf, Peter Zijlstra, Marco Elver, Dmitry Vyukov, kasa...@googlegroups.com, Alexander Potapenko
s390 and x86 have required LLVM 15 since

30d17fac6aae ("scripts/min-tool-version.sh: raise minimum clang version to 15.0.0 for s390")
7861640aac52 ("x86/build: Raise the minimum LLVM version to 15.0.0")

respectively. This series bumps the rest of the kernel to 15.0.0 to
match, which allows for a decent number of clean ups.

On the distros front, we will only leave behind Debian Bookworm and
Ubuntu Jammy. In both of those cases, builders / developers can either
use the kernel.org toolchains or https://apt.llvm.org to get newer
versions that will run on those distributions, if they cannot upgrade.

archlinux:latest clang version 20.1.8
debian:oldoldstable-slim Debian clang version 11.0.1-2
debian:oldstable-slim Debian clang version 14.0.6
debian:stable-slim Debian clang version 19.1.7 (3+b1)
debian:testing-slim Debian clang version 19.1.7 (3+b1)
debian:unstable-slim Debian clang version 19.1.7 (3+b2)
fedora:41 clang version 19.1.7 (Fedora 19.1.7-4.fc41)
fedora:latest clang version 20.1.8 (Fedora 20.1.8-3.fc42)
fedora:rawhide clang version 20.1.8 (Fedora 20.1.8-3.fc43)
opensuse/leap:latest clang version 17.0.6
opensuse/tumbleweed:latest clang version 20.1.8
ubuntu:focal clang version 10.0.0-4ubuntu1
ubuntu:jammy Ubuntu clang version 14.0.0-1ubuntu1.1
ubuntu:noble Ubuntu clang version 18.1.3 (1ubuntu1)
ubuntu:latest Ubuntu clang version 18.1.3 (1ubuntu1)
ubuntu:rolling Ubuntu clang version 20.1.2 (0ubuntu1)
ubuntu:devel Ubuntu clang version 20.1.8 (0ubuntu1)

I think it makes sense for either Andrew to carry this via -mm on a
nonmm branch or me to carry this via the Kbuild tree, with the
appropriate acks.

---
Nathan Chancellor (10):
kbuild: Bump minimum version of LLVM for building the kernel to 15.0.0
arch/Kconfig: Drop always true condition from RANDOMIZE_KSTACK_OFFSET
ARM: Clean up definition of ARM_HAS_GROUP_RELOCS
arm64: Remove tautological LLVM Kconfig conditions
mips: Unconditionally select ARCH_HAS_CURRENT_STACK_POINTER
powerpc: Drop unnecessary initializations in __copy_inst_from_kernel_nofault()
riscv: Remove version check for LTO_CLANG selects
lib/Kconfig.debug: Drop CLANG_VERSION check from DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
objtool: Drop noinstr hack for KCSAN_WEAK_MEMORY
KMSAN: Remove tautological checks

Documentation/process/changes.rst | 2 +-
arch/Kconfig | 1 -
arch/arm/Kconfig | 11 ++++-------
arch/arm64/Kconfig | 5 +----
arch/mips/Kconfig | 2 +-
arch/powerpc/include/asm/inst.h | 4 ----
arch/riscv/Kconfig | 5 ++---
lib/Kconfig.debug | 2 +-
lib/Kconfig.kcsan | 6 ------
lib/Kconfig.kmsan | 11 +----------
scripts/min-tool-version.sh | 6 ++----
tools/objtool/check.c | 10 ----------
12 files changed, 13 insertions(+), 52 deletions(-)
---
base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
change-id: 20250710-bump-min-llvm-ver-15-95231f1eb655

Best regards,
--
Nathan Chancellor <nat...@kernel.org>

Nathan Chancellor

unread,
Aug 18, 2025, 2:58:15 PMAug 18
to Andrew Morton, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, Nathan Chancellor, Josh Poimboeuf, Peter Zijlstra, Marco Elver, Dmitry Vyukov, kasa...@googlegroups.com
Now that the minimum supported version of LLVM for building the kernel
has been bumped to 15.0.0, __no_kcsan will always ensure that the thread
sanitizer functions are not generated, so remove the check for tsan
functions in is_profiling_func() and the always true depends and
unnecessary select lines in KCSAN_WEAK_MEMORY.

Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---
Cc: Josh Poimboeuf <jpoi...@kernel.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Marco Elver <el...@google.com>
Cc: Dmitry Vyukov <dvy...@google.com>
Cc: kasa...@googlegroups.com
---
lib/Kconfig.kcsan | 6 ------
tools/objtool/check.c | 10 ----------
2 files changed, 16 deletions(-)

diff --git a/lib/Kconfig.kcsan b/lib/Kconfig.kcsan
index 609ddfc73de5..4ce4b0c0109c 100644
--- a/lib/Kconfig.kcsan
+++ b/lib/Kconfig.kcsan
@@ -185,12 +185,6 @@ config KCSAN_WEAK_MEMORY
bool "Enable weak memory modeling to detect missing memory barriers"
default y
depends on KCSAN_STRICT
- # We can either let objtool nop __tsan_func_{entry,exit}() and builtin
- # atomics instrumentation in .noinstr.text, or use a compiler that can
- # implement __no_kcsan to really remove all instrumentation.
- depends on !ARCH_WANTS_NO_INSTR || HAVE_NOINSTR_HACK || \
- CC_IS_GCC || CLANG_VERSION >= 140000
- select OBJTOOL if HAVE_NOINSTR_HACK
help
Enable support for modeling a subset of weak memory, which allows
detecting a subset of data races due to missing memory barriers.
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index d14f20ef1db1..efa4c060ff4e 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -2453,16 +2453,6 @@ static bool is_profiling_func(const char *name)
if (!strncmp(name, "__sanitizer_cov_", 16))
return true;

- /*
- * Some compilers currently do not remove __tsan_func_entry/exit nor
- * __tsan_atomic_signal_fence (used for barrier instrumentation) with
- * the __no_sanitize_thread attribute, remove them. Once the kernel's
- * minimum Clang version is 14.0, this can be removed.
- */
- if (!strncmp(name, "__tsan_func_", 12) ||
- !strcmp(name, "__tsan_atomic_signal_fence"))
- return true;
-
return false;
}


--
2.50.1

Nathan Chancellor

unread,
Aug 18, 2025, 2:58:21 PMAug 18
to Andrew Morton, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, Nathan Chancellor, Alexander Potapenko, Marco Elver, Dmitry Vyukov, kasa...@googlegroups.com
Now that the minimum supported version of LLVM for building the kernel
has been bumped to 15.0.0, two KMSAN checks can be cleaned up.

CONFIG_HAVE_KMSAN_COMPILER will always be true when using clang so
remove the cc-option test and use a simple check for CONFIG_CC_IS_CLANG.

CONFIG_HAVE_KMSAN_PARAM_RETVAL will always be true so it can be removed
outright.

Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---
Cc: Alexander Potapenko <gli...@google.com>
Cc: Marco Elver <el...@google.com>
Cc: Dmitry Vyukov <dvy...@google.com>
Cc: kasa...@googlegroups.com
---
lib/Kconfig.kmsan | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/Kconfig.kmsan b/lib/Kconfig.kmsan
index 0541d7b079cc..7251b6b59e69 100644
--- a/lib/Kconfig.kmsan
+++ b/lib/Kconfig.kmsan
@@ -3,10 +3,7 @@ config HAVE_ARCH_KMSAN
bool

config HAVE_KMSAN_COMPILER
- # Clang versions <14.0.0 also support -fsanitize=kernel-memory, but not
- # all the features necessary to build the kernel with KMSAN.
- depends on CC_IS_CLANG && CLANG_VERSION >= 140000
- def_bool $(cc-option,-fsanitize=kernel-memory -mllvm -msan-disable-checks=1)
+ def_bool CC_IS_CLANG

config KMSAN
bool "KMSAN: detector of uninitialized values use"
@@ -28,15 +25,9 @@ config KMSAN

if KMSAN

-config HAVE_KMSAN_PARAM_RETVAL
- # -fsanitize-memory-param-retval is supported only by Clang >= 14.
- depends on HAVE_KMSAN_COMPILER
- def_bool $(cc-option,-fsanitize=kernel-memory -fsanitize-memory-param-retval)
-
config KMSAN_CHECK_PARAM_RETVAL
bool "Check for uninitialized values passed to and returned from functions"
default y
- depends on HAVE_KMSAN_PARAM_RETVAL
help
If the compiler supports -fsanitize-memory-param-retval, KMSAN will
eagerly check every function parameter passed by value and every

--
2.50.1

Peter Zijlstra

unread,
Aug 18, 2025, 3:12:13 PMAug 18
to Nathan Chancellor, Andrew Morton, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, Josh Poimboeuf, Marco Elver, Dmitry Vyukov, kasa...@googlegroups.com
On Mon, Aug 18, 2025 at 11:57:25AM -0700, Nathan Chancellor wrote:
> Now that the minimum supported version of LLVM for building the kernel
> has been bumped to 15.0.0, __no_kcsan will always ensure that the thread
> sanitizer functions are not generated, so remove the check for tsan
> functions in is_profiling_func() and the always true depends and
> unnecessary select lines in KCSAN_WEAK_MEMORY.
>
> Signed-off-by: Nathan Chancellor <nat...@kernel.org>

Acked-by: Peter Zijlstra (Intel) <pet...@infraded.org>

Kees Cook

unread,
Aug 18, 2025, 8:55:31 PMAug 18
to Nathan Chancellor, Andrew Morton, Arnd Bergmann, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, linux-...@vger.kernel.org, linux-h...@vger.kernel.org, Russell King, Ard Biesheuvel, linux-ar...@lists.infradead.org, Catalin Marinas, Will Deacon, Thomas Bogendoerfer, linux...@vger.kernel.org, Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin, Christophe Leroy, linuxp...@lists.ozlabs.org, Palmer Dabbelt, Alexandre Ghiti, linux...@lists.infradead.org, Josh Poimboeuf, Peter Zijlstra, Marco Elver, Dmitry Vyukov, kasa...@googlegroups.com, Alexander Potapenko
On Mon, Aug 18, 2025 at 11:57:16AM -0700, Nathan Chancellor wrote:
> s390 and x86 have required LLVM 15 since
>
> 30d17fac6aae ("scripts/min-tool-version.sh: raise minimum clang version to 15.0.0 for s390")
> 7861640aac52 ("x86/build: Raise the minimum LLVM version to 15.0.0")
>
> respectively. This series bumps the rest of the kernel to 15.0.0 to
> match, which allows for a decent number of clean ups.

Looks good to me!

Reviewed-by: Kees Cook <ke...@kernel.org>

> I think it makes sense for either Andrew to carry this via -mm on a
> nonmm branch or me to carry this via the Kbuild tree, with the
> appropriate acks.

I vote you carry it with Kbuild. :)

--
Kees Cook

Marco Elver

unread,
Aug 19, 2025, 6:36:16 AMAug 19
to Nathan Chancellor, Andrew Morton, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, Josh Poimboeuf, Peter Zijlstra, Dmitry Vyukov, kasa...@googlegroups.com
On Mon, 18 Aug 2025 at 20:58, Nathan Chancellor <nat...@kernel.org> wrote:
>
> Now that the minimum supported version of LLVM for building the kernel
> has been bumped to 15.0.0, __no_kcsan will always ensure that the thread
> sanitizer functions are not generated, so remove the check for tsan
> functions in is_profiling_func() and the always true depends and
> unnecessary select lines in KCSAN_WEAK_MEMORY.
>
> Signed-off-by: Nathan Chancellor <nat...@kernel.org>

Acked-by: Marco Elver <el...@google.com>

Good riddance.

Marco Elver

unread,
Aug 19, 2025, 7:02:40 AMAug 19
to Nathan Chancellor, Andrew Morton, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, linux-...@vger.kernel.org, ll...@lists.linux.dev, pat...@lists.linux.dev, Alexander Potapenko, Dmitry Vyukov, kasa...@googlegroups.com
On Mon, 18 Aug 2025 at 20:58, Nathan Chancellor <nat...@kernel.org> wrote:
>
> Now that the minimum supported version of LLVM for building the kernel
> has been bumped to 15.0.0, two KMSAN checks can be cleaned up.
>
> CONFIG_HAVE_KMSAN_COMPILER will always be true when using clang so
> remove the cc-option test and use a simple check for CONFIG_CC_IS_CLANG.
>
> CONFIG_HAVE_KMSAN_PARAM_RETVAL will always be true so it can be removed
> outright.
>
> Signed-off-by: Nathan Chancellor <nat...@kernel.org>

Acked-by: Marco Elver <el...@google.com>

Nathan Chancellor

unread,
Aug 21, 2025, 5:15:56 PMAug 21
to linux-...@vger.kernel.org, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, ll...@lists.linux.dev, pat...@lists.linux.dev, Nicolas Schier, Nathan Chancellor, linux-...@vger.kernel.org, linux-h...@vger.kernel.org, Russell King, Ard Biesheuvel, linux-ar...@lists.infradead.org, Will Deacon, Thomas Bogendoerfer, linux...@vger.kernel.org, Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin, Christophe Leroy, linuxp...@lists.ozlabs.org, Palmer Dabbelt, Alexandre Ghiti, linux...@lists.infradead.org, Marco Elver, Peter Zijlstra (Intel), kasa...@googlegroups.com
s390 and x86 have required LLVM 15 since

30d17fac6aae ("scripts/min-tool-version.sh: raise minimum clang version to 15.0.0 for s390")
7861640aac52 ("x86/build: Raise the minimum LLVM version to 15.0.0")

respectively. This series bumps the rest of the kernel to 15.0.0 to
match, which allows for a decent number of clean ups.

On the distros front, we will only leave behind Debian Bookworm and
Ubuntu Jammy. In both of those cases, builders / developers can either
use the kernel.org toolchains or https://apt.llvm.org to get newer
versions that will run on those distributions, if they cannot upgrade.

archlinux:latest clang version 20.1.8
debian:oldoldstable-slim Debian clang version 11.0.1-2
debian:oldstable-slim Debian clang version 14.0.6
debian:stable-slim Debian clang version 19.1.7 (3+b1)
debian:testing-slim Debian clang version 19.1.7 (3+b1)
debian:unstable-slim Debian clang version 19.1.7 (3+b2)
fedora:41 clang version 19.1.7 (Fedora 19.1.7-4.fc41)
fedora:latest clang version 20.1.8 (Fedora 20.1.8-3.fc42)
fedora:rawhide clang version 20.1.8 (Fedora 20.1.8-3.fc43)
opensuse/leap:latest clang version 17.0.6
opensuse/tumbleweed:latest clang version 20.1.8
ubuntu:focal clang version 10.0.0-4ubuntu1
ubuntu:jammy Ubuntu clang version 14.0.0-1ubuntu1.1
ubuntu:noble Ubuntu clang version 18.1.3 (1ubuntu1)
ubuntu:latest Ubuntu clang version 18.1.3 (1ubuntu1)
ubuntu:rolling Ubuntu clang version 20.1.2 (0ubuntu1)
ubuntu:devel Ubuntu clang version 20.1.8 (0ubuntu1)

I plan to carry this via the Kbuild tree with the appropriate acks.

---
Changes in v2:
- Add two new patches for RISC-V to clean up more LLD_VERSION checks
(Alex)
- Pick up provided tags (thanks all!)
- Link to v1: https://lore.kernel.org/r/20250818-bump-min-llvm-...@kernel.org

---
Nathan Chancellor (12):
kbuild: Bump minimum version of LLVM for building the kernel to 15.0.0
arch/Kconfig: Drop always true condition from RANDOMIZE_KSTACK_OFFSET
ARM: Clean up definition of ARM_HAS_GROUP_RELOCS
arm64: Remove tautological LLVM Kconfig conditions
mips: Unconditionally select ARCH_HAS_CURRENT_STACK_POINTER
powerpc: Drop unnecessary initializations in __copy_inst_from_kernel_nofault()
riscv: Remove version check for LTO_CLANG selects
riscv: Unconditionally use linker relaxation
riscv: Remove ld.lld version checks from many TOOLCHAIN_HAS configs
lib/Kconfig.debug: Drop CLANG_VERSION check from DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
objtool: Drop noinstr hack for KCSAN_WEAK_MEMORY
KMSAN: Remove tautological checks

Documentation/process/changes.rst | 2 +-
arch/Kconfig | 1 -
arch/arm/Kconfig | 11 ++++-------
arch/arm64/Kconfig | 5 +----
arch/mips/Kconfig | 2 +-
arch/powerpc/include/asm/inst.h | 4 ----
arch/riscv/Kconfig | 21 +++++++--------------
arch/riscv/Makefile | 9 +--------
lib/Kconfig.debug | 2 +-
lib/Kconfig.kcsan | 6 ------
lib/Kconfig.kmsan | 11 +----------
scripts/min-tool-version.sh | 6 ++----
tools/objtool/check.c | 10 ----------
13 files changed, 19 insertions(+), 71 deletions(-)

Nathan Chancellor

unread,
Aug 21, 2025, 5:16:27 PMAug 21
to linux-...@vger.kernel.org, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, ll...@lists.linux.dev, pat...@lists.linux.dev, Marco Elver, Peter Zijlstra (Intel), Nathan Chancellor, kasa...@googlegroups.com
Now that the minimum supported version of LLVM for building the kernel
has been bumped to 15.0.0, __no_kcsan will always ensure that the thread
sanitizer functions are not generated, so remove the check for tsan
functions in is_profiling_func() and the always true depends and
unnecessary select lines in KCSAN_WEAK_MEMORY.

Acked-by: Marco Elver <el...@google.com>
Acked-by: Peter Zijlstra (Intel) <pet...@infraded.org>
Reviewed-by: Kees Cook <ke...@kernel.org>
Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---

Nathan Chancellor

unread,
Aug 21, 2025, 5:16:31 PMAug 21
to linux-...@vger.kernel.org, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, ll...@lists.linux.dev, pat...@lists.linux.dev, Marco Elver, Nathan Chancellor, kasa...@googlegroups.com
Now that the minimum supported version of LLVM for building the kernel
has been bumped to 15.0.0, two KMSAN checks can be cleaned up.

CONFIG_HAVE_KMSAN_COMPILER will always be true when using clang so
remove the cc-option test and use a simple check for CONFIG_CC_IS_CLANG.

CONFIG_HAVE_KMSAN_PARAM_RETVAL will always be true so it can be removed
outright.

Acked-by: Marco Elver <el...@google.com>
Reviewed-by: Kees Cook <ke...@kernel.org>
Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---
Cc: kasa...@googlegroups.com
---

Nathan Chancellor

unread,
Aug 29, 2025, 6:33:53 PMAug 29
to linux-...@vger.kernel.org, Nathan Chancellor, Arnd Bergmann, Kees Cook, Nick Desaulniers, Bill Wendling, Justin Stitt, ll...@lists.linux.dev, pat...@lists.linux.dev, Nicolas Schier, linux-...@vger.kernel.org, linux-h...@vger.kernel.org, Russell King, Ard Biesheuvel, linux-ar...@lists.infradead.org, Will Deacon, Thomas Bogendoerfer, linux...@vger.kernel.org, Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin, Christophe Leroy, linuxp...@lists.ozlabs.org, Palmer Dabbelt, Alexandre Ghiti, linux...@lists.infradead.org, Marco Elver, Peter Zijlstra (Intel), kasa...@googlegroups.com

On Thu, 21 Aug 2025 14:15:37 -0700, Nathan Chancellor wrote:
> s390 and x86 have required LLVM 15 since
>
> 30d17fac6aae ("scripts/min-tool-version.sh: raise minimum clang version to 15.0.0 for s390")
> 7861640aac52 ("x86/build: Raise the minimum LLVM version to 15.0.0")
>
> respectively. This series bumps the rest of the kernel to 15.0.0 to
> match, which allows for a decent number of clean ups.
>
> [...]

Applied, thanks!

[01/12] kbuild: Bump minimum version of LLVM for building the kernel to 15.0.0
https://git.kernel.org/kbuild/c/20c0989283564
[02/12] arch/Kconfig: Drop always true condition from RANDOMIZE_KSTACK_OFFSET
https://git.kernel.org/kbuild/c/65aebf6f5880e
[03/12] ARM: Clean up definition of ARM_HAS_GROUP_RELOCS
https://git.kernel.org/kbuild/c/02aba266e391f
[04/12] arm64: Remove tautological LLVM Kconfig conditions
https://git.kernel.org/kbuild/c/23cb0514208da
[05/12] mips: Unconditionally select ARCH_HAS_CURRENT_STACK_POINTER
https://git.kernel.org/kbuild/c/e633c2e78fd1c
[06/12] powerpc: Drop unnecessary initializations in __copy_inst_from_kernel_nofault()
https://git.kernel.org/kbuild/c/488954ca195d0
[07/12] riscv: Remove version check for LTO_CLANG selects
https://git.kernel.org/kbuild/c/6578a1ff6aa49
[08/12] riscv: Unconditionally use linker relaxation
https://git.kernel.org/kbuild/c/7ccbe91796d7b
[09/12] riscv: Remove ld.lld version checks from many TOOLCHAIN_HAS configs
https://git.kernel.org/kbuild/c/87b28d71396bf
[10/12] lib/Kconfig.debug: Drop CLANG_VERSION check from DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
https://git.kernel.org/kbuild/c/a817de20091c3
[11/12] objtool: Drop noinstr hack for KCSAN_WEAK_MEMORY
https://git.kernel.org/kbuild/c/573ad421cc551
[12/12] KMSAN: Remove tautological checks
https://git.kernel.org/kbuild/c/5ff8c11775c74
Reply all
Reply to author
Forward
0 new messages