diff options
Diffstat (limited to 'net/bluetooth/a2mp.c')
-rw-r--r-- | net/bluetooth/a2mp.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/net/bluetooth/a2mp.c b/net/bluetooth/a2mp.c index 4ff0bf3ba9a5..0760d1fed6f0 100644 --- a/net/bluetooth/a2mp.c +++ b/net/bluetooth/a2mp.c | |||
@@ -316,7 +316,7 @@ send_rsp: | |||
316 | static inline int a2mp_cmd_rsp(struct amp_mgr *mgr, struct sk_buff *skb, | 316 | static inline int a2mp_cmd_rsp(struct amp_mgr *mgr, struct sk_buff *skb, |
317 | struct a2mp_cmd *hdr) | 317 | struct a2mp_cmd *hdr) |
318 | { | 318 | { |
319 | BT_DBG("ident %d code %d", hdr->ident, hdr->code); | 319 | BT_DBG("ident %d code 0x%2.2x", hdr->ident, hdr->code); |
320 | 320 | ||
321 | skb_pull(skb, le16_to_cpu(hdr->len)); | 321 | skb_pull(skb, le16_to_cpu(hdr->len)); |
322 | return 0; | 322 | return 0; |
@@ -325,17 +325,19 @@ static inline int a2mp_cmd_rsp(struct amp_mgr *mgr, struct sk_buff *skb, | |||
325 | /* Handle A2MP signalling */ | 325 | /* Handle A2MP signalling */ |
326 | static int a2mp_chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) | 326 | static int a2mp_chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) |
327 | { | 327 | { |
328 | struct a2mp_cmd *hdr = (void *) skb->data; | 328 | struct a2mp_cmd *hdr; |
329 | struct amp_mgr *mgr = chan->data; | 329 | struct amp_mgr *mgr = chan->data; |
330 | int err = 0; | 330 | int err = 0; |
331 | 331 | ||
332 | amp_mgr_get(mgr); | 332 | amp_mgr_get(mgr); |
333 | 333 | ||
334 | while (skb->len >= sizeof(*hdr)) { | 334 | while (skb->len >= sizeof(*hdr)) { |
335 | struct a2mp_cmd *hdr = (void *) skb->data; | 335 | u16 len; |
336 | u16 len = le16_to_cpu(hdr->len); | ||
337 | 336 | ||
338 | BT_DBG("code 0x%02x id %d len %d", hdr->code, hdr->ident, len); | 337 | hdr = (void *) skb->data; |
338 | len = le16_to_cpu(hdr->len); | ||
339 | |||
340 | BT_DBG("code 0x%2.2x id %d len %u", hdr->code, hdr->ident, len); | ||
339 | 341 | ||
340 | skb_pull(skb, sizeof(*hdr)); | 342 | skb_pull(skb, sizeof(*hdr)); |
341 | 343 | ||
@@ -393,7 +395,9 @@ static int a2mp_chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) | |||
393 | 395 | ||
394 | if (err) { | 396 | if (err) { |
395 | struct a2mp_cmd_rej rej; | 397 | struct a2mp_cmd_rej rej; |
398 | |||
396 | rej.reason = __constant_cpu_to_le16(0); | 399 | rej.reason = __constant_cpu_to_le16(0); |
400 | hdr = (void *) skb->data; | ||
397 | 401 | ||
398 | BT_DBG("Send A2MP Rej: cmd 0x%2.2x err %d", hdr->code, err); | 402 | BT_DBG("Send A2MP Rej: cmd 0x%2.2x err %d", hdr->code, err); |
399 | 403 | ||
@@ -412,7 +416,7 @@ static int a2mp_chan_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb) | |||
412 | 416 | ||
413 | static void a2mp_chan_close_cb(struct l2cap_chan *chan) | 417 | static void a2mp_chan_close_cb(struct l2cap_chan *chan) |
414 | { | 418 | { |
415 | l2cap_chan_destroy(chan); | 419 | l2cap_chan_put(chan); |
416 | } | 420 | } |
417 | 421 | ||
418 | static void a2mp_chan_state_change_cb(struct l2cap_chan *chan, int state) | 422 | static void a2mp_chan_state_change_cb(struct l2cap_chan *chan, int state) |