Description
In the Linux kernel, the following vulnerability has been resolved: tcp: fix potential race in tcp_v6_syn_recv_sock() Code in tcp_v6_syn_recv_sock() after the call to tcp_v4_syn_recv_sock() is done too late. After tcp_v4_syn_recv_sock(), the child socket is already visible from TCP ehash table and other cpus might use it. Since newinet->pinet6 is still pointing to the listener ipv6_pinfo bad things can happen as syzbot found. Move the problematic code in tcp_v6_mapped_child_init() and call this new helper from tcp_v4_syn_recv_sock() before the ehash insertion. This allows the removal of one tcp_sync_mss(), since tcp_v4_syn_recv_sock() will call it with the correct context.
Product status
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before fe89b2f05b854847784f91127319172945c1fadd
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 7178e2a8027423b2af17ab95df73a749a5b72e5b
1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (git) before 858d2a4f67ff69e645a43487ef7ea7f28f06deae
2.6.12
Any version before 2.6.12
6.18.16 (semver)
6.19.6 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/fe89b2f05b854847784f91127319172945c1fadd
git.kernel.org/...c/7178e2a8027423b2af17ab95df73a749a5b72e5b
git.kernel.org/...c/858d2a4f67ff69e645a43487ef7ea7f28f06deae