Bluetooth: hci_conn: Reduce hci_conn_drop() calls in two functions
authorMarkus Elfring <elfring@users.sourceforge.net>
Tue, 1 Oct 2024 07:21:25 +0000 (09:21 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 14 Nov 2024 20:27:47 +0000 (15:27 -0500)
An hci_conn_drop() call was immediately used after a null pointer check
for an hci_conn_link() call in two function implementations.
Thus call such a function only once instead directly before the checks.

This issue was transformed by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/hci_conn.c

index c4c74b8..50e65b2 100644 (file)
@@ -2224,13 +2224,9 @@ struct hci_conn *hci_bind_bis(struct hci_dev *hdev, bdaddr_t *dst,
                                          conn->iso_qos.bcast.big);
        if (parent && parent != conn) {
                link = hci_conn_link(parent, conn);
-               if (!link) {
-                       hci_conn_drop(conn);
-                       return ERR_PTR(-ENOLINK);
-               }
-
-               /* Link takes the refcount */
                hci_conn_drop(conn);
+               if (!link)
+                       return ERR_PTR(-ENOLINK);
        }
 
        return conn;
@@ -2320,15 +2316,12 @@ struct hci_conn *hci_connect_cis(struct hci_dev *hdev, bdaddr_t *dst,
        }
 
        link = hci_conn_link(le, cis);
+       hci_conn_drop(cis);
        if (!link) {
                hci_conn_drop(le);
-               hci_conn_drop(cis);
                return ERR_PTR(-ENOLINK);
        }
 
-       /* Link takes the refcount */
-       hci_conn_drop(cis);
-
        cis->state = BT_CONNECT;
 
        hci_le_create_cis_pending(hdev);