Description
In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Handle vfork()/CLONE_VM correctly Matthieu and Jiri reported stalls where a task endlessly loops in mm_get_cid() when scheduling in. It turned out that the logic which handles vfork()'ed tasks is broken. It is invoked when the number of tasks associated to a process is smaller than the number of MMCID users. It then walks the task list to find the vfork()'ed task, but accounts all the already processed tasks as well. If that double processing brings the number of to be handled tasks to 0, the walk stops and the vfork()'ed task's CID is not fixed up. As a consequence a subsequent schedule in fails to acquire a (transitional) CID and the machine stalls. Cure this by removing the accounting condition and make the fixup always walk the full task list if it could not find the exact number of users in the process' thread list.
Product status
fbd0e71dc370af73f6b316e4de9eed273dd90340 (git) before e6761cdce78a8919a537989afb6aaf6881469f83
fbd0e71dc370af73f6b316e4de9eed273dd90340 (git) before 28b5a1395036d6c7a6c8034d85ad3d7d365f192c
6.19
Any version before 6.19
6.19.9 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/e6761cdce78a8919a537989afb6aaf6881469f83
git.kernel.org/...c/28b5a1395036d6c7a6c8034d85ad3d7d365f192c