提交 d82aa8ae 编写于 作者: N Nathan Sullivan 提交者: Felipe Balbi

usb: gadget: fix eem_wrap cloned skb logic

Even if the skb is cloned, we still need a ZLP or USB will stall.
Signed-off-by: NNathan Sullivan <nathan.sullivan@ni.com>
Acked-by: NBrad Mouring <brad.mouring@ni.com>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
上级 029d97ff
...@@ -355,7 +355,6 @@ static struct sk_buff *eem_wrap(struct gether *port, struct sk_buff *skb) ...@@ -355,7 +355,6 @@ static struct sk_buff *eem_wrap(struct gether *port, struct sk_buff *skb)
int padlen = 0; int padlen = 0;
u16 len = skb->len; u16 len = skb->len;
if (!skb_cloned(skb)) {
int headroom = skb_headroom(skb); int headroom = skb_headroom(skb);
int tailroom = skb_tailroom(skb); int tailroom = skb_tailroom(skb);
...@@ -366,9 +365,8 @@ static struct sk_buff *eem_wrap(struct gether *port, struct sk_buff *skb) ...@@ -366,9 +365,8 @@ static struct sk_buff *eem_wrap(struct gether *port, struct sk_buff *skb)
padlen += 2; padlen += 2;
if ((tailroom >= (ETH_FCS_LEN + padlen)) && if ((tailroom >= (ETH_FCS_LEN + padlen)) &&
(headroom >= EEM_HLEN)) (headroom >= EEM_HLEN) && !skb_cloned(skb))
goto done; goto done;
}
skb2 = skb_copy_expand(skb, EEM_HLEN, ETH_FCS_LEN + padlen, GFP_ATOMIC); skb2 = skb_copy_expand(skb, EEM_HLEN, ETH_FCS_LEN + padlen, GFP_ATOMIC);
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册