Commit Graph
859 Commits
Author SHA1 Message Date
Carlos Llamas 7654e42a65 Merge 73f399414a ("Merge tag 'kbuild-7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux") into android-mainline
Steps on the way to v7.2-rc1

Change-Id: I9e1abff364f66f69c3c72843f30e102d9092da4e
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-07-02 14:19:47 +00:00
Linus Torvalds 73f399414a Merge tag 'kbuild-7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux
Pull Kbuild / Kconfig updates from Nathan Chancellor:
 "Kbuild:

   - Remove broken module linking exclusion for BTF

   - Add documentation around how offset header files work

   - Include unstripped vDSO libraries in pacman packages

   - Bump minimum version of LLVM for building the kernel to 17.0.1 and
     clean up unnecessary workarounds

   - Use a context manager in run-clang-tools

   - Add dist macro value if present to release tag for RPM packages

   - Detect and report truncated buf_printf() output in modpost

   - Add __llvm_covfun and __llvm_covmap to section whitelist in modpost

   - Support Clang's distributed ThinLTO mode

   - Remove architecture specific configurations for AutoFDO and
     Propeller to ease individual architecture maintenance

  Kconfig:

   - Add kconfig-sym-check target to look for dangling Kconfig symbol
     references and invalid tristate literal values

   - Harden against potential NULL pointer dereference

   - Fix typo in Kconfig test comment"

* tag 'kbuild-7.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux: (31 commits)
  kconfig: tests: fix typo in comment
  kconfig: Remove the architecture specific config for Propeller
  kconfig: Remove the architecture specific config for AutoFDO
  modpost: Add __llvm_covfun and __llvm_covmap to section_white_list
  kconfig: add kconfig-sym-check static checker
  kbuild: Remove unnecessary 'T' modifier in cmd_ar_builtin_fixup
  kbuild: distributed build support for Clang ThinLTO
  kbuild: move vmlinux.a build rule to scripts/Makefile.vmlinux_a
  scripts: modpost: detect and report truncated buf_printf() output
  kbuild: rpm-pkg: append %{?dist} macro to Release tag
  run-clang-tools: run multiprocessing.Pool as context manager
  compiler-clang.h: Drop explicit version number from "all" diagnostic macro
  compiler-clang.h: Remove __cleanup -Wunused-variable workaround
  kbuild: Remove check for broken scoping with clang < 17 in CC_HAS_ASM_GOTO_OUTPUT
  x86/entry/vdso32: Remove conditional omission of '.cfi_offset eflags'
  x86/module: Revert "Deal with GOT based stack cookie load on Clang < 17"
  x86/build: Drop unnecessary '-ffreestanding' addition to KBUILD_CFLAGS
  scripts/Makefile.warn: Drop -Wformat handling for clang < 16
  riscv: Drop tautological condition from TOOLCHAIN_NEEDS_OLD_ISA_SPEC
  riscv: Remove tautological condition from selection of ARCH_SUPPORTS_CFI
  ...
2026-06-15 05:01:15 +05:30
James Lee 29c5290733 modpost: Add __llvm_covfun and __llvm_covmap to section_white_list
Modpost emits hundreds of warnings when using Clang to build for ARCH=um
and CONFIG_GCOV=y. e.g.:
    vmlinux (__llvm_covfun): unexpected non-allocatable section.
    Did you forget to use "ax"/"aw" in a .S file?
    Note that for example <linux/init.h> contains
    section definitions for use in .S files.

For example, when we use LLVM for a kunit user mode build with coverage:
    python3 tools/testing/kunit/kunit.py build --make_options LLVM=1 \
        --kunitconfig=tools/testing/kunit/configs/default.config \
        --kunitconfig=tools/testing/kunit/configs/coverage_uml.config

The behaviour occurs when building the kernel for ARCH=um with code
coverage enabled. The warnings come from modpost's check_sec_ref
function, which ensures no sections reference others that will be
discarded. covfun and covmap sections must reference __init and __exit
sections to collect coverage data, triggering the modpost warning.

To suppress these warnings, these section names have been added to
modpost's whitelist. This is unlikely to suppress legitimate warnings as
Clang will only insert these sections when building with coverage, and
can be assumed to manage these references safely.

Signed-off-by: James Lee <james@codeconstruct.com.au>
Link: https://patch.msgid.link/20260604-dev-coverage-patch-v1-1-9f9368253cb4@codeconstruct.com.au
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2026-06-05 20:48:58 -07:00
Siddharth Nayyar 5c33f63cf5 ANDROID: modpost: generate __kexporttab section for vmlinux
Modpost generates the __kexporttab section when
CONFIG_MODULE_SIG_PROTECT_LIST is set.

Bug: 519119852
Change-Id: I341517d2efcc1edcd628c8ead78a9a644318f608
Signed-off-by: Siddharth Nayyar <sidnayyar@google.com>
2026-06-04 01:46:10 -07:00
Siddharth Nayyar 2493fa846d ANDROID: modpost: add protected exports to vmlinux
Protected exports are placed in the __kexporttab section.

Bug: 519119852
Change-Id: Iab22863baefe7c4575604e18ed403aef8ee3b7c5
Signed-off-by: Siddharth Nayyar <sidnayyar@google.com>
2026-06-04 01:46:10 -07:00
Siddharth Nayyar e0ea42b26f ANDROID: modpost: add symbol import protection flag to kflagstab
When the unused exports whitelist is provided, the symbol protection bit
is set for symbols not present in the unused exports whitelist.

