diff options
-rw-r--r-- | sys/fs/portalfs/portal_vfsops.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/fs/portalfs/portal_vfsops.c b/sys/fs/portalfs/portal_vfsops.c index 80356e4e944f..4e7313130e5a 100644 --- a/sys/fs/portalfs/portal_vfsops.c +++ b/sys/fs/portalfs/portal_vfsops.c @@ -99,10 +99,13 @@ portal_mount(mp, path, data, ndp, td) if (error) return (error); - error = holdsock(td->td_proc->p_fd, args.pa_socket, &fp); - if (error) + if ((error = fget(td, args.pa_socket, &fp)) != 0) return (error); - so = (struct socket *) fp->f_data; + if (fp->f_type != DTYPE_SOCKET) { + fdrop(fp, td); + return(ENOTSOCK); + } + so = (struct socket *) fp->f_data; /* XXX race against userland */ if (so->so_proto->pr_domain->dom_family != AF_UNIX) { fdrop(fp, td); return (ESOCKTNOSUPPORT); |