diff options
| author | Danilo Krummrich <dakr@kernel.org> | 2026-02-13 23:07:13 +0100 |
|---|---|---|
| committer | Danilo Krummrich <dakr@kernel.org> | 2026-03-18 00:02:59 +0100 |
| commit | b1081ef74d804ae1c512151c2610b79513a52cd6 (patch) | |
| tree | 5b5638fbfcc868fba78f9b7ea58da1f713bdd1b1 /drivers/base/devres.c | |
| parent | 9738ca7df98f37b647c6a2f5ac5dfe49db03c948 (diff) | |
devres: add devres_node_remove()
When the Rust Devres<T> container type is dropped we need a way to
remove the embedded struct devres_node from the device's node list.
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20260213220718.82835-4-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'drivers/base/devres.c')
| -rw-r--r-- | drivers/base/devres.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/base/devres.c b/drivers/base/devres.c index 22d10b30774f..6c7854d4e4a8 100644 --- a/drivers/base/devres.c +++ b/drivers/base/devres.c @@ -365,6 +365,22 @@ void *devres_get(struct device *dev, void *new_res, } EXPORT_SYMBOL_GPL(devres_get); +bool devres_node_remove(struct device *dev, struct devres_node *node) +{ + struct devres_node *__node; + + guard(spinlock_irqsave)(&dev->devres_lock); + list_for_each_entry_reverse(__node, &dev->devres_head, entry) { + if (__node == node) { + list_del_init(&node->entry); + devres_log(dev, node, "REM"); + return true; + } + } + + return false; +} + /** * devres_remove - Find a device resource and remove it * @dev: Device to find resource from |
