Control: tags -1 + upstream
Control: found -1 6.18.12-1

Hi Norbert,

On Wed, Feb 04, 2026 at 04:59:10PM +0100, Norbert Zentai wrote:
> Package: linux-image-amd64
> Version: 6.17.13-1~bpo13+1
> 
> When I repeatedly mount an NFSv4 share using the following command:
> mount -t nfs4 -o xprtsec=mtls nfs-server.local:/rpool/demo-share /mnt
> 
> and the command fails with one of the following:
> mount.nfs4: access denied by server while mounting
> nfs-server.local:/rpool/demo-share
> OR
> mount.nfs4: Broken pipe for nfs-server.local:/rpool/demo-share on /mnt
> 
> after a couple of tries I receive the following kernel panic:
> 
> [   39.161785] kernel BUG at mm/slub.c:563!
> [   39.164131] Oops: invalid opcode: 0000 [#1] SMP PTI
> [   39.166674] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted
> 6.17.13+deb13-amd64 #1 PREEMPT(lazy)  Debian 6.17.13-1~bpo13+1
> [   39.172472] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
> rel-1.17.0-0-gb52ca86e094d-prebuilt.qemu.org 04/01/2014
> [   39.178438] RIP: 0010:__slab_free+0x152/0x310
> [   39.180996] Code: 00 4c 89 ff e8 df 95 9c 00 48 8b 14 24 48 8b 4c 24 20
> 48 89 44 24 08 48 8b 03 48 c1 e8 09 83 e0 01 88 44 24 13 e9 71 ff ff ff <0f>
> 0b 66 41 f7 44 24 08 87 04 75 b3 eb a9 66 41 f7 44 24 08 87 04
> [   39.190660] RSP: 0018:ffffd19100003dc0 EFLAGS: 00010246
> [   39.193455] RAX: ffff8bf903e9f150 RBX: fffff9e7c00fa7c0 RCX:
> 000000000010000c
> [   39.197106] RDX: ffff8bf903e9f100 RSI: fffff9e7c00fa7c0 RDI:
> ffffd19100003e30
> [   39.200820] RBP: ffffd19100003e60 R08: 0000000000000001 R09:
> ffffffffab62d068
> [   39.204472] R10: 0000000000000002 R11: ffffffffad208100 R12:
> ffff8bf9011fe900
> [   39.208167] R13: ffff8bf903e9f100 R14: ffff8bf9011fe900 R15:
> ffffffffab62d068
> [   39.211793] FS:  0000000000000000(0000) GS:ffff8bf9cfdb6000(0000)
> knlGS:0000000000000000
> [   39.215868] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   39.219011] CR2: 00007f7dfcbb71a0 CR3: 0000000008b12000 CR4:
> 00000000000006f0
> [   39.222866] Call Trace:
> [   39.224294]  <IRQ>
> [   39.225436]  ? rcu_do_batch+0x1c8/0x570
> [   39.227443]  kmem_cache_free+0x3a3/0x450
> [   39.229579]  ? free_uid+0x3c/0xc0
> [   39.231375]  rcu_do_batch+0x1c8/0x570
> [   39.233332]  ? rcu_do_batch+0x167/0x570
> [   39.235461]  rcu_core+0x175/0x350
> [   39.237280]  handle_softirqs+0xdf/0x320
> [   39.239381]  __irq_exit_rcu+0xbc/0xe0
> [   39.241366]  sysvec_apic_timer_interrupt+0x71/0x90
> [   39.243928]  </IRQ>
> [   39.245097]  <TASK>
> [   39.246375]  asm_sysvec_apic_timer_interrupt+0x1a/0x20
> [   39.249011] RIP: 0010:pv_native_safe_halt+0xf/0x20
> [   39.251544] Code: 20 d0 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90
> 90 90 90 90 90 90 90 90 90 f3 0f 1e fa eb 07 0f 00 2d 55 92 1a 00 fb f4 <e9>
> 3c 2a 01 00 66 66 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90
> [   39.262235] RSP: 0018:ffffffffad203e70 EFLAGS: 00000212
> [   39.265355] RAX: 0000000000000000 RBX: ffffffffad213080 RCX:
> ffff8bf90390b320
> [   39.269527] RDX: 4000000000000000 RSI: 0000000000000000 RDI:
> 000000000001979c
> [   39.273714] RBP: 0000000000000000 R08: 000000091e153ed8 R09:
> 0000000000000001
> [   39.277877] R10: 0000000000000000 R11: ffff8bf97dc1cd00 R12:
> 0000000000000000
> [   39.282054] R13: 0000000000000000 R14: 0000000000000000 R15:
> 000000000008a000
> [   39.286400]  default_idle+0x9/0x20
> [   39.287579]  default_idle_call+0x29/0x100
> [   39.288952]  do_idle+0x1f8/0x240
> [   39.290106]  cpu_startup_entry+0x29/0x30
> [   39.291428]  rest_init+0xe7/0xf0
> [   39.292561]  start_kernel+0x776/0x780
> [   39.293848]  x86_64_start_reservations+0x24/0x30
> [   39.295443]  x86_64_start_kernel+0x126/0x130
> [   39.297322]  common_startup_64+0x13e/0x141
> [   39.299047]  </TASK>
> [   39.300130] Modules linked in: tls rpcsec_gss_krb5 nfsv4 dns_resolver nfs
> lockd grace netfs cfg80211 rfkill 8021q garp stp llc mrp binfmt_misc
> aesni_intel pcspkr virtio_balloon button joydev evdev sg auth_rpcgss
> efi_pstore sunrpc configfs nfnetlink vsock_loopback
> vmw_vsock_virtio_transport_common vmw_vsock_vmci_transport vsock vmw_vmci
> qemu_fw_cfg ip_tables x_tables autofs4 ext4 crc16 mbcache jbd2
> crc32c_cryptoapi hid_generic usbhid hid sr_mod cdrom uhci_hcd bochs
> ata_generic ehci_pci drm_client_lib sd_mod drm_shmem_helper ata_piix
> ehci_hcd drm_kms_helper usbcore virtio_net libata psmouse drm virtio_scsi
> net_failover scsi_mod i2c_piix4 failover i2c_smbus serio_raw usb_common
> scsi_common floppy
> [   39.321098] ---[ end trace 0000000000000000 ]---
> [   39.322977] RIP: 0010:__slab_free+0x152/0x310
> [   39.324762] Code: 00 4c 89 ff e8 df 95 9c 00 48 8b 14 24 48 8b 4c 24 20
> 48 89 44 24 08 48 8b 03 48 c1 e8 09 83 e0 01 88 44 24 13 e9 71 ff ff ff <0f>
> 0b 66 41 f7 44 24 08 87 04 75 b3 eb a9 66 41 f7 44 24 08 87 04
> [   39.331380] RSP: 0018:ffffd19100003dc0 EFLAGS: 00010246
> [   39.333381] RAX: ffff8bf903e9f150 RBX: fffff9e7c00fa7c0 RCX:
> 000000000010000c
> [   39.335985] RDX: ffff8bf903e9f100 RSI: fffff9e7c00fa7c0 RDI:
> ffffd19100003e30
> [   39.338598] RBP: ffffd19100003e60 R08: 0000000000000001 R09:
> ffffffffab62d068
> [   39.341237] R10: 0000000000000002 R11: ffffffffad208100 R12:
> ffff8bf9011fe900
> [   39.343830] R13: ffff8bf903e9f100 R14: ffff8bf9011fe900 R15:
> ffffffffab62d068
> [   39.346460] FS:  0000000000000000(0000) GS:ffff8bf9cfdb6000(0000)
> knlGS:0000000000000000
> [   39.349343] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [   39.351503] CR2: 00007f7dfcbb71a0 CR3: 0000000008b12000 CR4:
> 00000000000006f0
> [   39.354071] Kernel panic - not syncing: Fatal exception in interrupt
> [   39.356640] Kernel Offset: 0x2a200000 from 0xffffffff81000000 (relocation
> range: 0xffffffff80000000-0xffffffffbfffffff)
> [   39.360273] ---[ end Kernel panic - not syncing: Fatal exception in
> interrupt ]---
> 
> I originally tried this with the trixie kernel 6.12.63+deb13-amd64 and then
> with the backport to see if this bug has been resolved.
> 
> Output of uname -a:
> Linux nfs-client.local 6.17.13+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian
> 6.17.13-1~bpo13+1 (2025-12-28) x86_64 GNU/Linux
> 
> This bug is reproducible and you only need to try to mount less than 10
> times.
> 
> I found a similar kernel bug report:
> https://bugzilla.kernel.org/show_bug.cgi?id=24302
> 
> I am using the nfs-utils and ktls-utils package to set up NFS over mutual
> TLS. I was testing the system by providing a valid but not trusted client
> side TLS certificate and expecting the NFS server to not let me in.

