aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/rfcomm/core.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 71a72fcb2b54..52e04df323ea 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -1058,6 +1058,12 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
1058 case BT_DISCONN: 1058 case BT_DISCONN:
1059 d->state = BT_CLOSED; 1059 d->state = BT_CLOSED;
1060 __rfcomm_dlc_close(d, 0); 1060 __rfcomm_dlc_close(d, 0);
1061
1062 if (list_empty(&s->dlcs)) {
1063 s->state = BT_DISCONN;
1064 rfcomm_send_disc(s, 0);
1065 }
1066
1061 break; 1067 break;
1062 } 1068 }
1063 } else { 1069 } else {
@@ -1067,6 +1073,10 @@ static int rfcomm_recv_ua(struct rfcomm_session *s, u8 dlci)
1067 s->state = BT_CONNECTED; 1073 s->state = BT_CONNECTED;
1068 rfcomm_process_connect(s); 1074 rfcomm_process_connect(s);
1069 break; 1075 break;
1076
1077 case BT_DISCONN:
1078 rfcomm_session_put(s);
1079 break;
1070 } 1080 }
1071 } 1081 }
1072 return 0; 1082 return 0;