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

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

Bluetooth: btsdio: Free driver data on SDIO shutdown



Instead of waiting for the hdev object to get freed we now free the
private driver-internal data on SDIO shutdown. This allows us to remove
the obsolete hci-destruct callback and free our data object right away
after calling hci_unregister_dev(). The HCI-core does not call any
callbacks after this so we are never called again and can safely exit
the module.

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 d25442ba
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -289,15 +289,6 @@ static int btsdio_send_frame(struct sk_buff *skb)
	return 0;
}

static void btsdio_destruct(struct hci_dev *hdev)
{
	struct btsdio_data *data = hdev->driver_data;

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

	kfree(data);
}

static int btsdio_probe(struct sdio_func *func,
				const struct sdio_device_id *id)
{
@@ -345,7 +336,6 @@ static int btsdio_probe(struct sdio_func *func,
	hdev->close    = btsdio_close;
	hdev->flush    = btsdio_flush;
	hdev->send     = btsdio_send_frame;
	hdev->destruct = btsdio_destruct;

	hdev->owner = THIS_MODULE;

@@ -378,6 +368,7 @@ static void btsdio_remove(struct sdio_func *func)
	hci_unregister_dev(hdev);

	hci_free_dev(hdev);
	kfree(data);
}

static struct sdio_driver btsdio_driver = {