Skip to content

Commit 63b08b1

Browse files
Amit Cohendavem330
authored andcommitted
mlxsw: spectrum: Protect driver from buggy firmware
When processing port up/down events generated by the device's firmware, the driver protects itself from events reported for non-existent local ports, but not the CPU port (local port 0), which exists, but lacks a netdev. This can result in a NULL pointer dereference when calling netif_carrier_{on,off}(). Fix this by bailing early when processing an event reported for the CPU port. Problem was only observed when running on top of a buggy emulator. Fixes: 28b1987 ("mlxsw: spectrum: Register CPU port with devlink") Signed-off-by: Amit Cohen <[email protected]> Signed-off-by: Ido Schimmel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent ce4995b commit 63b08b1

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2153,7 +2153,7 @@ static void mlxsw_sp_pude_event_func(const struct mlxsw_reg_info *reg,
21532153
max_ports = mlxsw_core_max_ports(mlxsw_sp->core);
21542154
local_port = mlxsw_reg_pude_local_port_get(pude_pl);
21552155

2156-
if (WARN_ON_ONCE(local_port >= max_ports))
2156+
if (WARN_ON_ONCE(!local_port || local_port >= max_ports))
21572157
return;
21582158
mlxsw_sp_port = mlxsw_sp->ports[local_port];
21592159
if (!mlxsw_sp_port)

0 commit comments

Comments
 (0)