Skip to content

Commit

Permalink
fpga: bridge: properly initialize bridge device before populating chi…
Browse files Browse the repository at this point in the history
…ldren

commit dc70eb8 upstream.

The current code path can lead to warnings because of uninitialized device,
which contains, as a consequence, uninitialized kobject. The uninitialized
device is passed to of_platform_populate, which will at some point, while
creating child device, try to get a reference on uninitialized parent,
resulting in the following warning:

kobject: '(null)' ((ptrval)): is not initialized, yet kobject_get() is
being called.

The warning is observed after migrating a kernel 5.10.x to 6.1.x.
Reverting commit 0d70af3 ("fpga: bridge: Use standard dev_release for
class driver") seems to remove the warning.
This commit aggregates device_initialize() and device_add() into
device_register() but this new call is done AFTER of_platform_populate

Fixes: 0d70af3 ("fpga: bridge: Use standard dev_release for class driver")
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
Acked-by: Xu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20230404133102.2837535-2-alexis.lothore@bootlin.com
Signed-off-by: Xu Yilun <yilun.xu@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Alexis Lothoré authored and Greg Kroah-Hartman committed Apr 26, 2023
1 parent f8c3eb7 commit 71b6df6
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/fpga/fpga-bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,6 @@ fpga_bridge_register(struct device *parent, const char *name,
bridge->dev.parent = parent;
bridge->dev.of_node = parent->of_node;
bridge->dev.id = id;
of_platform_populate(bridge->dev.of_node, NULL, NULL, &bridge->dev);

ret = dev_set_name(&bridge->dev, "br%d", id);
if (ret)
Expand All @@ -372,6 +371,8 @@ fpga_bridge_register(struct device *parent, const char *name,
return ERR_PTR(ret);
}

of_platform_populate(bridge->dev.of_node, NULL, NULL, &bridge->dev);

return bridge;

error_device:
Expand Down

0 comments on commit 71b6df6

Please sign in to comment.