The flag will be used in the following commit to prevent unsigned
modules from the using symbols other than those explicitly declared by
the such modules ahead of time.

Bug: 519119852
Change-Id: Ibddd628a8b1463397cc95d3d8f556b9bc82bf623
Signed-off-by: Siddharth Nayyar <sidnayyar@google.com>
2026-06-04 01:46:10 -07:00
Carlos Llamas 60d492e211 Merge df685633c3 ("Merge tag 'rcu-fixes.v7.1-20260519a' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux") into android-mainline
Steps on the way to v7.1-rc5

Change-Id: I509a74a8fe11ec11ccb1190ec8748d7cf03e2f45
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-06-01 09:13:09 -07:00
Rong Xu 9f2aee8f7d kbuild: distributed build support for Clang ThinLTO
Add distributed ThinLTO build support for the Linux kernel.
This new mode offers several advantages: (1) Increased
flexibility in handling user-specified build options.
(2) Improved user-friendliness for developers. (3) Greater
convenience for integrating with objtool and livepatch.

Note that "distributed" in this context refers to a term
that differentiates in-process ThinLTO builds by invoking
backend compilation through the linker, not necessarily
building in distributed environments.

Distributed ThinLTO is enabled via the
`CONFIG_LTO_CLANG_THIN_DIST` Kconfig option. For example:
 > make LLVM=1 defconfig
 > scripts/config -e LTO_CLANG_THIN_DIST
 > make LLVM=1 oldconfig
 > make LLVM=1 vmlinux -j <..>

The build flow proceeds in four stages:
  1. Perform FE compilation, mirroring the in-process ThinLTO mode.
  2. Thin-link the generated IR files and object files.
  3. Find all IR files and perform BE compilation, using the flags
    stored in the .*.o.cmd files.
  4. Link the BE results to generate the final vmlinux.o.

NOTE: This patch currently implements the build for the main kernel
image (vmlinux) only. Kernel module support is planned for a
subsequent patch.

Tested on the following arch: x86, arm64, loongarch, and
riscv.

The earlier implementation details can be found here:
https://discourse.llvm.org/t/rfc-distributed-thinlto-build-for-kernel/85934

Signed-off-by: Rong Xu <xur@google.com>
Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Tested-by: Piotr Gorski <piotrgorski@cachyos.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Link: https://patch.msgid.link/20260529185347.2418373-4-xur@google.com
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2026-05-29 13:44:29 -07:00
Alexandre Courbot d7231d8cb2 scripts: modpost: detect and report truncated buf_printf() output
buf_printf() uses a fixed-size stack buffer. vsnprintf() returns the
number of bytes that *would* have been written to that buffer, which can
be larger than the size of said buffer if the formatted string is too
long.

The problem is that whenever this happens buf_printf() currently passes
this length, unchecked, to buf_write(), which silently reads past the
stack buffer and copies invalid data into the output buffer.

Fix this by detecting vsnprintf() failures and truncations before
appending to the output buffer, and report a fatal error instead of
producing corrupt symbol names.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Link: https://patch.msgid.link/20260527-nova-exports-v2-1-06de4c556d55@nvidia.com
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2026-05-28 09:57:13 -07:00
Hasan Basbunar 49f8fcde68 modpost: prevent stack buffer overflow in do_input_entry() and do_dmi_entry()
Several functions in scripts/mod/file2alias.c build the module alias
string by repeatedly appending into a fixed-size on-stack buffer:

	char alias[256] = {};
	...
	sprintf(alias + strlen(alias), "%X,*", i);

This pattern is unbounded and silently corrupts the stack when the
formatted output exceeds the destination size. Two functions in this
file are realistically reachable with input that overflows their
buffer:

1. do_input_entry() appends across nine bitmap classes
   (evbit/keybit/relbit/absbit/mscbit/ledbit/sndbit/ffbit/swbit). The
   keybit case alone scans bits from INPUT_DEVICE_ID_KEY_MIN_INTERESTING
   (0x71) to INPUT_DEVICE_ID_KEY_MAX (0x2ff), 655 iterations; if a
   MODULE_DEVICE_TABLE(input, ...) populates keybit[] densely, the
   emission reaches ~3132 bytes — overflowing the 256-byte buffer by
   about 12x. include/linux/mod_devicetable.h declares storage for the
   full bit range ("keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1]"),
   so the worst case is reachable per the ABI.

2. do_dmi_entry() emits one ":<prefix>*<filtered_substr>*" segment per
   matched DMI field, up to 4 matches per dmi_system_id. Each substr
   is sized as char[79] in struct dmi_strmatch (mod_devicetable.h:584),
   and dmi_ascii_filter() copies it verbatim into the alias buffer
   without bounds. Worst case: 4 × (1 + 3 + 1 + 79 + 1) = 336 bytes
   into alias[256], an 80-byte overflow.

No driver in the current tree triggers either case — every in-tree
INPUT_DEVICE_ID_MATCH_KEYBIT user populates keybit[] very sparsely
(1-3 bits), and no in-tree dmi_system_id has four maximally-long
matches. The concern is defense-in-depth: both unbounded sprintf
chains are silent stack-corruption primitives in a host build tool,
and the buffer sizes have not been revisited since the corresponding
code was first introduced.

