diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2020-02-14 19:08:57 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2020-02-14 19:15:30 +0100 |
commit | eab2404ba798a8efda2a970f44071c3406d94e57 (patch) | |
tree | 577b8b7c2a49eacd4382310c4f77236f301735b3 /net/bluetooth/sco.c | |
parent | Bluetooth: secure bluetooth stack from bluedump attack (diff) | |
download | linux-eab2404ba798a8efda2a970f44071c3406d94e57.tar.xz linux-eab2404ba798a8efda2a970f44071c3406d94e57.zip |
Bluetooth: Add BT_PHY socket option
This adds BT_PHY socket option (read-only) which can be used to read
the PHYs in use by the underline connection.
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/sco.c')
-rw-r--r-- | net/bluetooth/sco.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index b91d6b440fdf..29ab3e12fb46 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c @@ -922,6 +922,7 @@ static int sco_sock_getsockopt(struct socket *sock, int level, int optname, struct sock *sk = sock->sk; int len, err = 0; struct bt_voice voice; + u32 phys; BT_DBG("sk %p", sk); @@ -956,6 +957,18 @@ static int sco_sock_getsockopt(struct socket *sock, int level, int optname, break; + case BT_PHY: + if (sk->sk_state == BT_CONNECTED) { + err = -ENOTCONN; + break; + } + + phys = hci_conn_get_phy(sco_pi(sk)->conn->hcon); + + if (put_user(phys, (u32 __user *) optval)) + err = -EFAULT; + break; + default: err = -ENOPROTOOPT; break; |