CVS commit: [netbsd-9] src/sys/compat

2023-06-21 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Jun 21 21:24:38 UTC 2023

Modified Files:
src/sys/compat/linux32/arch/amd64 [netbsd-9]: linux32_machdep.c
src/sys/compat/ossaudio [netbsd-9]: ossaudio.c
src/sys/compat/sunos32 [netbsd-9]: sunos32_misc.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1650):

sys/compat/sunos32/sunos32_misc.c: revision 1.86
sys/compat/ossaudio/ossaudio.c: revision 1.85
sys/compat/linux32/arch/amd64/linux32_machdep.c: revision 1.48

compat_sunos32: Memset zero before copyout.

Unclear if this can leak anything but let's be on the safe side.

compat_ossaudio: Zero-initialize idat before copyout.
Unclear if there are any paths to the copyout without initialization,
but let's play it safe to keep the auditing effort low.

linux32_rt_sendsig: Memset zero before copyout.
Not sure if there's any padding here, but it's a pretty big
structure, fairly likely, so let's be rather safe than sorry.


To generate a diff of this commit:
cvs rdiff -u -r1.45.2.1 -r1.45.2.2 \
src/sys/compat/linux32/arch/amd64/linux32_machdep.c
cvs rdiff -u -r1.74.4.5 -r1.74.4.6 src/sys/compat/ossaudio/ossaudio.c
cvs rdiff -u -r1.79.4.1 -r1.79.4.2 src/sys/compat/sunos32/sunos32_misc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/linux32/arch/amd64/linux32_machdep.c
diff -u src/sys/compat/linux32/arch/amd64/linux32_machdep.c:1.45.2.1 src/sys/compat/linux32/arch/amd64/linux32_machdep.c:1.45.2.2
--- src/sys/compat/linux32/arch/amd64/linux32_machdep.c:1.45.2.1	Wed Aug  3 11:11:33 2022
+++ src/sys/compat/linux32/arch/amd64/linux32_machdep.c	Wed Jun 21 21:24:38 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux32_machdep.c,v 1.45.2.1 2022/08/03 11:11:33 martin Exp $ */
+/*	$NetBSD: linux32_machdep.c,v 1.45.2.2 2023/06/21 21:24:38 martin Exp $ */
 
 /*-
  * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved.
@@ -31,7 +31,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: linux32_machdep.c,v 1.45.2.1 2022/08/03 11:11:33 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux32_machdep.c,v 1.45.2.2 2023/06/21 21:24:38 martin Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_user_ldt.h"
@@ -195,6 +195,7 @@ linux32_rt_sendsig(const ksiginfo_t *ksi
 	fp--;
 
 	/* Build stack frame for signal trampoline. */
+	memset(, 0, sizeof(frame));
 	NETBSD32PTR32(frame.sf_handler, catcher);
 	frame.sf_sig = native_to_linux32_signo[sig];
 	NETBSD32PTR32(frame.sf_sip, >sf_si);

