Description
In the Linux kernel, the following vulnerability has been resolved: exec: do_close_on_exec() before taking exec_update_lock do_close_on_exec() currently happens while holding the exec_update_lock, which is used in a lot of places that access process state to synchronize access checks. I recently added another such use of exec_update_lock, causing a regression. do_close_on_exec() can block waiting for a reply from a filesystem. That means a hung filesystem can block codepaths that use exec_update_lock; and it also means that a FUSE filesystem which attempts to inspect the calling process can deadlock. To avoid such problems, move do_close_on_exec() before the exec_update_lock is taken, but after the FD table has been copied if necessary. I have looked through all the calls between the old and new position of the do_close_on_exec() call; there seems to be no file descriptor table access in between.
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
ae1e630bcaac739f625822078edbaea98366930d to < 955973fff4a36d39a848b00cac1706863f568fe1affectedd54f14655fd7d7b293698a8b6918563c4c0465e7 to < 550feab5b01000ab314868b62211fb3ddfd600e8affectedbb43679356f1f2a4c6b1c88aec4f021e5b5c74e9 to < 5aacc19ba2b1faf84c4a2f2cf9a1784e03d1ff38affected7456ae990a9738962b33146916fabca62ae3d4e0 to < 3feb4020bfb7ccf0d347f27051639d25e19cd65daffected4bfe8c481846cee52473a2f7d7b30ee8e6749fc4 to < 0d86cd6b709c39216e6ee5ea8f0fc4242bbb2b53affectedf9b4b03ccc9c69bf7f7298d4559906ebea7143b3 to < 19ddef61ee0a49782a60f8f497e50597ad5de2daaffected6650527444dadc63d84aa939d14ecba4fadb2f69 to < 63be3d8511bdafa095cd14a393cbf3c58dbbb928affected6650527444dadc63d84aa939d14ecba4fadb2f69 to < e780259b54e618ceb4763fbc21314acf3565e813affectedc1cfd63326f5d09999134e9052c353faf738286eaffected5.10.261 to < 5.10.271affected5.15.212 to < 5.15.222affected6.1.178 to < 6.1.189affected6.6.145 to < 6.6.158affected6.12.97 to < 6.12.111affected6.18.40 to < 6.18.53affected7.1.4 to < 7.2affected
Linux Linux
Default version status: affected
7.2affected0 to < 7.2unaffected5.10.271 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/955973fff4a36d39a848b00cac1706863f568fe1 ↗
- https://git.kernel.org/stable/c/550feab5b01000ab314868b62211fb3ddfd600e8 ↗
- https://git.kernel.org/stable/c/5aacc19ba2b1faf84c4a2f2cf9a1784e03d1ff38 ↗
- https://git.kernel.org/stable/c/3feb4020bfb7ccf0d347f27051639d25e19cd65d ↗
- https://git.kernel.org/stable/c/0d86cd6b709c39216e6ee5ea8f0fc4242bbb2b53 ↗
- https://git.kernel.org/stable/c/19ddef61ee0a49782a60f8f497e50597ad5de2da ↗
- https://git.kernel.org/stable/c/63be3d8511bdafa095cd14a393cbf3c58dbbb928 ↗
- https://git.kernel.org/stable/c/e780259b54e618ceb4763fbc21314acf3565e813 ↗