I'm able to peproduce the issue with a modified script from the
ktls-utils autopkgtests as follows:

----cut---------cut---------cut---------cut---------cut---------cut-----
#!/bin/sh

# base directory for configuration
TLSHDDIR='/etc/tlshd'

# install required packages
apt-get -y install nfs-kernel-server ktls-utils

# Create CA private key and certificate
openssl genrsa -out "$TLSHDDIR/ca.key.priv.pem" 2048
cat >"$TLSHDDIR/ca.openssl.cnf" <<EOF
[ req ]
distinguished_name = req_dn
string_mask = utf8only
prompt = no
x509_extensions = req_ext

[ req_dn ]
commonName = ktls-utils test CA

[ req_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = critical, CA:true
EOF

openssl req -new -key "$TLSHDDIR/ca.key.priv.pem" \
        -utf8 -nodes -batch -x509 \
        -outform PEM -out "$TLSHDDIR/ca.x509.pem" \
        -config "$TLSHDDIR/ca.openssl.cnf"

# cleanup comments
sed -i '/^\[authenticate\.client\]/,$ { /=/d }' \
    /etc/tlshd/config

# Create certificate for server role signed with CA
# Create private key and certificate for role
openssl genrsa -out "$TLSHDDIR/server.key.priv.pem" 2048
cat >"$TLSHDDIR/server.openssl.cnf" <<EOF
[ req ]
distinguished_name = req_dn
string_mask = utf8only
prompt = no
x509_extensions = req_ext

[ req_dn ]
commonName = server.internal

[ req_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = critical, CA:false
extendedKeyUsage = critical, serverAuth
EOF

openssl req -new -key "$TLSHDDIR/server.key.priv.pem" \
        -out "$TLSHDDIR/server.req.pem" \
        -config "$TLSHDDIR/server.openssl.cnf"
openssl req -in "$TLSHDDIR/server.req.pem" \
        -copy_extensions copy \
        -CA "$TLSHDDIR/ca.x509.pem" \
        -CAkey "$TLSHDDIR/ca.key.priv.pem" \
        -utf8 -nodes -batch -x509 \
        -outform PEM -out "$TLSHDDIR/server.x509.pem"

# Create certificate for client role (self-signed)
cat > "$TLSHDDIR/client.openssl.cnf" <<EOF
[ req ]
distinguished_name = req_dn
string_mask = utf8only
prompt = no
x509_extensions = req_ext

[ req_dn ]
commonName = client.internal

[ req_ext ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = critical, CA:false
extendedKeyUsage = critical, clientAuth
EOF

openssl req -noenc -x509 -newkey rsa -pkeyopt rsa_keygen_bits:2048 \
        -keyout "$TLSHDDIR/client.key.priv.pem" \
        -out "$TLSHDDIR/client.x509.pem" \
        -config "$TLSHDDIR/client.openssl.cnf"

# Update tlshd config
for role in server client ; do
    sed -i '/^\[authenticate\.'$role'\]/a\
x509.truststore='"$TLSHDDIR/ca.x509.pem"'\
x509.certificate='"$TLSHDDIR/$role.x509.pem"'\
x509.private_key='"$TLSHDDIR/$role.key.priv.pem" \
        /etc/tlshd/config
done

# Make server name resolvable
if ! grep -qw 'server\.internal' /etc/hosts; then
    cat >>/etc/hosts <<EOF
::1     server.internal client.internal
EOF
fi

# Restart tlshd with new config
systemctl restart tlshd.service

# Configure export
export_dir=/srv/server.internal
mkdir -p "$export_dir"
mkdir -p "/etc/exports.d"
cat > /etc/exports.d/server.internal.exports <<EOF
$export_dir localhost(no_root_squash,rw,xprtsec=mtls)
EOF
exportfs -a

# Try to mount
mount_dir=/media/server.internal
mkdir -p "$mount_dir"
! mountpoint "$mount_dir" || umount "$mount_dir"

# Trigger #1126957
while true ; do
        mount -t nfs -o nodev,nosuid,xprtsec=mtls "server.internal:$export_dir" 
"$mount_dir"
done
----cut---------cut---------cut---------cut---------cut---------cut-----

Before the kernel panic I see some processes with high CPU
utilisation:

   8982 root      20   0   36776   6256   3284 S  20.0   0.3   0:00.76 
(udev-worker)
    321 root      20   0   36772  11748   8808 R  10.0   0.6   0:02.00 
systemd-udevd
   3486 root      20   0    2944   2424   2244 S  10.0   0.1   0:00.13 
rpc.idmapd
   8987 root      20   0   36776   6256   3284 S  10.0   0.3   0:00.48 
(udev-worker)

Regards,
Salvatore

Reply via email to