diff --git a/sys/fs/fdescfs/fdesc_vfsops.c b/sys/fs/fdescfs/fdesc_vfsops.c index c175d0a3093..6356147b420 100644 --- a/sys/fs/fdescfs/fdesc_vfsops.c +++ b/sys/fs/fdescfs/fdesc_vfsops.c @@ -54,11 +54,21 @@ static MALLOC_DEFINE(M_FDESCMNT, "fdesc_mount", "FDESC mount structure"); +static vfs_cmount_t fdesc_cmount; static vfs_mount_t fdesc_mount; static vfs_unmount_t fdesc_unmount; static vfs_statfs_t fdesc_statfs; static vfs_root_t fdesc_root; +/* + * Compatibility shim for old mount(2) system call. + */ +int +fdesc_cmount(struct mntarg *ma, void *data, int flags, struct thread *td) +{ + return kernel_mount(ma, flags); +} + /* * Mount the per-process file descriptors (/dev/fd) */ @@ -193,6 +203,7 @@ fdesc_statfs(mp, sbp, td) } static struct vfsops fdesc_vfsops = { + .vfs_cmount = fdesc_cmount, .vfs_init = fdesc_init, .vfs_mount = fdesc_mount, .vfs_root = fdesc_root, diff --git a/sys/fs/pseudofs/pseudofs.c b/sys/fs/pseudofs/pseudofs.c index 1fe0371711e..da1758b9303 100644 --- a/sys/fs/pseudofs/pseudofs.c +++ b/sys/fs/pseudofs/pseudofs.c @@ -284,6 +284,15 @@ pfs_mount(struct pfs_info *pi, struct mount *mp, struct thread *td) return (0); } +/* + * Compatibility shim for old mount(2) system call. + */ +int +pfs_cmount(struct mntarg *ma, void *data, int flags, struct thread *td) +{ + return kernel_mount(ma, flags); +} + /* * Unmount a pseudofs instance */ diff --git a/sys/fs/pseudofs/pseudofs.h b/sys/fs/pseudofs/pseudofs.h index 8eaa13735d3..b9701bc0933 100644 --- a/sys/fs/pseudofs/pseudofs.h +++ b/sys/fs/pseudofs/pseudofs.h @@ -34,6 +34,7 @@ /* * Opaque structures */ +struct mntarg; struct mount; struct nameidata; struct proc; @@ -199,6 +200,8 @@ struct pfs_node { */ int pfs_mount (struct pfs_info *pi, struct mount *mp, struct thread *td); +int pfs_cmount (struct mntarg *ma, void *data, int flags, + struct thread *td); int pfs_unmount (struct mount *mp, int mntflags, struct thread *td); int pfs_root (struct mount *mp, int flags, @@ -251,6 +254,7 @@ _##name##_uninit(struct vfsconf *vfc) { \ } \ \ static struct vfsops name##_vfsops = { \ + .vfs_cmount = pfs_cmount, \ .vfs_init = _##name##_init, \ .vfs_mount = _##name##_mount, \ .vfs_root = pfs_root, \ diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index 1d1cc6cea73..2f609425886 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -736,9 +736,6 @@ mount(td, uap) /* Kick out MNT_ROOTFS early as it is legal internally */ uap->flags &= ~MNT_ROOTFS; - if (uap->data == NULL) - return (EINVAL); - fstype = malloc(MFSNAMELEN, M_TEMP, M_WAITOK); error = copyinstr(uap->type, fstype, MFSNAMELEN, NULL); if (!error) {