• J
    net/mlx4_core: Do not access comm channel if it has not yet been initialized · 81d18419
    Jack Morgenstein 提交于
    In the Hypervisor, there are several FW commands which are invoked
    before the comm channel is initialized (in mlx4_multi_func_init).
    These include MOD_STAT_CONFIG, QUERY_DEV_CAP, INIT_HCA, and others.
    
    If any of these commands fails, say with a timeout, the Hypervisor
    driver enters the internal error reset flow. In this flow, the driver
    attempts to notify all slaves via the comm channel that an internal error
    has occurred.
    
    Since the comm channel has not yet been initialized (i.e., mapped via
    ioremap), this will cause dereferencing a NULL pointer.
    
    To fix this, do not access the comm channel in the internal error flow
    if it has not yet been initialized.
    
    Fixes: 55ad3592 ("net/mlx4_core: Enable device recovery flow with SRIOV")
    Fixes: ab9c17a0 ("mlx4_core: Modify driver initialization flow to accommodate SRIOV for Ethernet")
    Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: NTariq Toukan <tariqt@mellanox.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    81d18419
cmd.c 90.4 KB