linux/drivers/net
Roger Quadros aea5cca681 net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns()
[ Upstream commit 4395a44acb ]

When getting the IRQ we use k3_udma_glue_tx_get_irq() which returns
negative error value on error. So not NULL check is not sufficient
to deteremine if IRQ is valid. Check that IRQ is greater then zero
to ensure it is valid.

There is no issue at probe time but at runtime user can invoke
.set_channels which results in the following call chain.
am65_cpsw_set_channels()
 am65_cpsw_nuss_update_tx_rx_chns()
  am65_cpsw_nuss_remove_tx_chns()
  am65_cpsw_nuss_init_tx_chns()

At this point if am65_cpsw_nuss_init_tx_chns() fails due to
k3_udma_glue_tx_get_irq() then tx_chn->irq will be set to a
negative value.

Then, at subsequent .set_channels with higher channel count we
will attempt to free an invalid IRQ in am65_cpsw_nuss_remove_tx_chns()
leading to a kernel warning.

The issue is present in the original commit that introduced this driver,
although there, am65_cpsw_nuss_update_tx_rx_chns() existed as
am65_cpsw_nuss_update_tx_chns().

Fixes: 93a7653031 ("net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver")
Signed-off-by: Roger Quadros <rogerq@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-02-21 13:49:06 +01:00
..
appletalk net: appletalk: remove Apple/Farallon LocalTalk PC support 2022-05-11 13:08:38 +01:00
arcnet arcnet: restoring support for multiple Sohard Arcnet cards 2023-12-13 18:39:07 +01:00
bonding bonding: Fix feature propagation of NETIF_F_GSO_ENCAP_ALL 2024-12-19 18:08:56 +01:00
caif caif_virtio: fix race between virtio_device_ready() and ndo_open() 2022-06-27 08:04:30 -04:00
can can: mcp251xfd: mcp251xfd_get_tef_len(): work around erratum DS80000789E 6. 2024-12-14 19:54:32 +01:00
dsa net: dsa: microchip: Fix LAN937X set_ageing_time function 2025-01-09 13:29:58 +01:00
ethernet net: ethernet: ti: am65-cpsw: fix freeing IRQ in am65_cpsw_nuss_remove_tx_chns() 2025-02-21 13:49:06 +01:00
fddi net: defxx: Fix missing err handling in dfx_init() 2022-12-31 13:32:26 +01:00
fjes fjes: fix memleaks in fjes_hw_setup 2024-01-31 16:17:06 -08:00
hamradio hamradio: baycom_epp: Fix return type of baycom_send_packet() 2022-12-31 13:33:00 +01:00
hippi net: hippi: Add missing pci_disable_device() in rr_init_one() 2022-09-26 13:22:39 -07:00
hyperv hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event 2024-11-01 01:56:06 +01:00
ieee802154 ieee802154: ca8210: Add missing check for kfifo_alloc() in ca8210_probe() 2025-01-17 13:34:38 +01:00
ipa net: ipa: only reset hashed tables when supported 2023-08-11 12:08:09 +02:00
ipvlan ipvlan: Dont Use skb->sk in ipvlan_process_v{4,6}_outbound 2024-06-12 11:03:59 +02:00
mctp mctp i2c: handle NULL header address 2024-11-08 16:26:46 +01:00
mdio net: mdiobus: fix an OF node reference leak 2024-12-27 13:52:55 +01:00
netdevsim netdevsim: prevent bad user input in nsim_dev_health_break_write() 2024-12-27 13:52:54 +01:00
pcs net: pcs: xpcs: Return EINVAL in the internal methods 2024-04-13 13:04:58 +02:00
phy net: sfp: change quirks for Alcatel Lucent G-010S-P 2024-12-14 19:54:42 +01:00
plip net: plip: fix break; causing plip to never transmit 2024-11-01 01:56:04 +01:00
ppp ppp: fix ppp_async_encode() illegal access 2024-10-17 15:22:23 +02:00
pse-pd net: pse-pd: PSE_REGULATOR should depend on REGULATOR 2022-10-05 20:32:28 -07:00
slip slip: make slhc_remember() more robust against malicious packets 2024-10-17 15:22:23 +02:00
team team: prevent adding a device which is already a team device lower 2025-02-21 13:49:02 +01:00
usb net: usb: qmi_wwan: add Telit FE910C04 compositions 2025-01-09 13:30:04 +01:00
vmxnet3 vmxnet3: use gro callback when UPT is enabled 2023-04-06 12:10:52 +02:00
vxlan vxlan: Handle error of rtnl_register_module(). 2024-10-17 15:22:23 +02:00
wan drivers/net: process the result of hdlc_open() and add call of hdlc_close() in uhdlc_close() 2023-10-10 22:00:40 +02:00
wireguard wireguard: send: annotate intentional data race in checking empty queue 2024-07-18 13:18:41 +02:00
wireless wifi: mt76: mt7915: fix register mapping 2025-02-21 13:49:04 +01:00
wwan net: wwan: iosm: Properly check for valid exec stage in ipc_mmio_init() 2025-01-09 13:30:02 +01:00
xen-netback net/xen-netback: prevent UAF in xenvif_flush_hash() 2024-10-17 15:21:35 +02:00
amt.c amt: do not use overwrapped cb area 2024-01-25 15:27:49 -08:00
bareudp.c bareudp: Pull inner IP header on xmit. 2024-10-17 15:20:43 +02:00
dummy.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
eql.c net: rename reference+tracking helpers 2022-06-09 21:52:55 -07:00
geneve.c geneve: do not assume mac header is set in geneve_xmit_skb() 2024-12-14 19:54:23 +01:00
gtp.c gtp: Destroy device along with udp socket's netns dismantle. 2025-01-23 17:17:10 +01:00
ifb.c net: ifb: support ethtools stats 2021-11-29 20:15:03 -08:00
Kconfig - Yu Zhao's Multi-Gen LRU patches are here. They've been under test in 2022-10-10 17:53:04 -07:00
LICENSE.SRC Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
loopback.c net: loopback: use NET_NAME_PREDICTABLE for name_assign_type 2022-11-25 09:39:05 +00:00
macsec.c macsec: Fix use-after-free while sending the offloading packet 2024-11-08 16:26:41 +01:00
macvlan.c macvlan: Don't propagate promisc change to lower dev in passthru 2023-11-28 17:07:06 +00:00
macvtap.c net: macvtap: add __init/__exit annotations to module init/exit funcs 2022-09-21 18:22:30 -07:00
Makefile net: Always descend into dsa/ folder with CONFIG_NET_DSA enabled 2024-06-12 11:03:50 +02:00
mdio.c net: mdio: Correct function name mdio45_links_ok() in comment 2021-03-29 13:42:44 -07:00
mhi_net.c net: mhi: Fix memory leak in mhi_net_dellink() 2022-11-14 11:21:02 +00:00
mii.c net: mii: make mii_ethtool_gset() return void 2021-08-19 13:06:53 +01:00
net_failover.c net/net_failover: fix txq exceeding warning 2023-04-06 12:10:46 +02:00
netconsole.c net: netconsole: Disable target before netpoll cleanup 2024-08-03 08:49:30 +02:00
nlmon.c net: don't include ethtool.h from netdevice.h 2020-11-23 17:27:04 -08:00
ntb_netdev.c net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx() from __netif_rx() 2024-07-11 12:47:11 +02:00
rionet.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
sb1000.c net: dev: Makes sure netif_rx() can be invoked in any context. 2022-02-14 13:38:35 +00:00
Space.c net: move from strlcpy with unused retval to strscpy 2022-08-31 14:11:07 -07:00
sungem_phy.c net: sungem_phy: Add of_node_put() for reference returned by of_get_parent() 2022-07-21 19:04:19 -07:00
tap.c tap: add missing verification for short frame 2024-07-27 11:32:19 +02:00
thunderbolt.c net: thunderbolt: Fix TCPv6 GSO checksum calculation 2023-10-06 14:57:04 +02:00
tun.c tun: add missing verification for short frame 2024-07-27 11:32:19 +02:00
veth.c veth: Use tstats per-CPU traffic counters 2024-12-14 19:54:54 +01:00
virtio_net.c virtio_net: Add hash_key_length check 2024-11-14 13:15:12 +01:00
vrf.c net: Move {l,t,d}stats allocation to core and convert veth & vrf 2024-12-14 19:54:54 +01:00
vsockmon.c net: don't include ethtool.h from netdevice.h 2020-11-23 17:27:04 -08:00
xen-netfront.c xen/netfront: fix crash when removing device 2024-12-19 18:08:57 +01:00