linux/drivers/net/ethernet/sun
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
..
cassini.c drivers/net: Convert remaining uses of pr_warning to pr_warn 2014-09-09 20:37:08 -07:00
cassini.h ethernet: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
Kconfig Merge branch 'akpm' (incoming from Andrew) 2013-02-21 17:38:49 -08:00
Makefile
niu.c drivers/net: Convert remaining uses of pr_warning to pr_warn 2014-09-09 20:37:08 -07:00
niu.h
sunbmac.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
sunbmac.h
sungem.c sungem: Fix global namespace pollution of phy accessors. 2014-08-27 23:07:12 -07:00
sungem.h
sunhme.c sunhme: Add DMA mapping error checks. 2014-11-01 00:23:46 -04:00
sunhme.h
sunqe.c net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
sunqe.h
sunvnet.c sunvnet: Fix race between vnet_start_xmit() and vnet_ack() 2014-11-10 21:05:36 -05:00
sunvnet.h sunvnet: Use one Tx queue per vnet_port 2014-10-30 19:56:23 -04:00