diff options
| -rw-r--r-- | net/bluetooth/l2cap_core.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 43ba91c440bc..fc6615d59165 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
| @@ -3363,9 +3363,10 @@ static int l2cap_parse_conf_req(struct l2cap_chan *chan, void *data, size_t data | |||
| 3363 | break; | 3363 | break; |
| 3364 | 3364 | ||
| 3365 | case L2CAP_CONF_EFS: | 3365 | case L2CAP_CONF_EFS: |
| 3366 | remote_efs = 1; | 3366 | if (olen == sizeof(efs)) { |
| 3367 | if (olen == sizeof(efs)) | 3367 | remote_efs = 1; |
| 3368 | memcpy(&efs, (void *) val, olen); | 3368 | memcpy(&efs, (void *) val, olen); |
| 3369 | } | ||
| 3369 | break; | 3370 | break; |
| 3370 | 3371 | ||
| 3371 | case L2CAP_CONF_EWS: | 3372 | case L2CAP_CONF_EWS: |
| @@ -3584,16 +3585,17 @@ static int l2cap_parse_conf_rsp(struct l2cap_chan *chan, void *rsp, int len, | |||
| 3584 | break; | 3585 | break; |
| 3585 | 3586 | ||
| 3586 | case L2CAP_CONF_EFS: | 3587 | case L2CAP_CONF_EFS: |
| 3587 | if (olen == sizeof(efs)) | 3588 | if (olen == sizeof(efs)) { |
| 3588 | memcpy(&efs, (void *)val, olen); | 3589 | memcpy(&efs, (void *)val, olen); |
| 3589 | 3590 | ||
| 3590 | if (chan->local_stype != L2CAP_SERV_NOTRAFIC && | 3591 | if (chan->local_stype != L2CAP_SERV_NOTRAFIC && |
| 3591 | efs.stype != L2CAP_SERV_NOTRAFIC && | 3592 | efs.stype != L2CAP_SERV_NOTRAFIC && |
| 3592 | efs.stype != chan->local_stype) | 3593 | efs.stype != chan->local_stype) |
| 3593 | return -ECONNREFUSED; | 3594 | return -ECONNREFUSED; |
| 3594 | 3595 | ||
| 3595 | l2cap_add_conf_opt(&ptr, L2CAP_CONF_EFS, sizeof(efs), | 3596 | l2cap_add_conf_opt(&ptr, L2CAP_CONF_EFS, sizeof(efs), |
| 3596 | (unsigned long) &efs, endptr - ptr); | 3597 | (unsigned long) &efs, endptr - ptr); |
| 3598 | } | ||
| 3597 | break; | 3599 | break; |
| 3598 | 3600 | ||
| 3599 | case L2CAP_CONF_FCS: | 3601 | case L2CAP_CONF_FCS: |
