aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox/mlx4/main.c
diff options
context:
space:
mode:
authorJack Morgenstein <jackm@dev.mellanox.co.il>2013-01-23 20:54:17 -0500
committerDavid S. Miller <davem@davemloft.net>2013-01-28 00:13:57 -0500
commitf356fcbe12c1174713e83651b630330f8f0f8415 (patch)
tree8e5582ef389f5567b764806f175477162415f50c /drivers/net/ethernet/mellanox/mlx4/main.c
parentdbd501a80671180a8f3cdf93ca465959031fef18 (diff)
net/mlx4_core: Return proper error code when __mlx4_add_one fails
Returning 0 (success) when in fact we are aborting the load, leads to kernel panic when unloading the module. Fix that by returning the actual error code. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com> Signed-off-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/main.c')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index e1bafffbc3b1..983fd3d62bce 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -2169,7 +2169,8 @@ slave_start:
2169 dev->num_slaves = MLX4_MAX_NUM_SLAVES; 2169 dev->num_slaves = MLX4_MAX_NUM_SLAVES;
2170 else { 2170 else {
2171 dev->num_slaves = 0; 2171 dev->num_slaves = 0;
2172 if (mlx4_multi_func_init(dev)) { 2172 err = mlx4_multi_func_init(dev);
2173 if (err) {
2173 mlx4_err(dev, "Failed to init slave mfunc" 2174 mlx4_err(dev, "Failed to init slave mfunc"
2174 " interface, aborting.\n"); 2175 " interface, aborting.\n");
2175 goto err_cmd; 2176 goto err_cmd;
@@ -2193,7 +2194,8 @@ slave_start:
2193 /* In master functions, the communication channel must be initialized 2194 /* In master functions, the communication channel must be initialized
2194 * after obtaining its address from fw */ 2195 * after obtaining its address from fw */
2195 if (mlx4_is_master(dev)) { 2196 if (mlx4_is_master(dev)) {
2196 if (mlx4_multi_func_init(dev)) { 2197 err = mlx4_multi_func_init(dev);
2198 if (err) {
2197 mlx4_err(dev, "Failed to init master mfunc" 2199 mlx4_err(dev, "Failed to init master mfunc"
2198 "interface, aborting.\n"); 2200 "interface, aborting.\n");
2199 goto err_close; 2201 goto err_close;
@@ -2210,6 +2212,7 @@ slave_start:
2210 mlx4_enable_msi_x(dev); 2212 mlx4_enable_msi_x(dev);
2211 if ((mlx4_is_mfunc(dev)) && 2213 if ((mlx4_is_mfunc(dev)) &&
2212 !(dev->flags & MLX4_FLAG_MSI_X)) { 2214 !(dev->flags & MLX4_FLAG_MSI_X)) {
2215 err = -ENOSYS;
2213 mlx4_err(dev, "INTx is not supported in multi-function mode." 2216 mlx4_err(dev, "INTx is not supported in multi-function mode."
2214 " aborting.\n"); 2217 " aborting.\n");
2215 goto err_free_eq; 2218 goto err_free_eq;