forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/nfc/nfcmrvl/usb.c
....@@ -401,13 +401,25 @@
401401 int err;
402402
403403 while ((urb = usb_get_from_anchor(&drv_data->deferred))) {
404
+ usb_anchor_urb(urb, &drv_data->tx_anchor);
405
+
404406 err = usb_submit_urb(urb, GFP_ATOMIC);
405
- if (err)
407
+ if (err) {
408
+ kfree(urb->setup_packet);
409
+ usb_unanchor_urb(urb);
410
+ usb_free_urb(urb);
406411 break;
412
+ }
407413
408414 drv_data->tx_in_flight++;
415
+ usb_free_urb(urb);
409416 }
410
- usb_scuttle_anchored_urbs(&drv_data->deferred);
417
+
418
+ /* Cleanup the rest deferred urbs. */
419
+ while ((urb = usb_get_from_anchor(&drv_data->deferred))) {
420
+ kfree(urb->setup_packet);
421
+ usb_free_urb(urb);
422
+ }
411423 }
412424
413425 static int nfcmrvl_resume(struct usb_interface *intf)