Skip to content

Commit

Permalink
Bluetooth: Add error handling for managment command handlers
Browse files Browse the repository at this point in the history
The command handlers for bluetooth management messaging should be able
to report errors (such as memory allocation failures) to the higher
levels in the call stack.

Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
  • Loading branch information
Johan Hedberg authored and Gustavo F. Padovan committed Dec 23, 2010
1 parent a40c406 commit e41d8b4
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include <net/bluetooth/hci_core.h>
#include <net/bluetooth/mgmt.h>

static void cmd_status(struct sock *sk, u16 cmd, u8 status)
static int cmd_status(struct sock *sk, u16 cmd, u8 status)
{
struct sk_buff *skb;
struct mgmt_hdr *hdr;
Expand All @@ -39,7 +39,7 @@ static void cmd_status(struct sock *sk, u16 cmd, u8 status)

skb = alloc_skb(sizeof(*hdr) + sizeof(*ev), GFP_ATOMIC);
if (!skb)
return;
return -ENOMEM;

hdr = (void *) skb_put(skb, sizeof(*hdr));

Expand All @@ -52,6 +52,8 @@ static void cmd_status(struct sock *sk, u16 cmd, u8 status)

if (sock_queue_rcv_skb(sk, skb) < 0)
kfree_skb(skb);

return 0;
}

int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen)
Expand Down Expand Up @@ -87,10 +89,13 @@ int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen)
switch (opcode) {
default:
BT_DBG("Unknown op %u", opcode);
cmd_status(sk, opcode, 0x01);
err = cmd_status(sk, opcode, 0x01);
break;
}

if (err < 0)
goto done;

err = msglen;

done:
Expand Down

0 comments on commit e41d8b4

Please sign in to comment.