syzbot


panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry

Status: fixed on 2023/02/08 00:59
Fix commit: 8373fb5db8c8 Check hard link target's mount compatibility before kernfs.Dentry cast.
First crash: 466d, last: 466d

Sample crash report:
panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry

goroutine 943 [running]:
panic({0x106d860, 0xc000ac68a0})
	GOROOT/src/runtime/panic.go:987 +0x3ba fp=0xc000b2f380 sp=0xc000b2f2c0 pc=0x43781a
runtime.panicdottypeE(...)
	GOROOT/src/runtime/iface.go:262
runtime.panicdottypeI(0xc000b2f420?, 0x11bc000, 0x10b9e00)
	GOROOT/src/runtime/iface.go:272 +0x7c fp=0xc000b2f3a8 sp=0xc000b2f380 pc=0x40b17c
gvisor.dev/gvisor/pkg/sentry/fsimpl/kernfs.(*Filesystem).LinkAt(0xc000420000, {0x144f838, 0xc000724a80}, 0xc0009b4480, {0xc0004b4100?, 0xc00060ad00?})
	pkg/sentry/fsimpl/kernfs/filesystem.go:367 +0x825 fp=0xc000b2f5d8 sp=0xc000b2f3a8 pc=0x7a0fe5
gvisor.dev/gvisor/pkg/sentry/vfs.(*VirtualFilesystem).LinkAt(0xc0004b4100?, {0x144f838, 0xc000724a80}, 0xc0002899e0?, 0xc000245700?, 0xc000b2f788)
	pkg/sentry/vfs/vfs.go:296 +0x18f fp=0xc000b2f658 sp=0xc000b2f5d8 pc=0x7494cf
gvisor.dev/gvisor/pkg/sentry/syscalls/linux.linkat(0xc000724a80, 0x724a80?, 0x0?, 0x168293e8?, 0x0?, 0x1400)
	pkg/sentry/syscalls/linux/sys_file.go:1029 +0x359 fp=0xc000b2f848 sp=0xc000b2f658 pc=0xa478b9
gvisor.dev/gvisor/pkg/sentry/syscalls/linux.Linkat(0xc000724a80?, {{0xffffffff}, {0x20000100}, {0x3}, {0x200000c0}, {0x1400}, {0x65732f636f72702f}})
	pkg/sentry/syscalls/linux/sys_file.go:998 +0x32 fp=0xc000b2f888 sp=0xc000b2f848 pc=0xa47532
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).executeSyscall(0xc000724a80, 0x109, {{0xffffffff}, {0x20000100}, {0x3}, {0x200000c0}, {0x1400}, {0x65732f636f72702f}})
	pkg/sentry/kernel/task_syscall.go:142 +0x755 fp=0xc000b2fc78 sp=0xc000b2f888 pc=0x926ad5
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallInvoke(0xc000724a80, 0xc0003c8b28?, {{0xffffffff}, {0x20000100}, {0x3}, {0x200000c0}, {0x1400}, {0x65732f636f72702f}})
	pkg/sentry/kernel/task_syscall.go:322 +0x4a fp=0xc000b2fcd8 sp=0xc000b2fc78 pc=0x927d0a
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscallEnter(0x1?, 0xc0002c4000?, {{0xffffffff}, {0x20000100}, {0x3}, {0x200000c0}, {0x1400}, {0x65732f636f72702f}})
	pkg/sentry/kernel/task_syscall.go:282 +0x65 fp=0xc000b2fd38 sp=0xc000b2fcd8 pc=0x9279e5
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).doSyscall(0xc0009eb520?)
	pkg/sentry/kernel/task_syscall.go:257 +0x2f0 fp=0xc000b2fe30 sp=0xc000b2fd38 pc=0x927750
gvisor.dev/gvisor/pkg/sentry/kernel.(*runApp).execute(0xc000922c80?, 0xc000724a80)
	pkg/sentry/kernel/task_run.go:259 +0xf3e fp=0xc000b2ff60 sp=0xc000b2fe30 pc=0x91b99e
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).run(0xc000724a80, 0x9f)
	pkg/sentry/kernel/task_run.go:94 +0x1bc fp=0xc000b2ffc0 sp=0xc000b2ff60 pc=0x91a41c
gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start.func1()
	pkg/sentry/kernel/task_start.go:377 +0x2a fp=0xc000b2ffe0 sp=0xc000b2ffc0 pc=0x9252ca
runtime.goexit()
	src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000b2ffe8 sp=0xc000b2ffe0 pc=0x46c701
created by gvisor.dev/gvisor/pkg/sentry/kernel.(*Task).Start
	pkg/sentry/kernel/task_start.go:377 +0xef

Crashes (13):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2023/02/07 14:25 gvisor d5eafb28757c 7d00f0e1 console log report syz C ci-gvisor-ptrace-1 panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 14:12 gvisor d5eafb28757c 7d00f0e1 .config console log report syz C ci-gvisor-ptrace-2-race panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 14:06 gvisor d5eafb28757c 7d00f0e1 console log report syz C ci-gvisor-ptrace-2 panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 13:17 gvisor d5eafb28757c 7d00f0e1 .config console log report syz C ci-gvisor-ptrace-2-cover panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 13:16 gvisor d5eafb28757c 7d00f0e1 console log report syz C ci-gvisor-ptrace-3 panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 13:15 gvisor d5eafb28757c 7d00f0e1 .config console log report syz C ci-gvisor-ptrace-3-cover panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 13:13 gvisor d5eafb28757c 7d00f0e1 .config console log report syz C ci-gvisor-ptrace-3-race panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 12:00 gvisor 0721ca2fe3b2 5bc3be51 console log report syz C ci-gvisor-kvm panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 11:27 gvisor 0721ca2fe3b2 5bc3be51 .config console log report syz C ci-gvisor-kvm-cover panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 15:36 gvisor d5eafb28757c 7d00f0e1 .config console log report syz ci-gvisor-ptrace-3-race-cover panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 14:11 gvisor d5eafb28757c 7d00f0e1 .config console log report syz ci-gvisor-ptrace-1-race panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 18:21 gvisor d5eafb28757c b68d0e75 .config console log report info ci-gvisor-kvm-cover panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
2023/02/07 11:13 gvisor 0721ca2fe3b2 5bc3be51 .config console log report info ci-gvisor-kvm-cover panic: interface conversion: vfs.DentryImpl is *gofer.dentry, not *kernfs.Dentry
* Struck through repros no longer work on HEAD.