mirror_ubuntu-kernels/drivers/net/usb
Dean Jenkins 3f30b158eb asix: On RX avoid creating bad Ethernet frames
When RX Ethernet frames span multiple URB socket buffers,
the data stream may suffer a discontinuity which will cause
the current Ethernet frame in the netdev socket buffer
to be incomplete. This frame needs to be discarded instead
of appending unrelated data from the current URB socket buffer
to the Ethernet frame in the netdev socket buffer. This avoids
creating a corrupted Ethernet frame in the netdev socket buffer.

A discontinuity can occur when the previous URB socket buffer
held an incomplete Ethernet frame due to truncation or a
URB socket buffer containing the end of the Ethernet frame
was missing.

Therefore, add a sanity test for when an Ethernet frame
spans multiple URB socket buffers to check that the remaining
bytes of the currently received Ethernet frame point to
a good Data header 32-bit word of the next Ethernet
frame. Upon error, reset the remaining bytes variable to
zero and discard the current netdev socket buffer.
Assume that the Data header is located at the start of
the current socket buffer and attempt to process the next
Ethernet frame from there. This avoids unnecessarily
discarding a good URB socket buffer that contains a new
Ethernet frame.

Signed-off-by: Dean Jenkins <Dean_Jenkins@mentor.com>
Signed-off-by: Mark Craske <Mark_Craske@mentor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-10-05 06:58:43 -07:00
..
asix_common.c asix: On RX avoid creating bad Ethernet frames 2015-10-05 06:58:43 -07:00
asix_devices.c net: asix: add support for the Sitecom LN-028 USB adapter 2015-02-27 17:12:20 -05:00
asix.h asix: Rename remaining and size for clarity 2015-10-05 06:58:38 -07:00
ax88172a.c usb: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
ax88179_178a.c ax88179_178a: fix bonding failure 2014-10-20 00:53:30 -04:00
catc.c net: usb: Use eth_<foo>_addr instead of memset 2015-03-03 17:01:36 -05:00
cdc_eem.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
cdc_ether.c cdc-ether: switch to common CDC parser 2015-09-15 12:43:27 -07:00
cdc_mbim.c ipv6: remove unused neigh parameter from ndisc functions 2015-09-24 12:26:08 -07:00
cdc_ncm.c cdc-ncm: use common parser 2015-09-15 12:43:19 -07:00
cdc_subset.c cdc_subset: deal with a device that needs reset for timeout 2014-08-02 15:44:18 -07:00
cdc-phonet.c cdc-phonet: use common parser 2015-09-15 12:43:49 -07:00
ch9200.c ch9200: Convert to use module_usb_driver 2015-09-22 17:34:57 -07:00
cx82310_eth.c cx82310_eth: fix semicolon.cocci warnings 2015-03-24 14:56:02 -04:00
dm9601.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-01-18 00:55:41 -08:00
gl620a.c usbnet: remove generic hard_header_len check 2014-02-17 14:35:46 -05:00
hso.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-03-03 21:16:48 -05:00
huawei_cdc_ncm.c cdc_ncm: Add support for moving NDP to end of NCM frame 2015-07-09 14:58:31 -07:00
int51x1.c usb: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
ipheth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-06-03 23:32:12 -07:00
kalmia.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
kaweth.c usb/kaweth: use GFP_ATOMIC under spin_lock in usb_start_wait_urb() 2015-01-12 16:42:49 -05:00
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 16:08:27 -07:00
lan78xx.c lan78xx: Return 0 when lan78xx_suspend() has no error. 2015-09-28 22:28:53 -07:00
lan78xx.h lan78xx: Remove not defined MAC_CR_GMII_EN_ bit from MAC_CR. 2015-09-17 22:15:37 -07:00
lg-vl600.c net: usb: Use eth_<foo>_addr instead of memset 2015-03-03 17:01:36 -05:00
Makefile usbnet: New driver for QinHeng CH9200 devices 2015-09-21 16:16:16 -07:00
mcs7830.c usbnet: remove generic hard_header_len check 2014-02-17 14:35:46 -05:00
net1080.c usbnet: remove generic hard_header_len check 2014-02-17 14:35:46 -05:00
pegasus.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
pegasus.h
plusb.c usb: plusb: Add support for National Instruments host-to-host cable 2015-02-20 15:12:48 -05:00
qmi_wwan.c qmi-wwan: use common parser 2015-09-15 12:43:38 -07:00
r8152.c r8152: fix the runtime suspend issues 2015-09-09 20:27:54 -07:00
rndis_host.c usbnet: remove generic hard_header_len check 2014-02-17 14:35:46 -05:00
rtl8150.c usbnet: rtl8150: remove unused variable 2014-11-19 15:17:11 -05:00
sierra_net.c usb: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
smsc75xx.c usbnet: remove invalid check 2015-09-22 16:14:32 -07:00
smsc75xx.h usb: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
smsc95xx.c usbnet: remove invalid check 2015-09-22 16:14:32 -07:00
smsc95xx.h usb: Fix FSF address in file headers 2013-12-06 12:37:55 -05:00
sr9700.c net: usb: sr9700: Use 'SR_' prefix for the common register macros 2015-02-04 13:53:02 -08:00
sr9700.h net: usb: sr9700: Use 'SR_' prefix for the common register macros 2015-02-04 13:53:02 -08:00
sr9800.c usbnet: Fix tx_bytes statistic running backward in cdc_ncm 2015-03-29 12:06:45 -07:00
sr9800.h USB2NET : SR9800 : One chip USB2.0 USB2NET SR9800 Device Driver Support 2014-02-10 16:53:06 -08:00
usbnet.c CDC: common parser for extra headers 2015-09-15 12:43:11 -07:00
zaurus.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00