• L
    devlink: Set device as early as possible · 919d13a7
    Leon Romanovsky 提交于
    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: NLeon Romanovsky <leonro@nvidia.com>
    Reviewed-by: NJiri Pirko <jiri@nvidia.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    919d13a7
hinic_devlink.c 16.7 KB