Commit 3e4336a6 authored by Jason A. Donenfeld's avatar Jason A. Donenfeld Committed by David S. Miller

usbnet: avoid integer overflow in start_xmit

transfer_buffer_length is of type u32. It's therefore wrong to assign it
to a signed integer. This patch avoids the overflow.

It's worth noting that entry->length here is a long; perhaps it would be
beneficial at somepoint to change this to be unsigned as well, if
nothing else relies on its signedness for error conditions or the like.
Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 240b23c4
...@@ -1285,7 +1285,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb, ...@@ -1285,7 +1285,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
struct net_device *net) struct net_device *net)
{ {
struct usbnet *dev = netdev_priv(net); struct usbnet *dev = netdev_priv(net);
int length; unsigned int length;
struct urb *urb = NULL; struct urb *urb = NULL;
struct skb_data *entry; struct skb_data *entry;
struct driver_info *info = dev->driver_info; struct driver_info *info = dev->driver_info;
...@@ -1413,7 +1413,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb, ...@@ -1413,7 +1413,7 @@ netdev_tx_t usbnet_start_xmit (struct sk_buff *skb,
} }
} else } else
netif_dbg(dev, tx_queued, dev->net, netif_dbg(dev, tx_queued, dev->net,
"> tx, len %d, type 0x%x\n", length, skb->protocol); "> tx, len %u, type 0x%x\n", length, skb->protocol);
#ifdef CONFIG_PM #ifdef CONFIG_PM
deferred: deferred:
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment