Hi!
fix it by allocating a usb request from IN endpoint of eem interface, and transmit the usb request to same IN endpoint of eem interface.
drivers/usb/gadget/function/f_eem.c | 43 @@ -439,11 +449,36 @@ static int eem_unwrap(struct gether *por skb_trim(skb2, len); put_unaligned_le16(BIT(15) | BIT(11) | len, skb_push(skb2, 2));
ep = port->in_ep;req = usb_ep_alloc_request(ep, GFP_ATOMIC);if (!req) {dev_kfree_skb_any(skb2);goto next;}req->buf = kmalloc(skb2->len, GFP_KERNEL);if (!req->buf) {usb_ep_free_request(ep, req);dev_kfree_skb_any(skb2);goto next;}
This does not make sense; either both allocations can be GFP_KERNEL or both must be GFP_ATOMIC, no?
Best regards, Pavel