linux/drivers/net/usb
hayeswang 7937f9e514 r8152: fix tx/rx memory overflow
The tx/rx would access the memory which is out of the desired range.
Modify the method of checking the end of the memory to avoid it.

For r8152_tx_agg_fill(), the variable remain may become negative.
However, the declaration is unsigned, so the while loop wouldn't
break when reaching the end of the desied memory. Although to change
the declaration from unsigned to signed is enough to fix it, I also
modify the checking method for safe. Replace

		remain = rx_buf_sz - sizeof(*tx_desc) -
			 (u32)((void *)tx_data - agg->head);

with

		remain = rx_buf_sz - (int)(tx_agg_align(tx_data) - agg->head);

to make sure the variable remain is always positive. Then, the
overflow wouldn't happen.

For rx_bottom(), the rx_desc should not be used to calculate the
packet length before making sure the rx_desc is in the desired range.
Change the checking to two parts. First, check the descriptor is in
the memory. The other, using the descriptor to find out the packet
length and check if the packet is in the memory.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-11-20 15:09:41 -05:00
..
asix_common.c asix: fix BUG in receive path when lowering MTU 2013-05-03 16:10:33 -04:00
asix_devices.c net: asix: Move declaration of ax88172a_info to shared header 2013-08-13 14:13:52 -07:00
asix.h net: asix: Move declaration of ax88172a_info to shared header 2013-08-13 14:13:52 -07:00
ax88172a.c net: asix: Staticise non-exported symbols 2013-08-13 14:13:52 -07:00
ax88179_178a.c ax88179_178a: Remove AX_MEDIUM_ALWAYS_ONE bit in AX_MEDIUM_STATUS_MODE register to avoid TX throttling 2013-10-25 19:26:59 -04:00
catc.c net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
cdc_eem.c net: usb: cdc_eem: Fix rx skb allocation for 802.1Q VLANs 2012-11-07 21:12:26 -05:00
cdc_ether.c net: usb: cdc_ether: use usb.h macros whenever possible 2013-09-16 21:38:00 -04:00
cdc_mbim.c net: cdc_mbim: fixup error return value 2013-11-04 15:40:16 -05:00
cdc_ncm.c net: cdc_ncm: cleanup a type issue in cdc_ncm_setup() 2013-11-14 03:10:30 -05:00
cdc_subset.c USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00
cdc-phonet.c net: cdc-phonet: Staticize usbpn_probe 2013-09-20 14:41:02 -04:00
cx82310_eth.c net: cx82310_eth: use common match macro 2012-09-03 13:51:02 -04:00
dm9601.c dm9601: fix IFF_ALLMULTI handling 2013-09-30 19:48:59 -04:00
gl620a.c USB: remove dbg() usage in USB networking drivers 2012-09-20 17:53:14 -04:00
hso.c hso: Fix stack corruption on some architectures 2013-08-21 20:47:59 -07:00
huawei_cdc_ncm.c net: huawei_cdc_ncm: Introduce the huawei_cdc_ncm driver 2013-11-05 15:21:25 -05:00
int51x1.c usbnet: int51x1: apply introduced usb command APIs 2012-10-26 03:36:51 -04:00
ipheth.c net: ipheth: Add USB ID for iPad mini 2013-07-02 00:32:56 -07:00
kalmia.c net/usb/kalmia: use %*phC to dump small buffers 2013-05-29 00:35:20 -07:00
kaweth.c kaweth: print correct debug ptr 2012-10-11 15:12:33 -04:00
Kconfig net: huawei_cdc_ncm: Introduce the huawei_cdc_ncm driver 2013-11-05 15:21:25 -05:00
lg-vl600.c USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00
Makefile net: huawei_cdc_ncm: Introduce the huawei_cdc_ncm driver 2013-11-05 15:21:25 -05:00
mcs7830.c usbnet: mcs7830: apply usbnet_link_change 2013-04-11 15:57:16 -04:00
net1080.c usbnet: net1080: apply introduced usb command APIs 2012-10-26 03:36:51 -04:00
pegasus.c usbnet: pegasus: endian bug in write_mii_word() 2013-05-03 16:10:23 -04:00
pegasus.h drivers: net: usb: pegasus: fix control urb submission 2013-04-29 13:57:50 -04:00
plusb.c usbnet: plusb: apply introduced usb command APIs 2012-10-26 03:36:51 -04:00
qmi_wwan.c net: qmi_wwan: no need to check for resume if suspend exists 2013-11-04 15:40:16 -05:00
r815x.c net/usb/r815x: change the return value for bind functions 2013-07-31 14:49:13 -07:00
r8152.c r8152: fix tx/rx memory overflow 2013-11-20 15:09:41 -05:00
rndis_host.c remove init of dev->perm_addr in drivers 2013-01-08 18:00:48 -08:00
rtl8150.c drivers: net: usb: rtl8150: concurrent URB bugfix 2013-05-20 13:42:05 -07:00
sierra_net.c sierra_net: keep status interrupt URB active 2013-05-08 13:13:29 -07:00
smsc75xx.c usbnet: do not pretend to support SG/TSO 2013-07-26 13:48:22 -07:00
smsc75xx.h smsc75xx: replace 0xffff with PHY_INT_SRC_CLEAR_ALL 2012-05-07 23:43:56 -04:00
smsc95xx.c usbnet: smsc95xx: don't recover device if suspend fails in system sleep 2013-03-25 10:55:46 -07:00
smsc95xx.h smsc95xx: support PHY wakeup source 2012-11-23 14:15:18 -05:00
sr9700.c USB2NET : SR9700 : One chip USB 1.1 USB2NET SR9700Device Driver Support 2013-09-03 22:26:03 -04:00
sr9700.h USB2NET : SR9700 : One chip USB 1.1 USB2NET SR9700Device Driver Support 2013-09-03 22:26:03 -04:00
usbnet.c usbnet: fix status interrupt urb handling 2013-11-14 02:32:37 -05:00
zaurus.c USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00