{"id":"CVE-2024-36489","revision":"62e271ddae3145d9aff16576813a3bf7","records":[{"revision":"62e271ddae3145d9aff16576813a3bf7","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2024-36489","aliases":[],"title":"tls: fix missing memory barrier in tls_init","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ntls: fix missing memory barrier in tls_init\n\nIn tls_init(), a write memory barrier is missing, and store-store\nreordering may cause NULL dereference in tls_{setsockopt,getsockopt}.\n\nCPU0                               CPU1\n-----                              -----\n// In tls_init()\n// In tls_ctx_create()\nctx = kzalloc()\nctx->sk_proto = READ_ONCE(sk->sk_prot) -(1)\n\n// In update_sk_prot()\nWRITE_ONCE(sk->sk_prot, tls_prots)     -(2)\n\n                                   // In sock_common_setsockopt()\n                                   READ_ONCE(sk->sk_prot)->setsockopt()\n\n                                   // In tls_{setsockopt,getsockopt}()\n                                   ctx->sk_proto->setsockopt()    -(3)\n\nIn the above scenario, when (1) and (2) are reordered, (3) can observe\nthe NULL value of ctx->sk_proto, causing NULL dereference.\n\nTo fix it, we rely on rcu_assign_pointer() which implies the release\nbarrier semantic. By moving rcu_assign_pointer() after ctx->sk_proto is\ninitialized, we can ensure that ctx->sk_proto are visible when\nchanging sk->sk_prot.","state":0,"publishedAt":"2024-06-21T10:18:10.327+00:00","modifiedAt":"2026-10-15T00:42:32.133+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"net/tls/tls_main.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"d5bee7374b68de3c44586d46e9e61ffc97a1e886\",\n                            \"lessThan\": \"d72e126e9a36d3d33889829df8fc90100bb0e071\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d5bee7374b68de3c44586d46e9e61ffc97a1e886\",\n                            \"lessThan\": \"2c260a24cf1c4d30ea3646124f766ee46169280b\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d5bee7374b68de3c44586d46e9e61ffc97a1e886\",\n                            \"lessThan\": \"335c8f1566d8e44c384d16b450a18554896d4e8b\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d5bee7374b68de3c44586d46e9e61ffc97a1e886\",\n                            \"lessThan\": \"ab67c2fd3d070a21914d0c31319d3858ab4e199c\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d5bee7374b68de3c44586d46e9e61ffc97a1e886\",\n                            \"lessThan\": \"ef21007a7b581c7fe64d5a10c320880a033c837b\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d5bee7374b68de3c44586d46e9e61ffc97a1e886\",\n                            \"lessThan\": \"91e61dd7a0af660408e87372d8330ceb218be302\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"net/tls/tls_main.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"5.7\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"5.7\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.10.219\",\n                            \"lessThanOrEqual\": \"5.10.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.15.161\",\n                            \"lessThanOrEqual\": \"5.15.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.1.93\",\n                            \"lessThanOrEqual\": \"6.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.6.33\",\n                            \"lessThanOrEqual\": \"6.6.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.9.4\",\n                            \"lessThanOrEqual\": \"6.9.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.10\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://git.kernel.org/stable/c/d72e126e9a36d3d33889829df8fc90100bb0e071","https://git.kernel.org/stable/c/2c260a24cf1c4d30ea3646124f766ee46169280b","https://git.kernel.org/stable/c/335c8f1566d8e44c384d16b450a18554896d4e8b","https://git.kernel.org/stable/c/ab67c2fd3d070a21914d0c31319d3858ab4e199c","https://git.kernel.org/stable/c/ef21007a7b581c7fe64d5a10c320880a033c837b","https://git.kernel.org/stable/c/91e61dd7a0af660408e87372d8330ceb218be302"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2024-36489","license":"CVE Program Terms of Use","key":"cve-program:CVE-2024-36489","identifiers":["CVE-2024-36489"]},"retained":false,"historicalAffected":[]}],"coverage":[]}