irqchip/mbigen: Don't use bus_get_dev_root() to find the parent
Subsystems (2)
PATCH v3 1/1 irqchip/mbigen: Don't use bus_get_dev_root() to find the parent
From: Chen Jun <[email protected]>
bus_get_dev_root() returns sp->dev_root set in subsys_register(). And subsys_register() is not called by platform_bus_init().
For platform_bus_type, bus_get_dev_root() always returns NULL. This makes mbigen_of_create_domain() always return -ENODEV.
Don't try to retrieve the parent via bus_get_dev_root() and unconditionally hand a NULL pointer to of_platform_device_create() to fix this.
---
v3: Modify change log
v2: Modify change log
https://lore.kernel.org/all/[email protected]/
v1: https://lore.kernel.org/all/[email protected]/
drivers/irqchip/irq-mbigen.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
drivers/irqchip/irq-mbigen.c +1 -7
@@ -235,22 +235,17 @@ static const struct irq_domain_ops mbigen_domain_ops = {static int mbigen_of_create_domain (struct platform_device *pdev,struct mbigen_device *mgn_chip) { -struct device *parent;struct platform_device *child;struct irq_domain *domain;struct device_node *np;u32 num_pins;int ret =0 ; - parent =bus_get_dev_root (&platform_bus_type); -if (!parent) -return -ENODEV ; -for_each_child_of_node (pdev->dev.of_node, np) {if (!of_property_read_bool (np,"interrupt-controller" ))continue ; - child =of_platform_device_create (np,NULL , parent); + child =of_platform_device_create (np,NULL ,NULL );if (!child) { ret = -ENOMEM ;break ;
@@ -273,7 +268,6 @@ static int mbigen_of_create_domain(struct platform_device *pdev, } } -put_device (parent);if (ret)of_node_put (np);
Signature · 1 line
2.17.1
The following commit has been merged into the irq/urgent branch of tip:
The following commit has been merged into the irq/urgent branch of tip:
Commit-ID: fb33a46cd75e18773dd5a414744507d84ae90870 Gitweb: https://git.kernel.org/tip/fb33a46cd75e18773dd5a414744507d84ae90870 Author: Chen Jun <[email protected]> AuthorDate: Tue, 20 Feb 2024 19:14:29 +08:00 Committer: Thomas Gleixner <[email protected]> CommitterDate: Wed, 21 Feb 2024 18:40:00 +01:00
irqchip/mbigen: Don't use bus_get_dev_root() to find the parent
bus_get_dev_root() returns sp->dev_root which is set in subsys_register(), but subsys_register() is not called by platform_bus_init().
Therefor for the platform_bus_type, bus_get_dev_root() always returns NULL. This makes mbigen_of_create_domain() always return -ENODEV.
Don't try to retrieve the parent via bus_get_dev_root() and unconditionally hand a NULL pointer to of_platform_device_create() to fix this.
--- drivers/irqchip/irq-mbigen.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
drivers/irqchip/irq-mbigen.c +1 -7
@@ -235,22 +235,17 @@ static const struct irq_domain_ops mbigen_domain_ops = {static int mbigen_of_create_domain (struct platform_device *pdev,struct mbigen_device *mgn_chip) { -struct device *parent;struct platform_device *child;struct irq_domain *domain;struct device_node *np;u32 num_pins;int ret =0 ; - parent =bus_get_dev_root (&platform_bus_type); -if (!parent) -return -ENODEV ; -for_each_child_of_node (pdev->dev.of_node, np) {if (!of_property_read_bool (np,"interrupt-controller" ))continue ; - child =of_platform_device_create (np,NULL , parent); + child =of_platform_device_create (np,NULL ,NULL );if (!child) { ret = -ENOMEM ;break ;
@@ -273,7 +268,6 @@ static int mbigen_of_create_domain(struct platform_device *pdev, } } -put_device (parent);if (ret)of_node_put (np);