linux-xiaomi-chiron/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 net: 3com: remove leading spaces before tabs 2021-05-19 12:17:30 -07:00
8390 net: 8390: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
actions net: ethernet: actions: Add Actions Semi Owl Ethernet MAC driver 2021-03-22 12:56:21 -07:00
adaptec treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
aeroflex net: ethernet: aeroflex: fix UAF in greth_of_remove 2021-06-19 11:45:10 -07:00
agere
alacritech
allwinner of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
alteon net: alteon: remove leading spaces before tabs 2021-05-19 12:17:30 -07:00
altera of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
amazon Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2021-06-28 15:28:03 -07:00
amd net: amd: remove leading spaces before tabs 2021-05-19 12:17:30 -07:00
apm
apple net: apple: remove leading spaces before tabs 2021-05-19 12:17:30 -07:00
aquantia net: atlantic: fix the macsec key length 2021-06-24 12:41:13 -07:00
arc net: arc: Demote non-compliant kernel-doc headers 2021-05-17 14:12:38 -07:00
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 net: brocade: bna: Fix wrong function name in comments 2021-05-17 14:12:38 -07:00
cadence net: macb: Use devm_platform_get_and_ioremap_resource() 2021-06-07 14:07:22 -07:00
calxeda net: calxeda: Fix wrong function name in comments 2021-05-17 14:12:38 -07:00
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 ethernet:enic: Fix a use after free bug in enic_hard_start_xmit 2021-05-03 13:23:00 -07:00
cortina net: gemini: Use devm_platform_get_and_ioremap_resource() 2021-06-07 13:20:00 -07:00
davicom net: davicom: Remove redundant assignment to ret 2021-04-26 12:48:30 -07:00
dec tulip: windbond-840: Fix missing pci_disable_device() in probe and remove 2021-07-28 09:26:49 +01:00
dlink net: dlink: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
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 net: ftgmac100: add missing error return code in ftgmac100_probe() 2021-05-23 16:16:24 -07:00
freescale net: dpaa2-switch: disable the control interface on error path 2021-08-19 10:00:59 -07:00
fujitsu Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-05-27 09:55:10 -07:00
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 net: huawei: hinic: Fix wrong function name in comments 2021-05-17 14:12:38 -07:00
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 net: ethernet: mtk_eth_soc: Fix packet statistics support for MT7628/88 2021-05-23 16:13:11 -07:00
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 ethernet: myri10ge: Fix missing error code in myri10ge_probe() 2021-06-01 15:54:38 -07:00
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 net: nixge: simplify code with devm platform functions 2021-06-08 16:36:57 -07:00
nvidia
nxp of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
oki-semi net: pch_gbe: remove unneeded MODULE_VERSION() call 2021-05-10 14:58:20 -07:00
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 net: r6040: Allow restarting auto-negotiation 2021-05-23 17:23:59 -07:00
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 net: samsung: sxgbe: Fix wrong function name in comments 2021-05-17 14:12:39 -07:00
seeq net: seeq: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
sfc sfc: add logs explaining XDP_TX/REDIRECT is not available 2021-07-13 10:02:41 -07:00
sgi net: sgi: ioc3-eth: check return value after calling platform_get_resource() 2021-06-09 15:24:43 -07:00
silan
sis sis900: Fix missing pci_disable_device() in probe and remove 2021-07-28 13:43:49 +01:00
smsc net: smsc: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
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 net: toshiba: fix the trailing format of some block comments 2021-03-31 14:34:09 -07:00
tundra
via net: via: Fix wrong function name in comments 2021-05-17 14:12:39 -07:00
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 net: xircom: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
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 of: net: pass the dst buffer to of_get_mac_address() 2021-04-13 14:35:02 -07:00
fealnx.c net: fealnx: remove leading spaces before tabs 2021-05-19 12:17:31 -07:00
jme.c net: jme: Replace link-change tasklet with work 2021-03-17 16:33:58 +01:00
jme.h net: jme: Replace link-change tasklet with work 2021-03-17 16:33:58 +01:00
Kconfig net: korina: Make driver COMPILE_TESTable 2021-04-19 15:58:14 -07:00
korina.c net: korina: Fix return value check in korina_probe() 2021-05-13 15:54:08 -07:00
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 net: mana: Add a driver for Microsoft Azure Network Adapter (MANA) 2021-04-19 15:24:25 -07:00