CVS commit: src/etc/defaults

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Apr 18 04:27:47 UTC 2018

Modified Files:
src/etc/defaults: rc.conf

Log Message:
Cosmetics: default to dmesg -t when writing /var/run/dmesg.boot -
the timestamps at boot time are mostly useless.


To generate a diff of this commit:
cvs rdiff -u -r1.141 -r1.142 src/etc/defaults/rc.conf

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

Modified files:

Index: src/etc/defaults/rc.conf
diff -u src/etc/defaults/rc.conf:1.141 src/etc/defaults/rc.conf:1.142
--- src/etc/defaults/rc.conf:1.141	Tue Jan  9 03:31:14 2018
+++ src/etc/defaults/rc.conf	Wed Apr 18 04:27:47 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: rc.conf,v 1.141 2018/01/09 03:31:14 christos Exp $
+#	$NetBSD: rc.conf,v 1.142 2018/04/18 04:27:47 martin Exp $
 #
 # /etc/defaults/rc.conf --
 #	default configuration of /etc/rc.conf
@@ -125,7 +125,7 @@ per_user_tmp=NO	# per-user /tmp dire
 per_user_tmp_dir="/private/tmp"			# real storage for /tmp
 clear_tmp=YES	# clear /tmp after reboot
 update_motd=YES	# updates /etc/motd
-dmesg=YES		dmesg_flags=""		# write /var/run/dmesg.boot
+dmesg=YES		dmesg_flags="-t"	# write /var/run/dmesg.boot
 accounting=NO	# uses /var/account/acct
 newsyslog=NO		newsyslog_flags=""	# trim log files
 quota=YES	# check and enable quotas



CVS commit: src/tests/net/if_bridge

2018-04-17 Thread Ryota Ozaki
Module Name:src
Committed By:   ozaki-r
Date:   Wed Apr 18 04:03:12 UTC 2018

Modified Files:
src/tests/net/if_bridge: t_rtable.sh

Log Message:
Add a test that checks if brconfig flush surely removes all entries


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/net/if_bridge/t_rtable.sh

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

Modified files:

Index: src/tests/net/if_bridge/t_rtable.sh
diff -u src/tests/net/if_bridge/t_rtable.sh:1.2 src/tests/net/if_bridge/t_rtable.sh:1.3
--- src/tests/net/if_bridge/t_rtable.sh:1.2	Tue Apr 10 07:09:00 2018
+++ src/tests/net/if_bridge/t_rtable.sh	Wed Apr 18 04:03:12 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: t_rtable.sh,v 1.2 2018/04/10 07:09:00 ozaki-r Exp $
+#	$NetBSD: t_rtable.sh,v 1.3 2018/04/18 04:03:12 ozaki-r Exp $
 #
 # Copyright (c) 2017 Internet Initiative Japan Inc.
 # All rights reserved.
@@ -169,6 +169,7 @@ bridge_rtable_flush_head()
 bridge_rtable_flush_body()
 {
 	local addr1= addr3=
+	local n=
 
 	setup
 	setup_bridge
@@ -195,6 +196,34 @@ bridge_rtable_flush_body()
 	atf_check -s exit:0 -o not-match:"$addr3 shmif1" /sbin/brconfig bridge0
 	unset LD_PRELOAD
 
+	# Add extra interfaces and addresses
+	export RUMP_SERVER=$SOCK1
+	rump_server_add_iface $SOCK1 shmif1 bus1
+	atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.11/24
+	atf_check -s exit:0 rump.ifconfig -w 10
+
+	export RUMP_SERVER=$SOCK3
+	rump_server_add_iface $SOCK3 shmif1 bus2
+	atf_check -s exit:0 rump.ifconfig shmif1 10.0.0.12/24
+	atf_check -s exit:0 rump.ifconfig -w 10
+
+	# Let cache entries
+	export RUMP_SERVER=$SOCK1
+	atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 10.0.0.12
+	export RUMP_SERVER=$SOCK3
+	atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 10.0.0.11
+
+	export RUMP_SERVER=$SOCK2
+	export LD_PRELOAD=/usr/lib/librumphijack.so
+	$DEBUG && /sbin/brconfig bridge0
+	n=$(get_number_of_caches)
+	atf_check_equal $n 4
+
+	atf_check -s exit:0 -o ignore /sbin/brconfig bridge0 flush
+	n=$(get_number_of_caches)
+	atf_check_equal $n 0
+	unset LD_PRELOAD
+
 	rump_server_destroy_ifaces
 }
 



CVS commit: src/sys/net

2018-04-17 Thread Ryota Ozaki
Module Name:src
Committed By:   ozaki-r
Date:   Wed Apr 18 04:01:58 UTC 2018

Modified Files:
src/sys/net: if_bridge.c if_bridgevar.h

Log Message:
bridge: use pslist(9) for rtlist and rthash

The change fixes race conditions on list operations.  One example is that a
reader may see invalid pointers on a looking item in a list due to lack of
membar_producer.


