@@ -2265,6 +2265,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)
22652265 skb = bt_skb_alloc (HCI_WMT_MAX_EVENT_SIZE , GFP_ATOMIC );
22662266 if (!skb ) {
22672267 hdev -> stat .err_rx ++ ;
2268+ kfree (urb -> setup_packet );
22682269 return ;
22692270 }
22702271
@@ -2285,6 +2286,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)
22852286 data -> evt_skb = skb_clone (skb , GFP_ATOMIC );
22862287 if (!data -> evt_skb ) {
22872288 kfree_skb (skb );
2289+ kfree (urb -> setup_packet );
22882290 return ;
22892291 }
22902292 }
@@ -2293,6 +2295,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)
22932295 if (err < 0 ) {
22942296 kfree_skb (data -> evt_skb );
22952297 data -> evt_skb = NULL ;
2298+ kfree (urb -> setup_packet );
22962299 return ;
22972300 }
22982301
@@ -2303,6 +2306,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)
23032306 wake_up_bit (& data -> flags ,
23042307 BTUSB_TX_WAIT_VND_EVT );
23052308 }
2309+ kfree (urb -> setup_packet );
23062310 return ;
23072311 } else if (urb -> status == - ENOENT ) {
23082312 /* Avoid suspend failed when usb_kill_urb */
@@ -2323,6 +2327,7 @@ static void btusb_mtk_wmt_recv(struct urb *urb)
23232327 usb_anchor_urb (urb , & data -> ctrl_anchor );
23242328 err = usb_submit_urb (urb , GFP_ATOMIC );
23252329 if (err < 0 ) {
2330+ kfree (urb -> setup_packet );
23262331 /* -EPERM: urb is being killed;
23272332 * -ENODEV: device got disconnected
23282333 */
0 commit comments