CVE-2026-90108 in Linux
Resumen
por VulDB • 2026-09-17
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/smc: liberar qentry almacenado antes de sobrescribir en la transición de REQ_ADD_LINK a ADD_LINK
Cuando smc_llc_event_handler() cambia el flujo LLC local desde SMC_LLC_FLOW_REQ_ADD_LINK a SMC_LLC_FLOW_ADD_LINK al recibir una solicitud ADD_LINK, llama incondicionalmente a smc_llc_flow_qentry_set():
if (lgr->llc_flow_lcl.type == SMC_LLC_FLOW_REQ_ADD_LINK) {
lgr->llc_flow_lcl.type = SMC_LLC_FLOW_ADD_LINK; smc_llc_flow_qentry_set(&lgr->llc_flow_lcl, qentry); ... }
Un CONFIRM_LINK o ADD_LINK_CONT que llega mientras flow->type es SMC_LLC_FLOW_REQ_ADD_LINK se almacena en flow->qentry a través del manejador SMC_LLC_CONFIRM_LINK / SMC_LLC_ADD_LINK_CONT (que guarda en flow->qentry para cualquier tipo de flujo distinto a NONE). Cuando llega el ADD_LINK posterior, la rama REQ_ADD_LINK sobrescribe flow->qentry con el nuevo puntero sin liberar primero la asignación almacenada, provocando una fuga de un objeto kmalloc.
La entrada almacenada no tiene consumidor: smc_llc_wait() solo se llama desde llc_add_link_work, que aún no está programado mientras el tipo de flujo sigue siendo REQ_ADD_LINK. No hay ningún proceso en espera (waiter) durmiendo en llc_msg_waiter en este momento. Es seguro liberar incondicionalmente cualquier qentry almacenada antes de la sobrescritura.
Llamar a smc_llc_flow_qentry_del() antes de smc_llc_flow_qentry_set() en la rama REQ_ADD_LINK. smc_llc_flow_qentry_del() ya comprueba flow->qentry antes de liberar, por lo que el camino normal donde no hay ninguna entrada almacenada es una operación nula (no-op).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.