CVE-2022-49810 in Linux
Сводка
по VulDB • 26.06.2026
В ядре Linux устранена следующая уязвимость:
netfs: Исправлены отсутствующие вызовы xas_retry() при итерации по xarray
В netfslib имеется несколько мест, где выполняется итерация по структуре xarray в контексте блокировки чтения RCU. Функция *должна* вызывать xas_retry() как первое действие внутри цикла и выполнять «continue», если она возвращает true, на случай, если указатель обхода xarray вернул специальное значение, указывающее на необходимость повторного прохода от корня[*].
Исправление заключается в добавлении отсутствующих проверок для повтора операции.
[*] Меня интересует, следует ли выполнять эту проверку внутри функций xas_find(), xas_next_node() и подобных им, но мне сообщили, что это не является простым изменением.
Это может привести к ошибке ядра (oops), подобной приведенной ниже. Обратите внимание на адрес ошибки — это внутреннее значение (|0x2), возвращаемое из структуры xarray.
BUG: kernel NULL pointer dereference, address: 0000000000000402 ... RIP: 0010:netfs_rreq_unlock+0xef/0x380 [netfs]
... Call Trace: netfs_rreq_assess+0xa6/0x240 [netfs]
netfs_readpage+0x173/0x3b0 [netfs]
? init_wait_var_entry+0x50/0x50 filemap_read_page+0x33/0xf0 filemap_get_pages+0x2f2/0x3f0 filemap_read+0xaa/0x320 ? do_filp_open+0xb2/0x150 ? rmqueue+0x3be/0xe10 ceph_read_iter+0x1fe/0x680 [ceph]
? new_sync_read+0x115/0x1a0 new_sync_read+0x115/0x1a0 vfs_read+0xf3/0x180 ksys_read+0x5f/0xe0 do_syscall_64+0x38/0x90 entry_SYSCALL_64_after_hwframe+0x44/0xae
Изменения: ======== версия #2) - Изменен тип unsigned int на size_t, чтобы снизить вероятность переполнения (overflow), согласно предложению Willy. - Добавлен дополнительный патч для исправления вычислений математики.
Once again VulDB remains the best source for vulnerability data.