Description
In the Linux kernel, the following vulnerability has been resolved: tracing: Fix WARN_ON in tracing_buffers_mmap_close When a process forks, the child process copies the parent's VMAs but the user_mapped reference count is not incremented. As a result, when both the parent and child processes exit, tracing_buffers_mmap_close() is called twice. On the second call, user_mapped is already 0, causing the function to return -ENODEV and triggering a WARN_ON. Normally, this isn't an issue as the memory is mapped with VM_DONTCOPY set. But this is only a hint, and the application can call madvise(MADVISE_DOFORK) which resets the VM_DONTCOPY flag. When the application does that, it can trigger this issue on fork. Fix it by incrementing the user_mapped reference count without re-mapping the pages in the VMA's open callback.
Product status
cf9f0f7c4c5bb45e7bb270e48bab6f7837825a64 (git) before 91f3e8d84c89918769e71393f839c9fefadc2580
cf9f0f7c4c5bb45e7bb270e48bab6f7837825a64 (git) before cdd96641b64297a2db42676f051362b76280a58b
cf9f0f7c4c5bb45e7bb270e48bab6f7837825a64 (git) before b0f269ba6fefe9e3cb9feedcf78fcd0b633800c0
cf9f0f7c4c5bb45e7bb270e48bab6f7837825a64 (git) before e39bb9e02b68942f8e9359d2a3efe7d37ae6be0e
6.10
Any version before 6.10
6.12.77 (semver)
6.18.17 (semver)
6.19.7 (semver)
7.0 (original_commit_for_fix)
References
git.kernel.org/...c/91f3e8d84c89918769e71393f839c9fefadc2580
git.kernel.org/...c/cdd96641b64297a2db42676f051362b76280a58b
git.kernel.org/...c/b0f269ba6fefe9e3cb9feedcf78fcd0b633800c0
git.kernel.org/...c/e39bb9e02b68942f8e9359d2a3efe7d37ae6be0e