Bluetooth: Refactor connection parameter freeing into its own function
authorJohan Hedberg <johan.hedberg@intel.com>
Fri, 15 Aug 2014 18:06:59 +0000 (21:06 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 8 Sep 2014 17:07:53 +0000 (19:07 +0200)
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>
net/bluetooth/hci_core.c

index ed60d37ea6462320cec902acd6d6cbcc9b4374a9..0d3782ad9a5b905fe7c59e95cd0cc33ee66dd8b2 100644 (file)
@@ -3726,15 +3726,8 @@ int hci_conn_params_set(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type,
        return 0;
 }
 
-/* This function requires the caller holds hdev->lock */
-void hci_conn_params_del(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
+static void hci_conn_params_free(struct hci_conn_params *params)
 {
-       struct hci_conn_params *params;
-
-       params = hci_conn_params_lookup(hdev, addr, addr_type);
-       if (!params)
-               return;
-
        if (params->conn) {
                hci_conn_drop(params->conn);
                hci_conn_put(params->conn);
@@ -3743,6 +3736,18 @@ void hci_conn_params_del(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type)
        list_del(&params->action);
        list_del(&params->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)
+{
+       struct hci_conn_params *params;
+
+       params = hci_conn_params_lookup(hdev, addr, addr_type);
+       if (!params)
+               return;
+
+       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(&params->action);
-               list_del(&params->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);