Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23834e53 authored by Ian Coolidge's avatar Ian Coolidge Committed by Felipe Balbi
Browse files

usb: gadget: g_ether: fix frame size check



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 avatarFelipe Balbi <balbi@ti.com>
parent be44f1c8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/ctype.h>
#include <linux/etherdevice.h>
#include <linux/ethtool.h>
#include <linux/if_vlan.h>

#include "u_ether.h"

@@ -295,7 +296,7 @@ static void rx_complete(struct usb_ep *ep, struct usb_request *req)
		while (skb2) {
			if (status < 0
					|| ETH_HLEN > skb2->len
					|| skb2->len > ETH_FRAME_LEN) {
					|| skb2->len > VLAN_ETH_FRAME_LEN) {
				dev->net->stats.rx_errors++;
				dev->net->stats.rx_length_errors++;
				DBG(dev, "rx length %d\n", skb2->len);