linux/rust/kernel
Danilo Krummrich 46ae8fd738 rust: devres: replace Devres::new_foreign_owned()
Replace Devres::new_foreign_owned() with devres::register().

The current implementation of Devres::new_foreign_owned() creates a full
Devres container instance, including the internal Revocable and
completion.

However, none of that is necessary for the intended use of giving full
ownership of an object to devres and getting it dropped once the given
device is unbound.

Hence, implement devres::register(), which is limited to consume the
given data, wrap it in a KBox and drop the KBox once the given device is
unbound, without any other synchronization.

Cc: Dave Airlie <airlied@redhat.com>
Cc: Simona Vetter <simona.vetter@ffwll.ch>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Benno Lossin <lossin@kernel.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Link: https://lore.kernel.org/r/20250626200054.243480-3-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
2025-06-28 18:06:53 +02:00
..
alloc rust: alloc: add missing Markdown code span 2025-05-25 22:58:35 +02:00
block rust: pin-init: change blanket impls for [Pin]Init and add one for Result<T, E> 2025-06-11 21:13:56 +02:00
device rust: device: implement FwNode::is_of_node() 2025-06-25 18:10:12 +02:00
drm rust: devres: replace Devres::new_foreign_owned() 2025-06-28 18:06:53 +02:00
fs rust: file: improve safety comments 2025-05-30 07:12:05 +02:00
list rust: list: Fix typo much in arc.rs 2025-05-29 23:35:44 +02:00
mm mm: rust: make CONFIG_MMU ifdefs more narrow 2025-05-31 22:46:12 -07:00
net net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
sync rust: completion: implement initial abstraction 2025-06-13 23:46:56 +02:00
time rust: time: Fix compile error in impl_has_hr_timer macro 2025-06-10 20:11:36 +02:00
.gitignore rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
acpi.rs rust: acpi: add acpi::DeviceId abstraction 2025-06-26 23:22:17 +02:00
alloc.rs rust: alloc: add missing Markdown code spans 2025-05-25 22:58:35 +02:00
auxiliary.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
block.rs rust: block: introduce kernel::block::mq module 2024-06-14 07:45:04 -06:00
build_assert.rs rust: add build_error! to the prelude 2025-01-10 00:19:09 +01:00
clk.rs rust: clk: Add initial abstractions 2025-05-19 12:55:40 +05:30
configfs.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
cpu.rs rust: cpu: Add CpuId::current() to retrieve current CPU ID 2025-06-12 10:31:28 +05:30
cpufreq.rs rust: devres: replace Devres::new_foreign_owned() 2025-06-28 18:06:53 +02:00
cpumask.rs rust: Use CpuId in place of raw CPU numbers 2025-06-12 10:31:28 +05:30
cred.rs cred,rust: mark Credential methods inline 2025-03-04 17:07:49 -05:00
device_id.rs rust: use absolute paths in macros referencing core and kernel 2025-05-23 00:12:14 +02:00
device.rs rust: device: Move property_present() to FwNode 2025-06-13 00:58:52 +02:00
devres.rs rust: devres: replace Devres::new_foreign_owned() 2025-06-28 18:06:53 +02:00
dma.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
driver.rs rust: driver: Add ACPI id table support to Adapter trait 2025-06-26 23:26:10 +02:00
error.rs Rust changes for v6.15 2025-03-30 17:03:26 -07:00
faux.rs rust/kernel/faux: mark Registration methods inline 2025-03-11 10:42:23 +01:00
firmware.rs rust: firmware: Use ffi::c_char type in FwFunc 2025-04-14 14:13:23 +02:00
fs.rs rust: file: add Rust abstraction for struct file 2024-09-30 13:02:28 +02:00
generated_arch_static_branch_asm.rs.S rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
init.rs Rust changes for v6.15 2025-03-30 17:03:26 -07:00
io.rs rust: io: rename io::Io accessors 2025-02-22 15:44:19 +01:00
ioctl.rs rust: start using the #[expect(...)] attribute 2024-10-07 21:39:57 +02:00
jump_label.rs rust: jump_label: skip formatting generated file 2024-11-20 13:32:42 -05:00
kunit.rs rust: add kunit_tests to the prelude 2025-05-27 20:09:59 +02:00
lib.rs rust: acpi: add acpi::DeviceId abstraction 2025-06-26 23:22:17 +02:00
list.rs rust: list: Add examples for linked list 2025-05-22 12:00:52 +02:00
miscdevice.rs Char/Misc/IIO pull request for 6.16-rc1 2025-06-06 11:50:47 -07:00
mm.rs mm: rust: make CONFIG_MMU ifdefs more narrow 2025-05-31 22:46:12 -07:00
net.rs
of.rs rust: of: add of::DeviceId abstraction 2024-12-20 17:21:04 +01:00
opp.rs rust: opp: Move cfg(CONFIG_OF) attribute to the top of doc test 2025-05-27 15:29:17 +02:00
page.rs rust: page: optimize rust symbol generation for Page 2025-05-12 00:20:25 +02:00
pci.rs Rust changes for v6.16 2025-06-04 21:18:37 -07:00
pid_namespace.rs rust: add PidNamespace 2024-10-08 15:44:36 +02:00
platform.rs rust: platform: Add ACPI match table support to Driver trait 2025-06-26 23:26:15 +02:00
prelude.rs rust: add kunit_tests to the prelude 2025-05-27 20:09:59 +02:00
print.rs rust: replace rustdoc references to alloc::format 2025-05-12 00:20:25 +02:00
rbtree.rs rust: retain pointer mut-ness in container_of! 2025-05-28 18:54:09 +02:00
revocable.rs rust: revocable: support fallible PinInit types 2025-06-28 18:06:52 +02:00
security.rs lsm,rust: reword "destroy" -> "release" in SecurityCtx 2025-03-04 15:44:46 -05:00
seq_file.rs Rust changes for v6.15 2025-03-30 17:03:26 -07:00
sizes.rs rust: sizes: add commonly used constants 2024-08-30 10:27:34 +01:00
static_assert.rs rust: use absolute paths in macros referencing core and kernel 2025-05-23 00:12:14 +02:00
std_vendor.rs rust: convert raw URLs to Markdown autolinks in comments 2025-05-12 00:20:25 +02:00
str.rs rust: str: take advantage of the -> Result support in KUnit #[test]'s 2025-05-27 20:09:59 +02:00
sync.rs rust: completion: implement initial abstraction 2025-06-13 23:46:56 +02:00
task.rs rust: task: add missing Markdown code spans and intra-doc links 2025-05-25 22:58:35 +02:00
time.rs rust: time: Introduce Instant type 2025-04-29 15:31:07 +02:00
tracepoint.rs rust: add tracepoint support 2024-11-04 16:21:44 -05:00
transmute.rs rust: kernel: move FromBytes and AsBytes traits to a new transmute module 2024-10-10 00:33:42 +02:00
types.rs rust: implement Wrapper<T> for Opaque<T> 2025-06-28 14:58:08 +02:00
uaccess.rs Alloc changes for v6.16 2025-05-18 20:56:03 +02:00
workqueue.rs rust: workqueue: remove HasWork::OFFSET 2025-05-29 01:34:52 +02:00
xarray.rs rust: xarray: Add an abstraction for XArray 2025-05-01 11:37:59 +02:00