linux/drivers/net/ethernet
Vladimir Oltean cd0a719fbd net: dpaa2-switch: disable the control interface on error path
Currently dpaa2_switch_takedown has a funny name and does not do the
opposite of dpaa2_switch_init, which makes probing fail when we need to
handle an -EPROBE_DEFER.

A sketch of what dpaa2_switch_init does:

	dpsw_open

	dpaa2_switch_detect_features

	dpsw_reset

	for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
		dpsw_if_disable

		dpsw_if_set_stp

		dpsw_vlan_remove_if_untagged

		dpsw_if_set_tci

		dpsw_vlan_remove_if
	}

	dpsw_vlan_remove

	alloc_ordered_workqueue

	dpsw_fdb_remove

	dpaa2_switch_ctrl_if_setup

When dpaa2_switch_takedown is called from the error path of
dpaa2_switch_probe(), the control interface, enabled by
dpaa2_switch_ctrl_if_setup from dpaa2_switch_init, remains enabled,
because dpaa2_switch_takedown does not call
dpaa2_switch_ctrl_if_teardown.

Since dpaa2_switch_probe might fail due to EPROBE_DEFER of a PHY, this
means that a second probe of the driver will happen with the control
interface directly enabled.

This will trigger a second error:

[   93.273528] fsl_dpaa2_switch dpsw.0: dpsw_ctrl_if_set_pools() failed
[   93.281966] fsl_dpaa2_switch dpsw.0: fsl_mc_driver_probe failed: -13
[   93.288323] fsl_dpaa2_switch: probe of dpsw.0 failed with error -13

Which if we investigate the /dev/dpaa2_mc_console log, we find out is
caused by:

[E, ctrl_if_set_pools:2211, DPMNG]  ctrl_if must be disabled

So make dpaa2_switch_takedown do the opposite of dpaa2_switch_init (in
reasonable limits, no reason to change STP state, re-add VLANs etc), and
rename it to something more conventional, like dpaa2_switch_teardown.

Fixes: 613c0a5810 ("staging: dpaa2-switch: enable the control interface")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20210819141755.1931423-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-08-19 10:00:59 -07:00
..
3com
8390
actions
adaptec
aeroflex net: ethernet: aeroflex: fix UAF in greth_of_remove 2021-06-19 11:45:10 -07:00
agere
alacritech
allwinner
alteon
altera
amazon Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2021-06-28 15:28:03 -07:00
amd
apm
apple
aquantia net: atlantic: fix the macsec key length 2021-06-24 12:41:13 -07:00
arc
atheros atl1c: fix Mikrotik 10/25G NIC detection 2021-07-08 13:31:43 -07:00
broadcom bnxt_en: Add missing DMA memory barriers 2021-08-16 11:31:41 +01:00
brocade
cadence
calxeda
cavium liquidio: Fix unintentional sign extension issue on left shift of u16 2021-07-15 10:27:33 -07:00
chelsio cxgb4: fix IRQ free race during driver unload 2021-07-08 13:34:13 -07:00
cirrus
cisco
cortina
davicom
dec tulip: windbond-840: Fix missing pci_disable_device() in probe and remove 2021-07-28 09:26:49 +01:00
dlink
emulex Revert "be2net: disable bh with spin_lock in be_process_mcc" 2021-06-25 11:44:16 -07:00
ezchip net: ethernet: ezchip: fix error handling 2021-06-19 11:46:00 -07:00
faraday
freescale net: dpaa2-switch: disable the control interface on error path 2021-08-19 10:00:59 -07:00
fujitsu
google gve: DQO: Remove incorrect prefetch 2021-07-02 12:06:17 -07:00
hisilicon net: hns3: change the method of obtaining default ptp cycle 2021-07-27 20:59:32 +01:00
huawei
i825xx
ibm ibmvnic: Remove the proper scrq flush 2021-07-21 08:57:41 -07:00
intel iavf: Fix ping is lost after untrusted VF had tried to change MAC 2021-08-19 09:56:15 -07:00
marvell net: switchdev: zero-initialize struct switchdev_notifier_fdb_info emitted by drivers towards the bridge 2021-08-10 13:22:57 -07:00
mediatek
mellanox net: switchdev: zero-initialize struct switchdev_notifier_fdb_info emitted by drivers towards the bridge 2021-08-10 13:22:57 -07:00
micrel net: phy: micrel: move phy reg offsets to common header 2021-06-14 12:54:43 -07:00
microchip net: switchdev: zero-initialize struct switchdev_notifier_fdb_info emitted by drivers towards the bridge 2021-08-10 13:22:57 -07:00
microsoft Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-06-29 15:45:27 -07:00
moxa net: moxa: fix UAF in moxart_mac_probe 2021-07-09 11:01:01 -07:00
mscc net: mscc: ocelot: allow forwarding from bridge ports to the tag_8021q CPU port 2021-08-18 15:34:52 -07:00
myricom
natsemi net: natsemi: Fix missing pci_disable_device() in probe and remove 2021-08-02 15:09:52 +01:00
neterion net: vxge: fix use-after-free in vxge_device_unregister 2021-08-05 07:29:50 -07:00
netronome nfp: update ethtool reporting of pauseframe control 2021-08-03 12:53:18 +01:00
ni
nvidia
nxp
oki-semi
packetengines
pasemi
pensando ionic: count csum_none when offload enabled 2021-07-23 21:57:41 +01:00
qlogic net: qlcnic: add missed unlock in qlcnic_83xx_flash_read32 2021-08-17 08:27:31 -07:00
qualcomm net: qcom/emac: fix UAF in emac_remove 2021-07-09 11:01:01 -07:00
rdc
realtek r8169: change the L0/L1 entrance latencies for RTL8106e 2021-08-07 09:33:22 +01:00
renesas ravb: Remove extra TAB 2021-07-21 22:55:59 -07:00
rocker net: switchdev: zero-initialize struct switchdev_notifier_fdb_info emitted by drivers towards the bridge 2021-08-10 13:22:57 -07:00
samsung
seeq
sfc sfc: add logs explaining XDP_TX/REDIRECT is not available 2021-07-13 10:02:41 -07:00
sgi
silan
sis sis900: Fix missing pci_disable_device() in probe and remove 2021-07-28 13:43:49 +01:00
smsc
socionext netsec: Remove rcu_read_lock() around XDP program invocation 2021-06-24 19:46:12 +02:00
stmicro net: stmmac: add est_irq_status callback function for GMAC 4.10 and 5.10 2021-07-26 12:29:44 +01:00
sun NIU: fix incorrect error return, missed in previous revert 2021-07-23 17:48:52 +01:00
synopsys
tehuti
ti net: switchdev: zero-initialize struct switchdev_notifier_fdb_info emitted by drivers towards the bridge 2021-08-10 13:22:57 -07:00
toshiba
tundra
via
wiznet net: w5100: Use devm_platform_get_and_ioremap_resource() 2021-06-10 13:53:13 -07:00
xilinx net: ll_temac: Remove left-over debug message 2021-06-21 14:44:09 -07:00
xircom
xscale net: ixp46x: fix ptp build failure 2021-07-21 09:10:24 -07:00
dnet.c
dnet.h
ec_bhf.c net: ethernet: fix potential use-after-free in ec_bhf_remove 2021-06-18 13:01:17 -07:00
ethoc.c
fealnx.c
jme.c
jme.h
Kconfig
korina.c
lantiq_etop.c
lantiq_xrx200.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-06-18 19:47:02 -07:00
Makefile