linux/scripts
Linus Torvalds 4793dae01f Driver core changes for 7.1-rc1
- debugfs:
   - Fix NULL pointer dereference in debugfs_create_str()
   - Fix misplaced EXPORT_SYMBOL_GPL for debugfs_create_str()
   - Fix soundwire debugfs NULL pointer dereference from uninitialized
     firmware_file
 
 - device property:
   - Make fwnode flags modifications thread safe; widen the field to
     unsigned long and use set_bit() / clear_bit() based accessors
   - Document how to check for the property presence
 
 - devres:
   - Separate struct devres_node from its "subclasses" (struct devres,
     struct devres_group); give struct devres_node its own release and
     free callbacks for per-type dispatch
   - Introduce struct devres_action for devres actions, avoiding the
     ARCH_DMA_MINALIGN alignment overhead of struct devres
   - Export struct devres_node and its init/add/remove/dbginfo
     primitives for use by Rust Devres<T>
   - Fix missing node debug info in devm_krealloc()
   - Use guard(spinlock_irqsave) where applicable; consolidate unlock
     paths in devres_release_group()
 
 - driver_override:
   - Convert PCI, WMI, vdpa, s390/cio, s390/ap, and fsl-mc to the
     generic driver_override infrastructure, replacing per-bus
     driver_override strings, sysfs attributes, and match logic; fixes
     a potential UAF from unsynchronized access to driver_override in
     bus match() callbacks
   - Simplify __device_set_driver_override() logic
 
 - kernfs:
   - Send IN_DELETE_SELF and IN_IGNORED inotify events on kernfs
     file and directory removal
   - Add corresponding selftests for memcg
 
 - platform:
   - Allow attaching software nodes when creating platform devices via
     a new 'swnode' field in struct platform_device_info
   - Add kerneldoc for struct platform_device_info
 
 - software node:
   - Move software node initialization from postcore_initcall() to
     driver_init(), making it available early in the boot process
   - Move kernel_kobj initialization (ksysfs_init) earlier to support
     the above
   - Remove software_node_exit(); dead code in a built-in unit
 
 - SoC:
   - Introduce of_machine_read_compatible() and of_machine_read_model()
     OF helpers and export soc_attr_read_machine() to replace direct
     accesses to of_root from SoC drivers; also enables
     CONFIG_COMPILE_TEST coverage for these drivers
 
 - sysfs:
   - Constify attribute group array pointers to
     'const struct attribute_group *const *' in sysfs functions,
     device_add_groups() / device_remove_groups(), and struct class
 
 - Rust:
   - Devres:
     - Embed struct devres_node directly in Devres<T> instead of going
       through devm_add_action(), avoiding the extra allocation and
       the unnecessary ARCH_DMA_MINALIGN alignment
 
   - I/O:
     - Turn IoCapable from a marker trait into a functional trait
       carrying the raw I/O accessor implementation (io_read /
       io_write), providing working defaults for the per-type Io
       methods
     - Add RelaxedMmio wrapper type, making relaxed accessors usable
       in code generic over the Io trait
     - Remove overloaded per-type Io methods and per-backend macros
       from Mmio and PCI ConfigSpace
 
   - I/O (Register):
     - Add IoLoc trait and generic read/write/update methods to the Io
       trait, making I/O operations parameterizable by typed locations
     - Add register! macro for defining hardware register types with
       typed bitfield accessors backed by Bounded values; supports
       direct, relative, and array register addressing
     - Add write_reg() / try_write_reg() and LocatedRegister trait
     - Update PCI sample driver to demonstrate the register! macro
 
         Example:
 
         ```
             register! {
                 /// UART control register.
                 CTRL(u32) @ 0x18 {
                     /// Receiver enable.
                     19:19   rx_enable => bool;
                     /// Parity configuration.
                     14:13   parity ?=> Parity;
                 }
 
                 /// FIFO watermark and counter register.
                 WATER(u32) @ 0x2c {
                     /// Number of datawords in the receive FIFO.
                     26:24   rx_count;
                     /// RX interrupt threshold.
                     17:16   rx_water;
                 }
             }
 
             impl WATER {
                 fn rx_above_watermark(&self) -> bool {
                     self.rx_count() > self.rx_water()
                 }
             }
 
             fn init(bar: &pci::Bar<BAR0_SIZE>) {
                 let water = WATER::zeroed()
                     .with_const_rx_water::<1>(); // > 3 would not compile
                 bar.write_reg(water);
 
                 let ctrl = CTRL::zeroed()
                     .with_parity(Parity::Even)
                     .with_rx_enable(true);
                 bar.write_reg(ctrl);
             }
 
             fn handle_rx(bar: &pci::Bar<BAR0_SIZE>) {
                 if bar.read(WATER).rx_above_watermark() {
                     // drain the FIFO
                 }
             }
 
             fn set_parity(bar: &pci::Bar<BAR0_SIZE>, parity: Parity) {
                 bar.update(CTRL, |r| r.with_parity(parity));
             }
         ```
 
   - IRQ:
     - Move 'static bounds from where clauses to trait declarations
       for IRQ handler traits
 
   - Misc:
     - Enable the generic_arg_infer Rust feature
     - Extend Bounded with shift operations, single-bit bool conversion,
       and const get()
 
 - Misc:
   - Make deferred_probe_timeout default a Kconfig option
   - Drop auxiliary_dev_pm_ops; the PM core falls back to driver PM
     callbacks when no bus type PM ops are set
   - Add conditional guard support for device_lock()
   - Add ksysfs.c to the DRIVER CORE MAINTAINERS entry
   - Fix kernel-doc warnings in base.h
   - Fix stale reference to memory_block_add_nid() in documentation
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQS2q/xV6QjXAdC7k+1FlHeO1qrKLgUCadl5SwAKCRBFlHeO1qrK
 LpjDAQCSG3vYznwrngfpmRU5bCB9sdUy/pZiX5px1357+amJkwEA9LgIVQvtHAZW
 ZXcQ7Jr+mR3mJEdlatbkWHp3w1VHqAQ=
 =y1DV
 -----END PGP SIGNATURE-----

