Public bug reported:

[Impact]

On Ubuntu 26.04 (linux 7.0.0-31 and 7.0.0-34, based on 7.0.14), with an AMD
GPU using amdgpu userptr BOs, kcompactd page migration calls
amdgpu_hmm_invalidate_gfx() while a userptr BO is still being allocated or
freed. At that point bo->vm_bo is NULL, and the kernel dereferences it:

  BUG: kernel NULL pointer dereference, address: 0000000000000000
  Oops: 0000 [#1] SMP PTI
  CPU: 6 UID: 0 PID: 74 Comm: kcompactd0 Not tainted 7.0.0-31-generic #31-Ubuntu
  Hardware name: ASUS All Series/B85M-E, BIOS 0806 02/20/2014
  RIP: 0010:amdgpu_hmm_invalidate_gfx+0x42/0xe0 [amdgpu]
  Call Trace:
   __mmu_notifier_invalidate_range_start+0x149/0x1b0
   try_to_migrate_one+0xeea/0x1010
   rmap_walk_anon+0xdb/0x220
   try_to_migrate+0x84/0xe0
   migrate_folio_unmap+0x276/0x320
   migrate_pages_batch+0x17d/0x940
   migrate_pages+0x3b2/0x520
   compact_zone+0x513/0x790
   kcompactd_do_work+0x109/0x270
  note: kcompactd0[74] exited with irqs disabled

kcompactd dies holding mm locks. After that, any task touching the affected
pages hangs in D state for good: containers can't be stopped or killed, and
even a normal reboot oopses again in amdgpu_pci_shutdown ->
amdgpu_uvd_prepare_suspend (direct compaction hits the same page). Only a
sysrq-b or power cycle recovers the machine.

We have hit this 3 times in 2 weeks (2026-09-12, 09-19, 09-25) on a Radeon
RX 550 (Polaris 12). The trigger is Jellyfin burning ASS subtitles in with an
ffmpeg Vulkan filter chain:
  subtitles -> hwupload=derive_device=vulkan -> overlay_vulkan
The oops fires about 2 seconds after an ffmpeg transcode starts.

[Fix]

Upstream commit 52f650963d8825e97a0ccdd2b616f8a01d9d3d38
  "drm/amdgpu: fix check in amdgpu_hmm_invalidate_gfx"
  (cherry-picked from 631849ff5d603841e74f19f4a5e30fe1f7d7cf30)
  Fixes: 91250893cbaa ("drm/amdgpu: fix waiting for all submissions for 
userptrs")
  Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5399
  Cc: stable, queued for 7.1.y and 6.18.y

The commit applies cleanly to the resolute 7.0.0-34.34 source (one hunk at
offset -4). The regressing commit 91250893cbaa is in the resolute kernel.
The fix did not reach 7.0.y stable because that branch is EOL upstream.

Note: CVE-2026-68101 was assigned to this fix and later rejected, so the
Ubuntu CVE tracker shows resolute as "not affected". It is affected. This is
a stability bug, not a security bug, and it is reproducible.

[Test Plan]

On an amdgpu system, run a workload that creates and destroys userptr BOs
repeatedly (for example, ffmpeg Vulkan hwupload in a loop) while forcing
compaction with `echo 1 > /proc/sys/vm/compact_memory`. Unpatched kernels
oops in amdgpu_hmm_invalidate_gfx; patched kernels don't.

[Where problems could occur]

The change is limited to amdgpu userptr BOs. The BO now holds a reference to
the VM root PD as bo->parent, and amdgpu_bo_destroy() already drops that
reference (amdgpu_bo_unref(&bo->parent)). A mistake would show up as a leaked
root PD on userptr BO free, or as a wait on the wrong reservation object
during invalidation.
--- 
ProblemType: Bug
AlsaVersion: Advanced Linux Sound Architecture Driver Version k7.0.0-34-generic.
AplayDevices: Error: [Errno 2] No such file or directory: 'aplay'
ApportVersion: 2.34.1-0ubuntu0.1
Architecture: amd64
ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord'
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/by-path', 
'/dev/snd/controlC0', '/dev/snd/hwC0D0', '/dev/snd/pcmC0D2c', 
'/dev/snd/pcmC0D0c', '/dev/snd/pcmC0D0p', '/dev/snd/controlC1', 
'/dev/snd/hwC1D0', '/dev/snd/pcmC1D10p', '/dev/snd/pcmC1D9p', 
'/dev/snd/pcmC1D8p', '/dev/snd/pcmC1D7p', '/dev/snd/pcmC1D3p', '/dev/snd/seq', 
'/dev/snd/timer'] failed with exit code 1:
CRDA: N/A
Card0.Amixer.info: Error: [Errno 2] No such file or directory: 'amixer'
Card0.Amixer.values: Error: [Errno 2] No such file or directory: 'amixer'
Card1.Amixer.info: Error: [Errno 2] No such file or directory: 'amixer'
Card1.Amixer.values: Error: [Errno 2] No such file or directory: 'amixer'
CasperMD5CheckResult: pass
CurrentDmesg: Error: command ['dmesg'] failed with exit code 1: dmesg: read 
kernel buffer failed: Operation not permitted
DistroRelease: Ubuntu 26.04
InstallationDate: Installed on 2026-08-30 (26 days ago)
InstallationMedia: Ubuntu-Server 26.04.1 LTS "Resolute Raccoon" - Release amd64 
(20260826)
MachineType: ASUS All Series
Package: linux (not installed)
ProcEnviron:
 LANG=en_US.UTF-8
 PATH=(custom, no user)
 SHELL=/bin/bash
 TERM=xterm-256color
 XDG_RUNTIME_DIR=<set>
ProcFB: 0 amdgpudrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-7.0.0-34-generic 
root=/dev/mapper/ubuntu--vg-ubuntu--lv ro 
crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M
ProcVersionSignature: Ubuntu 7.0.0-34.34-generic 7.0.14
RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
Tags: resolute
Uname: Linux 7.0.0-34-generic x86_64
UnreportableReason: This report is about a package that is not installed.
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip docker lxd plugdev render sudo users video
_MarkForUpload: False
acpidump:
 
dmi.bios.date: 02/20/2014
dmi.bios.release: 4.6
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: 0806
dmi.board.asset.tag: To be filled by O.E.M.
dmi.board.name: B85M-E
dmi.board.vendor: ASUSTeK COMPUTER INC.
dmi.board.version: Rev X.0x
dmi.chassis.asset.tag: Asset-1234567890
dmi.chassis.type: 3
dmi.chassis.vendor: Chassis Manufacture
dmi.chassis.version: Chassis Version
dmi.modalias: 
dmi:bvnAmericanMegatrendsInc.:bvr0806:bd02/20/2014:br4.6:svnASUS:pnAllSeries:pvrSystemVersion:rvnASUSTeKCOMPUTERINC.:rnB85M-E:rvrRevX.0x:cvnChassisManufacture:ct3:cvrChassisVersion:skuAll:pfaASUSMB:
dmi.product.family: ASUS MB
dmi.product.name: All Series
dmi.product.sku: All
dmi.product.version: System Version
dmi.sys.vendor: ASUS

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: apport-collected resolute

** Tags added: apport-collected resolute

** Description changed:

  [Impact]
  
  On Ubuntu 26.04 (linux 7.0.0-31 and 7.0.0-34, based on 7.0.14), with an AMD
  GPU using amdgpu userptr BOs, kcompactd page migration calls
  amdgpu_hmm_invalidate_gfx() while a userptr BO is still being allocated or
  freed. At that point bo->vm_bo is NULL, and the kernel dereferences it:
  
    BUG: kernel NULL pointer dereference, address: 0000000000000000
    Oops: 0000 [#1] SMP PTI
    CPU: 6 UID: 0 PID: 74 Comm: kcompactd0 Not tainted 7.0.0-31-generic 
#31-Ubuntu
    Hardware name: ASUS All Series/B85M-E, BIOS 0806 02/20/2014
    RIP: 0010:amdgpu_hmm_invalidate_gfx+0x42/0xe0 [amdgpu]
    Call Trace:
     __mmu_notifier_invalidate_range_start+0x149/0x1b0
     try_to_migrate_one+0xeea/0x1010
     rmap_walk_anon+0xdb/0x220
     try_to_migrate+0x84/0xe0
     migrate_folio_unmap+0x276/0x320
     migrate_pages_batch+0x17d/0x940
     migrate_pages+0x3b2/0x520
     compact_zone+0x513/0x790
     kcompactd_do_work+0x109/0x270
    note: kcompactd0[74] exited with irqs disabled
  
  kcompactd dies holding mm locks. After that, any task touching the affected
  pages hangs in D state for good: containers can't be stopped or killed, and
  even a normal reboot oopses again in amdgpu_pci_shutdown ->
  amdgpu_uvd_prepare_suspend (direct compaction hits the same page). Only a
  sysrq-b or power cycle recovers the machine.
  
  We have hit this 3 times in 2 weeks (2026-09-12, 09-19, 09-25) on a Radeon
  RX 550 (Polaris 12). The trigger is Jellyfin burning ASS subtitles in with an
  ffmpeg Vulkan filter chain:
    subtitles -> hwupload=derive_device=vulkan -> overlay_vulkan
  The oops fires about 2 seconds after an ffmpeg transcode starts.
  
  [Fix]
  
  Upstream commit 52f650963d8825e97a0ccdd2b616f8a01d9d3d38
    "drm/amdgpu: fix check in amdgpu_hmm_invalidate_gfx"
    (cherry-picked from 631849ff5d603841e74f19f4a5e30fe1f7d7cf30)
    Fixes: 91250893cbaa ("drm/amdgpu: fix waiting for all submissions for 
userptrs")
    Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5399
    Cc: stable, queued for 7.1.y and 6.18.y
  
  The commit applies cleanly to the resolute 7.0.0-34.34 source (one hunk at
  offset -4). The regressing commit 91250893cbaa is in the resolute kernel.
  The fix did not reach 7.0.y stable because that branch is EOL upstream.
  
  Note: CVE-2026-68101 was assigned to this fix and later rejected, so the
  Ubuntu CVE tracker shows resolute as "not affected". It is affected. This is
  a stability bug, not a security bug, and it is reproducible.
  
  [Test Plan]
  
  On an amdgpu system, run a workload that creates and destroys userptr BOs
  repeatedly (for example, ffmpeg Vulkan hwupload in a loop) while forcing
  compaction with `echo 1 > /proc/sys/vm/compact_memory`. Unpatched kernels
  oops in amdgpu_hmm_invalidate_gfx; patched kernels don't.
  
  [Where problems could occur]
  
  The change is limited to amdgpu userptr BOs. The BO now holds a reference to
  the VM root PD as bo->parent, and amdgpu_bo_destroy() already drops that
  reference (amdgpu_bo_unref(&bo->parent)). A mistake would show up as a leaked
  root PD on userptr BO free, or as a wait on the wrong reservation object
  during invalidation.
+ --- 
+ ProblemType: Bug
+ AlsaVersion: Advanced Linux Sound Architecture Driver Version 
k7.0.0-34-generic.
+ AplayDevices: Error: [Errno 2] No such file or directory: 'aplay'
+ ApportVersion: 2.34.1-0ubuntu0.1
+ Architecture: amd64
+ ArecordDevices: Error: [Errno 2] No such file or directory: 'arecord'
+ AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/by-path', 
'/dev/snd/controlC0', '/dev/snd/hwC0D0', '/dev/snd/pcmC0D2c', 
'/dev/snd/pcmC0D0c', '/dev/snd/pcmC0D0p', '/dev/snd/controlC1', 
'/dev/snd/hwC1D0', '/dev/snd/pcmC1D10p', '/dev/snd/pcmC1D9p', 
'/dev/snd/pcmC1D8p', '/dev/snd/pcmC1D7p', '/dev/snd/pcmC1D3p', '/dev/snd/seq', 
'/dev/snd/timer'] failed with exit code 1:
+ CRDA: N/A
+ Card0.Amixer.info: Error: [Errno 2] No such file or directory: 'amixer'
+ Card0.Amixer.values: Error: [Errno 2] No such file or directory: 'amixer'
+ Card1.Amixer.info: Error: [Errno 2] No such file or directory: 'amixer'
+ Card1.Amixer.values: Error: [Errno 2] No such file or directory: 'amixer'
+ CasperMD5CheckResult: pass
+ CurrentDmesg: Error: command ['dmesg'] failed with exit code 1: dmesg: read 
kernel buffer failed: Operation not permitted
+ DistroRelease: Ubuntu 26.04
+ InstallationDate: Installed on 2026-08-30 (26 days ago)
+ InstallationMedia: Ubuntu-Server 26.04.1 LTS "Resolute Raccoon" - Release 
amd64 (20260826)
+ MachineType: ASUS All Series
+ Package: linux (not installed)
+ ProcEnviron:
+  LANG=en_US.UTF-8
+  PATH=(custom, no user)
+  SHELL=/bin/bash
+  TERM=xterm-256color
+  XDG_RUNTIME_DIR=<set>
+ ProcFB: 0 amdgpudrmfb
+ ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-7.0.0-34-generic 
root=/dev/mapper/ubuntu--vg-ubuntu--lv ro 
crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M
+ ProcVersionSignature: Ubuntu 7.0.0-34.34-generic 7.0.14
+ RfKill: Error: [Errno 2] No such file or directory: 'rfkill'
+ Tags: resolute
+ Uname: Linux 7.0.0-34-generic x86_64
+ UnreportableReason: This report is about a package that is not installed.
+ UpgradeStatus: No upgrade log present (probably fresh install)
+ UserGroups: adm cdrom dip docker lxd plugdev render sudo users video
+ _MarkForUpload: False
+ acpidump:
+  
+ dmi.bios.date: 02/20/2014
+ dmi.bios.release: 4.6
+ dmi.bios.vendor: American Megatrends Inc.
+ dmi.bios.version: 0806
+ dmi.board.asset.tag: To be filled by O.E.M.
+ dmi.board.name: B85M-E
+ dmi.board.vendor: ASUSTeK COMPUTER INC.
+ dmi.board.version: Rev X.0x
+ dmi.chassis.asset.tag: Asset-1234567890
+ dmi.chassis.type: 3
+ dmi.chassis.vendor: Chassis Manufacture
+ dmi.chassis.version: Chassis Version
+ dmi.modalias: 
dmi:bvnAmericanMegatrendsInc.:bvr0806:bd02/20/2014:br4.6:svnASUS:pnAllSeries:pvrSystemVersion:rvnASUSTeKCOMPUTERINC.:rnB85M-E:rvrRevX.0x:cvnChassisManufacture:ct3:cvrChassisVersion:skuAll:pfaASUSMB:
+ dmi.product.family: ASUS MB
+ dmi.product.name: All Series
+ dmi.product.sku: All
+ dmi.product.version: System Version
+ dmi.sys.vendor: ASUS

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2168537

Title:
  Please backport "drm/amdgpu: fix check in amdgpu_hmm_invalidate_gfx"
  (52f650963d88) to resolute 7.0 - NULL deref in kcompactd kills the
  system

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2168537/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to