aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_conn.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bluetooth/hci_conn.c')
-rw-r--r--net/bluetooth/hci_conn.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index cb04a4e3c829..aaa7e388d026 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -1291,6 +1291,11 @@ struct hci_chan *hci_chan_create(struct hci_conn *conn)
1291 1291
1292 BT_DBG("%s hcon %p", hdev->name, conn); 1292 BT_DBG("%s hcon %p", hdev->name, conn);
1293 1293
1294 if (test_bit(HCI_CONN_DROP, &conn->flags)) {
1295 BT_DBG("Refusing to create new hci_chan");
1296 return NULL;
1297 }
1298
1294 chan = kzalloc(sizeof(*chan), GFP_KERNEL); 1299 chan = kzalloc(sizeof(*chan), GFP_KERNEL);
1295 if (!chan) 1300 if (!chan)
1296 return NULL; 1301 return NULL;
@@ -1318,6 +1323,7 @@ void hci_chan_del(struct hci_chan *chan)
1318 1323
1319 /* Force the connection to be immediately dropped */ 1324 /* Force the connection to be immediately dropped */
1320 conn->disc_timeout = 0; 1325 conn->disc_timeout = 0;
1326 set_bit(HCI_CONN_DROP, &conn->flags);
1321 1327
1322 hci_conn_drop(conn); 1328 hci_conn_drop(conn);
1323 hci_conn_put(conn); 1329 hci_conn_put(conn);