UBUNTU-CVE-2026-98818: Low severity ubuntu/linux-hwe-edge vulnerability

Published Oct 18, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved: mm/slab: do not wake up kswapd in kfreercusheaf() Since kfreercu() can be called under pilock (a raw spinlock in the scheduler), kfreercu() itself should never allocate memory with GFPKSWAPDRECLAIM as waking up kswapd ends up acquiring pilock, which leads to a deadlock. Reproducing the issue even intentionally was not straightforward. The setcpusallowedforce() path that is called under pilock is exercised very rarely, and competing tasks that allocate memory will most likely wake kswapd up. Therefore the existence of the deadlock was verified with a modified kernel that has a lockdep map for waking up kswapd: ====================================================== WARNING: possible circular locking dependency detected 7.2.0-rc1-slab-for-next+ #10 Not tainted ------------------------------------------------------ git/6660 is trying to acquire lock: ffff8e524533c550 (&p->pilock){-.-.}-{2:2}, at: rawspinlockirqsave+0x12/0x20 but task is already holding lock: ffff8e57bffff1a0 (&pgdat->kswapdwait){....}-{3:3}, at: rawspinlockirqsave+0x12/0x20 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (&pgdat->kswapdwait){....}-{3:3}: lockacquire+0x5a4/0xc50 lockacquire.part.0+0xb7/0x240 lockacquire+0x70/0x170 rawspinlockirqsave+0x44/0x80 rawspinlockirqsave+0x12/0x20 wakeupcommonlock+0x31/0xa0 wakeup+0x20/0x40 kswapdwakeupwake+0x7e/0x110 wakeupkswapd+0x295/0x320 wakeallkswapds+0xac/0x1a0 allocpagesslowpath.constprop.0+0x282/0xf80 allocfrozenpagesnoprof+0x32a/0x360 allocslabpage+0x2e/0x160 allocateslab+0x82/0x420 newslab+0x52/0xb0 refillobjects+0x13d/0x190 refillsheaf+0x5d/0xd0 pcsreplaceemptymain+0x230/0xb10 [...] -> #1 (kswapdwakeup){-.-.}-{0:0}: lockacquire+0x5a4/0xc50 locksync.part.0+0x75/0x100 locksync+0x36/0x70 mightwakeupkswapd+0x61/0xa0 kfreercusheaf+0x33/0xd90 kvfreecallrcu+0x1d4/0x3b0 setcpusallowedforce+0x163/0x220 cpusetcpusallowedfallback+0x18b/0x240 selectfallbackrq+0x1e6/0x250 [...] -> #0 (&p->pilock){-.-.}-{2:2}: checkprevadd+0xe6/0xe00 validatechain+0x51e/0x6e0 lockacquire+0x5a4/0xc50 lockacquire.part.0+0xb7/0x240 lockacquire+0x70/0x170 rawspinlockirqsave+0x44/0x80 rawspinlockirqsave+0x12/0x20 trytowakeup+0x77/0xa90 defaultwakefunction+0x27/0x60 autoremovewakefunction+0x23/0xb0 wakeupcommon+0xb8/0x170 wakeupcommonlock+0x51/0xa0 wakeup+0x20/0x40 kswapdwakeupwake+0x7e/0x110 wakeupkswapd+0x295/0x320 wakeallkswapds+0xac/0x1a0 allocpagesslowpath.constprop.0+0x282/0xf80 allocfrozenpagesnoprof+0x32a/0x360 allocslabpage+0x2e/0x160 allocateslab+0x82/0x420 newslab+0x52/0xb0 refillobjects+0x13d/0x190 refillsheaf+0x5d/0xd0 pcsreplaceemptymain+0x230/0xb10 [...] other info that might help us debug this: Chain exists of: &p->pilock --> kswapdwakeup --> &pgdat->kswapdwait Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&pgdat->kswapdwait); lock(kswapdwakeup); lock(&pgdat->kswapdwait); lock(&p->pilock); DEADLOCK 3 locks held by git/6660: #0: ffff8e519f0e9e20 (&type->imutexdirkey#6){++++}-{4:4}, at: lookupslow+0x2d/0x60 #1: ffffffff8a31c460 (kswapdwakeup){-.-.}- ---truncated---

Affected Software

