diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 5533e6f561b3..20d0793d3832 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -325,9 +325,11 @@ static void hci_cmd_sync_work(struct work_struct *work) int err; hci_req_sync_lock(hdev); - err = entry->func(hdev, entry->data); - if (entry->destroy) - entry->destroy(hdev, entry->data, err); + if (entry->data) { + err = entry->func(hdev, entry->data); + if (entry->destroy) + entry->destroy(hdev, entry->data, err); + } hci_req_sync_unlock(hdev); } diff --git a/net/bluetooth/mgmt_util.c b/net/bluetooth/mgmt_util.c index 0115f783bde8..eccc51bfaf2e 100644 --- a/net/bluetooth/mgmt_util.c +++ b/net/bluetooth/mgmt_util.c @@ -307,6 +307,7 @@ void mgmt_pending_free(struct mgmt_pending_cmd *cmd) sock_put(cmd->sk); kfree(cmd->param); kfree(cmd); + cmd = NULL; } void mgmt_pending_remove(struct mgmt_pending_cmd *cmd)