Loading drivers/usb/gadget/u_bam_data.c +6 −7 Original line number Diff line number Diff line Loading @@ -234,7 +234,6 @@ static void bam_data_free_skb_to_pool( struct sk_buff *skb) { struct bam_data_ch_info *d; unsigned long flags; if (!port) { dev_kfree_skb_any(skb); Loading @@ -246,11 +245,9 @@ static void bam_data_free_skb_to_pool( return; } spin_lock_irqsave(&port->port_lock_ul, flags); skb->len = 0; skb_reset_tail_pointer(skb); __skb_queue_tail(&d->rx_skb_idle, skb); spin_unlock_irqrestore(&port->port_lock_ul, flags); } static void bam_data_write_done(void *p, struct sk_buff *skb) Loading @@ -262,9 +259,9 @@ static void bam_data_write_done(void *p, struct sk_buff *skb) if (!skb) return; spin_lock_irqsave(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_lock_irqsave(&port->port_lock_ul, flags); d->pending_with_bam--; pr_debug("%s: port:%p d:%p pbam:%u, pno:%d\n", __func__, Loading Loading @@ -347,10 +344,7 @@ static void bam_data_start_rx(struct bam_data_port *port) ret = usb_ep_queue(ep, req, GFP_ATOMIC); spin_lock_irqsave(&port->port_lock_ul, flags); if (ret) { spin_unlock_irqrestore(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_lock_irqsave(&port->port_lock_ul, flags); pr_err("%s: rx queue failed %d\n", __func__, ret); Loading @@ -372,6 +366,7 @@ static void bam_data_epout_complete(struct usb_ep *ep, struct usb_request *req) struct sk_buff *skb = req->context; int status = req->status; int queue = 0; unsigned long flags; switch (status) { case 0: Loading @@ -381,14 +376,18 @@ static void bam_data_epout_complete(struct usb_ep *ep, struct usb_request *req) case -ECONNRESET: case -ESHUTDOWN: /* cable disconnection */ spin_lock_irqsave(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_unlock_irqrestore(&port->port_lock_ul, flags); req->buf = 0; usb_ep_free_request(ep, req); return; default: pr_err("%s: %s response error %d, %d/%d\n", __func__, ep->name, status, req->actual, req->length); spin_lock_irqsave(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_unlock_irqrestore(&port->port_lock_ul, flags); break; } Loading Loading
drivers/usb/gadget/u_bam_data.c +6 −7 Original line number Diff line number Diff line Loading @@ -234,7 +234,6 @@ static void bam_data_free_skb_to_pool( struct sk_buff *skb) { struct bam_data_ch_info *d; unsigned long flags; if (!port) { dev_kfree_skb_any(skb); Loading @@ -246,11 +245,9 @@ static void bam_data_free_skb_to_pool( return; } spin_lock_irqsave(&port->port_lock_ul, flags); skb->len = 0; skb_reset_tail_pointer(skb); __skb_queue_tail(&d->rx_skb_idle, skb); spin_unlock_irqrestore(&port->port_lock_ul, flags); } static void bam_data_write_done(void *p, struct sk_buff *skb) Loading @@ -262,9 +259,9 @@ static void bam_data_write_done(void *p, struct sk_buff *skb) if (!skb) return; spin_lock_irqsave(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_lock_irqsave(&port->port_lock_ul, flags); d->pending_with_bam--; pr_debug("%s: port:%p d:%p pbam:%u, pno:%d\n", __func__, Loading Loading @@ -347,10 +344,7 @@ static void bam_data_start_rx(struct bam_data_port *port) ret = usb_ep_queue(ep, req, GFP_ATOMIC); spin_lock_irqsave(&port->port_lock_ul, flags); if (ret) { spin_unlock_irqrestore(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_lock_irqsave(&port->port_lock_ul, flags); pr_err("%s: rx queue failed %d\n", __func__, ret); Loading @@ -372,6 +366,7 @@ static void bam_data_epout_complete(struct usb_ep *ep, struct usb_request *req) struct sk_buff *skb = req->context; int status = req->status; int queue = 0; unsigned long flags; switch (status) { case 0: Loading @@ -381,14 +376,18 @@ static void bam_data_epout_complete(struct usb_ep *ep, struct usb_request *req) case -ECONNRESET: case -ESHUTDOWN: /* cable disconnection */ spin_lock_irqsave(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_unlock_irqrestore(&port->port_lock_ul, flags); req->buf = 0; usb_ep_free_request(ep, req); return; default: pr_err("%s: %s response error %d, %d/%d\n", __func__, ep->name, status, req->actual, req->length); spin_lock_irqsave(&port->port_lock_ul, flags); bam_data_free_skb_to_pool(port, skb); spin_unlock_irqrestore(&port->port_lock_ul, flags); break; } Loading