The other do_*_entry() handlers in this file (do_usb_entry,
do_cpu_entry, do_typec_entry, ...) were audited and are bounded by
their input field sizes (uint16 IDs, fixed-length keys); their alias
buffers do not need this treatment.

Reproduced under AddressSanitizer with a stand-alone harness mirroring
do_input on a fully-populated keybit:

  ==18319==ERROR: AddressSanitizer: stack-buffer-overflow
  WRITE of size 2 at offset 288 in frame [32, 288) 'alias'
    #6 do_input poc.c:44

  Stack-canary build:
  Abort trap: 6  (strlen(alias)=3134, cap was 256-1)

Add a small alias_append() helper around vsnprintf with a remaining-
space check and call fatal() on overflow, matching the modpost style
for unrecoverable build conditions. do_input() takes the buffer size
as a new parameter; do_input_entry() and do_dmi_entry() pass
sizeof(alias) at every call site. dmi_ascii_filter() takes the
remaining buffer size as well and aborts on truncation. This bounds
every write into the on-stack buffers and turns the latent overflow
into a clean build error if it is ever reached.

Fixes: 1d8f430c15 ("[PATCH] Input: add modalias support")
Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Hasan Basbunar <basbunarhasan@gmail.com>
Link: https://patch.msgid.link/20260505161102.44087-1-basbunarhasan@gmail.com
Signed-off-by: Nicolas Schier <nsc@kernel.org>
2026-05-19 12:29:18 +02:00
Carlos Llamas ac39cb640a Merge 88b29f3f57 ("Merge tag 'modules-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/modules/linux") into android-mainline
Steps on the way to v7.1-rc1

Resolved merge conflicts in:
	include/linux/module.h
	kernel/module/main.c

Cc: Siddharth Nayyar <sidnayyar@google.com>
Cc: Will McVicker <willmcvicker@google.com>
Change-Id: Ia9abf40b1600d5f67533e107e69d8c16979e2c71
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-05-11 23:05:31 +00:00
Carlos Llamas 5bdfe143f7 Merge e774d5f1bc ("Merge tag 'riscv-for-linus-v7.0-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux") into android-mainline
Steps on the way to v7.0

Change-Id: I62479c0e28c7add8b5263c0a1d9cd0e3ca961caa
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-04-23 02:22:31 +00:00
Linus Torvalds 88b29f3f57 Merge tag 'modules-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/modules/linux
Pull module updates from Sami Tolvanen:
 "Kernel symbol flags:

   - Replace the separate *_gpl symbol sections (__ksymtab_gpl and
     __kcrctab_gpl) with a unified symbol table and a new __kflagstab
     section.

     This section stores symbol flags, such as the GPL-only flag, as an
     8-bit bitset for each exported symbol. This is a cleanup that
     simplifies symbol lookup in the module loader by avoiding table
     fragmentation and will allow a cleaner way to add more flags later
     if needed.

  Module signature UAPI:

   - Move struct module_signature to the UAPI headers to allow reuse by
     tools outside the kernel proper, such as kmod and
     scripts/sign-file.

     This also renames a few constants for clarity and drops unused
     signature types as preparation for hash-based module integrity
     checking work that's in progress.

  Sysfs:

   - Add a /sys/module/<module>/import_ns sysfs attribute to show the
     symbol namespaces imported by loaded modules.

     This makes it easier to verify driver API access at runtime on
     systems that care about such things (e.g. Android).

  Cleanups and fixes:

   - Force sh_addr to 0 for all sections in module.lds. This prevents
     non-zero section addresses when linking modules with 'ld.bfd -r',
     which confused elfutils.

   - Fix a memory leak of charp module parameters on module unload when
     the kernel is configured with CONFIG_SYSFS=n.

   - Override the -EEXIST error code returned by module_init() to
     userspace. This prevents confusion with the errno reserved by the
     module loader to indicate that a module is already loaded.

   - Simplify the warning message and drop the stack dump on positive
     returns from module_init().

   - Drop unnecessary extern keywords from function declarations and
     synchronize parse_args() arguments with their implementation"

* tag 'modules-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/modules/linux: (23 commits)
  module: Simplify warning on positive returns from module_init()
  module: Override -EEXIST module return
  documentation: remove references to *_gpl sections
  module: remove *_gpl sections from vmlinux and modules
  module: deprecate usage of *_gpl sections in module loader
  module: use kflagstab instead of *_gpl sections
  module: populate kflagstab in modpost
  module: add kflagstab section to vmlinux and modules
  module: define ksym_flags enumeration to represent kernel symbol flags
  selftests/bpf: verify_pkcs7_sig: Use 'struct module_signature' from the UAPI headers
  sign-file: use 'struct module_signature' from the UAPI headers
  tools uapi headers: add linux/module_signature.h
  module: Move 'struct module_signature' to UAPI
  module: Give MODULE_SIG_STRING a more descriptive name
  module: Give 'enum pkey_id_type' a more specific name
  module: Drop unused signature types
  extract-cert: drop unused definition of PKEY_ID_PKCS7
  docs: symbol-namespaces: mention sysfs attribute
  module: expose imported namespaces via sysfs
  module: Remove extern keyword from param prototypes
  ...
