CVE-2024-35846

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-35846
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-35846.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2024-35846
Downstream
Published
2024-05-17T14:47:25Z
Modified
2025-10-17T03:17:17.580516Z
Summary
mm: zswap: fix shrinker NULL crash with cgroup_disable=memory
Details

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

mm: zswap: fix shrinker NULL crash with cgroup_disable=memory

Christian reports a NULL deref in zswap that he bisected down to the zswap shrinker. The issue also cropped up in the bug trackers of libguestfs [1] and the Red Hat bugzilla [2].

The problem is that when memcg is disabled with the boot time flag, the zswap shrinker might get called with sc->memcg == NULL. This is okay in many places, like the lruvec operations. But it crashes in memcgpagestate() - which is only used due to the non-node accounting of cgroup's the zswap memory to begin with.

Nhat spotted that the memcg can be NULL in the memcg-disabled case, and I was then able to reproduce the crash locally as well.

[1] https://github.com/libguestfs/libguestfs/issues/139 [2] https://bugzilla.redhat.com/show_bug.cgi?id=2275252

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
b5ba474f3f518701249598b35c581b92a3c95b48
Fixed
b0fdabc908a7f81d12382c87ca9e46a9c2e14042
Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
b5ba474f3f518701249598b35c581b92a3c95b48
Fixed
682886ec69d22363819a83ddddd5d66cb5c791e1

Affected versions

v6.*

v6.7
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.8.1
v6.8.2
v6.8.3
v6.8.4
v6.8.5
v6.8.6
v6.8.7
v6.8.8
v6.9-rc1
v6.9-rc2
v6.9-rc3
v6.9-rc4

Database specific

vanir_signatures

[
    {
        "id": "CVE-2024-35846-22e80ac6",
        "signature_version": "v1",
        "digest": {
            "length": 768.0,
            "function_hash": "313792707124014441775665697698662318596"
        },
        "target": {
            "file": "mm/zswap.c",
            "function": "zswap_shrinker_count"
        },
        "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@682886ec69d22363819a83ddddd5d66cb5c791e1",
        "signature_type": "Function",
        "deprecated": false
    },
    {
        "id": "CVE-2024-35846-63bd2e95",
        "signature_version": "v1",
        "digest": {
            "line_hashes": [
                "31320358307480943522714044454517669314",
                "105667438548058281119862502630043647145",
                "198631359820699489229890603844375506835",
                "186599191159509060398877935916570606635",
                "177040662147074366523607477119818664588",
                "17115152087149947053502085159906818537",
                "273853182174037124249662304177979561163",
                "255146030800121751758845196362346048314",
                "262315502532770956995066627597741037583",
                "60405212411895258345297702693221593248",
                "229396549831501140605605125084556749380"
            ],
            "threshold": 0.9
        },
        "target": {
            "file": "mm/zswap.c"
        },
        "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@682886ec69d22363819a83ddddd5d66cb5c791e1",
        "signature_type": "Line",
        "deprecated": false
    },
    {
        "id": "CVE-2024-35846-84470513",
        "signature_version": "v1",
        "digest": {
            "length": 808.0,
            "function_hash": "125432848045117945027301692755966706959"
        },
        "target": {
            "file": "mm/zswap.c",
            "function": "zswap_shrinker_count"
        },
        "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b0fdabc908a7f81d12382c87ca9e46a9c2e14042",
        "signature_type": "Function",
        "deprecated": false
    },
    {
        "id": "CVE-2024-35846-db0f168d",
        "signature_version": "v1",
        "digest": {
            "line_hashes": [
                "31320358307480943522714044454517669314",
                "105667438548058281119862502630043647145",
                "198631359820699489229890603844375506835",
                "186599191159509060398877935916570606635",
                "177040662147074366523607477119818664588",
                "45556210578304250903000368019271980051",
                "190517103271611961307481201298394604599",
                "269257690071809553436690893547063054907",
                "311864023625355022571964665296530005793",
                "314814313361053750629698096693112826933",
                "229396549831501140605605125084556749380"
            ],
            "threshold": 0.9
        },
        "target": {
            "file": "mm/zswap.c"
        },
        "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b0fdabc908a7f81d12382c87ca9e46a9c2e14042",
        "signature_type": "Line",
        "deprecated": false
    }
]

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.8.0
Fixed
6.8.9