In the Linux kernel, the following vulnerability has been resolved:
fs/proc/task_mmu: fix loss of young/dirty bits during pagemap scan
makeuffdwp_pte() was previously doing:
pte = ptepget(ptep); ptepmodifyprotstart(ptep); pte = ptemkuffdwp(pte); ptepmodifyprot_commit(ptep, pte);
But if another thread accessed or dirtied the pte between the first 2 calls, this could lead to loss of that information. Since ptepmodifyprot_start() gets and clears atomically, the following is the correct pattern and prevents any possible race. Any access after the first call would see an invalid pte and cause a fault:
pte = ptepmodifyprotstart(ptep); pte = ptemkuffdwp(pte); ptepmodifyprotcommit(ptep, pte);
{ "vanir_signatures": [ { "target": { "file": "fs/proc/task_mmu.c" }, "id": "CVE-2024-36943-d0e56e50", "digest": { "threshold": 0.9, "line_hashes": [ "178149443372465452950006555662685828140", "259174068185066441737480883071601879488", "154387457119575594475612024270051455521", "123040074461021125722855029099230285685" ] }, "signature_version": "v1", "deprecated": false, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c70dce4982ce1718bf978a35f8e26160b82081f4", "signature_type": "Line" }, { "target": { "file": "fs/proc/task_mmu.c" }, "id": "CVE-2024-36943-fc71f587", "digest": { "threshold": 0.9, "line_hashes": [ "178149443372465452950006555662685828140", "259174068185066441737480883071601879488", "154387457119575594475612024270051455521", "123040074461021125722855029099230285685" ] }, "signature_version": "v1", "deprecated": false, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@74b3d66f91d9f539f99faad74d796fa9a389a015", "signature_type": "Line" } ] }