CVE-2026-31477 in Linux
Sumário
de VulDB • 29/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
ksmbd: corrige vazamentos de memória e dereferência de NULL em smb2_lock()
A função smb2_lock() possui três problemas de tratamento de erro após a chamada list_del() desanexar smb_lock de lock_list em no_check_cl:
1) Se vfs_lock_file() retornar um erro inesperado no caminho não-UNLOCK, goto out causa vazamento de smb_lock e de seu flock, pois o manipulador out: itera apenas lock_list e rollback_list, nenhum dos quais contém o smb_lock desanexado.
2) Se vfs_lock_file() retornar -ENOENT no caminho UNLOCK, goto out causa vazamento de smb_lock e flock pela mesma razão. O código de erro retornado ao despachante também está desatualizado.
3) No caminho de rollback, smb_flock_init() pode retornar NULL em caso de falha de alocação. O resultado é dereferenciado incondicionalmente, causando uma dereferência de ponteiro NULL no kernel. Adiciona-se uma verificação NULL para evitar a falha e limpar a contabilidade; o próprio bloqueio VFS não pode ser desfeito sem a alocação e será liberado na desmontagem do arquivo ou do encerramento da conexão.
Corrigem-se os casos 1 e 2 elevando as chamadas locks_free_lock()/kfree() para antes da verificação if(!rc) no ramo UNLOCK, de modo que todos os caminhos de saída compartilhem um único local de liberação, e liberando smb_lock e flock antes de goto out no ramo não-UNLOCK. Propaga-se o código de erro correto em ambos os casos. Corrige-se o caso 3 envolvendo o desbloqueio VFS em uma guarda if(rlock) e adicionando uma verificação NULL para locks_free_lock(rlock) na limpeza compartilhada.
Identificado por meio de análise de call-graph usando sqry.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.