2026-04-14 17:16:38 -07:00
Siddharth Nayyar 55fcb926b6 module: use kflagstab instead of *_gpl sections
Read kflagstab section for vmlinux and modules to determine whether
kernel symbols are GPL only.

This patch eliminates the need for fragmenting the ksymtab for infering
the value of GPL-only symbol flag, henceforth stop populating *_gpl
versions of the ksymtab and kcrctab in modpost.

Signed-off-by: Siddharth Nayyar <sidnayyar@google.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2026-03-31 23:42:52 +00:00
Siddharth Nayyar 16d0e04f54 module: populate kflagstab in modpost
This patch adds the ability to create entries for kernel symbol flag
bitsets in kflagstab. Modpost populates only the GPL-only flag for now.

Signed-off-by: Siddharth Nayyar <sidnayyar@google.com>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
2026-03-31 23:42:52 +00:00
Nathan Chancellor deb4605671 modpost: Declare extra_warn with unused attribute
A recent strengthening of -Wunused-but-set-variable (enabled with -Wall)
in clang under a new subwarning, -Wunused-but-set-global, points out an
unused static global variable in scripts/mod/modpost.c:

  scripts/mod/modpost.c:59:13: error: variable 'extra_warn' set but not used [-Werror,-Wunused-but-set-global]
     59 | static bool extra_warn;
        |             ^

This variable has been unused since commit 6c6c1fc09d ("modpost:
require a MODULE_DESCRIPTION()") but that is expected, as there are
currently no extra warnings at W=1 right now. Declare the variable with
the unused attribute to make it clear to the compiler that this variable
may be unused.

Cc: stable@vger.kernel.org
Fixes: 6c6c1fc09d ("modpost: require a MODULE_DESCRIPTION()")
Link: https://patch.msgid.link/20260325-modpost-extra_warn-unused-but-set-global-v1-1-2e84003b7e81@kernel.org
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2026-03-30 07:45:34 +02:00
Carlos Llamas c224f7f85e Merge 41f1a08645 ("Merge tag 'kbuild-7.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux") into android-mainline
Steps on the way to v7.0-rc1

Change-Id: I4dd8e5970a44391478768fbb388245bd4578ec2c
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-03-27 12:57:28 -07:00
Linus Torvalds 41f1a08645 Merge tag 'kbuild-7.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux
Pull Kbuild/Kconfig updates from Nathan Chancellor:
 "Kbuild:

   - Drop '*_probe' pattern from modpost section check allowlist, which
     hid legitimate warnings (Johan Hovold)

   - Disable -Wtype-limits altogether, instead of enabling at W=2
     (Vincent Mailhol)

   - Improve UAPI testing to skip testing headers that require a libc
     when CONFIG_CC_CAN_LINK is not set, opening up testing of headers
     with no libc dependencies to more environments (Thomas Weißschuh)

   - Update gendwarfksyms documentation with required dependencies
     (Jihan LIN)

   - Reject invalid LLVM= values to avoid unintentionally falling back
     to system toolchain (Thomas Weißschuh)

   - Add a script to help run the kernel build process in a container
     for consistent environments and testing (Guillaume Tucker)

   - Simplify kallsyms by getting rid of the relative base (Ard
     Biesheuvel)

   - Performance and usability improvements to scripts/make_fit.py
     (Simon Glass)

   - Minor various clean ups and fixes

  Kconfig:

   - Move XPM icons to individual files, clearing up GTK deprecation
     warnings (Rostislav Krasny)

   - Support

        depends on FOO if BAR

     as syntactic sugar for

        depends on FOO || !BAR

     (Nicolas Pitre, Graham Roff)

   - Refactor merge_config.sh to use awk over shell/sed/grep,
     dramatically speeding up processing large number of config
     fragments (Anders Roxell, Mikko Rapeli)"

* tag 'kbuild-7.0-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kbuild/linux: (39 commits)
  kbuild: remove dependency of run-command on config
  scripts/make_fit: Compress dtbs in parallel
  scripts/make_fit: Support a few more parallel compressors
  kbuild: Support a FIT_EXTRA_ARGS environment variable
  scripts/make_fit: Move dtb processing into a function
  scripts/make_fit: Support an initial ramdisk
  scripts/make_fit: Speed up operation
  rust: kconfig: Don't require RUST_IS_AVAILABLE for rustc-option
  MAINTAINERS: Add scripts/install.sh into Kbuild entry
  modpost: Amend ppc64 save/restfpr symnames for -Os build
  MIPS: tools: relocs: Ship a definition of R_MIPS_PC32
  streamline_config.pl: remove superfluous exclamation mark
  kbuild: dummy-tools: Add python3
  scripts: kconfig: merge_config.sh: warn on duplicate input files
  scripts: kconfig: merge_config.sh: use awk in checks too
  scripts: kconfig: merge_config.sh: refactor from shell/sed/grep to awk
  kallsyms: Get rid of kallsyms relative base
  mips: Add support for PC32 relocations in vmlinux
  Documentation: dev-tools: add container.rst page
  scripts: add tool to run containerized builds
  ...
2026-02-11 13:40:35 -08:00
René Rebe 3cd9763ce4 modpost: Amend ppc64 save/restfpr symnames for -Os build
Building a size optimized ppc64 kernel (-Os), gcc emits more FP
save/restore symbols, that the linker generates on demand into the
.sfpr section. Explicitly allow-list those in scripts/mod/modpost.c,
too. They are needed for the amdgpu in-kernel floating point support.

MODPOST Module.symvers
ERROR: modpost: "_restfpr_20" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_26" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_22" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savegpr1_27" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savegpr1_25" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_28" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savegpr1_29" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savefpr_20" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savefpr_22" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_15" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
WARNING: modpost: suppressed 56 unresolved symbol warnings because there were too many)

