В ядре Linux устранена следующая уязвимость:
nvdimm/bus: исправлено потенциальное использование после освобождения при асинхронной инициализации. Дингисоул из KASAN сообщает об использовании после освобождения, если устройство_add() не удалось выполнить
nd_async_device_register(). Зафиксируйте b6eae0f61db2 («libnvdimm: удерживать ссылку на родителя, пока
планирование асинхронной инициализации") правильно добавлена ссылка на родительское устройство
будет удерживаться до завершения асинхронной инициализации.
Однако, если
device_add() приводит к сбою выделения счетчика ссылок
устройство падает до 0 до доступа к родительскому указателю. Таким образом
в результате использования после бесплатного. ИИ бота-ошибки правильно определил исправление.
Сохраните ссылку на
родительский указатель, который будет использоваться для удаления родительской ссылки независимо от
результат работы устройства_add().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: nvdimm/bus: Fix potential use after free in asynchronous initialization Dingisoul with KASAN reports a use after free if device_add() fails in nd_async_device_register(). Commit b6eae0f61db2 ("libnvdimm: Hold reference on parent while scheduling async init") correctly added a reference on the parent device to be held until asynchronous initialization was complete. However, if device_add() results in an allocation failure the ref count of the device drops to 0 prior to the parent pointer being accessed. Thus resulting in use after free. The bug bot AI correctly identified the fix. Save a reference to the parent pointer to be used to drop the parent reference regardless of the outcome of device_add().