Bluetooth: Refactor connection parameter freeing into its own function
The necessary steps for freeing connection paramaters have grown quite a bit so we can simplify the code by factoring it out into its own function. Signed-off-by: Johan Hedberg <johan.hedberg@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
f8aaf9b65a
commit
f6c6324969
|
@ -3726,6 +3726,18 @@ int hci_conn_params_set(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void hci_conn_params_free(struct hci_conn_params *params)
|
||||
{
|
||||
if (params->conn) {
|
||||
hci_conn_drop(params->conn);
|
||||
hci_conn_put(params->conn);
|
||||
}
|
||||
|
||||
list_del(¶ms->action);
|
||||
list_del(¶ms->list);
|
||||
kfree(params);
|
||||
}
|
||||
|
||||
/* This function requires the caller holds hdev->lock */
|
||||
void hci_conn_params_del(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
|
||||
{
|
||||
|
@ -3735,14 +3747,7 @@ void hci_conn_params_del(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
|
|||
if (!params)
|
||||
return;
|
||||
|
||||
if (params->conn) {
|
||||
hci_conn_drop(params->conn);
|
||||
hci_conn_put(params->conn);
|
||||
}
|
||||
|
||||
list_del(¶ms->action);
|
||||
list_del(¶ms->list);
|
||||
kfree(params);
|
||||
hci_conn_params_free(params);
|
||||
|
||||
hci_update_background_scan(hdev);
|
||||
|
||||
|
@ -3769,15 +3774,8 @@ void hci_conn_params_clear_all(struct hci_dev *hdev)
|
|||
{
|
||||
struct hci_conn_params *params, *tmp;
|
||||
|
||||
list_for_each_entry_safe(params, tmp, &hdev->le_conn_params, list) {
|
||||
if (params->conn) {
|
||||
hci_conn_drop(params->conn);
|
||||
hci_conn_put(params->conn);
|
||||
}
|
||||
list_del(¶ms->action);
|
||||
list_del(¶ms->list);
|
||||
kfree(params);
|
||||
}
|
||||
list_for_each_entry_safe(params, tmp, &hdev->le_conn_params, list)
|
||||
hci_conn_params_free(params);
|
||||
|
||||
hci_update_background_scan(hdev);
|
||||
|
||||
|
|
Loading…
Reference in New Issue