Description
In the Linux kernel, the following vulnerability has been resolved: slimbus: qcom-ngd-ctrl: Register callbacks after creating the ngd When the remoteproc starts in parallel with the NGD driver being probed, or the remoteproc is already up when the PDR lookup is being registered, or in the theoretical event that we get an interrupt from the hardware, these callbacks will operate on uninitialized data. This result in issues to boot the affected boards. One such example can be seen in the following fault, where qcom_slim_ngd_ssr_pdr_notify() schedules work on the NULL ngd_up_work. [ 21.858578] ------------[ cut here ]------------ [ 21.858745] WARNING: kernel/workqueue.c:2338 at __queue_work+0x5e0/0x790, CPU#2: kworker/2:2/116 ... [ 21.859251] Call trace: [ 21.859255] __queue_work+0x5e0/0x790 (P) [ 21.859265] queue_work_on+0x6c/0xf0 [ 21.859273] qcom_slim_ngd_ssr_pdr_notify+0x110/0x150 [slim_qcom_ngd_ctrl] [ 21.859304] qcom_slim_ngd_ssr_notify+0x24/0x40 [slim_qcom_ngd_ctrl] [ 21.859318] notifier_call_chain+0xa4/0x230 [ 21.859329] srcu_notifier_call_chain+0x64/0xb8 [ 21.859338] ssr_notify_start+0x40/0x78 [qcom_common] [ 21.859355] rproc_start+0x130/0x230 [ 21.859367] rproc_boot+0x3d4/0x518 ... Move the enablement of interrupts, and the registration of SSR and PDR until after the NGD device has been registered. This could be further refined by moving initialization to the control driver probe and by removing the platform driver model from the picture.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
917809e2280bb83994be8b642373fd941d40c407 to < 946b97d632f0f58a705dafac644c1e9346e01f35affected917809e2280bb83994be8b642373fd941d40c407 to < 2047eeb38db878a31f58db19d98f8aedf284342eaffected917809e2280bb83994be8b642373fd941d40c407 to < afc631e246936a40558f494112a4188401382671affected917809e2280bb83994be8b642373fd941d40c407 to < 290014c7987636e6105bba89fa04cb4d59f775c1affected917809e2280bb83994be8b642373fd941d40c407 to < fa3790c7ea98328ddc3f7d8bf40247556245a6fcaffected917809e2280bb83994be8b642373fd941d40c407 to < 24ec89123fc9d0d24ce719dcf7fd6c57e5b0d753affected917809e2280bb83994be8b642373fd941d40c407 to < 08564e15c47a5fb0af6643a43ee15521d49bcdeaaffected917809e2280bb83994be8b642373fd941d40c407 to < 2a9d50e9ea406e0c8735938484adc20515ef1b47affected
Linux Linux
Default version status: affected
4.19affected0 to < 4.19unaffected5.10.260 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.94 to ≤ 6.12.*unaffected6.18.36 to ≤ 6.18.*unaffected7.0.13 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/946b97d632f0f58a705dafac644c1e9346e01f35 ↗
- https://git.kernel.org/stable/c/2047eeb38db878a31f58db19d98f8aedf284342e ↗
- https://git.kernel.org/stable/c/afc631e246936a40558f494112a4188401382671 ↗
- https://git.kernel.org/stable/c/290014c7987636e6105bba89fa04cb4d59f775c1 ↗
- https://git.kernel.org/stable/c/fa3790c7ea98328ddc3f7d8bf40247556245a6fc ↗
- https://git.kernel.org/stable/c/24ec89123fc9d0d24ce719dcf7fd6c57e5b0d753 ↗
- https://git.kernel.org/stable/c/08564e15c47a5fb0af6643a43ee15521d49bcdea ↗
- https://git.kernel.org/stable/c/2a9d50e9ea406e0c8735938484adc20515ef1b47 ↗