瀏覽代碼

net/mlx5: Fix invalid pointer reference when prof_sel parameter is invalid

When prof_sel is invalid, mlx5_core_warn is called but the
mlx5_core_dev is not initialized yet. Solution is moving the prof_sel code
after dev->pdev assignment

Fixes: 2974ab6e8bd8 ('net/mlx5: Improve driver log messages')
Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Huy Nguyen 8 年之前
父節點
當前提交
0e97a34083
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      drivers/net/ethernet/mellanox/mlx5/core/main.c

+ 3 - 2
drivers/net/ethernet/mellanox/mlx5/core/main.c

@@ -1226,6 +1226,9 @@ static int init_one(struct pci_dev *pdev,
 
 
 	pci_set_drvdata(pdev, dev);
 	pci_set_drvdata(pdev, dev);
 
 
+	dev->pdev = pdev;
+	dev->event = mlx5_core_event;
+
 	if (prof_sel < 0 || prof_sel >= ARRAY_SIZE(profile)) {
 	if (prof_sel < 0 || prof_sel >= ARRAY_SIZE(profile)) {
 		mlx5_core_warn(dev,
 		mlx5_core_warn(dev,
 			       "selected profile out of range, selecting default (%d)\n",
 			       "selected profile out of range, selecting default (%d)\n",
@@ -1233,8 +1236,6 @@ static int init_one(struct pci_dev *pdev,
 		prof_sel = MLX5_DEFAULT_PROF;
 		prof_sel = MLX5_DEFAULT_PROF;
 	}
 	}
 	dev->profile = &profile[prof_sel];
 	dev->profile = &profile[prof_sel];
-	dev->pdev = pdev;
-	dev->event = mlx5_core_event;
 
 
 	INIT_LIST_HEAD(&priv->ctx_list);
 	INIT_LIST_HEAD(&priv->ctx_list);
 	spin_lock_init(&priv->ctx_lock);
 	spin_lock_init(&priv->ctx_lock);