[Bug 270841] fstat causes kernel panic with NFS

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 14 Apr 2023 15:24:13 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270841

--- Comment #1 from Henry Hu <henry.hu.sh@gmail.com> ---
It seems like that I'm speaking too soon. After removing the nullfs mounts from
NFS mount, I can still trigger kernel panic:


Unread portion of the kernel message buffer:

Fatal double fault
rip 0xffffffff80b2ed6c rsp 0xfffffe015b561000 rbp 0xfffffe015b561020
rax 0xffffffff80f242d8 rdx 0xfffff8010459f262 rbx 0xfffff8000cad5900
rcx 0x42 rsi 0xfffff8000cad5900 rdi 0
r8 0xffffffff811c2888 r9 0 r10 0xfffffe015b561074
r11 0 r12 0 r13 0x42
r14 0xfffff8010459f262 r15 0 rflags 0x10246
cs 0x20 ss 0x28 ds 0x3b es 0x3b fs 0x13 gs 0x1b
fsbase 0x1b8e37c8a140 gsbase 0xffffffff83011000 kgsbase 0
cpuid = 1; apic id = 01
panic: double fault
cpuid = 1
time = 1681485595
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe003c1c5da0
vpanic() at vpanic+0x185/frame 0xfffffe003c1c5e00
panic() at panic+0x43/frame 0xfffffe003c1c5e60
dblfault_handler() at dblfault_handler+0x1ce/frame 0xfffffe003c1c5f20
Xdblfault() at Xdblfault+0xd7/frame 0xfffffe003c1c5f20
--- trap 0x17, rip = 0xffffffff80b2ed6c, rsp = 0xfffffe015b561000, rbp =
0xfffffe015b561020 ---
bounce_bus_dmamap_load_buffer() at bounce_bus_dmamap_load_buffer+0xc/frame
0xfffffe015b561020
bus_dmamap_load() at bus_dmamap_load+0x86/frame 0xfffffe015b5610a0
WritePacket() at WritePacket+0xd3/frame 0xfffffe015b5610f0
re_start() at re_start+0x7b1/frame 0xfffffe015b5631a0
if_transmit_default() at if_transmit_default+0xf5/frame 0xfffffe015b5631f0
ether_output_frame() at ether_output_frame+0xa3/frame 0xfffffe015b563220
ether_output() at ether_output+0x6bd/frame 0xfffffe015b5632a0
ip_output_send() at ip_output_send+0xa4/frame 0xfffffe015b5632d0
ip_output() at ip_output+0x1222/frame 0xfffffe015b5633e0
tcp_default_output() at tcp_default_output+0x1f60/frame 0xfffffe015b5635c0
tcp_usr_send() at tcp_usr_send+0x27b/frame 0xfffffe015b563670
sosend_generic() at sosend_generic+0x605/frame 0xfffffe015b563740
sosend() at sosend+0x3b/frame 0xfffffe015b563770
clnt_vc_call() at clnt_vc_call+0x511/frame 0xfffffe015b5638d0
clnt_reconnect_call() at clnt_reconnect_call+0x2e8/frame 0xfffffe015b563990
newnfs_request() at newnfs_request+0xa96/frame 0xfffffe015b563b40
nfscl_request() at nfscl_request+0x54/frame 0xfffffe015b563b90
nfsrpc_accessrpc() at nfsrpc_accessrpc+0x11a/frame 0xfffffe015b563d30
nfs34_access_otw() at nfs34_access_otw+0x43/frame 0xfffffe015b563e60
nfs_access() at nfs_access+0x3d5/frame 0xfffffe015b563ef0
vop_sigdefer() at vop_sigdefer+0x2b/frame 0xfffffe015b563f20
vn_dir_check_exec() at vn_dir_check_exec+0x4e/frame 0xfffffe015b563f60
nfs_lookup() at nfs_lookup+0x127/frame 0xfffffe015b564280
vop_sigdefer() at vop_sigdefer+0x2b/frame 0xfffffe015b5642b0
vfs_lookup() at vfs_lookup+0x44c/frame 0xfffffe015b564350
namei() at namei+0x1ff/frame 0xfffffe015b5643d0
vn_open_cred() at vn_open_cred+0x565/frame 0xfffffe015b564530
vop_stdvptocnp() at vop_stdvptocnp+0x1b4/frame 0xfffffe015b5647e0
vop_sigdefer() at vop_sigdefer+0x2b/frame 0xfffffe015b564810
vn_vptocnp() at vn_vptocnp+0x199/frame 0xfffffe015b564880
vn_fullpath_dir() at vn_fullpath_dir+0xf9/frame 0xfffffe015b5648f0
vn_fullpath_any() at vn_fullpath_any+0x55/frame 0xfffffe015b564930
vn_fullpath() at vn_fullpath+0xd2/frame 0xfffffe015b564980
vn_fill_kinfo_vnode() at vn_fill_kinfo_vnode+0x42/frame 0xfffffe015b564a90
vn_fill_kinfo() at vn_fill_kinfo+0x45/frame 0xfffffe015b564ac0
kern_proc_filedesc_out() at kern_proc_filedesc_out+0x4b8/frame
0xfffffe015b564b50
sysctl_kern_proc_filedesc() at sysctl_kern_proc_filedesc+0x8c/frame
0xfffffe015b564bd0
sysctl_root_handler_locked() at sysctl_root_handler_locked+0x90/frame
0xfffffe015b564c20
sysctl_root() at sysctl_root+0x28a/frame 0xfffffe015b564ca0
userland_sysctl() at userland_sysctl+0x17e/frame 0xfffffe015b564d50
sys___sysctl() at sys___sysctl+0x5c/frame 0xfffffe015b564e00
amd64_syscall() at amd64_syscall+0x11a/frame 0xfffffe015b564f30
fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe015b564f30
--- syscall (202, FreeBSD ELF64, __sysctl), rip = 0x76b1013278a, rsp =
0x76b0e6e5388, rbp = 0x76b0e6e53c0 ---
Uptime: 10m58s
Dumping 2214 out of 32486 MB:..1%..11%..21%..31%..41%..51%..61%..71%..81%..91%

__curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:59
59              __asm("movq %%gs:%P1,%0" : "=r" (td) : "n" (offsetof(struct
pcpu,
(kgdb) where
#0  __curthread () at /usr/src/sys/amd64/include/pcpu_aux.h:59
#1  dump_savectx () at /usr/src/sys/kern/kern_shutdown.c:403
#2  0xffffffff807a64b8 in dumpsys (di=0x0) at
/usr/src/sys/x86/include/dump.h:87
#3  doadump (textdump=1) at /usr/src/sys/kern/kern_shutdown.c:432
#4  kern_reboot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:539
#5  0xffffffff807a6a23 in vpanic (fmt=0xffffffff80bc0f3f "double fault",
ap=0xfffffe003c1c5e40) at /usr/src/sys/kern/kern_shutdown.c:983
#6  0xffffffff807a6823 in panic (fmt=<unavailable>) at
/usr/src/sys/kern/kern_shutdown.c:907
#7  0xffffffff80b6d83e in dblfault_handler (frame=<optimized out>) at
/usr/src/sys/amd64/amd64/trap.c:1014
#8  <signal handler called>
#9  0xffffffff80b2ed6c in bounce_bus_dmamap_load_buffer
(dmat=0xfffff8000cad5900, map=0x0, buf=0xfffff8010459f262, buflen=66,
pmap=0xffffffff811c2888 <kernel_pmap_store>, flags=0, segs=<optimized out>,
segp=0xfffffe015b561074) at /usr/src/sys/x86/x86/busdma_bounce.c:736
#10 0xffffffff807e99c6 in _bus_dmamap_load_buffer (dmat=0xfffff8000cad5900,
map=0x0, buf=0xfffff8010459f262, buflen=66, flags=0, segs=0x0,
segp=0xfffffe015b561074, pmap=<optimized out>) at
/usr/src/sys/x86/include/bus_dma.h:168
#11 bus_dmamap_load (dmat=0xfffff8000cad5900, map=0x0, buf=0xfffff8010459f262,
buflen=66, callback=0xffffffff88857b60 <WritePacket+560>,
callback_arg=0xfffff800182ee280, flags=0) at
/usr/src/sys/kern/subr_bus_dma.c:461
#12 0xffffffff888579d3 in WritePacket () from /boot/modules/if_re.ko
#13 0xa5a5a5a500000000 in ?? ()
#14 0xa5a5a5a5a5a5a5a5 in ?? ()
#15 0xa000004200000028 in ?? ()
#16 0xfffff800182ee280 in ?? ()
#17 0x0000000060000000 in ?? ()
#18 0x0000004200000001 in ?? ()
#19 0xfffff8010459f262 in ?? ()
#20 0xfffffe01527f5000 in ?? ()
#21 0xfffffe015b5631a0 in ?? ()
#22 0xffffffff8882c621 in re_start () from /boot/modules/if_re.ko
#23 0x0000000000000000 in ?? ()
(kgdb) fram e9
No symbol "e9" in current context.
(kgdb) frame 9
#9  0xffffffff80b2ed6c in bounce_bus_dmamap_load_buffer
(dmat=0xfffff8000cad5900, map=0x0, buf=0xfffff8010459f262, buflen=66,
pmap=0xffffffff811c2888 <kernel_pmap_store>, flags=0, segs=<optimized out>,
segp=0xfffffe015b561074) at /usr/src/sys/x86/x86/busdma_bounce.c:736
736     {
(kgdb) l
731      */
732     static int
733     bounce_bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dmamap_t map,
void *buf,
734         bus_size_t buflen, pmap_t pmap, int flags, bus_dma_segment_t *segs,
735         int *segp)
736     {
737             bus_size_t sgsize, max_sgsize;
738             vm_paddr_t curaddr;
739             vm_offset_t kvaddr, vaddr;
740             int error;
(kgdb)

-- 
You are receiving this mail because:
You are the assignee for the bug.