В ядре Linux устранена следующая уязвимость:
dmaengine: idxd: исправлена ошибка очистки установки fdev в idxd_cdev_open()
Путиfail_dev_add иfail_dev_name удаляют файл-устройство.
ссылка, пока wq->wq_lock все еще удерживается. Если put_device(fdev) удаляет
последняя ссылка, idxd_file_dev_release() работает синхронно и пытается
снова возьмите wq->wq_lock, вступит в тупик. Эти пути также попадают в более поздние метки очистки ctx, даже
хотя idxd_file_dev_release() владеет этой очисткой и освобождает ctx.
Это может
заставить idxd_xa_pasid_remove(ctx) и kfree(ctx) работать с освобожденным контекстом. Переместите idxd_wq_get() до того, как установка файлового устройства может завершиться неудачей, поскольку релиз
обратный вызов всегда вызывает idxd_wq_put(). Затем разблокируйте wq->wq_lock раньше
put_device(fdev) и вернитесь непосредственно из файла с ошибкой установки устройства.
путь, оставляя очистку ctx обратному вызову Release.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: dmaengine: idxd: fix fdev setup failure cleanup in idxd_cdev_open() The failed_dev_add and failed_dev_name paths drop the file-device reference while wq->wq_lock is still held. If put_device(fdev) drops the last reference, idxd_file_dev_release() runs synchronously and tries to take wq->wq_lock again, deadlocking. Those paths also fall through into the later ctx cleanup labels even though idxd_file_dev_release() owns that cleanup and frees ctx. This can make idxd_xa_pasid_remove(ctx) and kfree(ctx) operate on a freed context. Move idxd_wq_get() before file-device setup can fail, since the release callback always calls idxd_wq_put(). Then unlock wq->wq_lock before put_device(fdev) and return directly from the file-device setup failure path, leaving ctx cleanup to the release callback.
Характеристики атаки
Последствия
Строка CVSS v3.1
Уязвимые продукты 5
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.4
|
6.6.151
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.4
|
6.12.103
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.4
|
6.18.44
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.4
|
7.1.8
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.4
|
7.2
|