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:
bpf: Use RCU-safe iteration in dev_map_redirect_multi() SKB path
The DEVMAP_HASH branch in dev_map_redirect_multi() uses
hlist_for_each_entry_safe() to iterate hash buckets, but this function
runs under RCU protection (called from xdp_do_generic_redirect_map()
in softirq context). Concurrent writers (__dev_map_hash_update_elem,
dev_map_hash_delete_elem) modify the list using RCU primitives
(hlist_add_head_rcu, hlist_del_rcu).
hlist_for_each_entry_safe() performs plain pointer dereferences without
rcu_dereference(), missing the acquire barrier needed to pair with
writers' rcu_assign_pointer(). On weakly-ordered architectures (ARM64,
POWER), a reader can observe a partially-constructed node. It also
defeats CONFIG_PROVE_RCU lockdep validation and KCSAN data-race
detection.
Replace with hlist_for_each_entry_rcu() using rcu_read_lock_bh_held()
as the lockdep condition, consistent with the rcu_dereference_check()
used in the DEVMAP (non-hash) branch of the same functions. Also fix
the same incorrect lockdep_is_held(&dtab->index_lock) condition in
dev_map_enqueue_multi(), where the lock is not held either.
bpf: Use RCU-safe iteration in dev_map_redirect_multi() SKB path
The DEVMAP_HASH branch in dev_map_redirect_multi() uses
hlist_for_each_entry_safe() to iterate hash buckets, but this function
runs under RCU protection (called from xdp_do_generic_redirect_map()
in softirq context). Concurrent writers (__dev_map_hash_update_elem,
dev_map_hash_delete_elem) modify the list using RCU primitives
(hlist_add_head_rcu, hlist_del_rcu).
hlist_for_each_entry_safe() performs plain pointer dereferences without
rcu_dereference(), missing the acquire barrier needed to pair with
writers' rcu_assign_pointer(). On weakly-ordered architectures (ARM64,
POWER), a reader can observe a partially-constructed node. It also
defeats CONFIG_PROVE_RCU lockdep validation and KCSAN data-race
detection.
Replace with hlist_for_each_entry_rcu() using rcu_read_lock_bh_held()
as the lockdep condition, consistent with the rcu_dereference_check()
used in the DEVMAP (non-hash) branch of the same functions. Also fix
the same incorrect lockdep_is_held(&dtab->index_lock) condition in
dev_map_enqueue_multi(), where the lock is not held either.
Basic Information
ID
CVE-2026-53096
Source
Linux
Published
Jun 24, 2026 at 16:30
Modified
Jun 28, 2026 at 06:39
Affected Product
Vendor
Linux
Product
Linux
Version
e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Affected Versions
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux 5.14
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux e624d4ed4aa8cc3c69d1359b0aaea539203ed266
Linux Linux 5.14
References
- git.kernel.org /stable/c/4a3d0fe30b907ff324b1b49756f7e713d67f3645
- git.kernel.org /stable/c/b089aa6e94d7a08e74d076a0fe274842dc9feccc
- git.kernel.org /stable/c/571a05ea1baaccc0dc1e0d227b2cbc978b96d392
- git.kernel.org /stable/c/cb2c1f3cf65b855548e1b8d55a08bfbaa5a0901a
- git.kernel.org /stable/c/d4c4bd231ebad70e6f30db429e9640bf378b2f52
- git.kernel.org /stable/c/7027e705062482a8cea43a1c13ede3c35653966f
- git.kernel.org /stable/c/8ed82f807bb09d2c8455aaa665f2c6cb17bc6a19