To generate a diff of this commit:
cvs rdiff -u -r1.151 -r1.152 src/sys/net/if_bridge.c
cvs rdiff -u -r1.31 -r1.32 src/sys/net/if_bridgevar.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/net/if_bridge.c
diff -u src/sys/net/if_bridge.c:1.151 src/sys/net/if_bridge.c:1.152
--- src/sys/net/if_bridge.c:1.151	Wed Apr 18 03:49:44 2018
+++ src/sys/net/if_bridge.c	Wed Apr 18 04:01:58 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bridge.c,v 1.151 2018/04/18 03:49:44 ozaki-r Exp $	*/
+/*	$NetBSD: if_bridge.c,v 1.152 2018/04/18 04:01:58 ozaki-r Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.151 2018/04/18 03:49:44 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.152 2018/04/18 04:01:58 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bridge_ipf.h"
@@ -191,6 +191,29 @@ __CTASSERT(offsetof(struct ifbifconf, if
 #define BRIDGE_RT_RENTER(__s)	do { __s = pserialize_read_enter(); } while (0)
 #define BRIDGE_RT_REXIT(__s)	do { pserialize_read_exit(__s); } while (0)
 
+#define BRIDGE_RTLIST_READER_FOREACH(_brt, _sc)			\
+	PSLIST_READER_FOREACH((_brt), &((_sc)->sc_rtlist),		\
+	struct bridge_rtnode, brt_list)
+#define BRIDGE_RTLIST_WRITER_FOREACH(_brt, _sc)			\
+	PSLIST_WRITER_FOREACH((_brt), &((_sc)->sc_rtlist),		\
+	struct bridge_rtnode, brt_list)
+#define BRIDGE_RTLIST_WRITER_INSERT_HEAD(_sc, _brt)			\
+	PSLIST_WRITER_INSERT_HEAD(&(_sc)->sc_rtlist, brt, brt_list)
+#define BRIDGE_RTLIST_WRITER_REMOVE(_brt)\
+	PSLIST_WRITER_REMOVE((_brt), brt_list)
+
+#define BRIDGE_RTHASH_READER_FOREACH(_brt, _sc, _hash)			\
+	PSLIST_READER_FOREACH((_brt), &(_sc)->sc_rthash[(_hash)],	\
+	struct bridge_rtnode, brt_hash)
+#define BRIDGE_RTHASH_WRITER_FOREACH(_brt, _sc, _hash)			\
+	PSLIST_WRITER_FOREACH((_brt), &(_sc)->sc_rthash[(_hash)],	\
+	struct bridge_rtnode, brt_hash)
+#define BRIDGE_RTHASH_WRITER_INSERT_HEAD(_sc, _hash, _brt)		\
+	PSLIST_WRITER_INSERT_HEAD(&(_sc)->sc_rthash[(_hash)], brt, brt_hash)
+#define BRIDGE_RTHASH_WRITER_INSERT_AFTER(_brt, _new)			\
+	PSLIST_WRITER_INSERT_AFTER((_brt), (_new), brt_hash)
+#define BRIDGE_RTHASH_WRITER_REMOVE(_brt)\
+	PSLIST_WRITER_REMOVE((_brt), brt_hash)
 
 #ifdef NET_MPSAFE
 #define DECLARE_LOCK_VARIABLE
@@ -1039,7 +1062,7 @@ bridge_ioctl_rts(struct bridge_softc *sc
 	BRIDGE_RT_LOCK(sc);
 
 	len = bac->ifbac_len;
-	LIST_FOREACH(brt, >sc_rtlist, brt_list) {
+	BRIDGE_RTLIST_WRITER_FOREACH(brt, sc) {
 		if (len < sizeof(bareq))
 			goto out;
 		memset(, 0, sizeof(bareq));
@@ -2105,7 +2128,7 @@ typedef bool (*bridge_iterate_cb_t)
 static void
 bridge_rtlist_iterate_remove(struct bridge_softc *sc, bridge_iterate_cb_t func, void *arg)
 {
-	struct bridge_rtnode *brt, *nbrt;
+	struct bridge_rtnode *brt;
 	struct bridge_rtnode **brt_list;
 	int i, count;
 
@@ -2124,7 +2147,12 @@ retry:
 	}
 
 	i = 0;
-	LIST_FOREACH_SAFE(brt, >sc_rtlist, brt_list, nbrt) {
+	/*
+	 * We don't need to use a _SAFE variant here because we know
+	 * that a removed item keeps its next pointer as-is thanks to
+	 * pslist(9) and isn't freed in the loop.
+	 */
+	BRIDGE_RTLIST_WRITER_FOREACH(brt, sc) {
 		bool need_break = false;
 		if (func(sc, brt, _break, arg)) {
 			bridge_rtnode_remove(sc, brt);
@@ -2298,7 +2326,7 @@ bridge_rtdelete(struct bridge_softc *sc,
 	/* XXX pserialize_perform for each entry is slow */
 again:
 	BRIDGE_RT_LOCK(sc);
-	LIST_FOREACH(brt, >sc_rtlist, brt_list) {
+	BRIDGE_RTLIST_WRITER_FOREACH(brt, sc) {
 		if (brt->brt_ifp == ifp)
 			break;
 	}
@@ -2329,11 +2357,11 @@ bridge_rtable_init(struct bridge_softc *
 	KM_SLEEP);
 
 	for (i = 0; i < BRIDGE_RTHASH_SIZE; i++)
-		LIST_INIT(>sc_rthash[i]);
+		PSLIST_INIT(>sc_rthash[i]);
 
 	sc->sc_rthash_key = cprng_fast32();
 
-	LIST_INIT(>sc_rtlist);
+	PSLIST_INIT(>sc_rtlist);
 
 	sc->sc_rtlist_psz = pserialize_create();
 	sc->sc_rtlist_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_SOFTNET);
@@ -2402,7 +2430,7 @@ bridge_rtnode_lookup(struct bridge_softc
 	int dir;
 
 	hash = bridge_rthash(sc, addr);
-	LIST_FOREACH(brt, >sc_rthash[hash], brt_hash) {
+	BRIDGE_RTHASH_READER_FOREACH(brt, sc, hash) {
 		dir = memcmp(addr, brt->brt_addr, ETHER_ADDR_LEN);
 		if (dir == 0)
 			return brt;
@@ -2428,7 +2456,7 @@ bridge_rtnode_insert(struct bridge_softc
 	KASSERT(BRIDGE_RT_LOCKED(sc));
 
 	hash = bridge_rthash(sc, brt->brt_addr);
-	LIST_FOREACH(lbrt, >sc_rthash[hash], brt_hash) {
+	BRIDGE_RTHASH_WRITER_FOREACH(lbrt, sc, hash) {
 		int dir = memcmp(brt->brt_addr, lbrt->brt_addr, 

CVS commit: src/sys/net

2018-04-17 Thread Ryota Ozaki
Module Name:src
Committed By:   ozaki-r
Date:   Wed Apr 18 03:49:44 UTC 2018

Modified Files:
src/sys/net: if_bridge.c

Log Message:
Simplify bridge_rtnode_insert (NFC)


To generate a diff of this commit:
cvs rdiff -u -r1.150 -r1.151 src/sys/net/if_bridge.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/net/if_bridge.c
diff -u src/sys/net/if_bridge.c:1.150 src/sys/net/if_bridge.c:1.151
--- src/sys/net/if_bridge.c:1.150	Wed Apr 18 03:47:28 2018
+++ src/sys/net/if_bridge.c	Wed Apr 18 03:49:44 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bridge.c,v 1.150 2018/04/18 03:47:28 ozaki-r Exp $	*/
+/*	$NetBSD: if_bridge.c,v 1.151 2018/04/18 03:49:44 ozaki-r Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.150 2018/04/18 03:47:28 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.151 2018/04/18 03:49:44 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bridge_ipf.h"
@@ -2422,40 +2422,25 @@ bridge_rtnode_lookup(struct bridge_softc
 static int
 bridge_rtnode_insert(struct bridge_softc *sc, struct bridge_rtnode *brt)
 {
-	struct bridge_rtnode *lbrt;
+	struct bridge_rtnode *lbrt, *prev = NULL;
 	uint32_t hash;
-	int dir;
 
 	KASSERT(BRIDGE_RT_LOCKED(sc));
 
 	hash = bridge_rthash(sc, brt->brt_addr);
-
-	lbrt = LIST_FIRST(>sc_rthash[hash]);
-	if (lbrt == NULL) {
-		LIST_INSERT_HEAD(>sc_rthash[hash], brt, brt_hash);
-		goto out;
-	}
-
-	do {
-		dir = memcmp(brt->brt_addr, lbrt->brt_addr, ETHER_ADDR_LEN);
+	LIST_FOREACH(lbrt, >sc_rthash[hash], brt_hash) {
+		int dir = memcmp(brt->brt_addr, lbrt->brt_addr, ETHER_ADDR_LEN);
 		if (dir == 0)
 			return EEXIST;
-		if (dir > 0) {
-			LIST_INSERT_BEFORE(lbrt, brt, brt_hash);
-			goto out;
-		}
-		if (LIST_NEXT(lbrt, brt_hash) == NULL) {
-			LIST_INSERT_AFTER(lbrt, brt, brt_hash);
-			goto out;
-		}
-		lbrt = LIST_NEXT(lbrt, brt_hash);
-	} while (lbrt != NULL);
-
-#ifdef DIAGNOSTIC
-	panic("bridge_rtnode_insert: impossible");
-#endif
+		if (dir > 0)
+			break;
+		prev = lbrt;
+	}
+	if (prev == NULL)
+		LIST_INSERT_HEAD(>sc_rthash[hash], brt, brt_hash);
+	else
+		LIST_INSERT_AFTER(prev, brt, brt_hash);
 
- out:
 	LIST_INSERT_HEAD(>sc_rtlist, brt, brt_list);
 	sc->sc_brtcnt++;
 



CVS commit: src/sys/net

2018-04-17 Thread Ryota Ozaki
Module Name:src
Committed By:   ozaki-r
Date:   Wed Apr 18 03:47:29 UTC 2018

Modified Files:
src/sys/net: if_bridge.c

Log Message:
Remove obsolete NULL checks


To generate a diff of this commit:
cvs rdiff -u -r1.149 -r1.150 src/sys/net/if_bridge.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/net/if_bridge.c
diff -u src/sys/net/if_bridge.c:1.149 src/sys/net/if_bridge.c:1.150
--- src/sys/net/if_bridge.c:1.149	Tue Apr 10 07:05:39 2018
+++ src/sys/net/if_bridge.c	Wed Apr 18 03:47:28 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bridge.c,v 1.149 2018/04/10 07:05:39 ozaki-r Exp $	*/
+/*	$NetBSD: if_bridge.c,v 1.150 2018/04/18 03:47:28 ozaki-r Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.149 2018/04/10 07:05:39 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.150 2018/04/18 03:47:28 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bridge_ipf.h"
@@ -181,16 +181,12 @@ __CTASSERT(offsetof(struct ifbifconf, if
 #define	BRIDGE_RTABLE_PRUNE_PERIOD	(5 * 60)
 #endif
 
-#define BRIDGE_RT_LOCK(_sc)	if ((_sc)->sc_rtlist_lock) \
-	mutex_enter((_sc)->sc_rtlist_lock)
-#define BRIDGE_RT_UNLOCK(_sc)	if ((_sc)->sc_rtlist_lock) \
-	mutex_exit((_sc)->sc_rtlist_lock)
-#define BRIDGE_RT_LOCKED(_sc)	(!(_sc)->sc_rtlist_lock || \
- mutex_owned((_sc)->sc_rtlist_lock))
+#define BRIDGE_RT_LOCK(_sc)	mutex_enter((_sc)->sc_rtlist_lock)
+#define BRIDGE_RT_UNLOCK(_sc)	mutex_exit((_sc)->sc_rtlist_lock)
+#define BRIDGE_RT_LOCKED(_sc)	mutex_owned((_sc)->sc_rtlist_lock)
 
 #define BRIDGE_RT_PSZ_PERFORM(_sc) \
-if ((_sc)->sc_rtlist_psz != NULL) \
-	pserialize_perform((_sc)->sc_rtlist_psz);
+pserialize_perform((_sc)->sc_rtlist_psz);
 
 #define BRIDGE_RT_RENTER(__s)	do { __s = pserialize_read_enter(); } while (0)
 #define BRIDGE_RT_REXIT(__s)	do { pserialize_read_exit(__s); } while (0)
@@ -2353,10 +2349,8 @@ bridge_rtable_fini(struct bridge_softc *
 {
 
 	kmem_free(sc->sc_rthash, sizeof(*sc->sc_rthash) * BRIDGE_RTHASH_SIZE);
-	if (sc->sc_rtlist_lock)
-		mutex_obj_free(sc->sc_rtlist_lock);
-	if (sc->sc_rtlist_psz)
-		pserialize_destroy(sc->sc_rtlist_psz);
+	mutex_obj_free(sc->sc_rtlist_lock);
+	pserialize_destroy(sc->sc_rtlist_psz);
 }
 
 /*



CVS commit: [pgoyette-compat] src/doc

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Wed Apr 18 01:39:14 UTC 2018

Modified Files:
src/doc [pgoyette-compat]: COMPAT-branch-notes

Log Message:
Note current lack of implementation for syscall #148 - pre-5.0 quotactl()


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.13 -r1.1.2.14 src/doc/COMPAT-branch-notes

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

Modified files:

Index: src/doc/COMPAT-branch-notes
diff -u src/doc/COMPAT-branch-notes:1.1.2.13 src/doc/COMPAT-branch-notes:1.1.2.14
--- src/doc/COMPAT-branch-notes:1.1.2.13	Wed Apr 18 00:04:11 2018
+++ src/doc/COMPAT-branch-notes	Wed Apr 18 01:39:14 2018
@@ -93,3 +93,5 @@ TODO
 and perhaps define something to enable the MI modcmd code to call a
 compat_xx_MD_init() routine.
 
+11. Note that pre-5.0 quotactl (syscall #148) is not currently available.
+Its entry in syscalls.master is XXXd out.



CVS commit: src/external/bsd/file/dist/src

2018-04-17 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Apr 18 01:18:16 UTC 2018

Modified Files:
src/external/bsd/file/dist/src: file.c

Log Message:
__noreturn__ does in the header.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/external/bsd/file/dist/src/file.c

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

Modified files:

Index: src/external/bsd/file/dist/src/file.c
diff -u src/external/bsd/file/dist/src/file.c:1.10 src/external/bsd/file/dist/src/file.c:1.11
--- src/external/bsd/file/dist/src/file.c:1.10	Tue Apr 17 08:34:04 2018
+++ src/external/bsd/file/dist/src/file.c	Tue Apr 17 21:18:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: file.c,v 1.10 2018/04/17 12:34:04 jakllsch Exp $	*/
+/*	$NetBSD: file.c,v 1.11 2018/04/18 01:18:16 christos Exp $	*/
 
 /*
  * Copyright (c) Ian F. Darwin 1986-1995.
@@ -37,7 +37,7 @@
 #if 0
 FILE_RCSID("@(#)$File: file.c,v 1.175 2018/03/02 16:11:37 christos Exp $")
 #else
-__RCSID("$NetBSD: file.c,v 1.10 2018/04/17 12:34:04 jakllsch Exp $");
+__RCSID("$NetBSD: file.c,v 1.11 2018/04/18 01:18:16 christos Exp $");
 #endif
 #endif	/* lint */
 
@@ -677,9 +677,6 @@ file_getprogname(void)
 	return file_progname;
 }
 
-#ifdef __dead
-__dead
-#endif
 protected void
 file_err(int e, const char *fmt, ...)
 {
@@ -694,9 +691,6 @@ file_err(int e, const char *fmt, ...)
 	exit(e);
 }
 
-#ifdef __dead
-__dead
-#endif
 protected void
 file_errx(int e, const char *fmt, ...)
 {



CVS commit: src/external/bsd/file/dist/src

2018-04-17 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Apr 18 01:17:42 UTC 2018

Modified Files:
src/external/bsd/file/dist/src: file.h

Log Message:
add __noreturn__ attribute to file_err{,x}


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/external/bsd/file/dist/src/file.h

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

Modified files:

Index: src/external/bsd/file/dist/src/file.h
diff -u src/external/bsd/file/dist/src/file.h:1.18 src/external/bsd/file/dist/src/file.h:1.19
--- src/external/bsd/file/dist/src/file.h:1.18	Sun Apr 15 15:45:32 2018
+++ src/external/bsd/file/dist/src/file.h	Tue Apr 17 21:17:42 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: file.h,v 1.18 2018/04/15 19:45:32 christos Exp $	*/
+/*	$NetBSD: file.h,v 1.19 2018/04/18 01:17:42 christos Exp $	*/
 
 /*
  * Copyright (c) Ian F. Darwin 1986-1995.
@@ -620,9 +620,9 @@ int enable_sandbox_full(void);
 protected const char *file_getprogname(void);
 protected void file_setprogname(const char *);
 protected void file_err(int, const char *, ...)
-__attribute__((__format__(__printf__, 2, 3)));
+__attribute__((__format__(__printf__, 2, 3), __noreturn__));
 protected void file_errx(int, const char *, ...)
-__attribute__((__format__(__printf__, 2, 3)));
+__attribute__((__format__(__printf__, 2, 3), __noreturn__));
 protected void file_warn(const char *, ...)
 __attribute__((__format__(__printf__, 1, 2)));
 protected void file_warnx(const char *, ...)



CVS commit: [pgoyette-compat] src/doc

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Wed Apr 18 00:04:11 UTC 2018

Modified Files:
src/doc [pgoyette-compat]: COMPAT-branch-notes

Log Message:
Note changes to syscalls.master and friends


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.12 -r1.1.2.13 src/doc/COMPAT-branch-notes

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

Modified files:

Index: src/doc/COMPAT-branch-notes
diff -u src/doc/COMPAT-branch-notes:1.1.2.12 src/doc/COMPAT-branch-notes:1.1.2.13
--- src/doc/COMPAT-branch-notes:1.1.2.12	Tue Apr 17 23:06:11 2018
+++ src/doc/COMPAT-branch-notes	Wed Apr 18 00:04:11 2018
@@ -43,6 +43,9 @@ DONE
 There are still several areas which are not complete - see the
 TODO list below for more details.
 
+10. syscalls.master has been updated to autoload the version-specific
+compat modules rather than the monolithic modules.
+
 
 TODO
 
@@ -50,43 +53,40 @@ TODO
 COMPAT_xx.  When found, move the actual compat code into the compat
 hierarchy and replace originals with indirect (vectored) calls.
 
-2.  Update syscalls.master to reflect that modular syscalls are now
-provided by version-specific modules.
-
-3.  The rtsock compat code is a disaster, with rtsock_50.c #include-ing
+2.  The rtsock compat code is a disaster, with rtsock_50.c #include-ing
 the main rtsock.c code with various manipulations of the COMPAT_50
 macro.
 
-4.  The compat_60 module still needs some work for XEN systems.  We
+3.  The compat_60 module still needs some work for XEN systems.  We
 probably need some build infrastructure changes to ensure that
 XEN (and, for i386, XEN-PAE) modules are build with the correct
 macros defined and with -I directories specified in the same order
 as for building kernels.
 
-5.  Update syscalls.master to point the compat calls at the specific
+4.  Update syscalls.master to point the compat calls at the specific
 modules rather than the monolithic compat module.  Update the
 "required" lists of other modules, too.
 
-6.  The rtsock compatability code needs to be de-spaghetti'd and made
+5.  The rtsock compatability code needs to be de-spaghetti'd and made
 separable into rtsock_70 and rtsock_50 pieces.
 
-8.  Once rtsock is separated, compat_14 references to rtsock_50 routines
+6.  Once rtsock is separated, compat_14 references to rtsock_50 routines
 needs to be verified.
 
-8.  For compat_60, still need to figure out what to do with BSDPTY and
+7.  For compat_60, still need to figure out what to do with BSDPTY and
 tty_ptm
 
-9.  Also for compat_60, need to fix the building of XEN (and, for i386,
+8.  Also for compat_60, need to fix the building of XEN (and, for i386,
 XEN-PAE) module variants so that the obj-dir symlinks and the -I
 include order match those present in a kernel build.  See PR/53130
 (Currently, this affects the compat_60 module and its implementation
 of microcode updates for AMD processors - i386 and amd64.)
 
-10. For compat_50, in addition to rtsock there are some things in dev/vnd,
+9.  For compat_50, in addition to rtsock there are some things in dev/vnd,
 dev/gpio, and dev/wscons/wsmux that I haven't been able to cleanly
 separate.
 
-11. There seems to be quite a bit of MD compat_xx code, in the various
+10. There seems to be quite a bit of MD compat_xx code, in the various
 sys/arch/ directories.  I haven't yet looked at any of this.  But it
 seems to me that the MI compat build infrastructure should have some
 mechanism to "reach over" to the MD code, #include a Makefile.inc file,



CVS commit: [pgoyette-compat] src/sys

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Wed Apr 18 00:01:19 UTC 2018

Modified Files:
src/sys/kern [pgoyette-compat]: init_sysent.c syscalls.c
syscalls_autoload.c systrace_args.c
src/sys/rump/include/rump [pgoyette-compat]: rump_syscalls.h
src/sys/rump/librump/rumpkern [pgoyette-compat]: rump_syscalls.c
src/sys/sys [pgoyette-compat]: syscall.h syscallargs.h

Log Message:
Regen


To generate a diff of this commit:
cvs rdiff -u -r1.319.2.6 -r1.319.2.7 src/sys/kern/init_sysent.c
cvs rdiff -u -r1.310.2.6 -r1.310.2.7 src/sys/kern/syscalls.c
cvs rdiff -u -r1.27.2.6 -r1.27.2.7 src/sys/kern/syscalls_autoload.c
cvs rdiff -u -r1.29.2.6 -r1.29.2.7 src/sys/kern/systrace_args.c
cvs rdiff -u -r1.108.2.6 -r1.108.2.7 \
src/sys/rump/include/rump/rump_syscalls.h
cvs rdiff -u -r1.137.2.6 -r1.137.2.7 \
src/sys/rump/librump/rumpkern/rump_syscalls.c
cvs rdiff -u -r1.304.2.6 -r1.304.2.7 src/sys/sys/syscall.h
cvs rdiff -u -r1.288.2.6 -r1.288.2.7 src/sys/sys/syscallargs.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/kern/init_sysent.c
diff -u src/sys/kern/init_sysent.c:1.319.2.6 src/sys/kern/init_sysent.c:1.319.2.7
--- src/sys/kern/init_sysent.c:1.319.2.6	Tue Mar 27 23:11:18 2018
+++ src/sys/kern/init_sysent.c	Wed Apr 18 00:01:18 2018
@@ -1,14 +1,14 @@
-/* $NetBSD: init_sysent.c,v 1.319.2.6 2018/03/27 23:11:18 pgoyette Exp $ */
+/* $NetBSD: init_sysent.c,v 1.319.2.7 2018/04/18 00:01:18 pgoyette Exp $ */
 
 /*
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.291.2.6 2018/03/27 23:08:44 pgoyette Exp
+ * created from	NetBSD: syscalls.master,v 1.291.2.7 2018/04/17 23:58:48 pgoyette Exp
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.319.2.6 2018/03/27 23:11:18 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.319.2.7 2018/04/18 00:01:18 pgoyette Exp $");
 
 #include "opt_modular.h"
 #include "opt_ntp.h"

Index: src/sys/kern/syscalls.c
diff -u src/sys/kern/syscalls.c:1.310.2.6 src/sys/kern/syscalls.c:1.310.2.7
--- src/sys/kern/syscalls.c:1.310.2.6	Tue Mar 27 23:11:18 2018
+++ src/sys/kern/syscalls.c	Wed Apr 18 00:01:18 2018
@@ -1,14 +1,14 @@
-/* $NetBSD: syscalls.c,v 1.310.2.6 2018/03/27 23:11:18 pgoyette Exp $ */
+/* $NetBSD: syscalls.c,v 1.310.2.7 2018/04/18 00:01:18 pgoyette Exp $ */
 
 /*
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.291.2.6 2018/03/27 23:08:44 pgoyette Exp
+ * created from	NetBSD: syscalls.master,v 1.291.2.7 2018/04/17 23:58:48 pgoyette Exp
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: syscalls.c,v 1.310.2.6 2018/03/27 23:11:18 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscalls.c,v 1.310.2.7 2018/04/18 00:01:18 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_modular.h"

Index: src/sys/kern/syscalls_autoload.c
diff -u src/sys/kern/syscalls_autoload.c:1.27.2.6 src/sys/kern/syscalls_autoload.c:1.27.2.7
--- src/sys/kern/syscalls_autoload.c:1.27.2.6	Tue Mar 27 23:11:18 2018
+++ src/sys/kern/syscalls_autoload.c	Wed Apr 18 00:01:18 2018
@@ -1,123 +1,123 @@
-/* $NetBSD: syscalls_autoload.c,v 1.27.2.6 2018/03/27 23:11:18 pgoyette Exp $ */
+/* $NetBSD: syscalls_autoload.c,v 1.27.2.7 2018/04/18 00:01:18 pgoyette Exp $ */
 
 /*
  * System call autoload table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * created from	NetBSD: syscalls.master,v 1.291.2.6 2018/03/27 23:08:44 pgoyette Exp
+ * created from	NetBSD: syscalls.master,v 1.291.2.7 2018/04/17 23:58:48 pgoyette Exp
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: syscalls_autoload.c,v 1.27.2.6 2018/03/27 23:11:18 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: syscalls_autoload.c,v 1.27.2.7 2018/04/18 00:01:18 pgoyette Exp $");
 
 #include 
 static struct sc_autoload netbsd_syscalls_autoload[] = {
-	{ SYS_compat_50_wait4, "compat" },
-	{ SYS_compat_43_ocreat, "compat" },
-	{ SYS_compat_50_mknod, "compat" },
-	{ SYS_compat_20_getfsstat, "compat" },
-	{ SYS_compat_43_olseek, "compat" },
-	{ SYS_compat_40_mount, "compat" },
+	{ SYS_compat_50_wait4, "compat_50" },
+	{ SYS_compat_43_ocreat, "compat_43" },
+	{ SYS_compat_50_mknod, "compat_50" },
+	{ SYS_compat_20_getfsstat, "compat_20" },
+	{ SYS_compat_43_olseek, "compat_43" },
+	{ SYS_compat_40_mount, "compat_40" },
 	{ SYS_ptrace, "ptrace" },
-	{ SYS_compat_43_stat43, "compat" },
-	{ SYS_compat_43_lstat43, "compat" },
-	{ SYS_compat_13_sigaction13, "compat" },
-	{ SYS_compat_13_sigprocmask13, "compat" },
-	{ SYS_compat_13_sigpending13, "compat" },
-	{ SYS_compat_13_sigaltstack13, "compat" },
-	{ SYS_compat_12_oreboot, "compat" },
-	{ SYS_compat_43_fstat43, "compat" },
-	{ SYS_compat_43_ogetkerninfo, "compat" },
-	{ 

CVS commit: [pgoyette-compat] src/sys/kern

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 23:58:48 UTC 2018

Modified Files:
src/sys/kern [pgoyette-compat]: syscalls.master

Log Message:
Update compat module names to reference the version-specific modules.

This way, when we autoload compat code we load only what is needed,
and nothing "older".


To generate a diff of this commit:
cvs rdiff -u -r1.291.2.6 -r1.291.2.7 src/sys/kern/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/kern/syscalls.master
diff -u src/sys/kern/syscalls.master:1.291.2.6 src/sys/kern/syscalls.master:1.291.2.7
--- src/sys/kern/syscalls.master:1.291.2.6	Tue Mar 27 23:08:44 2018
+++ src/sys/kern/syscalls.master	Tue Apr 17 23:58:48 2018
@@ -1,4 +1,4 @@
-	$NetBSD: syscalls.master,v 1.291.2.6 2018/03/27 23:08:44 pgoyette Exp $
+	$NetBSD: syscalls.master,v 1.291.2.7 2018/04/17 23:58:48 pgoyette Exp $
 
 ;	@(#)syscalls.master	8.2 (Berkeley) 1/13/94
 
@@ -76,28 +76,28 @@
 5	STD 	 RUMP	{ int|sys||open(const char *path, \
 			int flags, ... mode_t mode); }
 6	STD	 RUMP	{ int|sys||close(int fd); }
-7	COMPAT_50 MODULAR compat { int|sys||wait4(pid_t pid, int *status, \
+7	COMPAT_50 MODULAR compat_50 { int|sys||wait4(pid_t pid, int *status, \
 			int options, struct rusage50 *rusage); }
-8	COMPAT_43 MODULAR compat	\
+8	COMPAT_43 MODULAR compat_43	\
 		{ int|sys||creat(const char *path, mode_t mode); } ocreat
 9	STD 	 RUMP	{ int|sys||link(const char *path, const char *link); }
 10	STD 	 RUMP	{ int|sys||unlink(const char *path); }
 11	OBSOL		execv
 12	STD 	 RUMP	{ int|sys||chdir(const char *path); }
 13	STD 	 RUMP	{ int|sys||fchdir(int fd); }
-14	COMPAT_50 MODULAR compat RUMP	\
+14	COMPAT_50 MODULAR compat_50 RUMP	\
 		{ int|sys||mknod(const char *path, mode_t mode, uint32_t dev); }
 15	STD 	 RUMP	{ int|sys||chmod(const char *path, mode_t mode); }
 16	STD 	 RUMP	{ int|sys||chown(const char *path, uid_t uid, \
 			gid_t gid); }
 17	STD 		{ int|sys||obreak(char *nsize); } break
-18	COMPAT_20 MODULAR compat { int|sys||getfsstat(struct statfs12 *buf, \
+18	COMPAT_20 MODULAR compat_20 { int|sys||getfsstat(struct statfs12 *buf, \
 			long bufsize, int flags); }
-19	COMPAT_43 MODULAR compat	\
+19	COMPAT_43 MODULAR compat_43	\
 		{ long|sys||lseek(int fd, long offset, int whence); }\
 			olseek
 20	NOERR 	RUMP	{ pid_t|sys||getpid_with_ppid(void); } getpid
-21	COMPAT_40 MODULAR compat	\
+21	COMPAT_40 MODULAR compat_40	\
 		{ int|sys||mount(const char *type, const char *path, \
 			int flags, void *data); }
 22	STD 	RUMP	{ int|sys||unmount(const char *path, int flags); }
@@ -125,10 +125,10 @@
 35	STD 	RUMP	{ int|sys||fchflags(int fd, u_long flags); }
 36	NOERR 	 RUMP	{ void|sys||sync(void); }
 37	STD 		{ int|sys||kill(pid_t pid, int signum); }
-38	COMPAT_43 MODULAR compat	\
+38	COMPAT_43 MODULAR compat_43	\
 		{ int|sys||stat(const char *path, struct stat43 *ub); } stat43
 39	NOERR 	RUMP	{ pid_t|sys||getppid(void); }
-40	COMPAT_43 MODULAR compat	\
+40	COMPAT_43 MODULAR compat_43	\
 		{ int|sys||lstat(const char *path, \
 			struct stat43 *ub); } lstat43
 41	STD 	RUMP	{ int|sys||dup(int fd); }
@@ -138,22 +138,22 @@
 			u_long offset, u_int scale); }
 45	STD 	RUMP	{ int|sys||ktrace(const char *fname, int ops, \
 			int facs, pid_t pid); }
-46	COMPAT_13 MODULAR compat { int|sys||sigaction(int signum, \
+46	COMPAT_13 MODULAR compat_13 { int|sys||sigaction(int signum, \
 			const struct sigaction13 *nsa, \
 			struct sigaction13 *osa); } sigaction13
 47	NOERR 	RUMP	{ gid_t|sys||getgid_with_egid(void); } getgid
-48	COMPAT_13 MODULAR compat { int|sys||sigprocmask(int how, \
+48	COMPAT_13 MODULAR compat_13 { int|sys||sigprocmask(int how, \
 			int mask); } sigprocmask13
 49	STD 	RUMP	{ int|sys||__getlogin(char *namebuf, size_t namelen); }
 50	STD 	RUMP 	{ int|sys||__setlogin(const char *namebuf); }
 51	STD 		{ int|sys||acct(const char *path); }
-52	COMPAT_13 MODULAR compat { int|sys||sigpending(void); } sigpending13
-53	COMPAT_13 MODULAR compat { int|sys||sigaltstack( \
+52	COMPAT_13 MODULAR compat_13 { int|sys||sigpending(void); } sigpending13
+53	COMPAT_13 MODULAR compat_13 { int|sys||sigaltstack( \
 			const struct sigaltstack13 *nss, \
 			struct sigaltstack13 *oss); } sigaltstack13
 54	STD	RUMP	{ int|sys||ioctl(int fd, \
 			u_long com, ... void *data); }
-55	COMPAT_12 MODULAR compat { int|sys||reboot(int opt); } oreboot
+55	COMPAT_12 MODULAR compat_12 { int|sys||reboot(int opt); } oreboot
 56	STD 	 RUMP	{ int|sys||revoke(const char *path); }
 57	STD 	 RUMP	{ int|sys||symlink(const char *path, \
 			const char *link); }
@@ -163,21 +163,21 @@
 			char * const *argp, char * const *envp); }
 60	STD 	 RUMP	{ mode_t|sys||umask(mode_t newmask); }
 61	STD 	 RUMP	{ int|sys||chroot(const char *path); }
-62	COMPAT_43 MODULAR compat	\
+62	COMPAT_43 MODULAR compat_43	\
 		{ int|sys||fstat(int fd, struct 

CVS commit: [pgoyette-compat] src

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 23:06:12 UTC 2018

Modified Files:
src/doc [pgoyette-compat]: COMPAT-branch-notes
src/sys/compat/common [pgoyette-compat]: compat_sysv_mod.c
src/sys/modules [pgoyette-compat]: Makefile
src/sys/modules/compat_sysv [pgoyette-compat]: Makefile
Added Files:
src/sys/compat/common [pgoyette-compat]: compat_sysv_10_mod.c
compat_sysv_14_mod.c compat_sysv_50_mod.c
src/sys/modules/compat_sysv_10 [pgoyette-compat]: Makefile
src/sys/modules/compat_sysv_14 [pgoyette-compat]: Makefile
src/sys/modules/compat_sysv_50 [pgoyette-compat]: Makefile

Log Message:
Split the compat_sysv module into several version-specific modules,
similar to the compat module.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.11 -r1.1.2.12 src/doc/COMPAT-branch-notes
cvs rdiff -u -r0 -r1.1.2.1 src/sys/compat/common/compat_sysv_10_mod.c \
src/sys/compat/common/compat_sysv_14_mod.c \
src/sys/compat/common/compat_sysv_50_mod.c
cvs rdiff -u -r1.4.10.1 -r1.4.10.2 src/sys/compat/common/compat_sysv_mod.c
cvs rdiff -u -r1.202.2.20 -r1.202.2.21 src/sys/modules/Makefile
cvs rdiff -u -r1.3.10.4 -r1.3.10.5 src/sys/modules/compat_sysv/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_sysv_10/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_sysv_14/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_sysv_50/Makefile

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

Modified files:

Index: src/doc/COMPAT-branch-notes
diff -u src/doc/COMPAT-branch-notes:1.1.2.11 src/doc/COMPAT-branch-notes:1.1.2.12
--- src/doc/COMPAT-branch-notes:1.1.2.11	Tue Apr 17 06:20:26 2018
+++ src/doc/COMPAT-branch-notes	Tue Apr 17 23:06:11 2018
@@ -37,6 +37,9 @@ DONE
 is still available, and uses the alias mechanism to "advertise"
 that the component modules are available.
 
+Similarly, the compat_sysv module has also been split into several
+version-specific modules.
+
 There are still several areas which are not complete - see the
 TODO list below for more details.
 
@@ -47,46 +50,43 @@ TODO
 COMPAT_xx.  When found, move the actual compat code into the compat
 hierarchy and replace originals with indirect (vectored) calls.
 
-2.  Similar to the monolithic netbsd module, split the compat_sysv
-module into multiple version-specific modules.
-
-3.  Update syscalls.master to reflect that modular syscalls are now
+2.  Update syscalls.master to reflect that modular syscalls are now
 provided by version-specific modules.
 
-4.  The rtsock compat code is a disaster, with rtsock_50.c #include-ing
+3.  The rtsock compat code is a disaster, with rtsock_50.c #include-ing
 the main rtsock.c code with various manipulations of the COMPAT_50
 macro.
 
-5.  The compat_60 module still needs some work for XEN systems.  We
+4.  The compat_60 module still needs some work for XEN systems.  We
 probably need some build infrastructure changes to ensure that
 XEN (and, for i386, XEN-PAE) modules are build with the correct
 macros defined and with -I directories specified in the same order
 as for building kernels.
 
-6.  Update syscalls.master to point the compat calls at the specific
+5.  Update syscalls.master to point the compat calls at the specific
 modules rather than the monolithic compat module.  Update the
 "required" lists of other modules, too.
 
-7.  The rtsock compatability code needs to be de-spaghetti'd and made
+6.  The rtsock compatability code needs to be de-spaghetti'd and made
 separable into rtsock_70 and rtsock_50 pieces.
 
 8.  Once rtsock is separated, compat_14 references to rtsock_50 routines
 needs to be verified.
 
-9.  For compat_60, still need to figure out what to do with BSDPTY and
+8.  For compat_60, still need to figure out what to do with BSDPTY and
 tty_ptm
 
-10. Also for compat_60, need to fix the building of XEN (and, for i386,
+9.  Also for compat_60, need to fix the building of XEN (and, for i386,
 XEN-PAE) module variants so that the obj-dir symlinks and the -I
 include order match those present in a kernel build.  See PR/53130
 (Currently, this affects the compat_60 module and its implementation
 of microcode updates for AMD processors - i386 and amd64.)
 
-11. For compat_50, in addition to rtsock there are some things in dev/vnd,
+10. For compat_50, in addition to rtsock there are some things in dev/vnd,
 dev/gpio, and dev/wscons/wsmux that I haven't been able to cleanly
 separate.
 
-12. There seems to be quite a bit of MD compat_xx code, in the various
+11. There seems to be quite a bit of MD compat_xx code, in the various
 sys/arch/ directories.  I haven't yet looked at any of this.  But it
 seems to me that the MI compat build infrastructure should have some
 mechanism to "reach over" to the MD 

CVS commit: [pgoyette-compat] src/sys/compat/common

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 22:31:41 UTC 2018

Modified Files:
src/sys/compat/common [pgoyette-compat]: compat_mod.c

Log Message:
Ooops - forgot to enable the last couple of alias module names.


To generate a diff of this commit:
cvs rdiff -u -r1.24.14.34 -r1.24.14.35 src/sys/compat/common/compat_mod.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/compat_mod.c
diff -u src/sys/compat/common/compat_mod.c:1.24.14.34 src/sys/compat/common/compat_mod.c:1.24.14.35
--- src/sys/compat/common/compat_mod.c:1.24.14.34	Tue Apr 17 07:24:55 2018
+++ src/sys/compat/common/compat_mod.c	Tue Apr 17 22:31:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat_mod.c,v 1.24.14.34 2018/04/17 07:24:55 pgoyette Exp $	*/
+/*	$NetBSD: compat_mod.c,v 1.24.14.35 2018/04/17 22:31:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.24.14.34 2018/04/17 07:24:55 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.24.14.35 2018/04/17 22:31:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -56,7 +56,7 @@ __KERNEL_RCSID(0, "$NetBSD: compat_mod.c
 static const char * const compat_includes[] = {
 	"compat_80", "compat_70", "compat_60", "compat_50", "compat_40",
 	"compat_30", "compat_20", "compat_16", "compat_14", "compat_13",
-	"compat_12", /*"compat_10", "compat_09",*/ "compat_43", NULL
+	"compat_12", "compat_10", "compat_09", "compat_43", NULL
 };
 
 MODULE_WITH_ALIASES(MODULE_CLASS_EXEC, compat, NULL, _includes);



CVS commit: [pgoyette-compat] src/sys

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 21:59:27 UTC 2018

Modified Files:
src/sys/compat/common [pgoyette-compat]: files.common
src/sys/kern [pgoyette-compat]: sysv_ipc.c
Added Files:
src/sys/compat/common [pgoyette-compat]: compat_sysv_mod.c
compat_sysv_mod.h
Removed Files:
src/sys/compat/common [pgoyette-compat]: sysv_mod.c sysv_mod.h

Log Message:
Rename sysv_mod.[ch] to compat_sysv_mod.[ch] for consistency with other
files that provide module(7) interfaces.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.4.10.1 src/sys/compat/common/compat_sysv_mod.c
cvs rdiff -u -r0 -r1.1.2.1 src/sys/compat/common/compat_sysv_mod.h
cvs rdiff -u -r1.1.2.32 -r1.1.2.33 src/sys/compat/common/files.common
cvs rdiff -u -r1.1.2.7 -r0 src/sys/compat/common/sysv_mod.c
cvs rdiff -u -r1.1.2.3 -r0 src/sys/compat/common/sysv_mod.h
cvs rdiff -u -r1.32.16.3 -r1.32.16.4 src/sys/kern/sysv_ipc.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/files.common
diff -u src/sys/compat/common/files.common:1.1.2.32 src/sys/compat/common/files.common:1.1.2.33
--- src/sys/compat/common/files.common:1.1.2.32	Tue Apr 17 07:24:55 2018
+++ src/sys/compat/common/files.common	Tue Apr 17 21:59:27 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.common,v 1.1.2.32 2018/04/17 07:24:55 pgoyette Exp $
+#	$NetBSD: files.common,v 1.1.2.33 2018/04/17 21:59:27 pgoyette Exp $
 
 #
 # Generic files, used by all compat options.
@@ -109,7 +109,7 @@ file	compat/common/kern_mod_80.c		compat
 # Module interface for sysv ipc compatability options
 
 define	compat_sysv			: sysvmsg, sysvshm, sysvsem
-file	compat/common/sysv_mod.c		compat_sysv
+file	compat/common/compat_sysv_mod.c		compat_sysv
 
 # Compatibility code for NetBSD 1.0
 file	compat/common/kern_ipc_10.c		compat_sysv

Index: src/sys/kern/sysv_ipc.c
diff -u src/sys/kern/sysv_ipc.c:1.32.16.3 src/sys/kern/sysv_ipc.c:1.32.16.4
--- src/sys/kern/sysv_ipc.c:1.32.16.3	Fri Mar  9 10:41:05 2018
+++ src/sys/kern/sysv_ipc.c	Tue Apr 17 21:59:27 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysv_ipc.c,v 1.32.16.3 2018/03/09 10:41:05 pgoyette Exp $	*/
+/*	$NetBSD: sysv_ipc.c,v 1.32.16.4 2018/04/17 21:59:27 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: sysv_ipc.c,v 1.32.16.3 2018/03/09 10:41:05 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysv_ipc.c,v 1.32.16.4 2018/04/17 21:59:27 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_sysv.h"
@@ -62,7 +62,7 @@ __KERNEL_RCSID(0, "$NetBSD: sysv_ipc.c,v
 #include 
 #include 
 
-#include 	/* for sysctl routine vector */
+#include 	/* for sysctl routine vector */
 
 int (*vec_sysvipc50_sysctl)(SYSCTLFN_PROTO);
 

Added files:

Index: src/sys/compat/common/compat_sysv_mod.c
diff -u /dev/null src/sys/compat/common/compat_sysv_mod.c:1.4.10.1
--- /dev/null	Tue Apr 17 21:59:28 2018
+++ src/sys/compat/common/compat_sysv_mod.c	Tue Apr 17 21:59:27 2018
@@ -0,0 +1,127 @@
+/*	$NetBSD: compat_sysv_mod.c,v 1.4.10.1 2018/04/17 21:59:27 pgoyette Exp $	*/
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software developed for The NetBSD Foundation
+ * by Paul Goyette
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include 
+__KERNEL_RCSID(0, "$NetBSD: compat_sysv_mod.c,v 1.4.10.1 2018/04/17 21:59:27 pgoyette Exp $");
+
+#ifdef _KERNEL_OPT
+#include "opt_compat_netbsd.h"
+#include "opt_sysv.h"
+#endif
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+

CVS commit: src/sys/netipsec

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 17:56:08 UTC 2018

Modified Files:
src/sys/netipsec: ipsec_input.c

Log Message:
fix comments


To generate a diff of this commit:
cvs rdiff -u -r1.63 -r1.64 src/sys/netipsec/ipsec_input.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/netipsec/ipsec_input.c
diff -u src/sys/netipsec/ipsec_input.c:1.63 src/sys/netipsec/ipsec_input.c:1.64
--- src/sys/netipsec/ipsec_input.c:1.63	Sun Apr 15 07:35:49 2018
+++ src/sys/netipsec/ipsec_input.c	Tue Apr 17 17:56:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_input.c,v 1.63 2018/04/15 07:35:49 maxv Exp $	*/
+/*	$NetBSD: ipsec_input.c,v 1.64 2018/04/17 17:56:08 maxv Exp $	*/
 /*	$FreeBSD: src/sys/netipsec/ipsec_input.c,v 1.2.4.2 2003/03/28 20:32:53 sam Exp $	*/
 /*	$OpenBSD: ipsec_input.c,v 1.63 2003/02/20 18:35:43 deraadt Exp $	*/
 
@@ -39,7 +39,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.63 2018/04/15 07:35:49 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_input.c,v 1.64 2018/04/17 17:56:08 maxv Exp $");
 
 /*
  * IPsec input processing.
@@ -175,8 +175,8 @@ ipsec4_fixup_checksum(struct mbuf *m)
 
 /*
  * ipsec_common_input gets called when an IPsec-protected packet
- * is received by IPv4 or IPv6.  It's job is to find the right SA
- # and call the appropriate transform.  The transform callback
+ * is received by IPv4 or IPv6.  Its job is to find the right SA
+ * and call the appropriate transform.  The transform callback
  * takes care of further processing (like ingress filtering).
  */
 static int
@@ -685,7 +685,7 @@ ipsec6_common_input_cb(struct mbuf *m, s
 
 		/*
 		 * Enforce IPsec policy checking if we are seeing last header.
-		 * note that we do not visit this with protocols with pcb layer
+		 * Note that we do not visit this with protocols with pcb layer
 		 * code - like udp/tcp/raw ip.
 		 */
 		if ((inet6sw[ip6_protox[nxt]].pr_flags & PR_LASTHDR) != 0 &&



CVS commit: src/sys/netipsec

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 17:47:05 UTC 2018

Modified Files:
src/sys/netipsec: ipsec.c

Log Message:
Add XXX. If this code really does something, it should use MCHTYPE.


To generate a diff of this commit:
cvs rdiff -u -r1.154 -r1.155 src/sys/netipsec/ipsec.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/netipsec/ipsec.c
diff -u src/sys/netipsec/ipsec.c:1.154 src/sys/netipsec/ipsec.c:1.155
--- src/sys/netipsec/ipsec.c:1.154	Tue Apr 17 17:40:38 2018
+++ src/sys/netipsec/ipsec.c	Tue Apr 17 17:47:05 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec.c,v 1.154 2018/04/17 17:40:38 maxv Exp $ */
+/* $NetBSD: ipsec.c,v 1.155 2018/04/17 17:47:05 maxv Exp $ */
 /* $FreeBSD: src/sys/netipsec/ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */
 /* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */
 
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.154 2018/04/17 17:40:38 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.155 2018/04/17 17:47:05 maxv Exp $");
 
 /*
  * IPsec controller part.
@@ -1269,7 +1269,9 @@ ipsec_get_policy(void *inp, const void *
 		return ENOBUFS;
 	}
 
+	/* XXX XXX XXX: What's the point? */
 	(*mp)->m_type = MT_DATA;
+
 	if (KEYDEBUG_ON(KEYDEBUG_IPSEC_DUMP)) {
 		kdebug_mbuf(__func__, *mp);
 	}



CVS commit: src/sys/netipsec

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 17:40:38 UTC 2018

Modified Files:
src/sys/netipsec: ipsec.c

Log Message:
Style, add XXX (about the mtu that goes negative), and remove #ifdef inet.


To generate a diff of this commit:
cvs rdiff -u -r1.153 -r1.154 src/sys/netipsec/ipsec.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/netipsec/ipsec.c
diff -u src/sys/netipsec/ipsec.c:1.153 src/sys/netipsec/ipsec.c:1.154
--- src/sys/netipsec/ipsec.c:1.153	Tue Apr  3 09:03:59 2018
+++ src/sys/netipsec/ipsec.c	Tue Apr 17 17:40:38 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ipsec.c,v 1.153 2018/04/03 09:03:59 maxv Exp $ */
+/* $NetBSD: ipsec.c,v 1.154 2018/04/17 17:40:38 maxv Exp $ */
 /* $FreeBSD: src/sys/netipsec/ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */
 /* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */
 
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.153 2018/04/03 09:03:59 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.154 2018/04/17 17:40:38 maxv Exp $");
 
 /*
  * IPsec controller part.
@@ -548,9 +548,11 @@ ipsec_getpolicybyaddr(struct mbuf *m, u_
 	if (key_havesp(dir)) {
 		sp = KEY_LOOKUP_SP_BYSPIDX(, dir);
 	}
-
-	if (sp == NULL)			/* no SP found, use system default */
+	if (sp == NULL) {
+		/* no SP found, use system default */
 		sp = KEY_GET_DEFAULT_SP(spidx.dst.sa.sa_family);
+	}
+
 	KASSERT(sp != NULL);
 	return sp;
 }
@@ -726,15 +728,18 @@ ipsec4_input(struct mbuf *m, int flags)
 	return 0;
 }
 
+/*
+ * If the packet is routed over IPsec tunnel, tell the originator the
+ * tunnel MTU.
+ * tunnel MTU = if MTU - sizeof(IP) - ESP/AH hdrsiz
+ *
+ * XXX: Quick hack!!!
+ *
+ * XXX: And what if the MTU goes negative?
+ */
 int
 ipsec4_forward(struct mbuf *m, int *destmtu)
 {
-	/*
-	 * If the packet is routed over IPsec tunnel, tell the
-	 * originator the tunnel MTU.
-	 *	tunnel MTU = if MTU - sizeof(IP) - ESP/AH hdrsiz
-	 * XXX quickhack!!!
-	 */
 	struct secpolicy *sp;
 	size_t ipsechdr;
 	int error;
@@ -819,7 +824,9 @@ ipsec_setspidx(struct mbuf *m, struct se
 	/*
 	 * validate m->m_pkthdr.len.  we see incorrect length if we
 	 * mistakenly call this function with inconsistent mbuf chain
-	 * (like 4.4BSD tcp/udp processing).  XXX should we panic here?
+	 * (like 4.4BSD tcp/udp processing).
+	 *
+	 * XXX XXX XXX: We should remove this.
 	 */
 	len = 0;
 	for (n = m; n; n = n->m_next)
@@ -1057,9 +1064,9 @@ ipsec6_setspidx_ipaddr(struct mbuf *m, s
 	struct ip6_hdr ip6buf;
 	struct sockaddr_in6 *sin6;
 
-	if (m->m_len >= sizeof(*ip6))
+	if (m->m_len >= sizeof(*ip6)) {
 		ip6 = mtod(m, struct ip6_hdr *);
-	else {
+	} else {
 		m_copydata(m, 0, sizeof(ip6buf), );
 		ip6 = 
 	}
@@ -1132,9 +1139,9 @@ static void
 ipsec_destroy_policy(struct secpolicy *sp)
 {
 
-	if (sp == _dummy_sp)
+	if (sp == _dummy_sp) {
 		; /* It's dummy. No need to free it. */
-	else {
+	} else {
 		/*
 		 * We cannot destroy here because it can be called in
 		 * softint. So mark the SP as DEAD and let the timer
@@ -1337,7 +1344,7 @@ ipsec_get_reqlevel(const struct ipsecreq
 		ah_trans_deflev = IPSEC_CHECK_DEFAULT(ip6_ah_trans_deflev);
 		ah_net_deflev = IPSEC_CHECK_DEFAULT(ip6_ah_net_deflev);
 		break;
-#endif /* INET6 */
+#endif
 	default:
 		panic("%s: unknown af %u", __func__,
 		isr->sp->spidx.src.sa.sa_family);
@@ -1777,11 +1784,9 @@ const char *
 ipsec_address(const union sockaddr_union *sa, char *buf, size_t size)
 {
 	switch (sa->sa.sa_family) {
-#if INET
 	case AF_INET:
 		in_print(buf, size, >sin.sin_addr);
 		return buf;
-#endif
 #if INET6
 	case AF_INET6:
 		in6_print(buf, size, >sin6.sin6_addr);



CVS commit: [netbsd-8] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 16:03:37 UTC 2018

Modified Files:
src/doc [netbsd-8]: CHANGES-8.0

Log Message:
Ticket #773


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.185 -r1.1.2.186 src/doc/CHANGES-8.0

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

Modified files:

Index: src/doc/CHANGES-8.0
diff -u src/doc/CHANGES-8.0:1.1.2.185 src/doc/CHANGES-8.0:1.1.2.186
--- src/doc/CHANGES-8.0:1.1.2.185	Tue Apr 17 08:37:22 2018
+++ src/doc/CHANGES-8.0	Tue Apr 17 16:03:36 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-8.0,v 1.1.2.185 2018/04/17 08:37:22 martin Exp $
+# $NetBSD: CHANGES-8.0,v 1.1.2.186 2018/04/17 16:03:36 martin Exp $
 
 A complete list of changes from the initial NetBSD 8.0 branch on 2017-06-04
 until the 8.0 release:
@@ -13013,3 +13013,10 @@ sys/miscfs/procfs/procfs_subr.c			1.112
 	of VOP_REVOKE().
 	[hannken, ticket #772]
 
+sys/netipsec/ipsec_mbuf.c			1.23,1.24
+
+	Don't assume M_PKTHDR is set only on the first mbuf of the chain.
+	Fix a pretty bad mistake (IPsec DoS).
+	[maxv, ticket #773]
+
+



CVS commit: [netbsd-7-0] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:40:11 UTC 2018

Modified Files:
src/doc [netbsd-7-0]: CHANGES-7.0.3

Log Message:
Ticket #1599


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.101 -r1.1.2.102 src/doc/CHANGES-7.0.3

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

Modified files:

Index: src/doc/CHANGES-7.0.3
diff -u src/doc/CHANGES-7.0.3:1.1.2.101 src/doc/CHANGES-7.0.3:1.1.2.102
--- src/doc/CHANGES-7.0.3:1.1.2.101	Tue Apr 17 08:30:43 2018
+++ src/doc/CHANGES-7.0.3	Tue Apr 17 15:40:11 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-7.0.3,v 1.1.2.101 2018/04/17 08:30:43 martin Exp $
+# $NetBSD: CHANGES-7.0.3,v 1.1.2.102 2018/04/17 15:40:11 martin Exp $
 
 A complete list of changes from the NetBSD 7.0.2 release to the NetBSD 7.0.3
 release:
@@ -5407,3 +5407,9 @@ sys/kern/uipc_mbuf.c1.190
 	in place.
 	[maxv, ticket #1598]
 
+sys/netipsec/ipsec_mbuf.c			1.23,1.24 (patch)
+
+	Don't assume M_PKTHDR is set only on the first mbuf of the chain.
+	Fix a pretty bad mistake (IPsec DoS).
+	[maxv, ticket #1599]
+



CVS commit: [netbsd-7-0] src/sys/netipsec

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:38:57 UTC 2018

Modified Files:
src/sys/netipsec [netbsd-7-0]: ipsec_mbuf.c

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

sys/netipsec/ipsec_mbuf.c: revision 1.23,1.24 (via patch)

Don't assume M_PKTHDR is set only on the first mbuf of the chain. It
should, but it looks like there are several places that can put M_PKTHDR
on secondary mbufs (PR/53189), so drop this assumption right now to
prevent further bugs.

The check is replaced by (m1 != m), which is equivalent to the previous
code: we want to modify m->m_pkthdr.len only when 'm' was not passed in
m_adj().

Fix a pretty bad mistake, that has always been there.

m_adj(m1, -(m1->m_len - roff));
if (m1 != m)
m->m_pkthdr.len -= (m1->m_len - roff);

This is wrong: m_adj will modify m1->m_len, so we're using a wrong value
when manually adjusting m->m_pkthdr.len.

Because of that, it is possible to exploit the attack I described in
uipc_mbuf.c::rev1.182. The exploit is more complicated, but works 100%
reliably.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.12.34.1 src/sys/netipsec/ipsec_mbuf.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/netipsec/ipsec_mbuf.c
diff -u src/sys/netipsec/ipsec_mbuf.c:1.12 src/sys/netipsec/ipsec_mbuf.c:1.12.34.1
--- src/sys/netipsec/ipsec_mbuf.c:1.12	Mon May 16 10:05:23 2011
+++ src/sys/netipsec/ipsec_mbuf.c	Tue Apr 17 15:38:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_mbuf.c,v 1.12 2011/05/16 10:05:23 drochner Exp $	*/
+/*	$NetBSD: ipsec_mbuf.c,v 1.12.34.1 2018/04/17 15:38:57 martin Exp $	*/
 /*-
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
  * All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.12 2011/05/16 10:05:23 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.12.34.1 2018/04/17 15:38:57 martin Exp $");
 
 /*
  * IPsec-specific mbuf routines.
@@ -407,10 +407,11 @@ m_striphdr(struct mbuf *m, int skip, int
 		/* The header was at the beginning of the mbuf */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_FRONT);
 		m_adj(m1, hlen);
-		if ((m1->m_flags & M_PKTHDR) == 0)
+		if (m1 != m)
 			m->m_pkthdr.len -= hlen;
 	} else if (roff + hlen >= m1->m_len) {
 		struct mbuf *mo;
+		int adjlen;
 
 		/*
 		 * Part or all of the header is at the end of this mbuf,
@@ -419,11 +420,13 @@ m_striphdr(struct mbuf *m, int skip, int
 		 */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_END);
 		if (roff + hlen > m1->m_len) {
+			adjlen = roff + hlen - m1->m_len;
+
 			/* Adjust the next mbuf by the remainder */
-			m_adj(m1->m_next, roff + hlen - m1->m_len);
+			m_adj(m1->m_next, adjlen);
 
 			/* The second mbuf is guaranteed not to have a pkthdr... */
-			m->m_pkthdr.len -= (roff + hlen - m1->m_len);
+			m->m_pkthdr.len -= adjlen;
 		}
 
 		/* Now, let's unlink the mbuf chain for a second...*/
@@ -431,9 +434,10 @@ m_striphdr(struct mbuf *m, int skip, int
 		m1->m_next = NULL;
 
 		/* ...and trim the end of the first part of the chain...sick */
-		m_adj(m1, -(m1->m_len - roff));
-		if ((m1->m_flags & M_PKTHDR) == 0)
-			m->m_pkthdr.len -= (m1->m_len - roff);
+		adjlen = m1->m_len - roff;
+		m_adj(m1, -adjlen);
+		if (m1 != m)
+			m->m_pkthdr.len -= adjlen;
 
 		/* Finally, let's relink */
 		m1->m_next = mo;



CVS commit: [netbsd-7-1] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:38:39 UTC 2018

Modified Files:
src/doc [netbsd-7-1]: CHANGES-7.1.3

Log Message:
Ticket #1599


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.8 -r1.1.2.9 src/doc/CHANGES-7.1.3

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

Modified files:

Index: src/doc/CHANGES-7.1.3
diff -u src/doc/CHANGES-7.1.3:1.1.2.8 src/doc/CHANGES-7.1.3:1.1.2.9
--- src/doc/CHANGES-7.1.3:1.1.2.8	Tue Apr 17 08:29:23 2018
+++ src/doc/CHANGES-7.1.3	Tue Apr 17 15:38:39 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-7.1.3,v 1.1.2.8 2018/04/17 08:29:23 martin Exp $
+# $NetBSD: CHANGES-7.1.3,v 1.1.2.9 2018/04/17 15:38:39 martin Exp $
 
 A complete list of changes from the NetBSD 7.1.2 release to the NetBSD 7.1.3
 release:
@@ -99,3 +99,9 @@ sys/kern/uipc_mbuf.c1.190
 	in place.
 	[maxv, ticket #1598]
 
+sys/netipsec/ipsec_mbuf.c			1.23,1.24 (patch)
+
+	Don't assume M_PKTHDR is set only on the first mbuf of the chain.
+	Fix a pretty bad mistake (IPsec DoS).
+	[maxv, ticket #1599]
+



CVS commit: [netbsd-7-1] src/sys/netipsec

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:38:12 UTC 2018

Modified Files:
src/sys/netipsec [netbsd-7-1]: ipsec_mbuf.c

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

sys/netipsec/ipsec_mbuf.c: revision 1.23,1.24 (via patch)

Don't assume M_PKTHDR is set only on the first mbuf of the chain. It
should, but it looks like there are several places that can put M_PKTHDR
on secondary mbufs (PR/53189), so drop this assumption right now to
prevent further bugs.

The check is replaced by (m1 != m), which is equivalent to the previous
code: we want to modify m->m_pkthdr.len only when 'm' was not passed in
m_adj().

Fix a pretty bad mistake, that has always been there.

m_adj(m1, -(m1->m_len - roff));
if (m1 != m)
m->m_pkthdr.len -= (m1->m_len - roff);

This is wrong: m_adj will modify m1->m_len, so we're using a wrong value
when manually adjusting m->m_pkthdr.len.

Because of that, it is possible to exploit the attack I described in
uipc_mbuf.c::rev1.182. The exploit is more complicated, but works 100%
reliably.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.12.42.1 src/sys/netipsec/ipsec_mbuf.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/netipsec/ipsec_mbuf.c
diff -u src/sys/netipsec/ipsec_mbuf.c:1.12 src/sys/netipsec/ipsec_mbuf.c:1.12.42.1
--- src/sys/netipsec/ipsec_mbuf.c:1.12	Mon May 16 10:05:23 2011
+++ src/sys/netipsec/ipsec_mbuf.c	Tue Apr 17 15:38:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_mbuf.c,v 1.12 2011/05/16 10:05:23 drochner Exp $	*/
+/*	$NetBSD: ipsec_mbuf.c,v 1.12.42.1 2018/04/17 15:38:12 martin Exp $	*/
 /*-
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
  * All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.12 2011/05/16 10:05:23 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.12.42.1 2018/04/17 15:38:12 martin Exp $");
 
 /*
  * IPsec-specific mbuf routines.
@@ -407,10 +407,11 @@ m_striphdr(struct mbuf *m, int skip, int
 		/* The header was at the beginning of the mbuf */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_FRONT);
 		m_adj(m1, hlen);
-		if ((m1->m_flags & M_PKTHDR) == 0)
+		if (m1 != m)
 			m->m_pkthdr.len -= hlen;
 	} else if (roff + hlen >= m1->m_len) {
 		struct mbuf *mo;
+		int adjlen;
 
 		/*
 		 * Part or all of the header is at the end of this mbuf,
@@ -419,11 +420,13 @@ m_striphdr(struct mbuf *m, int skip, int
 		 */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_END);
 		if (roff + hlen > m1->m_len) {
+			adjlen = roff + hlen - m1->m_len;
+
 			/* Adjust the next mbuf by the remainder */
-			m_adj(m1->m_next, roff + hlen - m1->m_len);
+			m_adj(m1->m_next, adjlen);
 
 			/* The second mbuf is guaranteed not to have a pkthdr... */
-			m->m_pkthdr.len -= (roff + hlen - m1->m_len);
+			m->m_pkthdr.len -= adjlen;
 		}
 
 		/* Now, let's unlink the mbuf chain for a second...*/
@@ -431,9 +434,10 @@ m_striphdr(struct mbuf *m, int skip, int
 		m1->m_next = NULL;
 
 		/* ...and trim the end of the first part of the chain...sick */
-		m_adj(m1, -(m1->m_len - roff));
-		if ((m1->m_flags & M_PKTHDR) == 0)
-			m->m_pkthdr.len -= (m1->m_len - roff);
+		adjlen = m1->m_len - roff;
+		m_adj(m1, -adjlen);
+		if (m1 != m)
+			m->m_pkthdr.len -= adjlen;
 
 		/* Finally, let's relink */
 		m1->m_next = mo;



CVS commit: [netbsd-7] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:36:37 UTC 2018

Modified Files:
src/doc [netbsd-7]: CHANGES-7.2

Log Message:
Ticket #1599


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.85 -r1.1.2.86 src/doc/CHANGES-7.2

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

Modified files:

Index: src/doc/CHANGES-7.2
diff -u src/doc/CHANGES-7.2:1.1.2.85 src/doc/CHANGES-7.2:1.1.2.86
--- src/doc/CHANGES-7.2:1.1.2.85	Tue Apr 17 08:27:46 2018
+++ src/doc/CHANGES-7.2	Tue Apr 17 15:36:37 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-7.2,v 1.1.2.85 2018/04/17 08:27:46 martin Exp $
+# $NetBSD: CHANGES-7.2,v 1.1.2.86 2018/04/17 15:36:37 martin Exp $
 
 A complete list of changes from the NetBSD 7.1 release to the NetBSD 7.2
 release:
@@ -5439,3 +5439,9 @@ sys/kern/uipc_mbuf.c1.190
 	in place.
 	[maxv, ticket #1598]
 
+sys/netipsec/ipsec_mbuf.c			1.23,1.24 (patch)
+
+	Don't assume M_PKTHDR is set only on the first mbuf of the chain.
+	Fix a pretty bad mistake (IPsec DoS).
+	[maxv, ticket #1599]
+



CVS commit: src/sbin/nvmectl

2018-04-17 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Tue Apr 17 15:31:00 UTC 2018

Modified Files:
src/sbin/nvmectl: nvmectl.h

Log Message:
nvmectl(8): fix wdc command usage.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sbin/nvmectl/nvmectl.h

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

Modified files:

Index: src/sbin/nvmectl/nvmectl.h
diff -u src/sbin/nvmectl/nvmectl.h:1.6 src/sbin/nvmectl/nvmectl.h:1.7
--- src/sbin/nvmectl/nvmectl.h:1.6	Tue Apr 17 08:54:35 2018
+++ src/sbin/nvmectl/nvmectl.h	Tue Apr 17 15:31:00 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: nvmectl.h,v 1.6 2018/04/17 08:54:35 nonaka Exp $	*/
+/*	$NetBSD: nvmectl.h,v 1.7 2018/04/17 15:31:00 nonaka Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -81,7 +81,7 @@ struct nvme_function {
 "power [-l] [-p new-state [-w workload-hint]] \n"
 
 #define WDC_USAGE			   \
-"wdc (cap-diag|drive-log|get-crash-dump|purge|purge-montior)\n"
+"wdc cap-diag [-o path-templete]\n"
 
 void devlist(int, char *[]) __dead;
 void identify(int, char *[]) __dead;



CVS commit: [netbsd-7] src/sys/netipsec

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:10:53 UTC 2018

Modified Files:
src/sys/netipsec [netbsd-7]: ipsec_mbuf.c

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

sys/netipsec/ipsec_mbuf.c: revision 1.23,1.24 (via patch)

Don't assume M_PKTHDR is set only on the first mbuf of the chain. It
should, but it looks like there are several places that can put M_PKTHDR
on secondary mbufs (PR/53189), so drop this assumption right now to
prevent further bugs.

The check is replaced by (m1 != m), which is equivalent to the previous
code: we want to modify m->m_pkthdr.len only when 'm' was not passed in
m_adj().

Fix a pretty bad mistake, that has always been there.

m_adj(m1, -(m1->m_len - roff));
if (m1 != m)
m->m_pkthdr.len -= (m1->m_len - roff);

This is wrong: m_adj will modify m1->m_len, so we're using a wrong value
when manually adjusting m->m_pkthdr.len.

Because of that, it is possible to exploit the attack I described in
uipc_mbuf.c::rev1.182. The exploit is more complicated, but works 100%
reliably.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.12.30.1 src/sys/netipsec/ipsec_mbuf.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/netipsec/ipsec_mbuf.c
diff -u src/sys/netipsec/ipsec_mbuf.c:1.12 src/sys/netipsec/ipsec_mbuf.c:1.12.30.1
--- src/sys/netipsec/ipsec_mbuf.c:1.12	Mon May 16 10:05:23 2011
+++ src/sys/netipsec/ipsec_mbuf.c	Tue Apr 17 15:10:53 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_mbuf.c,v 1.12 2011/05/16 10:05:23 drochner Exp $	*/
+/*	$NetBSD: ipsec_mbuf.c,v 1.12.30.1 2018/04/17 15:10:53 martin Exp $	*/
 /*-
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
  * All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.12 2011/05/16 10:05:23 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.12.30.1 2018/04/17 15:10:53 martin Exp $");
 
 /*
  * IPsec-specific mbuf routines.
@@ -407,10 +407,11 @@ m_striphdr(struct mbuf *m, int skip, int
 		/* The header was at the beginning of the mbuf */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_FRONT);
 		m_adj(m1, hlen);
-		if ((m1->m_flags & M_PKTHDR) == 0)
+		if (m1 != m)
 			m->m_pkthdr.len -= hlen;
 	} else if (roff + hlen >= m1->m_len) {
 		struct mbuf *mo;
+		int adjlen;
 
 		/*
 		 * Part or all of the header is at the end of this mbuf,
@@ -419,11 +420,13 @@ m_striphdr(struct mbuf *m, int skip, int
 		 */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_END);
 		if (roff + hlen > m1->m_len) {
+			adjlen = roff + hlen - m1->m_len;
+
 			/* Adjust the next mbuf by the remainder */
-			m_adj(m1->m_next, roff + hlen - m1->m_len);
+			m_adj(m1->m_next, adjlen);
 
 			/* The second mbuf is guaranteed not to have a pkthdr... */
-			m->m_pkthdr.len -= (roff + hlen - m1->m_len);
+			m->m_pkthdr.len -= adjlen;
 		}
 
 		/* Now, let's unlink the mbuf chain for a second...*/
@@ -431,9 +434,10 @@ m_striphdr(struct mbuf *m, int skip, int
 		m1->m_next = NULL;
 
 		/* ...and trim the end of the first part of the chain...sick */
-		m_adj(m1, -(m1->m_len - roff));
-		if ((m1->m_flags & M_PKTHDR) == 0)
-			m->m_pkthdr.len -= (m1->m_len - roff);
+		adjlen = m1->m_len - roff;
+		m_adj(m1, -adjlen);
+		if (m1 != m)
+			m->m_pkthdr.len -= adjlen;
 
 		/* Finally, let's relink */
 		m1->m_next = mo;



CVS commit: [netbsd-8] src/sys/netipsec

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 15:06:20 UTC 2018

Modified Files:
src/sys/netipsec [netbsd-8]: ipsec_mbuf.c

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

sys/netipsec/ipsec_mbuf.c: revision 1.23,1.24

Don't assume M_PKTHDR is set only on the first mbuf of the chain. It
should, but it looks like there are several places that can put M_PKTHDR
on secondary mbufs (PR/53189), so drop this assumption right now to
prevent further bugs.

The check is replaced by (m1 != m), which is equivalent to the previous
code: we want to modify m->m_pkthdr.len only when 'm' was not passed in
m_adj().

Fix a pretty bad mistake, that has always been there.

m_adj(m1, -(m1->m_len - roff));
if (m1 != m)
m->m_pkthdr.len -= (m1->m_len - roff);

This is wrong: m_adj will modify m1->m_len, so we're using a wrong value
when manually adjusting m->m_pkthdr.len.

Because of that, it is possible to exploit the attack I described in
uipc_mbuf.c::rev1.182. The exploit is more complicated, but works 100%
reliably.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.16.2.1 src/sys/netipsec/ipsec_mbuf.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/netipsec/ipsec_mbuf.c
diff -u src/sys/netipsec/ipsec_mbuf.c:1.16 src/sys/netipsec/ipsec_mbuf.c:1.16.2.1
--- src/sys/netipsec/ipsec_mbuf.c:1.16	Fri May 19 04:34:09 2017
+++ src/sys/netipsec/ipsec_mbuf.c	Tue Apr 17 15:06:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_mbuf.c,v 1.16 2017/05/19 04:34:09 ozaki-r Exp $	*/
+/*	$NetBSD: ipsec_mbuf.c,v 1.16.2.1 2018/04/17 15:06:20 martin Exp $	*/
 /*-
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
  * All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.16 2017/05/19 04:34:09 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.16.2.1 2018/04/17 15:06:20 martin Exp $");
 
 /*
  * IPsec-specific mbuf routines.
@@ -403,10 +403,11 @@ m_striphdr(struct mbuf *m, int skip, int
 		/* The header was at the beginning of the mbuf */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_FRONT);
 		m_adj(m1, hlen);
-		if ((m1->m_flags & M_PKTHDR) == 0)
+		if (m1 != m)
 			m->m_pkthdr.len -= hlen;
 	} else if (roff + hlen >= m1->m_len) {
 		struct mbuf *mo;
+		int adjlen;
 
 		/*
 		 * Part or all of the header is at the end of this mbuf,
@@ -415,11 +416,13 @@ m_striphdr(struct mbuf *m, int skip, int
 		 */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_END);
 		if (roff + hlen > m1->m_len) {
+			adjlen = roff + hlen - m1->m_len;
+
 			/* Adjust the next mbuf by the remainder */
-			m_adj(m1->m_next, roff + hlen - m1->m_len);
+			m_adj(m1->m_next, adjlen);
 
 			/* The second mbuf is guaranteed not to have a pkthdr... */
-			m->m_pkthdr.len -= (roff + hlen - m1->m_len);
+			m->m_pkthdr.len -= adjlen;
 		}
 
 		/* Now, let's unlink the mbuf chain for a second...*/
@@ -427,9 +430,10 @@ m_striphdr(struct mbuf *m, int skip, int
 		m1->m_next = NULL;
 
 		/* ...and trim the end of the first part of the chain...sick */
-		m_adj(m1, -(m1->m_len - roff));
-		if ((m1->m_flags & M_PKTHDR) == 0)
-			m->m_pkthdr.len -= (m1->m_len - roff);
+		adjlen = m1->m_len - roff;
+		m_adj(m1, -adjlen);
+		if (m1 != m)
+			m->m_pkthdr.len -= adjlen;
 
 		/* Finally, let's relink */
 		m1->m_next = mo;



CVS commit: src/crypto/external/bsd/openssl/dist/crypto/rsa

2018-04-17 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Apr 17 14:48:49 UTC 2018

Modified Files:
src/crypto/external/bsd/openssl/dist/crypto/rsa: rsa_gen.c

Log Message:
CVE-2018-0737: Set constant time for rsa computation:
https://www.openssl.org/news/vulnerabilities.html
This needs to be pulled up to -8 using:

https://github.com/openssl/openssl/commit/349a41da1ad88ad87825414752a8ff5fdd6a6c3f


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.8 -r1.2 \
src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c

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

Modified files:

Index: src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c
diff -u src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c:1.1.1.8 src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c:1.2
--- src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c:1.1.1.8	Fri Apr  6 18:49:16 2018
+++ src/crypto/external/bsd/openssl/dist/crypto/rsa/rsa_gen.c	Tue Apr 17 10:48:48 2018
@@ -89,6 +89,8 @@ static int rsa_builtin_keygen(RSA *rsa, 
 if (BN_copy(rsa->e, e_value) == NULL)
 goto err;
 
+BN_set_flags(rsa->p, BN_FLG_CONSTTIME);
+BN_set_flags(rsa->q, BN_FLG_CONSTTIME);
 BN_set_flags(r2, BN_FLG_CONSTTIME);
 /* generate p and q */
 for (;;) {



CVS commit: src/external/bsd/file/dist/src

2018-04-17 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Tue Apr 17 12:34:04 UTC 2018

Modified Files:
src/external/bsd/file/dist/src: file.c

Log Message:
sprinkle #ifdef __dead \n __dead \n #endif for clang


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/external/bsd/file/dist/src/file.c

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

Modified files:

Index: src/external/bsd/file/dist/src/file.c
diff -u src/external/bsd/file/dist/src/file.c:1.9 src/external/bsd/file/dist/src/file.c:1.10
--- src/external/bsd/file/dist/src/file.c:1.9	Sun Apr 15 19:45:32 2018
+++ src/external/bsd/file/dist/src/file.c	Tue Apr 17 12:34:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: file.c,v 1.9 2018/04/15 19:45:32 christos Exp $	*/
+/*	$NetBSD: file.c,v 1.10 2018/04/17 12:34:04 jakllsch Exp $	*/
 
 /*
  * Copyright (c) Ian F. Darwin 1986-1995.
@@ -37,7 +37,7 @@
 #if 0
 FILE_RCSID("@(#)$File: file.c,v 1.175 2018/03/02 16:11:37 christos Exp $")
 #else
-__RCSID("$NetBSD: file.c,v 1.9 2018/04/15 19:45:32 christos Exp $");
+__RCSID("$NetBSD: file.c,v 1.10 2018/04/17 12:34:04 jakllsch Exp $");
 #endif
 #endif	/* lint */
 
@@ -677,6 +677,9 @@ file_getprogname(void)
 	return file_progname;
 }
 
+#ifdef __dead
+__dead
+#endif
 protected void
 file_err(int e, const char *fmt, ...)
 {
@@ -691,6 +694,9 @@ file_err(int e, const char *fmt, ...)
 	exit(e);
 }
 
+#ifdef __dead
+__dead
+#endif
 protected void
 file_errx(int e, const char *fmt, ...)
 {



CVS commit: src/tools

2018-04-17 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Tue Apr 17 10:08:54 UTC 2018

Modified Files:
src/tools: Makefile.gnuhost

Log Message:
Remove hack previously needed to build gcc/arm with clang.
genattrtab.c:1.2 makes this unnecessary.

Tested by thorpej.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/tools/Makefile.gnuhost

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

Modified files:

Index: src/tools/Makefile.gnuhost
diff -u src/tools/Makefile.gnuhost:1.47 src/tools/Makefile.gnuhost:1.48
--- src/tools/Makefile.gnuhost:1.47	Tue Apr 17 02:03:56 2018
+++ src/tools/Makefile.gnuhost	Tue Apr 17 10:08:54 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.gnuhost,v 1.47 2018/04/17 02:03:56 christos Exp $
+#	$NetBSD: Makefile.gnuhost,v 1.48 2018/04/17 10:08:54 maya Exp $
 #
 # Rules used when building a GNU host package.  Expects MODULE to be set.
 #
@@ -23,13 +23,6 @@ BUILD_OSTYPE!= uname -s
 HOST_CFLAGS+=-O2 -no-cpp-precomp
 .endif
 
-# GCC build exceeds the clang default bracket nesting level of 256.
-HOST_COMPILER_CLANG != if echo __clang__ | ${HOST_CC} -E - | grep -q clang; then echo no; else echo yes; fi
-.if ${HOST_COMPILER_CLANG} == "yes"
-HOST_CFLAGS+= -fbracket-depth=512
-HOST_CXXFLAGS+= -fbracket-depth=512
-.endif
-
 MAKE_PROGRAM?=	${MAKE}
 
 .for i in 3 2



CVS commit: src/external/gpl3/gcc/dist/gcc

2018-04-17 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Tue Apr 17 10:02:49 UTC 2018

Modified Files:
src/external/gpl3/gcc/dist/gcc: genattrtab.c

Log Message:
Apply upstream commit:

From: ppalka 
Date: Wed, 27 Apr 2016 21:18:05 +
Subject: [PATCH] Reduce nesting of parentheses in conditionals generated by
 genattrtab

gcc/ChangeLog:

* genattrtab.c (write_test_expr): New parameter EMIT_PARENS
which defaults to true.  Emit an outer pair of parentheses only if
EMIT_PARENS.  When continuing a chain of && or || (or & or |),
don't emit parentheses for the right-hand operand.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235536

gcc/arm generates so many parens it hits a bracket depth limited which is
enforced by clang. This reduces the number of parens generated and avoids the
need to increase bracket depth.

Fixes PR toolchain/53178 properly.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.4 -r1.2 src/external/gpl3/gcc/dist/gcc/genattrtab.c

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

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/genattrtab.c
diff -u src/external/gpl3/gcc/dist/gcc/genattrtab.c:1.1.1.4 src/external/gpl3/gcc/dist/gcc/genattrtab.c:1.2
--- src/external/gpl3/gcc/dist/gcc/genattrtab.c:1.1.1.4	Fri Feb  2 01:59:20 2018
+++ src/external/gpl3/gcc/dist/gcc/genattrtab.c	Tue Apr 17 10:02:49 2018
@@ -3416,7 +3416,10 @@ find_attrs_to_cache (rtx exp, bool creat
 
 /* Given a piece of RTX, print a C expression to test its truth value to OUTF.
We use AND and IOR both for logical and bit-wise operations, so
-   interpret them as logical unless they are inside a comparison expression.  */
+   interpret them as logical unless they are inside a comparison expression.
+
+   An outermost pair of parentheses is emitted around this C expression unless
+   EMIT_PARENS is false.  */
 
 /* Interpret AND/IOR as bit-wise operations instead of logical.  */
 #define FLG_BITWISE		1
@@ -3432,16 +3435,16 @@ find_attrs_to_cache (rtx exp, bool creat
 #define FLG_OUTSIDE_AND		8
 
 static unsigned int
-write_test_expr (FILE *outf, rtx exp, unsigned int attrs_cached, int flags)
+write_test_expr (FILE *outf, rtx exp, unsigned int attrs_cached, int flags,
+		 bool emit_parens = true)
 {
   int comparison_operator = 0;
   RTX_CODE code;
   struct attr_desc *attr;
 
-  /* In order not to worry about operator precedence, surround our part of
- the expression with parentheses.  */
+  if (emit_parens)
+fprintf (outf, "(");
 
-  fprintf (outf, "(");
   code = GET_CODE (exp);
   switch (code)
 {
@@ -3575,8 +3578,18 @@ write_test_expr (FILE *outf, rtx exp, un
 	  || GET_CODE (XEXP (exp, 1)) == EQ_ATTR
 	  || (GET_CODE (XEXP (exp, 1)) == NOT
 		  && GET_CODE (XEXP (XEXP (exp, 1), 0)) == EQ_ATTR)))
-	attrs_cached
-	  = write_test_expr (outf, XEXP (exp, 1), attrs_cached, flags);
+	{
+	  bool need_parens = true;
+
+	  /* No need to emit parentheses around the right-hand operand if we are
+	 continuing a chain of && or || (or & or |).  */
+	  if (GET_CODE (XEXP (exp, 1)) == code)
+	need_parens = false;
+
+	  attrs_cached
+	= write_test_expr (outf, XEXP (exp, 1), attrs_cached, flags,
+			   need_parens);
+	}
   else
 	write_test_expr (outf, XEXP (exp, 1), attrs_cached,
 			 flags | comparison_operator);
@@ -3794,7 +3807,9 @@ write_test_expr (FILE *outf, rtx exp, un
 	 GET_RTX_NAME (code));
 }
 
-  fprintf (outf, ")");
+  if (emit_parens)
+fprintf (outf, ")");
+
   return attrs_cached;
 }
 



CVS commit: src/sys/netipsec

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 09:06:33 UTC 2018

Modified Files:
src/sys/netipsec: ipsec_mbuf.c

Log Message:
Fix a pretty bad mistake, that has always been there.

m_adj(m1, -(m1->m_len - roff));
if (m1 != m)
m->m_pkthdr.len -= (m1->m_len - roff);

This is wrong: m_adj will modify m1->m_len, so we're using a wrong value
when manually adjusting m->m_pkthdr.len.

Because of that, it is possible to exploit the attack I described in
uipc_mbuf.c::rev1.182. The exploit is more complicated, but works 100%
reliably.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/netipsec/ipsec_mbuf.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/netipsec/ipsec_mbuf.c
diff -u src/sys/netipsec/ipsec_mbuf.c:1.23 src/sys/netipsec/ipsec_mbuf.c:1.24
--- src/sys/netipsec/ipsec_mbuf.c:1.23	Tue Apr 17 06:23:30 2018
+++ src/sys/netipsec/ipsec_mbuf.c	Tue Apr 17 09:06:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_mbuf.c,v 1.23 2018/04/17 06:23:30 maxv Exp $	*/
+/*	$NetBSD: ipsec_mbuf.c,v 1.24 2018/04/17 09:06:33 maxv Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.23 2018/04/17 06:23:30 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.24 2018/04/17 09:06:33 maxv Exp $");
 
 /*
  * IPsec-specific mbuf routines.
@@ -404,6 +404,7 @@ m_striphdr(struct mbuf *m, int skip, int
 			m->m_pkthdr.len -= hlen;
 	} else if (roff + hlen >= m1->m_len) {
 		struct mbuf *mo;
+		int adjlen;
 
 		/*
 		 * Part or all of the header is at the end of this mbuf,
@@ -412,11 +413,13 @@ m_striphdr(struct mbuf *m, int skip, int
 		 */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_END);
 		if (roff + hlen > m1->m_len) {
+			adjlen = roff + hlen - m1->m_len;
+
 			/* Adjust the next mbuf by the remainder */
-			m_adj(m1->m_next, roff + hlen - m1->m_len);
+			m_adj(m1->m_next, adjlen);
 
 			/* The second mbuf is guaranteed not to have a pkthdr... */
-			m->m_pkthdr.len -= (roff + hlen - m1->m_len);
+			m->m_pkthdr.len -= adjlen;
 		}
 
 		/* Now, let's unlink the mbuf chain for a second...*/
@@ -424,9 +427,10 @@ m_striphdr(struct mbuf *m, int skip, int
 		m1->m_next = NULL;
 
 		/* ...and trim the end of the first part of the chain...sick */
-		m_adj(m1, -(m1->m_len - roff));
+		adjlen = m1->m_len - roff;
+		m_adj(m1, -adjlen);
 		if (m1 != m)
-			m->m_pkthdr.len -= (m1->m_len - roff);
+			m->m_pkthdr.len -= adjlen;
 
 		/* Finally, let's relink */
 		m1->m_next = mo;



CVS commit: src

2018-04-17 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Tue Apr 17 08:54:35 UTC 2018

Modified Files:
src/sbin/nvmectl: Makefile devlist.c firmware.c identify.c logpage.c
nvmectl.c nvmectl.h perftest.c reset.c wdc.c
src/sys/dev/ic: nvmereg.h
Added Files:
src/sbin/nvmectl: util.c

Log Message:
nvmectl(8): Sync with FreeBSD nvmecontrol(8) r328763.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sbin/nvmectl/Makefile src/sbin/nvmectl/devlist.c \
src/sbin/nvmectl/identify.c src/sbin/nvmectl/perftest.c
cvs rdiff -u -r1.2 -r1.3 src/sbin/nvmectl/firmware.c src/sbin/nvmectl/reset.c \
src/sbin/nvmectl/wdc.c
cvs rdiff -u -r1.5 -r1.6 src/sbin/nvmectl/logpage.c \
src/sbin/nvmectl/nvmectl.c src/sbin/nvmectl/nvmectl.h
cvs rdiff -u -r0 -r1.1 src/sbin/nvmectl/util.c
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/ic/nvmereg.h

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

Modified files:

Index: src/sbin/nvmectl/Makefile
diff -u src/sbin/nvmectl/Makefile:1.3 src/sbin/nvmectl/Makefile:1.4
--- src/sbin/nvmectl/Makefile:1.3	Sat Apr 29 00:06:40 2017
+++ src/sbin/nvmectl/Makefile	Tue Apr 17 08:54:35 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.3 2017/04/29 00:06:40 nonaka Exp $
+#	$NetBSD: Makefile,v 1.4 2018/04/17 08:54:35 nonaka Exp $
 
 .include 
 
@@ -11,6 +11,7 @@ SRCS+=	logpage.c
 SRCS+=	perftest.c
 SRCS+=	power.c
 SRCS+=	reset.c
+SRCS+=	util.c
 SRCS+=	wdc.c
 SRCS+=	bignum.c
 SRCS+=	humanize_bignum.c
Index: src/sbin/nvmectl/devlist.c
diff -u src/sbin/nvmectl/devlist.c:1.3 src/sbin/nvmectl/devlist.c:1.4
--- src/sbin/nvmectl/devlist.c:1.3	Sat Mar 17 11:07:26 2018
+++ src/sbin/nvmectl/devlist.c	Tue Apr 17 08:54:35 2018
@@ -1,6 +1,8 @@
-/*	$NetBSD: devlist.c,v 1.3 2018/03/17 11:07:26 jdolecek Exp $	*/
+/*	$NetBSD: devlist.c,v 1.4 2018/04/17 08:54:35 nonaka Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 2012-2013 Intel Corporation
  * All rights reserved.
  *
@@ -28,9 +30,9 @@
 
 #include 
 #ifndef lint
-__RCSID("$NetBSD: devlist.c,v 1.3 2018/03/17 11:07:26 jdolecek Exp $");
+__RCSID("$NetBSD: devlist.c,v 1.4 2018/04/17 08:54:35 nonaka Exp $");
 #if 0
-__FBSDID("$FreeBSD: head/sbin/nvmecontrol/devlist.c 260381 2014-01-06 23:48:47Z jimharris $");
+__FBSDID("$FreeBSD: head/sbin/nvmecontrol/devlist.c 326276 2017-11-27 15:37:16Z pfg $");
 #endif
 #endif
 
Index: src/sbin/nvmectl/identify.c
diff -u src/sbin/nvmectl/identify.c:1.3 src/sbin/nvmectl/identify.c:1.4
--- src/sbin/nvmectl/identify.c:1.3	Sat Mar 17 11:07:26 2018
+++ src/sbin/nvmectl/identify.c	Tue Apr 17 08:54:35 2018
@@ -1,6 +1,8 @@
-/*	$NetBSD: identify.c,v 1.3 2018/03/17 11:07:26 jdolecek Exp $	*/
+/*	$NetBSD: identify.c,v 1.4 2018/04/17 08:54:35 nonaka Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 2012-2013 Intel Corporation
  * All rights reserved.
  *
@@ -28,9 +30,9 @@
 
 #include 
 #ifndef lint
-__RCSID("$NetBSD: identify.c,v 1.3 2018/03/17 11:07:26 jdolecek Exp $");
+__RCSID("$NetBSD: identify.c,v 1.4 2018/04/17 08:54:35 nonaka Exp $");
 #if 0
-__FBSDID("$FreeBSD: head/sbin/nvmecontrol/identify.c 253476 2013-07-19 21:40:57Z jimharris $");
+__FBSDID("$FreeBSD: head/sbin/nvmecontrol/identify.c 326276 2017-11-27 15:37:16Z pfg $");
 #endif
 #endif
 
@@ -72,6 +74,7 @@ print_controller(struct nvm_identify_con
 		printf("Unlimited\n");
 	else
 		printf("%ld\n", sysconf(_SC_PAGESIZE) * (1 << cdata->mdts));
+	printf("Controller ID:  0x%02x\n", cdata->cntlid);
 	printf("\n");
 
 	printf("Admin Command Set Attributes\n");
@@ -85,6 +88,9 @@ print_controller(struct nvm_identify_con
 	printf("Firmware Activate/Download:  %s\n",
 		(cdata->oacs & NVME_ID_CTRLR_OACS_FW) ?
 		"Supported" : "Not Supported");
+	printf("Namespace Managment: %s\n",
+		(cdata->oacs & NVME_ID_CTRLR_OACS_NS) ?
+		"Supported" : "Not Supported");
 	printf("Abort Command Limit: %d\n", cdata->acl+1);
 	printf("Async Event Request Limit:   %d\n", cdata->aerl+1);
 	printf("Number of Firmware Slots:");
@@ -139,6 +145,16 @@ print_controller(struct nvm_identify_con
 	printf("Volatile Write Cache:%s\n",
 		(cdata->vwc & NVME_ID_CTRLR_VWC_PRESENT) ?
 		"Present" : "Not Present");
+
+	if (cdata->oacs & NVME_ID_CTRLR_OACS_NS) {
+		printf("\n");
+		printf("Namespace Drive Attributes\n");
+		printf("==\n");
+		print_bignum("NVM total cap:   ",
+		cdata->untncap.tnvmcap, "");
+		print_bignum("NVM unallocated cap: ",
+		cdata->untncap.unvmcap, "");
+	}
 }
 
 static void
Index: src/sbin/nvmectl/perftest.c
diff -u src/sbin/nvmectl/perftest.c:1.3 src/sbin/nvmectl/perftest.c:1.4
--- src/sbin/nvmectl/perftest.c:1.3	Sat Mar 17 11:07:26 2018
+++ src/sbin/nvmectl/perftest.c	Tue Apr 17 08:54:35 2018
@@ -1,6 +1,8 @@
-/*	$NetBSD: perftest.c,v 1.3 2018/03/17 11:07:26 jdolecek Exp $	*/
+/*	$NetBSD: perftest.c,v 1.4 2018/04/17 08:54:35 

CVS commit: src/sys/dev/pci

2018-04-17 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Tue Apr 17 08:47:44 UTC 2018

Modified Files:
src/sys/dev/pci: pcidevs.h pcidevs_data.h

Log Message:
regen


To generate a diff of this commit:
cvs rdiff -u -r1.1320 -r1.1321 src/sys/dev/pci/pcidevs.h
cvs rdiff -u -r1.1319 -r1.1320 src/sys/dev/pci/pcidevs_data.h

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

diffs are larger than 1MB and have been omitted


CVS commit: src/sys/dev/pci

2018-04-17 Thread NONAKA Kimihiro
Module Name:src
Committed By:   nonaka
Date:   Tue Apr 17 08:47:19 UTC 2018

Modified Files:
src/sys/dev/pci: pcidevs

Log Message:
Added some NVMe devices.


To generate a diff of this commit:
cvs rdiff -u -r1.1329 -r1.1330 src/sys/dev/pci/pcidevs

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

Modified files:

Index: src/sys/dev/pci/pcidevs
diff -u src/sys/dev/pci/pcidevs:1.1329 src/sys/dev/pci/pcidevs:1.1330
--- src/sys/dev/pci/pcidevs:1.1329	Mon Apr 16 13:11:53 2018
+++ src/sys/dev/pci/pcidevs	Tue Apr 17 08:47:19 2018
@@ -1,4 +1,4 @@
-$NetBSD: pcidevs,v 1.1329 2018/04/16 13:11:53 msaitoh Exp $
+$NetBSD: pcidevs,v 1.1330 2018/04/17 08:47:19 nonaka Exp $
 
 /*
  * Copyright (c) 1995, 1996 Christopher G. Demetriou
@@ -645,6 +645,8 @@ vendor MARVELL2		0x1b4b	Marvell
 vendor FRESCO		0x1b73	Fresco Logic
 vendor QINHENG2		0x1c00	Nanjing QinHeng Electronics (PCIe)
 vendor SYMPHONY2	0x1c1c	Symphony Labs (2nd PCI Vendor ID)
+vendor HGST		0x1c58	HGST, Inc.
+vendor BEIJING_MEMBLAZE	0x1c5f	Beijing Memblaze Technology Co. Ltd.
 vendor TEKRAM2		0x1de1	Tekram Technology (2nd PCI Vendor ID)
 vendor SUNIX2		0x1fd4	SUNIX Co
 vendor HINT		0x3388	HiNT
@@ -1742,6 +1744,9 @@ product BBELEC ISOLATED_2_PORT		0x4212	d
 product BBELEC ISOLATED_4_PORT		0x4214	quad-channel Isolated RS-485 PCI UART
 product BBELEC ISOLATED_8_PORT		0x4218	octal-channel Isolated RS-485 PCI UART
 
+/* Beijing Memblaze Technology Co. Ltd. products */
+product BEIJING_MEMBLAZE PBLAZE4	0x0540	PBlaze4 NVMe SSD
+
 /* Belkin products */
 product BELKIN F5D6001		0x6001	F5D6001
 product BELKIN F5D6020V3	0x6020	F5D6020v3 802.11b
@@ -2631,6 +2636,10 @@ product HP ILO3_SLAVE		0x3306	iLO3 Slave
 product HP ILO3_MGMT		0x3307	iLO3 Management
 product HP RS780_PPB_GFX	0x9602  (AMD) RS780 PCI-PCI Bridge (int gfx)
 
+/* HGST Inc. products */
+product HGST SN100	0x0003	Ultrastar SN100 Series NVMe SSD
+product HGST SN200	0x0023	Ultrastar SN200 Series NVMe SSD
+
 /* Hifn products */
 product HIFN 7751	0x0005	7751
 product HIFN 6500	0x0006	6500
@@ -6616,6 +6625,8 @@ product SAFENET SAFEXCEL	0x1141 SafeXcel
 product SAMSUNGELEC3	XP941		0xa800	XP941 M.2 SSD
 product SAMSUNGELEC3	SM951		0xa801	SM951 M.2 SSD
 product SAMSUNGELEC3	SM951_NVME	0xa802	SM951 M.2 NVMe SSD
+product SAMSUNGELEC3	172X		0xa821	NVMe SSD Controller 172X
+product SAMSUNGELEC3	172XAB		0xa822	NVMe SSD Controller 172Xa/172Xb
 
 /* Samsung Semiconductor products */
 product SAMSUNGSEMI	KS8920	0x8920	KS8920 10/100 Ethernet



CVS commit: src/sys/dev/pci/ixgbe

2018-04-17 Thread SAITOH Masanobu
Module Name:src
Committed By:   msaitoh
Date:   Tue Apr 17 08:38:05 UTC 2018

Modified Files:
src/sys/dev/pci/ixgbe: ix_txrx.c ixgbe.c ixgbe.h ixv.c

Log Message:
 Remove unused structure entries. No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/dev/pci/ixgbe/ix_txrx.c
cvs rdiff -u -r1.147 -r1.148 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.42 -r1.43 src/sys/dev/pci/ixgbe/ixgbe.h
cvs rdiff -u -r1.93 -r1.94 src/sys/dev/pci/ixgbe/ixv.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/dev/pci/ixgbe/ix_txrx.c
diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.39 src/sys/dev/pci/ixgbe/ix_txrx.c:1.40
--- src/sys/dev/pci/ixgbe/ix_txrx.c:1.39	Wed Apr  4 08:13:07 2018
+++ src/sys/dev/pci/ixgbe/ix_txrx.c	Tue Apr 17 08:38:05 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ix_txrx.c,v 1.39 2018/04/04 08:13:07 msaitoh Exp $ */
+/* $NetBSD: ix_txrx.c,v 1.40 2018/04/17 08:38:05 msaitoh Exp $ */
 
 /**
 
@@ -494,8 +494,7 @@ retry:
 		segaddr = htole64(map->dm_segs[j].ds_addr);
 
 		txd->read.buffer_addr = segaddr;
-		txd->read.cmd_type_len = htole32(txr->txd_cmd |
-		cmd_type_len | seglen);
+		txd->read.cmd_type_len = htole32(cmd_type_len | seglen);
 		txd->read.olinfo_status = htole32(olinfo_status);
 
 		if (++i == txr->num_desc)
@@ -2266,8 +2265,6 @@ ixgbe_allocate_queues(struct adapter *ad
 		txr->num_desc = adapter->num_tx_desc;
 
 		/* Initialize the TX side lock */
-		snprintf(txr->mtx_name, sizeof(txr->mtx_name), "%s:tx(%d)",
-		device_xname(dev), txr->me);
 		mutex_init(>tx_mtx, MUTEX_DEFAULT, IPL_NET);
 
 		if (ixgbe_dma_malloc(adapter, tsize, >txdma,
@@ -2318,8 +2315,6 @@ ixgbe_allocate_queues(struct adapter *ad
 		rxr->num_desc = adapter->num_rx_desc;
 
 		/* Initialize the RX side lock */
-		snprintf(rxr->mtx_name, sizeof(rxr->mtx_name), "%s:rx(%d)",
-		device_xname(dev), rxr->me);
 		mutex_init(>rx_mtx, MUTEX_DEFAULT, IPL_NET);
 
 		if (ixgbe_dma_malloc(adapter, rsize, >rxdma,

Index: src/sys/dev/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.147 src/sys/dev/pci/ixgbe/ixgbe.c:1.148
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.147	Tue Apr 17 05:23:58 2018
+++ src/sys/dev/pci/ixgbe/ixgbe.c	Tue Apr 17 08:38:05 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.147 2018/04/17 05:23:58 knakahara Exp $ */
+/* $NetBSD: ixgbe.c,v 1.148 2018/04/17 08:38:05 msaitoh Exp $ */
 
 /**
 
@@ -6282,7 +6282,6 @@ ixgbe_allocate_msix(struct adapter *adap
 	adapter->osdep.intrs[vector], IPL_NET, ixgbe_msix_link, adapter,
 	intr_xname);
 	if (adapter->osdep.ihs[vector] == NULL) {
-		adapter->res = NULL;
 		aprint_error_dev(dev, "Failed to register LINK handler\n");
 		error = ENXIO;
 		goto err_out;

Index: src/sys/dev/pci/ixgbe/ixgbe.h
diff -u src/sys/dev/pci/ixgbe/ixgbe.h:1.42 src/sys/dev/pci/ixgbe/ixgbe.h:1.43
--- src/sys/dev/pci/ixgbe/ixgbe.h:1.42	Tue Apr 17 05:23:58 2018
+++ src/sys/dev/pci/ixgbe/ixgbe.h	Tue Apr 17 08:38:05 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.h,v 1.42 2018/04/17 05:23:58 knakahara Exp $ */
+/* $NetBSD: ixgbe.h,v 1.43 2018/04/17 08:38:05 msaitoh Exp $ */
 
 /**
   SPDX-License-Identifier: BSD-3-Clause
@@ -322,11 +322,9 @@ struct ixgbe_mc_addr {
 struct ix_queue {
 	struct adapter   *adapter;
 	u32  msix;   /* This queue's MSI-X vector */
-	u32  eims;   /* This queue's EIMS bit */
 	u32  eitr_setting;
 	u32  me;
 	struct resource  *res;
-	void *tag;
 	int  busy;
 	struct tx_ring   *txr;
 	struct rx_ring   *rxr;
@@ -365,9 +363,10 @@ struct tx_ring {
 	u16			next_avail_desc;
 	u16			next_to_clean;
 	u16			num_desc;
-	u32			txd_cmd;
 	ixgbe_dma_tag_t		*txtag;
-	char			mtx_name[16];
+#if 0
+	char			mtx_name[16]; /* NetBSD has no mutex name */
+#endif
 	pcq_t			*txr_interq;
 	struct work		wq_cookie;
 	void			*txr_si;
@@ -415,7 +414,9 @@ struct rx_ring {
 u16 			next_to_check;
 	u16			num_desc;
 	u16			mbuf_sz;
-	char			mtx_name[16];
+#if 0
+	char			mtx_name[16]; /* NetBSD has no mutex name */
+#endif
 	struct ixgbe_rx_buf	*rx_buffers;
 	ixgbe_dma_tag_t		*ptag;
 
@@ -461,17 +462,10 @@ struct adapter {
 	struct resource		*pci_mem;
 	struct resource		*msix_mem;
 
-	/*
-	 * Interrupt resources: this set is
-	 * either used for legacy, or for Link
-	 * when doing MSI-X
-	 */
-	void			*tag;
-	struct resource 	*res;
+	/* NetBSD: Interrupt resources are in osdep */
 
 	struct ifmedia		media;
 	callout_t		timer;
-	int			link_rid;
 	int			if_flags;
 
 	kmutex_t		core_mtx;

Index: src/sys/dev/pci/ixgbe/ixv.c
diff -u src/sys/dev/pci/ixgbe/ixv.c:1.93 src/sys/dev/pci/ixgbe/ixv.c:1.94
--- src/sys/dev/pci/ixgbe/ixv.c:1.93	Thu Apr 12 08:03:55 2018
+++ 

CVS commit: [netbsd-8] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:37:23 UTC 2018

Modified Files:
src/doc [netbsd-8]: CHANGES-8.0

Log Message:
Tickets #768 - #772


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.184 -r1.1.2.185 src/doc/CHANGES-8.0

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

Modified files:

Index: src/doc/CHANGES-8.0
diff -u src/doc/CHANGES-8.0:1.1.2.184 src/doc/CHANGES-8.0:1.1.2.185
--- src/doc/CHANGES-8.0:1.1.2.184	Mon Apr 16 14:36:29 2018
+++ src/doc/CHANGES-8.0	Tue Apr 17 08:37:22 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-8.0,v 1.1.2.184 2018/04/16 14:36:29 martin Exp $
+# $NetBSD: CHANGES-8.0,v 1.1.2.185 2018/04/17 08:37:22 martin Exp $
 
 A complete list of changes from the initial NetBSD 8.0 branch on 2017-06-04
 until the 8.0 release:
@@ -12984,3 +12984,32 @@ sys/arch/x86/pci/if_vmx.c			1.23,1.24
 	bytes interface statistics.
 	[nonaka, ticket #767]
 
+external/gpl2/gmake/dist/glob/glob.c		1.4
+
+	Fix build of gmake (in tools) on new GLIBC systems.
+	[kamil, ticket #768]
+
+sys/dev/pci/ixgbe/ixgbe.c			1.147
+sys/dev/pci/ixgbe/ixgbe.h			1.42
+
+	Fix panic when changing the work queue size while there is traffic.
+	[knakahara, ticket #769]
+
+sys/kern/uipc_mbuf.c1.190
+
+	m_pkthdr_remove(): if the mbuf is shared leave M_PKTHDR
+	in place.
+	[maxv, ticket #770]
+
+sys/kern/subr_pserialize.c			1.11
+
+	Function pserialize_perform() usually succeeds after two cross calls
+	so defer kpause() to iterations three and above.
+	[hannken, ticket #771]
+
+sys/miscfs/procfs/procfs_subr.c			1.112
+
+	Change procfs_revoke_vnodes() to use vrecycle()/vgone() instead
+	of VOP_REVOKE().
+	[hannken, ticket #772]
+



CVS commit: [netbsd-8] src/sys/miscfs/procfs

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:36:11 UTC 2018

Modified Files:
src/sys/miscfs/procfs [netbsd-8]: procfs_subr.c

Log Message:
Pull up following revision(s) (requested by hannken in ticket #772):

sys/miscfs/procfs/procfs_subr.c: revision 1.112

Change procfs_revoke_vnodes() to use vrecycle()/vgone() instead
of VOP_REVOKE().

Gets rid of a bunch of suspensions on /proc as vrecycle() will
succeed most time and we suspend at most once per call.


To generate a diff of this commit:
cvs rdiff -u -r1.108.6.1 -r1.108.6.2 src/sys/miscfs/procfs/procfs_subr.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/miscfs/procfs/procfs_subr.c
diff -u src/sys/miscfs/procfs/procfs_subr.c:1.108.6.1 src/sys/miscfs/procfs/procfs_subr.c:1.108.6.2
--- src/sys/miscfs/procfs/procfs_subr.c:1.108.6.1	Thu Apr 12 13:42:48 2018
+++ src/sys/miscfs/procfs/procfs_subr.c	Tue Apr 17 08:36:11 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: procfs_subr.c,v 1.108.6.1 2018/04/12 13:42:48 martin Exp $	*/
+/*	$NetBSD: procfs_subr.c,v 1.108.6.2 2018/04/17 08:36:11 martin Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -102,13 +102,14 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: procfs_subr.c,v 1.108.6.1 2018/04/12 13:42:48 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: procfs_subr.c,v 1.108.6.2 2018/04/17 08:36:11 martin Exp $");
 
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -363,6 +364,8 @@ procfs_revoke_selector(void *arg, struct
 void
 procfs_revoke_vnodes(struct proc *p, void *arg)
 {
+	int error;
+	bool suspended;
 	struct vnode *vp;
 	struct vnode_iterator *marker;
 	struct mount *mp = (struct mount *)arg;
@@ -370,14 +373,29 @@ procfs_revoke_vnodes(struct proc *p, voi
 	if (!(p->p_flag & PK_SUGID))
 		return;
 
+	suspended = false;
 	vfs_vnode_iterator_init(mp, );
 
 	while ((vp = vfs_vnode_iterator_next(marker,
 	procfs_revoke_selector, p)) != NULL) {
-		VOP_REVOKE(vp, REVOKEALL);
-		vrele(vp);
+		if (vrecycle(vp))
+			continue;
+		/* Vnode is busy, we have to suspend the mount for vgone(). */
+		while (! suspended) {
+			error = vfs_suspend(mp, 0);
+			if (error == 0) {
+suspended = true;
+			} else if (error != EINTR && error != ERESTART) {
+KASSERT(error == EOPNOTSUPP);
+break;
+			}
+		}
+		vgone(vp);
 	}
 
+	if (suspended)
+		vfs_resume(mp);
+
 	vfs_vnode_iterator_destroy(marker);
 }
 



CVS commit: [netbsd-8] src/sys/kern

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:34:36 UTC 2018

Modified Files:
src/sys/kern [netbsd-8]: subr_pserialize.c

Log Message:
Pull up following revision(s) (requested by hannken in ticket #771):

sys/kern/subr_pserialize.c: revision 1.11

Function pserialize_perform() usually succeeds after two cross calls
so defer kpause() to iterations three and above.

Speeds up VOP_REVOKE() on /proc/XXX/status by a factor of ~12.

Ok: core@


To generate a diff of this commit:
cvs rdiff -u -r1.8.10.2 -r1.8.10.3 src/sys/kern/subr_pserialize.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/kern/subr_pserialize.c
diff -u src/sys/kern/subr_pserialize.c:1.8.10.2 src/sys/kern/subr_pserialize.c:1.8.10.3
--- src/sys/kern/subr_pserialize.c:1.8.10.2	Mon Jan 22 12:30:20 2018
+++ src/sys/kern/subr_pserialize.c	Tue Apr 17 08:34:36 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_pserialize.c,v 1.8.10.2 2018/01/22 12:30:20 martin Exp $	*/
+/*	$NetBSD: subr_pserialize.c,v 1.8.10.3 2018/04/17 08:34:36 martin Exp $	*/
 
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: subr_pserialize.c,v 1.8.10.2 2018/01/22 12:30:20 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_pserialize.c,v 1.8.10.3 2018/04/17 08:34:36 martin Exp $");
 
 #include 
 
@@ -146,6 +146,7 @@ pserialize_destroy(pserialize_t psz)
 void
 pserialize_perform(pserialize_t psz)
 {
+	int n;
 	uint64_t xc;
 
 	KASSERT(!cpu_intr_p());
@@ -176,6 +177,7 @@ pserialize_perform(pserialize_t psz)
 	TAILQ_INSERT_TAIL(_queue0, psz, psz_chain);
 	psz_work_todo++;
 
+	n = 0;
 	do {
 		mutex_spin_exit(_lock);
 
@@ -183,9 +185,10 @@ pserialize_perform(pserialize_t psz)
 		 * Force some context switch activity on every CPU, as
 		 * the system may not be busy.  Pause to not flood.
 		 */
+		if (n++ > 1)
+			kpause("psrlz", false, 1, NULL);
 		xc = xc_broadcast(XC_HIGHPRI, (xcfunc_t)nullop, NULL, NULL);
 		xc_wait(xc);
-		kpause("psrlz", false, 1, NULL);
 
 		mutex_spin_enter(_lock);
 	} while (!kcpuset_iszero(psz->psz_target));



CVS commit: [netbsd-7-0] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:30:43 UTC 2018

Modified Files:
src/doc [netbsd-7-0]: CHANGES-7.0.3

Log Message:
Ticket #1598


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.100 -r1.1.2.101 src/doc/CHANGES-7.0.3

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

Modified files:

Index: src/doc/CHANGES-7.0.3
diff -u src/doc/CHANGES-7.0.3:1.1.2.100 src/doc/CHANGES-7.0.3:1.1.2.101
--- src/doc/CHANGES-7.0.3:1.1.2.100	Mon Apr  9 13:32:42 2018
+++ src/doc/CHANGES-7.0.3	Tue Apr 17 08:30:43 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-7.0.3,v 1.1.2.100 2018/04/09 13:32:42 martin Exp $
+# $NetBSD: CHANGES-7.0.3,v 1.1.2.101 2018/04/17 08:30:43 martin Exp $
 
 A complete list of changes from the NetBSD 7.0.2 release to the NetBSD 7.0.3
 release:
@@ -5401,3 +5401,9 @@ sys/arch/amiga/amiga/cc.c			1.27
 	Fix a spl(9) leak.
 	[msaitoh, ticket #1597]
 
+sys/kern/uipc_mbuf.c1.190
+
+	m_pkthdr_remove(): if the mbuf is shared leave M_PKTHDR
+	in place.
+	[maxv, ticket #1598]
+



CVS commit: [netbsd-7-0] src/sys/kern

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:30:08 UTC 2018

Modified Files:
src/sys/kern [netbsd-7-0]: uipc_mbuf.c

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

sys/kern/uipc_mbuf.c: revision 1.190

If the mbuf is shared leave M_PKTHDR in place. Given where this function
is called from that's not supposed to happen, but I'm growing unconfident
about our mbuf code.


To generate a diff of this commit:
cvs rdiff -u -r1.158.4.1.2.1 -r1.158.4.1.2.2 src/sys/kern/uipc_mbuf.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/kern/uipc_mbuf.c
diff -u src/sys/kern/uipc_mbuf.c:1.158.4.1.2.1 src/sys/kern/uipc_mbuf.c:1.158.4.1.2.2
--- src/sys/kern/uipc_mbuf.c:1.158.4.1.2.1	Thu Apr  5 11:53:02 2018
+++ src/sys/kern/uipc_mbuf.c	Tue Apr 17 08:30:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_mbuf.c,v 1.158.4.1.2.1 2018/04/05 11:53:02 martin Exp $	*/
+/*	$NetBSD: uipc_mbuf.c,v 1.158.4.1.2.2 2018/04/17 08:30:08 martin Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.158.4.1.2.1 2018/04/05 11:53:02 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.158.4.1.2.2 2018/04/17 08:30:08 martin Exp $");
 
 #include "opt_mbuftrace.h"
 #include "opt_nmbclusters.h"
@@ -458,6 +458,11 @@ m_pkthdr_remove(struct mbuf *m)
 {
 	KASSERT(m->m_flags & M_PKTHDR);
 
+	if (M_READONLY(m)) {
+		/* Nothing we can do. */
+		return;
+	}
+
 	m_tag_delete_chain(m, NULL);
 	m->m_flags &= ~M_PKTHDR;
 	memset(>m_pkthdr, 0, sizeof(m->m_pkthdr));



CVS commit: [netbsd-7-1] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:29:23 UTC 2018

Modified Files:
src/doc [netbsd-7-1]: CHANGES-7.1.3

Log Message:
Ticket #1598


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.7 -r1.1.2.8 src/doc/CHANGES-7.1.3

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

Modified files:

Index: src/doc/CHANGES-7.1.3
diff -u src/doc/CHANGES-7.1.3:1.1.2.7 src/doc/CHANGES-7.1.3:1.1.2.8
--- src/doc/CHANGES-7.1.3:1.1.2.7	Mon Apr  9 13:30:08 2018
+++ src/doc/CHANGES-7.1.3	Tue Apr 17 08:29:23 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-7.1.3,v 1.1.2.7 2018/04/09 13:30:08 martin Exp $
+# $NetBSD: CHANGES-7.1.3,v 1.1.2.8 2018/04/17 08:29:23 martin Exp $
 
 A complete list of changes from the NetBSD 7.1.2 release to the NetBSD 7.1.3
 release:
@@ -93,3 +93,9 @@ sys/arch/amiga/amiga/cc.c			1.27
 	Fix a spl(9) leak.
 	[msaitoh, ticket #1597]
 
+sys/kern/uipc_mbuf.c1.190
+
+	m_pkthdr_remove(): if the mbuf is shared leave M_PKTHDR
+	in place.
+	[maxv, ticket #1598]
+



CVS commit: [netbsd-7-1] src/sys/kern

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:28:55 UTC 2018

Modified Files:
src/sys/kern [netbsd-7-1]: uipc_mbuf.c

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

sys/kern/uipc_mbuf.c: revision 1.190

If the mbuf is shared leave M_PKTHDR in place. Given where this function
is called from that's not supposed to happen, but I'm growing unconfident
about our mbuf code.


To generate a diff of this commit:
cvs rdiff -u -r1.158.4.1.6.1 -r1.158.4.1.6.2 src/sys/kern/uipc_mbuf.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/kern/uipc_mbuf.c
diff -u src/sys/kern/uipc_mbuf.c:1.158.4.1.6.1 src/sys/kern/uipc_mbuf.c:1.158.4.1.6.2
--- src/sys/kern/uipc_mbuf.c:1.158.4.1.6.1	Thu Apr  5 11:50:17 2018
+++ src/sys/kern/uipc_mbuf.c	Tue Apr 17 08:28:55 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_mbuf.c,v 1.158.4.1.6.1 2018/04/05 11:50:17 martin Exp $	*/
+/*	$NetBSD: uipc_mbuf.c,v 1.158.4.1.6.2 2018/04/17 08:28:55 martin Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.158.4.1.6.1 2018/04/05 11:50:17 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.158.4.1.6.2 2018/04/17 08:28:55 martin Exp $");
 
 #include "opt_mbuftrace.h"
 #include "opt_nmbclusters.h"
@@ -458,6 +458,11 @@ m_pkthdr_remove(struct mbuf *m)
 {
 	KASSERT(m->m_flags & M_PKTHDR);
 
+	if (M_READONLY(m)) {
+		/* Nothing we can do. */
+		return;
+	}
+
 	m_tag_delete_chain(m, NULL);
 	m->m_flags &= ~M_PKTHDR;
 	memset(>m_pkthdr, 0, sizeof(m->m_pkthdr));



CVS commit: [netbsd-7] src/doc

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:27:46 UTC 2018

Modified Files:
src/doc [netbsd-7]: CHANGES-7.2

Log Message:
Ticket #1598


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.84 -r1.1.2.85 src/doc/CHANGES-7.2

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

Modified files:

Index: src/doc/CHANGES-7.2
diff -u src/doc/CHANGES-7.2:1.1.2.84 src/doc/CHANGES-7.2:1.1.2.85
--- src/doc/CHANGES-7.2:1.1.2.84	Mon Apr  9 13:28:56 2018
+++ src/doc/CHANGES-7.2	Tue Apr 17 08:27:46 2018
@@ -1,4 +1,4 @@
-# $NetBSD: CHANGES-7.2,v 1.1.2.84 2018/04/09 13:28:56 martin Exp $
+# $NetBSD: CHANGES-7.2,v 1.1.2.85 2018/04/17 08:27:46 martin Exp $
 
 A complete list of changes from the NetBSD 7.1 release to the NetBSD 7.2
 release:
@@ -5433,3 +5433,9 @@ sys/arch/amiga/amiga/cc.c			1.27
 	Fix a spl(9) leak.
 	[msaitoh, ticket #1597]
 
+sys/kern/uipc_mbuf.c1.190
+
+	m_pkthdr_remove(): if the mbuf is shared leave M_PKTHDR
+	in place.
+	[maxv, ticket #1598]
+



CVS commit: [netbsd-7] src/sys/kern

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:27:18 UTC 2018

Modified Files:
src/sys/kern [netbsd-7]: uipc_mbuf.c

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

sys/kern/uipc_mbuf.c: revision 1.190

If the mbuf is shared leave M_PKTHDR in place. Given where this function
is called from that's not supposed to happen, but I'm growing unconfident
about our mbuf code.


To generate a diff of this commit:
cvs rdiff -u -r1.158.4.2 -r1.158.4.3 src/sys/kern/uipc_mbuf.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/kern/uipc_mbuf.c
diff -u src/sys/kern/uipc_mbuf.c:1.158.4.2 src/sys/kern/uipc_mbuf.c:1.158.4.3
--- src/sys/kern/uipc_mbuf.c:1.158.4.2	Thu Apr  5 11:48:13 2018
+++ src/sys/kern/uipc_mbuf.c	Tue Apr 17 08:27:18 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_mbuf.c,v 1.158.4.2 2018/04/05 11:48:13 martin Exp $	*/
+/*	$NetBSD: uipc_mbuf.c,v 1.158.4.3 2018/04/17 08:27:18 martin Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.158.4.2 2018/04/05 11:48:13 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.158.4.3 2018/04/17 08:27:18 martin Exp $");
 
 #include "opt_mbuftrace.h"
 #include "opt_nmbclusters.h"
@@ -458,6 +458,11 @@ m_pkthdr_remove(struct mbuf *m)
 {
 	KASSERT(m->m_flags & M_PKTHDR);
 
+	if (M_READONLY(m)) {
+		/* Nothing we can do. */
+		return;
+	}
+
 	m_tag_delete_chain(m, NULL);
 	m->m_flags &= ~M_PKTHDR;
 	memset(>m_pkthdr, 0, sizeof(m->m_pkthdr));



CVS commit: [netbsd-8] src/sys/kern

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:24:02 UTC 2018

Modified Files:
src/sys/kern [netbsd-8]: uipc_mbuf.c

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

sys/kern/uipc_mbuf.c: revision 1.190

If the mbuf is shared leave M_PKTHDR in place. Given where this function
is called from that's not supposed to happen, but I'm growing unconfident
about our mbuf code.


To generate a diff of this commit:
cvs rdiff -u -r1.172.6.2 -r1.172.6.3 src/sys/kern/uipc_mbuf.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/kern/uipc_mbuf.c
diff -u src/sys/kern/uipc_mbuf.c:1.172.6.2 src/sys/kern/uipc_mbuf.c:1.172.6.3
--- src/sys/kern/uipc_mbuf.c:1.172.6.2	Thu Apr  5 14:33:41 2018
+++ src/sys/kern/uipc_mbuf.c	Tue Apr 17 08:24:01 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_mbuf.c,v 1.172.6.2 2018/04/05 14:33:41 martin Exp $	*/
+/*	$NetBSD: uipc_mbuf.c,v 1.172.6.3 2018/04/17 08:24:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.172.6.2 2018/04/05 14:33:41 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.172.6.3 2018/04/17 08:24:01 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_mbuftrace.h"
@@ -460,6 +460,11 @@ m_pkthdr_remove(struct mbuf *m)
 {
 	KASSERT(m->m_flags & M_PKTHDR);
 
+	if (M_READONLY(m)) {
+		/* Nothing we can do. */
+		return;
+	}
+
 	m_tag_delete_chain(m, NULL);
 	m->m_flags &= ~M_PKTHDR;
 	memset(>m_pkthdr, 0, sizeof(m->m_pkthdr));



CVS commit: [netbsd-8] src/sys/dev/pci/ixgbe

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:20:06 UTC 2018

Modified Files:
src/sys/dev/pci/ixgbe [netbsd-8]: ixgbe.c ixgbe.h

Log Message:
Pull up following revision(s) (requested by knakahara in ticket #769):

sys/dev/pci/ixgbe/ixgbe.c: revision 1.147
sys/dev/pci/ixgbe/ixgbe.h: revision 1.42

Fix panic when "sysctl -w hw.ixg0.txrx_workqueue=[01]" while there is traffic.
The operation is not supported, however causing panic is problem.


To generate a diff of this commit:
cvs rdiff -u -r1.88.2.17 -r1.88.2.18 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.24.6.10 -r1.24.6.11 src/sys/dev/pci/ixgbe/ixgbe.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/dev/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.88.2.17 src/sys/dev/pci/ixgbe/ixgbe.c:1.88.2.18
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.88.2.17	Sat Apr 14 10:25:11 2018
+++ src/sys/dev/pci/ixgbe/ixgbe.c	Tue Apr 17 08:20:06 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.88.2.17 2018/04/14 10:25:11 martin Exp $ */
+/* $NetBSD: ixgbe.c,v 1.88.2.18 2018/04/17 08:20:06 martin Exp $ */
 
 /**
 
@@ -2487,7 +2487,7 @@ static inline void
 ixgbe_sched_handle_que(struct adapter *adapter, struct ix_queue *que)
 {
 
-	if (adapter->txrx_use_workqueue) {
+	if(que->txrx_use_workqueue) {
 		/*
 		 * adapter->que_wq is bound to each CPU instead of
 		 * each NIC queue to reduce workqueue kthread. As we
@@ -2531,6 +2531,12 @@ ixgbe_msix_que(void *arg)
 	ixgbe_disable_queue(adapter, que->msix);
 	++que->irqs.ev_count;
 
+	/*
+	 * Don't change "que->txrx_use_workqueue" from this point to avoid
+	 * flip-flopping softint/workqueue mode in one deferred processing.
+	 */
+	que->txrx_use_workqueue = adapter->txrx_use_workqueue;
+
 #ifdef __NetBSD__
 	/* Don't run ixgbe_rxeof in interrupt context */
 	more = true;
@@ -3174,6 +3180,16 @@ ixgbe_add_device_sysctls(struct adapter 
 	CTL_EOL) != 0)
 		aprint_error_dev(dev, "could not create sysctl\n");
 
+	/*
+	 * If each "que->txrx_use_workqueue" is changed in sysctl handler,
+	 * it causesflip-flopping softint/workqueue mode in one deferred
+	 * processing. Therefore, preempt_disable()/preempt_enable() are
+	 * required in ixgbe_sched_handle_que() to avoid
+	 * KASSERT(ixgbe_sched_handle_que()) in softint_schedule().
+	 * I think changing "que->txrx_use_workqueue" in interrupt handler
+	 * is lighter than doing preempt_disable()/preempt_enable() in every
+	 * ixgbe_sched_handle_que().
+	 */
 	adapter->txrx_use_workqueue = ixgbe_txrx_workqueue;
 	if (sysctl_createv(log, 0, , , CTLFLAG_READWRITE,
 	CTLTYPE_BOOL, "txrx_workqueue", SYSCTL_DESCR("Use workqueue for packet processing"),
@@ -4798,6 +4814,11 @@ ixgbe_legacy_irq(void *arg)
 	}
 
 	if ((ifp->if_flags & IFF_RUNNING) != 0) {
+		/*
+		 * The same as ixgbe_msix_que() about "que->txrx_use_workqueue".
+		 */
+		que->txrx_use_workqueue = adapter->txrx_use_workqueue;
+
 #ifdef __NetBSD__
 		/* Don't run ixgbe_rxeof in interrupt context */
 		more = true;

Index: src/sys/dev/pci/ixgbe/ixgbe.h
diff -u src/sys/dev/pci/ixgbe/ixgbe.h:1.24.6.10 src/sys/dev/pci/ixgbe/ixgbe.h:1.24.6.11
--- src/sys/dev/pci/ixgbe/ixgbe.h:1.24.6.10	Sat Apr 14 10:25:12 2018
+++ src/sys/dev/pci/ixgbe/ixgbe.h	Tue Apr 17 08:20:06 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.h,v 1.24.6.10 2018/04/14 10:25:12 martin Exp $ */
+/* $NetBSD: ixgbe.h,v 1.24.6.11 2018/04/17 08:20:06 martin Exp $ */
 
 /**
   SPDX-License-Identifier: BSD-3-Clause
@@ -346,6 +346,7 @@ struct ix_queue {
 	 * > 0 : this queue is disabled
 	 *   the value is ixgbe_disable_queue() called count
 	 */
+	bool txrx_use_workqueue;
 };
 
 /*



CVS commit: [pgoyette-compat] src/sys/compat/common

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 08:07:13 UTC 2018

Added Files:
src/sys/compat/common [pgoyette-compat]: compat_09_mod.c
compat_10_mod.c compat_43_mod.c

Log Message:
Actually commit these three files to provide module interfaces


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1.2.1 src/sys/compat/common/compat_09_mod.c \
src/sys/compat/common/compat_10_mod.c \
src/sys/compat/common/compat_43_mod.c

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

Added files:

Index: src/sys/compat/common/compat_09_mod.c
diff -u /dev/null src/sys/compat/common/compat_09_mod.c:1.1.2.1
--- /dev/null	Tue Apr 17 08:07:13 2018
+++ src/sys/compat/common/compat_09_mod.c	Tue Apr 17 08:07:13 2018
@@ -0,0 +1,94 @@
+/*	$NetBSD: compat_09_mod.c,v 1.1.2.1 2018/04/17 08:07:13 pgoyette Exp $	*/
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software developed for The NetBSD Foundation
+ * by Paul Goyette
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Linkage for the compat module: spaghetti.
+ */
+
+#include 
+__KERNEL_RCSID(0, "$NetBSD: compat_09_mod.c,v 1.1.2.1 2018/04/17 08:07:13 pgoyette Exp $");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+
+static int saved_pgid_mask;
+
+int
+compat_09_init(void)
+{
+
+	kern_info_09_init();
+	saved_pgid_mask = kern_sig_43_pgid_mask;
+	kern_sig_43_pgid_mask = 0x;
+	return 0;
+}
+
+int
+compat_09_fini(void)
+{
+
+	kern_info_09_fini();
+	kern_sig_43_pgid_mask = saved_pgid_mask;
+	return 0;
+}
+
+#ifdef _MODULE
+
+#define REQD_09_1	"compat_80,compat_70,compat_60,compat_50,"
+#define REQD_09_2	"compat_40,compat_30,compat_20,compat_16,"
+#define REQD_09_3	"compat_14,compat_13,compat_12,compat_10,"
+#define REQD_09_4	"compat_util,compat_sysctl_09_43"
+
+MODULE(MODULE_CLASS_EXEC, compat_09, REQD_09_1 REQD_09_2 REQD_09_3 REQD_09_4);
+
+static int
+compat_09_modcmd(modcmd_t cmd, void *arg)
+{
+
+	switch (cmd) {
+	case MODULE_CMD_INIT:
+		return compat_09_init();
+	case MODULE_CMD_FINI:
+		return compat_09_init();
+	default:
+		return ENOTTY;
+	}
+}
+#endif
Index: src/sys/compat/common/compat_10_mod.c
diff -u /dev/null src/sys/compat/common/compat_10_mod.c:1.1.2.1
--- /dev/null	Tue Apr 17 08:07:13 2018
+++ src/sys/compat/common/compat_10_mod.c	Tue Apr 17 08:07:13 2018
@@ -0,0 +1,86 @@
+/*	$NetBSD: compat_10_mod.c,v 1.1.2.1 2018/04/17 08:07:13 pgoyette Exp $	*/
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software developed for The NetBSD Foundation
+ * by Paul Goyette
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES 

CVS commit: [netbsd-8] src/external/gpl2/gmake/dist/glob

2018-04-17 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 17 08:04:34 UTC 2018

Modified Files:
src/external/gpl2/gmake/dist/glob [netbsd-8]: glob.c

Log Message:
Pull up following revision(s) (requested by kamil in ticket #768):

external/gpl2/gmake/dist/glob/glob.c: revision 1.4

According to:
https://sourceforge.net/p/predef/wiki/Libraries/

The macro used for old glibc is __GNU_LIBRARY__ and the new one is
__GLIBC__.

Try to fix linux compilation by detecting both.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.8.1 src/external/gpl2/gmake/dist/glob/glob.c

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

Modified files:

Index: src/external/gpl2/gmake/dist/glob/glob.c
diff -u src/external/gpl2/gmake/dist/glob/glob.c:1.1.1.1 src/external/gpl2/gmake/dist/glob/glob.c:1.1.1.1.8.1
--- src/external/gpl2/gmake/dist/glob/glob.c:1.1.1.1	Mon Aug 18 06:47:54 2014
+++ src/external/gpl2/gmake/dist/glob/glob.c	Tue Apr 17 08:04:34 2018
@@ -207,7 +207,7 @@ my_realloc (p, n)
 #endif /* __GNU_LIBRARY__ */
 
 
-#if !defined __alloca && !defined __GNU_LIBRARY__
+#if !defined __alloca && !(defined __GNU_LIBRARY__ || defined __GLIBC__)
 
 # ifdef	__GNUC__
 #  undef alloca



CVS commit: [pgoyette-compat] src

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 08:02:35 UTC 2018

Modified Files:
src/distrib/sets/lists/modules [pgoyette-compat]: mi
src/sys/modules [pgoyette-compat]: Makefile
Added Files:
src/sys/modules/compat_sysctl_09_43 [pgoyette-compat]: Makefile

Log Message:
Actually create the new compat_sysctl_09_43 module


To generate a diff of this commit:
cvs rdiff -u -r1.114.2.16 -r1.114.2.17 src/distrib/sets/lists/modules/mi
cvs rdiff -u -r1.202.2.19 -r1.202.2.20 src/sys/modules/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_sysctl_09_43/Makefile

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

Modified files:

Index: src/distrib/sets/lists/modules/mi
diff -u src/distrib/sets/lists/modules/mi:1.114.2.16 src/distrib/sets/lists/modules/mi:1.114.2.17
--- src/distrib/sets/lists/modules/mi:1.114.2.16	Tue Apr 17 07:24:55 2018
+++ src/distrib/sets/lists/modules/mi	Tue Apr 17 08:02:35 2018
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.114.2.16 2018/04/17 07:24:55 pgoyette Exp $
+# $NetBSD: mi,v 1.114.2.17 2018/04/17 08:02:35 pgoyette Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -71,7 +71,7 @@
 ./@MODULEDIR@/compat_util			base-kernel-modules	kmod
 ./@MODULEDIR@/compat_util/compat_util.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/compat_sysctl_09_43		base-kernel-modules	kmod
-./@MODULEDIR@/compat_sysctl_09_43/compat_sysctl_09._43kmod	base-kernel-modules	kmod
+./@MODULEDIR@/compat_sysctl_09_43/compat_sysctl_09_43.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/compat_09base-kernel-modules	kmod
 ./@MODULEDIR@/compat_09/compat_09.kmod		base-kernel-modules	kmod
 ./@MODULEDIR@/compat_10base-kernel-modules	kmod

Index: src/sys/modules/Makefile
diff -u src/sys/modules/Makefile:1.202.2.19 src/sys/modules/Makefile:1.202.2.20
--- src/sys/modules/Makefile:1.202.2.19	Tue Apr 17 00:02:58 2018
+++ src/sys/modules/Makefile	Tue Apr 17 08:02:35 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.202.2.19 2018/04/17 00:02:58 pgoyette Exp $
+#	$NetBSD: Makefile,v 1.202.2.20 2018/04/17 08:02:35 pgoyette Exp $
 
 .include 
 
@@ -7,7 +7,7 @@
 # Modules for compatability with earlier versions of NetBSD
 
 SUBDIR+=	compat  compat_util
-SUBDIR+=	compat_43
+SUBDIR+=	compat_43   compat_sysctl_09_43
 SUBDIR+=	compat_09   compat_10   compat_12   compat_13   compat_14
 SUBDIR+=	compat_16   compat_20   compat_30   compat_40   compat_50
 SUBDIR+=	compat_60   compat_70   compat_80 

Added files:

Index: src/sys/modules/compat_sysctl_09_43/Makefile
diff -u /dev/null src/sys/modules/compat_sysctl_09_43/Makefile:1.1.2.1
--- /dev/null	Tue Apr 17 08:02:35 2018
+++ src/sys/modules/compat_sysctl_09_43/Makefile	Tue Apr 17 08:02:35 2018
@@ -0,0 +1,13 @@
+#	$NetBSD: Makefile,v 1.1.2.1 2018/04/17 08:02:35 pgoyette Exp $
+
+.include "../Makefile.inc"
+
+.PATH:	${S}/compat/common
+
+KMOD=	compat_sysctl_09_43
+
+CPPFLAGS+=	-DCOMPAT_09 -DCOMPAT_43
+
+SRCS+=	compat_sysctl_09_43.c
+
+.include 



CVS commit: src/sys/kern

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 07:58:31 UTC 2018

Modified Files:
src/sys/kern: uipc_mbuf.c

Log Message:
change the comment


To generate a diff of this commit:
cvs rdiff -u -r1.190 -r1.191 src/sys/kern/uipc_mbuf.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/kern/uipc_mbuf.c
diff -u src/sys/kern/uipc_mbuf.c:1.190 src/sys/kern/uipc_mbuf.c:1.191
--- src/sys/kern/uipc_mbuf.c:1.190	Tue Apr 17 07:41:34 2018
+++ src/sys/kern/uipc_mbuf.c	Tue Apr 17 07:58:31 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_mbuf.c,v 1.190 2018/04/17 07:41:34 maxv Exp $	*/
+/*	$NetBSD: uipc_mbuf.c,v 1.191 2018/04/17 07:58:31 maxv Exp $	*/
 
 /*
  * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.190 2018/04/17 07:41:34 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.191 2018/04/17 07:58:31 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_mbuftrace.h"
@@ -1913,7 +1913,11 @@ m_verify_packet(struct mbuf *m)
 		if (__predict_false(n->m_type == MT_FREE)) {
 			panic("%s: mbuf already freed (n = %p)", __func__, n);
 		}
-#if 0	/* Causing PR/53189 */
+#if 0
+		/*
+		 * This ought to be a rule of the mbuf API. Unfortunately,
+		 * many places don't respect that rule.
+		 */
 		if (__predict_false((n != m) && (n->m_flags & M_PKTHDR) != 0)) {
 			panic("%s: M_PKTHDR set on secondary mbuf", __func__);
 		}



CVS commit: src/sys/kern

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 07:41:34 UTC 2018

Modified Files:
src/sys/kern: uipc_mbuf.c

Log Message:
If the mbuf is shared leave M_PKTHDR in place. Given where this function
is called from that's not supposed to happen, but I'm growing unconfident
about our mbuf code.


To generate a diff of this commit:
cvs rdiff -u -r1.189 -r1.190 src/sys/kern/uipc_mbuf.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/kern/uipc_mbuf.c
diff -u src/sys/kern/uipc_mbuf.c:1.189 src/sys/kern/uipc_mbuf.c:1.190
--- src/sys/kern/uipc_mbuf.c:1.189	Mon Apr 16 19:19:51 2018
+++ src/sys/kern/uipc_mbuf.c	Tue Apr 17 07:41:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_mbuf.c,v 1.189 2018/04/16 19:19:51 maxv Exp $	*/
+/*	$NetBSD: uipc_mbuf.c,v 1.190 2018/04/17 07:41:34 maxv Exp $	*/
 
 /*
  * Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.189 2018/04/16 19:19:51 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_mbuf.c,v 1.190 2018/04/17 07:41:34 maxv Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_mbuftrace.h"
@@ -460,6 +460,11 @@ m_pkthdr_remove(struct mbuf *m)
 {
 	KASSERT(m->m_flags & M_PKTHDR);
 
+	if (M_READONLY(m)) {
+		/* Nothing we can do. */
+		return;
+	}
+
 	m_tag_delete_chain(m, NULL);
 	m->m_flags &= ~M_PKTHDR;
 	memset(>m_pkthdr, 0, sizeof(m->m_pkthdr));



CVS commit: [pgoyette-compat] src

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 07:24:55 UTC 2018

Modified Files:
src/distrib/sets/lists/modules [pgoyette-compat]: mi
src/sys/compat/common [pgoyette-compat]: Makefile.sysio compat_mod.c
compat_mod.h files.common kern_sig_16.c kern_sig_43.c
vfs_syscalls_43.c
src/sys/kern [pgoyette-compat]: compat_stub.c
src/sys/sys [pgoyette-compat]: compat_stub.h
Added Files:
src/sys/compat/common [pgoyette-compat]: compat_sysctl_09_43.c

Log Message:
Finish separating the compat_09 and compat_43 stuff


To generate a diff of this commit:
cvs rdiff -u -r1.114.2.15 -r1.114.2.16 src/distrib/sets/lists/modules/mi
cvs rdiff -u -r1.7.18.20 -r1.7.18.21 src/sys/compat/common/Makefile.sysio
cvs rdiff -u -r1.24.14.33 -r1.24.14.34 src/sys/compat/common/compat_mod.c
cvs rdiff -u -r1.1.42.20 -r1.1.42.21 src/sys/compat/common/compat_mod.h
cvs rdiff -u -r0 -r1.1.2.1 src/sys/compat/common/compat_sysctl_09_43.c
cvs rdiff -u -r1.1.2.31 -r1.1.2.32 src/sys/compat/common/files.common
cvs rdiff -u -r1.2.38.1 -r1.2.38.2 src/sys/compat/common/kern_sig_16.c
cvs rdiff -u -r1.34.56.1 -r1.34.56.2 src/sys/compat/common/kern_sig_43.c
cvs rdiff -u -r1.62.2.2 -r1.62.2.3 src/sys/compat/common/vfs_syscalls_43.c
cvs rdiff -u -r1.1.2.14 -r1.1.2.15 src/sys/kern/compat_stub.c
cvs rdiff -u -r1.1.2.14 -r1.1.2.15 src/sys/sys/compat_stub.h

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

Modified files:

Index: src/distrib/sets/lists/modules/mi
diff -u src/distrib/sets/lists/modules/mi:1.114.2.15 src/distrib/sets/lists/modules/mi:1.114.2.16
--- src/distrib/sets/lists/modules/mi:1.114.2.15	Tue Apr 17 00:02:58 2018
+++ src/distrib/sets/lists/modules/mi	Tue Apr 17 07:24:55 2018
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.114.2.15 2018/04/17 00:02:58 pgoyette Exp $
+# $NetBSD: mi,v 1.114.2.16 2018/04/17 07:24:55 pgoyette Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -70,6 +70,8 @@
 ./@MODULEDIR@/compat/compat.kmod		base-kernel-modules	kmod
 ./@MODULEDIR@/compat_util			base-kernel-modules	kmod
 ./@MODULEDIR@/compat_util/compat_util.kmod	base-kernel-modules	kmod
+./@MODULEDIR@/compat_sysctl_09_43		base-kernel-modules	kmod
+./@MODULEDIR@/compat_sysctl_09_43/compat_sysctl_09._43kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/compat_09base-kernel-modules	kmod
 ./@MODULEDIR@/compat_09/compat_09.kmod		base-kernel-modules	kmod
 ./@MODULEDIR@/compat_10base-kernel-modules	kmod

Index: src/sys/compat/common/Makefile.sysio
diff -u src/sys/compat/common/Makefile.sysio:1.7.18.20 src/sys/compat/common/Makefile.sysio:1.7.18.21
--- src/sys/compat/common/Makefile.sysio:1.7.18.20	Tue Apr  3 08:29:44 2018
+++ src/sys/compat/common/Makefile.sysio	Tue Apr 17 07:24:54 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.sysio,v 1.7.18.20 2018/04/03 08:29:44 pgoyette Exp $
+#	$NetBSD: Makefile.sysio,v 1.7.18.21 2018/04/17 07:24:54 pgoyette Exp $
 
 # Sources for syscall and ioctl compatibility across the versions.
 
@@ -8,6 +8,7 @@ SRCS+=	kern_exit_43.c kern_info_43.c ker
 
 # Compatibility code for NetBSD 0.9
 SRCS+=	kern_info_09.c
+SRCS+=	compat_sysctl_09_43.c		# for compat_43 or compat_09
 
 # Compatability code for NetBSD 1.0
 SRCS+=	vfs_syscalls_10.c

Index: src/sys/compat/common/compat_mod.c
diff -u src/sys/compat/common/compat_mod.c:1.24.14.33 src/sys/compat/common/compat_mod.c:1.24.14.34
--- src/sys/compat/common/compat_mod.c:1.24.14.33	Tue Apr 17 00:02:58 2018
+++ src/sys/compat/common/compat_mod.c	Tue Apr 17 07:24:55 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat_mod.c,v 1.24.14.33 2018/04/17 00:02:58 pgoyette Exp $	*/
+/*	$NetBSD: compat_mod.c,v 1.24.14.34 2018/04/17 07:24:55 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.24.14.33 2018/04/17 00:02:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.24.14.34 2018/04/17 07:24:55 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -49,15 +49,10 @@ __KERNEL_RCSID(0, "$NetBSD: compat_mod.c
 #include 
 #include 
 #include 
-#include 
 
 #include 
 #include 
 
-#if defined(COMPAT_09) || defined(COMPAT_43)
-static struct sysctllog *compat_clog = NULL;
-#endif
-
 static const char * const compat_includes[] = {
 	"compat_80", "compat_70", "compat_60", "compat_50", "compat_40",
 	"compat_30", "compat_20", "compat_16", "compat_14", "compat_13",
@@ -108,6 +103,9 @@ struct compat_init_fini {
 #ifdef COMPAT_10
 	{ compat_10_init, compat_10_fini },
 #endif
+#if defined(COMPAT_09) || defined(COMPAT_43)
+	{ compat_sysctl_09_43_init, compat_sysctl_09_43_fini },
+#endif
 #ifdef COMPAT_09
 	{ compat_09_init, compat_09_fini },
 #endif
@@ -140,7 +138,6 @@ compat_modcmd(modcmd_t cmd, void *arg)
 			}
 		}
 
-		compat_sysctl_init();
 		return 0;
 
 	case MODULE_CMD_FINI:
@@ -149,7 +146,6 @@ compat_modcmd(modcmd_t 

CVS commit: src/sys/netipsec

2018-04-17 Thread Maxime Villard
Module Name:src
Committed By:   maxv
Date:   Tue Apr 17 06:23:30 UTC 2018

Modified Files:
src/sys/netipsec: ipsec_mbuf.c

Log Message:
Don't assume M_PKTHDR is set only on the first mbuf of the chain. It
should, but it looks like there are several places that can put M_PKTHDR
on secondary mbufs (PR/53189), so drop this assumption right now to
prevent further bugs.

The check is replaced by (m1 != m), which is equivalent to the previous
code: we want to modify m->m_pkthdr.len only when 'm' was not passed in
m_adj().


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/netipsec/ipsec_mbuf.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/netipsec/ipsec_mbuf.c
diff -u src/sys/netipsec/ipsec_mbuf.c:1.22 src/sys/netipsec/ipsec_mbuf.c:1.23
--- src/sys/netipsec/ipsec_mbuf.c:1.22	Sat Mar 10 17:52:50 2018
+++ src/sys/netipsec/ipsec_mbuf.c	Tue Apr 17 06:23:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipsec_mbuf.c,v 1.22 2018/03/10 17:52:50 maxv Exp $	*/
+/*	$NetBSD: ipsec_mbuf.c,v 1.23 2018/04/17 06:23:30 maxv Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.22 2018/03/10 17:52:50 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.23 2018/04/17 06:23:30 maxv Exp $");
 
 /*
  * IPsec-specific mbuf routines.
@@ -400,7 +400,7 @@ m_striphdr(struct mbuf *m, int skip, int
 		/* The header was at the beginning of the mbuf */
 		IPSEC_STATINC(IPSEC_STAT_INPUT_FRONT);
 		m_adj(m1, hlen);
-		if ((m1->m_flags & M_PKTHDR) == 0)
+		if (m1 != m)
 			m->m_pkthdr.len -= hlen;
 	} else if (roff + hlen >= m1->m_len) {
 		struct mbuf *mo;
@@ -425,7 +425,7 @@ m_striphdr(struct mbuf *m, int skip, int
 
 		/* ...and trim the end of the first part of the chain...sick */
 		m_adj(m1, -(m1->m_len - roff));
-		if ((m1->m_flags & M_PKTHDR) == 0)
+		if (m1 != m)
 			m->m_pkthdr.len -= (m1->m_len - roff);
 
 		/* Finally, let's relink */



CVS commit: [pgoyette-compat] src/doc

2018-04-17 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Tue Apr 17 06:20:26 UTC 2018

Modified Files:
src/doc [pgoyette-compat]: COMPAT-branch-notes

Log Message:
More updates to match reality.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.10 -r1.1.2.11 src/doc/COMPAT-branch-notes

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

Modified files:

Index: src/doc/COMPAT-branch-notes
diff -u src/doc/COMPAT-branch-notes:1.1.2.10 src/doc/COMPAT-branch-notes:1.1.2.11
--- src/doc/COMPAT-branch-notes:1.1.2.10	Mon Apr 16 09:53:02 2018
+++ src/doc/COMPAT-branch-notes	Tue Apr 17 06:20:26 2018
@@ -32,6 +32,14 @@ DONE
 module status to userland has been versioned and moved to the
 compat_80 module.
 
+9.  The old monolithic compat module has been broken into multiple
+modules, one for each old NetBSD version.  The monolithic module
+is still available, and uses the alias mechanism to "advertise"
+that the component modules are available.
+
+There are still several areas which are not complete - see the
+TODO list below for more details.
+
 
 TODO
 
@@ -39,70 +47,45 @@ TODO
 COMPAT_xx.  When found, move the actual compat code into the compat
 hierarchy and replace originals with indirect (vectored) calls.
 
-2.  Using the alias mechanism, split compat (and perhaps compat_sysv)
-into multiple version-specific modules.  Note that in addition to
-updating the module code, this would also require changes to
-syscalls.master files to change the names of the modules associated
-with module-provided syscalls.
-
-Update:  These are being done simultaneously, with compat code being
-moved directly to a version-specific module.  All of COMPAT_80 and
-COMPAT_70, most of COMPAT_60, and much of COMPAT_50 are finished.
-Still need to decide how to handle the COMPAT_BSDPTY stuff.
+2.  Similar to the monolithic netbsd module, split the compat_sysv
+module into multiple version-specific modules.
 
-COMPAT_40 is also finished, except for some arch/sh3 MD code.  There
-is also some arch/m68k MD-specific code remaining for COMPAT_50.
+3.  Update syscalls.master to reflect that modular syscalls are now
+provided by version-specific modules.
 
-3.  XXX The compat_60 module still needs some work for XEN systems.
+4.  The rtsock compat code is a disaster, with rtsock_50.c #include-ing
+the main rtsock.c code with various manipulations of the COMPAT_50
+macro.
+
+5.  The compat_60 module still needs some work for XEN systems.  We
+probably need some build infrastructure changes to ensure that
+XEN (and, for i386, XEN-PAE) modules are build with the correct
+macros defined and with -I directories specified in the same order
+as for building kernels.
 
-4.  Update syscalls.master to point the compat calls at the specific
+6.  Update syscalls.master to point the compat calls at the specific
 modules rather than the monolithic compat module.  Update the
 "required" lists of other modules, too.
 
-5.  The rtsock compatability code needs to be de-spaghetti'd and made
+7.  The rtsock compatability code needs to be de-spaghetti'd and made
 separable into rtsock_70 and rtsock_50 pieces.
 
-6.  Once rtsock is separated, compat_14 references to rtsock_50 routines
+8.  Once rtsock is separated, compat_14 references to rtsock_50 routines
 needs to be verified.
 
-7.  For compat_60, still need to figure out what to do with BSDPTY and
+9.  For compat_60, still need to figure out what to do with BSDPTY and
 tty_ptm
 
-8.  Also for compat_60, need to fix the building of XEN (and, for i386,
+10. Also for compat_60, need to fix the building of XEN (and, for i386,
 XEN-PAE) module variants so that the obj-dir symlinks and the -I
 include order match those present in a kernel build.  See PR/53130
 (Currently, this affects the compat_60 module and its implementation
 of microcode updates for AMD processors - i386 and amd64.)
 
-9.  For compat_50, in addition to rtsock there are some things in dev/vnd,
+11. For compat_50, in addition to rtsock there are some things in dev/vnd,
 dev/gpio, and dev/wscons/wsmux that I haven't been able to cleanly
 separate.
 
-10. In addition to the ttcompat code in compat_60, there is another
-ttcompat in compat_43.  The 60 code used to simply update the function
-pointer, but the 43 code uses a rw_lock to protect the pointer update.
-Additionally, the 43 code specifically checks to ensure that the
-initial value of the pointer in NULL before updating it, which would
-prevent the 43 code from working if the 60 code is already loaded.  (I
-have some XXX comment in my branch code for this.)
-
-I suspect that the right this to do here is probably to make _two_
-indirect function calls in the main tty code, use separate pointers
-for the 60 and 43 compat stuff,