Index: sys/compat/common/vfs_syscalls_50.c =================================================================== RCS file: /cvsroot/src/sys/compat/common/vfs_syscalls_50.c,v retrieving revision 1.22 diff -u -r1.22 vfs_syscalls_50.c --- sys/compat/common/vfs_syscalls_50.c 17 Jun 2019 14:59:15 -0000 1.22 +++ sys/compat/common/vfs_syscalls_50.c 18 Jun 2019 15:08:25 -0000 @@ -343,7 +343,7 @@ syscallarg(uint32_t) dev; } */ return do_sys_mknod(l, SCARG(uap, path), SCARG(uap, mode), - SCARG(uap, dev), retval, UIO_USERSPACE); + SCARG(uap, dev), UIO_USERSPACE); } #ifdef QUOTA Index: sys/compat/linux/common/linux_file.c =================================================================== RCS file: /cvsroot/src/sys/compat/linux/common/linux_file.c,v retrieving revision 1.115 diff -u -r1.115 linux_file.c --- sys/compat/linux/common/linux_file.c 1 Mar 2015 13:19:39 -0000 1.115 +++ sys/compat/linux/common/linux_file.c 18 Jun 2019 15:08:25 -0000 @@ -675,8 +675,7 @@ */ return do_sys_mknodat(l, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, mode), SCARG(uap, dev) & 0xffff, retval, - UIO_USERSPACE); + SCARG(uap, mode), SCARG(uap, dev) & 0xffff, UIO_USERSPACE); } } Index: sys/compat/netbsd32/netbsd32_compat_50.c =================================================================== RCS file: /cvsroot/src/sys/compat/netbsd32/netbsd32_compat_50.c,v retrieving revision 1.36 diff -u -r1.36 netbsd32_compat_50.c --- sys/compat/netbsd32/netbsd32_compat_50.c 1 Mar 2019 11:06:56 -0000 1.36 +++ sys/compat/netbsd32/netbsd32_compat_50.c 18 Jun 2019 15:08:25 -0000 @@ -116,7 +116,7 @@ syscallarg(uint32_t) dev; } */ return do_sys_mknod(l, SCARG_P32(uap, path), SCARG(uap, mode), - SCARG(uap, dev), retval, UIO_USERSPACE); + SCARG(uap, dev), UIO_USERSPACE); } int Index: sys/compat/netbsd32/netbsd32_netbsd.c =================================================================== RCS file: /cvsroot/src/sys/compat/netbsd32/netbsd32_netbsd.c,v retrieving revision 1.223 diff -u -r1.223 netbsd32_netbsd.c --- sys/compat/netbsd32/netbsd32_netbsd.c 27 Jan 2019 02:08:40 -0000 1.223 +++ sys/compat/netbsd32/netbsd32_netbsd.c 18 Jun 2019 15:08:25 -0000 @@ -297,7 +297,7 @@ } */ return do_sys_mknod(l, SCARG_P32(uap, path), SCARG(uap, mode), - SCARG(uap, dev), retval, UIO_USERSPACE); + SCARG(uap, dev), UIO_USERSPACE); } int Index: sys/kern/vfs_syscalls.c =================================================================== RCS file: /cvsroot/src/sys/kern/vfs_syscalls.c,v retrieving revision 1.528 diff -u -r1.528 vfs_syscalls.c --- sys/kern/vfs_syscalls.c 13 May 2019 08:17:30 -0000 1.528 +++ sys/kern/vfs_syscalls.c 18 Jun 2019 15:08:26 -0000 @@ -2151,6 +2151,20 @@ return error; } +int +do_posix_mknodat(struct lwp *l, int fdat, const char *pathname, mode_t mode, + dev_t dev) +{ + + if ((mode & S_IFIFO) && dev == 0) + return do_sys_mkfifoat(l, fdat, pathname, mode); + else if (mode & (S_IFCHR | S_IFBLK)) + return do_sys_mknodat(l, fdat, pathname, mode, dev, + UIO_USERSPACE); + else + return EINVAL; +} + /* * Create a special file. */ @@ -2164,8 +2178,8 @@ syscallarg(mode_t) mode; syscallarg(dev_t) dev; } */ - return do_sys_mknodat(l, AT_FDCWD, SCARG(uap, path), SCARG(uap, mode), - SCARG(uap, dev), retval, UIO_USERSPACE); + return do_posix_mknodat(l, AT_FDCWD, SCARG(uap, path), + SCARG(uap, mode), SCARG(uap, dev)); } int @@ -2180,20 +2194,20 @@ syscallarg(dev_t) dev; } */ - return do_sys_mknodat(l, SCARG(uap, fd), SCARG(uap, path), - SCARG(uap, mode), SCARG(uap, dev), retval, UIO_USERSPACE); + return do_posix_mknodat(l, SCARG(uap, fd), SCARG(uap, path), + SCARG(uap, mode), SCARG(uap, dev)); } int do_sys_mknod(struct lwp *l, const char *pathname, mode_t mode, dev_t dev, - register_t *retval, enum uio_seg seg) + enum uio_seg seg) { - return do_sys_mknodat(l, AT_FDCWD, pathname, mode, dev, retval, seg); + return do_sys_mknodat(l, AT_FDCWD, pathname, mode, dev, seg); } int do_sys_mknodat(struct lwp *l, int fdat, const char *pathname, mode_t mode, - dev_t dev, register_t *retval, enum uio_seg seg) + dev_t dev, enum uio_seg seg) { struct proc *p = l->l_proc; struct vnode *vp; Index: sys/rump/librump/rumpvfs/devnodes.c =================================================================== RCS file: /cvsroot/src/sys/rump/librump/rumpvfs/devnodes.c,v retrieving revision 1.12 diff -u -r1.12 devnodes.c --- sys/rump/librump/rumpvfs/devnodes.c 26 Jan 2016 23:12:18 -0000 1.12 +++ sys/rump/librump/rumpvfs/devnodes.c 18 Jun 2019 15:08:26 -0000 @@ -44,11 +44,10 @@ makeonedevnode(dev_t devtype, const char *devname, devmajor_t majnum, devminor_t minnum) { - register_t retval; int error; error = do_sys_mknod(curlwp, devname, 0666 | devtype, - makedev(majnum, minnum), &retval, UIO_SYSSPACE); + makedev(majnum, minnum), UIO_SYSSPACE); if (error == EEXIST) /* XXX: should check it's actually the same */ error = 0; @@ -62,7 +61,6 @@ int error = 0; char *devname, *p; size_t devlen; - register_t retval; devlen = strlen(basename) + 1 + 1; /* +letter +0 */ devname = kmem_zalloc(devlen, KM_SLEEP); @@ -74,7 +72,7 @@ *p = minchar; if ((error = do_sys_mknod(curlwp, devname, 0666 | devtype, - makedev(maj, minnum), &retval, UIO_SYSSPACE))) { + makedev(maj, minnum), UIO_SYSSPACE))) { if (error == EEXIST) error = 0; else @@ -121,7 +119,6 @@ devminor_t dmin, const char *base, int c1, int c2) { char cstr1[2] = {0,0}, cstr2[2] = {0,0}; - register_t rv; int error; if (c1 != -1) { @@ -145,7 +142,7 @@ break; case NOTEXIST: if ((error = do_sys_mknod(curlwp, buf, 0600 | S_IFBLK, - makedev(blk, dmin), &rv, UIO_SYSSPACE)) != 0) + makedev(blk, dmin), UIO_SYSSPACE)) != 0) aprint_verbose("mkdevnodes: failed to " "create %s: %d\n", buf, error); break; @@ -163,7 +160,7 @@ break; case NOTEXIST: if ((error = do_sys_mknod(curlwp, buf, 0600 | S_IFCHR, - makedev(chr, dmin), &rv, UIO_SYSSPACE)) != 0) + makedev(chr, dmin), UIO_SYSSPACE)) != 0) aprint_verbose("mkdevnodes: failed to " "create %s: %d\n", buf, error); break; Index: sys/sys/vfs_syscalls.h =================================================================== RCS file: /cvsroot/src/sys/sys/vfs_syscalls.h,v retrieving revision 1.23 diff -u -r1.23 vfs_syscalls.h --- sys/sys/vfs_syscalls.h 29 Jul 2017 04:02:49 -0000 1.23 +++ sys/sys/vfs_syscalls.h 18 Jun 2019 15:08:26 -0000 @@ -70,8 +70,9 @@ int do_sys_linkat(struct lwp *, int, const char *, int, const char *, int, register_t *); int do_sys_unlink(const char *, enum uio_seg); int do_sys_rename(const char *, const char *, enum uio_seg, int); -int do_sys_mknod(struct lwp *, const char *, mode_t, dev_t, register_t *, enum uio_seg); -int do_sys_mknodat(struct lwp *, int, const char *, mode_t, dev_t, register_t *, enum uio_seg); +int do_posix_mknodat(struct lwp *, int, const char *, mode_t, dev_t); +int do_sys_mknod(struct lwp *, const char *, mode_t, dev_t, enum uio_seg); +int do_sys_mknodat(struct lwp *, int, const char *, mode_t, dev_t, enum uio_seg); int do_sys_chmodat(struct lwp *, int, const char *, int, int); int do_sys_chownat(struct lwp *, int, const char *, uid_t, gid_t, int); int do_sys_accessat(struct lwp *, int, const char *, int ,int); Index: external/cddl/osnet/sys/kern/ddi.c =================================================================== RCS file: /cvsroot/src/external/cddl/osnet/sys/kern/ddi.c,v retrieving revision 1.7 diff -u -r1.7 ddi.c --- external/cddl/osnet/sys/kern/ddi.c 22 May 2019 08:44:48 -0000 1.7 +++ external/cddl/osnet/sys/kern/ddi.c 18 Jun 2019 15:09:05 -0000 @@ -613,7 +613,6 @@ char *pn; dev_t dev; int error; - register_t ret; pn = PNBUF_GET(); if (spec_type == S_IFCHR) { @@ -649,7 +648,7 @@ (void)do_sys_unlink(pn, UIO_SYSSPACE); } - error = do_sys_mknod(l, pn, spec_type, dev, &ret, UIO_SYSSPACE); + error = do_sys_mknod(l, pn, spec_type, dev, UIO_SYSSPACE); exit: PNBUF_PUT(pn);