Did a little more work.

Where it dies

Faulting IP: kmem_cache_alloc+0xce → exact symbolized site is 
kmem_cache_alloc+206 (xor (%rax),%rbx) — the hardened-freelist decode of the 
“next” pointer.
Evidence: sym 0xffffffff8be680de → kmem_cache_alloc+206; dis -l 
0xffffffff8be680de 32 shows:

(some perl)
    add %rdi,%rax        ; rax = head + s->offset
    xor (%rax),%rbx      ; fault here: read encoded "next" from head+offset
    bswap %rcx
    xor %rcx,%rbx
    cmpxchg16b %gs:(%rsi) ; would be the fast cmpxchg path, not deactivate_slab

So we fault before cmpxchg16b, in the freelist decode.

Registers at fault (from crash backtrace)

RIP = ffffffff8be680de (kmem_cache_alloc+206)
RDI = 0x7db1e063bbff01b3 ← c->freelist (head)
RAX = 0x7db1e063bbff01e3 ← head + offset (offset is 0x30)
RBX = 0x3faeeb682cd28284 ← cache->random
R12 = 0xffff9e1ec02b0d00 ← kmem_cache (buffer_head)*

This exactly matches SLUB’s hardening math: load head, compute head +
s->offset, then XOR the encoded word at [head+offset] with random and
swab(head) to decode next. The deref of [head+offset] faults because
head isn’t a valid kernel address.

Cache / object info (from vmcore)

Cache: buffer_head, object_size=104 (0x68), size=104, offset=0x30, 
random=0x3faeeb682cd28284.
Evidence: struct kmem_cache 0xffff9e1ec02b0d00, plus p of fields.

Per-CPU vs slab state (inconsistent)

kmem_cache_cpu @ 0xffff9e222fc3dc60:
freelist = 0x7db1e063bbff01b3, slab = 0xffffe28e400dde80.

slab @ 0xffffe28e400dde80:
freelist=0x0, inuse=39, objects=39, frozen=1 (i.e. full and frozen).
→ Contradiction: per-CPU says there’s a freelist head (and it’s a non-kernel 
address), while the slab it points to is full/frozen with no freelist.

Call path / workload

Process: PID 15336 "JTS-uscryptoLis".

Stack tail: alloc_buffer_head → folio_alloc_buffers →
create_empty_buffers → ext4_block_write_begin → ext4_da_write_begin →
vfs_write.

System activity right before: very frequent drm_atomic_* flips from
virtio_gpu/virgl (as noted in logs).

Conclusion so far

Looks like a per-CPU freelist corruption for the buffer_head cache:
c->freelist itself held a bogus, non-canonical pointer (0x7db1...),
leading to a fault when decoding next from [head + 0x30].

It’s not the deactivate_slab path and not a benign race: the cmpxchg
region isn’t reached; IRQs are controlled around the fastpath; and
c->slab is full/frozen while c->freelist is non-NULL and not a valid
kernel address.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-hwe-6.8 in Ubuntu.
https://bugs.launchpad.net/bugs/2122445

Title:
  Jammy HWE 6.8.0-79 in KVM/QEMU guest (virtio_gpu/virgl): kernel oops
  “Bad pagetable: 000d” in do_user_addr_fault while running Java
  AWT/JavaFX GUI

Status in linux-hwe-6.8 package in Ubuntu:
  New

Bug description:
  A KVM/QEMU guest on Ubuntu 22.04 (Jammy, HWE kernel 6.8.0-79-generic)
  hits a kernel oops with “Bad pagetable: 000d” while a Java GUI
  (AWT/JavaFX) is active. Kdump triggers and captures a vmcore. First
  noticed after updating to 6.8.0-79; comparison with 6.8.0-78 is
  pending (I will test -78 next and report back).

  Environment
  - Guest OS: Ubuntu 22.04.4 (Jammy) with HWE kernel 6.8.0-79-generic
  - Virtualization: KVM/QEMU, machine type Q35
  - Guest GPU: virtio GPU [1af4:1050] (virgl, 3D accel forced to drive 
5120x1440 monitor)
  - Mesa stack in guest: 23.2.1-1ubuntu3.1~22.04.3
    - glxinfo -B shows: vendor Mesa; renderer “virgl (AMD Radeon Graphics 
(radeonsi, raphael_mendocino, …))”
  - lspci: “00:01.0 VGA compatible controller: Red Hat, Inc. Virtio GPU 
[1af4:1050]”
  - Kernel cmdline (guest):
    workqueue.default_to_unbound=1 console=ttyS0,115200n8 console=tty0 panic=10 
