aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2010-06-08 19:08:49 -0400
committerMarcel Holtmann <marcel@holtmann.org>2010-07-21 13:39:08 -0400
commit6c2ea7a8f5fea67fa20e5825401b8fce5a78dbf6 (patch)
treebfcee6513e4a073c1d45607562e4d23a9cd07463 /net/bluetooth
parent625477523b4e656fbcc5ec2a8ca7a1beb39b1caf (diff)
Bluetooth: Refuse ConfigRsp with different mode
If our mode is Basic Mode we have to refuse any ConfigRsp that proposes a different mode. Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/l2cap.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index ca9bab225777..c5904082392c 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -2747,7 +2747,6 @@ static int l2cap_parse_conf_rsp(struct sock *sk, void *rsp, int len, void *data,
2747 rfc.mode != pi->mode) 2747 rfc.mode != pi->mode)
2748 return -ECONNREFUSED; 2748 return -ECONNREFUSED;
2749 2749
2750 pi->mode = rfc.mode;
2751 pi->fcs = 0; 2750 pi->fcs = 0;
2752 2751
2753 l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC, 2752 l2cap_add_conf_opt(&ptr, L2CAP_CONF_RFC,
@@ -2756,6 +2755,11 @@ static int l2cap_parse_conf_rsp(struct sock *sk, void *rsp, int len, void *data,
2756 } 2755 }
2757 } 2756 }
2758 2757
2758 if (pi->mode == L2CAP_MODE_BASIC && pi->mode != rfc.mode)
2759 return -ECONNREFUSED;
2760
2761 pi->mode = rfc.mode;
2762
2759 if (*result == L2CAP_CONF_SUCCESS) { 2763 if (*result == L2CAP_CONF_SUCCESS) {
2760 switch (rfc.mode) { 2764 switch (rfc.mode) {
2761 case L2CAP_MODE_ERTM: 2765 case L2CAP_MODE_ERTM: