linux/rust/kernel
Danilo Krummrich 95ade775c4 rust: driver core: remove drvdata() and driver_type
When drvdata() was introduced in commit 6f61a2637a ("rust: device:
introduce Device::drvdata()"), its commit message already noted that a
direct accessor to the driver's bus device private data is not commonly
required -- bus callbacks provide access through &self, and other entry
points (IRQs, workqueues, IOCTLs, etc.) carry their own private data.

The sole motivation for drvdata() was inter-driver interaction -- an
auxiliary driver deriving the parent's bus device private data from the
parent device.

However, drvdata() exposes the driver's bus device private data beyond
the driver's own scope. This creates ordering constraints; for instance
drvdata may not be set yet when the first caller of drvdata() can
appear. It also forces the driver's bus device private data to outlive
all registrations that access it, which causes unnecessary
complications.

Private data should be private to the entity that issues it, i.e. bus
device private data belongs to bus callbacks, class device private data
to class callbacks, IRQ private data to the IRQ handler, etc.

With registration-private data now available through the auxiliary bus,
there is no remaining user of drvdata(), thus remove it.

Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Link: https://patch.msgid.link/20260505152400.3905096-4-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2026-05-11 15:26:12 +02:00
..
alloc rust: alloc: add Box::zeroed() 2026-05-11 15:26:12 +02:00
block rust: block: update const_refs_to_static MSRV TODO comment 2026-04-07 10:00:24 +02:00
debugfs Driver core changes for 7.0-rc1 2026-02-11 17:43:59 -08:00
device rust: device: replace kernel::c_str! with C-Strings 2025-12-22 17:30:24 +01:00
drm rust: drm: gem: shmem: Add DRM shmem helper abstraction 2026-03-27 21:38:40 +01:00
fs rust: fs: add file::Offset type alias 2025-11-05 00:05:38 +01:00
gpu rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
interop rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
io rust: io: introduce write_reg and LocatedRegister 2026-03-17 20:04:11 +01:00
iommu rust: iommu: fix srctree link warning 2026-01-22 09:19:30 +01:00
irq rust: irq: move 'static bounds to traits 2026-03-03 20:33:26 +01:00
list Locking updates for v7.1: 2026-04-14 12:36:25 -07:00
mm mm: rename zap_page_range_single() to zap_vma_range() 2026-04-05 13:53:15 -07:00
net rust: net: replace kernel::c_str! with C-Strings 2026-01-05 16:32:39 -08:00
num Driver core changes for 7.1-rc1 2026-04-13 19:03:11 -07:00
pci rust: pci: io: remove overloaded Io methods of ConfigSpace 2026-03-17 20:02:09 +01:00
ptr rust: ptr: add projection infrastructure 2026-03-07 23:06:17 +01:00
str rust: str: add radix prefixed integer parsing functions 2025-11-03 14:40:45 +01:00
sync Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
time hrtimer: add usage examples to documentation 2026-03-23 08:31:00 +01:00
.gitignore
acpi.rs
alloc.rs
auxiliary.rs rust: auxiliary: add registration data to auxiliary devices 2026-05-11 15:26:12 +02:00
bitmap.rs rust: bitmap: add BitmapVec::new_inline() 2025-11-26 11:25:35 -05:00
bits.rs rust: bits: always inline functions using build_assert with arguments 2026-01-18 20:40:11 +01:00
block.rs
bug.rs rust: bug: Support DEBUG_BUGVERBOSE_DETAILED option 2026-01-30 05:18:17 +01:00
build_assert.rs rust: rework build_assert! documentation 2026-03-30 02:03:52 +02:00
clk.rs rust: clk: implement Send and Sync 2026-04-03 11:57:35 +02:00
configfs.rs rust: configfs: replace kernel::c_str! with C-Strings 2026-01-15 09:26:49 +01:00
cpu.rs
cpufreq.rs cpufreq: Pass the policy to cpufreq_driver->adjust_perf() 2026-04-02 11:30:24 -05:00
cpumask.rs rust: cpumask: rename methods of Cpumask for clarity and consistency 2026-01-27 11:21:23 +05:30
cred.rs
debugfs.rs rust: debugfs: Use kernel Atomic type in docs example 2026-01-19 15:02:46 +01:00
device_id.rs rust: device_id: replace incorrect word in safety documentation 2025-12-29 14:09:18 +01:00
device.rs rust: driver core: remove drvdata() and driver_type 2026-05-11 15:26:12 +02:00
devres.rs rust: devres: embed struct devres_node directly 2026-03-18 00:47:14 +01:00
dma.rs rust: dma: add from-slice constructors for Coherent and CoherentBox 2026-03-28 22:20:07 +09:00
driver.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
error.rs drm for v7.1-rc1 2026-04-15 08:45:00 -07:00
faux.rs rust: faux: use "kernel vertical" style for imports 2026-01-07 19:56:00 +01:00
firmware.rs rust: firmware: replace kernel::c_str! with C-Strings 2025-11-17 00:53:47 +01:00
fmt.rs rust: fmt: Fix grammar in Adapter description 2026-01-04 23:51:35 +01:00
fs.rs
generated_arch_reachable_asm.rs.S
generated_arch_static_branch_asm.rs.S
generated_arch_warn_asm.rs.S
gpu.rs rust: gpu: Add GPU buddy allocator bindings 2026-03-23 21:41:47 +01:00
i2c.rs rust: i2c: Update ARef and AlwaysRefCounted imports to use sync::aref 2026-03-15 20:30:29 +01:00
id_pool.rs rust: id_pool: do not immediately acquire new ids 2025-12-02 14:17:09 -05:00
impl_flags.rs rust: add impl_flags! macro for defining common bitflag operations 2026-02-02 08:09:11 +01:00
init.rs rust: init: use #[default_error(err)] for the initializer macros 2026-01-17 10:51:42 +01:00
interop.rs rust: interop: Add list module for C linked list interface 2026-03-23 20:29:28 +01:00
io.rs rust: io: introduce write_reg and LocatedRegister 2026-03-17 20:04:11 +01:00
ioctl.rs
iov.rs
irq.rs
jump_label.rs
kunit.rs rust: kunit: fix warning when !CONFIG_PRINTK 2026-03-02 10:01:15 -07:00
lib.rs drm for v7.1-rc1 2026-04-15 08:45:00 -07:00
list.rs rust: list: hide macros from top-level kernel doc 2026-03-27 12:15:47 +01:00
maple_tree.rs rust: maple_tree: rcu_read_lock() in destructor to silence lockdep 2025-12-23 11:23:15 -08:00
miscdevice.rs rust: redefine bindings::compat_ptr_ioctl in Rust 2026-01-16 14:54:11 +01:00
mm.rs
module_param.rs Modules changes for v6.19-rc1 2025-12-06 08:27:07 -08:00
net.rs
num.rs rust: num: add Bounded integer wrapping type 2025-11-19 00:22:24 +01:00
of.rs
opp.rs Rust changes for v6.19 2025-12-03 14:16:49 -08:00
page.rs rust: Return Option from page_align and ensure no usize overflow 2025-12-29 15:32:53 +01:00
pci.rs rust: pci: re-export ConfigSpace 2026-02-01 22:18:24 +01:00
pid_namespace.rs
platform.rs Linux 6.19-rc7 2026-01-26 13:23:52 +01:00
prelude.rs rust: remove RUSTC_HAS_SLICE_AS_FLATTENED and simplify code 2026-04-07 10:00:23 +02:00
print.rs rust: print: Add pr_*_once macros 2026-01-30 05:47:05 +01:00
processor.rs
ptr.rs Rust timekeeping changes for v7.1 2026-04-08 10:44:11 +02:00
pwm.rs rust: pwm: Simplify to_result call sites and unsafe blocks 2026-01-20 18:49:58 +01:00
rbtree.rs Rust changes for v6.20 / v7.0 2026-02-10 11:53:01 -08:00
regulator.rs rust: regulator: do not assume that regulator_get() returns non-null 2026-03-24 13:08:21 +00:00
revocable.rs
safety.rs rust: safety: introduce unsafe_precondition_assert! macro 2026-02-02 08:10:48 +01:00
scatterlist.rs rust: scatterlist: Update ARef imports to use sync::aref 2025-12-18 17:25:45 +01:00
security.rs
seq_file.rs rust: seq_file: replace kernel::c_str! with C-Strings 2026-01-29 15:32:40 +01:00
sizes.rs rust: sizes: add SizeConstants trait for device address space constants 2026-04-07 12:57:50 +02:00
soc.rs rust: Add soc_device support 2025-12-28 12:43:56 +01:00
std_vendor.rs
str.rs Rust timekeeping changes for v7.1 2026-04-08 10:44:11 +02:00
sync.rs rust: sync: Replace kernel::c_str! with C-Strings 2026-01-28 09:25:44 +01:00
task.rs Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
time.rs rust: time: make ClockSource unsafe trait 2026-03-23 08:29:48 +01:00
tracepoint.rs
transmute.rs rust: transmute: simplify code with Rust 1.80.0 split_at_*checked() 2026-04-07 10:00:24 +02:00
types.rs rust: types: remove temporary re-exports of ARef and AlwaysRefCounted 2026-03-15 20:30:29 +01:00
uaccess.rs Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
usb.rs rust: usb: Update AlwaysRefCounted imports to use sync::aref 2026-03-15 20:30:29 +01:00
workqueue.rs rust: workqueue: use new sync::aref path for imports 2026-03-26 15:45:34 +00:00
xarray.rs rust: kernel: mark as #[inline] all From::from()s for Error 2026-03-27 12:49:00 +01:00