Description
In the Linux kernel, the following vulnerability has been resolved: autofs: ignore notification errors from a replaced pipe autofs_notify_daemon() takes a reference to the current notification pipe under wq_mutex, then drops the mutex before writing the request. The write can block while the daemon enters catatonic mode and installs a replacement pipe. If the old pipe's reader is then closed, the delayed write returns -EPIPE and the generic error path enters catatonic mode again. That transition acts on the current superblock state, closes the replacement pipe, and releases the new daemon generation's wait queues. Only enter catatonic mode when the pipe which failed is still the current pipe. Factor the already-locked transition so the identity check and state change are atomic with respect to another replacement. This was reproduced on v7.3-rc5-337-gff47652a4b66c in a local QEMU guest. An unprivileged UID 65534 lookup filled the old packet pipe before a normal CATATONIC/SETPIPEFD restart. On the unmodified kernel, the new pipe received HUP and both a pending victim lookup and a later lookup failed with ENOENT in two out of two fresh-mount runs. With this change, the new pipe remained active, received an intact 304-byte request, and both victim lookups completed in two out of two runs. Normal lookup and restart-without-a-blocked-writer controls passed. No KASAN, oops, refcount, or lock diagnostic was observed. A source reproducer and complete local logs are available privately on request. The demonstrated impact is limited to denial of a shared autofs service during a legitimate daemon restart. No memory corruption, information leak, privilege escalation, or code execution primitive was observed.
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
8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < 95ba5de229c1875e836f10646c4e6c454d560060affected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < d3477ebdce74dc3bae404048258e70d7046c208aaffected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < 6d2b8ad36e09e07993addd4ce92b578d3b13c8f8affected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < 35c2c4f3cf1403b058237c44000199a6c9a59273affected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < 8c8386ffc582155451f074f25759f665e626a850affected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < 1a177064f501ed4b67873a43aae5d5bdb18b3704affected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < fb296391f685d82dbb93621a970fb234cea45280affected8d7b48e0bc5fa01a818eac713d4cb0763090cd0e to < 65676cd4203c0e41a94caf54080a7f0a95434bdaaffected
Linux Linux
Default version status: affected
2.6.28affected0 to < 2.6.28unaffected5.10.273 to ≤ 5.10.*unaffected5.15.224 to ≤ 5.15.*unaffected6.1.191 to ≤ 6.1.*unaffected6.6.161 to ≤ 6.6.*unaffected6.12.115 to ≤ 6.12.*unaffected6.18.59 to ≤ 6.18.*unaffected7.2.13 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/95ba5de229c1875e836f10646c4e6c454d560060 ↗
- https://git.kernel.org/stable/c/d3477ebdce74dc3bae404048258e70d7046c208a ↗
- https://git.kernel.org/stable/c/6d2b8ad36e09e07993addd4ce92b578d3b13c8f8 ↗
- https://git.kernel.org/stable/c/35c2c4f3cf1403b058237c44000199a6c9a59273 ↗
- https://git.kernel.org/stable/c/8c8386ffc582155451f074f25759f665e626a850 ↗
- https://git.kernel.org/stable/c/1a177064f501ed4b67873a43aae5d5bdb18b3704 ↗
- https://git.kernel.org/stable/c/fb296391f685d82dbb93621a970fb234cea45280 ↗
- https://git.kernel.org/stable/c/65676cd4203c0e41a94caf54080a7f0a95434bda ↗