Commit b9f9dbad authored by Dan Carpenter's avatar Dan Carpenter Committed by Marcel Holtmann
Browse files

Bluetooth: hci_sock: fix endian bug in hci_sock_setsockopt()



This copies a u16 into the high bits of an int, which works on a big
endian system but not on a little endian system.

Fixes: 09572fca ("Bluetooth: hci_sock: Add support for BT_{SND,RCV}BUF")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 2b70d4f9
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1911,7 +1911,8 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
			       sockptr_t optval, unsigned int len)
{
	struct sock *sk = sock->sk;
	int err = 0, opt = 0;
	int err = 0;
	u16 opt;

	BT_DBG("sk %p, opt %d", sk, optname);

@@ -1937,7 +1938,7 @@ static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
			goto done;
		}

		if (copy_from_sockptr(&opt, optval, sizeof(u16))) {
		if (copy_from_sockptr(&opt, optval, sizeof(opt))) {
			err = -EFAULT;
			break;
		}