Description
In the Linux kernel, the following vulnerability has been resolved: net/smc: Transitional solution for clcsock race issue We encountered a crash in smc_setsockopt() and it is caused by accessing smc->clcsock after clcsock was released. BUG: kernel NULL pointer dereference, address: 0000000000000020 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI CPU: 1 PID: 50309 Comm: nginx Kdump: loaded Tainted: G E 5.16.0-rc4+ #53 RIP: 0010:smc_setsockopt+0x59/0x280 [smc] Call Trace: <TASK> __sys_setsockopt+0xfc/0x190 __x64_sys_setsockopt+0x20/0x30 do_syscall_64+0x34/0x90 entry_SYSCALL_64_after_hwframe+0x44/0xae RIP: 0033:0x7f16ba83918e </TASK> This patch tries to fix it by holding clcsock_release_lock and checking whether clcsock has already been released before access. In case that a crash of the same reason happens in smc_getsockopt() or smc_switch_to_fallback(), this patch also checkes smc->clcsock in them too. And the caller of smc_switch_to_fallback() will identify whether fallback succeeds according to the return value.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
fd57770dd198f5b2ddd5b9e6bf282cf98d63adb9 to < 38f0bdd548fd2ef5d481b88d8a2bfef968452e34affectedfd57770dd198f5b2ddd5b9e6bf282cf98d63adb9 to < 4284225cd8001e134f5cf533a7cd244bbb654d0faffectedfd57770dd198f5b2ddd5b9e6bf282cf98d63adb9 to < c0bf3d8a943b6f2e912b7c1de03e2ef28e76f760affectedd1d004585b40c212b338fc8a40cbaaf230ea4703affected4.19.299 to < 4.20affected
Linux Linux
Default version status: affected
5.1affected0 to < 5.1unaffected5.15.19 to ≤ 5.15.*unaffected5.16.5 to ≤ 5.16.*unaffected5.17 to ≤ *unaffected