The mlx5_dev_close() might be called twice and the priv->sh is NULL on the second pass. The DRV_LOG does not check priv->sh and it causes potential NULL dereference.
Check priv->sh before priv->sh->ctx to avoid the potential NULL dereference." Fixes: 942d13e6e7d1 ("net/mlx5: fix sharing context destroy order") Cc: sta...@dpdk.org Signed-off-by: Suanming Mou <suanmi...@mellanox.com> Acked-by: Viacheslav Ovsiienko <viachesl...@mellanox.com> --- drivers/net/mlx5/mlx5.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 1445809..be16841 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -1425,7 +1425,8 @@ struct mlx5_flow_id_pool * DRV_LOG(DEBUG, "port %u closing device \"%s\"", dev->data->port_id, - ((priv->sh->ctx != NULL) ? priv->sh->ctx->device->name : "")); + ((priv->sh && priv->sh->ctx) ? + priv->sh->ctx->device->name : "")); /* In case mlx5_dev_stop() has not been called. */ mlx5_dev_interrupt_handler_uninstall(dev); mlx5_dev_interrupt_handler_devx_uninstall(dev); -- 1.8.3.1