CVE-2024-42316

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-42316
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-42316.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-42316
Downstream
Related
Published
2024-08-17T09:09:24Z
Modified
2025-10-14T21:14:33.178378Z
Summary
mm/mglru: fix div-by-zero in vmpressure_calc_level()
Details

In the Linux kernel, the following vulnerability has been resolved:

mm/mglru: fix div-by-zero in vmpressurecalclevel()

evictfolios() uses a second pass to reclaim folios that have gone through page writeback and become clean before it finishes the first pass, since foliorotate_reclaimable() cannot handle those folios due to the isolation.

The second pass tries to avoid potential double counting by deducting scancontrol->nrscanned. However, this can result in underflow of nrscanned, under a condition where shrinkfoliolist() does not increment nrscanned, i.e., when folio_trylock() fails.

The underflow can cause the divisor, i.e., scale=scanned+reclaimed in vmpressurecalclevel(), to become zero, resulting in the following crash:

[exception RIP: vmpressureworkfn+101] processonework at ffffffffa3313f2b

Since scancontrol->nrscanned has no established semantics, the potential double counting has minimal risks. Therefore, fix the problem by not deducting scancontrol->nrscanned in evict_folios().

References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
359a5e1416caaf9ce28396a65ed3e386cc5de663
Fixed
8de7bf77f21068a5f602bb1e59adbc5ab533509d
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
359a5e1416caaf9ce28396a65ed3e386cc5de663
Fixed
d6510f234c7d117790397f9bb150816b0a954a04
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
359a5e1416caaf9ce28396a65ed3e386cc5de663
Fixed
a39e38be632f0e1c908d70d1c9cd071c03faf895
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
359a5e1416caaf9ce28396a65ed3e386cc5de663
Fixed
8b671fe1a879923ecfb72dda6caf01460dd885ef

Affected versions

v6.*

v6.1
v6.1-rc5
v6.1-rc6
v6.1-rc7
v6.1-rc8
v6.1.1
v6.1.10
v6.1.100
v6.1.101
v6.1.102
v6.1.11
v6.1.12
v6.1.13
v6.1.14
v6.1.15
v6.1.16
v6.1.17
v6.1.18
v6.1.19
v6.1.2
v6.1.20
v6.1.21
v6.1.22
v6.1.23
v6.1.24
v6.1.25
v6.1.26
v6.1.27
v6.1.28
v6.1.29
v6.1.3
v6.1.30
v6.1.31
v6.1.32
v6.1.33
v6.1.34
v6.1.35
v6.1.36
v6.1.37
v6.1.38
v6.1.39
v6.1.4
v6.1.40
v6.1.41
v6.1.42
v6.1.43
v6.1.44
v6.1.45
v6.1.46
v6.1.47
v6.1.48
v6.1.49
v6.1.5
v6.1.50
v6.1.51
v6.1.52
v6.1.53
v6.1.54
v6.1.55
v6.1.56
v6.1.57
v6.1.58
v6.1.59
v6.1.6
v6.1.60
v6.1.61
v6.1.62
v6.1.63
v6.1.64
v6.1.65
v6.1.66
v6.1.67
v6.1.68
v6.1.69
v6.1.7
v6.1.70
v6.1.71
v6.1.72
v6.1.73
v6.1.74
v6.1.75
v6.1.76
v6.1.77
v6.1.78
v6.1.79
v6.1.8
v6.1.80
v6.1.81
v6.1.82
v6.1.83
v6.1.84
v6.1.85
v6.1.86
v6.1.87
v6.1.88
v6.1.89
v6.1.9
v6.1.90
v6.1.91
v6.1.92
v6.1.93
v6.1.94
v6.1.95
v6.1.96
v6.1.97
v6.1.98
v6.1.99
v6.10
v6.10-rc1
v6.10-rc2
v6.10-rc3
v6.10-rc4
v6.10-rc5
v6.10-rc6
v6.10-rc7
v6.10.1
v6.10.2
v6.2
v6.2-rc1
v6.2-rc2
v6.2-rc3
v6.2-rc4
v6.2-rc5
v6.2-rc6
v6.2-rc7
v6.2-rc8
v6.3
v6.3-rc1
v6.3-rc2
v6.3-rc3
v6.3-rc4
v6.3-rc5
v6.3-rc6
v6.3-rc7
v6.4
v6.4-rc1
v6.4-rc2
v6.4-rc3
v6.4-rc4
v6.4-rc5
v6.4-rc6
v6.4-rc7
v6.5
v6.5-rc1
v6.5-rc2
v6.5-rc3
v6.5-rc4
v6.5-rc5
v6.5-rc6
v6.5-rc7
v6.6
v6.6-rc1
v6.6-rc2
v6.6-rc3
v6.6-rc4
v6.6-rc5
v6.6-rc6
v6.6-rc7
v6.6.1
v6.6.10
v6.6.11
v6.6.12
v6.6.13
v6.6.14
v6.6.15
v6.6.16
v6.6.17
v6.6.18
v6.6.19
v6.6.2
v6.6.20
v6.6.21
v6.6.22
v6.6.23
v6.6.24
v6.6.25
v6.6.26
v6.6.27
v6.6.28
v6.6.29
v6.6.3
v6.6.30
v6.6.31
v6.6.32
v6.6.33
v6.6.34
v6.6.35
v6.6.36
v6.6.37
v6.6.38
v6.6.39
v6.6.4
v6.6.40
v6.6.41
v6.6.42
v6.6.43
v6.6.5
v6.6.6
v6.6.7
v6.6.8
v6.6.9
v6.7
v6.7-rc1
v6.7-rc2
v6.7-rc3
v6.7-rc4
v6.7-rc5
v6.7-rc6
v6.7-rc7
v6.7-rc8
v6.8
v6.8-rc1
v6.8-rc2
v6.8-rc3
v6.8-rc4
v6.8-rc5
v6.8-rc6
v6.8-rc7
v6.9
v6.9-rc1
v6.9-rc2
v6.9-rc3
v6.9-rc4
v6.9-rc5
v6.9-rc6
v6.9-rc7

