7.8
/ 10
HIGH
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Description
In the Linux kernel, the following vulnerability has been resolved:
net: nexthop: fix percpu use-after-free in remove_nh_grp_entry
When removing a nexthop from a group, remove_nh_grp_entry() publishes
the new group via rcu_assign_pointer() then immediately frees the
removed entry's percpu stats with free_percpu(). However, the
synchronize_net() grace period in the caller remove_nexthop_from_groups()
runs after the free. RCU readers that entered before the publish still
see the old group and can dereference the freed stats via
nh_grp_entry_stats_inc() -> get_cpu_ptr(nhge->stats), causing a
use-after-free on percpu memory.
Fix by deferring the free_percpu() until after synchronize_net() in the
caller. Removed entries are chained via nh_list onto a local deferred
free list. After the grace period completes and all RCU readers have
finished, the percpu stats are safely freed.
net: nexthop: fix percpu use-after-free in remove_nh_grp_entry
When removing a nexthop from a group, remove_nh_grp_entry() publishes
the new group via rcu_assign_pointer() then immediately frees the
removed entry's percpu stats with free_percpu(). However, the
synchronize_net() grace period in the caller remove_nexthop_from_groups()
runs after the free. RCU readers that entered before the publish still
see the old group and can dereference the freed stats via
nh_grp_entry_stats_inc() -> get_cpu_ptr(nhge->stats), causing a
use-after-free on percpu memory.
Fix by deferring the free_percpu() until after synchronize_net() in the
caller. Removed entries are chained via nh_list onto a local deferred
free list. After the grace period completes and all RCU readers have
finished, the percpu stats are safely freed.
Basic Information
ID
CVE-2026-43374
Source
Linux
Published
May 8, 2026 at 14:21
Modified
May 11, 2026 at 06:33
Affected Product
Vendor
Linux
Product
Linux
Version
f4676ea74b8549cd88dbfe2a592ce4530039e61f
Affected Versions
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux 6.9
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux f4676ea74b8549cd88dbfe2a592ce4530039e61f
Linux Linux 6.9