Description
In the Linux kernel, the following vulnerability has been resolved: net/smc: fix sleep-inside-lock in __smc_setsockopt() causing local DoS A logic flaw in __smc_setsockopt() allows a local unprivileged user to cause a Denial of Service (DoS) by holding the socket lock indefinitely. The function __smc_setsockopt() calls copy_from_sockptr() while holding lock_sock(sk). By passing a userfaultfd-monitored memory page (or FUSE-backed memory on systems where unprivileged userfaultfd is disabled) as the optval, an attacker can halt execution during the copy operation, keeping the lock held. Combined with asynchronous tear-down operations like shutdown(), this exhausts the kernel wq (kworkers) and triggers the hung task watchdog. [ 240.123456] INFO: task kworker/u8:2 blocked for more than 120 seconds. [ 240.123489] Call Trace: [ 240.123501] smc_shutdown+... [ 240.123512] lock_sock_nested+... This patch moves the user-space copy outside the lock_sock() critical section to prevent the issue.
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
a6a6fe27bab48f0d09a64b051e7bde432fcae081 to < 35a22117839602bb52283de08894c5a7dde92420affecteda6a6fe27bab48f0d09a64b051e7bde432fcae081 to < 5d27d2ffe487df89ce28fda0410eafa05dbe03a0affecteda6a6fe27bab48f0d09a64b051e7bde432fcae081 to < 89f6fbe0033c942cb790ffd53ca93a45eeaf1c91affecteda6a6fe27bab48f0d09a64b051e7bde432fcae081 to < dcd90f42a33e4220385f27b515183d0c91b2fc4aaffecteda6a6fe27bab48f0d09a64b051e7bde432fcae081 to < 94d286fa5eedc550d42bcb9c85416af8f77736ffaffecteda6a6fe27bab48f0d09a64b051e7bde432fcae081 to < a3fdd924d88c30b9f488636ce0e4696012cf5511affected
Linux Linux
Default version status: affected
5.18affected0 to < 5.18unaffected6.1.176 to ≤ 6.1.*unaffected6.6.143 to ≤ 6.6.*unaffected6.12.94 to ≤ 6.12.*unaffected6.18.36 to ≤ 6.18.*unaffected7.0.13 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/35a22117839602bb52283de08894c5a7dde92420 ↗
- https://git.kernel.org/stable/c/5d27d2ffe487df89ce28fda0410eafa05dbe03a0 ↗
- https://git.kernel.org/stable/c/89f6fbe0033c942cb790ffd53ca93a45eeaf1c91 ↗
- https://git.kernel.org/stable/c/dcd90f42a33e4220385f27b515183d0c91b2fc4a ↗
- https://git.kernel.org/stable/c/94d286fa5eedc550d42bcb9c85416af8f77736ff ↗
- https://git.kernel.org/stable/c/a3fdd924d88c30b9f488636ce0e4696012cf5511 ↗