linux/drivers/net
Haiyang Zhang c04cac9a59 net: mana: Fix race of mana_hwc_post_rx_wqe and new hwc response
commit 8af174ea86 upstream.

The mana_hwc_rx_event_handler() / mana_hwc_handle_resp() calls
complete(&ctx->comp_event) before posting the wqe back. It's
possible that other callers, like mana_create_txq(), start the
next round of mana_hwc_send_request() before the posting of wqe.
And if the HW is fast enough to respond, it can hit no_wqe error
on the HW channel, then the response message is lost. The mana
driver may fail to create queues and open, because of waiting for
the HW response and timed out.
Sample dmesg:
[  528.610840] mana 39d4:00:02.0: HWC: Request timed out!
[  528.614452] mana 39d4:00:02.0: Failed to send mana message: -110, 0x0
[  528.618326] mana 39d4:00:02.0 enP14804s2: Failed to create WQ object: -110

To fix it, move posting of rx wqe before complete(&ctx->comp_event).

Cc: stable@vger.kernel.org
Fixes: ca9c54d2d6 ("net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)")
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Long Li <longli@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-09-04 13:28:19 +02: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:45:05 +01:00
bonding bonding: fix xfrm state handling when clearing active slave 2024-08-29 17:33:47 +02:00
caif tty: use u8 for flags 2023-08-11 21:12:45 +02:00
can can: mcp251xfd: tef: update workaround for erratum DS80000789E 6 of mcp2518fd 2024-08-14 13:58:43 +02:00
dsa net: dsa: microchip: fix PTP config failure when using multiple ports 2024-08-29 17:33:53 +02:00
ethernet net: mana: Fix race of mana_hwc_post_rx_wqe and new hwc response 2024-09-04 13:28:19 +02:00
fddi net: fddi: skfp: rmt: Clean up some inconsistent indenting 2023-04-11 12:46:26 +02:00
fjes fjes: fix memleaks in fjes_hw_setup 2024-01-31 16:19:05 -08:00
hamradio tty: use u8 for flags 2023-08-11 21:12:45 +02:00
hippi net: hippi: Add missing pci_disable_device() in rr_init_one() 2022-09-26 13:22:39 -07:00
hyperv hv_netvsc: Don't free decrypted memory 2024-05-17 12:02:17 +02:00
ieee802154 net: ieee802154: adf7242: Fix some potential buffer overflow in adf7242_stats_show() 2023-10-22 11:28:43 +01:00
ipa net: ipa: don't overrun IPA suspend interrupt registers 2024-03-01 13:35:08 +01:00
ipvlan ipvlan: Dont Use skb->sk in ipvlan_process_v{4,6}_outbound 2024-06-12 11:12:59 +02:00
mctp tty: use u8 for flags 2023-08-11 21:12:45 +02:00
mdio net: mdio-mux: fix C45 access returning -EIO after API change 2023-10-18 18:08:23 -07:00
netdevsim netdevsim: avoid potential loop in nsim_dev_trap_report_work() 2024-02-16 19:10:47 +01:00
pcs net: pcs: xpcs: Return EINVAL in the internal methods 2024-04-13 13:07:31 +02:00
phy net: phy: micrel: Fix the KSZ9131 MDI-X status issue 2024-08-11 12:47:21 +02:00
plip net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq() 2022-12-07 20:10:47 -08:00
ppp pppoe: Fix memory leak in pppoe_sendmsg() 2024-08-19 06:04:27 +02:00
pse-pd net: pse-pd: PSE_REGULATOR should depend on REGULATOR 2022-10-05 20:32:28 -07:00
slip tty: use u8 for flags 2023-08-11 21:12:45 +02:00
team team: Fix use-after-free when an option instance allocation fails 2023-12-20 17:02:02 +01:00
thunderbolt net: thunderbolt: Fix TCPv6 GSO checksum calculation 2023-09-15 13:45:05 +01:00
usb net: usb: qmi_wwan: fix memory leak for not ip packets 2024-08-14 13:58:39 +02:00
vmxnet3 vmxnet3: disable rx data ring on dma allocation failure 2024-06-21 14:38:15 +02:00
vxlan vxlan: Fix regression when dropping packets due to invalid src addresses 2024-06-21 14:38:17 +02:00
wan drivers/net: process the result of hdlc_open() and add call of hdlc_close() in uhdlc_close() 2023-09-22 08:19:18 +01:00
wireguard wireguard: send: annotate intentional data race in checking empty queue 2024-07-18 13:21:23 +02:00
wireless wifi: mwifiex: duplicate static structs used in driver instances 2024-09-04 13:28:19 +02:00
wwan net: wwan: iosm: Fix tainted pointer delete is case of region creation fail 2024-06-21 14:38:18 +02:00
xen-netback kthread: add kthread_stop_put 2024-06-12 11:12:52 +02:00
amt.c amt: do not use overwrapped cb area 2024-01-25 15:35:56 -08:00
bareudp.c bareudp: use ipv6_mod_enabled to check if IPv6 enabled 2022-03-16 19:16:57 -07:00
dummy.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
eql.c net: rename reference+tracking helpers 2022-06-09 21:52:55 -07:00
geneve.c geneve: Fix incorrect inner network header offset when innerprotoinherit is set 2024-06-21 14:38:33 +02:00
gtp.c gtp: pull network headers in gtp_dev_xmit() 2024-08-29 17:33:42 +02:00
ifb.c net: Remove the obsolte u64_stats_fetch_*_irq() users (drivers). 2022-10-28 20:13:54 -07:00
Kconfig netconsole: Enable compile time configuration 2023-08-17 19:25:42 -07:00
LICENSE.SRC Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
loopback.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
macsec.c macsec: Detect if Rx skb is macsec-related for offloading devices that update md_dst 2024-05-02 16:32:50 +02:00
macvlan.c macvlan: Don't propagate promisc change to lower dev in passthru 2023-11-28 17:19:54 +00:00
macvtap.c drivers: remove struct module * setting from struct class 2023-03-17 15:16:27 +01:00
Makefile net: Always descend into dsa/ folder with CONFIG_NET_DSA enabled 2024-06-12 11:12:46 +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: Remove redundant initialization owner in mhi_net_driver 2023-08-10 17:29:42 -07: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-03-27 08:08:57 +01:00
netconsole.c net: netconsole: Disable target before netpoll cleanup 2024-08-03 08:54:13 +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:49:13 +02:00
rionet.c driver core: class: remove struct class_interface * from callbacks 2023-04-03 21:42:52 +02: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:34:11 +02:00
tun.c tun: add missing verification for short frame 2024-07-27 11:34:10 +02:00
veth.c net: add netdev_lockdep_set_classes() to virtual drivers 2024-04-13 13:07:30 +02:00
virtio_net.c virtio_net: fixing XDP for fully checksummed packets handling 2024-06-27 13:49:07 +02:00
vrf.c net: Move {l,t,d}stats allocation to core and convert veth & vrf 2023-12-03 07:33:04 +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: Add missing skb_mark_for_recycle 2024-04-10 16:35:49 +02:00