loglevel=7 systemd.show_status=1 drm.debug=0x1e crashkernel=512M-:192M

  Symptom / oops signature
  - Console shows:
    - “AWT-EventQueue-: Corrupted page table at address 8038358c”
    - “Bad pagetable: 000d [#1] PREEMPT SMP NOPTI”
  - Oops path from vmcore (crash(8)):
    pgtable_bad → do_user_addr_fault → exc_page_fault → asm_exc_page_fault → 
crash_kexec
  - Example PTE that triggered:
    PTE 0x8000000299d39867 → PHYS 0x299d39000 FLAGS: 
PRESENT|RW|USER|ACCESSED|DIRTY|NX
  - Task at oops time:
    PID 11858, COMM "AWT-EventQueue-" (JVM GUI thread)
  - Hardware banner in oops:
    “QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2”

  Frequency / workload
  - Reproduced under interactive GUI load in the VM (Java AWT/JavaFX 
application). Prior lines in dmesg show frequent DRM atomic FB flips from 
virtio_gpu while the desktop/app is active.

  What I collected
  - kdump vmcore + dmesg from crash (vmcore: 
/var/crash/202509090957/dump.202509090957; dmesg saved)
  - guest serial console log and QMP event log from the host during the incident
  - full kernel command line and module list, Mesa/GLx info, and lspci output

  What I’m about to try
  - Boot the same guest with 6.8.0-78-generic (vmlinuz.old/initrd.img.old) to 
determine if this is a 6.8.0-79 regression or not; I will update the bug with 
results.
  - If requested, I can also try a -proposed HWE build for confirmation.

  Questions for triage
  - Does this look like a kernel-side virtio_gpu/DRM/MM issue vs. a userspace 
virglrenderer trigger?
  - Any known fixes in later 6.8 HWE updates that match this signature?

  Tags (suggested): jammy hwe kernel oops kdump kvm qemu virtio-gpu drm virgl 
mesa
  Attachments available on request:
  - vmcore + dmesg from kdump
  - guest journal/dmesg around the oops
  - serial console log and QMP events from host
  - `glxinfo -B`, `lspci -nnk`, `/proc/cmdline`

  ProblemType: Bug
  DistroRelease: Ubuntu 22.04
  Package: linux-image-6.8.0-79-generic 6.8.0-79.79~22.04.1
  ProcVersionSignature: Ubuntu 6.8.0-79.79~22.04.1-generic 6.8.12
  Uname: Linux 6.8.0-79-generic x86_64
  ApportVersion: 2.20.11-0ubuntu82.10
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  joes       1455 F.... pulseaudio
  CRDA: N/A
  CasperMD5CheckResult: pass
  CurrentDesktop: ubuntu:GNOME
  Date: Tue Sep  9 13:25:08 2025
  InstallationDate: Installed on 2025-07-21 (49 days ago)
  InstallationMedia: Ubuntu 22.04.5 LTS "Jammy Jellyfish" - Release amd64 
(20240911)
  IwConfig:
   lo        no wireless extensions.
   
   enp1s0    no wireless extensions.
  Lsusb:
   Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
   Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd QEMU USB Tablet
   Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  Lsusb-t:
   /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 5000M
   /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/15p, 480M
       |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 
480M
  MachineType: QEMU Standard PC (Q35 + ICH9, 2009)
  ProcEnviron:
   TERM=xterm-256color
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  ProcFB: 0 virtio_gpudrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.8.0-79-generic 
root=UUID=e7a3ebd8-b568-463d-96c4-cf8270ba34d3 ro 
workqueue.default_to_unbound=1 console=ttyS0,115200n8 console=tty0 panic=10 
loglevel=7 systemd.show_status=1 drm.debug=0x1e crashkernel=512M-:192M
  RelatedPackageVersions:
   linux-restricted-modules-6.8.0-79-generic N/A
   linux-backports-modules-6.8.0-79-generic  N/A
   linux-firmware                            20220329.git681281e4-0ubuntu3.39
  RfKill:
   
  SourcePackage: linux-hwe-6.8
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 04/01/2014
  dmi.bios.release: 0.0
  dmi.bios.vendor: SeaBIOS
  dmi.bios.version: 1.16.3-debian-1.16.3-2
  dmi.chassis.type: 1
  dmi.chassis.vendor: QEMU
  dmi.chassis.version: pc-q35-8.2
  dmi.modalias: 
dmi:bvnSeaBIOS:bvr1.16.3-debian-1.16.3-2:bd04/01/2014:br0.0:svnQEMU:pnStandardPC(Q35+ICH9,2009):pvrpc-q35-8.2:cvnQEMU:ct1:cvrpc-q35-8.2:sku:
  dmi.product.name: Standard PC (Q35 + ICH9, 2009)
  dmi.product.version: pc-q35-8.2
  dmi.sys.vendor: QEMU

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


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to