forked from luck/tmp_suning_uos_patched
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: David Herrmann <dh.herrmann@googlemail.com> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
parent
d25442ba4b
commit
dabbaab394
@ -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 = {
|
||||
|
Loading…
Reference in New Issue
Block a user