Description
In the Linux kernel, the following vulnerability has been resolved: net/sched: teql: fix NULL pointer dereference in iptunnel_xmit on TEQL slave xmit teql_master_xmit() calls netdev_start_xmit(skb, slave) to transmit through slave devices, but does not update skb->dev to the slave device beforehand. When a gretap tunnel is a TEQL slave, the transmit path reaches iptunnel_xmit() which saves dev = skb->dev (still pointing to teql0 master) and later calls iptunnel_xmit_stats(dev, pkt_len). This function does: get_cpu_ptr(dev->tstats) Since teql_master_setup() does not set dev->pcpu_stat_type to NETDEV_PCPU_STAT_TSTATS, the core network stack never allocates tstats for teql0, so dev->tstats is NULL. get_cpu_ptr(NULL) computes NULL + __per_cpu_offset[cpu], resulting in a page fault. BUG: unable to handle page fault for address: ffff8880e6659018 #PF: supervisor write access in kernel mode #PF: error_code(0x0002) - not-present page PGD 68bc067 P4D 68bc067 PUD 0 Oops: Oops: 0002 [#1] SMP KASAN PTI RIP: 0010:iptunnel_xmit (./include/net/ip_tunnels.h:664 net/ipv4/ip_tunnel_core.c:89) Call Trace: ip_tunnel_xmit (net/ipv4/ip_tunnel.c:847) __gre_xmit (net/ipv4/ip_gre.c:478) gre_tap_xmit (net/ipv4/ip_gre.c:779) teql_master_xmit (net/sched/sch_teql.c:319) dev_hard_start_xmit (net/core/dev.c:3887) sch_direct_xmit (net/sched/sch_generic.c:347) __dev_queue_xmit (net/core/dev.c:4802) neigh_direct_output (net/core/neighbour.c:1660) ip_finish_output2 (net/ipv4/ip_output.c:237) __ip_finish_output.part.0 (net/ipv4/ip_output.c:315) ip_mc_output (net/ipv4/ip_output.c:369) ip_send_skb (net/ipv4/ip_output.c:1508) udp_send_skb (net/ipv4/udp.c:1195) udp_sendmsg (net/ipv4/udp.c:1485) inet_sendmsg (net/ipv4/af_inet.c:859) __sys_sendto (net/socket.c:2206) Fix this by setting skb->dev = slave before calling netdev_start_xmit(), so that tunnel xmit functions see the correct slave device with properly allocated tstats.
Mitigation
Minimal update. May introduce new vulnerabilities or breaking changes.
|
 debian 11 | | =5.10.103-1 || =5.10.103-1~bpo10+1 || =5.10.106-1 || =5.10.113-1 || =5.10.120-1 || =5.10.120-1~bpo10+1 || =5.10.127-1 || =5.10.127-2 || =5.10.127-2~bpo10+1 || =5.10.136-1 || =5.10.140-1 || =5.10.148-1 || =5.10.149-1 || =5.10.149-2 || =5.10.158-1 || =5.10.158-2 || =5.10.162-1 || =5.10.178-1 || =5.10.178-2 || =5.10.178-3 || =5.10.179-1 || =5.10.179-2 || =5.10.179-3 || =5.10.179-4 || =5.10.179-5 || =5.10.191-1 || =5.10.197-1 || =5.10.205-1 || =5.10.205-2 || =5.10.209-1 || =5.10.209-2 || =5.10.216-1 || =5.10.218-1 || =5.10.221-1 || =5.10.223-1 || =5.10.226-1 || =5.10.234-1 || =5.10.237-1 || =5.10.244-1 || =5.10.247-1 || =5.10.249-1 || =5.10.251-1 || =5.10.251-3 || =5.10.251-4 || =5.10.251-5 || =5.10.46-4 || =5.10.46-5 || =5.10.70-1 || =5.10.70-1~bpo10+1 || =5.10.84-1 || =5.10.92-1 || =5.10.92-1~bpo10+1 || =5.10.92-2 || >=0 <5.10.257-1 | 5.10.257-1 |
 debian 12 | | =6.1.106-1 || =6.1.106-2 || =6.1.106-3 || =6.1.112-1 || =6.1.115-1 || =6.1.119-1 || =6.1.123-1 || =6.1.124-1 || =6.1.128-1 || =6.1.129-1 || =6.1.133-1 || =6.1.135-1 || =6.1.137-1 || =6.1.139-1 || =6.1.140-1 || =6.1.147-1 || =6.1.148-1 || =6.1.153-1 || =6.1.158-1 || =6.1.159-1 || =6.1.162-1 || =6.1.164-1 || =6.1.27-1 || =6.1.37-1 || =6.1.38-1 || =6.1.38-2 || =6.1.38-2~bpo11+1 || =6.1.38-3 || =6.1.38-4 || =6.1.38-4~bpo11+1 || =6.1.52-1 || =6.1.55-1 || =6.1.55-1~bpo11+1 || =6.1.64-1 || =6.1.66-1 || =6.1.67-1 || =6.1.69-1 || =6.1.69-1~bpo11+1 || =6.1.76-1 || =6.1.76-1~bpo11+1 || =6.1.82-1 || =6.1.85-1 || =6.1.90-1 || =6.1.90-1~bpo11+1 || =6.1.94-1 || =6.1.94-1~bpo11+1 || =6.1.98-1 || =6.1.99-1 || >=0 <6.1.170-1 | 6.1.170-1 |
 debian 13 | | =6.12.38-1 || =6.12.41-1 || =6.12.43-1 || =6.12.43-1~bpo12+1 || =6.12.48-1 || =6.12.57-1 || =6.12.57-1~bpo12+1 || =6.12.63-1 || =6.12.63-1~bpo12+1 || =6.12.69-1 || =6.12.69-1~bpo12+1 || =6.12.73-1 || =6.12.73-1~bpo12+1 || =6.12.74-1 || =6.12.74-2 || =6.12.74-2~bpo12+1 || =6.12.85-1~bpo12+1 || >=0 <6.12.85-1 | 6.12.85-1 |
 debian 14 | | =6.12.38-1 || =6.12.41-1 || =6.12.43-1 || =6.12.43-1~bpo12+1 || =6.12.48-1 || =6.12.57-1 || =6.12.57-1~bpo12+1 || =6.12.63-1 || =6.12.63-1~bpo12+1 || =6.12.69-1 || =6.12.69-1~bpo12+1 || =6.12.73-1 || =6.12.73-1~bpo12+1 || =6.12.74-1 || =6.12.74-2 || =6.12.74-2~bpo12+1 || =6.12.85-1 || =6.12.85-1~bpo12+1 || =6.12.86-1 || =6.12.86-1~bpo12+1 || =6.12.88-1 || =6.12.88-1~bpo12+1 || =6.12.90-1 || =6.12.90-1~bpo12+1 || =6.12.90-2 || =6.13.10-1~exp1 || =6.13.11-1~exp1 || =6.13.2-1~exp1 || =6.13.3-1~exp1 || =6.13.4-1~exp1 || =6.13.5-1~exp1 || =6.13.6-1~exp1 || =6.13.7-1~exp1 || =6.13.8-1~exp1 || =6.13.9-1~exp1 || =6.13~rc6-1~exp1 || =6.13~rc7-1~exp1 || =6.14.3-1~exp1 || =6.14.5-1~exp1 || =6.14.6-1~exp1 || =6.15-1~exp1 || =6.15.1-1~exp1 || =6.15.2-1~exp1 || =6.15.3-1~exp1 || =6.15.4-1~exp1 || =6.15.5-1~exp1 || =6.15.6-1~exp1 || =6.15~rc7-1~exp1 || =6.16-1~exp1 || =6.16.1-1~exp1 || =6.16.10-1 || =6.16.11-1 || =6.16.12-1 || =6.16.12-1~bpo13+1 || =6.16.12-2 || =6.16.3-1 || =6.16.3-1~bpo13+1 || =6.16.5-1 || =6.16.6-1 || =6.16.7-1 || =6.16.8-1 || =6.16.9-1 || =6.16~rc7-1~exp1 || =6.17.10-1 || =6.17.11-1 || =6.17.12-1 || =6.17.13-1 || =6.17.13-1~bpo13+1 || =6.17.2-1~exp1 || =6.17.5-1~exp1 || =6.17.6-1 || =6.17.7-1 || =6.17.7-2 || =6.17.8-1 || =6.17.8-1~bpo13+1 || =6.17.9-1 || =6.18.1-1~exp1 || =6.18.10-1 || =6.18.12-1 || =6.18.12-1~bpo13+1 || =6.18.13-1 || =6.18.14-1 || =6.18.15-1 || =6.18.15-1~bpo13+1 || =6.18.2-1~exp1 || =6.18.3-1 || =6.18.5-1 || =6.18.5-1~bpo13+1 || =6.18.8-1 || =6.18.9-1 || =6.18.9-1~bpo13+1 || =6.18~rc4-1~exp1 || =6.18~rc4-1~exp2 || =6.18~rc5-1~exp1 || =6.18~rc6-1~exp1 || =6.18~rc7-1~exp1 || =6.19-1~exp1 || =6.19.10-1~bpo13+1 || =6.19.2-1~exp1 || =6.19.3-1~exp1 || =6.19.4-1~exp1 || =6.19.5-1~exp1 || =6.19.6-1 || =6.19.6-2 || =6.19.6-2~bpo13+1 || =6.19.8-1 || =6.19.8-1~bpo13+1 || =6.19~rc4-1~exp1 || =6.19~rc5-1~exp1 || =6.19~rc6-1~exp1 || =6.19~rc7-1~exp1 || =6.19~rc8-1~exp1 || >=0 <6.19.10-1 | 6.19.10-1 |
 rpm rhel8 | | - | - |
 rpm rhel6 | | - | - |
 rpm rhel7 | | - | - |
 rpm rhel8 | | - | - |
 rpm rhel7 | | - | - |
 debian 11 | | =6.1.106-3~deb11u1 || =6.1.106-3~deb11u2 || =6.1.106-3~deb11u3 || =6.1.112-1~deb11u1 || =6.1.119-1~deb11u1 || =6.1.128-1~deb11u1 || =6.1.129-1~deb11u1 || =6.1.137-1~deb11u1 || =6.1.140-1~deb11u1 || =6.1.147-1~deb11u1 || =6.1.148-1~deb11u1 || =6.1.153-1~deb11u1 || =6.1.158-1~deb11u1 || =6.1.159-1~deb11u1 || =6.1.162-1~deb11u1 || =6.1.164-1~deb11u1 || >=0 <6.1.170-1~deb11u1 | 6.1.170-1~deb11u1 |