CVE-2024-40949

EUVD-2024-38836
In the Linux kernel, the following vulnerability has been resolved:

mm: shmem: fix getting incorrect lruvec when replacing a shmem folio

When testing shmem swapin, I encountered the warning below on my machine. 
The reason is that replacing an old shmem folio with a new one causes
mem_cgroup_migrate() to clear the old folio's memcg data.  As a result,
the old folio cannot get the correct memcg's lruvec needed to remove
itself from the LRU list when it is being freed.  This could lead to
possible serious problems, such as LRU list crashes due to holding the
wrong LRU lock, and incorrect LRU statistics.

To fix this issue, we can fallback to use the mem_cgroup_replace_folio()
to replace the old shmem folio.

[ 5241.100311] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x5d9960
[ 5241.100317] head: order:4 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
[ 5241.100319] flags: 0x17fffe0000040068(uptodate|lru|head|swapbacked|node=0|zone=2|lastcpupid=0x3ffff)
[ 5241.100323] raw: 17fffe0000040068 fffffdffd6687948 fffffdffd69ae008 0000000000000000
[ 5241.100325] raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
[ 5241.100326] head: 17fffe0000040068 fffffdffd6687948 fffffdffd69ae008 0000000000000000
[ 5241.100327] head: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
[ 5241.100328] head: 17fffe0000000204 fffffdffd6665801 ffffffffffffffff 0000000000000000
[ 5241.100329] head: 0000000a00000010 0000000000000000 00000000ffffffff 0000000000000000
[ 5241.100330] page dumped because: VM_WARN_ON_ONCE_FOLIO(!memcg && !mem_cgroup_disabled())
[ 5241.100338] ------------[ cut here ]------------
[ 5241.100339] WARNING: CPU: 19 PID: 78402 at include/linux/memcontrol.h:775 folio_lruvec_lock_irqsave+0x140/0x150
[...]
[ 5241.100374] pc : folio_lruvec_lock_irqsave+0x140/0x150
[ 5241.100375] lr : folio_lruvec_lock_irqsave+0x138/0x150
[ 5241.100376] sp : ffff80008b38b930
[...]
[ 5241.100398] Call trace:
[ 5241.100399]  folio_lruvec_lock_irqsave+0x140/0x150
[ 5241.100401]  __page_cache_release+0x90/0x300
[ 5241.100404]  __folio_put+0x50/0x108
[ 5241.100406]  shmem_replace_folio+0x1b4/0x240
[ 5241.100409]  shmem_swapin_folio+0x314/0x528
[ 5241.100411]  shmem_get_folio_gfp+0x3b4/0x930
[ 5241.100412]  shmem_fault+0x74/0x160
[ 5241.100414]  __do_fault+0x40/0x218
[ 5241.100417]  do_shared_fault+0x34/0x1b0
[ 5241.100419]  do_fault+0x40/0x168
[ 5241.100420]  handle_pte_fault+0x80/0x228
[ 5241.100422]  __handle_mm_fault+0x1c4/0x440
[ 5241.100424]  handle_mm_fault+0x60/0x1f0
[ 5241.100426]  do_page_fault+0x120/0x488
[ 5241.100429]  do_translation_fault+0x4c/0x68
[ 5241.100431]  do_mem_abort+0x48/0xa0
[ 5241.100434]  el0_da+0x38/0xc0
[ 5241.100436]  el0t_64_sync_handler+0x68/0xc0
[ 5241.100437]  el0t_64_sync+0x14c/0x150
[ 5241.100439] ---[ end trace 0000000000000000 ]---

