mlxsw: spectrum: Protect driver from buggy firmware
authorAmit Cohen <amcohen@nvidia.com>
Tue, 23 Nov 2021 07:52:56 +0000 (09:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Dec 2021 08:04:50 +0000 (09:04 +0100)
commitda4d70199e5d82da664a80077508d6c18f5e76df
treead5508a1d8dd62d3c41f45fbec8a649113242a46
parent12dea26c05cd5b2dc70fa1ca8c4dc3c630879481
mlxsw: spectrum: Protect driver from buggy firmware

[ Upstream commit 63b08b1f6834bbb0b4f7783bf63b80c8c8e9a047 ]

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: 28b1987ef506 ("mlxsw: spectrum: Register CPU port with devlink")
Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlxsw/spectrum.c