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

mfd: core: Increment of_node's refcount before linking it to the platform device

When an MFD device is added, a platform_device is allocated. If this
device is linked to a DT description, the corresponding OF node is linked
to the new platform device but the OF node's refcount isn't incremented.
As of_node_put() is called during the platform device release, it leads
to a refcount underflow.

Call of_node_get() to increment the OF node's refcount when the node is
linked to the newly created platform device.

Signed-off-by: Bastien Curutchet <bastien.curutchet@bootlin.com>
Link: https://lore.kernel.org/r/20250820-mfd-refcount-v1-1-6dcb5eb41756@bootlin.com
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Bastien Curutchet and committed by
Lee Jones
5f4bbee0 8a498184

+1
+1
drivers/mfd/mfd-core.c
··· 131 131 of_entry->np = np; 132 132 list_add_tail(&of_entry->list, &mfd_of_node_list); 133 133 134 + of_node_get(np); 134 135 device_set_node(&pdev->dev, of_fwnode_handle(np)); 135 136 #endif 136 137 return 0;