127 affected componentsFixes available
ubuntu/linux-hwe-edge*
ubuntu/linux-aws-5.0*
ubuntu/linux-aws-5.3*
ubuntu/linux-azure*
ubuntu/linux-azure-5.3*
ubuntu/linux-azure-edge*
ubuntu/linux-gcp*
ubuntu/linux-gcp-5.3*
ubuntu/linux-gke-4.15*
ubuntu/linux-gke-5.4*
ubuntu/linux-gkeop-5.4*
ubuntu/linux-hwe*
ubuntu/linux-hwe-edge*
ubuntu/linux-oem*
ubuntu/linux-oracle-5.0*
ubuntu/linux-oracle-5.3*
ubuntu/linux-aws-5.11*
ubuntu/linux-aws-5.13*
ubuntu/linux-aws-5.8*
ubuntu/linux-azure-5.11*
ubuntu/linux-azure-5.13*
ubuntu/linux-azure-5.8*
ubuntu/linux-azure-fde*
ubuntu/linux-gcp-5.11*
ubuntu/linux-gcp-5.13*
ubuntu/linux-gcp-5.8*
ubuntu/linux-gke*
ubuntu/linux-gke-5.15*
ubuntu/linux-gkeop*
ubuntu/linux-gkeop-5.15*
ubuntu/linux-hwe-5.11*
ubuntu/linux-hwe-5.13*
ubuntu/linux-hwe-5.8*
ubuntu/linux-intel-5.13*
ubuntu/linux-oem-5.10*
ubuntu/linux-oem-5.13*
ubuntu/linux-oem-5.6*
ubuntu/linux-oracle-5.11*
ubuntu/linux-oracle-5.13*
ubuntu/linux-oracle-5.8*
ubuntu/linux-raspi2*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.11*
ubuntu/linux-riscv-5.8*
ubuntu/linux-allwinner-5.19*
ubuntu/linux-aws-5.19*
ubuntu/linux-aws-6.2*
ubuntu/linux-aws-6.5*
ubuntu/linux-azure-5.19*
ubuntu/linux-azure-6.2*
ubuntu/linux-azure-6.5*
ubuntu/linux-azure-fde-5.19*
ubuntu/linux-azure-fde-6.2*
ubuntu/linux-gcp-5.19*
ubuntu/linux-gcp-6.2*
ubuntu/linux-gcp-6.5*
ubuntu/linux-hwe-5.19*
ubuntu/linux-hwe-6.2*
ubuntu/linux-hwe-6.5*
ubuntu/linux-intel-iot-realtime*
ubuntu/linux-lowlatency-hwe-5.19*
ubuntu/linux-lowlatency-hwe-6.2*
ubuntu/linux-lowlatency-hwe-6.5*
ubuntu/linux-nvidia-6.2*
ubuntu/linux-nvidia-6.5*
ubuntu/linux-oem-5.17*
ubuntu/linux-oem-6.0*
ubuntu/linux-oem-6.1*
ubuntu/linux-oem-6.5*
ubuntu/linux-oracle-6.5*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.19*
ubuntu/linux-riscv-6.5*
ubuntu/linux-starfive-5.19*
ubuntu/linux-starfive-6.2*
ubuntu/linux-starfive-6.5*
ubuntu/linux-aws-6.14*
ubuntu/linux-aws-6.17*
ubuntu/linux-aws-7.0<7.0.0-1017.18~24.04.1
7.0.0-1017.18~24.04.1
ubuntu/linux-azure-6.11*
ubuntu/linux-azure-6.14*
ubuntu/linux-azure-6.17*
ubuntu/linux-azure-7.0*
ubuntu/linux-azure-fde-6.14*
ubuntu/linux-azure-fde-6.17*
ubuntu/linux-azure-fde-7.0<7.0.0-1019.19~24.04.1
7.0.0-1019.19~24.04.1
ubuntu/linux-azure-nvidia-6.14*
ubuntu/linux-gcp-6.11*
ubuntu/linux-gcp-6.14*
ubuntu/linux-gcp-7.0<7.0.0-1017.19~24.04.1
7.0.0-1017.19~24.04.1
ubuntu/linux-hwe-6.11*
ubuntu/linux-hwe-6.14*
ubuntu/linux-hwe-7.0*
ubuntu/linux-lowlatency-hwe-6.11*
ubuntu/linux-nvidia-6.11*
ubuntu/linux-nvidia-6.17*
ubuntu/linux-nvidia-7.0*
ubuntu/linux-oem-6.11*
ubuntu/linux-oem-6.14*
ubuntu/linux-oem-6.8*
ubuntu/linux-oracle-6.14*
ubuntu/linux-oracle-6.17*
ubuntu/linux-oracle-7.0<7.0.0-1016.18~24.04.1
7.0.0-1016.18~24.04.1
ubuntu/linux-raspi-realtime*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-6.14*
ubuntu/linux-riscv-6.17*
ubuntu/linux-riscv-7.0<7.0.0-43.43.1~24.04.2
7.0.0-43.43.1~24.04.2
ubuntu/linux-realtime-6.14*
ubuntu/linux-realtime-6.17*
ubuntu/linux<7.0.0-43.43
7.0.0-43.43
ubuntu/linux-aws<7.0.0-1017.18
7.0.0-1017.18
ubuntu/linux-azure<7.0.0-1020.21
7.0.0-1020.21
ubuntu/linux-azure-fde<7.0.0-1019.19
7.0.0-1019.19
ubuntu/linux-gcp<7.0.0-1017.19
7.0.0-1017.19
ubuntu/linux-gke<7.0.0-1010.11
7.0.0-1010.11
ubuntu/linux-ibm<7.0.0-1018.18
7.0.0-1018.18
ubuntu/linux-nvidia*
ubuntu/linux-nvidia-bos*
ubuntu/linux-oem-7.0<7.0.0-1018.18
7.0.0-1018.18
ubuntu/linux-oracle<7.0.0-1016.18
7.0.0-1016.18
ubuntu/linux-raspi*
ubuntu/linux-realtime<7.0.0-43.43.1
7.0.0-43.43.1
ubuntu/linux-riscv*
ubuntu/linux-vmware*

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade ubuntu/linux-aws-7.0 to a version that resolves this vulnerability.

    Fixed in 7.0.0-1017.18~24.04.1
  2. Upgrade

    Upgrade ubuntu/linux-azure-fde-7.0 to a version that resolves this vulnerability.

    Fixed in 7.0.0-1019.19~24.04.1
  3. Upgrade

    Upgrade ubuntu/linux-gcp-7.0 to a version that resolves this vulnerability.

    Fixed in 7.0.0-1017.19~24.04.1
  4. Upgrade

    Upgrade ubuntu/linux-oracle-7.0 to a version that resolves this vulnerability.

    Fixed in 7.0.0-1016.18~24.04.1
  5. Upgrade

    Upgrade ubuntu/linux-riscv-7.0 to a version that resolves this vulnerability.

    Fixed in 7.0.0-43.43.1~24.04.2
  6. Upgrade

    Upgrade ubuntu/linux to a version that resolves this vulnerability.

    Fixed in 7.0.0-43.43
  7. Upgrade

    Upgrade ubuntu/linux-aws to a version that resolves this vulnerability.

    Fixed in 7.0.0-1017.18
  8. Upgrade

    Upgrade ubuntu/linux-azure to a version that resolves this vulnerability.

    Fixed in 7.0.0-1020.21
  9. Upgrade

    Upgrade ubuntu/linux-azure-fde to a version that resolves this vulnerability.

    Fixed in 7.0.0-1019.19
  10. Upgrade

    Upgrade ubuntu/linux-gcp to a version that resolves this vulnerability.

    Fixed in 7.0.0-1017.19
  11. Upgrade

    Upgrade ubuntu/linux-gke to a version that resolves this vulnerability.

    Fixed in 7.0.0-1010.11
  12. Upgrade

    Upgrade ubuntu/linux-ibm to a version that resolves this vulnerability.

    Fixed in 7.0.0-1018.18
  13. Upgrade

    Upgrade ubuntu/linux-oem-7.0 to a version that resolves this vulnerability.

    Fixed in 7.0.0-1018.18
  14. Upgrade

    Upgrade ubuntu/linux-oracle to a version that resolves this vulnerability.

    Fixed in 7.0.0-1016.18
  15. Upgrade

    Upgrade ubuntu/linux-realtime to a version that resolves this vulnerability.

    Fixed in 7.0.0-43.43.1

Event History

Oct 18, 2026
CVE Published
via OSV·04:17 PM
Data Sourced
via OSV·04:17 PM
DescriptionSeverityAffected Software

Frequently Asked Questions

1

What conditions are required to trigger the deadlock?

The issue requires kfree_rcu() to run while holding the scheduler's pi_lock, a raw spinlock, and then wake kswapd through memory allocation using __GFP_KSWAPD_RECLAIM. Waking kswapd can acquire pi_lock again, creating a circular lock dependency and deadlock.

2

How likely is this to occur in practice?

The described path is exercised very rarely, and reproducing the issue intentionally was not straightforward. Competing memory-allocating tasks will usually wake kswapd first, reducing the likelihood that the problematic lock sequence is reached.

3

Which Ubuntu kernel packages are listed as affected?

The listed packages are ubuntu/linux-riscv, ubuntu/linux-realtime, ubuntu/linux-hwe-edge, ubuntu/linux-azure, ubuntu/linux-gcp, ubuntu/linux-azure-fde, ubuntu/linux-gke, and ubuntu/linux-aws-5.0.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203