diff options
Diffstat (limited to 'net/bluetooth/rfcomm/sock.c')
-rw-r--r-- | net/bluetooth/rfcomm/sock.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index 072938dc527d..df17276eb32b 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c | |||
@@ -87,7 +87,8 @@ static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err) | |||
87 | parent->sk_data_ready(parent, 0); | 87 | parent->sk_data_ready(parent, 0); |
88 | } else { | 88 | } else { |
89 | if (d->state == BT_CONNECTED) | 89 | if (d->state == BT_CONNECTED) |
90 | rfcomm_session_getaddr(d->session, &bt_sk(sk)->src, NULL); | 90 | rfcomm_session_getaddr(d->session, |
91 | &rfcomm_pi(sk)->src, NULL); | ||
91 | sk->sk_state_change(sk); | 92 | sk->sk_state_change(sk); |
92 | } | 93 | } |
93 | 94 | ||
@@ -110,7 +111,7 @@ static struct sock *__rfcomm_get_sock_by_addr(u8 channel, bdaddr_t *src) | |||
110 | 111 | ||
111 | sk_for_each(sk, &rfcomm_sk_list.head) { | 112 | sk_for_each(sk, &rfcomm_sk_list.head) { |
112 | if (rfcomm_pi(sk)->channel == channel && | 113 | if (rfcomm_pi(sk)->channel == channel && |
113 | !bacmp(&bt_sk(sk)->src, src)) | 114 | !bacmp(&rfcomm_pi(sk)->src, src)) |
114 | break; | 115 | break; |
115 | } | 116 | } |
116 | 117 | ||
@@ -132,11 +133,11 @@ static struct sock *rfcomm_get_sock_by_channel(int state, u8 channel, bdaddr_t * | |||
132 | 133 | ||
133 | if (rfcomm_pi(sk)->channel == channel) { | 134 | if (rfcomm_pi(sk)->channel == channel) { |
134 | /* Exact match. */ | 135 | /* Exact match. */ |
135 | if (!bacmp(&bt_sk(sk)->src, src)) | 136 | if (!bacmp(&rfcomm_pi(sk)->src, src)) |
136 | break; | 137 | break; |
137 | 138 | ||
138 | /* Closest match */ | 139 | /* Closest match */ |
139 | if (!bacmp(&bt_sk(sk)->src, BDADDR_ANY)) | 140 | if (!bacmp(&rfcomm_pi(sk)->src, BDADDR_ANY)) |
140 | sk1 = sk; | 141 | sk1 = sk; |
141 | } | 142 | } |
142 | } | 143 | } |
@@ -355,7 +356,7 @@ static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr | |||
355 | err = -EADDRINUSE; | 356 | err = -EADDRINUSE; |
356 | } else { | 357 | } else { |
357 | /* Save source address */ | 358 | /* Save source address */ |
358 | bacpy(&bt_sk(sk)->src, &sa->rc_bdaddr); | 359 | bacpy(&rfcomm_pi(sk)->src, &sa->rc_bdaddr); |
359 | rfcomm_pi(sk)->channel = sa->rc_channel; | 360 | rfcomm_pi(sk)->channel = sa->rc_channel; |
360 | sk->sk_state = BT_BOUND; | 361 | sk->sk_state = BT_BOUND; |
361 | } | 362 | } |
@@ -393,13 +394,14 @@ static int rfcomm_sock_connect(struct socket *sock, struct sockaddr *addr, int a | |||
393 | } | 394 | } |
394 | 395 | ||
395 | sk->sk_state = BT_CONNECT; | 396 | sk->sk_state = BT_CONNECT; |
396 | bacpy(&bt_sk(sk)->dst, &sa->rc_bdaddr); | 397 | bacpy(&rfcomm_pi(sk)->dst, &sa->rc_bdaddr); |
397 | rfcomm_pi(sk)->channel = sa->rc_channel; | 398 | rfcomm_pi(sk)->channel = sa->rc_channel; |
398 | 399 | ||
399 | d->sec_level = rfcomm_pi(sk)->sec_level; | 400 | d->sec_level = rfcomm_pi(sk)->sec_level; |
400 | d->role_switch = rfcomm_pi(sk)->role_switch; | 401 | d->role_switch = rfcomm_pi(sk)->role_switch; |
401 | 402 | ||
402 | err = rfcomm_dlc_open(d, &bt_sk(sk)->src, &sa->rc_bdaddr, sa->rc_channel); | 403 | err = rfcomm_dlc_open(d, &rfcomm_pi(sk)->src, &sa->rc_bdaddr, |
404 | sa->rc_channel); | ||
403 | if (!err) | 405 | if (!err) |
404 | err = bt_sock_wait_state(sk, BT_CONNECTED, | 406 | err = bt_sock_wait_state(sk, BT_CONNECTED, |
405 | sock_sndtimeo(sk, flags & O_NONBLOCK)); | 407 | sock_sndtimeo(sk, flags & O_NONBLOCK)); |
@@ -429,7 +431,7 @@ static int rfcomm_sock_listen(struct socket *sock, int backlog) | |||
429 | } | 431 | } |
430 | 432 | ||
431 | if (!rfcomm_pi(sk)->channel) { | 433 | if (!rfcomm_pi(sk)->channel) { |
432 | bdaddr_t *src = &bt_sk(sk)->src; | 434 | bdaddr_t *src = &rfcomm_pi(sk)->src; |
433 | u8 channel; | 435 | u8 channel; |
434 | 436 | ||
435 | err = -EINVAL; | 437 | err = -EINVAL; |
@@ -530,9 +532,9 @@ static int rfcomm_sock_getname(struct socket *sock, struct sockaddr *addr, int * | |||
530 | sa->rc_family = AF_BLUETOOTH; | 532 | sa->rc_family = AF_BLUETOOTH; |
531 | sa->rc_channel = rfcomm_pi(sk)->channel; | 533 | sa->rc_channel = rfcomm_pi(sk)->channel; |
532 | if (peer) | 534 | if (peer) |
533 | bacpy(&sa->rc_bdaddr, &bt_sk(sk)->dst); | 535 | bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->dst); |
534 | else | 536 | else |
535 | bacpy(&sa->rc_bdaddr, &bt_sk(sk)->src); | 537 | bacpy(&sa->rc_bdaddr, &rfcomm_pi(sk)->src); |
536 | 538 | ||
537 | *len = sizeof(struct sockaddr_rc); | 539 | *len = sizeof(struct sockaddr_rc); |
538 | return 0; | 540 | return 0; |
@@ -951,8 +953,8 @@ int rfcomm_connect_ind(struct rfcomm_session *s, u8 channel, struct rfcomm_dlc * | |||
951 | bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM); | 953 | bt_sock_reclassify_lock(sk, BTPROTO_RFCOMM); |
952 | 954 | ||
953 | rfcomm_sock_init(sk, parent); | 955 | rfcomm_sock_init(sk, parent); |
954 | bacpy(&bt_sk(sk)->src, &src); | 956 | bacpy(&rfcomm_pi(sk)->src, &src); |
955 | bacpy(&bt_sk(sk)->dst, &dst); | 957 | bacpy(&rfcomm_pi(sk)->dst, &dst); |
956 | rfcomm_pi(sk)->channel = channel; | 958 | rfcomm_pi(sk)->channel = channel; |
957 | 959 | ||
958 | sk->sk_state = BT_CONFIG; | 960 | sk->sk_state = BT_CONFIG; |
@@ -979,7 +981,7 @@ static int rfcomm_sock_debugfs_show(struct seq_file *f, void *p) | |||
979 | 981 | ||
980 | sk_for_each(sk, &rfcomm_sk_list.head) { | 982 | sk_for_each(sk, &rfcomm_sk_list.head) { |
981 | seq_printf(f, "%pMR %pMR %d %d\n", | 983 | seq_printf(f, "%pMR %pMR %d %d\n", |
982 | &bt_sk(sk)->src, &bt_sk(sk)->dst, | 984 | &rfcomm_pi(sk)->src, &rfcomm_pi(sk)->dst, |
983 | sk->sk_state, rfcomm_pi(sk)->channel); | 985 | sk->sk_state, rfcomm_pi(sk)->channel); |
984 | } | 986 | } |
985 | 987 | ||