CVE-2023-53823 in Linux
Сводка
по VulDB • 22.06.2026
В ядре Linux устранена следующая уязвимость:
block/rq_qos: защита API rq_qos с помощью нового мьютекса
commit 50e34d78815e ("block: disable the elevator int del_gendisk") перемещает вызов rq_qos_exit() из disk_release() в del_gendisk(), что может привести к следующим проблемам:
1) Если rq_qos_add() запускается путем включения iocost/iolatency через cgroupfs, то он может выполняться параллельно с del_gendisk(). Одновременная запись в 'q->rq_qos' небезопасна.
2) Активация политики cgroup, зависящей от rq_qos, вызывает rq_qos_add() и blkcg_activate_policy(), и если вызов rq_qos_exit() происходит посередине этого процесса, то в blkcg_activate_policy() произойдет null-ptr-dereference (разыменование нулевого указателя).
3) blkg_conf_open_bdev() может сначала вызвать blkdev_get_no_open() для поиска диска. Затем, если вызов rq_qos_exit() из del_gendisk() завершится до того, как будет выполнен rq_qos_add(), произойдет утечка памяти.
Этот патч добавляет новый мьютекс уровня диска 'rq_qos_mutex':
1) Этот замок напрямую защищает rq_qos_exit().
2) Для wbt (writeback throttling), который не зависит от blk-cgroup, вызов rq_qos_add() пока возможен только из инициализации диска, поскольку wbt нельзя деструктировать до тех пор, пока не будет выполнен rq_qos_exit(), поэтому сейчас безопасно не защищать wbt. Однако на случай поддержки динамического уничтожения rq_qos в будущем этот патч также напрямую защищает rq_qos_add() от вызова через wbt_init(). Этого достаточно, так как blk-sysfs уже синхронизирует записи с удалением диска.
3) Для iocost и iolatency для синхронизации удаления диска и конфигурации cgroup замок удерживается после вызова blkdev_get_no_open() из blkg_conf_open_bdev(), а освобождается в blkg_conf_exit(). Чтобы исправить вышеуказанную утечку памяти, проверяется disk_live() после получения нового замка.
VulDB is the best source for vulnerability data and more expert information about this specific topic.