From 372b97d0b69e470337c2ab650e4d3d9d36d3fc58 Mon Sep 17 00:00:00 2001 From: Rick Macklem Date: Wed, 18 May 2016 22:23:20 +0000 Subject: [PATCH] If a local (AF_LOCAL, AF_UNIX) socket creation (bind) is attempted on a fuse mounted file system, it will crash. Although it may be possible to make this work correctly, this patch avoids the crash in the meantime. I removed the MPASS(), since panicing for the FIFO case didn't make a lot of sense when it returns an error for the others. PR: 195000 Submitted by: henry.hu.sh@gmail.com (earlier version) MFC after: 2 weeks --- sys/fs/fuse/fuse_vnops.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index 6672f42f0d1..71d74224db0 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -335,8 +335,9 @@ fuse_vnop_create(struct vop_create_args *ap) /* XXX: Will we ever want devices ? */ if ((vap->va_type != VREG)) { - MPASS(vap->va_type != VFIFO); - goto bringup; + printf("fuse_vnop_create: unsupported va_type %d\n", + vap->va_type); + return (EINVAL); } debug_printf("parent nid = %ju, mode = %x\n", (uintmax_t)parentnid, mode); @@ -364,7 +365,7 @@ fuse_vnop_create(struct vop_create_args *ap) debug_printf("create: got err=%d from daemon\n", err); goto out; } -bringup: + feo = fdip->answ; if ((err = fuse_internal_checkentry(feo, VREG))) {