mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
net: usb: asix: Fix crash on skb alloc failure
If asix_rx_fixup_internal() fails to allocate rx->ax_skb, it will return but not clear rx->size. rx points to driver private data. A later call assumes that nonzero size means ax_skb was allocated and passes a null ax_skb to skb_put. Changed allocation failure return to clear size first. Found testing board with AX88772B devices. Signed-off-by: David B. Robins <linux@davidrobins.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
74910ea49d
commit
f6194bcf03
1 changed files with 3 additions and 1 deletions
|
@ -91,8 +91,10 @@ int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
|
||||||
}
|
}
|
||||||
rx->ax_skb = netdev_alloc_skb_ip_align(dev->net,
|
rx->ax_skb = netdev_alloc_skb_ip_align(dev->net,
|
||||||
rx->size);
|
rx->size);
|
||||||
if (!rx->ax_skb)
|
if (!rx->ax_skb) {
|
||||||
|
rx->size = 0;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rx->size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) {
|
if (rx->size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) {
|
||||||
|
|
Loading…
Reference in a new issue