Merge tag 'driver-core-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core

Pull driver core updates from Danilo Krummrich:
 "debugfs:
   - Fix NULL pointer dereference in debugfs_create_str()
   - Fix misplaced EXPORT_SYMBOL_GPL for debugfs_create_str()
   - Fix soundwire debugfs NULL pointer dereference from uninitialized
     firmware_file

  device property:
   - Make fwnode flags modifications thread safe; widen the field to
     unsigned long and use set_bit() / clear_bit() based accessors
   - Document how to check for the property presence

  devres:
   - Separate struct devres_node from its "subclasses" (struct devres,
     struct devres_group); give struct devres_node its own release and
     free callbacks for per-type dispatch
   - Introduce struct devres_action for devres actions, avoiding the
     ARCH_DMA_MINALIGN alignment overhead of struct devres
   - Export struct devres_node and its init/add/remove/dbginfo
     primitives for use by Rust Devres<T>
   - Fix missing node debug info in devm_krealloc()
   - Use guard(spinlock_irqsave) where applicable; consolidate unlock
     paths in devres_release_group()

  driver_override:
   - Convert PCI, WMI, vdpa, s390/cio, s390/ap, and fsl-mc to the
     generic driver_override infrastructure, replacing per-bus
     driver_override strings, sysfs attributes, and match logic; fixes a
     potential UAF from unsynchronized access to driver_override in bus
     match() callbacks
   - Simplify __device_set_driver_override() logic

  kernfs:
   - Send IN_DELETE_SELF and IN_IGNORED inotify events on kernfs file
     and directory removal
   - Add corresponding selftests for memcg

  platform:
   - Allow attaching software nodes when creating platform devices via a
     new 'swnode' field in struct platform_device_info
   - Add kerneldoc for struct platform_device_info

  software node:
   - Move software node initialization from postcore_initcall() to
     driver_init(), making it available early in the boot process
   - Move kernel_kobj initialization (ksysfs_init) earlier to support
     the above
   - Remove software_node_exit(); dead code in a built-in unit

  SoC:
   - Introduce of_machine_read_compatible() and of_machine_read_model()
     OF helpers and export soc_attr_read_machine() to replace direct
     accesses to of_root from SoC drivers; also enables
     CONFIG_COMPILE_TEST coverage for these drivers

  sysfs:
   - Constify attribute group array pointers to
     'const struct attribute_group *const *' in sysfs functions,
     device_add_groups() / device_remove_groups(), and struct class

  Rust:
   - Devres:
      - Embed struct devres_node directly in Devres<T> instead of going
        through devm_add_action(), avoiding the extra allocation and the
        unnecessary ARCH_DMA_MINALIGN alignment

   - I/O:
      - Turn IoCapable from a marker trait into a functional trait
        carrying the raw I/O accessor implementation (io_read /
        io_write), providing working defaults for the per-type Io
        methods
      - Add RelaxedMmio wrapper type, making relaxed accessors usable in
        code generic over the Io trait
      - Remove overloaded per-type Io methods and per-backend macros
        from Mmio and PCI ConfigSpace

   - I/O (Register):
      - Add IoLoc trait and generic read/write/update methods to the Io
        trait, making I/O operations parameterizable by typed locations
      - Add register! macro for defining hardware register types with
        typed bitfield accessors backed by Bounded values; supports
        direct, relative, and array register addressing
      - Add write_reg() / try_write_reg() and LocatedRegister trait
      - Update PCI sample driver to demonstrate the register! macro

         Example:

         ```
             register! {
                 /// UART control register.
                 CTRL(u32) @ 0x18 {
                     /// Receiver enable.
                     19:19   rx_enable => bool;
                     /// Parity configuration.
                     14:13   parity ?=> Parity;
                 }

                 /// FIFO watermark and counter register.
                 WATER(u32) @ 0x2c {
                     /// Number of datawords in the receive FIFO.
                     26:24   rx_count;
                     /// RX interrupt threshold.
                     17:16   rx_water;
                 }
             }

             impl WATER {
                 fn rx_above_watermark(&self) -> bool {
                     self.rx_count() > self.rx_water()
                 }
             }

             fn init(bar: &pci::Bar<BAR0_SIZE>) {
                 let water = WATER::zeroed()
                     .with_const_rx_water::<1>(); // > 3 would not compile
                 bar.write_reg(water);

                 let ctrl = CTRL::zeroed()
                     .with_parity(Parity::Even)
                     .with_rx_enable(true);
                 bar.write_reg(ctrl);
             }

             fn handle_rx(bar: &pci::Bar<BAR0_SIZE>) {
                 if bar.read(WATER).rx_above_watermark() {
                     // drain the FIFO
                 }
             }

             fn set_parity(bar: &pci::Bar<BAR0_SIZE>, parity: Parity) {
                 bar.update(CTRL, |r| r.with_parity(parity));
             }
         ```

   - IRQ:
      - Move 'static bounds from where clauses to trait declarations for
        IRQ handler traits

   - Misc:
      - Enable the generic_arg_infer Rust feature
      - Extend Bounded with shift operations, single-bit bool
        conversion, and const get()

  Misc:
   - Make deferred_probe_timeout default a Kconfig option
   - Drop auxiliary_dev_pm_ops; the PM core falls back to driver PM
     callbacks when no bus type PM ops are set
   - Add conditional guard support for device_lock()
   - Add ksysfs.c to the DRIVER CORE MAINTAINERS entry
   - Fix kernel-doc warnings in base.h
   - Fix stale reference to memory_block_add_nid() in documentation"

* tag 'driver-core-7.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core: (67 commits)
  bus: fsl-mc: use generic driver_override infrastructure
  s390/ap: use generic driver_override infrastructure
  s390/cio: use generic driver_override infrastructure
  vdpa: use generic driver_override infrastructure
  platform/wmi: use generic driver_override infrastructure
  PCI: use generic driver_override infrastructure
  driver core: make software nodes available earlier
  software node: remove software_node_exit()
  kernel: ksysfs: initialize kernel_kobj earlier
  MAINTAINERS: add ksysfs.c to the DRIVER CORE entry
  drivers/base/memory: fix stale reference to memory_block_add_nid()
  device property: Document how to check for the property presence
  soundwire: debugfs: initialize firmware_file to empty string
  debugfs: fix placement of EXPORT_SYMBOL_GPL for debugfs_create_str()
  debugfs: check for NULL pointer in debugfs_create_str()
  driver core: Make deferred_probe_timeout default a Kconfig option
  driver core: simplify __device_set_driver_override() clearing logic
  driver core: auxiliary bus: Drop auxiliary_dev_pm_ops
  device property: Make modifications of fwnode "flags" thread safe
  rust: devres: embed struct devres_node directly
  ...
2026-04-13 19:03:11 -07:00
..
atomic rust: helpers: Move #define __rust_helper out of atomic.c 2026-01-09 19:01:42 +08:00
bash-completion
basic
clang-tools Revert "scripts/clang-tools: Handle included .c files in gen_compile_commands" 2025-12-27 20:48:01 +01:00
coccinelle coccinelle: kmalloc_obj: Remove default GFP_KERNEL arg 2026-03-20 10:52:52 -07:00
crypto lib/crypto: tests: Add KUnit tests for SM3 2026-03-23 17:50:59 -07:00
dtc of: Add for_each_compatible_node_scoped() helper 2026-02-03 20:58:12 -06:00
dummy-tools kbuild: dummy-tools: Add python3 2026-01-29 17:12:13 -07:00
gcc-plugins gcc-plugins: Remove TODO_verify_il for GCC >= 16 2025-09-23 13:59:39 -07:00
gdb scripts/gdb: implement x86_page_ops in mm.py 2026-02-12 15:45:57 -08:00
gendwarfksyms gendwarfksyms: Fix build on 32-bit hosts 2025-12-22 16:35:54 +00:00
genksyms genksyms: Fix parsing a declarator with a preceding attribute 2026-02-26 11:53:05 -07:00
include
ipe
kconfig scripts: kconfig: merge_config.sh: fix indentation 2026-03-11 00:38:06 -07:00
ksymoops
livepatch livepatch/klp-build: Fix inconsistent kernel version 2026-03-16 12:50:17 -07:00
mod modpost: Declare extra_warn with unused attribute 2026-03-30 07:45:34 +02:00
package kbuild: install-extmod-build: Package resolve_btfids if necessary 2026-02-26 14:49:34 -07:00
selinux
tracing
.gitignore scripts: add tracepoint-update to the list of ignores files 2025-10-29 08:46:05 -04:00
as-version.sh
asn1_compiler.c
bloat-o-meter scripts/bloat-o-meter: ignore __noinstr_text_start 2026-01-31 16:16:06 -08:00
bootgraph.pl
bpf_doc.py bpf: Finish constification of 1st parameter of bpf_d_path() 2025-10-04 09:05:23 -07:00
build-version
cc-can-link.sh kbuild: Fix CC_CAN_LINK detection 2026-02-13 14:23:06 -05:00
cc-version.sh
check_extable.sh
check-function-names.sh kbuild: prefer ${NM} in check-function-names.sh 2026-01-14 14:13:41 +01:00
check-git
check-sysctl-docs
check-uapi.sh
checkdeclares.pl
checker-valid.sh compiler: Use __typeof_unqual__() for __unqual_scalar_typeof() 2026-01-18 10:32:03 +01:00
checkincludes.pl
checkkconfigsymbols.py
checkpatch.pl virtio,vhost,vdpa: features, fixes 2026-02-13 12:02:18 -08:00
checkstack.pl
checksyscalls.sh
checkversion.pl
cleanfile
cleanpatch
coccicheck scripts: coccicheck: warn on unset debug file 2026-02-21 17:22:30 +01:00
config
const_structs.checkpatch
container scripts: add tool to run containerized builds 2026-01-22 15:30:48 -07:00
context-analysis-suppression.txt sched: Enable context analysis for core.c and fair.c 2026-01-05 16:43:36 +01:00
decode_stacktrace.sh scripts/decode_stacktrace.sh: fix build ID and PC source parsing 2025-11-09 21:19:45 -08:00
decodecode
depmod.sh
dev-needs.sh
diffconfig
elf-parse.c sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
elf-parse.h sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
extract_xc3028.pl
extract-fwblobs
extract-ikconfig
extract-module-sig.pl
extract-sys-certs.pl
extract-vmlinux
faddr2line scripts/faddr2line: Fix "Argument list too long" error 2025-10-14 14:45:20 -07:00
file-size.sh
gen_packed_field_checks.c
gen-btf.sh scripts/gen-btf.sh: Use CONFIG_SHELL for execution 2026-01-21 12:36:32 -08:00
gen-crc-consts.py
gen-randstruct-seed.sh
generate_builtin_ranges.awk
generate_initcall_order.pl
generate_rust_analyzer.py rust: support overriding crate_name 2026-04-03 11:57:35 +02:00
generate_rust_target.rs
get_dvb_firmware
get_maintainer.pl
gfp-translate
git-resolve.sh
git.orderFile
head-object-list.txt
headerdep.pl
headers_install.sh scripts: headers_install.sh: Remove config leak ignore machinery 2026-01-30 16:46:17 +01:00
insert-sys-cert.c
install.sh
integer-wrap-ignore.scl
jobserver-exec docs: Move the python libraries to tools/lib/python 2025-11-18 09:22:40 -07:00
kallsyms.c kallsyms: Get rid of kallsyms relative base 2026-01-22 15:58:22 -07:00
Kbuild.include
Kconfig.include rust: kconfig: Don't require RUST_IS_AVAILABLE for rustc-option 2026-02-03 15:29:17 -07:00
kernel-doc docs: add a scripts/kernel-doc symbolic link 2026-01-20 15:57:06 -07:00
ld-version.sh
leaking_addresses.pl
Lindent
link-vmlinux.sh Kbuild/Kconfig updates for 7.0 2026-02-11 13:40:35 -08:00
macro_checker.py
make_fit.py scripts/make_fit.py: Drop explicit LZMA parallel compression 2026-02-13 14:24:01 -05:00
Makefile tracing: Add a tracepoint verification check at build time 2025-10-24 16:43:14 -04:00
Makefile.asm-headers
Makefile.autofdo
Makefile.btf resolve_btfids: Change in-place update with raw binary output 2025-12-19 10:55:40 -08:00
Makefile.build Driver core changes for 7.1-rc1 2026-04-13 19:03:11 -07:00
Makefile.clang
Makefile.clean
Makefile.compiler
Makefile.context-analysis compiler-context-analysis: Introduce header suppressions 2026-01-05 16:43:33 +01:00
Makefile.debug
Makefile.defconf
Makefile.dtbinst
Makefile.dtbs scripts/dtc: Update to upstream version v1.7.2-62-ga26ef6400bd8 2026-02-03 20:58:12 -06:00
Makefile.gcc-plugins
Makefile.headersinst
Makefile.host
Makefile.kasan
Makefile.kcov
Makefile.kcsan
Makefile.kmsan
Makefile.kstack_erase
Makefile.lib Kbuild/Kconfig updates for 7.0 2026-02-11 13:40:35 -08:00
Makefile.modfinal scripts/gen-btf.sh: Use CONFIG_SHELL for execution 2026-01-21 12:36:32 -08:00
Makefile.modinst kbuild: Use objtree for module signing key path 2025-11-08 12:17:58 +01:00
Makefile.modpost
Makefile.package kbuild: modules-cpio-pkg: Respect INSTALL_MOD_PATH 2026-03-30 07:38:26 +02:00
Makefile.propeller
Makefile.randstruct
Makefile.ubsan
Makefile.userprogs
Makefile.vdsoinst
Makefile.vmlinux bpf-next-7.0 2026-02-10 11:26:21 -08:00
Makefile.vmlinux_o kbuild: Check for functions with ambiguous -ffunction-sections section names 2025-11-21 10:04:10 +01:00
Makefile.warn kbuild: Drop superfluous compiler option checks 2026-01-14 14:22:33 -07:00
makelst
markup_oops.pl
min-tool-version.sh rust: bump bindgen minimum supported version to 0.71.1 (Debian Trixie) 2026-04-07 10:00:24 +02:00
misc-check
mkcompile_h
mksysmap modpost: Create modalias for builtin modules 2025-09-24 09:10:45 -07:00
mkuboot.sh
module-common.c
module.lds.S livepatch: Free klp_{object,func}_ext data after initialization 2026-02-05 08:00:45 -08:00
modules-check.sh
nsdeps
objdiff
objdump-func
orc_hash.sh
pahole-version.sh
parse-maintainers.pl
patch-kernel
profile2linkerlist.pl
prune-kernel
recordmcount.c
recordmcount.h
recordmcount.pl
relocs_check.sh
remove-stale-files
rust_is_available_bindgen_libclang.h
rust_is_available_test.py rust: rust_is_available: remove warning for bindgen < 0.69.5 && libclang >= 19.1 2026-04-07 10:00:24 +02:00
rust_is_available.sh rust: kbuild: remove "dummy parameter" workaround for bindgen < 0.71.1 2026-04-07 10:00:24 +02:00
rustc-llvm-version.sh
rustc-version.sh
rustdoc_test_builder.rs
rustdoc_test_gen.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
setlocalversion
show_delta
sign-file.c Modules changes for v7.0-rc1 2026-02-10 09:49:18 -08:00
sorttable.c sorttable: Move ELF parsing into scripts/elf-parse.[ch] 2025-10-24 16:43:14 -04:00
spdxcheck-test.sh
spdxcheck.py treewide: Update email address 2026-01-11 06:09:11 -10:00
spdxexclude
spelling.txt
ssl-common.h
stackdelta
stackusage
subarch.include
syscall.tbl rseq: Implement sys_rseq_slice_yield() 2026-01-22 11:11:17 +01:00
syscallhdr.sh
syscallnr.sh
syscalltbl.sh
tags.sh tags: Add regex for context_lock_struct 2026-01-05 16:43:37 +01:00
tools-support-relr.sh
tracepoint-update.c scripts/tracepoint-update: Fix memory leak in add_string() on failure 2026-01-23 13:34:45 -05:00
unifdef.c
ver_linux
verify_builtin_ranges.awk
xen-hypercalls.sh
xz_wrap.sh