PT-2026-61349 · Linux · Linux

CVE-2026-64032

·

Published

2026-07-19

·

Updated

2026-07-19

CVSS v3.1

7.8

High

VectorAV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
In the Linux kernel, the following vulnerability has been resolved:
bridge: mcast: Fix a possible use-after-free when removing a bridge port
When per-VLAN multicast snooping is enabled, the bridge iterates over all the bridge ports, disables the per-port multicast context on each port and enables the per-{port, VLAN} multicast contexts instead. The reverse happens when per-VLAN multicast snooping is disabled.
When global multicast snooping is enabled, the bridge iterates over all the bridge ports and enables the per-port multicast context on each port. The reverse happens when multicast snooping is disabled.
The above scheme can result in a situation where both types of contexts (per-port and per-{port, VLAN}) are enabled on a single bridge port:

ip link add name br1 up type bridge mcast snooping 1 mcast querier 1 vlan filtering 1

ip link add name dummy1 up master br1 type dummy

ip link set dev br1 type bridge mcast vlan snooping 1

ip link set dev br1 type bridge mcast snooping 0

ip link set dev br1 type bridge mcast snooping 1

This is not intended and it is a problem since the commit cited below. Prior to this commit, when removing a bridge port, br multicast disable port() would disable the per-port multicast context and the per-{port, VLAN} multicast contexts would get disabled when flushing VLANs.
After this commit, br multicast disable port() only disables the per-port multicast context if per-VLAN multicast snooping is disabled. If both types of contexts were enabled on the port when it was removed, the per-port multicast context would remain enabled when freeing the bridge port, leading to a use-after-free [1].
Fix by preventing the bridge from enabling / disabling the per-port multicast contexts when toggling global multicast snooping if per-VLAN multicast snooping is enabled.
[1] ODEBUG: free active (active state 0) object: ffff88810f8bda78 object type: timer list hint: br ip6 multicast port query expired (net/bridge/br multicast.c:1927) WARNING: lib/debugobjects.c:629 at debug print object+0x1b1/0x3e0, CPU#5: swapper/5/0 [...] Call Trace: debug check no obj freed (lib/debugobjects.c:1116) kfree (mm/slub.c:2620 mm/slub.c:6250 mm/slub.c:6565) kobject cleanup (lib/kobject.c:689) rcu do batch (kernel/rcu/tree.c:2617) rcu core (kernel/rcu/tree.c:2869) handle softirqs (kernel/softirq.c:622) irq exit rcu (kernel/softirq.c:656 kernel/softirq.c:496 kernel/softirq.c:735) irq exit rcu (kernel/softirq.c:752) sysvec apic timer interrupt (arch/x86/kernel/apic/apic.c:1061 (discriminator 47) arch/x86/kernel/apic/apic.c:1061 (discriminator 47))

Fix

Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-64032

Affected Products

Linux