Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56b7d137 authored by Gustavo Padovan's avatar Gustavo Padovan
Browse files

Bluetooth: return proper error if sock_queue_rcv_skb() fails



Improve error handling at cmd_status() and cmd_complete()

Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
parent 33ca954d
Loading
Loading
Loading
Loading
+8 −4
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@ static int cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status)
	struct sk_buff *skb;
	struct sk_buff *skb;
	struct mgmt_hdr *hdr;
	struct mgmt_hdr *hdr;
	struct mgmt_ev_cmd_status *ev;
	struct mgmt_ev_cmd_status *ev;
	int err;


	BT_DBG("sock %p, index %u, cmd %u, status %u", sk, index, cmd, status);
	BT_DBG("sock %p, index %u, cmd %u, status %u", sk, index, cmd, status);


@@ -65,10 +66,11 @@ static int cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status)
	ev->status = status;
	ev->status = status;
	put_unaligned_le16(cmd, &ev->opcode);
	put_unaligned_le16(cmd, &ev->opcode);


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


	return 0;
	return err;
}
}


static int cmd_complete(struct sock *sk, u16 index, u16 cmd, void *rp,
static int cmd_complete(struct sock *sk, u16 index, u16 cmd, void *rp,
@@ -77,6 +79,7 @@ static int cmd_complete(struct sock *sk, u16 index, u16 cmd, void *rp,
	struct sk_buff *skb;
	struct sk_buff *skb;
	struct mgmt_hdr *hdr;
	struct mgmt_hdr *hdr;
	struct mgmt_ev_cmd_complete *ev;
	struct mgmt_ev_cmd_complete *ev;
	int err;


	BT_DBG("sock %p", sk);
	BT_DBG("sock %p", sk);


@@ -96,10 +99,11 @@ static int cmd_complete(struct sock *sk, u16 index, u16 cmd, void *rp,
	if (rp)
	if (rp)
		memcpy(ev->data, rp, rp_len);
		memcpy(ev->data, rp, rp_len);


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


	return 0;
	return err;;
}
}


static int read_version(struct sock *sk)
static int read_version(struct sock *sk)