В ядре Linux устранена следующая уязвимость: net: macb: Перетасуйте tx кольцо, прежде чем вводить tx Кваньянг заметил, что при использовани…
В ядре Linux устранена следующая уязвимость: net: macb: Перетасуйте tx кольцо, прежде чем вводить tx Кваньянг заметил, что при использовании корневых опий NFS на доске AMD ZynqMp, Корни могут занять длительное время, чтобы восстановиться после приостановки. После расследования было установлено, что проблема возникает из Проблема в водителе Macb. Согласно Zynq UltraScale TRM [1], когда передача отключена, указатель буферной очереди передачи сбрасывает, чтобы указать на адрес указанный регистр адресного адреса буферной очереди передачи. В текущей реализации код просто сбрасывает `queue->tx_head` и `queue->tx_tail` в '0'. Такой подход ставит несколько вопросов: - Пакеты, уже поставленные в очередь в звонке, молча теряются, Приводит к утечкам памяти, так как связанные с ним skbs не могут быть выпущены. - Ежеквый доступ к записи `queue->tx_head` и `queue->tx_tail` может происходят из `macb_tx_poll()` или `macb_start_xmit()` когда эти значения Сбрасываются до '0'. - Передача может застрять на пакете, который уже отправлен out, с его бит-сетом 'TX_USED', но еще не обработан. Однако, из-за манипуляций с 'queue->tx_head' и 'queue->tx_tail', `macb_tx_poll()` неправильно предполагает, что нет пакетов для обработки потому что `queue->tx_head == queue->tx_tail`. Этот вопрос только решен когда новый пакет помещается в эту позицию. Это и есть первопричина длительное время восстановления, наблюдаемое для корневой файловой системы NFS. Чтобы решить эту проблему, перетасуйте tx ring и tx skb массив, чтобы Первый неотправленный пакет расположен в начале tx кольца. Кроме того, убедитесь, что обновления для `queue->tx_head` и `queue->tx_tail` должным образом защищены соответствующим замком. [1] https://docs.amd.com/v/u/u/u/u-US/ug1085-zynq-ultrascale-trm
Продукт не отслеживает должным образом и не освобождает выделенную память после её использования, делая память недоступной для повторного выделения и использования.
https://cwe.mitre.org/data/definitions/401.html →Открыть в коллекции CWE →| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |
| kernel-doc-6.12 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-un | Отслеживается | |
| kernel-headers-6.12 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.12 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается | |
| kernel-headers-modules-pine | Отслеживается | |
| kernel-headers-modules-pine | Отслеживается | |
| kernel-headers-modules-rt | Отслеживается | |
| kernel-headers-modules-un-def | Отслеживается | |
| kernel-headers-pine | Отслеживается |