Message ID | 1009da147a0254f01779a47610de8df83d18cefe.1637160341.git.leonro@nvidia.com (mailing list archive) |
---|---|
State | Accepted |
Commit | fec1faf221f61118aa52f44c65a13c3e173a64c2 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v1] devlink: Don't throw an error if flash notification sent before devlink visible | expand |
On Wed, 17 Nov 2021 16:49:09 +0200 Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > The mlxsw driver calls to various devlink flash routines even before > users can get any access to the devlink instance itself. For example, > mlxsw_core_fw_rev_validate() one of such functions. > > __mlxsw_core_bus_device_register > -> mlxsw_core_fw_rev_validate > -> mlxsw_core_fw_flash > -> mlxfw_firmware_flash > -> mlxfw_status_notify > -> devlink_flash_update_status_notify > -> __devlink_flash_update_notify > -> WARN_ON(...) > > It causes to the WARN_ON to trigger warning about devlink not registered. > > Fixes: cf530217408e ("devlink: Notify users when objects are accessible") > Reported-by: Danielle Ratson <danieller@nvidia.com> > Tested-by: Danielle Ratson <danieller@nvidia.com> > Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Acked-by: Jakub Kicinski <kuba@kernel.org>
Hello: This patch was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Wed, 17 Nov 2021 16:49:09 +0200 you wrote: > From: Leon Romanovsky <leonro@nvidia.com> > > The mlxsw driver calls to various devlink flash routines even before > users can get any access to the devlink instance itself. For example, > mlxsw_core_fw_rev_validate() one of such functions. > > __mlxsw_core_bus_device_register > -> mlxsw_core_fw_rev_validate > -> mlxsw_core_fw_flash > -> mlxfw_firmware_flash > -> mlxfw_status_notify > -> devlink_flash_update_status_notify > -> __devlink_flash_update_notify > -> WARN_ON(...) > > [...] Here is the summary with links: - [net,v1] devlink: Don't throw an error if flash notification sent before devlink visible https://git.kernel.org/netdev/net/c/fec1faf221f6 You are awesome, thank you!
diff --git a/net/core/devlink.c b/net/core/devlink.c index 5ba4f9434acd..5ad72dbfcd07 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -4229,7 +4229,9 @@ static void __devlink_flash_update_notify(struct devlink *devlink, WARN_ON(cmd != DEVLINK_CMD_FLASH_UPDATE && cmd != DEVLINK_CMD_FLASH_UPDATE_END && cmd != DEVLINK_CMD_FLASH_UPDATE_STATUS); - WARN_ON(!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED)); + + if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED)) + return; msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!msg)