Sun, Aug 08, 2021 at 08:57:43PM CEST, leon@xxxxxxxxxx wrote: >From: Leon Romanovsky <leonro@xxxxxxxxxx> > >All kernel devlink implementations call to devlink_alloc() during >initialization routine for specific device which is used later as >a parent device for devlink_register(). > >Such late device assignment causes to the situation which requires us to >call to device_register() before setting other parameters, but that call >opens devlink to the world and makes accessible for the netlink users. > >Any attempt to move devlink_register() to be the last call generates the >following error due to access to the devlink->dev pointer. > >[ 8.758862] devlink_nl_param_fill+0x2e8/0xe50 >[ 8.760305] devlink_param_notify+0x6d/0x180 >[ 8.760435] __devlink_params_register+0x2f1/0x670 >[ 8.760558] devlink_params_register+0x1e/0x20 > >The simple change of API to set devlink device in the devlink_alloc() >instead of devlink_register() fixes all this above and ensures that >prior to call to devlink_register() everything already set. > >Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> Reviewed-by: Jiri Pirko <jiri@xxxxxxxxxx>