Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8381088e authored by David Herrmann's avatar David Herrmann Committed by Johan Hedberg
Browse files

Bluetooth: btusb: Free driver data on USB shutdown



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: default avatarDavid Herrmann <dh.herrmann@googlemail.com>
Acked-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 1a609a0a
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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