Vulnerabilidad en Linux (CVE-2026-23175)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
14/02/2026
Última modificación:
18/02/2026
Descripción
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br />
<br />
net: cpsw: Ejecutar la devolución de llamada ndo_set_rx_mode en una cola de trabajo<br />
<br />
El commit 1767bb2d47b7 (&#39;ipv6: mcast: No retener RTNL para IPV6_ADD_MEMBERSHIP y MCAST_JOIN_GROUP.&#39;) eliminó el bloqueo RTNL para las operaciones IPV6_ADD_MEMBERSHIP y MCAST_JOIN_GROUP. Sin embargo, este cambio desencadenó el siguiente rastreo de llamadas en mi placa BeagleBone Black:<br />
WARNING: net/8021q/vlan_core.c:236 en vlan_for_each+0x120/0x124, CPU#0: rpcbind/481<br />
RTNL: aserción fallida en net/8021q/vlan_core.c (236)<br />
Módulos enlazados:<br />
CPU: 0 UID: 997 PID: 481 Comm: rpcbind No contaminado 6.19.0-rc7-next-20260130-yocto-standard+ #35 PREEMPT<br />
Nombre del hardware: Generic AM33XX (Flattened Device Tree)<br />
Rastreo de llamadas:<br />
unwind_backtrace desde show_stack+0x28/0x2c<br />
show_stack desde dump_stack_lvl+0x30/0x38<br />
dump_stack_lvl desde __warn+0xb8/0x11c<br />
__warn desde warn_slowpath_fmt+0x130/0x194<br />
warn_slowpath_fmt desde vlan_for_each+0x120/0x124<br />
vlan_for_each desde cpsw_add_mc_addr+0x54/0x98<br />
cpsw_add_mc_addr desde __hw_addr_ref_sync_dev+0xc4/0xec<br />
__hw_addr_ref_sync_dev desde __dev_mc_add+0x78/0x88<br />
__dev_mc_add desde igmp6_group_added+0x84/0xec<br />
igmp6_group_added desde __ipv6_dev_mc_inc+0x1fc/0x2f0<br />
__ipv6_dev_mc_inc desde __ipv6_sock_mc_join+0x124/0x1b4<br />
__ipv6_sock_mc_join desde do_ipv6_setsockopt+0x84c/0x1168<br />
do_ipv6_setsockopt desde ipv6_setsockopt+0x88/0xc8<br />
ipv6_setsockopt desde do_sock_setsockopt+0xe8/0x19c<br />
do_sock_setsockopt desde __sys_setsockopt+0x84/0xac<br />
__sys_setsockopt desde ret_fast_syscall+0x0/0x54<br />
<br />
Este rastreo ocurre porque se llama a vlan_for_each() dentro de cpsw_ndo_set_rx_mode(), que espera que el bloqueo RTNL esté retenido. Dado que modificar vlan_for_each() para operar sin el bloqueo RTNL no es sencillo, y debido a que ndo_set_rx_mode() se invoca tanto con como sin el bloqueo RTNL a través de diferentes rutas de código, simplemente añadir rtnl_lock() en cpsw_ndo_set_rx_mode() no es una solución viable.<br />
<br />
Para resolver este problema, optamos por ejecutar el procesamiento real dentro de una cola de trabajo, siguiendo el enfoque utilizado por el controlador icssg-prueth.<br />
<br />
Tenga en cuenta: Para reproducir este problema, revertí manualmente los cambios en am335x-bone-common.dtsi del commit c477358e66a3 (&#39;ARM: dts: am335x-bone: cambiar a nuevo controlador de switch cpsw&#39;) para revertir al controlador cpsw heredado.



