В ядре Linux устранена следующая уязвимость:
net: ixp4xx_hss: исправлено дублирование выделения HDLC netdev.
ixp4xx_hss_probe() выделяет два сетевых устройства HDLC. Первый из них хранится
в ndev, инициализирован и зарегистрирован с помощью Register_hdlc_device().
второй хранится в порт->netdev и позже используется по пути удаления.
для unregister_hdlc_device() и free_netdev(). Это означает, что зарегистрированный netdev не является тем же объектом, что и
незарегистрирован и освобожден при удалении.
Также происходит утечка первого распределения, если
второй вызов alloc_hdlcdev() завершается неудачно, а первое выделение не выполняется.
проверяется перед использованием ndev. Старый код выделял HDLC netdev только один раз и сохранял тот же объект.
как в локальной переменной, так и в порт->netdev. Неправильное разделение конверсий
это на два вызова alloc_hdlcdev().
Позднее переименование изменило локальный
имя переменной было изменено на ndev, но основное несоответствие осталось. Исправьте это, выделив HDLC netdev только один раз и назначив тот же
возражайте против порта->netdev.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: net: ixp4xx_hss: fix duplicate HDLC netdev allocation ixp4xx_hss_probe() allocates two HDLC netdevs. The first one is stored in ndev, initialized, and registered with register_hdlc_device(). The second one is stored in port->netdev and later used by the remove path for unregister_hdlc_device() and free_netdev(). This means that the registered netdev is not the same object that is unregistered and freed on remove. It also leaks the first allocation if the second alloc_hdlcdev() call fails, and the first allocation is not checked before ndev is used. Older code allocated the HDLC netdev only once and stored the same object in both the local variable and port->netdev. The buggy conversion split this into two alloc_hdlcdev() calls. A later rename changed the local variable name to ndev, but the underlying mismatch remained. Fix this by allocating the HDLC netdev only once and assigning the same object to port->netdev.