Signed-off-by: René Rebe <rene@exactco.de>
Link: https://patch.msgid.link/20251123.131330.407910684435629198.rene@exactco.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2026-02-03 15:25:23 -07:00
Carlos Llamas 4feac08f14 Merge tag 'v6.19-rc4' into android-mainline
Linux 6.19-rc4

Change-Id: I4649eac88e4a33b40f31e2b2fe77fd424e126eef
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-01-08 04:33:03 +00:00
Carlos Llamas ea7d27455d Merge 09670b8c38 ("Merge tag 'trace-v6.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace") into android-mainline
Steps on the way to v6.19-rc1

Change-Id: I2c65ccb5a12cc44354d8e82642466f203e1b5328
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2026-01-07 23:49:04 +00:00
Carlos Llamas bb94a1b99c Merge 63e6995005 ("Merge tag 'objtool-core-2025-12-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip") into android-mainline
Steps on the way to v6.19-rc1

Change-Id: Ic28645872bf1495b0de745a67c2c489d72d3a4d8
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-12-29 12:25:41 -08:00
Jose Javier Rodriguez Barbarin 1f4ea4838b mcb: Add missing modpost build support
mcb bus is not prepared to autoload client drivers with the data defined on
the drivers' MODULE_DEVICE_TABLE. modpost cannot access to mcb_table_id
inside MODULE_DEVICE_TABLE so the data declared inside is ignored.

Add modpost build support for accessing to the mcb_table_id coded on device
drivers' MODULE_DEVICE_TABLE.

Fixes: 3764e82e51 ("drivers: Introduce MEN Chameleon Bus")
Reviewed-by: Jorge Sanjuan Garcia <dev-jorge.sanjuangarcia@duagon.com>
Signed-off-by: Jose Javier Rodriguez Barbarin <dev-josejavier.rodriguez@duagon.com>
Acked-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Link: https://patch.msgid.link/20251202084200.10410-1-dev-josejavier.rodriguez@duagon.com
Signed-off-by: Nicolas Schier <nsc@kernel.org>
2025-12-27 20:48:01 +01:00
Johan Hovold a4df2071f1 modpost: drop '*_probe' from section check whitelist
Several symbol patterns used to be whitelisted to allow drivers to refer
to functions annotated with __devinit and __devexit, which have since
been removed.

Commit e1dc1bfe5b ("modpost: remove more symbol patterns from the
section check whitelist") removed most of these patterns but left
'*_probe' after a reported warning in an irqchip driver.

Turns out that was indeed an incorrect reference which has now been
fixed by commit 9b685058ca ("irqchip/qcom-irq-combiner: Fix section
mismatch").

A recently added clocksource driver also relies on this suffix to
suppress another valid warning, and that is being fixed separately. [1]

Note that drivers with valid reasons for suppressing the warnings can
use the __ref macros.

Link: https://lore.kernel.org/lkml/20251017054943.7195-1-johan@kernel.org/ [1]
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://patch.msgid.link/20251020091613.22562-1-johan@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2025-12-16 22:12:29 +09:00
Josh Poimboeuf f387d0e102 x86/asm: Remove ANNOTATE_DATA_SPECIAL usage
Instead of manually annotating each __ex_table entry, just make the
section mergeable and store the entry size in the ELF section header.

Either way works for objtool create_fake_symbols(), this way produces
cleaner code generation.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://patch.msgid.link/b858cb7891c1ba0080e22a9c32595e6c302435e2.1764694625.git.jpoimboe@kernel.org
2025-12-03 16:53:19 +01:00
Carlos Llamas 96f88b08c1 Merge e1b1d03cee ("Merge tag 'for-6.18/block-20250929' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux") into android-mainline
Steps on the way to v6.18-rc1

Change-Id: I4a2d6d0e6e2403a25b15bb77a486b5a3e6795906
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-10-24 19:42:56 +00:00
Josh Poimboeuf 4109043bff modpost: Ignore unresolved section bounds symbols
In preparation for klp-build livepatch module creation tooling,
suppress warnings for unresolved references to linker-generated
__start_* and __stop_* section bounds symbols.

These symbols are expected to be undefined when modpost runs, as they're
created later by the linker.

Cc: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Petr Mladek <pmladek@suse.com>
Tested-by: Joe Lawrence <joe.lawrence@redhat.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
2025-10-14 14:45:22 -07:00
Hugh Dickins 2ea77fca84 modpost: Initialize builtin_modname to stop SIGSEGVs
Segmentation fault ./scripts/mod/modpost -o vmlinux.symvers vmlinux.o
stops the kernel build.  It comes when write_vmlinux_export_c_file()
tries to buf_printf alias->builtin_modname.  malloc'ed memory is not
necessarily zeroed.  NULL new->builtin_modname before adding to aliases.

Fixes: 5ab23c7923 ("modpost: Create modalias for builtin modules")
Signed-off-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Link: https://patch.msgid.link/4590a243-0a7e-b7e6-e2d3-cd1b41a12237@google.com
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2025-09-28 07:54:07 -04:00
Alexey Gladkov 5ab23c7923 modpost: Create modalias for builtin modules
For some modules, modalias is generated using the modpost utility and
the section is added to the module file.

When a module is added inside vmlinux, modpost does not generate
modalias for such modules and the information is lost.

As a result kmod (which uses modules.builtin.modinfo in userspace)
cannot determine that modalias is handled by a builtin kernel module.

$ cat /sys/devices/pci0000:00/0000:00:14.0/modalias
pci:v00008086d0000A36Dsv00001043sd00008694bc0Csc03i30

$ modinfo xhci_pci
name:           xhci_pci
filename:       (builtin)
license:        GPL
file:           drivers/usb/host/xhci-pci
description:    xHCI PCI Host Controller Driver

Missing modalias "pci:v*d*sv*sd*bc0Csc03i30*" which will be generated by
modpost if the module is built separately.

To fix this it is necessary to generate the same modalias for vmlinux as
for the individual modules. Fortunately '.vmlinux.export.o' is already
generated from which '.modinfo' can be extracted in the same way as for
vmlinux.o.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Alexey Gladkov <legion@kernel.org>
Tested-by: Stephen Rothwell <sfr@canb.auug.org.au>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Link: https://patch.msgid.link/28d4da3b0e3fc8474142746bcf469e03752c3208.1758182101.git.legion@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2025-09-24 09:10:45 -07:00
Alexey Gladkov 83fb49389b modpost: Add modname to mod_device_table alias
At this point, if a symbol is compiled as part of the kernel,
information about which module the symbol belongs to is lost.

To save this it is possible to add the module name to the alias name.
It's not very pretty, but it's possible for now.

Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: Andreas Hindborg <a.hindborg@kernel.org>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Alex Gaynor <alex.gaynor@gmail.com>
Cc: rust-for-linux@vger.kernel.org
Signed-off-by: Alexey Gladkov <legion@kernel.org>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Acked-by: Nicolas Schier <nsc@kernel.org>
Link: https://patch.msgid.link/1a0d0bd87a4981d465b9ed21e14f4e78eaa03ded.1758182101.git.legion@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
2025-09-24 09:10:45 -07:00
Carlos Llamas 1755d33814 Merge 8630c59e99 ("Merge tag 'kbuild-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild") into android-mainline
Steps on the way to v6.16-rc1

Change-Id: I30e125c03ee285924f38af4c948f0b3a725a29e9
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-07-08 11:49:12 -07:00
Masahiro Yamada 9c036cfbb7 modpost: check forbidden MODULE_IMPORT_NS("module:") at compile time
Explicitly adding MODULE_IMPORT_NS("module:...") is not allowed.

Currently, this is only checked at run time. That is, when such a
module is loaded, an error message like the following is shown:

  foo: module tries to import module namespace: module:bar

Obviously, checking this at compile time improves usability.

In such a case, modpost will report the following error at compile time:

  ERROR: modpost: foo: explicitly importing namespace "module:bar" is not allowed.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2025-05-25 18:15:51 +09:00
Peter Zijlstra 754f8733fc module: Extend the module namespace parsing
Instead of only accepting "module:${name}", extend it with a comma
separated list of module names and add tail glob support.

That is, something like: "module:foo-*,bar" is now possible.

Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2025-05-25 18:12:03 +09:00
Peter Zijlstra 520b1a147d module: Add module specific symbol namespace support
Designate the "module:${modname}" symbol namespace to mean: 'only
export to the named module'.

Notably, explicit imports of anything in the "module:" space is
forbidden.

Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2025-05-25 18:11:56 +09:00
Peter Zijlstra 6b91ff002c modpost: Use for() loop
Slight cleanup by using a for() loop instead of while(). This makes it
clearer what is the iteration and what is the actual work done.

Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2025-05-25 18:00:52 +09:00
Linus Torvalds 0947a20395 UPSTREAM: Disable SLUB_TINY for build testing
... and don't error out so hard on missing module descriptions.

Before commit 6c6c1fc09d ("modpost: require a MODULE_DESCRIPTION()")
we used to warn about missing module descriptions, but only when
building with extra warnigns (ie 'W=1').

After that commit the warning became an unconditional hard error.

And it turns out not all modules have been converted despite the claims
to the contrary.  As reported by Damian Tometzki, the slub KUnit test
didn't have a module description, and apparently nobody ever really
noticed.

The reason nobody noticed seems to be that the slub KUnit tests get
disabled by SLUB_TINY, which also ends up disabling a lot of other code,
both in tests and in slub itself.  And so anybody doing full build tests
didn't actually see this failre.

So let's disable SLUB_TINY for build-only tests, since it clearly ends
up limiting build coverage.  Also turn the missing module descriptions
error back into a warning, but let's keep it around for non-'W=1'
builds.

Reported-by: Damian Tometzki <damian@riscv-rocks.de>
Link: https://lore.kernel.org/all/01070196099fd059-e8463438-7b1b-4ec8-816d-173874be9966-000000@eu-central-1.amazonses.com/
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Fixes: 6c6c1fc09d ("modpost: require a MODULE_DESCRIPTION()")
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Bug: 412115771
(cherry picked from commit 6f110a5e4f)
Change-Id: Iab1cfe8174fd5528ff7e78730d671e9067c9b03b
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-04-21 14:44:43 +00:00
Carlos Llamas 7fd9cf87b6 Merge f4d2ef4825 ("Merge tag 'kbuild-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild") into android-mainline
Steps on the way to v6.15-rc1

Resolved merge conflicts in:
    Makefile

Cc: Will McVicker <willmcvicker@google.com>
Change-Id: I733b2e6ba609a5598e7359a84d2ff6a87e2c22bc
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-04-21 14:44:40 +00:00
Linus Torvalds 6f110a5e4f Disable SLUB_TINY for build testing
... and don't error out so hard on missing module descriptions.

Before commit 6c6c1fc09d ("modpost: require a MODULE_DESCRIPTION()")
we used to warn about missing module descriptions, but only when
building with extra warnigns (ie 'W=1').

After that commit the warning became an unconditional hard error.

And it turns out not all modules have been converted despite the claims
to the contrary.  As reported by Damian Tometzki, the slub KUnit test
didn't have a module description, and apparently nobody ever really
noticed.

The reason nobody noticed seems to be that the slub KUnit tests get
disabled by SLUB_TINY, which also ends up disabling a lot of other code,
both in tests and in slub itself.  And so anybody doing full build tests
didn't actually see this failre.

So let's disable SLUB_TINY for build-only tests, since it clearly ends
up limiting build coverage.  Also turn the missing module descriptions
error back into a warning, but let's keep it around for non-'W=1'
builds.

Reported-by: Damian Tometzki <damian@riscv-rocks.de>
Link: https://lore.kernel.org/all/01070196099fd059-e8463438-7b1b-4ec8-816d-173874be9966-000000@eu-central-1.amazonses.com/
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Fixes: 6c6c1fc09d ("modpost: require a MODULE_DESCRIPTION()")
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2025-04-06 10:00:04 -07:00
Carlos Llamas 592dff8cc3 Merge tag 'v6.14-rc3' into android-mainline
Linux 6.14-rc3

Solves merge conflicts in:
	kernel/sched/core.c

Cc: Quentin Perret <qperret@google.com>
Cc: Jann Horn <jannh@google.com>
Change-Id: I0491bba5a781e200aa1e383811c6dff615c954bb
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-04-05 14:12:59 +00:00
Carlos Llamas b12dc060b6 Merge tag 'v6.14-rc2' into android-mainline
Linux 6.14-rc2

Change-Id: I8bc6366a80404c013d4fdd41f8ffe95eec404c0f
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-04-05 14:12:48 +00:00
Carlos Llamas 858a257b8c Merge fd8c09ad0d ("Merge tag 'kbuild-v6.14' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild") into android-mainline
Steps on the way to 6.14-rc1

Resolves merge conflicts in:
	scripts/mod/modpost.c

Cc: Will McVicker <willmcvicker@google.com>
Cc: Yifan Hong <elsk@google.com>
Change-Id: I7b1f8098ffdfbc5866a47f0bdf6b49eec3edc98b
Signed-off-by: Carlos Llamas <cmllamas@google.com>
2025-04-04 20:10:25 +00:00
Tudor Ambarus 2451736554 Merge cc8b10fa70 ("Merge tag 'usb-6.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb") into android-mainline
Steps on the way to v6.14-rc1

Change-Id: I5646665747f9ba05d3ff9f9d335cd1f022ba6882
Signed-off-by: Tudor Ambarus <tudordana@google.com>
2025-04-03 16:41:27 -07:00
Lee Jones 58dcd27332 Merge tag 'v6.13-rc6' into android-mainline
Linux 6.13-rc6

Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I3f982289be7197bfee7423ebc0c6d97253209fc2
2025-03-26 17:51:58 -07:00
Lee Jones 604a1024d8 Merge tag 'v6.13-rc4' into android-mainline
Linux 6.13-rc4

Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I7e13a8acd7ce26e65bf254a96932f677fa09914e
2025-03-26 17:51:58 -07:00
Lee Jones 4a944adc0c Merge tag 'v6.13-rc2' into android-mainline
Linux 6.13-rc2

Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: I21278543174d52f0634e0a0ca6434484fe754b01
2025-03-26 17:51:58 -07:00
Jeff Johnson 6c6c1fc09d modpost: require a MODULE_DESCRIPTION()
Since commit 1fffe7a34c ("script: modpost: emit a warning when the
description is missing"), a module without a MODULE_DESCRIPTION() has
resulted in a warning with make W=1. Since that time, all known
instances of this issue have been fixed. Therefore, now make it an
error if a MODULE_DESCRIPTION() is not present.

Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2025-03-23 00:56:12 +09:00
Will McVicker f9d4616300 Merge 'Merge tag 'kbuild-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild'
* commit '6a34dfa15d6e':
  kbuild: rename .tmp_vmlinux.kallsyms0.syms to .tmp_vmlinux0.syms
  gitignore: Don't ignore 'tags' directory
  kbuild: add dependency from vmlinux to resolve_btfids
  modpost: replace tdb_hash() with hash_str()
  kbuild: deb-pkg: add python3:native to build dependency
  genksyms: reduce indentation in export_symbol()
  modpost: improve error messages in device_id_check()
  modpost: rename alias symbol for MODULE_DEVICE_TABLE()
  modpost: rename variables in handle_moddevtable()
  modpost: move strstarts() to modpost.h
  modpost: convert do_usb_table() to a generic handler
  modpost: convert do_of_table() to a generic handler
  modpost: convert do_pnp_device_entry() to a generic handler
  modpost: convert do_pnp_card_entries() to a generic handler
  modpost: call module_alias_printf() from all do_*_entry() functions
  modpost: pass (struct module *) to do_*_entry() functions
  modpost: remove DEF_FIELD_ADDR_VAR() macro
  modpost: deduplicate MODULE_ALIAS() for all drivers
  modpost: introduce module_alias_printf() helper
  modpost: remove unnecessary check in do_acpi_entry()
  modpost: remove incorrect code in do_eisa_entry()
  setlocalversion: add -e option
  setlocalversion: work around "git describe" performance
  kbuild: switch from lz4c to lz4 for compression
  kbuild: re-enable KCSAN for autogenerated *.mod.c intermediaries
  kbuild: enable objtool for *.mod.o and additional kernel objects
  kbuild: move cmd_cc_o_c and cmd_as_o_S to scripts/Malefile.lib
  kbuild: remove support for single %.symtypes build rule
  kbuild: do not pass -r to genksyms when *.symref does not exist
  kbuild: allow to start building external modules in any directory
  kbuild: make wrapper Makefile more convenient for external modules
  kbuild: use absolute path in the generated wrapper Makefile
  kbuild: support -fmacro-prefix-map for external modules
  kbuild: support building external modules in a separate build directory
  kbuild: remove extmod_prefix, MODORDER, MODULES_NSDEPS variables
  kbuild: change working directory to external module directory with M=
  kbuild: use 'output' variable to create the output directory
  kbuild: rename abs_objtree to abs_output
  kbuild: add $(objtree)/ prefix to some in-kernel build artifacts
  kbuild: replace two $(abs_objtree) with $(CURDIR) in top Makefile
  kbuild: deb-pkg: Don't fail if modules.order is missing
  Rename .data.once to .data..once to fix resetting WARN*_ONCE
  Rename .data.unlikely to .data..unlikely
  kbuild: Fix Propeller build option
  kbuild: Add Propeller configuration for kernel build
  AutoFDO: Enable machine function split optimization for AutoFDO
  AutoFDO: Enable -ffunction-sections for the AutoFDO build
  vmlinux.lds.h: Add markers for text_unlikely and text_hot sections
  vmlinux.lds.h: Adjust symbol ordering in text output section
  MIPS: Place __kernel_entry at the beginning of text section
  objtool: Fix unreachable instruction warnings for weak functions
  kbuild: Add AutoFDO support for Clang build
  kbuild: simplify rustfmt target
  kconfig: document the positional argument in the help message
  kconfig: qconf: remove unnecessary mode check in ConfigItem::updateMenu()
  kconfig: qconf: refactor ConfigInfoView::clicked()
  kconfig: add sym_get_prompt_menu() helper function
  kconfig: qconf: remove non-functional href="m..." tag
  kconfig: qconf: remove redundant check in goBack()
  kconfig: qconf: avoid unnecessary parentSelected() when ESC is pressed
  kconfig: qconf: remove ConfigItem::visible member
  kconfig: qconf: do not show goParent button in split view
  kconfig: qconf: convert the last old connection syntax to Qt5 style
  kconfig: qconf: remove unnecessary lastWindowClosed() signal connection
  kconfig: qconf: remove unnecessary setRootIsDecorated() call
  kconfig: qconf: remove redundant type check for choice members
  kconfig: qconf: remove mouse{Press,Move}Event() functions
  kconfig: qconf: simplify character replacement
  kconfig: qconf: use default platform shortcuts
  kconfig: qconf: use QString to store path to configuration file
  kconfig: nconf: Fix typo in function comment
  streamline_config.pl: remove prompt warnings for configs with defaults
  streamline_config.pl: ensure all defaults are tracked
  streamline_config.pl: fix missing variable operator in debug print
  kconfig: nconf: Use TAB to cycle thru dialog buttons
  kconfig: qconf: set parent in the widget constructor
  kconfig: qconf: reorder code in ConfigMainWindow() constructor
  kconfig: qconf: set QSplitter orientation in the constructor
  kconfig: remove zconfprint()
  kconfig: remove support for "bool" prompt for choice entries
  usb: use "prompt" instead of "bool" for choice prompts
  kbuild: add generic support for built-in boot DTBs
  kbuild: check the presence of include/generated/rustc_cfg
  kbuild: refactor the check for missing config files
  speakup: use SPKDIR=$(src) to specify the source directory

Change-Id: I146bfa715d483c6e1f84afc9e39d8b94d994862d
Signed-off-by: Will McVicker <willmcvicker@google.com>
2025-03-19 13:53:26 -07:00
Masahiro Yamada 144fced685 modpost: use strstarts() to clean up parse_source_files()
No functional changes are intended.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
2025-03-15 21:16:22 +09:00
Masahiro Yamada 59d60d26a5 modpost: introduce get_basename() helper
The logic to retrieve the basename appears multiple times.
Factor out the common pattern into a helper function.

I copied kbasename() from include/linux/string.h and renamed it
to get_basename().

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
2025-03-15 21:16:21 +09:00
Uwe Kleine-König b28fb1f2ef modpost: Fix a few typos in a comment
Namely: s/becasue/because/ and s/wiht/with/ plus an added article.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2025-02-16 03:10:58 +09:00