diff options
-rw-r--r-- | include/net/bluetooth/l2cap.h | 2 | ||||
-rw-r--r-- | net/bluetooth/a2mp.c | 3 | ||||
-rw-r--r-- | net/bluetooth/l2cap_core.c | 6 | ||||
-rw-r--r-- | net/bluetooth/l2cap_sock.c | 6 |
4 files changed, 10 insertions, 7 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index 07757a2af942..4ec86cec8914 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -551,7 +551,7 @@ struct l2cap_ops { | |||
551 | void (*teardown) (struct l2cap_chan *chan, int err); | 551 | void (*teardown) (struct l2cap_chan *chan, int err); |
552 | void (*close) (struct l2cap_chan *chan); | 552 | void (*close) (struct l2cap_chan *chan); |
553 | void (*state_change) (struct l2cap_chan *chan, | 553 | void (*state_change) (struct l2cap_chan *chan, |
554 | int state); | 554 | int state, int err); |
555 | void (*ready) (struct l2cap_chan *chan); | 555 | void (*ready) (struct l2cap_chan *chan); |
556 | void (*defer) (struct l2cap_chan *chan); | 556 | void (*defer) (struct l2cap_chan *chan); |
557 | void (*resume) (struct l2cap_chan *chan); | 557 | void (*resume) (struct l2cap_chan *chan); |
diff --git a/net/bluetooth/a2mp.c b/net/bluetooth/a2mp.c index 60ca52819247..6b8cc23787e2 100644 --- a/net/bluetooth/a2mp.c +++ b/net/bluetooth/a2mp.c | |||
@@ -672,7 +672,8 @@ static void a2mp_chan_close_cb(struct l2cap_chan *chan) | |||
672 | l2cap_chan_put(chan); | 672 | l2cap_chan_put(chan); |
673 | } | 673 | } |
674 | 674 | ||
675 | static void a2mp_chan_state_change_cb(struct l2cap_chan *chan, int state) | 675 | static void a2mp_chan_state_change_cb(struct l2cap_chan *chan, int state, |
676 | int err) | ||
676 | { | 677 | { |
677 | struct amp_mgr *mgr = chan->data; | 678 | struct amp_mgr *mgr = chan->data; |
678 | 679 | ||
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 0c3446da1ec9..df5670d8e11d 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
@@ -229,7 +229,7 @@ static void __l2cap_state_change(struct l2cap_chan *chan, int state) | |||
229 | state_to_string(state)); | 229 | state_to_string(state)); |
230 | 230 | ||
231 | chan->state = state; | 231 | chan->state = state; |
232 | chan->ops->state_change(chan, state); | 232 | chan->ops->state_change(chan, state, 0); |
233 | } | 233 | } |
234 | 234 | ||
235 | static void l2cap_state_change(struct l2cap_chan *chan, int state) | 235 | static void l2cap_state_change(struct l2cap_chan *chan, int state) |
@@ -243,9 +243,7 @@ static void l2cap_state_change(struct l2cap_chan *chan, int state) | |||
243 | 243 | ||
244 | static inline void __l2cap_chan_set_err(struct l2cap_chan *chan, int err) | 244 | static inline void __l2cap_chan_set_err(struct l2cap_chan *chan, int err) |
245 | { | 245 | { |
246 | struct sock *sk = chan->sk; | 246 | chan->ops->state_change(chan, chan->state, err); |
247 | |||
248 | sk->sk_err = err; | ||
249 | } | 247 | } |
250 | 248 | ||
251 | static inline void l2cap_chan_set_err(struct l2cap_chan *chan, int err) | 249 | static inline void l2cap_chan_set_err(struct l2cap_chan *chan, int err) |
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 5ffd75e20bde..0de8a30c06a1 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
@@ -1072,11 +1072,15 @@ static void l2cap_sock_teardown_cb(struct l2cap_chan *chan, int err) | |||
1072 | release_sock(sk); | 1072 | release_sock(sk); |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state) | 1075 | static void l2cap_sock_state_change_cb(struct l2cap_chan *chan, int state, |
1076 | int err) | ||
1076 | { | 1077 | { |
1077 | struct sock *sk = chan->data; | 1078 | struct sock *sk = chan->data; |
1078 | 1079 | ||
1079 | sk->sk_state = state; | 1080 | sk->sk_state = state; |
1081 | |||
1082 | if (err) | ||
1083 | sk->sk_err = err; | ||
1080 | } | 1084 | } |
1081 | 1085 | ||
1082 | static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan, | 1086 | static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan, |