Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp538267pxu; Wed, 7 Oct 2020 09:22:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKtOKNI2sHzIXNlK3UHFLhu3M0RGBW2RgZFskxgscP6J+kPhwn4a2dpd6ZobI3xVZD7+Uh X-Received: by 2002:a50:ec8e:: with SMTP id e14mr4334551edr.98.1602087720251; Wed, 07 Oct 2020 09:22:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602087720; cv=none; d=google.com; s=arc-20160816; b=Tn/ydEoBD1MNjKACF4EvC8HYUkYu141UoD+rDBJHya9Djv0wJf+nVb/YGrcuZRypb2 psFFikKPKUMTg96Y13zoQFgTxvWKTN5ggoD4vL5aAA4Q5nVVxpkxXTCQyu/kAMK74cck NeeehgDfaR8os7rgMCDDebqv5Wpt901ySRrqfpGOq/O3v0b6L3n2+55U7VpK9W+P1a9H ViERNbtANk84agMPDAhbE0KcaeQQWIbiDA/L8L4AcQmSRyB/+9a713zOjMX4CrL5mygX 9rUmHVCorRlclEH0ndhQQW31WTZmAirN3is7HC6Vny1tSLAB9+bLMl5BIf24YqStRY5D pdsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:organization :references:cc:to:from:subject:dkim-filter; bh=dDngGEcD9Obe+QLv/1LXPdI6V+U5IeI4JFopZi0V1yM=; b=W18g3m5/lirfpc/U9UoYtC9l+wtBsYdxjXBvfXKe1u3yP9yDLEn/isRoEmRA0ZddKW 00Z6Wo4UKi+LghVgI76Rbp/2VkKzbWLODmZMeAjP3uPDsSFTNRt9xoBUEoeSF9jUTWtb c5ZiZLhBxhdGZctYwc7U0ZTVneG0nAz6IYuLF1b7KsD2TFJx4J+FbiK/gvEqH4FHVJXb /y7bF7P2FBxD54VShgLPy5ln6mEVP24gPBfqVW8/uhNLAdMS+83xK4m1rmlTRcqUGrac sNG/b11mewXKt3ZTFUQ5OgMvmy8ARlom9G0N5+T6GnLKEiVwMeDAJscxABaknfu6kIaz Yorw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=omprussia.ru Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p19si508173edw.542.2020.10.07.09.20.47; Wed, 07 Oct 2020 09:22:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=omprussia.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728996AbgJGQDO (ORCPT + 99 others); Wed, 7 Oct 2020 12:03:14 -0400 Received: from mxout04.lancloud.ru ([89.108.124.63]:57036 "EHLO mxout04.lancloud.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728989AbgJGQDN (ORCPT ); Wed, 7 Oct 2020 12:03:13 -0400 X-Greylist: delayed 467 seconds by postgrey-1.27 at vger.kernel.org; Wed, 07 Oct 2020 12:03:08 EDT Received: from LanCloud DKIM-Filter: OpenDKIM Filter v2.11.0 mxout04.lancloud.ru 589BC2153C10 Received: from LanCloud Received: from LanCloud Received: from LanCloud Subject: [PATCH 2/2] bluetooth: hci_event: reduce indentation levels From: Sergey Shtylyov To: Marcel Holtmann , Johan Hedberg , CC: "David S. Miller" , Jakub Kicinski , References: Organization: Open Mobile Platform, LLC Message-ID: <46cf8b72-978e-1b63-85b4-5003e5d8bf73@omprussia.ru> Date: Wed, 7 Oct 2020 18:55:19 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [213.87.153.155] X-ClientProxiedBy: LFEXT01.lancloud.ru (fd00:f066::141) To LFEX1908.lancloud.ru (fd00:f066::208) Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Reduce the indentation levels in the HCI driver, mostly by using *goto* in the error paths (and also by collapsing "double" *if* statements into the "singular" ones). This makes the coding style more consistent across the HCI driver. Signed-off-by: Sergey Shtylyov --- net/bluetooth/hci_event.c | 316 ++++++++++++++++++++++++---------------------- 1 file changed, 170 insertions(+), 146 deletions(-) Index: bluetooth-next/net/bluetooth/hci_event.c =================================================================== --- bluetooth-next.orig/net/bluetooth/hci_event.c +++ bluetooth-next/net/bluetooth/hci_event.c @@ -1861,13 +1861,11 @@ static void hci_cs_create_conn(struct hc } else conn->state = BT_CONNECT2; } - } else { - if (!conn) { - conn = hci_conn_add(hdev, ACL_LINK, &cp->bdaddr, - HCI_ROLE_MASTER); - if (!conn) - bt_dev_err(hdev, "no memory for new connection"); - } + } else if (!conn) { + conn = hci_conn_add(hdev, ACL_LINK, &cp->bdaddr, + HCI_ROLE_MASTER); + if (!conn) + bt_dev_err(hdev, "no memory for new connection"); } hci_dev_unlock(hdev); @@ -1895,16 +1893,19 @@ static void hci_cs_add_sco(struct hci_de hci_dev_lock(hdev); acl = hci_conn_hash_lookup_handle(hdev, handle); - if (acl) { - sco = acl->link; - if (sco) { - sco->state = BT_CLOSED; + if (!acl) + goto unlock; - hci_connect_cfm(sco, status); - hci_conn_del(sco); - } - } + sco = acl->link; + if (!sco) + goto unlock; + sco->state = BT_CLOSED; + + hci_connect_cfm(sco, status); + hci_conn_del(sco); + +unlock: hci_dev_unlock(hdev); } @@ -1925,13 +1926,13 @@ static void hci_cs_auth_requested(struct hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - if (conn->state == BT_CONFIG) { - hci_connect_cfm(conn, status); - hci_conn_drop(conn); - } - } + if (!conn || conn->state != BT_CONFIG) + goto unlock; + + hci_connect_cfm(conn, status); + hci_conn_drop(conn); +unlock: hci_dev_unlock(hdev); } @@ -1952,13 +1953,13 @@ static void hci_cs_set_conn_encrypt(stru hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - if (conn->state == BT_CONFIG) { - hci_connect_cfm(conn, status); - hci_conn_drop(conn); - } - } + if (!conn || conn->state != BT_CONFIG) + goto unlock; + hci_connect_cfm(conn, status); + hci_conn_drop(conn); + +unlock: hci_dev_unlock(hdev); } @@ -2128,13 +2129,13 @@ static void hci_cs_read_remote_features( hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - if (conn->state == BT_CONFIG) { - hci_connect_cfm(conn, status); - hci_conn_drop(conn); - } - } + if (!conn || conn->state != BT_CONFIG) + goto unlock; + hci_connect_cfm(conn, status); + hci_conn_drop(conn); + +unlock: hci_dev_unlock(hdev); } @@ -2155,13 +2156,13 @@ static void hci_cs_read_remote_ext_featu hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - if (conn->state == BT_CONFIG) { - hci_connect_cfm(conn, status); - hci_conn_drop(conn); - } - } + if (!conn || conn->state != BT_CONFIG) + goto unlock; + + hci_connect_cfm(conn, status); + hci_conn_drop(conn); +unlock: hci_dev_unlock(hdev); } @@ -2187,16 +2188,19 @@ static void hci_cs_setup_sync_conn(struc hci_dev_lock(hdev); acl = hci_conn_hash_lookup_handle(hdev, handle); - if (acl) { - sco = acl->link; - if (sco) { - sco->state = BT_CLOSED; + if (!acl) + goto unlock; - hci_connect_cfm(sco, status); - hci_conn_del(sco); - } - } + sco = acl->link; + if (!sco) + goto unlock; + + sco->state = BT_CLOSED; + + hci_connect_cfm(sco, status); + hci_conn_del(sco); +unlock: hci_dev_unlock(hdev); } @@ -2217,13 +2221,15 @@ static void hci_cs_sniff_mode(struct hci hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags); + if (!conn) + goto unlock; - if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags)) - hci_sco_setup(conn, status); - } + clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags); + + if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags)) + hci_sco_setup(conn, status); +unlock: hci_dev_unlock(hdev); } @@ -2244,13 +2250,14 @@ static void hci_cs_exit_sniff_mode(struc hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags); + if (!conn) + goto unlock; - if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags)) - hci_sco_setup(conn, status); - } + clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags); + if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags)) + hci_sco_setup(conn, status); +unlock: hci_dev_unlock(hdev); } @@ -2406,13 +2413,13 @@ static void hci_cs_le_read_remote_featur hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(cp->handle)); - if (conn) { - if (conn->state == BT_CONFIG) { - hci_connect_cfm(conn, status); - hci_conn_drop(conn); - } - } + if (!conn || conn->state != BT_CONFIG) + goto unlock; + + hci_connect_cfm(conn, status); + hci_conn_drop(conn); +unlock: hci_dev_unlock(hdev); } @@ -3171,15 +3178,17 @@ static void hci_change_link_key_complete hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle)); - if (conn) { - if (!ev->status) - set_bit(HCI_CONN_SECURE, &conn->flags); + if (!conn) + goto unlock; - clear_bit(HCI_CONN_AUTH_PEND, &conn->flags); + if (!ev->status) + set_bit(HCI_CONN_SECURE, &conn->flags); - hci_key_change_cfm(conn, ev->status); - } + clear_bit(HCI_CONN_AUTH_PEND, &conn->flags); + + hci_key_change_cfm(conn, ev->status); +unlock: hci_dev_unlock(hdev); } @@ -3737,15 +3746,17 @@ static void hci_role_change_evt(struct h hci_dev_lock(hdev); conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr); - if (conn) { - if (!ev->status) - conn->role = ev->role; + if (!conn) + goto unlock; - clear_bit(HCI_CONN_RSWITCH_PEND, &conn->flags); + if (!ev->status) + conn->role = ev->role; - hci_role_switch_cfm(conn, ev->status, ev->role); - } + clear_bit(HCI_CONN_RSWITCH_PEND, &conn->flags); + + hci_role_switch_cfm(conn, ev->status, ev->role); +unlock: hci_dev_unlock(hdev); } @@ -3898,21 +3909,22 @@ static void hci_mode_change_evt(struct h hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle)); - if (conn) { - conn->mode = ev->mode; + if (!conn) + goto unlock; - if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE_PEND, - &conn->flags)) { - if (conn->mode == HCI_CM_ACTIVE) - set_bit(HCI_CONN_POWER_SAVE, &conn->flags); - else - clear_bit(HCI_CONN_POWER_SAVE, &conn->flags); - } + conn->mode = ev->mode; - if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags)) - hci_sco_setup(conn, ev->status); + if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags)) { + if (conn->mode == HCI_CM_ACTIVE) + set_bit(HCI_CONN_POWER_SAVE, &conn->flags); + else + clear_bit(HCI_CONN_POWER_SAVE, &conn->flags); } + if (test_and_clear_bit(HCI_CONN_SCO_SETUP_PEND, &conn->flags)) + hci_sco_setup(conn, ev->status); + +unlock: hci_dev_unlock(hdev); } @@ -4011,27 +4023,29 @@ static void hci_link_key_request_evt(str &ev->bdaddr); conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &ev->bdaddr); - if (conn) { - clear_bit(HCI_CONN_NEW_LINK_KEY, &conn->flags); + if (!conn) + goto found; - if ((key->type == HCI_LK_UNAUTH_COMBINATION_P192 || - key->type == HCI_LK_UNAUTH_COMBINATION_P256) && - conn->auth_type != 0xff && (conn->auth_type & 0x01)) { - BT_DBG("%s ignoring unauthenticated key", hdev->name); - goto not_found; - } + clear_bit(HCI_CONN_NEW_LINK_KEY, &conn->flags); - if (key->type == HCI_LK_COMBINATION && key->pin_len < 16 && - (conn->pending_sec_level == BT_SECURITY_HIGH || - conn->pending_sec_level == BT_SECURITY_FIPS)) { - BT_DBG("%s ignoring key unauthenticated for high security", - hdev->name); - goto not_found; - } + if ((key->type == HCI_LK_UNAUTH_COMBINATION_P192 || + key->type == HCI_LK_UNAUTH_COMBINATION_P256) && + conn->auth_type != 0xff && (conn->auth_type & 0x01)) { + BT_DBG("%s ignoring unauthenticated key", hdev->name); + goto not_found; + } - conn_set_key(conn, key->type, key->pin_len); + if (key->type == HCI_LK_COMBINATION && key->pin_len < 16 && + (conn->pending_sec_level == BT_SECURITY_HIGH || + conn->pending_sec_level == BT_SECURITY_FIPS)) { + BT_DBG("%s ignoring key unauthenticated for high security", + hdev->name); + goto not_found; } + conn_set_key(conn, key->type, key->pin_len); + +found: bacpy(&cp.bdaddr, &ev->bdaddr); memcpy(cp.link_key, key->val, HCI_LINK_KEY_SIZE); @@ -4155,11 +4169,13 @@ static void hci_pscan_rep_mode_evt(struc hci_dev_lock(hdev); ie = hci_inquiry_cache_lookup(hdev, &ev->bdaddr); - if (ie) { - ie->data.pscan_rep_mode = ev->pscan_rep_mode; - ie->timestamp = jiffies; - } + if (!ie) + goto unlock; + + ie->data.pscan_rep_mode = ev->pscan_rep_mode; + ie->timestamp = jiffies; +unlock: hci_dev_unlock(hdev); } @@ -5041,11 +5057,13 @@ static void hci_disconn_phylink_complete hci_dev_lock(hdev); hcon = hci_conn_hash_lookup_handle(hdev, ev->phy_handle); - if (hcon) { - hcon->state = BT_CLOSED; - hci_conn_del(hcon); - } + if (!hcon) + goto unlock; + + hcon->state = BT_CLOSED; + hci_conn_del(hcon); +unlock: hci_dev_unlock(hdev); } #endif @@ -5198,14 +5216,16 @@ static void le_conn_complete_evt(struct params = hci_pend_le_action_lookup(&hdev->pend_le_conns, &conn->dst, conn->dst_type); - if (params) { - list_del_init(¶ms->action); - if (params->conn) { - hci_conn_drop(params->conn); - hci_conn_put(params->conn); - params->conn = NULL; - } - } + if (!params) + goto unlock; + + list_del_init(¶ms->action); + if (!params->conn) + goto unlock; + + hci_conn_drop(params->conn); + hci_conn_put(params->conn); + params->conn = NULL; unlock: hci_update_background_scan(hdev); @@ -5286,12 +5306,14 @@ static void hci_le_conn_update_complete_ hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle)); - if (conn) { - conn->le_conn_interval = le16_to_cpu(ev->interval); - conn->le_conn_latency = le16_to_cpu(ev->latency); - conn->le_supv_timeout = le16_to_cpu(ev->supervision_timeout); - } + if (!conn) + goto unlock; + conn->le_conn_interval = le16_to_cpu(ev->interval); + conn->le_conn_latency = le16_to_cpu(ev->latency); + conn->le_supv_timeout = le16_to_cpu(ev->supervision_timeout); + +unlock: hci_dev_unlock(hdev); } @@ -5700,34 +5722,36 @@ static void hci_le_remote_feat_complete_ hci_dev_lock(hdev); conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle)); - if (conn) { - if (!ev->status) - memcpy(conn->features[0], ev->features, 8); + if (!conn) + goto unlock; - if (conn->state == BT_CONFIG) { - __u8 status; + if (!ev->status) + memcpy(conn->features[0], ev->features, 8); - /* If the local controller supports slave-initiated - * features exchange, but the remote controller does - * not, then it is possible that the error code 0x1a - * for unsupported remote feature gets returned. - * - * In this specific case, allow the connection to - * transition into connected state and mark it as - * successful. - */ - if ((hdev->le_features[0] & HCI_LE_SLAVE_FEATURES) && - !conn->out && ev->status == 0x1a) - status = 0x00; - else - status = ev->status; + if (conn->state == BT_CONFIG) { + __u8 status; - conn->state = BT_CONNECTED; - hci_connect_cfm(conn, status); - hci_conn_drop(conn); - } + /* If the local controller supports slave-initiated + * features exchange, but the remote controller does + * not, then it is possible that the error code 0x1a + * for unsupported remote feature gets returned. + * + * In this specific case, allow the connection to + * transition into connected state and mark it as + * successful. + */ + if ((hdev->le_features[0] & HCI_LE_SLAVE_FEATURES) && + !conn->out && ev->status == 0x1a) + status = 0x00; + else + status = ev->status; + + conn->state = BT_CONNECTED; + hci_connect_cfm(conn, status); + hci_conn_drop(conn); } +unlock: hci_dev_unlock(hdev); }