Description
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_sync: annotate data-races around hdev->req_status __hci_cmd_sync_sk() sets hdev->req_status under hdev->req_lock: hdev->req_status = HCI_REQ_PEND; However, several other functions read or write hdev->req_status without holding any lock: - hci_send_cmd_sync() reads req_status in hci_cmd_work (workqueue) - hci_cmd_sync_complete() reads/writes from HCI event completion - hci_cmd_sync_cancel() / hci_cmd_sync_cancel_sync() read/write - hci_abort_conn() reads in connection abort path Since __hci_cmd_sync_sk() runs on hdev->req_workqueue while hci_send_cmd_sync() runs on hdev->workqueue, these are different workqueues that can execute concurrently on different CPUs. The plain C accesses constitute a data race. Add READ_ONCE()/WRITE_ONCE() annotations on all concurrent accesses to hdev->req_status to prevent potential compiler optimizations that could affect correctness (e.g., load fusing in the wait_event condition or store reordering).
Product status
f80c5dad7b6467b884c445ffea45985793b4b2d0 (git) before 6e539907c0d11f514c5e0b049b27b04dff48a5b1
f80c5dad7b6467b884c445ffea45985793b4b2d0 (git) before a7a1cdb4a64ca74eb95cc46648fccb8cd3f9af27
f80c5dad7b6467b884c445ffea45985793b4b2d0 (git) before 40734ce8efc34c4a0d0222855798c0dc14b65f2e
f80c5dad7b6467b884c445ffea45985793b4b2d0 (git) before b6807cfc195ef99e1ac37b2e1e60df40295daa8c
8603d49906b231bbcd9141db7d096fa1041bc379 (git)
0e061885bfcd65ef5d09f154f3c3c3491cc7544a (git)
a3d50fb7ce931f08a2c6194fdc4c9a56c9ed4153 (git)
5.2
Any version before 5.2
6.12.83 (semver)
6.18.24 (semver)
6.19.14 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/6e539907c0d11f514c5e0b049b27b04dff48a5b1
git.kernel.org/...c/a7a1cdb4a64ca74eb95cc46648fccb8cd3f9af27
git.kernel.org/...c/40734ce8efc34c4a0d0222855798c0dc14b65f2e
git.kernel.org/...c/b6807cfc195ef99e1ac37b2e1e60df40295daa8c