Commit 4fe5f079 authored by Ian Coolidge's avatar Ian Coolidge Committed by David S. Miller

usb: gadget: g_ether: fix frame size check for 802.1Q

Checking skb->len against ETH_FRAME_LEN assumes a 1514
ethernet frame size. With an 802.1Q VLAN header, ethernet
frame length can now be 1518. Validate frame length against that.
Signed-off-by: default avatarIan Coolidge <iancoolidge@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0dad9e94
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/if_vlan.h>
#include "u_ether.h" #include "u_ether.h"
...@@ -295,7 +296,7 @@ static void rx_complete(struct usb_ep *ep, struct usb_request *req) ...@@ -295,7 +296,7 @@ static void rx_complete(struct usb_ep *ep, struct usb_request *req)
while (skb2) { while (skb2) {
if (status < 0 if (status < 0
|| ETH_HLEN > skb2->len || ETH_HLEN > skb2->len
|| skb2->len > ETH_FRAME_LEN) { || skb2->len > VLAN_ETH_FRAME_LEN) {
dev->net->stats.rx_errors++; dev->net->stats.rx_errors++;
dev->net->stats.rx_length_errors++; dev->net->stats.rx_length_errors++;
DBG(dev, "rx length %d\n", skb2->len); DBG(dev, "rx length %d\n", skb2->len);
......
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