Message ID | 20230324204525.3630188-1-luiz.dentz@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/2] Bluetooth: hci_conn: Fix not cleaning up on LE Connection failure | expand |
Hi Luiz, https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Luiz-Augusto-von-Dentz/Bluetooth-Fix-printing-errors-if-LE-Connection-times-out/20230325-044559 base: https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git master patch link: https://lore.kernel.org/r/20230324204525.3630188-1-luiz.dentz%40gmail.com patch subject: [PATCH 1/2] Bluetooth: hci_conn: Fix not cleaning up on LE Connection failure config: riscv-randconfig-m031-20230326 (https://download.01.org/0day-ci/archive/20230327/202303272048.I3jduMCE-lkp@intel.com/config) compiler: riscv64-linux-gcc (GCC) 12.1.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Reported-by: Dan Carpenter <error27@gmail.com> | Link: https://lore.kernel.org/r/202303272048.I3jduMCE-lkp@intel.com/ smatch warnings: net/bluetooth/hci_conn.c:1202 hci_le_conn_failed() error: uninitialized symbol 'params'. vim +/params +1202 net/bluetooth/hci_conn.c 9b3628d79b46f0 Luiz Augusto von Dentz 2022-04-22 1188 static void hci_le_conn_failed(struct hci_conn *conn, u8 status) 9bb3c01fdb2201 Andre Guedes 2014-01-30 1189 { 9bb3c01fdb2201 Andre Guedes 2014-01-30 1190 struct hci_dev *hdev = conn->hdev; f161dd4122ffa7 Johan Hedberg 2014-08-15 1191 struct hci_conn_params *params; f161dd4122ffa7 Johan Hedberg 2014-08-15 1192 e15b8378a4f322 Luiz Augusto von Dentz 2023-03-24 1193 hci_connect_le_scan_cleanup(conn); 9bb3c01fdb2201 Andre Guedes 2014-01-30 1194 acb9f911ea1f82 Johan Hedberg 2015-12-03 1195 /* If the status indicates successful cancellation of 91641b79e1e153 Zheng Yongjun 2021-06-02 1196 * the attempt (i.e. Unknown Connection Id) there's no point of acb9f911ea1f82 Johan Hedberg 2015-12-03 1197 * notifying failure since we'll go back to keep trying to acb9f911ea1f82 Johan Hedberg 2015-12-03 1198 * connect. The only exception is explicit connect requests acb9f911ea1f82 Johan Hedberg 2015-12-03 1199 * where a timeout + cancel does indicate an actual failure. acb9f911ea1f82 Johan Hedberg 2015-12-03 1200 */ acb9f911ea1f82 Johan Hedberg 2015-12-03 1201 if (status != HCI_ERROR_UNKNOWN_CONN_ID || acb9f911ea1f82 Johan Hedberg 2015-12-03 @1202 (params && params->explicit_connect)) ^^^^^^ params is uninitialized acb9f911ea1f82 Johan Hedberg 2015-12-03 1203 mgmt_connect_failed(hdev, &conn->dst, conn->type, acb9f911ea1f82 Johan Hedberg 2015-12-03 1204 conn->dst_type, status); 9bb3c01fdb2201 Andre Guedes 2014-01-30 1205 abfeea476c68af Luiz Augusto von Dentz 2021-10-27 1206 /* Enable advertising in case this was a failed connection 3c857757ef6e5a Johan Hedberg 2014-03-25 1207 * attempt as a peripheral. 3c857757ef6e5a Johan Hedberg 2014-03-25 1208 */ abfeea476c68af Luiz Augusto von Dentz 2021-10-27 1209 hci_enable_advertising(hdev); 9bb3c01fdb2201 Andre Guedes 2014-01-30 1210 } 9bb3c01fdb2201 Andre Guedes 2014-01-30 1211
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 17b946f9ba31..0cd339ba7858 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c @@ -88,7 +88,16 @@ static void hci_connect_le_scan_cleanup(struct hci_conn *conn) params = hci_pend_le_action_lookup(&hdev->pend_le_conns, bdaddr, bdaddr_type); - if (!params || !params->explicit_connect) + if (!params) + return; + + if (params->conn) { + hci_conn_drop(params->conn); + hci_conn_put(params->conn); + params->conn = NULL; + } + + if (!params->explicit_connect) return; /* The connection attempt was doing scan for new RPA, and is @@ -1181,13 +1190,7 @@ static void hci_le_conn_failed(struct hci_conn *conn, u8 status) struct hci_dev *hdev = conn->hdev; struct hci_conn_params *params; - params = hci_pend_le_action_lookup(&hdev->pend_le_conns, &conn->dst, - conn->dst_type); - if (params && params->conn) { - hci_conn_drop(params->conn); - hci_conn_put(params->conn); - params->conn = NULL; - } + hci_connect_le_scan_cleanup(conn); /* If the status indicates successful cancellation of * the attempt (i.e. Unknown Connection Id) there's no point of @@ -1200,11 +1203,6 @@ static void hci_le_conn_failed(struct hci_conn *conn, u8 status) mgmt_connect_failed(hdev, &conn->dst, conn->type, conn->dst_type, status); - /* Since we may have temporarily stopped the background scanning in - * favor of connection establishment, we should restart it. - */ - hci_update_passive_scan(hdev); - /* Enable advertising in case this was a failed connection * attempt as a peripheral. */