]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Bluetooth: SCO: remove the redundant sco_conn_put
authorEdward Adam Davis <eadavis@qq.com>
Mon, 25 Nov 2024 23:58:43 +0000 (07:58 +0800)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 26 Nov 2024 16:07:28 +0000 (11:07 -0500)
When adding conn, it is necessary to increase and retain the conn reference
count at the same time.

Another problem was fixed along the way, conn_put is missing when hcon is NULL
in the timeout routine.

Fixes: e6720779ae61 ("Bluetooth: SCO: Use kref to track lifetime of sco_conn")
Reported-and-tested-by: syzbot+489f78df4709ac2bfdd3@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=489f78df4709ac2bfdd3
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/sco.c

index 1b8e468d24cf5b6b44adaedfb42ef30058ccda27..78f7bca244877150bf5ee3f56bb89510bfd0cd73 100644 (file)
@@ -143,6 +143,7 @@ static void sco_sock_timeout(struct work_struct *work)
        sco_conn_lock(conn);
        if (!conn->hcon) {
                sco_conn_unlock(conn);
+               sco_conn_put(conn);
                return;
        }
        sk = sco_sock_hold(conn);
@@ -192,7 +193,6 @@ static struct sco_conn *sco_conn_add(struct hci_conn *hcon)
                        conn->hcon = hcon;
                        sco_conn_unlock(conn);
                }
-               sco_conn_put(conn);
                return conn;
        }