Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

+17
+1
drivers/base/base.h
··· 231 231 void devres_node_init(struct devres_node *node, dr_node_release_t release, 232 232 dr_node_free_t free_node); 233 233 void devres_node_add(struct device *dev, struct devres_node *node); 234 + bool devres_node_remove(struct device *dev, struct devres_node *node); 234 235 void devres_for_each_res(struct device *dev, dr_release_t release, 235 236 dr_match_t match, void *match_data, 236 237 void (*fn)(struct device *, void *, void *),
+16
drivers/base/devres.c
··· 365 365 } 366 366 EXPORT_SYMBOL_GPL(devres_get); 367 367 368 + bool devres_node_remove(struct device *dev, struct devres_node *node) 369 + { 370 + struct devres_node *__node; 371 + 372 + guard(spinlock_irqsave)(&dev->devres_lock); 373 + list_for_each_entry_reverse(__node, &dev->devres_head, entry) { 374 + if (__node == node) { 375 + list_del_init(&node->entry); 376 + devres_log(dev, node, "REM"); 377 + return true; 378 + } 379 + } 380 + 381 + return false; 382 + } 383 + 368 384 /** 369 385 * devres_remove - Find a device resource and remove it 370 386 * @dev: Device to find resource from