Database specific

{
    "vanir_signatures": [
        {
            "id": "CVE-2024-42316-4e83ec55",
            "target": {
                "function": "evict_folios",
                "file": "mm/vmscan.c"
            },
            "digest": {
                "length": 1865.0,
                "function_hash": "7843284105297096139323252950684273711"
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8b671fe1a879923ecfb72dda6caf01460dd885ef",
            "deprecated": false,
            "signature_type": "Function",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-512b0d0e",
            "target": {
                "file": "mm/vmscan.c"
            },
            "digest": {
                "line_hashes": [
                    "322910299138612881846350341226183027094",
                    "65885444317123748534122132554655635058",
                    "203562608094015608891562759046165471096",
                    "21301563934266594227196568554554600957"
                ],
                "threshold": 0.9
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8de7bf77f21068a5f602bb1e59adbc5ab533509d",
            "deprecated": false,
            "signature_type": "Line",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-797065e8",
            "target": {
                "function": "evict_folios",
                "file": "mm/vmscan.c"
            },
            "digest": {
                "length": 1882.0,
                "function_hash": "31249362742101069982573210584319556691"
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8de7bf77f21068a5f602bb1e59adbc5ab533509d",
            "deprecated": false,
            "signature_type": "Function",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-946c3d3b",
            "target": {
                "file": "mm/vmscan.c"
            },
            "digest": {
                "line_hashes": [
                    "322910299138612881846350341226183027094",
                    "65885444317123748534122132554655635058",
                    "203562608094015608891562759046165471096",
                    "21301563934266594227196568554554600957"
                ],
                "threshold": 0.9
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8b671fe1a879923ecfb72dda6caf01460dd885ef",
            "deprecated": false,
            "signature_type": "Line",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-996f8da1",
            "target": {
                "function": "evict_folios",
                "file": "mm/vmscan.c"
            },
            "digest": {
                "length": 1796.0,
                "function_hash": "17037460669947121803281386367153825938"
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d6510f234c7d117790397f9bb150816b0a954a04",
            "deprecated": false,
            "signature_type": "Function",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-a95a236f",
            "target": {
                "file": "mm/vmscan.c"
            },
            "digest": {
                "line_hashes": [
                    "322910299138612881846350341226183027094",
                    "65885444317123748534122132554655635058",
                    "203562608094015608891562759046165471096",
                    "21301563934266594227196568554554600957"
                ],
                "threshold": 0.9
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a39e38be632f0e1c908d70d1c9cd071c03faf895",
            "deprecated": false,
            "signature_type": "Line",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-c4cc993c",
            "target": {
                "file": "mm/vmscan.c"
            },
            "digest": {
                "line_hashes": [
                    "322910299138612881846350341226183027094",
                    "65885444317123748534122132554655635058",
                    "203562608094015608891562759046165471096",
                    "21301563934266594227196568554554600957"
                ],
                "threshold": 0.9
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d6510f234c7d117790397f9bb150816b0a954a04",
            "deprecated": false,
            "signature_type": "Line",
            "signature_version": "v1"
        },
        {
            "id": "CVE-2024-42316-d18949af",
            "target": {
                "function": "evict_folios",
                "file": "mm/vmscan.c"
            },
            "digest": {
                "length": 1865.0,
                "function_hash": "7843284105297096139323252950684273711"
            },
            "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a39e38be632f0e1c908d70d1c9cd071c03faf895",
            "deprecated": false,
            "signature_type": "Function",
            "signature_version": "v1"
        }
    ]
}

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.1.0
Fixed
6.1.103
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.44
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.10.3