linux/drivers/net
Sowmini Varadhan b0cffed543 sunvnet: Fix race between vnet_start_xmit() and vnet_ack()
When vnet_start_xmit() is concurrent with vnet_ack(), we may
have a race that looks like:

    thread 1                              thread 2
    vnet_start_xmit                       vnet_event_napi -> vnet_rx

__vnet_tx_trigger for some desc X
at this point dr->prod == X
                                        peer sends back a stopped ack for X
                                        we process X, but X == dr->prod
                                        so we bail out in vnet_ack with
                                        !idx_is_pending
update dr->prod

As a result of the fact that we never processed the stopped ack for X,
the Tx path is led to incorrectly believe that the peer is still
"started" and reading, but the peer has stopped reading, which will
ultimately end in flow-control assertions.

The fix is to synchronize the above 2 paths  on the netif_tx_lock.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-10 21:05:36 -05:00
..
appletalk net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
arcnet ARCNET: enable eae arcnet card support 2014-09-29 14:36:26 -04:00
bonding net: Move bonding headers under include/net 2014-11-10 13:27:49 -05:00
caif
can drivers/net/can/Kconfig: Let CAN_AT91 depend on HAS_IOMEM 2014-10-03 15:52:03 -07:00
cris
dsa dsa: mv88e6171: Add support for mv88e6172 2014-11-06 15:08:05 -05:00
ethernet sunvnet: Fix race between vnet_start_xmit() and vnet_ack() 2014-11-10 21:05:36 -05:00
fddi defxx: DEFEA's ESIC port I/O decoding cleanup 2014-09-28 17:22:10 -04:00
hamradio hamradio: 6pack: remove unnecessary check 2014-11-03 15:34:31 -05:00
hippi
hyperv hyperv: Add IPv6 into the hash computation for vRSS 2014-10-30 16:10:04 -04:00
ieee802154 at86rf230: deliver with checksum 2014-10-29 23:07:46 +01:00
irda drivers/net/irda/Kconfig: Let SH_IRDA depend on HAS_IOMEM 2014-10-03 15:52:04 -07:00
phy amd-xgbe-phy: Let AMD_XGBE_PHY depend on HAS_IOMEM 2014-11-05 21:50:13 -05:00
plip
ppp net: Add and use skb_copy_datagram_msg() helper. 2014-11-05 16:46:40 -05:00
slip
team Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-08 16:22:22 -04:00
usb cdc-ether: implement MULTICAST flag on the device 2014-11-07 15:17:45 -05:00
vmxnet3 PCI changes for the v3.18 merge window: 2014-10-09 15:03:49 -04:00
wan net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
wimax kbuild: remove unnecessary "obj- := dummy.o" trick 2014-10-02 13:55:02 +02:00
wireless Merge tag 'master-2014-11-04' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-11-10 14:34:59 -05:00
xen-netback xen-netback: remove unconditional __pskb_pull_tail() in guest Tx path 2014-11-06 14:40:18 -05:00
dummy.c
eql.c net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
ifb.c net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
Kconfig drivers/net: macvtap and tun depend on INET 2014-10-30 23:50:26 -04:00
LICENSE.SRC
loopback.c net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
macvlan.c macvlan: fix a race on port dismantle and possible skb leaks 2014-10-25 16:24:02 -04:00
macvtap.c macvtap: Use iovec iterators 2014-11-07 12:13:34 -05:00
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c tun: Use iovec iterators 2014-11-07 12:13:34 -05:00
veth.c
virtio_net.c drivers/net: Disable UFO through virtio 2014-10-30 20:01:18 -04:00
vxlan.c vxlan: Fix to enable UDP checksums on interface 2014-11-06 21:59:55 -05:00
xen-netfront.c xen-netfront: always keep the Rx ring full of requests 2014-10-26 22:21:32 -04:00