Showing error 1771

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: net/bluetooth/sco.c
Line in file: 220
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

 190
 191        if (!(hdev = hci_get_route(dst, src)))
 192                return -EHOSTUNREACH;
 193
 194        hci_dev_lock_bh(hdev);
 195
 196        err = -ENOMEM;
 197
 198        if (lmp_esco_capable(hdev) && !disable_esco)
 199                type = ESCO_LINK;
 200        else
 201                type = SCO_LINK;
 202
 203        hcon = hci_connect(hdev, type, dst, HCI_AT_NO_BONDING);
 204        if (!hcon)
 205                goto done;
 206
 207        conn = sco_conn_add(hcon, 0);
 208        if (!conn) {
 209                hci_conn_put(hcon);
 210                goto done;
 211        }
 212
 213        /* Update source addr of the socket */
 214        bacpy(src, conn->src);
 215
 216        err = sco_chan_add(conn, sk, NULL);
 217        if (err)
 218                goto done;
 219
 220        if (hcon->state == BT_CONNECTED) {
 221                sco_sock_clear_timer(sk);
 222                sk->sk_state = BT_CONNECTED;
 223        } else {
 224                sk->sk_state = BT_CONNECT;
 225                sco_sock_set_timer(sk, sk->sk_sndtimeo);
 226        }
 227
 228done:
 229        hci_dev_unlock_bh(hdev);
 230        hci_dev_put(hdev);
Show full sources