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

Commit 4307a871 authored by Eric Dumazet's avatar Eric Dumazet Committed by Greg Kroah-Hartman
Browse files

ch9200: use skb_cow_head() to deal with cloned skbs



commit 6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 upstream.

We need to ensure there is enough headroom to push extra header,
but we also need to check if we are allowed to change headers.

skb_cow_head() is the proper helper to deal with this.

Fixes: 4a476bd6 ("usbnet: New driver for QinHeng CH9200 devices")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Cc: James Hughes <james.hughes@raspberrypi.org>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f8e3d1b1
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -255,13 +255,8 @@ static struct sk_buff *ch9200_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
	tx_overhead = 0x40;

	len = skb->len;
	if (skb_headroom(skb) < tx_overhead) {
		struct sk_buff *skb2;

		skb2 = skb_copy_expand(skb, tx_overhead, 0, flags);
	if (skb_cow_head(skb, tx_overhead)) {
		dev_kfree_skb_any(skb);
		skb = skb2;
		if (!skb)
		return NULL;
	}