hci_dev_lock(hdev);
 
        conn = hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT);
-
-       if (ev->status) {
-               if (!conn)
-                       goto unlock;
-
-               mgmt_connect_failed(hdev, &conn->dst, conn->type,
-                                   conn->dst_type, ev->status);
-               hci_proto_connect_cfm(conn, ev->status);
-               conn->state = BT_CLOSED;
-               hci_conn_del(conn);
-               goto unlock;
-       }
-
        if (!conn) {
                conn = hci_conn_add(hdev, LE_LINK, &ev->bdaddr);
                if (!conn) {
                }
        }
 
+       if (ev->status) {
+               mgmt_connect_failed(hdev, &conn->dst, conn->type,
+                                   conn->dst_type, ev->status);
+               hci_proto_connect_cfm(conn, ev->status);
+               conn->state = BT_CLOSED;
+               hci_conn_del(conn);
+               goto unlock;
+       }
+
        if (!test_and_set_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))
                mgmt_device_connected(hdev, &ev->bdaddr, conn->type,
                                      conn->dst_type, 0, NULL, 0, NULL);