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_add()

Both devres_add() and devres_open_group() acquire the devres_lock and
call add_dr(). Add a helper, devres_node_add(), for this pattern.

Use guard(spinlock_irqsave) to avoid the explicit unlock call and local
flag variables.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20260202235210.55176-3-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>

+9 -8
+9 -8
drivers/base/devres.c
··· 231 231 } 232 232 EXPORT_SYMBOL_GPL(devres_free); 233 233 234 + static void devres_node_add(struct device *dev, struct devres_node *node) 235 + { 236 + guard(spinlock_irqsave)(&dev->devres_lock); 237 + 238 + add_dr(dev, node); 239 + } 240 + 234 241 /** 235 242 * devres_add - Register device resource 236 243 * @dev: Device to add resource to ··· 250 243 void devres_add(struct device *dev, void *res) 251 244 { 252 245 struct devres *dr = container_of(res, struct devres, data); 253 - unsigned long flags; 254 246 255 - spin_lock_irqsave(&dev->devres_lock, flags); 256 - add_dr(dev, &dr->node); 257 - spin_unlock_irqrestore(&dev->devres_lock, flags); 247 + devres_node_add(dev, &dr->node); 258 248 } 259 249 EXPORT_SYMBOL_GPL(devres_add); 260 250 ··· 556 552 void *devres_open_group(struct device *dev, void *id, gfp_t gfp) 557 553 { 558 554 struct devres_group *grp; 559 - unsigned long flags; 560 555 561 556 grp = kmalloc_obj(*grp, gfp); 562 557 if (unlikely(!grp)) ··· 572 569 grp->id = id; 573 570 grp->color = 0; 574 571 575 - spin_lock_irqsave(&dev->devres_lock, flags); 576 - add_dr(dev, &grp->node[0]); 577 - spin_unlock_irqrestore(&dev->devres_lock, flags); 572 + devres_node_add(dev, &grp->node[0]); 578 573 return grp->id; 579 574 } 580 575 EXPORT_SYMBOL_GPL(devres_open_group);