В ядре Linux устранена следующая уязвимость:
может: bcm: добавить отсутствующие аннотации и операции списка rcu
sashiko-bot заметил отсутствие использования list_add_rcu() в
bcm_[rx|tx]_setup() для правильной инициализации структуры bcm_op
когда bcm_proc_show() пересекает bcm_op под rcu_read_lock(). Чтобы охватить все начальные настройки bcm_op, вызывается list_add_rcu().
перемещаются в конец кода установки. При этом также исправьте сторону удаления зеркалирования: вызывается bcm_release()
bcm_remove_op() — который освобождает операцию через call_rcu() — для операций, которые были
все еще связан в bo->tx_ops/bo->rx_ops, без предварительного list_del_rcu().
Отключите каждую операцию с помощью list_del_rcu() перед передачей ее в bcm_remove_op(),
соответствие существующему шаблону в bcm_delete_tx_op()/bcm_delete_rx_op().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: can: bcm: add missing rcu list annotations and operations sashiko-bot remarked the missing use of list_add_rcu() in bcm_[rx|tx]_setup() to have a proper initialized bcm_op structure when bcm_proc_show() traverses the bcm_op's under rcu_read_lock(). To cover all initial settings of the bcm_op's the list_add_rcu() calls are moved to the end of the setup code. While at it, also fix the mirroring removal side: bcm_release() called bcm_remove_op() - which frees the op via call_rcu() - on ops that were still linked in bo->tx_ops/bo->rx_ops, without list_del_rcu() first. Unlink each op with list_del_rcu() before handing it to bcm_remove_op(), matching the existing pattern in bcm_delete_tx_op()/bcm_delete_rx_op().
Характеристики атаки
Последствия
Строка CVSS v3.1