Bluetooth: Fix crash when using new BT_PHY option
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 18 Feb 2020 18:33:20 +0000 (10:33 -0800)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 18 Feb 2020 21:02:15 +0000 (22:02 +0100)
This fixes the invalid check for connected socket which causes the
following trace due to sco_pi(sk)->conn being NULL:

RIP: 0010:sco_sock_getsockopt+0x2ff/0x800 net/bluetooth/sco.c:966

L2CAP has also been fixed since it has the same problem.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap_sock.c
net/bluetooth/sco.c

index 9fb47b2..3057104 100644 (file)
@@ -605,7 +605,7 @@ static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname,
                break;
 
        case BT_PHY:
-               if (sk->sk_state == BT_CONNECTED) {
+               if (sk->sk_state != BT_CONNECTED) {
                        err = -ENOTCONN;
                        break;
                }
index 29ab3e1..c8c3d38 100644 (file)
@@ -958,7 +958,7 @@ static int sco_sock_getsockopt(struct socket *sock, int level, int optname,
                break;
 
        case BT_PHY:
-               if (sk->sk_state == BT_CONNECTED) {
+               if (sk->sk_state != BT_CONNECTED) {
                        err = -ENOTCONN;
                        break;
                }