CVE-2024-35902 in Linux
Сводка
по VulDB • 29.05.2026
В ядре Linux устранена следующая уязвимость:
net/rds: исправлена возможная ошибка разыменования нулевого указателя cp
Переменная cp может быть равна NULL, и обращение к cp->cp_conn приведет к разыменованию нулевого указателя.
[Добавляет Саймон Хорман:]
Анализ:
* cp является параметром функции __rds_rdma_map и не переназначается.
* Следующие точки вызова передают аргумент cp со значением NULL в функцию __rds_rdma_map():
- rds_get_mr() - rds_get_mr_for_dest
* До приведенного выше кода следующее выражение предполагает, что cp может быть NULL (что является индикативным, но само по себе может быть излишним):
trans_private = rs->rs_transport->get_mr( sg, nents, rs, &mr->r_key, cp ? cp->cp_conn : NULL, args->vec.addr, args->vec.bytes, need_odp ? ODP_ZEROBASED : ODP_NOT_NEEDED);
* Код, измененный данным патчем, защищен проверкой IS_ERR(trans_private), где trans_private присваивается согласно предыдущему пункту данного анализа.
Единственная реализация get_mr, которую мне удалось найти, — это rds_ib_get_mr(), которая может возвращать ERR_PTR, если аргумент conn (четвертый) равен NULL.
* Переменная ret устанавливается равной PTR_ERR(trans_private). rds_ib_get_mr может возвращать ERR_PTR(-ENODEV), если аргумент conn (четвертый) равен NULL. Таким образом, ret может принимать значение -ENODEV, в этом случае рассматриваемый код будет выполнен.
Вывод: * На момент добавления проверки данным патчем переменная cp может быть равна NULL; этот патч, по-видимому, устраняет возможную ошибку.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.