Index: src/sys/compat/ossaudio/ossaudio.c
diff -u src/sys/compat/ossaudio/ossaudio.c:1.74.4.5 src/sys/compat/ossaudio/ossaudio.c:1.74.4.6
--- src/sys/compat/ossaudio/ossaudio.c:1.74.4.5	Wed Aug  3 11:11:32 2022
+++ src/sys/compat/ossaudio/ossaudio.c	Wed Jun 21 21:24:37 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ossaudio.c,v 1.74.4.5 2022/08/03 11:11:32 martin Exp $	*/
+/*	$NetBSD: ossaudio.c,v 1.74.4.6 2023/06/21 21:24:37 martin Exp $	*/
 
 /*-
  * Copyright (c) 1997, 2008 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ossaudio.c,v 1.74.4.5 2022/08/03 11:11:32 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ossaudio.c,v 1.74.4.6 2023/06/21 21:24:37 martin Exp $");
 
 #include 
 #include 
@@ -1069,7 +1069,7 @@ oss_ioctl_mixer(struct lwp *lwp, const s
 	mixer_ctrl_t mc;
 	struct oss_mixer_info omi;
 	struct audio_device adev;
-	int idat;
+	int idat = 0;
 	int i;
 	int error;
 	int l, r, n, e;

Index: src/sys/compat/sunos32/sunos32_misc.c
diff -u src/sys/compat/sunos32/sunos32_misc.c:1.79.4.1 src/sys/compat/sunos32/sunos32_misc.c:1.79.4.2
--- src/sys/compat/sunos32/sunos32_misc.c:1.79.4.1	Wed Aug  3 11:11:33 2022
+++ src/sys/compat/sunos32/sunos32_misc.c	Wed Jun 21 21:24:37 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: sunos32_misc.c,v 1.79.4.1 2022/08/03 11:11:33 martin Exp $	*/
+/*	$NetBSD: sunos32_misc.c,v 1.79.4.2 2023/06/21 21:24:37 martin Exp $	*/
 /* from :NetBSD: sunos_misc.c,v 1.107 2000/12/01 19:25:10 jdolecek Exp	*/
 
 /*
@@ -77,7 +77,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: sunos32_misc.c,v 1.79.4.1 2022/08/03 11:11:33 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sunos32_misc.c,v 1.79.4.2 2023/06/21 21:24:37 martin Exp $");
 
 #define COMPAT_SUNOS 1
 
@@ -242,6 +242,7 @@ static inline void sunos32_from___stat13
 static inline void
 sunos32_from___stat13(struct stat *sbp, struct netbsd32_stat43 *sb32p)
 {
+	memset(sb32p, 0, sizeof(*sb32p));
 	sb32p->st_dev = sbp->st_dev;
 	sb32p->st_ino = sbp->st_ino;
 	sb32p->st_mode = sbp->st_mode;



CVS commit: [netbsd-9] src/sys/compat

2023-06-21 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Jun 21 21:24:38 UTC 2023

Modified Files:
src/sys/compat/linux32/arch/amd64 [netbsd-9]: linux32_machdep.c
src/sys/compat/ossaudio [netbsd-9]: ossaudio.c
src/sys/compat/sunos32 [netbsd-9]: sunos32_misc.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1650):

sys/compat/sunos32/sunos32_misc.c: revision 1.86
sys/compat/ossaudio/ossaudio.c: revision 1.85
sys/compat/linux32/arch/amd64/linux32_machdep.c: revision 1.48

compat_sunos32: Memset zero before copyout.

Unclear if this can leak anything but let's be on the safe side.

compat_ossaudio: Zero-initialize idat before copyout.
Unclear if there are any paths to the copyout without initialization,
but let's play it safe to keep the auditing effort low.

linux32_rt_sendsig: Memset zero before copyout.
Not sure if there's any padding here, but it's a pretty big
structure, fairly likely, so let's be rather safe than sorry.


To generate a diff of this commit:
cvs rdiff -u -r1.45.2.1 -r1.45.2.2 \
src/sys/compat/linux32/arch/amd64/linux32_machdep.c
cvs rdiff -u -r1.74.4.5 -r1.74.4.6 src/sys/compat/ossaudio/ossaudio.c
cvs rdiff -u -r1.79.4.1 -r1.79.4.2 src/sys/compat/sunos32/sunos32_misc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2023-04-01 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Apr  1 15:51:16 UTC 2023

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_fs.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1620):

sys/compat/netbsd32/netbsd32_fs.c: revision 1.89

data_len == 0 on mount means "the kernel knows". Fixes amd on compat32.


To generate a diff of this commit:
cvs rdiff -u -r1.82.4.3 -r1.82.4.4 src/sys/compat/netbsd32/netbsd32_fs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32_fs.c
diff -u src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.3 src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.4
--- src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.3	Wed Aug  3 11:05:51 2022
+++ src/sys/compat/netbsd32/netbsd32_fs.c	Sat Apr  1 15:51:16 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_fs.c,v 1.82.4.3 2022/08/03 11:05:51 martin Exp $	*/
+/*	$NetBSD: netbsd32_fs.c,v 1.82.4.4 2023/04/01 15:51:16 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.82.4.3 2022/08/03 11:05:51 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.82.4.4 2023/04/01 15:51:16 martin Exp $");
 
 #include 
 #include 
@@ -828,7 +828,7 @@ netbsd32___mount50(struct lwp *l, const 
 		return error;
 
 	if (strcmp(mtype, MOUNT_TMPFS) == 0) {
-		if (data_len < sizeof(fs_args32.tmpfs_args))
+		if (data_len != 0 && data_len < sizeof(fs_args32.tmpfs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.tmpfs_args, 
@@ -852,7 +852,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.tmpfs_args;
 		data_len = sizeof(fs_args.tmpfs_args);
 	} else if (strcmp(mtype, MOUNT_MFS) == 0) {
-		if (data_len < sizeof(fs_args32.mfs_args))
+		if (data_len != 0 && data_len < sizeof(fs_args32.mfs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.mfs_args, 
@@ -873,7 +873,7 @@ netbsd32___mount50(struct lwp *l, const 
 	} else if ((strcmp(mtype, MOUNT_UFS) == 0) ||
 		   (strcmp(mtype, MOUNT_EXT2FS) == 0) ||
 		   (strcmp(mtype, MOUNT_LFS) == 0)) {
-		if (data_len < sizeof(fs_args32.ufs_args))
+		if (data_len != 0 && data_len < sizeof(fs_args32.ufs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.ufs_args, 
@@ -887,7 +887,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.ufs_args;
 		data_len = sizeof(fs_args.ufs_args);
 	} else if (strcmp(mtype, MOUNT_CD9660) == 0) {
-		if (data_len < sizeof(fs_args32.iso_args))
+		if (data_len != 0 && data_len < sizeof(fs_args32.iso_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.iso_args, 
@@ -968,7 +968,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.udf_args;
 		data_len = sizeof(fs_args.udf_args);
 	} else if (strcmp(mtype, MOUNT_NFS) == 0) {
-		if (data_len < sizeof(fs_args32.nfs_args))
+		if (data_len != 0 && data_len < sizeof(fs_args32.nfs_args))
 			return EINVAL;
 		/* XXX: NFS requires copyin even with MNT_GETARGS */
 		if ((flags & MNT_GETARGS) == 0) {
@@ -996,7 +996,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.nfs_args;
 		data_len = sizeof(fs_args.nfs_args);
 	} else if (strcmp(mtype, MOUNT_NULL) == 0) {
-		if (data_len < sizeof(fs_args32.null_args))
+		if (data_len != 0 && data_len < sizeof(fs_args32.null_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.null_args, 
@@ -1021,7 +1021,8 @@ netbsd32___mount50(struct lwp *l, const 
 	if (flags & MNT_GETARGS) {
 		data_len = *retval;
 		if (strcmp(mtype, MOUNT_TMPFS) == 0) {
-			if (data_len != sizeof(fs_args.tmpfs_args))
+			if (data_len != 0 &&
+			data_len != sizeof(fs_args.tmpfs_args))
 return EINVAL;
 			fs_args32.tmpfs_args.ta_version =
 			fs_args.tmpfs_args.ta_version;
@@ -1039,7 +1040,8 @@ netbsd32___mount50(struct lwp *l, const 
 sizeof(fs_args32.tmpfs_args));
 			*retval = sizeof(fs_args32.tmpfs_args);
 		} else if (strcmp(mtype, MOUNT_MFS) == 0) {
-			if (data_len != sizeof(fs_args.mfs_args))
+			if (data_len != 0 &&
+			data_len != sizeof(fs_args.mfs_args))
 return EINVAL;
 			NETBSD32PTR32(fs_args32.mfs_args.fspec,
 			fs_args.mfs_args.fspec);
@@ -1052,7 +1054,8 @@ netbsd32___mount50(struct lwp *l, const 
 sizeof(fs_args32.mfs_args));
 			*retval = sizeof(fs_args32.mfs_args);
 		} else if (strcmp(mtype, MOUNT_UFS) == 0) {
-			if (data_len != sizeof(fs_args.ufs_args))
+			if (data_len != 0 &&
+			data_len != sizeof(fs_args.ufs_args))
 return EINVAL;
 			NETBSD32PTR32(fs_args32.ufs_args.fspec,
 			fs_args.ufs_args.fspec);
@@ -1060,7 +1063,8 @@ netbsd32___mount50(struct lwp *l, const 
 			sizeof(fs_args32.ufs_args));
 			*retval = sizeof(fs_args32.ufs_args);
 		} else if 

CVS commit: [netbsd-9] src/sys/compat/netbsd32

2023-04-01 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Apr  1 15:51:16 UTC 2023

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_fs.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1620):

sys/compat/netbsd32/netbsd32_fs.c: revision 1.89

data_len == 0 on mount means "the kernel knows". Fixes amd on compat32.


To generate a diff of this commit:
cvs rdiff -u -r1.82.4.3 -r1.82.4.4 src/sys/compat/netbsd32/netbsd32_fs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat/common

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 11:16:12 UTC 2022

Modified Files:
src/sys/compat/common [netbsd-9]: vfs_syscalls_20.c

Log Message:
Apply patch, requested by riastradh in ticket #1487:

sys/compat/common/vfs_syscalls_20.c (apply patch)

sys/compat: Memset zero before copyout.

Just in case of uninitialized padding which would lead to kernel
stack disclosure.  If the compiler can prove the memset redundant
then it can optimize it away; otherwise better safe than sorry.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.41.4.1 src/sys/compat/common/vfs_syscalls_20.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/common/vfs_syscalls_20.c
diff -u src/sys/compat/common/vfs_syscalls_20.c:1.41 src/sys/compat/common/vfs_syscalls_20.c:1.41.4.1
--- src/sys/compat/common/vfs_syscalls_20.c:1.41	Sun Jan 27 02:08:39 2019
+++ src/sys/compat/common/vfs_syscalls_20.c	Wed Aug  3 11:16:12 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_syscalls_20.c,v 1.41 2019/01/27 02:08:39 pgoyette Exp $	*/
+/*	$NetBSD: vfs_syscalls_20.c,v 1.41.4.1 2022/08/03 11:16:12 martin Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_20.c,v 1.41 2019/01/27 02:08:39 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_20.c,v 1.41.4.1 2022/08/03 11:16:12 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -103,6 +103,9 @@ vfs2fs(struct statfs12 *bfs, const struc
 {
 	struct statfs12 ofs;
 	int i;
+
+	memset(, 0, sizeof(ofs));
+
 	ofs.f_type = 0;
 	ofs.f_oflags = (short)fs->f_flag;
 



CVS commit: [netbsd-9] src/sys/compat/common

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 11:16:12 UTC 2022

Modified Files:
src/sys/compat/common [netbsd-9]: vfs_syscalls_20.c

Log Message:
Apply patch, requested by riastradh in ticket #1487:

sys/compat/common/vfs_syscalls_20.c (apply patch)

sys/compat: Memset zero before copyout.

Just in case of uninitialized padding which would lead to kernel
stack disclosure.  If the compiler can prove the memset redundant
then it can optimize it away; otherwise better safe than sorry.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.41.4.1 src/sys/compat/common/vfs_syscalls_20.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 11:11:33 UTC 2022

Modified Files:
src/sys/compat/common [netbsd-9]: ieee80211_20.c if_media_80.c
kern_info_09.c kern_info_43.c kern_resource_43.c kern_sig_13.c
kern_sig_43.c kern_time_50.c vfs_syscalls_12.c vfs_syscalls_30.c
vfs_syscalls_43.c
src/sys/compat/freebsd [netbsd-9]: freebsd_machdep.c freebsd_misc.c
freebsd_sched.c
src/sys/compat/linux/arch/alpha [netbsd-9]: linux_machdep.c
linux_osf1.c
src/sys/compat/linux/arch/amd64 [netbsd-9]: linux_machdep.c
src/sys/compat/linux/arch/arm [netbsd-9]: linux_machdep.c
linux_ptrace.c
src/sys/compat/linux/arch/i386 [netbsd-9]: linux_machdep.c
linux_ptrace.c
src/sys/compat/linux/arch/m68k [netbsd-9]: linux_machdep.c
src/sys/compat/linux/arch/mips [netbsd-9]: linux_machdep.c
src/sys/compat/linux/arch/powerpc [netbsd-9]: linux_exec_powerpc.c
linux_machdep.c linux_ptrace.c
src/sys/compat/linux/common [netbsd-9]: linux_cdrom.c linux_fdio.c
linux_file.c linux_hdio.c linux_misc.c linux_mtio.c
linux_oldolduname.c linux_olduname.c linux_sched.c linux_signal.c
linux_socket.c linux_time.c
src/sys/compat/linux32/arch/amd64 [netbsd-9]: linux32_machdep.c
src/sys/compat/linux32/common [netbsd-9]: linux32_exec_elf32.c
linux32_resource.c linux32_signal.c linux32_time.c
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_compat_12.c
netbsd32_compat_20.c netbsd32_compat_43.c netbsd32_compat_50.c
netbsd32_conv.h netbsd32_nfssvc.c netbsd32_ptrace.c
netbsd32_signal.c netbsd32_time.c netbsd32_wait.c
src/sys/compat/ossaudio [netbsd-9]: ossaudio.c
src/sys/compat/sunos [netbsd-9]: sunos_ioctl.c sunos_misc.c
src/sys/compat/sunos32 [netbsd-9]: sunos32_ioctl.c sunos32_misc.c
src/sys/compat/sys [netbsd-9]: time_types.h
src/sys/compat/ultrix [netbsd-9]: ultrix_ioctl.c ultrix_misc.c

Log Message:
Pull up following revision(s), all via patch
(requested by riastradh in ticket #1487):

sys/compat/linux/arch/i386/linux_machdep.c: revision 1.168
sys/compat/sunos/sunos_misc.c: revision 1.177
sys/compat/netbsd32/netbsd32_compat_50.c: revision 1.52
sys/compat/common/kern_resource_43.c: revision 1.23
sys/compat/netbsd32/netbsd32_conv.h: revision 1.46
sys/compat/linux/arch/i386/linux_ptrace.c: revision 1.35
sys/compat/common/vfs_syscalls_12.c: revision 1.38
sys/compat/ultrix/ultrix_misc.c: revision 1.126
sys/compat/common/kern_sig_43.c: revision 1.37
sys/compat/linux/common/linux_mtio.c: revision 1.8
sys/compat/freebsd/freebsd_misc.c: revision 1.34
sys/compat/freebsd/freebsd_machdep.c: revision 1.5
sys/compat/linux/common/linux_olduname.c: revision 1.67
sys/compat/linux/arch/mips/linux_machdep.c: revision 1.44
sys/compat/freebsd/freebsd_sched.c: revision 1.23
sys/compat/ossaudio/ossaudio.c: revision 1.84
sys/compat/sys/time_types.h: revision 1.6
sys/compat/linux/arch/powerpc/linux_machdep.c: revision 1.51
sys/compat/common/ieee80211_20.c: revision 1.7
sys/compat/linux/common/linux_file.c: revision 1.119
sys/compat/linux/arch/arm/linux_machdep.c: revision 1.34
sys/compat/netbsd32/netbsd32_wait.c: revision 1.25
sys/compat/linux32/common/linux32_time.c: revision 1.38
sys/compat/linux/arch/powerpc/linux_ptrace.c: revision 1.33
sys/compat/linux/arch/alpha/linux_machdep.c: revision 1.52
sys/compat/linux32/arch/amd64/linux32_machdep.c: revision 1.46
sys/compat/netbsd32/netbsd32_compat_12.c: revision 1.36
sys/compat/ultrix/ultrix_ioctl.c: revision 1.39
sys/compat/linux/common/linux_misc.c: revision 1.252
sys/compat/linux/common/linux_hdio.c: revision 1.19
sys/compat/sunos/sunos_ioctl.c: revision 1.71
sys/compat/linux/common/linux_sched.c: revision 1.79
sys/compat/common/kern_info_43.c: revision 1.40
sys/compat/linux32/common/linux32_exec_elf32.c: revision 1.20
sys/compat/linux/common/linux_socket.c: revision 1.153
sys/compat/linux/arch/amd64/linux_machdep.c: revision 1.60
sys/compat/common/vfs_syscalls_43.c: revision 1.68
sys/compat/linux/arch/powerpc/linux_exec_powerpc.c: revision 1.25
sys/compat/netbsd32/netbsd32_ptrace.c: revision 1.9
sys/compat/common/kern_time_50.c: revision 1.37
sys/compat/netbsd32/netbsd32_compat_20.c: revision 1.42
sys/compat/linux/common/linux_cdrom.c: revision 1.28
sys/compat/linux/arch/m68k/linux_machdep.c: revision 1.43
sys/compat/common/kern_info_09.c: revision 1.22
sys/compat/linux32/common/linux32_resource.c: revision 1.12

CVS commit: [netbsd-9] src/sys/compat

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 11:11:33 UTC 2022

Modified Files:
src/sys/compat/common [netbsd-9]: ieee80211_20.c if_media_80.c
kern_info_09.c kern_info_43.c kern_resource_43.c kern_sig_13.c
kern_sig_43.c kern_time_50.c vfs_syscalls_12.c vfs_syscalls_30.c
vfs_syscalls_43.c
src/sys/compat/freebsd [netbsd-9]: freebsd_machdep.c freebsd_misc.c
freebsd_sched.c
src/sys/compat/linux/arch/alpha [netbsd-9]: linux_machdep.c
linux_osf1.c
src/sys/compat/linux/arch/amd64 [netbsd-9]: linux_machdep.c
src/sys/compat/linux/arch/arm [netbsd-9]: linux_machdep.c
linux_ptrace.c
src/sys/compat/linux/arch/i386 [netbsd-9]: linux_machdep.c
linux_ptrace.c
src/sys/compat/linux/arch/m68k [netbsd-9]: linux_machdep.c
src/sys/compat/linux/arch/mips [netbsd-9]: linux_machdep.c
src/sys/compat/linux/arch/powerpc [netbsd-9]: linux_exec_powerpc.c
linux_machdep.c linux_ptrace.c
src/sys/compat/linux/common [netbsd-9]: linux_cdrom.c linux_fdio.c
linux_file.c linux_hdio.c linux_misc.c linux_mtio.c
linux_oldolduname.c linux_olduname.c linux_sched.c linux_signal.c
linux_socket.c linux_time.c
src/sys/compat/linux32/arch/amd64 [netbsd-9]: linux32_machdep.c
src/sys/compat/linux32/common [netbsd-9]: linux32_exec_elf32.c
linux32_resource.c linux32_signal.c linux32_time.c
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_compat_12.c
netbsd32_compat_20.c netbsd32_compat_43.c netbsd32_compat_50.c
netbsd32_conv.h netbsd32_nfssvc.c netbsd32_ptrace.c
netbsd32_signal.c netbsd32_time.c netbsd32_wait.c
src/sys/compat/ossaudio [netbsd-9]: ossaudio.c
src/sys/compat/sunos [netbsd-9]: sunos_ioctl.c sunos_misc.c
src/sys/compat/sunos32 [netbsd-9]: sunos32_ioctl.c sunos32_misc.c
src/sys/compat/sys [netbsd-9]: time_types.h
src/sys/compat/ultrix [netbsd-9]: ultrix_ioctl.c ultrix_misc.c

Log Message:
Pull up following revision(s), all via patch
(requested by riastradh in ticket #1487):

sys/compat/linux/arch/i386/linux_machdep.c: revision 1.168
sys/compat/sunos/sunos_misc.c: revision 1.177
sys/compat/netbsd32/netbsd32_compat_50.c: revision 1.52
sys/compat/common/kern_resource_43.c: revision 1.23
sys/compat/netbsd32/netbsd32_conv.h: revision 1.46
sys/compat/linux/arch/i386/linux_ptrace.c: revision 1.35
sys/compat/common/vfs_syscalls_12.c: revision 1.38
sys/compat/ultrix/ultrix_misc.c: revision 1.126
sys/compat/common/kern_sig_43.c: revision 1.37
sys/compat/linux/common/linux_mtio.c: revision 1.8
sys/compat/freebsd/freebsd_misc.c: revision 1.34
sys/compat/freebsd/freebsd_machdep.c: revision 1.5
sys/compat/linux/common/linux_olduname.c: revision 1.67
sys/compat/linux/arch/mips/linux_machdep.c: revision 1.44
sys/compat/freebsd/freebsd_sched.c: revision 1.23
sys/compat/ossaudio/ossaudio.c: revision 1.84
sys/compat/sys/time_types.h: revision 1.6
sys/compat/linux/arch/powerpc/linux_machdep.c: revision 1.51
sys/compat/common/ieee80211_20.c: revision 1.7
sys/compat/linux/common/linux_file.c: revision 1.119
sys/compat/linux/arch/arm/linux_machdep.c: revision 1.34
sys/compat/netbsd32/netbsd32_wait.c: revision 1.25
sys/compat/linux32/common/linux32_time.c: revision 1.38
sys/compat/linux/arch/powerpc/linux_ptrace.c: revision 1.33
sys/compat/linux/arch/alpha/linux_machdep.c: revision 1.52
sys/compat/linux32/arch/amd64/linux32_machdep.c: revision 1.46
sys/compat/netbsd32/netbsd32_compat_12.c: revision 1.36
sys/compat/ultrix/ultrix_ioctl.c: revision 1.39
sys/compat/linux/common/linux_misc.c: revision 1.252
sys/compat/linux/common/linux_hdio.c: revision 1.19
sys/compat/sunos/sunos_ioctl.c: revision 1.71
sys/compat/linux/common/linux_sched.c: revision 1.79
sys/compat/common/kern_info_43.c: revision 1.40
sys/compat/linux32/common/linux32_exec_elf32.c: revision 1.20
sys/compat/linux/common/linux_socket.c: revision 1.153
sys/compat/linux/arch/amd64/linux_machdep.c: revision 1.60
sys/compat/common/vfs_syscalls_43.c: revision 1.68
sys/compat/linux/arch/powerpc/linux_exec_powerpc.c: revision 1.25
sys/compat/netbsd32/netbsd32_ptrace.c: revision 1.9
sys/compat/common/kern_time_50.c: revision 1.37
sys/compat/netbsd32/netbsd32_compat_20.c: revision 1.42
sys/compat/linux/common/linux_cdrom.c: revision 1.28
sys/compat/linux/arch/m68k/linux_machdep.c: revision 1.43
sys/compat/common/kern_info_09.c: revision 1.22
sys/compat/linux32/common/linux32_resource.c: revision 1.12

CVS commit: [netbsd-9] src/sys/compat/netbsd32

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 11:05:51 UTC 2022

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32.h netbsd32_conv.h
netbsd32_fs.c netbsd32_netbsd.c netbsd32_socket.c

Log Message:
Pull up following revision(s), all via patch
(requested by riastradh in ticket #1489):

sys/compat/netbsd32/netbsd32_netbsd.c: revision 1.232
sys/compat/netbsd32/netbsd32_socket.c: revision 1.56
sys/compat/netbsd32/netbsd32_conv.h: revision 1.45
sys/compat/netbsd32/netbsd32_fs.c: revision 1.92
sys/compat/netbsd32/netbsd32.h: revision 1.137

The read/write/send/recv system calls return ssize_t because -1 is
returned on error.  Therefore we must restrict the lengths of any
buffers to NETBSD32_SSIZE_MAX with compat32 to avoid garbage return
values.

Fixes ATF lib/libc/sys/t_write:write_err.


To generate a diff of this commit:
cvs rdiff -u -r1.123.4.2 -r1.123.4.3 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.38 -r1.38.4.1 src/sys/compat/netbsd32/netbsd32_conv.h
cvs rdiff -u -r1.82.4.2 -r1.82.4.3 src/sys/compat/netbsd32/netbsd32_fs.c
cvs rdiff -u -r1.228 -r1.228.2.1 src/sys/compat/netbsd32/netbsd32_netbsd.c
cvs rdiff -u -r1.49 -r1.49.4.1 src/sys/compat/netbsd32/netbsd32_socket.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 11:05:51 UTC 2022

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32.h netbsd32_conv.h
netbsd32_fs.c netbsd32_netbsd.c netbsd32_socket.c

Log Message:
Pull up following revision(s), all via patch
(requested by riastradh in ticket #1489):

sys/compat/netbsd32/netbsd32_netbsd.c: revision 1.232
sys/compat/netbsd32/netbsd32_socket.c: revision 1.56
sys/compat/netbsd32/netbsd32_conv.h: revision 1.45
sys/compat/netbsd32/netbsd32_fs.c: revision 1.92
sys/compat/netbsd32/netbsd32.h: revision 1.137

The read/write/send/recv system calls return ssize_t because -1 is
returned on error.  Therefore we must restrict the lengths of any
buffers to NETBSD32_SSIZE_MAX with compat32 to avoid garbage return
values.

Fixes ATF lib/libc/sys/t_write:write_err.


To generate a diff of this commit:
cvs rdiff -u -r1.123.4.2 -r1.123.4.3 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.38 -r1.38.4.1 src/sys/compat/netbsd32/netbsd32_conv.h
cvs rdiff -u -r1.82.4.2 -r1.82.4.3 src/sys/compat/netbsd32/netbsd32_fs.c
cvs rdiff -u -r1.228 -r1.228.2.1 src/sys/compat/netbsd32/netbsd32_netbsd.c
cvs rdiff -u -r1.49 -r1.49.4.1 src/sys/compat/netbsd32/netbsd32_socket.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32.h
diff -u src/sys/compat/netbsd32/netbsd32.h:1.123.4.2 src/sys/compat/netbsd32/netbsd32.h:1.123.4.3
--- src/sys/compat/netbsd32/netbsd32.h:1.123.4.2	Sun Apr 24 16:39:00 2022
+++ src/sys/compat/netbsd32/netbsd32.h	Wed Aug  3 11:05:51 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32.h,v 1.123.4.2 2022/04/24 16:39:00 martin Exp $	*/
+/*	$NetBSD: netbsd32.h,v 1.123.4.3 2022/08/03 11:05:51 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green
@@ -57,7 +57,7 @@
 #include 
 
 /*
- * first, define the basic types we need.
+ * first define the basic types we need, and any applicable limits.
  */
 
 typedef int32_t netbsd32_long;
@@ -72,6 +72,9 @@ typedef int32_t netbsd32_key_t;
 typedef int32_t netbsd32_intptr_t;
 typedef uint32_t netbsd32_uintptr_t;
 
+/* Note: 32-bit sparc defines ssize_t as long but still has same size as int. */
+#define	NETBSD32_SSIZE_MAX	INT32_MAX
+
 /* netbsd32_[u]int64 are machine dependent and defined below */
 
 /*

Index: src/sys/compat/netbsd32/netbsd32_conv.h
diff -u src/sys/compat/netbsd32/netbsd32_conv.h:1.38 src/sys/compat/netbsd32/netbsd32_conv.h:1.38.4.1
--- src/sys/compat/netbsd32/netbsd32_conv.h:1.38	Thu Feb 21 03:37:19 2019
+++ src/sys/compat/netbsd32/netbsd32_conv.h	Wed Aug  3 11:05:51 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_conv.h,v 1.38 2019/02/21 03:37:19 mrg Exp $	*/
+/*	$NetBSD: netbsd32_conv.h,v 1.38.4.1 2022/08/03 11:05:51 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -245,14 +245,16 @@ netbsd32_to_iovecin(const struct netbsd3
 int len)
 {
 	int i, error=0;
-	u_int32_t iov_base;
-	u_int32_t iov_len;
+	uint32_t iov_base;
+	uint32_t iov_len, total_iov_len;
+
 	/*
 	 * We could allocate an iov32p, do a copyin, and translate
 	 * each field and then free it all up, or we could copyin
 	 * each field separately.  I'm doing the latter to reduce
 	 * the number of MALLOC()s.
 	 */
+	total_iov_len = 0;
 	for (i = 0; i < len; i++, iovp++, iov32p++) {
 		if ((error = copyin(>iov_base, _base, sizeof(iov_base
 		return (error);
@@ -260,6 +262,19 @@ netbsd32_to_iovecin(const struct netbsd3
 		return (error);
 		iovp->iov_base = (void *)(u_long)iov_base;
 		iovp->iov_len = (size_t)iov_len;
+
+		/*
+		 * System calls return ssize_t because -1 is returned
+		 * on error.  Therefore we must restrict the length to
+		 * SSIZE_MAX (NETBSD32_SSIZE_MAX with compat32) to
+		 * avoid garbage return values.
+		 */
+		total_iov_len += iov_len;
+		if (iov_len > NETBSD32_SSIZE_MAX ||
+		total_iov_len > NETBSD32_SSIZE_MAX) {
+			return EINVAL;
+			break;
+		}
 	}
 	return error;
 }

Index: src/sys/compat/netbsd32/netbsd32_fs.c
diff -u src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.2 src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.3
--- src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.2	Sun Apr 24 16:39:00 2022
+++ src/sys/compat/netbsd32/netbsd32_fs.c	Wed Aug  3 11:05:51 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_fs.c,v 1.82.4.2 2022/04/24 16:39:00 martin Exp $	*/
+/*	$NetBSD: netbsd32_fs.c,v 1.82.4.3 2022/08/03 11:05:51 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.82.4.2 2022/04/24 16:39:00 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.82.4.3 2022/08/03 11:05:51 martin Exp $");
 
 #include 
 #include 
@@ -176,7 +176,8 @@ dofilereadv32(int fd, struct file *fp, s
 		 * Therefore we must restrict the length to SSIZE_MAX to
 		 * avoid garbage return values.
 		 */
-		if (iov->iov_len > 

CVS commit: [netbsd-9] src/sys/compat/netbsd32

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 10:58:58 UTC 2022

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_nfssvc.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1486):

sys/compat/netbsd32/netbsd32_nfssvc.c: revision 1.7

compat_netbsd32: Copy out 32-bit version in nfssvc32_nsd_out.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.6.4.1 src/sys/compat/netbsd32/netbsd32_nfssvc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32_nfssvc.c
diff -u src/sys/compat/netbsd32/netbsd32_nfssvc.c:1.6 src/sys/compat/netbsd32/netbsd32_nfssvc.c:1.6.4.1
--- src/sys/compat/netbsd32/netbsd32_nfssvc.c:1.6	Sun Jan 27 02:08:40 2019
+++ src/sys/compat/netbsd32/netbsd32_nfssvc.c	Wed Aug  3 10:58:58 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_nfssvc.c,v 1.6 2019/01/27 02:08:40 pgoyette Exp $	*/
+/*	$NetBSD: netbsd32_nfssvc.c,v 1.6.4.1 2022/08/03 10:58:58 martin Exp $	*/
 
 /*
  * Copyright (c) 2015 Matthew R. Green
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_nfssvc.c,v 1.6 2019/01/27 02:08:40 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_nfssvc.c,v 1.6.4.1 2022/08/03 10:58:58 martin Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_nfs.h"
@@ -134,7 +134,7 @@ nfssvc32_nsd_out(void *argp, const struc
 	args32.nsd_key[0] = nsd->nsd_key[0];
 	args32.nsd_key[1] = nsd->nsd_key[1];
 
-	return copyout(nsd, argp, sizeof *nsd);
+	return copyout(, argp, sizeof args32);
 }
 
 static int



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2022-08-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Aug  3 10:58:58 UTC 2022

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_nfssvc.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1486):

sys/compat/netbsd32/netbsd32_nfssvc.c: revision 1.7

compat_netbsd32: Copy out 32-bit version in nfssvc32_nsd_out.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.6.4.1 src/sys/compat/netbsd32/netbsd32_nfssvc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat

2019-11-19 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 19 13:36:25 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32.h
src/sys/compat/sys [netbsd-9]: siginfo.h

Log Message:
Pull up following revision(s) (requested by rin in ticket #457):

sys/compat/sys/siginfo.h: revision 1.9
sys/compat/netbsd32/netbsd32.h: revision 1.131

8-byte objects on i386 or arm-oabi are aligned in 4-byte boundary.

Therefore, we must use __attribute__((__aligned__(4))) for them.
netbsd32_{,u}int64 are provided for this purpose. However, we
cannot use it in  due to circular dependency
b/w .

In order to distangle it, we choose here to have a duplicate type,
netbsd32_siginfo_uint64, in . The equivalence
with netbsd32_uint64 is asserted in .

Now, gdb for i386 works again on amd64 kernel.

Based on patch provided by kamil. Thanks!

XXX
pullup to netbsd-9


To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.123.4.1 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.7.2.1 -r1.7.2.2 src/sys/compat/sys/siginfo.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat

2019-11-19 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 19 13:36:25 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32.h
src/sys/compat/sys [netbsd-9]: siginfo.h

Log Message:
Pull up following revision(s) (requested by rin in ticket #457):

sys/compat/sys/siginfo.h: revision 1.9
sys/compat/netbsd32/netbsd32.h: revision 1.131

8-byte objects on i386 or arm-oabi are aligned in 4-byte boundary.

Therefore, we must use __attribute__((__aligned__(4))) for them.
netbsd32_{,u}int64 are provided for this purpose. However, we
cannot use it in  due to circular dependency
b/w .

In order to distangle it, we choose here to have a duplicate type,
netbsd32_siginfo_uint64, in . The equivalence
with netbsd32_uint64 is asserted in .

Now, gdb for i386 works again on amd64 kernel.

Based on patch provided by kamil. Thanks!

XXX
pullup to netbsd-9


To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.123.4.1 src/sys/compat/netbsd32/netbsd32.h
cvs rdiff -u -r1.7.2.1 -r1.7.2.2 src/sys/compat/sys/siginfo.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32.h
diff -u src/sys/compat/netbsd32/netbsd32.h:1.123 src/sys/compat/netbsd32/netbsd32.h:1.123.4.1
--- src/sys/compat/netbsd32/netbsd32.h:1.123	Wed Feb 20 06:04:28 2019
+++ src/sys/compat/netbsd32/netbsd32.h	Tue Nov 19 13:36:25 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32.h,v 1.123 2019/02/20 06:04:28 mrg Exp $	*/
+/*	$NetBSD: netbsd32.h,v 1.123.4.1 2019/11/19 13:36:25 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001, 2008, 2015 Matthew R. Green
@@ -162,6 +162,10 @@ typedef int64_t netbsd32_int64 NETBSD32_
 typedef uint64_t netbsd32_uint64 NETBSD32_INT64_ALIGN;
 #undef NETBSD32_INT64_ALIGN
 
+/* Type used in siginfo, avoids circular dependencies between headers. */
+CTASSERT(sizeof(netbsd32_uint64) == sizeof(netbsd32_siginfo_uint64));
+CTASSERT(__alignof__(netbsd32_uint64) == __alignof__(netbsd32_siginfo_uint64));
+
 /*
  * all pointers are netbsd32_pointer_t (defined in )
  */

Index: src/sys/compat/sys/siginfo.h
diff -u src/sys/compat/sys/siginfo.h:1.7.2.1 src/sys/compat/sys/siginfo.h:1.7.2.2
--- src/sys/compat/sys/siginfo.h:1.7.2.1	Tue Oct 15 18:32:13 2019
+++ src/sys/compat/sys/siginfo.h	Tue Nov 19 13:36:25 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: siginfo.h,v 1.7.2.1 2019/10/15 18:32:13 martin Exp $	 */
+/*	$NetBSD: siginfo.h,v 1.7.2.2 2019/11/19 13:36:25 martin Exp $	 */
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -34,6 +34,15 @@
 
 #ifdef _KERNEL
 
+/* Avoids circular dependency with machine/netbsd32_machdep.h */
+#if defined(__x86_64__) || (defined(__arm__) && defined(__ARM_EABI__))
+#define NETBSD32_SIGINFO_UINT64_ALIGN __attribute__((__aligned__(4)))
+#else
+#define NETBSD32_SIGINFO_UINT64_ALIGN __attribute__((__aligned__(8)))
+#endif
+typedef uint64_t netbsd32_siginfo_uint64 NETBSD32_SIGINFO_UINT64_ALIGN;
+#undef NETBSD32_SIGINFO_UINT64_ALIGN
+
 typedef union sigval32 {
 	int sival_int;
 	uint32_t sival_ptr;
@@ -73,7 +82,7 @@ struct __ksiginfo32 {
 			int	_sysnum;
 			int	_retval[2];
 			int	_error;
-			uint64_t _args[8]; /* SYS_MAXSYSARGS */
+			netbsd32_siginfo_uint64 _args[8]; /* SYS_MAXSYSARGS */
 		} _syscall;
 
 		struct {



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-11-19 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 19 13:33:21 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_signal.c

Log Message:
Pull up following revision(s) (requested by rin in ticket #456):

sys/compat/netbsd32/netbsd32_signal.c: revision 1.46
sys/compat/netbsd32/netbsd32_signal.c: revision 1.47
sys/compat/netbsd32/netbsd32_signal.c: revision 1.48
sys/compat/netbsd32/netbsd32_signal.c: revision 1.49
sys/compat/netbsd32/netbsd32_signal.c: revision 1.50

Belatedly catch up with kern_sig.c rev 1.358:
Provide syscall information with SIGTRAP TRAP_SCE/TRAP_SCX so that
picotrace/truss, for example, works fine on COMPAT_NETBSD32.
With some minor changes:
- Centralize netbsd32_si{,32}_si{32,}() into netbsd32_ksi{,32}_ksi{32,}().
- Provide si_status with SIGCHLD.
- Remove the remaining of SA.

Sort by signal numbers as far as possible, adjust locations of functions.
No functional changes intended.

XXX
pullup to netbsd-9

Provide _ptrace_state for SIGTRAP with TRAP_EXEC, TRAP_CHLD, or TRAP_LWP.
Pointed out by kamil. Thanks!

XXX
pullup to netbsd-9

When converting siginfo, examine si_code at the beginning,
as explained in siginfo(2).
- If it is SI_NOINFO, there's no additional information.
- If it is non-positive, i.e., codes described in siginfo(2),
   we need to fill in _rt.

XXX
Description for SA_ASYNCIO in siginfo(2) seems outdated;
neither si_fd nor si_band are filled in with that code.

XXX
pullup to netbsd-9

TRAP_EXEC does not have extra fields to be filled in at the moment.
Explicitly ignore fields for now.
Pointed out by kamil. Thanks!

XXX
pullup to netbsd-9


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.45.8.1 src/sys/compat/netbsd32/netbsd32_signal.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32_signal.c
diff -u src/sys/compat/netbsd32/netbsd32_signal.c:1.45 src/sys/compat/netbsd32/netbsd32_signal.c:1.45.8.1
--- src/sys/compat/netbsd32/netbsd32_signal.c:1.45	Sun Dec 17 20:59:27 2017
+++ src/sys/compat/netbsd32/netbsd32_signal.c	Tue Nov 19 13:33:21 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_signal.c,v 1.45 2017/12/17 20:59:27 christos Exp $	*/
+/*	$NetBSD: netbsd32_signal.c,v 1.45.8.1 2019/11/19 13:33:21 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_signal.c,v 1.45 2017/12/17 20:59:27 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_signal.c,v 1.45.8.1 2019/11/19 13:33:21 martin Exp $");
 
 #if defined(_KERNEL_OPT) 
 #include "opt_ktrace.h"
@@ -188,173 +188,181 @@ netbsd32___sigaction_sigtramp(struct lwp
 void
 netbsd32_ksi32_to_ksi(struct _ksiginfo *si, const struct __ksiginfo32 *si32)
 {
+	size_t i;
+
 	memset(si, 0, sizeof (*si));
 	si->_signo = si32->_signo;
 	si->_code = si32->_code;
 	si->_errno = si32->_errno;
 
+	if (si32->_code == SI_NOINFO)
+		return;
+	else if (si32->_code <= 0)	/* codes described in siginfo(2) */
+		goto fill_rt;
+
 	switch (si32->_signo) {
 	case SIGILL:
+	case SIGFPE:
 	case SIGBUS:
 	case SIGSEGV:
-	case SIGFPE:
-	case SIGTRAP:
+fill_fault:
 		si->_reason._fault._addr =
 		NETBSD32IPTR64(si32->_reason._fault._addr);
 		si->_reason._fault._trap = si32->_reason._fault._trap;
 		break;
+	case SIGTRAP:
+		switch (si32->_code) {
+		case TRAP_EXEC:
+			break;
+		case TRAP_CHLD:
+		case TRAP_LWP:
+			si->_reason._ptrace_state._pe_report_event =
+			si32->_reason._ptrace_state._pe_report_event;
+CTASSERT(sizeof(si->_reason._ptrace_state._option._pe_other_pid) ==
+sizeof(si->_reason._ptrace_state._option._pe_lwp));
+			si->_reason._ptrace_state._option._pe_other_pid =
+			si32->_reason._ptrace_state._option._pe_other_pid;
+			break;
+		case TRAP_SCE:
+		case TRAP_SCX:
+			si->_reason._syscall._sysnum =
+			si32->_reason._syscall._sysnum;
+			si->_reason._syscall._retval[0] =
+			si32->_reason._syscall._retval[0];
+			si->_reason._syscall._retval[1] =
+			si32->_reason._syscall._retval[1];
+			si->_reason._syscall._error =
+			si32->_reason._syscall._error;
+			for (i = 0;
+			i < __arraycount(si->_reason._syscall._args); i++)
+si->_reason._syscall._args[i] =
+si32->_reason._syscall._args[i];
+			break;
+		default:
+			goto fill_fault;
+		}
+		break;
 	case SIGALRM:
 	case SIGVTALRM:
 	case SIGPROF:
 	default:	/* see sigqueue() and kill1() */
+fill_rt:
 		si->_reason._rt._pid = si32->_reason._rt._pid;
 		si->_reason._rt._uid = si32->_reason._rt._uid;
 		si->_reason._rt._value.sival_int =
 		si32->_reason._rt._value.sival_int;
 		break;
+	case SIGURG:
+	case SIGIO:
+		si->_reason._poll._band = si32->_reason._poll._band;
+		si->_reason._poll._fd = si32->_reason._poll._fd;
+		break;
 	case SIGCHLD:
 		si->_reason._child._pid = si32->_reason._child._pid;
 		si->_reason._child._uid = 

CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-11-19 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 19 13:33:21 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_signal.c

Log Message:
Pull up following revision(s) (requested by rin in ticket #456):

sys/compat/netbsd32/netbsd32_signal.c: revision 1.46
sys/compat/netbsd32/netbsd32_signal.c: revision 1.47
sys/compat/netbsd32/netbsd32_signal.c: revision 1.48
sys/compat/netbsd32/netbsd32_signal.c: revision 1.49
sys/compat/netbsd32/netbsd32_signal.c: revision 1.50

Belatedly catch up with kern_sig.c rev 1.358:
Provide syscall information with SIGTRAP TRAP_SCE/TRAP_SCX so that
picotrace/truss, for example, works fine on COMPAT_NETBSD32.
With some minor changes:
- Centralize netbsd32_si{,32}_si{32,}() into netbsd32_ksi{,32}_ksi{32,}().
- Provide si_status with SIGCHLD.
- Remove the remaining of SA.

Sort by signal numbers as far as possible, adjust locations of functions.
No functional changes intended.

XXX
pullup to netbsd-9

Provide _ptrace_state for SIGTRAP with TRAP_EXEC, TRAP_CHLD, or TRAP_LWP.
Pointed out by kamil. Thanks!

XXX
pullup to netbsd-9

When converting siginfo, examine si_code at the beginning,
as explained in siginfo(2).
- If it is SI_NOINFO, there's no additional information.
- If it is non-positive, i.e., codes described in siginfo(2),
   we need to fill in _rt.

XXX
Description for SA_ASYNCIO in siginfo(2) seems outdated;
neither si_fd nor si_band are filled in with that code.

XXX
pullup to netbsd-9

TRAP_EXEC does not have extra fields to be filled in at the moment.
Explicitly ignore fields for now.
Pointed out by kamil. Thanks!

XXX
pullup to netbsd-9


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.45.8.1 src/sys/compat/netbsd32/netbsd32_signal.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-11-04 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Nov  4 14:47:33 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_syscall.h
netbsd32_syscallargs.h netbsd32_syscalls.c
netbsd32_syscalls_autoload.c netbsd32_sysent.c
netbsd32_systrace_args.c

Log Message:
Regen for ticket #398


To generate a diff of this commit:
cvs rdiff -u -r1.142 -r1.142.2.1 src/sys/compat/netbsd32/netbsd32_syscall.h
cvs rdiff -u -r1.141 -r1.141.2.1 \
src/sys/compat/netbsd32/netbsd32_syscallargs.h \
src/sys/compat/netbsd32/netbsd32_syscalls.c
cvs rdiff -u -r1.21 -r1.21.2.1 \
src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c
cvs rdiff -u -r1.140 -r1.140.2.1 src/sys/compat/netbsd32/netbsd32_sysent.c
cvs rdiff -u -r1.32 -r1.32.2.1 \
src/sys/compat/netbsd32/netbsd32_systrace_args.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32_syscall.h
diff -u src/sys/compat/netbsd32/netbsd32_syscall.h:1.142 src/sys/compat/netbsd32/netbsd32_syscall.h:1.142.2.1
--- src/sys/compat/netbsd32/netbsd32_syscall.h:1.142	Tue Jun 18 16:24:32 2019
+++ src/sys/compat/netbsd32/netbsd32_syscall.h	Mon Nov  4 14:47:33 2019
@@ -1,10 +1,10 @@
-/* $NetBSD: netbsd32_syscall.h,v 1.142 2019/06/18 16:24:32 christos Exp $ */
+/* $NetBSD: netbsd32_syscall.h,v 1.142.2.1 2019/11/04 14:47:33 martin Exp $ */
 
 /*
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.127 2019/06/18 16:23:24 christos Exp
+ * created from	NetBSD: syscalls.master,v 1.127.2.1 2019/11/04 14:46:57 martin Exp
  */
 
 #ifndef _NETBSD32_SYS_SYSCALL_H_
@@ -1228,7 +1228,7 @@
 /* syscall: "netbsd32_openat" ret: "int" args: "int" "const netbsd32_charp" "int" "..." */
 #define	NETBSD32_SYS_netbsd32_openat	468
 
-/* syscall: "netbsd32_readlinkat" ret: "netbsd32_ssize_t" args: "int" "const netbsd32_charp" "netbsd32_charp" "size_t" */
+/* syscall: "netbsd32_readlinkat" ret: "netbsd32_ssize_t" args: "int" "const netbsd32_charp" "netbsd32_charp" "netbsd32_size_t" */
 #define	NETBSD32_SYS_netbsd32_readlinkat	469
 
 /* syscall: "netbsd32_symlinkat" ret: "int" args: "const netbsd32_charp" "int" "const netbsd32_charp" */

Index: src/sys/compat/netbsd32/netbsd32_syscallargs.h
diff -u src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.141 src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.141.2.1
--- src/sys/compat/netbsd32/netbsd32_syscallargs.h:1.141	Tue Jun 18 16:24:32 2019
+++ src/sys/compat/netbsd32/netbsd32_syscallargs.h	Mon Nov  4 14:47:33 2019
@@ -1,10 +1,10 @@
-/* $NetBSD: netbsd32_syscallargs.h,v 1.141 2019/06/18 16:24:32 christos Exp $ */
+/* $NetBSD: netbsd32_syscallargs.h,v 1.141.2.1 2019/11/04 14:47:33 martin Exp $ */
 
 /*
  * System call argument lists.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.127 2019/06/18 16:23:24 christos Exp
+ * created from	NetBSD: syscalls.master,v 1.127.2.1 2019/11/04 14:46:57 martin Exp
  */
 
 #ifndef _NETBSD32_SYS_SYSCALLARGS_H_
@@ -2511,7 +2511,7 @@ struct netbsd32_readlinkat_args {
 	syscallarg(int) fd;
 	syscallarg(const netbsd32_charp) path;
 	syscallarg(netbsd32_charp) buf;
-	syscallarg(size_t) bufsize;
+	syscallarg(netbsd32_size_t) bufsize;
 };
 check_syscall_args(netbsd32_readlinkat)
 
Index: src/sys/compat/netbsd32/netbsd32_syscalls.c
diff -u src/sys/compat/netbsd32/netbsd32_syscalls.c:1.141 src/sys/compat/netbsd32/netbsd32_syscalls.c:1.141.2.1
--- src/sys/compat/netbsd32/netbsd32_syscalls.c:1.141	Tue Jun 18 16:24:32 2019
+++ src/sys/compat/netbsd32/netbsd32_syscalls.c	Mon Nov  4 14:47:33 2019
@@ -1,14 +1,14 @@
-/* $NetBSD: netbsd32_syscalls.c,v 1.141 2019/06/18 16:24:32 christos Exp $ */
+/* $NetBSD: netbsd32_syscalls.c,v 1.141.2.1 2019/11/04 14:47:33 martin Exp $ */
 
 /*
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.127 2019/06/18 16:23:24 christos Exp
+ * created from	NetBSD: syscalls.master,v 1.127.2.1 2019/11/04 14:46:57 martin Exp
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.141 2019/06/18 16:24:32 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_syscalls.c,v 1.141.2.1 2019/11/04 14:47:33 martin Exp $");
 
 #if defined(_KERNEL_OPT)
 #if defined(_KERNEL_OPT)

Index: src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c
diff -u src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c:1.21 src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c:1.21.2.1
--- src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c:1.21	Tue Jun 18 16:24:32 2019
+++ src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c	Mon Nov  4 14:47:33 2019
@@ -1,14 +1,14 @@
-/* $NetBSD: netbsd32_syscalls_autoload.c,v 1.21 2019/06/18 16:24:32 christos Exp $ */
+/* $NetBSD: netbsd32_syscalls_autoload.c,v 1.21.2.1 2019/11/04 14:47:33 martin Exp $ */
 
 /*

CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-11-04 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Nov  4 14:47:33 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_syscall.h
netbsd32_syscallargs.h netbsd32_syscalls.c
netbsd32_syscalls_autoload.c netbsd32_sysent.c
netbsd32_systrace_args.c

Log Message:
Regen for ticket #398


To generate a diff of this commit:
cvs rdiff -u -r1.142 -r1.142.2.1 src/sys/compat/netbsd32/netbsd32_syscall.h
cvs rdiff -u -r1.141 -r1.141.2.1 \
src/sys/compat/netbsd32/netbsd32_syscallargs.h \
src/sys/compat/netbsd32/netbsd32_syscalls.c
cvs rdiff -u -r1.21 -r1.21.2.1 \
src/sys/compat/netbsd32/netbsd32_syscalls_autoload.c
cvs rdiff -u -r1.140 -r1.140.2.1 src/sys/compat/netbsd32/netbsd32_sysent.c
cvs rdiff -u -r1.32 -r1.32.2.1 \
src/sys/compat/netbsd32/netbsd32_systrace_args.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-11-04 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Nov  4 14:46:58 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: syscalls.master

Log Message:
Pull up following revision(s) (requested by rin in ticket #398):

sys/compat/netbsd32/syscalls.master: revision 1.129

For netbsd32_readlinkat(2), bufsize is netbsd_size_t, not size_t.

Since bufsize is the last argument, this affects only LP64EB.

XXX
pullup to netbsd-9, -8, and -7


To generate a diff of this commit:
cvs rdiff -u -r1.127 -r1.127.2.1 src/sys/compat/netbsd32/syscalls.master

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-11-04 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Nov  4 14:46:58 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: syscalls.master

Log Message:
Pull up following revision(s) (requested by rin in ticket #398):

sys/compat/netbsd32/syscalls.master: revision 1.129

For netbsd32_readlinkat(2), bufsize is netbsd_size_t, not size_t.

Since bufsize is the last argument, this affects only LP64EB.

XXX
pullup to netbsd-9, -8, and -7


To generate a diff of this commit:
cvs rdiff -u -r1.127 -r1.127.2.1 src/sys/compat/netbsd32/syscalls.master

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/syscalls.master
diff -u src/sys/compat/netbsd32/syscalls.master:1.127 src/sys/compat/netbsd32/syscalls.master:1.127.2.1
--- src/sys/compat/netbsd32/syscalls.master:1.127	Tue Jun 18 16:23:24 2019
+++ src/sys/compat/netbsd32/syscalls.master	Mon Nov  4 14:46:57 2019
@@ -1,4 +1,4 @@
-	$NetBSD: syscalls.master,v 1.127 2019/06/18 16:23:24 christos Exp $
+	$NetBSD: syscalls.master,v 1.127.2.1 2019/11/04 14:46:57 martin Exp $
 
 ;	from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
 ;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
@@ -1116,7 +1116,7 @@
 469	STD  		{ netbsd32_ssize_t|netbsd32||readlinkat(int fd, \
 			const netbsd32_charp path, \
 			netbsd32_charp buf, \
-			size_t bufsize); }
+			netbsd32_size_t bufsize); }
 470	STD  		{ int|netbsd32||symlinkat(const netbsd32_charp path1, \
 			int fd, \
 			const netbsd32_charp path2); }



CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-10-16 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Oct 16 17:29:50 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_fs.c

Log Message:
Pull up following revision(s) (requested by maxv in ticket #337):

sys/compat/netbsd32/netbsd32_fs.c: revision 1.83

Fix netbsd32___mount50():
  - zero out fs_args32 to prevent info leaks
  - remove unused and non-functional copyin in NFS (lgtm bot)
  - declare udata, and don't pass kernel pointers to copyout (lgtm bot)
  - make sure data_len is just big enough, to mimic the native behavior
  - don't forget to update *retval with the 32bit value
  - add an XXX for NFS


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.82.4.1 src/sys/compat/netbsd32/netbsd32_fs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/netbsd32/netbsd32_fs.c
diff -u src/sys/compat/netbsd32/netbsd32_fs.c:1.82 src/sys/compat/netbsd32/netbsd32_fs.c:1.82.4.1
--- src/sys/compat/netbsd32/netbsd32_fs.c:1.82	Wed Dec 26 08:01:40 2018
+++ src/sys/compat/netbsd32/netbsd32_fs.c	Wed Oct 16 17:29:49 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: netbsd32_fs.c,v 1.82 2018/12/26 08:01:40 mrg Exp $	*/
+/*	$NetBSD: netbsd32_fs.c,v 1.82.4.1 2019/10/16 17:29:49 martin Exp $	*/
 
 /*
  * Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.82 2018/12/26 08:01:40 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_fs.c,v 1.82.4.1 2019/10/16 17:29:49 martin Exp $");
 
 #include 
 #include 
@@ -809,17 +809,21 @@ netbsd32___mount50(struct lwp *l, const 
 	const char *type = SCARG_P32(uap, type);
 	const char *path = SCARG_P32(uap, path);
 	int flags = SCARG(uap, flags);
-	void *data = SCARG_P32(uap, data);
+	void *data, *udata;
 	size_t data_len = SCARG(uap, data_len);
 	enum uio_seg data_seg;
 	size_t len;
 	int error;
  
+	udata = data = SCARG_P32(uap, data);
+	memset(_args32, 0, sizeof(fs_args32));
+
 	error = copyinstr(type, mtype, sizeof(mtype), );
 	if (error)
 		return error;
+
 	if (strcmp(mtype, MOUNT_TMPFS) == 0) {
-		if (data_len != sizeof(fs_args32.tmpfs_args))
+		if (data_len < sizeof(fs_args32.tmpfs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.tmpfs_args, 
@@ -843,7 +847,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.tmpfs_args;
 		data_len = sizeof(fs_args.tmpfs_args);
 	} else if (strcmp(mtype, MOUNT_MFS) == 0) {
-		if (data_len != sizeof(fs_args32.mfs_args))
+		if (data_len < sizeof(fs_args32.mfs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.mfs_args, 
@@ -864,7 +868,7 @@ netbsd32___mount50(struct lwp *l, const 
 	} else if ((strcmp(mtype, MOUNT_UFS) == 0) ||
 		   (strcmp(mtype, MOUNT_EXT2FS) == 0) ||
 		   (strcmp(mtype, MOUNT_LFS) == 0)) {
-		if (data_len > sizeof(fs_args32.ufs_args))
+		if (data_len < sizeof(fs_args32.ufs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.ufs_args, 
@@ -878,7 +882,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.ufs_args;
 		data_len = sizeof(fs_args.ufs_args);
 	} else if (strcmp(mtype, MOUNT_CD9660) == 0) {
-		if (data_len != sizeof(fs_args32.iso_args))
+		if (data_len < sizeof(fs_args32.iso_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.iso_args, 
@@ -895,7 +899,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.iso_args;
 		data_len = sizeof(fs_args.iso_args);
 	} else if (strcmp(mtype, MOUNT_MSDOS) == 0) {
-		if (data_len != sizeof(fs_args32.msdosfs_args))
+		if (data_len < sizeof(fs_args32.msdosfs_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.msdosfs_args, 
@@ -925,8 +929,9 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.msdosfs_args;
 		data_len = sizeof(fs_args.msdosfs_args);
 	} else if (strcmp(mtype, MOUNT_NFS) == 0) {
-		if (data_len != sizeof(fs_args32.nfs_args))
+		if (data_len < sizeof(fs_args32.nfs_args))
 			return EINVAL;
+		/* XXX: NFS requires copyin even with MNT_GETARGS */
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.nfs_args, 
 			sizeof(fs_args32.nfs_args));
@@ -952,7 +957,7 @@ netbsd32___mount50(struct lwp *l, const 
 		data = _args.nfs_args;
 		data_len = sizeof(fs_args.nfs_args);
 	} else if (strcmp(mtype, MOUNT_NULL) == 0) {
-		if (data_len > sizeof(fs_args32.null_args))
+		if (data_len < sizeof(fs_args32.null_args))
 			return EINVAL;
 		if ((flags & MNT_GETARGS) == 0) {
 			error = copyin(data, _args32.null_args, 
@@ -968,10 +973,12 @@ netbsd32___mount50(struct lwp *l, const 
 	} else {
 		data_seg = UIO_USERSPACE;
 	}
+
 	error = do_sys_mount(l, mtype, UIO_SYSSPACE, path, flags, data, data_seg,
 	data_len, retval);
 	if (error)
 		return error;
+
 	if (flags & MNT_GETARGS) {
 		data_len = *retval;
 		

CVS commit: [netbsd-9] src/sys/compat/netbsd32

2019-10-16 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Oct 16 17:29:50 UTC 2019

Modified Files:
src/sys/compat/netbsd32 [netbsd-9]: netbsd32_fs.c

Log Message:
Pull up following revision(s) (requested by maxv in ticket #337):

sys/compat/netbsd32/netbsd32_fs.c: revision 1.83

Fix netbsd32___mount50():
  - zero out fs_args32 to prevent info leaks
  - remove unused and non-functional copyin in NFS (lgtm bot)
  - declare udata, and don't pass kernel pointers to copyout (lgtm bot)
  - make sure data_len is just big enough, to mimic the native behavior
  - don't forget to update *retval with the 32bit value
  - add an XXX for NFS


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.82.4.1 src/sys/compat/netbsd32/netbsd32_fs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.