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

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>
  • Loading branch information
Alexis Lothoré authored and Xu Yilun committed Apr 6, 2023
1 parent d2b727c commit dc70eb8
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 @@ -363,7 +363,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 @@ -375,6 +374,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 dc70eb8

Please sign in to comment.