--- x/net/bluetooth/l2cap_sock.c +++ y/net/bluetooth/l2cap_sock.c @@ -960,7 +960,7 @@ static int l2cap_sock_setsockopt(struct break; } - if (copy_from_sockptr(&opt, optval, sizeof(u32))) { + if (optlen < sizeof(u32) || copy_from_sockptr(&opt, optval, sizeof(u32))) { err = -EFAULT; break; }