Bluetooth: bpa10x: Free private driver data on usb shutdown
[firefly-linux-kernel-4.4.55.git] / drivers / bluetooth / bpa10x.c
index 62831603de5e91c7f4bd44774fe37647cb808795..29cd11d401e19452a22b86e925d3b5949fd897be 100644 (file)
@@ -432,17 +432,6 @@ static int bpa10x_send_frame(struct sk_buff *skb)
        return 0;
 }
 
-static void bpa10x_destruct(struct hci_dev *hdev)
-{
-       struct bpa10x_data *data = hdev->driver_data;
-
-       BT_DBG("%s", hdev->name);
-
-       kfree_skb(data->rx_skb[0]);
-       kfree_skb(data->rx_skb[1]);
-       kfree(data);
-}
-
 static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *id)
 {
        struct bpa10x_data *data;
@@ -480,7 +469,6 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
        hdev->close    = bpa10x_close;
        hdev->flush    = bpa10x_flush;
        hdev->send     = bpa10x_send_frame;
-       hdev->destruct = bpa10x_destruct;
 
        hdev->owner = THIS_MODULE;
 
@@ -512,6 +500,9 @@ static void bpa10x_disconnect(struct usb_interface *intf)
        hci_unregister_dev(data->hdev);
 
        hci_free_dev(data->hdev);
+       kfree_skb(data->rx_skb[0]);
+       kfree_skb(data->rx_skb[1]);
+       kfree(data);
 }
 
 static struct usb_driver bpa10x_driver = {