030-3-cx82310_eth-use-skb_cow_head-to-deal-with-cloned-skb.patch 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. From a9e840a2081ed28c2b7caa6a9a0041c950b3c37d Mon Sep 17 00:00:00 2001
  2. From: Eric Dumazet <edumazet@google.com>
  3. Date: Wed, 19 Apr 2017 09:59:22 -0700
  4. Subject: [PATCH] cx82310_eth: use skb_cow_head() to deal with cloned skbs
  5. We need to ensure there is enough headroom to push extra header,
  6. but we also need to check if we are allowed to change headers.
  7. skb_cow_head() is the proper helper to deal with this.
  8. Fixes: cc28a20e77b2 ("introduce cx82310_eth: Conexant CX82310-based ADSL router USB ethernet driver")
  9. Signed-off-by: Eric Dumazet <edumazet@google.com>
  10. Cc: James Hughes <james.hughes@raspberrypi.org>
  11. Signed-off-by: David S. Miller <davem@davemloft.net>
  12. ---
  13. drivers/net/usb/cx82310_eth.c | 7 ++-----
  14. 1 file changed, 2 insertions(+), 5 deletions(-)
  15. --- a/drivers/net/usb/cx82310_eth.c
  16. +++ b/drivers/net/usb/cx82310_eth.c
  17. @@ -293,12 +293,9 @@ static struct sk_buff *cx82310_tx_fixup(
  18. {
  19. int len = skb->len;
  20. - if (skb_headroom(skb) < 2) {
  21. - struct sk_buff *skb2 = skb_copy_expand(skb, 2, 0, flags);
  22. + if (skb_cow_head(skb, 2)) {
  23. dev_kfree_skb_any(skb);
  24. - skb = skb2;
  25. - if (!skb)
  26. - return NULL;
  27. + return NULL;
  28. }
  29. skb_push(skb, 2);