CVE-2026-31680
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Summary
In the Linux kernel, the following vulnerability has been resolved:
net: ipv6: flowlabel: defer exclusive option free until RCU teardown
ip6fl_seq_show() walks the global flowlabel hash under the seq-file
RCU read-side lock and prints fl->opt->opt_nflen when an option block
is present.
Exclusive flowlabels currently free fl->opt as soon as fl->users
drops to zero in fl_release(). However, the surrounding
struct ip6_flowlabel remains visible in the global hash table until
later garbage collection removes it and fl_free_rcu() finally tears it
down.
A concurrent /proc/net/ip6_flowlabel reader can therefore race that
early kfree() and dereference freed option state, triggering a crash
in ip6fl_seq_show().
Fix this by keeping fl->opt alive until fl_free_rcu(). That matches
the lifetime already required for the enclosing flowlabel while readers
can still reach it under RCU.
Affected Software
| Vendor | Product | Version Range | Status |
|---|---|---|---|
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 4b6798024f7b2d535f3db1002c760143cdbd1bd3 | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 3c54b66c83fb8fcbde8e6a7bf90b65856e39f827 | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 5a6b15f861b7c1304949e3350d23490a5fe429fd | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 6c7fbdb8ffde6413640de7cfbd7c976c353e89f8 | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 8027964931785cb73d520ac70a342a3dc16c249b | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 414726b69921fe6355ae453f5b35e68dd078342a | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 572ce62778519a7d4d1c15f55dd2e45a474133c4 | affected |
| Linux | Linux | d3aedd5ebd4b0b925b0bcda548066803e1318499 < 9ca562bb8e66978b53028fa32b1a190708e6a091 | affected |
| Linux | Linux | 3.9 | affected |
| Linux | Linux | 0 < 3.9 | unaffected |
| Linux | Linux | 5.10.253 <= 5.10.* | unaffected |
| Linux | Linux | 5.15.203 <= 5.15.* | unaffected |
| Linux | Linux | 6.1.168 <= 6.1.* | unaffected |
| Linux | Linux | 6.6.134 <= 6.6.* | unaffected |
| Linux | Linux | 6.12.81 <= 6.12.* | unaffected |
| Linux | Linux | 6.18.22 <= 6.18.* | unaffected |
| Linux | Linux | 6.19.12 <= 6.19.* | unaffected |
| Linux | Linux | 7.0 <= * | unaffected |
Weaknesses
References
- https://git.kernel.org/stable/c/4b6798024f7b2d535f3db1002c760143cdbd1bd3
- https://git.kernel.org/stable/c/3c54b66c83fb8fcbde8e6a7bf90b65856e39f827
- https://git.kernel.org/stable/c/5a6b15f861b7c1304949e3350d23490a5fe429fd
- https://git.kernel.org/stable/c/6c7fbdb8ffde6413640de7cfbd7c976c353e89f8
- https://git.kernel.org/stable/c/8027964931785cb73d520ac70a342a3dc16c249b
- https://git.kernel.org/stable/c/414726b69921fe6355ae453f5b35e68dd078342a
- https://git.kernel.org/stable/c/572ce62778519a7d4d1c15f55dd2e45a474133c4
- https://git.kernel.org/stable/c/9ca562bb8e66978b53028fa32b1a190708e6a091
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.