@@ -1318,7 +1318,8 @@ static void mgmt_set_powered_complete(struct hci_dev *hdev, void *data, int err)
1318
1318
struct mgmt_mode * cp ;
1319
1319
1320
1320
/* Make sure cmd still outstanding. */
1321
- if (cmd != pending_find (MGMT_OP_SET_POWERED , hdev ))
1321
+ if (err == - ECANCELED ||
1322
+ cmd != pending_find (MGMT_OP_SET_POWERED , hdev ))
1322
1323
return ;
1323
1324
1324
1325
cp = cmd -> param ;
@@ -1351,7 +1352,13 @@ static void mgmt_set_powered_complete(struct hci_dev *hdev, void *data, int err)
1351
1352
static int set_powered_sync (struct hci_dev * hdev , void * data )
1352
1353
{
1353
1354
struct mgmt_pending_cmd * cmd = data ;
1354
- struct mgmt_mode * cp = cmd -> param ;
1355
+ struct mgmt_mode * cp ;
1356
+
1357
+ /* Make sure cmd still outstanding. */
1358
+ if (cmd != pending_find (MGMT_OP_SET_POWERED , hdev ))
1359
+ return - ECANCELED ;
1360
+
1361
+ cp = cmd -> param ;
1355
1362
1356
1363
BT_DBG ("%s" , hdev -> name );
1357
1364
@@ -1511,7 +1518,8 @@ static void mgmt_set_discoverable_complete(struct hci_dev *hdev, void *data,
1511
1518
bt_dev_dbg (hdev , "err %d" , err );
1512
1519
1513
1520
/* Make sure cmd still outstanding. */
1514
- if (cmd != pending_find (MGMT_OP_SET_DISCOVERABLE , hdev ))
1521
+ if (err == - ECANCELED ||
1522
+ cmd != pending_find (MGMT_OP_SET_DISCOVERABLE , hdev ))
1515
1523
return ;
1516
1524
1517
1525
hci_dev_lock (hdev );
@@ -1685,7 +1693,8 @@ static void mgmt_set_connectable_complete(struct hci_dev *hdev, void *data,
1685
1693
bt_dev_dbg (hdev , "err %d" , err );
1686
1694
1687
1695
/* Make sure cmd still outstanding. */
1688
- if (cmd != pending_find (MGMT_OP_SET_CONNECTABLE , hdev ))
1696
+ if (err == - ECANCELED ||
1697
+ cmd != pending_find (MGMT_OP_SET_CONNECTABLE , hdev ))
1689
1698
return ;
1690
1699
1691
1700
hci_dev_lock (hdev );
@@ -1917,7 +1926,7 @@ static void set_ssp_complete(struct hci_dev *hdev, void *data, int err)
1917
1926
bool changed ;
1918
1927
1919
1928
/* Make sure cmd still outstanding. */
1920
- if (cmd != pending_find (MGMT_OP_SET_SSP , hdev ))
1929
+ if (err == - ECANCELED || cmd != pending_find (MGMT_OP_SET_SSP , hdev ))
1921
1930
return ;
1922
1931
1923
1932
if (err ) {
@@ -3841,7 +3850,8 @@ static void set_name_complete(struct hci_dev *hdev, void *data, int err)
3841
3850
3842
3851
bt_dev_dbg (hdev , "err %d" , err );
3843
3852
3844
- if (cmd != pending_find (MGMT_OP_SET_LOCAL_NAME , hdev ))
3853
+ if (err == - ECANCELED ||
3854
+ cmd != pending_find (MGMT_OP_SET_LOCAL_NAME , hdev ))
3845
3855
return ;
3846
3856
3847
3857
if (status ) {
@@ -4016,7 +4026,8 @@ static void set_default_phy_complete(struct hci_dev *hdev, void *data, int err)
4016
4026
struct sk_buff * skb = cmd -> skb ;
4017
4027
u8 status = mgmt_status (err );
4018
4028
4019
- if (cmd != pending_find (MGMT_OP_SET_PHY_CONFIGURATION , hdev ))
4029
+ if (err == - ECANCELED ||
4030
+ cmd != pending_find (MGMT_OP_SET_PHY_CONFIGURATION , hdev ))
4020
4031
return ;
4021
4032
4022
4033
if (!status ) {
@@ -5907,13 +5918,16 @@ static void start_discovery_complete(struct hci_dev *hdev, void *data, int err)
5907
5918
{
5908
5919
struct mgmt_pending_cmd * cmd = data ;
5909
5920
5921
+ bt_dev_dbg (hdev , "err %d" , err );
5922
+
5923
+ if (err == - ECANCELED )
5924
+ return ;
5925
+
5910
5926
if (cmd != pending_find (MGMT_OP_START_DISCOVERY , hdev ) &&
5911
5927
cmd != pending_find (MGMT_OP_START_LIMITED_DISCOVERY , hdev ) &&
5912
5928
cmd != pending_find (MGMT_OP_START_SERVICE_DISCOVERY , hdev ))
5913
5929
return ;
5914
5930
5915
- bt_dev_dbg (hdev , "err %d" , err );
5916
-
5917
5931
mgmt_cmd_complete (cmd -> sk , cmd -> index , cmd -> opcode , mgmt_status (err ),
5918
5932
cmd -> param , 1 );
5919
5933
mgmt_pending_remove (cmd );
@@ -6146,7 +6160,8 @@ static void stop_discovery_complete(struct hci_dev *hdev, void *data, int err)
6146
6160
{
6147
6161
struct mgmt_pending_cmd * cmd = data ;
6148
6162
6149
- if (cmd != pending_find (MGMT_OP_STOP_DISCOVERY , hdev ))
6163
+ if (err == - ECANCELED ||
6164
+ cmd != pending_find (MGMT_OP_STOP_DISCOVERY , hdev ))
6150
6165
return ;
6151
6166
6152
6167
bt_dev_dbg (hdev , "err %d" , err );
@@ -8137,7 +8152,8 @@ static void read_local_oob_ext_data_complete(struct hci_dev *hdev, void *data,
8137
8152
u8 status = mgmt_status (err );
8138
8153
u16 eir_len ;
8139
8154
8140
- if (cmd != pending_find (MGMT_OP_READ_LOCAL_OOB_EXT_DATA , hdev ))
8155
+ if (err == - ECANCELED ||
8156
+ cmd != pending_find (MGMT_OP_READ_LOCAL_OOB_EXT_DATA , hdev ))
8141
8157
return ;
8142
8158
8143
8159
if (!status ) {
0 commit comments