[baolin.wang@linux.alibaba.com: remove less helpful comments, per Matthew]
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
5.5 MEDIUM
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Base Score
CVSS 3.x
EPSS Score
Percentile: 12%
Affected Products (NVD)
VendorProductVersion
linuxlinux_kernel
6.7 ≤
𝑥
< 6.9.7
linuxlinux_kernel
6.10:rc1
linuxlinux_kernel
6.10:rc2
linuxlinux_kernel
6.10:rc3
linuxlinux_kernel
6.10:rc4
𝑥
= Vulnerable software versions
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.148-1
not-affected
bookworm (security)
6.1.158-1
fixed
bullseye
5.10.223-1
not-affected
bullseye (security)
5.10.247-1
fixed
forky
6.17.13-1
fixed
sid
6.17.13-1
fixed
trixie
6.12.57-1
fixed
trixie (security)
6.12.48-1
fixed
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux-hwe
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
not-affected
linux-hwe-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-5.8
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-5.11
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-6.5
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-hwe-edge
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
ignored
linux-lts-xenial
bionic
dne
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
not-affected
xenial
dne
linux-kvm
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
not-affected
linux-allwinner-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.0
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.3
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.8
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.11
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-aws-hwe
bionic
dne
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
not-affected
linux-azure
bionic
ignored
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-1014.16
released
oracular
not-affected
trusty
not-affected
xenial
not-affected
linux-azure-4.15
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.3
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.8
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.11
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-fde
bionic
dne
focal
ignored
jammy
not-affected
noble
not-affected
oracular
dne
trusty
dne
xenial
dne
linux-azure-fde-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-fde-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-fde-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-bluefield
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-edge
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-fips
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
not-affected
linux-aws-fips
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-fips
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-fips
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp
bionic
ignored
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-1014.16
released
oracular
not-affected
trusty
dne
xenial
not-affected
linux-gcp-4.15
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.3
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.8
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.11
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gke
bionic
dne
focal
ignored
jammy
not-affected
noble
Fixed 6.8.0-1010.13
released
oracular
dne
trusty
dne
xenial
ignored
linux-gke-4.15
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gke-5.4
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gke-5.15
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gkeop-5.4
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gkeop-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-ibm-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-ibm-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-intel
bionic
dne
focal
dne
jammy
dne
noble
not-affected
oracular
dne
trusty
dne
xenial
dne
linux-intel-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-intel-iotg
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-intel-iotg-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-iot
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-lowlatency
bionic
dne
focal
dne
jammy
not-affected
noble
Fixed 6.8.0-44.44.1
released
oracular
not-affected
trusty
dne
xenial
dne
linux-lowlatency-hwe-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-6.5
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-nvidia
bionic
dne
focal
dne
jammy
not-affected
noble
Fixed 6.8.0-1013.14
released
oracular
dne
trusty
dne
xenial
dne
linux-nvidia-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-nvidia-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.0
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.3
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.8
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.11
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem
bionic
ignored
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
ignored
linux-oem-5.6
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-5.10
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-5.13
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-5.14
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-5.17
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-6.0
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-6.1
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-6.8
bionic
dne
focal
dne
jammy
dne
noble
Fixed 6.8.0-1012.12
released
oracular
dne
trusty
dne
xenial
dne
linux-raspi2
bionic
ignored
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
ignored
linux-raspi-5.4
bionic
not-affected
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-riscv
bionic
dne
focal
ignored
jammy
ignored
noble
Fixed 6.8.0-44.44.1
released
oracular
not-affected
trusty
dne
xenial
dne
linux-riscv-5.8
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-riscv-5.11
bionic
dne
focal
ignored
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-riscv-5.15
bionic
dne
focal
not-affected
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-riscv-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-riscv-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-starfive-5.19
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-starfive-6.2
bionic
dne
focal
dne
jammy
ignored
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-starfive-6.5
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-xilinx-zynqmp
bionic
dne
focal
not-affected
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-44.44
released
oracular
not-affected
trusty
not-affected
xenial
not-affected
linux-aws
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-1015.16
released
oracular
not-affected
trusty
not-affected
xenial
not-affected
linux-gkeop
bionic
dne
focal
not-affected
jammy
not-affected
noble
not-affected
oracular
dne
trusty
dne
xenial
dne
linux-ibm
bionic
dne
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-1012.12
released
oracular
dne
trusty
dne
xenial
dne
linux-oracle
bionic
not-affected
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-1012.12
released
oracular
not-affected
trusty
dne
xenial
not-affected
linux-raspi
bionic
dne
focal
not-affected
jammy
not-affected
noble
Fixed 6.8.0-1011.12
released
oracular
not-affected
trusty
dne
xenial
dne
linux-laptop
bionic
dne
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-starfive
bionic
dne
focal
dne
jammy
dne
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-nvidia-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-1013.14~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-nvidia-lowlatency
bionic
dne
focal
dne
jammy
dne
noble
Fixed 6.8.0-1013.14.1
released
oracular
dne
trusty
dne
xenial
dne
linux-hwe-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-45.45~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-lowlatency-hwe-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-44.44.1~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-riscv-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-44.44.1~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-intel-iot-realtime
bionic
dne
focal
dne
jammy
not-affected
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-raspi-realtime
bionic
dne
focal
dne
jammy
dne
noble
Fixed 6.8.0-2010.10
released
oracular
dne
trusty
dne
xenial
dne
linux-realtime
bionic
dne
focal
dne
jammy
not-affected
noble
Fixed 6.8.1-1008.8
released
oracular
not-affected
trusty
dne
xenial
dne
linux-aws-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-1015.16~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-gcp-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-1014.16~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oracle-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-1012.12~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-azure-6.8
bionic
dne
focal
dne
jammy
Fixed 6.8.0-1014.16~22.04.1
released
noble
dne
oracular
dne
trusty
dne
xenial
dne
linux-oem-6.11
bionic
dne
focal
dne
jammy
dne
noble
not-affected
oracular
dne
trusty
dne
xenial
dne