В ядре Linux устранена следующая уязвимость: USB: dummy-hcd: Исправить ошибку синхронизации прерывания Это устраняет ошибку в синхронизации…
В ядре Linux устранена следующая уязвимость: USB: dummy-hcd: Исправить ошибку синхронизации прерывания Это устраняет ошибку в синхронизации в драйвере фиктивного челнока. Ошибка имеет несколько вовлеченную историю. Механизм синхронизации был представлен commit 7dbd8f4cabd9 ("USB: dummy-hcd: Исправить ошибочный изменение синхронизации»), которое добавило эмулируемое «включено прерывание» флаг вместе с кодом, эмулирующим synchronize_irq() (он ждет, пока все текущие обратные звонки обработчиков вернулись). Но эмулированный прерывание-отключение произошло слишком поздно, после того, как водитель Содержащие обратный звонок обработчику были сказаны, что это Непереплетенные и больше никаких обратных звонков не произойдет. Компиляция 4a5d797a9f9c ("USB: гаджет: dummy_hcd: исправить gpf в gadget_setup") попытался исправить это перенести код эмуляции synchronize_irq() с dummy_stop() на dummy_pullup(), который работает до обратного звонка. Тем не менее, все еще были гонки, потому что подражал прерываю. Все-таки произошло слишком поздно. Он не может быть перемещен в dummy_pullup(), потому что эту рутину можно назвать по причинам, отличным от надвигающихся развязать. Поэтому совершает 7dc5c55e9f30 («USB: UDC core: udc_async_callbacks гаджет op") и 04145a03db9d ("USB: UDC: Реализация udc_async_callbacks in dummy-hd") добавил API, позволяющий ядро UDC чтобы точно сказать dummy-hcd, когда эмулировали прерывания и их обратные звонки Он должен быть инвалидом. Это подводит нас к нынешнему состоянию событий, которое все еще неправильно потому что эмулированный synchronize_irq() происходит до эмулированного прерывать-отключать! Это нехорошо, потому что это означает, что больше подражает прерывания могут возникать после того, как синхронизация_irq() эмуляция заработает, что приводит к возможности того, что обработчик обратного вызова может работать, когда Водитель гаджета не связан. Чтобы исправить это, мы должны переместить код эмуляции synchronize_irq() снова, к dummy_udc_async_callbacks() рутине, которая заботится о Внедрь и отключение эмулированных запросов прерывания. синхронизация теперь будет работать сразу после эмулированных прерываний Инвалиды, и именно им и место.
| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается |