Skip to content

Commit

Permalink
Bluetooth: btusb: Free driver data on USB shutdown
Browse files Browse the repository at this point in the history
Instead of using the hci-destruct callback we free our private driver
data on USB shutdown. We already called hci_unregister_dev() here so the
hci core will never ever call our callbacks again except the destruct
callback.

However, there is no reason to keep our *private* driver data alive if
we get never called again and the hci-core does never touch it the data.
So we simply free it right away and set the destruct callback to NULL.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
  • Loading branch information
David Herrmann authored and Johan Hedberg committed Feb 13, 2012
1 parent 1a609a0 commit 8381088
Showing 1 changed file with 1 addition and 10 deletions.
11 changes: 1 addition & 10 deletions drivers/bluetooth/btusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -783,15 +783,6 @@ static int btusb_send_frame(struct sk_buff *skb)
return err;
}

static void btusb_destruct(struct hci_dev *hdev)
{
struct btusb_data *data = hdev->driver_data;

BT_DBG("%s", hdev->name);

kfree(data);
}

static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
{
struct btusb_data *data = hdev->driver_data;
Expand Down Expand Up @@ -1004,7 +995,6 @@ static int btusb_probe(struct usb_interface *intf,
hdev->close = btusb_close;
hdev->flush = btusb_flush;
hdev->send = btusb_send_frame;
hdev->destruct = btusb_destruct;
hdev->notify = btusb_notify;

hdev->owner = THIS_MODULE;
Expand Down Expand Up @@ -1108,6 +1098,7 @@ static void btusb_disconnect(struct usb_interface *intf)
__hci_dev_put(hdev);

hci_free_dev(hdev);
kfree(data);
}

#ifdef CONFIG_PM
Expand Down

0 comments on commit 8381088

Please sign in to comment.