From: Dan Carpenter Date: Fri, 7 Jan 2022 07:17:27 +0000 (+0300) Subject: Bluetooth: hci_sock: fix endian bug in hci_sock_setsockopt() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=b9f9dbad0bd1c302d357fdd327c398f51f5fc2b1;p=linux.git 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: 09572fca7223 ("Bluetooth: hci_sock: Add support for BT_{SND,RCV}BUF") Signed-off-by: Dan Carpenter Signed-off-by: Marcel Holtmann --- diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 446573a125711..33b3c0ffc3399 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c @@ -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; }