CVE-2024-35846

Source
https://nvd.nist.gov/vuln/detail/CVE-2024-35846
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-35846.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2024-35846
Downstream
Published
2024-05-17T14:47:25Z
Modified
2025-10-21T20:56:05.929556Z
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

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.8.0
Fixed
6.8.9