From owner-dev-commits-src-all@freebsd.org Mon Jun 14 04:20:10 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A916C659557; Mon, 14 Jun 2021 04:20:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3JBy3FQrz3rLV; Mon, 14 Jun 2021 04:20:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5852361F9; Mon, 14 Jun 2021 04:20:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15E4KAHJ072134; Mon, 14 Jun 2021 04:20:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15E4KA9d072131; Mon, 14 Jun 2021 04:20:10 GMT (envelope-from git) Date: Mon, 14 Jun 2021 04:20:10 GMT Message-Id: <202106140420.15E4KA9d072131@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 070264ccdf98 - main - u3g: Add reference to gobi_loader port MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 070264ccdf98239ff85b7537f170043171949c89 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 04:20:10 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=070264ccdf98239ff85b7537f170043171949c89 commit 070264ccdf98239ff85b7537f170043171949c89 Author: Warner Losh AuthorDate: 2021-06-14 04:18:07 +0000 Commit: Warner Losh CommitDate: 2021-06-14 04:18:07 +0000 u3g: Add reference to gobi_loader port The gobi_loader port has been committed. Add a reference to it instead of the upstream project since the port has changes needed to run on FreeBSD that aren't yet part of upstream. Sponsored by: Netflix --- share/man/man4/u3g.4 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4 index 64c8b0a5015f..b1ed3d47db77 100644 --- a/share/man/man4/u3g.4 +++ b/share/man/man4/u3g.4 @@ -18,7 +18,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 13, 2021 +.Dd June 14, 2021 .Dt U3G 4 .Os .Sh NAME @@ -150,6 +150,6 @@ The automatic mode switch from disk mode to modem mode does not work unless the driver is either built into the kernel or loaded before the device is connected. .Pp -The Panasonic CF-F9 requires the gobi loader available from -.Pa https://github.com/cederom/gobi_loader -and loading of the firmware before it will function. +The Panasonic CF-F9 requires the gobi loader available from the +.Pa sysutils/gobi_loader +port. From owner-dev-commits-src-all@freebsd.org Mon Jun 14 05:56:23 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7C257646973; Mon, 14 Jun 2021 05:56:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3LKz0mCfz3vcB; Mon, 14 Jun 2021 05:56:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 02C147542; Mon, 14 Jun 2021 05:56:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15E5uMkH000716; Mon, 14 Jun 2021 05:56:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15E5uMYb000715; Mon, 14 Jun 2021 05:56:22 GMT (envelope-from git) Date: Mon, 14 Jun 2021 05:56:22 GMT Message-Id: <202106140556.15E5uMYb000715@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Cy Schubert Subject: git: dc9d54b5c1e0 - main - wpa: The ap library is not needed by wpa_supplicant or wpa_cli MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: dc9d54b5c1e058b4f1bb9ab9372b171ac87a0d72 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 05:56:23 -0000 The branch main has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=dc9d54b5c1e058b4f1bb9ab9372b171ac87a0d72 commit dc9d54b5c1e058b4f1bb9ab9372b171ac87a0d72 Author: Cy Schubert AuthorDate: 2021-06-12 23:51:51 +0000 Commit: Cy Schubert CommitDate: 2021-06-14 05:55:07 +0000 wpa: The ap library is not needed by wpa_supplicant or wpa_cli The ap library is not needed by wpa_supplicant or wpa_cli. It is only used by hostapd. MFC after: 2 months --- usr.sbin/wpa/wpa_cli/Makefile | 3 +-- usr.sbin/wpa/wpa_supplicant/Makefile | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/usr.sbin/wpa/wpa_cli/Makefile b/usr.sbin/wpa/wpa_cli/Makefile index 93a24295f4a2..2aad727a6785 100644 --- a/usr.sbin/wpa/wpa_cli/Makefile +++ b/usr.sbin/wpa/wpa_cli/Makefile @@ -19,8 +19,7 @@ CFLAGS+= -DCONFIG_TLS=openssl CFLAGS+= -D_DIRENT_HAVE_D_TYPE CFLAGS+= -DCONFIG_WPA_CLI_EDIT=y -LIBADD+=wpaap \ - wpacommon \ +LIBADD+=wpacommon \ wpaeap_peer \ wpaeap_server \ wpaeapol_auth \ diff --git a/usr.sbin/wpa/wpa_supplicant/Makefile b/usr.sbin/wpa/wpa_supplicant/Makefile index c86be9497eca..9b31bea2a63c 100644 --- a/usr.sbin/wpa/wpa_supplicant/Makefile +++ b/usr.sbin/wpa/wpa_supplicant/Makefile @@ -41,7 +41,7 @@ FILES= wpa_supplicant.conf CFLAGS+=-DCONFIG_BACKEND_FILE #CFLAGS+= -g -LIBADD+=pcap util wpadrivers wpaap wpaeapol_supp \ +LIBADD+=pcap util wpadrivers wpaeapol_supp \ wpaeap_server \ wpaeap_peer wpaeap_common wpal2_packet wparsn_supp wpatls wpawps \ wpacommon wpacrypto wpautils From owner-dev-commits-src-all@freebsd.org Mon Jun 14 06:48:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 496D0653203; Mon, 14 Jun 2021 06:48:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3MVN1Knvz4Rs7; Mon, 14 Jun 2021 06:48:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 11F257BE3; Mon, 14 Jun 2021 06:48:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15E6mhrH067194; Mon, 14 Jun 2021 06:48:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15E6mhl6067193; Mon, 14 Jun 2021 06:48:43 GMT (envelope-from git) Date: Mon, 14 Jun 2021 06:48:43 GMT Message-Id: <202106140648.15E6mhl6067193@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Oskar Holmlund Subject: git: ac6dcaf8f4c4 - main - arm: TI am335x ehrpwm fix bitmask MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oh X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ac6dcaf8f4c41c20d5e5097afadaab18ec62f220 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 06:48:44 -0000 The branch main has been updated by oh: URL: https://cgit.FreeBSD.org/src/commit/?id=ac6dcaf8f4c41c20d5e5097afadaab18ec62f220 commit ac6dcaf8f4c41c20d5e5097afadaab18ec62f220 Author: Oskar Holmlund AuthorDate: 2021-06-14 08:38:06 +0000 Commit: Oskar Holmlund CommitDate: 2021-06-14 08:38:06 +0000 arm: TI am335x ehrpwm fix bitmask Bitfield HSPCLKDIV and CLKDIV are 3 bit wide. Chapter 15.2.4.1 https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf Approved by: manu (mentor) Reported by: Stefan Forsberg Differential revision: https://reviews.freebsd.org/D30746 --- sys/arm/ti/am335x/am335x_ehrpwm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/arm/ti/am335x/am335x_ehrpwm.c b/sys/arm/ti/am335x/am335x_ehrpwm.c index 47a86aee8dcb..49d0c01ca5f4 100644 --- a/sys/arm/ti/am335x/am335x_ehrpwm.c +++ b/sys/arm/ti/am335x/am335x_ehrpwm.c @@ -83,9 +83,9 @@ __FBSDID("$FreeBSD$"); #define TBCTL_PHDIR_UP (1 << 13) #define TBCTL_PHDIR_DOWN (0 << 13) #define TBCTL_CLKDIV(x) ((x) << 10) -#define TBCTL_CLKDIV_MASK (3 << 10) +#define TBCTL_CLKDIV_MASK (7 << 10) #define TBCTL_HSPCLKDIV(x) ((x) << 7) -#define TBCTL_HSPCLKDIV_MASK (3 << 7) +#define TBCTL_HSPCLKDIV_MASK (7 << 7) #define TBCTL_SYNCOSEL_DISABLED (3 << 4) #define TBCTL_PRDLD_SHADOW (0 << 3) #define TBCTL_PRDLD_IMMEDIATE (1 << 3) From owner-dev-commits-src-all@freebsd.org Mon Jun 14 08:59:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C623E6517DE; Mon, 14 Jun 2021 08:59:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3QPF4mg8z4c6H; Mon, 14 Jun 2021 08:59:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 85E9011ECF; Mon, 14 Jun 2021 08:59:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15E8xTvE040504; Mon, 14 Jun 2021 08:59:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15E8xT7N040503; Mon, 14 Jun 2021 08:59:29 GMT (envelope-from git) Date: Mon, 14 Jun 2021 08:59:29 GMT Message-Id: <202106140859.15E8xT7N040503@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 7a2030a10686 - stable/13 - tcp: fix compilation of IPv4-only builds MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7a2030a10686d156270c770d96f4ba4f86d4c58e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 08:59:29 -0000 The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=7a2030a10686d156270c770d96f4ba4f86d4c58e commit 7a2030a10686d156270c770d96f4ba4f86d4c58e Author: Michael Tuexen AuthorDate: 2021-06-11 07:50:46 +0000 Commit: Michael Tuexen CommitDate: 2021-06-13 23:27:17 +0000 tcp: fix compilation of IPv4-only builds PR: 256538 Reported by: iron.udjin@gmail.com Sponsored by: Netflix, Inc. (cherry picked from commit 224cf7b35b9bbe8d075f6004249d850c620b7855) --- sys/netinet/tcp_stacks/rack.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index f010c958951c..c4938e7b15a6 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -17673,9 +17673,11 @@ send: th = rack->r_ctl.fsb.th; udp = rack->r_ctl.fsb.udp; if (udp) { +#ifdef INET6 if (isipv6) ulen = hdrlen + len - sizeof(struct ip6_hdr); else +#endif /* INET6 */ ulen = hdrlen + len - sizeof(struct ip); udp->uh_ulen = htons(ulen); } From owner-dev-commits-src-all@freebsd.org Mon Jun 14 09:00:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 88063651DA1; Mon, 14 Jun 2021 09:00:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3QQD3Jq6z4cC9; Mon, 14 Jun 2021 09:00:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5A0C412088; Mon, 14 Jun 2021 09:00:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15E90KbW049307; Mon, 14 Jun 2021 09:00:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15E90KhK049301; Mon, 14 Jun 2021 09:00:20 GMT (envelope-from git) Date: Mon, 14 Jun 2021 09:00:20 GMT Message-Id: <202106140900.15E90KhK049301@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: fce16041a86c - stable/13 - tcp: remove debug output from RACK MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fce16041a86cfc75daea3eaeefa22a30b03df0d6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 09:00:20 -0000 The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=fce16041a86cfc75daea3eaeefa22a30b03df0d6 commit fce16041a86cfc75daea3eaeefa22a30b03df0d6 Author: Michael Tuexen AuthorDate: 2021-06-11 13:43:38 +0000 Commit: Michael Tuexen CommitDate: 2021-06-13 23:28:19 +0000 tcp: remove debug output from RACK Reported by: iron.udjin@gmail.com, Marek Zarychta Reviewed by: rrs PR: 256538 Differential Revision: https://reviews.freebsd.org/D30723 Sponsored by: Netflix, Inc. (cherry picked from commit f1536bb53898b12e2d19938f8fe2d04b5e5d12a6) --- sys/netinet/tcp_stacks/rack.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index c4938e7b15a6..bcf3dcc0e38a 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -589,8 +589,6 @@ rack_set_cc_pacing(struct tcp_rack *rack) rack->rc_pacing_cc_set = 1; if (strcmp(tp->cc_algo->name, CCALGONAME_NEWRENO) != 0) { /* Not new-reno we can't play games with beta! */ - printf("cc_algo:%s is not NEWRENO:%s\n", - tp->cc_algo->name, CCALGONAME_NEWRENO); goto out; } ptr = ((struct newreno *)tp->ccv->cc_data); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 09:01:24 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D4481651BE3; Mon, 14 Jun 2021 09:01:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3QRS5kMYz4c2B; Mon, 14 Jun 2021 09:01:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AE17A12257; Mon, 14 Jun 2021 09:01:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15E91OAG049884; Mon, 14 Jun 2021 09:01:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15E91OKY049883; Mon, 14 Jun 2021 09:01:24 GMT (envelope-from git) Date: Mon, 14 Jun 2021 09:01:24 GMT Message-Id: <202106140901.15E91OKY049883@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 82f75079f188 - stable/13 - tcp: fix two bugs in new reno MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 82f75079f188d15c4a2ab5eb4bdbe0414b7f7f34 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 09:01:24 -0000 The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=82f75079f188d15c4a2ab5eb4bdbe0414b7f7f34 commit 82f75079f188d15c4a2ab5eb4bdbe0414b7f7f34 Author: Michael Tuexen AuthorDate: 2021-06-11 13:37:39 +0000 Commit: Michael Tuexen CommitDate: 2021-06-13 23:29:14 +0000 tcp: fix two bugs in new reno * Completely initialise the CC module specific data * Use beta_ecn in case of an ECN event whenever ABE is enabled or it is requested by the stack. Reviewed by: rscheff, rrs Sponsored by: Netflix, Inc. (cherry picked from commit fa3746be4203fc9a3414afb21d964eec8bad74f8) --- sys/netinet/cc/cc_newreno.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/netinet/cc/cc_newreno.c b/sys/netinet/cc/cc_newreno.c index 55cab36e149a..1ebd6200befd 100644 --- a/sys/netinet/cc/cc_newreno.c +++ b/sys/netinet/cc/cc_newreno.c @@ -111,6 +111,7 @@ newreno_malloc(struct cc_var *ccv) /* NB: nreno is not zeroed, so initialise all fields. */ nreno->beta = V_newreno_beta; nreno->beta_ecn = V_newreno_beta_ecn; + nreno->newreno_flags = 0; ccv->cc_data = nreno; } @@ -254,8 +255,9 @@ newreno_cong_signal(struct cc_var *ccv, uint32_t type) * has set a flag in our newreno_flags (due to pacing) telling * us to use the lower valued back-off. */ - if (V_cc_do_abe || - (nreno && (nreno->newreno_flags & CC_NEWRENO_BETA_ECN) && (type == CC_ECN))) + if ((type == CC_ECN) && + (V_cc_do_abe || + ((nreno != NULL) && (nreno->newreno_flags & CC_NEWRENO_BETA_ECN)))) factor = beta_ecn; else factor = beta; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 10:31:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 19A0C6467A5; Mon, 14 Jun 2021 10:31:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3SRV0H1pz4hHV; Mon, 14 Jun 2021 10:31:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E616712D5C; Mon, 14 Jun 2021 10:31:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EAVXHL072451; Mon, 14 Jun 2021 10:31:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EAVXjF072450; Mon, 14 Jun 2021 10:31:33 GMT (envelope-from git) Date: Mon, 14 Jun 2021 10:31:33 GMT Message-Id: <202106141031.15EAVXjF072450@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ceri Davies Subject: git: abb0d7d36693 - main - make.conf: DOC_LANG and PRINTERDEVICE clarifications in man and example MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ceri X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: abb0d7d36693d32631a4631631369e30387c3227 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 10:31:34 -0000 The branch main has been updated by ceri (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=abb0d7d36693d32631a4631631369e30387c3227 commit abb0d7d36693d32631a4631631369e30387c3227 Author: Ceri Davies AuthorDate: 2021-06-14 08:53:34 +0000 Commit: Ceri Davies CommitDate: 2021-06-14 08:53:34 +0000 make.conf: DOC_LANG and PRINTERDEVICE clarifications in man and example --- share/examples/etc/make.conf | 8 ++++---- share/man/man5/make.conf.5 | 18 +++++++----------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/share/examples/etc/make.conf b/share/examples/etc/make.conf index bd8ca5d2cb4c..c40a35c0f868 100644 --- a/share/examples/etc/make.conf +++ b/share/examples/etc/make.conf @@ -143,8 +143,8 @@ #WITHOUT_MANCOMPRESS=t # # -# Default format for system documentation, depends on your printer. -# Set this to "ascii" for simple printers or screen. +# Default format for system documentation in share/doc, depends on +# your printer. Set this to "ascii" for simple printers or screen. # #PRINTERDEVICE= ps # @@ -196,9 +196,9 @@ # # Documentation # -# The list of languages and encodings to build and install. +# The list of languages to build and install. # -#DOC_LANG= en_US.ISO8859-1 ru_RU.KOI8-R +#DOC_LANG= en ru # # # sendmail diff --git a/share/man/man5/make.conf.5 b/share/man/man5/make.conf.5 index b8bb71ddc165..5885d9476d71 100644 --- a/share/man/man5/make.conf.5 +++ b/share/man/man5/make.conf.5 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 11, 2021 +.Dd June 14, 2021 .Dt MAKE.CONF 5 .Os .Sh NAME @@ -613,20 +613,16 @@ The value assigned is the highest optimization value used. The following list provides a name and short description for variables that are used when building documentation. .Bl -tag -width ".Va PRINTERDEVICE" -.It Va DISTDIR -.Pq Vt str -Where distfiles are kept. -Normally, this is -.Pa distfiles -in -.Va PORTSDIR . .It Va DOC_LANG .Pq Vt str -The list of languages and encodings to build and install. +The list of languages to build and install when building documentation +in +.Pa /usr/doc . .It Va PRINTERDEVICE .Pq Vt str -The default format for system documentation, depends on your -printer. +The default format for system documentation in +.Pa /usr/src/share/doc , +depends on your printer. This can be set to .Dq Li ascii for simple printers, or From owner-dev-commits-src-all@freebsd.org Mon Jun 14 12:10:01 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CD41565C6E5; Mon, 14 Jun 2021 12:10:01 +0000 (UTC) (envelope-from SRS0=xEBg=LI=sigsegv.be=kristof@codepro.be) Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mx1.codepro.be", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3Vd466Knz4mHj; Mon, 14 Jun 2021 12:10:00 +0000 (UTC) (envelope-from SRS0=xEBg=LI=sigsegv.be=kristof@codepro.be) Received: by venus.codepro.be (Postfix, authenticated sender kp) id 19D0438F02; Mon, 14 Jun 2021 14:09:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sigsegv.be; s=mail; t=1623672598; bh=5Mrkc5b5sWpwLLILA5XqLecG7krQVUHGG+dnKqA6fKc=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=giq7cuYfh3f9EN1q//j+6I2BIcmIAGSQeLLYJEq3ioD4fTcfjsLgVdYLJUbykd2ue vOQ0XaoQjb2K6Rrl3nrPAIDXjxkJU4Mh0VnHgHiLgcU45Bo3nnIHtKdSsHeO2KDTGo oKXTH4zooc74MI9NYPMIwlshgKhykcf3VBA8AlFI= From: "Kristof Provost" To: "Mariusz Zaborski" Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 89d5cbb82294 - main - libnv: optimize nvlist size calculation Date: Mon, 14 Jun 2021 14:09:57 +0200 X-Mailer: MailMate (1.13.2r5673) Message-ID: <4EF64072-D94B-46FB-9AE9-321936DEEA7C@sigsegv.be> In-Reply-To: <202106111551.15BFpp8j055403@gitrepo.freebsd.org> References: <202106111551.15BFpp8j055403@gitrepo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4G3Vd466Knz4mHj X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=pass header.d=sigsegv.be header.s=mail header.b=giq7cuYf; dmarc=pass (policy=none) header.from=sigsegv.be; spf=pass (mx1.freebsd.org: domain of SRS0=xEBg=LI=sigsegv.be=kristof@codepro.be designates 5.9.86.228 as permitted sender) smtp.mailfrom=SRS0=xEBg=LI=sigsegv.be=kristof@codepro.be X-Spamd-Result: default: False [-1.20 / 15.00]; MID_RHS_MATCH_FROM(0.00)[]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[sigsegv.be:s=mail]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; R_SPF_ALLOW(-0.20)[+ip4:5.9.86.228]; NEURAL_HAM_LONG(-1.00)[-1.000]; TO_DN_SOME(0.00)[]; SPAMHAUS_ZRD(0.00)[5.9.86.228:from:127.0.2.255]; DKIM_TRACE(0.00)[sigsegv.be:+]; DMARC_POLICY_ALLOW(-0.50)[sigsegv.be,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FORGED_SENDER(0.30)[kristof@sigsegv.be,SRS0=xEBg=LI=sigsegv.be=kristof@codepro.be]; RCVD_COUNT_ZERO(0.00)[0]; MIME_TRACE(0.00)[0:+]; RBL_DBL_DONT_QUERY_IPS(0.00)[5.9.86.228:from]; ASN(0.00)[asn:24940, ipnet:5.9.0.0/16, country:DE]; FROM_NEQ_ENVFROM(0.00)[kristof@sigsegv.be,SRS0=xEBg=LI=sigsegv.be=kristof@codepro.be]; MAILMAN_DEST(0.00)[dev-commits-src-all,dev-commits-src-main] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 12:10:01 -0000 On 11 Jun 2021, at 17:51, Mariusz Zaborski wrote: > The branch main has been updated by oshogbo: > > URL: = > https://cgit.FreeBSD.org/src/commit/?id=3D89d5cbb82294c8624e66f920d5035= 3057ccab14b > > commit 89d5cbb82294c8624e66f920d50353057ccab14b > Author: Mariusz Zaborski > AuthorDate: 2021-06-11 15:35:36 +0000 > Commit: Mariusz Zaborski > CommitDate: 2021-06-11 15:51:29 +0000 > > libnv: optimize nvlist size calculation > > If we had a multiple nvlist, during nvlist_pack, we calculated the = > size > of every nvlist separately. For example, if we had a nvlist with = > three > nodes each containing another (A contains B, and B contains C), we = > first > calculated the size of nvlist A (which contains B, C), then we = > calculate > the size of B (which contains C, notice that we already did the > calculation of B, when we calculate A), and finally C. This means = > that > this calculation was O(N!). This was done because each time we = > pack > nvlist, we have to put its size in the header > (the separate header for A, B, and C). > > To not break the ABI and to reduce the complexity of nvlist_size, > instead of calculating the nvlist size when requested, > we track the size of each nvlist. > > Reported by: pjd, kp > Tested by: kp Thanks for this! Do you object to this being MFCd in a few days? Thanks, Kristof From owner-dev-commits-src-all@freebsd.org Mon Jun 14 12:23:56 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5DB1465FDCF; Mon, 14 Jun 2021 12:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3Vx827ZYz4nws; Mon, 14 Jun 2021 12:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3225314C9D; Mon, 14 Jun 2021 12:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ECNuIT018842; Mon, 14 Jun 2021 12:23:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ECNubK018841; Mon, 14 Jun 2021 12:23:56 GMT (envelope-from git) Date: Mon, 14 Jun 2021 12:23:56 GMT Message-Id: <202106141223.15ECNubK018841@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 8b5f4e692b1d - main - pf: don't hold a lock during copyout() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8b5f4e692b1d1585ecfc6690552650114e3e704e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 12:23:56 -0000 The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=8b5f4e692b1d1585ecfc6690552650114e3e704e commit 8b5f4e692b1d1585ecfc6690552650114e3e704e Author: Kristof Provost AuthorDate: 2021-06-14 12:04:02 +0000 Commit: Kristof Provost CommitDate: 2021-06-14 12:17:31 +0000 pf: don't hold a lock during copyout() copyout() can trigger page faults, so it may potentially sleep. Reported by: avg MFC after: 3 days Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/netpfil/pf/pf_ioctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index a5903dc1b4ff..7a8d12ee4c3f 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -2520,8 +2520,6 @@ DIOCADDRULENV_error: ERROUT(ENOSPC); } - error = copyout(nvlpacked, nv->data, nv->len); - if (clear_counter) { counter_u64_zero(rule->evaluations); for (int i = 0; i < 2; i++) { @@ -2532,6 +2530,8 @@ DIOCADDRULENV_error: } PF_RULES_WUNLOCK(); + error = copyout(nvlpacked, nv->data, nv->len); + #undef ERROUT DIOCGETRULENV_error: free(nvlpacked, M_NVLIST); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 12:23:57 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A2EA165FF02; Mon, 14 Jun 2021 12:23:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3Vx93zfZz4p7g; Mon, 14 Jun 2021 12:23:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 48ED414872; Mon, 14 Jun 2021 12:23:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ECNvmo018866; Mon, 14 Jun 2021 12:23:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ECNvOG018865; Mon, 14 Jun 2021 12:23:57 GMT (envelope-from git) Date: Mon, 14 Jun 2021 12:23:57 GMT Message-Id: <202106141223.15ECNvOG018865@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: d38630f6192a - main - pf: store L4 headers in pf_pdesc MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d38630f6192a40934912fbffc52c9650776c2b53 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 12:23:57 -0000 The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=d38630f6192a40934912fbffc52c9650776c2b53 commit d38630f6192a40934912fbffc52c9650776c2b53 Author: Kristof Provost AuthorDate: 2021-06-04 08:52:07 +0000 Commit: Kristof Provost CommitDate: 2021-06-14 12:22:06 +0000 pf: store L4 headers in pf_pdesc Rather than pointers to the headers store full copies. This brings us slightly closer to what OpenBSD does, and also makes more sense than storing pointers to stack variable copies of the headers. Reviewed by: donner, scottl MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30719 --- sys/net/pfvar.h | 19 +++-- sys/netpfil/pf/pf.c | 182 +++++++++++++++++++++-------------------------- sys/netpfil/pf/pf_lb.c | 2 +- sys/netpfil/pf/pf_norm.c | 2 +- 4 files changed, 95 insertions(+), 110 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 73de877847e6..e07016f7b66c 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -51,6 +51,13 @@ #include #include +#ifdef _KERNEL +#include +#include +#include +#include +#include +#endif #include #include @@ -907,14 +914,14 @@ struct pf_pdesc { gid_t gid; } lookup; u_int64_t tot_len; /* Make Mickey money */ - union { - struct tcphdr *tcp; - struct udphdr *udp; - struct icmp *icmp; + union pf_headers { + struct tcphdr tcp; + struct udphdr udp; + struct icmp icmp; #ifdef INET6 - struct icmp6_hdr *icmp6; + struct icmp6_hdr icmp6; #endif /* INET6 */ - void *any; + char any[0]; } hdr; struct pf_krule *nat_rule; /* nat/rdr rule applied to packet */ diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 985b55af5263..7e187a358783 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -3113,17 +3113,13 @@ pf_socket_lookup(int direction, struct pf_pdesc *pd, struct mbuf *m) switch (pd->proto) { case IPPROTO_TCP: - if (pd->hdr.tcp == NULL) - return (-1); - sport = pd->hdr.tcp->th_sport; - dport = pd->hdr.tcp->th_dport; + sport = pd->hdr.tcp.th_sport; + dport = pd->hdr.tcp.th_dport; pi = &V_tcbinfo; break; case IPPROTO_UDP: - if (pd->hdr.udp == NULL) - return (-1); - sport = pd->hdr.udp->uh_sport; - dport = pd->hdr.udp->uh_dport; + sport = pd->hdr.udp.uh_sport; + dport = pd->hdr.udp.uh_dport; pi = &V_udbinfo; break; default: @@ -3313,8 +3309,8 @@ pf_tcp_iss(struct pf_pdesc *pd) ctx = V_pf_tcp_secret_ctx; - MD5Update(&ctx, (char *)&pd->hdr.tcp->th_sport, sizeof(u_short)); - MD5Update(&ctx, (char *)&pd->hdr.tcp->th_dport, sizeof(u_short)); + MD5Update(&ctx, (char *)&pd->hdr.tcp.th_sport, sizeof(u_short)); + MD5Update(&ctx, (char *)&pd->hdr.tcp.th_dport, sizeof(u_short)); if (pd->af == AF_INET6) { MD5Update(&ctx, (char *)&pd->src->v6, sizeof(struct in6_addr)); MD5Update(&ctx, (char *)&pd->dst->v6, sizeof(struct in6_addr)); @@ -3342,7 +3338,7 @@ pf_test_rule(struct pf_krule **rm, struct pf_state **sm, int direction, struct pf_krule *r, *a = NULL; struct pf_kruleset *ruleset = NULL; struct pf_ksrc_node *nsn = NULL; - struct tcphdr *th = pd->hdr.tcp; + struct tcphdr *th = &pd->hdr.tcp; struct pf_state_key *sk = NULL, *nk = NULL; u_short reason; int rewrite = 0, hdrlen = 0; @@ -3371,18 +3367,18 @@ pf_test_rule(struct pf_krule **rm, struct pf_state **sm, int direction, hdrlen = sizeof(*th); break; case IPPROTO_UDP: - sport = pd->hdr.udp->uh_sport; - dport = pd->hdr.udp->uh_dport; - hdrlen = sizeof(*pd->hdr.udp); + sport = pd->hdr.udp.uh_sport; + dport = pd->hdr.udp.uh_dport; + hdrlen = sizeof(pd->hdr.udp); break; #ifdef INET case IPPROTO_ICMP: if (pd->af != AF_INET) break; - sport = dport = pd->hdr.icmp->icmp_id; - hdrlen = sizeof(*pd->hdr.icmp); - icmptype = pd->hdr.icmp->icmp_type; - icmpcode = pd->hdr.icmp->icmp_code; + sport = dport = pd->hdr.icmp.icmp_id; + hdrlen = sizeof(pd->hdr.icmp); + icmptype = pd->hdr.icmp.icmp_type; + icmpcode = pd->hdr.icmp.icmp_code; if (icmptype == ICMP_UNREACH || icmptype == ICMP_SOURCEQUENCH || @@ -3396,10 +3392,10 @@ pf_test_rule(struct pf_krule **rm, struct pf_state **sm, int direction, case IPPROTO_ICMPV6: if (af != AF_INET6) break; - sport = dport = pd->hdr.icmp6->icmp6_id; - hdrlen = sizeof(*pd->hdr.icmp6); - icmptype = pd->hdr.icmp6->icmp6_type; - icmpcode = pd->hdr.icmp6->icmp6_code; + sport = dport = pd->hdr.icmp6.icmp6_id; + hdrlen = sizeof(pd->hdr.icmp6); + icmptype = pd->hdr.icmp6.icmp6_type; + icmpcode = pd->hdr.icmp6.icmp6_code; if (icmptype == ICMP6_DST_UNREACH || icmptype == ICMP6_PACKET_TOO_BIG || @@ -3449,27 +3445,27 @@ pf_test_rule(struct pf_krule **rm, struct pf_state **sm, int direction, rewrite++; break; case IPPROTO_UDP: - bproto_sum = pd->hdr.udp->uh_sum; - pd->proto_sum = &pd->hdr.udp->uh_sum; + bproto_sum = pd->hdr.udp.uh_sum; + pd->proto_sum = &pd->hdr.udp.uh_sum; if (PF_ANEQ(saddr, &nk->addr[pd->sidx], af) || nk->port[pd->sidx] != sport) { - pf_change_ap(m, saddr, &pd->hdr.udp->uh_sport, - pd->ip_sum, &pd->hdr.udp->uh_sum, + pf_change_ap(m, saddr, &pd->hdr.udp.uh_sport, + pd->ip_sum, &pd->hdr.udp.uh_sum, &nk->addr[pd->sidx], nk->port[pd->sidx], 1, af); - sport = pd->hdr.udp->uh_sport; - pd->sport = &pd->hdr.udp->uh_sport; + sport = pd->hdr.udp.uh_sport; + pd->sport = &pd->hdr.udp.uh_sport; } if (PF_ANEQ(daddr, &nk->addr[pd->didx], af) || nk->port[pd->didx] != dport) { - pf_change_ap(m, daddr, &pd->hdr.udp->uh_dport, - pd->ip_sum, &pd->hdr.udp->uh_sum, + pf_change_ap(m, daddr, &pd->hdr.udp.uh_dport, + pd->ip_sum, &pd->hdr.udp.uh_sum, &nk->addr[pd->didx], nk->port[pd->didx], 1, af); - dport = pd->hdr.udp->uh_dport; - pd->dport = &pd->hdr.udp->uh_dport; + dport = pd->hdr.udp.uh_dport; + pd->dport = &pd->hdr.udp.uh_dport; } rewrite++; break; @@ -3484,25 +3480,25 @@ pf_test_rule(struct pf_krule **rm, struct pf_state **sm, int direction, pf_change_a(&daddr->v4.s_addr, pd->ip_sum, nk->addr[pd->didx].v4.s_addr, 0); - if (nk->port[1] != pd->hdr.icmp->icmp_id) { - pd->hdr.icmp->icmp_cksum = pf_cksum_fixup( - pd->hdr.icmp->icmp_cksum, sport, + if (nk->port[1] != pd->hdr.icmp.icmp_id) { + pd->hdr.icmp.icmp_cksum = pf_cksum_fixup( + pd->hdr.icmp.icmp_cksum, sport, nk->port[1], 0); - pd->hdr.icmp->icmp_id = nk->port[1]; - pd->sport = &pd->hdr.icmp->icmp_id; + pd->hdr.icmp.icmp_id = nk->port[1]; + pd->sport = &pd->hdr.icmp.icmp_id; } - m_copyback(m, off, ICMP_MINLEN, (caddr_t)pd->hdr.icmp); + m_copyback(m, off, ICMP_MINLEN, (caddr_t)&pd->hdr.icmp); break; #endif /* INET */ #ifdef INET6 case IPPROTO_ICMPV6: nk->port[0] = nk->port[1]; if (PF_ANEQ(saddr, &nk->addr[pd->sidx], AF_INET6)) - pf_change_a6(saddr, &pd->hdr.icmp6->icmp6_cksum, + pf_change_a6(saddr, &pd->hdr.icmp6.icmp6_cksum, &nk->addr[pd->sidx], 0); if (PF_ANEQ(daddr, &nk->addr[pd->didx], AF_INET6)) - pf_change_a6(daddr, &pd->hdr.icmp6->icmp6_cksum, + pf_change_a6(daddr, &pd->hdr.icmp6.icmp6_cksum, &nk->addr[pd->didx], 0); rewrite++; break; @@ -3713,7 +3709,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, { struct pf_state *s = NULL; struct pf_ksrc_node *sn = NULL; - struct tcphdr *th = pd->hdr.tcp; + struct tcphdr *th = &pd->hdr.tcp; u_int16_t mss = V_tcp_mssdflt; u_short reason; @@ -4066,7 +4062,7 @@ pf_tcp_track_full(struct pf_state_peer *src, struct pf_state_peer *dst, struct pf_state **state, struct pfi_kkif *kif, struct mbuf *m, int off, struct pf_pdesc *pd, u_short *reason, int *copyback) { - struct tcphdr *th = pd->hdr.tcp; + struct tcphdr *th = &pd->hdr.tcp; u_int16_t win = ntohs(th->th_win); u_int32_t ack, end, seq, orig_seq; u_int8_t sws, dws; @@ -4392,7 +4388,7 @@ static int pf_tcp_track_sloppy(struct pf_state_peer *src, struct pf_state_peer *dst, struct pf_state **state, struct pf_pdesc *pd, u_short *reason) { - struct tcphdr *th = pd->hdr.tcp; + struct tcphdr *th = &pd->hdr.tcp; if (th->th_flags & TH_SYN) if (src->state < TCPS_SYN_SENT) @@ -4465,7 +4461,7 @@ pf_test_state_tcp(struct pf_state **state, int direction, struct pfi_kkif *kif, u_short *reason) { struct pf_state_key_cmp key; - struct tcphdr *th = pd->hdr.tcp; + struct tcphdr *th = &pd->hdr.tcp; int copyback = 0; struct pf_state_peer *src, *dst; struct pf_state_key *sk; @@ -4633,7 +4629,7 @@ pf_test_state_udp(struct pf_state **state, int direction, struct pfi_kkif *kif, { struct pf_state_peer *src, *dst; struct pf_state_key_cmp key; - struct udphdr *uh = pd->hdr.udp; + struct udphdr *uh = &pd->hdr.udp; bzero(&key, sizeof(key)); key.af = pd->af; @@ -4708,10 +4704,10 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, switch (pd->proto) { #ifdef INET case IPPROTO_ICMP: - icmptype = pd->hdr.icmp->icmp_type; - icmpcode = pd->hdr.icmp->icmp_code; - icmpid = pd->hdr.icmp->icmp_id; - icmpsum = &pd->hdr.icmp->icmp_cksum; + icmptype = pd->hdr.icmp.icmp_type; + icmpcode = pd->hdr.icmp.icmp_code; + icmpid = pd->hdr.icmp.icmp_id; + icmpsum = &pd->hdr.icmp.icmp_cksum; if (icmptype == ICMP_UNREACH || icmptype == ICMP_SOURCEQUENCH || @@ -4723,10 +4719,10 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, #endif /* INET */ #ifdef INET6 case IPPROTO_ICMPV6: - icmptype = pd->hdr.icmp6->icmp6_type; - icmpcode = pd->hdr.icmp6->icmp6_code; - icmpid = pd->hdr.icmp6->icmp6_id; - icmpsum = &pd->hdr.icmp6->icmp6_cksum; + icmptype = pd->hdr.icmp6.icmp6_type; + icmpcode = pd->hdr.icmp6.icmp6_code; + icmpid = pd->hdr.icmp6.icmp6_id; + icmpsum = &pd->hdr.icmp6.icmp6_cksum; if (icmptype == ICMP6_DST_UNREACH || icmptype == ICMP6_PACKET_TOO_BIG || @@ -4778,17 +4774,17 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, nk->addr[pd->didx].v4.s_addr, 0); if (nk->port[0] != - pd->hdr.icmp->icmp_id) { - pd->hdr.icmp->icmp_cksum = + pd->hdr.icmp.icmp_id) { + pd->hdr.icmp.icmp_cksum = pf_cksum_fixup( - pd->hdr.icmp->icmp_cksum, icmpid, + pd->hdr.icmp.icmp_cksum, icmpid, nk->port[pd->sidx], 0); - pd->hdr.icmp->icmp_id = + pd->hdr.icmp.icmp_id = nk->port[pd->sidx]; } m_copyback(m, off, ICMP_MINLEN, - (caddr_t )pd->hdr.icmp); + (caddr_t )&pd->hdr.icmp); break; #endif /* INET */ #ifdef INET6 @@ -4796,17 +4792,17 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, if (PF_ANEQ(pd->src, &nk->addr[pd->sidx], AF_INET6)) pf_change_a6(saddr, - &pd->hdr.icmp6->icmp6_cksum, + &pd->hdr.icmp6.icmp6_cksum, &nk->addr[pd->sidx], 0); if (PF_ANEQ(pd->dst, &nk->addr[pd->didx], AF_INET6)) pf_change_a6(daddr, - &pd->hdr.icmp6->icmp6_cksum, + &pd->hdr.icmp6.icmp6_cksum, &nk->addr[pd->didx], 0); m_copyback(m, off, sizeof(struct icmp6_hdr), - (caddr_t )pd->hdr.icmp6); + (caddr_t )&pd->hdr.icmp6); break; #endif /* INET6 */ } @@ -5049,7 +5045,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, #ifdef INET case AF_INET: m_copyback(m, off, ICMP_MINLEN, - (caddr_t )pd->hdr.icmp); + (caddr_t )&pd->hdr.icmp); m_copyback(m, ipoff2, sizeof(h2), (caddr_t )&h2); break; @@ -5058,7 +5054,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, case AF_INET6: m_copyback(m, off, sizeof(struct icmp6_hdr), - (caddr_t )pd->hdr.icmp6); + (caddr_t )&pd->hdr.icmp6); m_copyback(m, ipoff2, sizeof(h2_6), (caddr_t )&h2_6); break; @@ -5118,7 +5114,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, #ifdef INET case AF_INET: m_copyback(m, off, ICMP_MINLEN, - (caddr_t )pd->hdr.icmp); + (caddr_t )&pd->hdr.icmp); m_copyback(m, ipoff2, sizeof(h2), (caddr_t)&h2); break; #endif /* INET */ @@ -5126,7 +5122,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, case AF_INET6: m_copyback(m, off, sizeof(struct icmp6_hdr), - (caddr_t )pd->hdr.icmp6); + (caddr_t )&pd->hdr.icmp6); m_copyback(m, ipoff2, sizeof(h2_6), (caddr_t )&h2_6); break; @@ -5181,7 +5177,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, pd2.ip_sum, icmpsum, pd->ip_sum, 0, AF_INET); - m_copyback(m, off, ICMP_MINLEN, (caddr_t)pd->hdr.icmp); + m_copyback(m, off, ICMP_MINLEN, (caddr_t)&pd->hdr.icmp); m_copyback(m, ipoff2, sizeof(h2), (caddr_t)&h2); m_copyback(m, off2, ICMP_MINLEN, (caddr_t)&iih); } @@ -5234,7 +5230,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, pd->ip_sum, 0, AF_INET6); m_copyback(m, off, sizeof(struct icmp6_hdr), - (caddr_t)pd->hdr.icmp6); + (caddr_t)&pd->hdr.icmp6); m_copyback(m, ipoff2, sizeof(h2_6), (caddr_t)&h2_6); m_copyback(m, off2, sizeof(struct icmp6_hdr), (caddr_t)&iih); @@ -5276,7 +5272,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, #ifdef INET case AF_INET: m_copyback(m, off, ICMP_MINLEN, - (caddr_t)pd->hdr.icmp); + (caddr_t)&pd->hdr.icmp); m_copyback(m, ipoff2, sizeof(h2), (caddr_t)&h2); break; #endif /* INET */ @@ -5284,7 +5280,7 @@ pf_test_state_icmp(struct pf_state **state, int direction, struct pfi_kkif *kif, case AF_INET6: m_copyback(m, off, sizeof(struct icmp6_hdr), - (caddr_t )pd->hdr.icmp6); + (caddr_t )&pd->hdr.icmp6); m_copyback(m, ipoff2, sizeof(h2_6), (caddr_t )&h2_6); break; @@ -6033,16 +6029,13 @@ pf_test(int dir, int pflags, struct ifnet *ifp, struct mbuf **m0, struct inpcb * switch (h->ip_p) { case IPPROTO_TCP: { - struct tcphdr th; - - pd.hdr.tcp = &th; - if (!pf_pull_hdr(m, off, &th, sizeof(th), + if (!pf_pull_hdr(m, off, &pd.hdr.tcp, sizeof(pd.hdr.tcp), &action, &reason, AF_INET)) { log = action != PF_PASS; goto done; } - pd.p_len = pd.tot_len - off - (th.th_off << 2); - if ((th.th_flags & TH_ACK) && pd.p_len == 0) + pd.p_len = pd.tot_len - off - (pd.hdr.tcp.th_off << 2); + if ((pd.hdr.tcp.th_flags & TH_ACK) && pd.p_len == 0) pqid = 1; action = pf_normalize_tcp(dir, kif, m, 0, off, h, &pd); if (action == PF_DROP) @@ -6062,17 +6055,14 @@ pf_test(int dir, int pflags, struct ifnet *ifp, struct mbuf **m0, struct inpcb * } case IPPROTO_UDP: { - struct udphdr uh; - - pd.hdr.udp = &uh; - if (!pf_pull_hdr(m, off, &uh, sizeof(uh), + if (!pf_pull_hdr(m, off, &pd.hdr.udp, sizeof(pd.hdr.udp), &action, &reason, AF_INET)) { log = action != PF_PASS; goto done; } - if (uh.uh_dport == 0 || - ntohs(uh.uh_ulen) > m->m_pkthdr.len - off || - ntohs(uh.uh_ulen) < sizeof(struct udphdr)) { + if (pd.hdr.udp.uh_dport == 0 || + ntohs(pd.hdr.udp.uh_ulen) > m->m_pkthdr.len - off || + ntohs(pd.hdr.udp.uh_ulen) < sizeof(struct udphdr)) { action = PF_DROP; REASON_SET(&reason, PFRES_SHORT); goto done; @@ -6091,10 +6081,7 @@ pf_test(int dir, int pflags, struct ifnet *ifp, struct mbuf **m0, struct inpcb * } case IPPROTO_ICMP: { - struct icmp ih; - - pd.hdr.icmp = &ih; - if (!pf_pull_hdr(m, off, &ih, ICMP_MINLEN, + if (!pf_pull_hdr(m, off, &pd.hdr.icmp, ICMP_MINLEN, &action, &reason, AF_INET)) { log = action != PF_PASS; goto done; @@ -6479,15 +6466,12 @@ pf_test6(int dir, int pflags, struct ifnet *ifp, struct mbuf **m0, struct inpcb switch (pd.proto) { case IPPROTO_TCP: { - struct tcphdr th; - - pd.hdr.tcp = &th; - if (!pf_pull_hdr(m, off, &th, sizeof(th), + if (!pf_pull_hdr(m, off, &pd.hdr.tcp, sizeof(pd.hdr.tcp), &action, &reason, AF_INET6)) { log = action != PF_PASS; goto done; } - pd.p_len = pd.tot_len - off - (th.th_off << 2); + pd.p_len = pd.tot_len - off - (pd.hdr.tcp.th_off << 2); action = pf_normalize_tcp(dir, kif, m, 0, off, h, &pd); if (action == PF_DROP) goto done; @@ -6506,17 +6490,14 @@ pf_test6(int dir, int pflags, struct ifnet *ifp, struct mbuf **m0, struct inpcb } case IPPROTO_UDP: { - struct udphdr uh; - - pd.hdr.udp = &uh; - if (!pf_pull_hdr(m, off, &uh, sizeof(uh), + if (!pf_pull_hdr(m, off, &pd.hdr.udp, sizeof(pd.hdr.udp), &action, &reason, AF_INET6)) { log = action != PF_PASS; goto done; } - if (uh.uh_dport == 0 || - ntohs(uh.uh_ulen) > m->m_pkthdr.len - off || - ntohs(uh.uh_ulen) < sizeof(struct udphdr)) { + if (pd.hdr.udp.uh_dport == 0 || + ntohs(pd.hdr.udp.uh_ulen) > m->m_pkthdr.len - off || + ntohs(pd.hdr.udp.uh_ulen) < sizeof(struct udphdr)) { action = PF_DROP; REASON_SET(&reason, PFRES_SHORT); goto done; @@ -6542,10 +6523,7 @@ pf_test6(int dir, int pflags, struct ifnet *ifp, struct mbuf **m0, struct inpcb } case IPPROTO_ICMPV6: { - struct icmp6_hdr ih; - - pd.hdr.icmp6 = &ih; - if (!pf_pull_hdr(m, off, &ih, sizeof(ih), + if (!pf_pull_hdr(m, off, &pd.hdr.icmp6, sizeof(pd.hdr.icmp6), &action, &reason, AF_INET6)) { log = action != PF_PASS; goto done; diff --git a/sys/netpfil/pf/pf_lb.c b/sys/netpfil/pf/pf_lb.c index 3796ab9fb80a..5e281eccc144 100644 --- a/sys/netpfil/pf/pf_lb.c +++ b/sys/netpfil/pf/pf_lb.c @@ -182,7 +182,7 @@ pf_match_translation(struct pf_pdesc *pd, struct mbuf *m, int off, r = TAILQ_NEXT(r, entries); else if (r->os_fingerprint != PF_OSFP_ANY && (pd->proto != IPPROTO_TCP || !pf_osfp_match(pf_osfp_fingerprint(pd, m, - off, pd->hdr.tcp), r->os_fingerprint))) + off, &pd->hdr.tcp), r->os_fingerprint))) r = TAILQ_NEXT(r, entries); else { if (r->tag) diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c index 6de1efa8ff84..241bdcb5a073 100644 --- a/sys/netpfil/pf/pf_norm.c +++ b/sys/netpfil/pf/pf_norm.c @@ -1326,7 +1326,7 @@ pf_normalize_tcp(int dir, struct pfi_kkif *kif, struct mbuf *m, int ipoff, int off, void *h, struct pf_pdesc *pd) { struct pf_krule *r, *rm = NULL; - struct tcphdr *th = pd->hdr.tcp; + struct tcphdr *th = &pd->hdr.tcp; int rewrite = 0; u_short reason; u_int8_t flags; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 12:28:59 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 18712660B53; Mon, 14 Jun 2021 12:28:59 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: from mail-lj1-f179.google.com (mail-lj1-f179.google.com [209.85.208.179]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3W2y75M7z4pHV; Mon, 14 Jun 2021 12:28:58 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: by mail-lj1-f179.google.com with SMTP id d13so7782104ljg.12; Mon, 14 Jun 2021 05:28:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+FuAAWbkyjdqT++HSk7C/MYtZRONSogmYxYXs0dZKHg=; b=HX5ckOLFr8878ZKC9HvZw+9nWu+W6lMIsweAdVeeWNtuotHdiAYSRtCOidnY4NL1KX kmkRSqVGY4Oi4l0fhHp7rH6fW1zJ6VB/2kQHHGrMaIs6Rtm5Z5R5BO4YI1a7afIwBdUc PX+GBT8PZAPY8tuNRIHafDvnkiSA2AtJmUNshPp7HQj0mGAyqzKgmoh0lRavOOpoyKRf B6C87LSRYKBJE5QaFzhl52wKkqWzRyIQNX1B9tEcN2v5FILsOy+YbDACENWqUCvEGEXF oJJ96ZFhiDJyPZdkT3nm71ZdM5MUXbcH0V2Jk80QxR+fx2Z6h7diQboPimEVb5+t38ay CkIg== X-Gm-Message-State: AOAM533HMTDmeKiVczwqgkcN9MQRQgyP0a66wd8MrWXWcyUM04yus+WC xuz/jcsrQfifk9rSy61n+VTNLjVcD6DLjMw0Px/DDDukWVbRpQ== X-Google-Smtp-Source: ABdhPJwSU6GNYVzMnOW08scKcLDCtSpi/GJTfIDTTpCk+uRjTevVhM6OVhKqwKhuNcJjKNYj8PQk2PsWG1Yb/Dt2Jsc= X-Received: by 2002:a2e:a3ce:: with SMTP id w14mr13409776lje.451.1623673737305; Mon, 14 Jun 2021 05:28:57 -0700 (PDT) MIME-Version: 1.0 References: <202106111551.15BFpp8j055403@gitrepo.freebsd.org> <4EF64072-D94B-46FB-9AE9-321936DEEA7C@sigsegv.be> In-Reply-To: <4EF64072-D94B-46FB-9AE9-321936DEEA7C@sigsegv.be> From: Mariusz Zaborski Date: Mon, 14 Jun 2021 14:28:46 +0200 Message-ID: Subject: Re: git: 89d5cbb82294 - main - libnv: optimize nvlist size calculation To: Kristof Provost Cc: src-committers , dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org X-Rspamd-Queue-Id: 4G3W2y75M7z4pHV X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; TAGGED_FROM(0.00)[] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.34 X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 12:28:59 -0000 No, I will do this till end of the week. Thanks, Mariusz On Mon, 14 Jun 2021 at 14:10, Kristof Provost wrote: > On 11 Jun 2021, at 17:51, Mariusz Zaborski wrote: > > The branch main has been updated by oshogbo: > > > > URL: > > > https://cgit.FreeBSD.org/src/commit/?id=89d5cbb82294c8624e66f920d50353057ccab14b > > > > commit 89d5cbb82294c8624e66f920d50353057ccab14b > > Author: Mariusz Zaborski > > AuthorDate: 2021-06-11 15:35:36 +0000 > > Commit: Mariusz Zaborski > > CommitDate: 2021-06-11 15:51:29 +0000 > > > > libnv: optimize nvlist size calculation > > > > If we had a multiple nvlist, during nvlist_pack, we calculated the > > size > > of every nvlist separately. For example, if we had a nvlist with > > three > > nodes each containing another (A contains B, and B contains C), we > > first > > calculated the size of nvlist A (which contains B, C), then we > > calculate > > the size of B (which contains C, notice that we already did the > > calculation of B, when we calculate A), and finally C. This means > > that > > this calculation was O(N!). This was done because each time we > > pack > > nvlist, we have to put its size in the header > > (the separate header for A, B, and C). > > > > To not break the ABI and to reduce the complexity of nvlist_size, > > instead of calculating the nvlist size when requested, > > we track the size of each nvlist. > > > > Reported by: pjd, kp > > Tested by: kp > > Thanks for this! > > Do you object to this being MFCd in a few days? > > Thanks, > Kristof > From owner-dev-commits-src-all@freebsd.org Mon Jun 14 13:44:48 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 971E864A82D; Mon, 14 Jun 2021 13:44:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3XkS3f6hz3C36; Mon, 14 Jun 2021 13:44:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6550C15C41; Mon, 14 Jun 2021 13:44:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EDimF0026086; Mon, 14 Jun 2021 13:44:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EDimTM026085; Mon, 14 Jun 2021 13:44:48 GMT (envelope-from git) Date: Mon, 14 Jun 2021 13:44:48 GMT Message-Id: <202106141344.15EDimTM026085@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 4c3280e58727 - main - netgraph/bridge: malloc without flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4c3280e58727e900d4c217054fe655e3512380f1 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 13:44:48 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=4c3280e58727e900d4c217054fe655e3512380f1 commit 4c3280e58727e900d4c217054fe655e3512380f1 Author: Lutz Donnerhacke AuthorDate: 2021-06-13 22:00:35 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-14 13:41:46 +0000 netgraph/bridge: malloc without flags During tests an assert was triggered and pointed to missing flags in the newlink function of ng_bridge(4). Reported by: markj Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D30759 --- sys/netgraph/ng_bridge.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/netgraph/ng_bridge.c b/sys/netgraph/ng_bridge.c index f77012d42d1c..03d5125972d0 100644 --- a/sys/netgraph/ng_bridge.c +++ b/sys/netgraph/ng_bridge.c @@ -395,9 +395,7 @@ ng_bridge_newhook(node_p node, hook_p hook, const char *name) if(NG_PEER_NODE(hook) == node) return (ELOOP); - link = malloc(sizeof(*link), M_NETGRAPH_BRIDGE, M_ZERO); - if (link == NULL) - return (ENOMEM); + link = malloc(sizeof(*link), M_NETGRAPH_BRIDGE, M_WAITOK | M_ZERO); link->stats.recvOctets = counter_u64_alloc(M_WAITOK); link->stats.recvPackets = counter_u64_alloc(M_WAITOK); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 14:51:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2B8C6658E32; Mon, 14 Jun 2021 14:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3ZCh0nH4z3Kcs; Mon, 14 Jun 2021 14:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 02BAE16951; Mon, 14 Jun 2021 14:51:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EEphJg019620; Mon, 14 Jun 2021 14:51:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EEphoB019619; Mon, 14 Jun 2021 14:51:43 GMT (envelope-from git) Date: Mon, 14 Jun 2021 14:51:43 GMT Message-Id: <202106141451.15EEphoB019619@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Gallatin Subject: git: ed5e13cfc268 - main - ktls: Fix interaction with RATELIMIT MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gallatin X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ed5e13cfc2689049ce415dad5057923bc7214a41 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 14:51:44 -0000 The branch main has been updated by gallatin: URL: https://cgit.FreeBSD.org/src/commit/?id=ed5e13cfc2689049ce415dad5057923bc7214a41 commit ed5e13cfc2689049ce415dad5057923bc7214a41 Author: Andrew Gallatin AuthorDate: 2021-06-14 14:46:13 +0000 Commit: Andrew Gallatin CommitDate: 2021-06-14 14:51:16 +0000 ktls: Fix interaction with RATELIMIT uipc_ktls.c was missing opt_ratelimit.h, so it was never noticing that RATELIMIT was enabled. Once it was enabled, it failed to compile as ktls_modify_txrtlmt() had accrued a compilation error when it was not being compiled in. Sponsored by: Netflix --- sys/kern/uipc_ktls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/uipc_ktls.c b/sys/kern/uipc_ktls.c index b0d7ea8016dd..2ab2ef18446b 100644 --- a/sys/kern/uipc_ktls.c +++ b/sys/kern/uipc_ktls.c @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_ratelimit.h" #include "opt_rss.h" #include @@ -1399,7 +1400,6 @@ ktls_modify_txrtlmt(struct ktls_session *tls, uint64_t max_pacing_rate) }; struct m_snd_tag *mst; struct ifnet *ifp; - int error; /* Can't get to the inp, but it should be locked. */ /* INP_LOCK_ASSERT(inp); */ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 14:54:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4A62A6599B0; Mon, 14 Jun 2021 14:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3ZGc0FwBz3KkR; Mon, 14 Jun 2021 14:54:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E58D3165CA; Mon, 14 Jun 2021 14:54:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EEsF1Q019903; Mon, 14 Jun 2021 14:54:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EEsFnt019902; Mon, 14 Jun 2021 14:54:15 GMT (envelope-from git) Date: Mon, 14 Jun 2021 14:54:15 GMT Message-Id: <202106141454.15EEsFnt019902@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: e7f369b1c18c - main - Use the correct length when copying arm64 vfp registers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e7f369b1c18ca0377bb0b016b4cab3f0de2a74c5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 14:54:16 -0000 The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=e7f369b1c18ca0377bb0b016b4cab3f0de2a74c5 commit e7f369b1c18ca0377bb0b016b4cab3f0de2a74c5 Author: Andrew Turner AuthorDate: 2021-06-14 11:01:46 +0000 Commit: Andrew Turner CommitDate: 2021-06-14 14:53:10 +0000 Use the correct length when copying arm64 vfp registers We passed the wrong length into memcpy in the arm64 get_fpcontext and set_fpcontext. This caused us to copy two status registers we didn't expect to copy. These are safe as they exist in both the source and destination, although in a different order, and we copy the correct values after the memcpy. Obtained from: CheriBSD Sponsored by: Innovate UK --- sys/arm64/arm64/machdep.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c index 71aa45b47d59..82a77ce184d8 100644 --- a/sys/arm64/arm64/machdep.c +++ b/sys/arm64/arm64/machdep.c @@ -650,7 +650,7 @@ get_fpcontext(struct thread *td, mcontext_t *mcp) KASSERT((curpcb->pcb_fpflags & ~PCB_FP_USERMASK) == 0, ("Non-userspace FPU flags set in get_fpcontext")); memcpy(mcp->mc_fpregs.fp_q, curpcb->pcb_fpustate.vfp_regs, - sizeof(mcp->mc_fpregs)); + sizeof(mcp->mc_fpregs.fp_q)); mcp->mc_fpregs.fp_cr = curpcb->pcb_fpustate.vfp_fpcr; mcp->mc_fpregs.fp_sr = curpcb->pcb_fpustate.vfp_fpsr; mcp->mc_fpregs.fp_flags = curpcb->pcb_fpflags; @@ -681,7 +681,7 @@ set_fpcontext(struct thread *td, mcontext_t *mcp) KASSERT(curpcb->pcb_fpusaved == &curpcb->pcb_fpustate, ("Called set_fpcontext while the kernel is using the VFP")); memcpy(curpcb->pcb_fpustate.vfp_regs, mcp->mc_fpregs.fp_q, - sizeof(mcp->mc_fpregs)); + sizeof(mcp->mc_fpregs.fp_q)); curpcb->pcb_fpustate.vfp_fpcr = mcp->mc_fpregs.fp_cr; curpcb->pcb_fpustate.vfp_fpsr = mcp->mc_fpregs.fp_sr; curpcb->pcb_fpflags = mcp->mc_fpregs.fp_flags & PCB_FP_USERMASK; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 14:54:17 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5112D65935A; Mon, 14 Jun 2021 14:54:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3ZGd18Shz3L74; Mon, 14 Jun 2021 14:54:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0FD23168E9; Mon, 14 Jun 2021 14:54:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EEsGHH019927; Mon, 14 Jun 2021 14:54:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EEsG42019926; Mon, 14 Jun 2021 14:54:16 GMT (envelope-from git) Date: Mon, 14 Jun 2021 14:54:16 GMT Message-Id: <202106141454.15EEsG42019926@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 15fa52a56494 - main - Add more GIC and GICv3 registers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 15fa52a56494d050c4b8e1535d98e2fd416f1944 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 14:54:17 -0000 The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=15fa52a56494d050c4b8e1535d98e2fd416f1944 commit 15fa52a56494d050c4b8e1535d98e2fd416f1944 Author: Andrew Turner AuthorDate: 2021-06-14 12:48:53 +0000 Commit: Andrew Turner CommitDate: 2021-06-14 14:53:11 +0000 Add more GIC and GICv3 registers These aren't used by either driver, however they will be needed by bhyve on arm64 to emulate a GICv3 interrupt controller. Sponsored by: Innovate UK --- sys/arm/arm/gic_common.h | 4 +- sys/arm64/arm64/gic_v3.c | 1 - sys/arm64/arm64/gic_v3_reg.h | 122 +++++++++++++++++++++++++++++++++++-------- 3 files changed, 103 insertions(+), 24 deletions(-) diff --git a/sys/arm/arm/gic_common.h b/sys/arm/arm/gic_common.h index 6643496afc38..4289146b0086 100644 --- a/sys/arm/arm/gic_common.h +++ b/sys/arm/arm/gic_common.h @@ -56,6 +56,7 @@ __BUS_ACCESSOR(gic, bus, GIC, BUS, u_int); /* Common register values */ #define GICD_CTLR 0x0000 /* v1 ICDDCR */ #define GICD_TYPER 0x0004 /* v1 ICDICTR */ +#define GICD_TYPER_ITLINESNUM_MASK 0x1f #define GICD_TYPER_I_NUM(n) ((((n) & 0x1F) + 1) * 32) #define GICD_IIDR 0x0008 /* v1 ICDIIDR */ #define GICD_IIDR_PROD_SHIFT 24 @@ -82,7 +83,8 @@ __BUS_ACCESSOR(gic, bus, GIC, BUS, u_int); #define GICD_ICENABLER(n) (0x0180 + (((n) >> 5) * 4)) /* v1 ICDICER */ #define GICD_ISPENDR(n) (0x0200 + (((n) >> 5) * 4)) /* v1 ICDISPR */ #define GICD_ICPENDR(n) (0x0280 + (((n) >> 5) * 4)) /* v1 ICDICPR */ -#define GICD_ICACTIVER(n) (0x0380 + (((n) >> 5) * 4)) /* v1 ICDABR */ +#define GICD_ISACTIVER(n) (0x0300 + (((n) >> 5) * 4)) /* v1 ICDABR */ +#define GICD_ICACTIVER(n) (0x0380 + (((n) >> 5) * 4)) #define GICD_IPRIORITYR(n) (0x0400 + (((n) >> 2) * 4)) /* v1 ICDIPR */ #define GICD_I_PER_IPRIORITYn 4 #define GICD_ITARGETSR(n) (0x0800 + (((n) >> 2) * 4)) /* v1 ICDIPTR */ diff --git a/sys/arm64/arm64/gic_v3.c b/sys/arm64/arm64/gic_v3.c index 954ed3cd878a..03b6490e7d61 100644 --- a/sys/arm64/arm64/gic_v3.c +++ b/sys/arm64/arm64/gic_v3.c @@ -1462,7 +1462,6 @@ gic_v3_map_msi(device_t dev, device_t child, struct intr_irqsrc *isrc, struct gic_v3_softc *sc = device_get_softc(dev); struct gic_v3_irqsrc *gi = (struct gic_v3_irqsrc *)isrc; -#define GICD_SETSPI_NSR 0x40 *addr = vtophys(rman_get_virtual(sc->gic_dist)) + GICD_SETSPI_NSR; *data = gi->gi_irq; diff --git a/sys/arm64/arm64/gic_v3_reg.h b/sys/arm64/arm64/gic_v3_reg.h index 34082b1bde0a..2ba35ec9dab3 100644 --- a/sys/arm64/arm64/gic_v3_reg.h +++ b/sys/arm64/arm64/gic_v3_reg.h @@ -57,13 +57,33 @@ #define GICD_CTLR_G1A (1 << 1) #define GICD_CTLR_ARE_NS (1 << 4) #define GICD_CTLR_RWP (1 << 31) + /* GICD_TYPER */ +#define GICD_TYPER_SECURITYEXTN (1 << 10) +#define GICD_TYPER_MBIS (1 << 16) +#define GICD_TYPER_LPIS (1 << 17) +#define GICD_TYPER_DVIS (1 << 18) +#define GICD_TYPER_IDBITS_SHIFT 19 #define GICD_TYPER_IDBITS(n) ((((n) >> 19) & 0x1F) + 1) /* * Registers (v3) */ +#define GICD_STATUSR 0x0010 + +#define GICD_SETSPI_NSR 0x0040 +#define GICD_CLRSPI_NSR 0x0048 +#define GICD_SETSPI_SR 0x0050 +#define GICD_CLRSPI_SR 0x0058 +#define GICD_SPI_INTID_MASK 0x3ff + #define GICD_IROUTER(n) (0x6000 + ((n) * 8)) +#define GICD_AFF3 (0xfful << 32) +#define GICD_IROUTER_IRM (1ul << 31) +#define GICD_AFF2 (0xfful << 16) +#define GICD_AFF1 (0xfful << 8) +#define GICD_AFF0 (0xfful << 0) +#define GICD_AFF (GICD_AFF0 | GICD_AFF1 | GICD_AFF1 | GICD_AFF3) #define GICD_PIDR4 0xFFD0 #define GICD_PIDR5 0xFFD4 @@ -73,6 +93,8 @@ #define GICD_PIDR1 0xFFE4 #define GICD_PIDR2 0xFFE8 +#define GICD_SIZE 0x10000 + #define GICR_PIDR2_ARCH_SHIFT 4 #define GICR_PIDR2_ARCH_MASK 0xF0 #define GICR_PIDR2_ARCH(x) \ @@ -82,27 +104,44 @@ #define GICD_PIDR3 0xFFEC -/* Redistributor registers */ -#define GICR_CTLR GICD_CTLR -#define GICR_CTLR_LPI_ENABLE (1 << 0) - -#define GICR_PIDR2 GICD_PIDR2 +/* + * Redistributor registers + */ -#define GICR_TYPER (0x0008) -#define GICR_TYPER_PLPIS (1 << 0) -#define GICR_TYPER_VLPIS (1 << 1) -#define GICR_TYPER_LAST (1 << 4) -#define GICR_TYPER_CPUNUM_SHIFT (8) -#define GICR_TYPER_CPUNUM_MASK (0xFFFUL << GICR_TYPER_CPUNUM_SHIFT) -#define GICR_TYPER_CPUNUM(x) \ +/* RD_base registers */ +#define GICR_CTLR 0x0000 +#define GICR_CTLR_LPI_ENABLE (1 << 0) +#define GICR_CTLR_RWP (1 << 3) +#define GICR_CTLR_DPG0 (1 << 24) +#define GICR_CTLR_DPG1NS (1 << 25) +#define GICR_CTLR_DPG1S (1 << 26) +#define GICR_CTLR_UWP (1 << 31) + +#define GICR_IIDR 0x0004 + +#define GICR_TYPER 0x0008 +#define GICR_TYPER_PLPIS (1 << 0) +#define GICR_TYPER_VLPIS (1 << 1) +#define GICR_TYPER_LAST (1 << 4) +#define GICR_TYPER_CPUNUM_SHIFT (8) +#define GICR_TYPER_CPUNUM_MASK (0xFFFUL << GICR_TYPER_CPUNUM_SHIFT) +#define GICR_TYPER_CPUNUM(x) \ (((x) & GICR_TYPER_CPUNUM_MASK) >> GICR_TYPER_CPUNUM_SHIFT) -#define GICR_TYPER_AFF_SHIFT (32) +#define GICR_TYPER_AFF_SHIFT 32 +#define GICR_TYPER_AFF_MASK (0xfffffffful << GICR_TYPER_AFF_SHIFT) +#define GICR_TYPER_AFF(x) \ + (((x) & GICR_TYPER_AFF_MASK) >> GICR_TYPER_AFF_SHIFT) -#define GICR_WAKER (0x0014) +#define GICR_STATUSR 0x0010 + +#define GICR_WAKER 0x0014 #define GICR_WAKER_PS (1 << 1) /* Processor sleep */ #define GICR_WAKER_CA (1 << 2) /* Children asleep */ -#define GICR_PROPBASER (0x0070) +#define GICR_SETLPIR 0x0040 +#define GICR_CLRLPIR 0x0048 + +#define GICR_PROPBASER 0x0070 #define GICR_PROPBASER_IDBITS_MASK 0x1FUL /* * Cacheability @@ -142,7 +181,11 @@ #define GICR_PROPBASER_SHARE_MASK \ (0x3UL << GICR_PROPBASER_SHARE_SHIFT) -#define GICR_PENDBASER (0x0078) +#define GICR_PROPBASER_OUTER_CACHE_SHIFT 56 +#define GICR_PROPBASER_OUTER_CACHE_MASK \ + (0x7UL << GICR_PROPBASER_OUTER_CACHE_SHIFT) + +#define GICR_PENDBASER 0x0078 /* * Cacheability * 0x0 - Device-nGnRnE @@ -181,12 +224,17 @@ #define GICR_PENDBASER_SHARE_MASK \ (0x3UL << GICR_PENDBASER_SHARE_SHIFT) -/* Re-distributor registers for SGIs and PPIs */ -#define GICR_RD_BASE_SIZE PAGE_SIZE_64K -#define GICR_SGI_BASE_SIZE PAGE_SIZE_64K -#define GICR_VLPI_BASE_SIZE PAGE_SIZE_64K -#define GICR_RESERVED_SIZE PAGE_SIZE_64K +#define GICR_PENDBASER_OUTER_CACHE_SHIFT 56 +#define GICR_PENDBASER_OUTER_CACHE_MASK \ + (0x7UL << GICR_PENDBASER_OUTER_CACHE_SHIFT) + +#define GICR_INVLPIR 0x00a0 +#define GICR_INVALLR 0x00b0 +#define GICR_SYNCR 0x00c0 + +#define GICR_PIDR2 GICD_PIDR2 +/* SGI_base registers */ #define GICR_IGROUPR0 (0x0080) #define GICR_ISENABLER0 (0x0100) #define GICR_ICENABLER0 (0x0180) @@ -195,7 +243,28 @@ #define GICR_I_PER_IPRIORITYn (GICD_I_PER_IPRIORITYn) -/* ITS registers */ +#define GICR_ISPENDR0 0x0200 +#define GICR_ICPENDR0 0x0280 +#define GICR_ISACTIVER0 0x0300 +#define GICR_ICACTIVER0 0x0380 +#define GICR_IPRIORITYR(n) (0x0400 + (((n) >> 2) * 4)) +#define GICR_ICFGR0 0x0c00 +#define GICR_ICFGR1 0x0c04 +#define GICR_IGRPMODR0 0x0d00 +#define GICR_NSACR 0x0e00 + +/* Re-distributor registers for SGIs and PPIs */ +#define GICR_RD_BASE 0 +#define GICR_RD_BASE_SIZE PAGE_SIZE_64K +#define GICR_SGI_BASE (1 * PAGE_SIZE_64K) +#define GICR_SGI_BASE_SIZE PAGE_SIZE_64K +#define GICR_VLPI_BASE (2 * PAGE_SIZE_64K) +#define GICR_VLPI_BASE_SIZE PAGE_SIZE_64K +#define GICR_RESERVED_SIZE PAGE_SIZE_64K + +/* + * ITS registers + */ #define GITS_PIDR2 GICR_PIDR2 #define GITS_PIDR2_ARCH_MASK GICR_PIDR2_ARCH_MASK #define GITS_PIDR2_ARCH_GICv3 GICR_PIDR2_ARCH_GICv3 @@ -266,9 +335,17 @@ #define GITS_CBASER_PA_SHIFT 12 #define GITS_CBASER_PA_MASK (0xFFFFFFFFFUL << GITS_CBASER_PA_SHIFT) +#define GITS_CBASER_SIZE_SHIFT 0 +#define GITS_CBASER_SIZE_MASK (0xFF << GITS_CBASER_SIZE_SHIFT) +#define GITS_CBASER_SIZE(x) \ + (4096 * (((x) & GITS_CBASER_SIZE_MASK) + 1)) #define GITS_CWRITER (0x0088) #define GITS_CREADR (0x0090) +#define GITS_CREADR_STALL 1ul + +#define GITS_CMD_OFFSET(reg) ((reg) & 0xfffe0ul) +#define GITS_CMD_SIZE 0x20 #define GITS_BASER_BASE (0x0100) #define GITS_BASER(x) (GITS_BASER_BASE + (x) * 8) @@ -342,6 +419,7 @@ #define GITS_BASER_NUM 8 #define GITS_TYPER (0x0008) +#define GITS_TYPER_HCC_SHIFT 24 #define GITS_TYPER_PTA (1UL << 19) #define GITS_TYPER_DEVB_SHIFT 13 #define GITS_TYPER_DEVB_MASK (0x1FUL << GITS_TYPER_DEVB_SHIFT) From owner-dev-commits-src-all@freebsd.org Mon Jun 14 15:34:09 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4525064281D; Mon, 14 Jun 2021 15:34:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3b8d1Rzfz3PDS; Mon, 14 Jun 2021 15:34:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1AFD1172A9; Mon, 14 Jun 2021 15:34:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EFY99P073886; Mon, 14 Jun 2021 15:34:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EFY96S073885; Mon, 14 Jun 2021 15:34:09 GMT (envelope-from git) Date: Mon, 14 Jun 2021 15:34:09 GMT Message-Id: <202106141534.15EFY96S073885@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alex Richardson Subject: git: 9bb8a4091c4f - main - Reduce code duplication in machine/_types.h MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arichardson X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9bb8a4091c4f63dacda5108f4f994f7f6b35bbf1 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 15:34:09 -0000 The branch main has been updated by arichardson: URL: https://cgit.FreeBSD.org/src/commit/?id=9bb8a4091c4f63dacda5108f4f994f7f6b35bbf1 commit 9bb8a4091c4f63dacda5108f4f994f7f6b35bbf1 Author: Alex Richardson AuthorDate: 2021-06-14 10:18:51 +0000 Commit: Alex Richardson CommitDate: 2021-06-14 15:30:16 +0000 Reduce code duplication in machine/_types.h Many of these typedefs are the same across all architectures or can be set based on an architecture-independent compiler-provided macro (e.g. __SIZEOF_SIZE_T__). These macros have been available since GCC 4.6 and Clang sometime before 3.0 (godbolt.org does not have any older clang versions installed). I originally considered using the compiler-provided `__FOO_TYPE__` directly. However, in order to do so we have to check that those match the previous typedef exactly (not just that they have the same size) since any change would be an ABI break. For example, changing `long` to `long long` results in different C++ name mangling. Additionally, Clang and GCC disagree on the underlying type for some of (u)int*_fast_t types, so this change only moves the definitions that are identical across all architectures and does not touch those types. This de-deduplication will allow us to have a smaller diff downstream in CheriBSD: we only have to only change the (u)intptr_t definition in sys/_types.h in CheriBSD instead of having to change machine/_types.h for all CHERI-enabled architectures (currently RISC-V, AArch64 and MIPS). Reviewed By: imp, kib Differential Revision: https://reviews.freebsd.org/D29895 --- include/pthread.h | 2 +- sys/arm/include/_types.h | 43 ++---------------------- sys/arm64/include/_types.h | 35 ++------------------ sys/mips/include/_types.h | 60 ++-------------------------------- sys/powerpc/include/_types.h | 60 ++-------------------------------- sys/riscv/include/_types.h | 35 ++------------------ sys/sys/_types.h | 78 ++++++++++++++++++++++++++++++++++++++++++++ sys/sys/stddef.h | 2 +- sys/x86/include/_types.h | 51 ++--------------------------- sys/x86/include/reg.h | 2 +- 10 files changed, 93 insertions(+), 275 deletions(-) diff --git a/include/pthread.h b/include/pthread.h index 143401ddf68b..455e27b89f8b 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -43,7 +43,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/sys/arm/include/_types.h b/sys/arm/include/_types.h index 14ab76c5fbde..fb52df9dfcd6 100644 --- a/sys/arm/include/_types.h +++ b/sys/arm/include/_types.h @@ -41,30 +41,10 @@ #ifndef _MACHINE__TYPES_H_ #define _MACHINE__TYPES_H_ -#ifndef _SYS_CDEFS_H_ -#error this file needs sys/cdefs.h as a prerequisite +#ifndef _SYS__TYPES_H_ +#error do not include this header, use sys/_types.h #endif -/* - * Basic types upon which most other types are built. - */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef short __int16_t; -typedef unsigned short __uint16_t; -typedef int __int32_t; -typedef unsigned int __uint32_t; -#ifndef lint -__extension__ -#endif -/* LONGLONG */ -typedef long long __int64_t; -#ifndef lint -__extension__ -#endif -/* LONGLONG */ -typedef unsigned long long __uint64_t; - /* * Standard type definitions. */ @@ -74,38 +54,19 @@ typedef __int32_t __critical_t; typedef double __double_t; typedef float __float_t; #endif -typedef __int32_t __intfptr_t; -typedef __int64_t __intmax_t; -typedef __int32_t __intptr_t; typedef __int32_t __int_fast8_t; typedef __int32_t __int_fast16_t; typedef __int32_t __int_fast32_t; typedef __int64_t __int_fast64_t; -typedef __int8_t __int_least8_t; -typedef __int16_t __int_least16_t; -typedef __int32_t __int_least32_t; -typedef __int64_t __int_least64_t; -typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int32_t __register_t; typedef __int32_t __segsz_t; /* segment size (in pages) */ -typedef __uint32_t __size_t; /* sizeof() */ -typedef __int32_t __ssize_t; /* byte count or error */ typedef __int64_t __time_t; /* time()... */ -typedef __uint32_t __uintfptr_t; -typedef __uint64_t __uintmax_t; -typedef __uint32_t __uintptr_t; typedef __uint32_t __uint_fast8_t; typedef __uint32_t __uint_fast16_t; typedef __uint32_t __uint_fast32_t; typedef __uint64_t __uint_fast64_t; -typedef __uint8_t __uint_least8_t; -typedef __uint16_t __uint_least16_t; -typedef __uint32_t __uint_least32_t; -typedef __uint64_t __uint_least64_t; typedef __uint32_t __u_register_t; -typedef __uint32_t __vm_offset_t; typedef __uint32_t __vm_paddr_t; -typedef __uint32_t __vm_size_t; typedef unsigned int ___wchar_t; #define __WCHAR_MIN 0 /* min value for a wchar_t */ diff --git a/sys/arm64/include/_types.h b/sys/arm64/include/_types.h index b54a17d25024..720900a270d4 100644 --- a/sys/arm64/include/_types.h +++ b/sys/arm64/include/_types.h @@ -35,22 +35,10 @@ #ifndef _MACHINE__TYPES_H_ #define _MACHINE__TYPES_H_ -#ifndef _SYS_CDEFS_H_ -#error this file needs sys/cdefs.h as a prerequisite +#ifndef _SYS__TYPES_H_ +#error do not include this header, use sys/_types.h #endif -/* - * Basic types upon which most other types are built. - */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef short __int16_t; -typedef unsigned short __uint16_t; -typedef int __int32_t; -typedef unsigned int __uint32_t; -typedef long __int64_t; -typedef unsigned long __uint64_t; - /* * Standard type definitions. */ @@ -60,38 +48,19 @@ typedef __int64_t __critical_t; typedef double __double_t; typedef float __float_t; #endif -typedef __int64_t __intfptr_t; -typedef __int64_t __intmax_t; -typedef __int64_t __intptr_t; typedef __int32_t __int_fast8_t; typedef __int32_t __int_fast16_t; typedef __int32_t __int_fast32_t; typedef __int64_t __int_fast64_t; -typedef __int8_t __int_least8_t; -typedef __int16_t __int_least16_t; -typedef __int32_t __int_least32_t; -typedef __int64_t __int_least64_t; -typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int64_t __register_t; typedef __int64_t __segsz_t; /* segment size (in pages) */ -typedef __uint64_t __size_t; /* sizeof() */ -typedef __int64_t __ssize_t; /* byte count or error */ typedef __int64_t __time_t; /* time()... */ -typedef __uint64_t __uintfptr_t; -typedef __uint64_t __uintmax_t; -typedef __uint64_t __uintptr_t; typedef __uint32_t __uint_fast8_t; typedef __uint32_t __uint_fast16_t; typedef __uint32_t __uint_fast32_t; typedef __uint64_t __uint_fast64_t; -typedef __uint8_t __uint_least8_t; -typedef __uint16_t __uint_least16_t; -typedef __uint32_t __uint_least32_t; -typedef __uint64_t __uint_least64_t; typedef __uint64_t __u_register_t; -typedef __uint64_t __vm_offset_t; typedef __uint64_t __vm_paddr_t; -typedef __uint64_t __vm_size_t; typedef unsigned int ___wchar_t; #define __WCHAR_MIN 0 /* min value for a wchar_t */ diff --git a/sys/mips/include/_types.h b/sys/mips/include/_types.h index 385280b1ea45..dd433eaec316 100644 --- a/sys/mips/include/_types.h +++ b/sys/mips/include/_types.h @@ -42,33 +42,8 @@ #ifndef _MACHINE__TYPES_H_ #define _MACHINE__TYPES_H_ -#ifndef _SYS_CDEFS_H_ -#error this file needs sys/cdefs.h as a prerequisite -#endif - -/* - * Basic types upon which most other types are built. - */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef short __int16_t; -typedef unsigned short __uint16_t; -typedef int __int32_t; -typedef unsigned int __uint32_t; -#ifdef __mips_n64 -typedef long __int64_t; -typedef unsigned long __uint64_t; -#else -#ifndef lint -__extension__ -#endif -/* LONGLONG */ -typedef long long __int64_t; -#ifndef lint -__extension__ -#endif -/* LONGLONG */ -typedef unsigned long long __uint64_t; +#ifndef _SYS__TYPES_H_ +#error do not include this header, use sys/_types.h #endif /* @@ -81,22 +56,13 @@ typedef float __float_t; #endif #ifdef __mips_n64 typedef __int64_t __critical_t; -typedef __int64_t __intfptr_t; -typedef __int64_t __intptr_t; #else typedef __int32_t __critical_t; -typedef __int32_t __intfptr_t; -typedef __int32_t __intptr_t; #endif -typedef __int64_t __intmax_t; typedef __int32_t __int_fast8_t; typedef __int32_t __int_fast16_t; typedef __int32_t __int_fast32_t; typedef __int64_t __int_fast64_t; -typedef __int8_t __int_least8_t; -typedef __int16_t __int_least16_t; -typedef __int32_t __int_least32_t; -typedef __int64_t __int_least64_t; #if defined(__mips_n64) || defined(__mips_n32) typedef __int64_t __register_t; typedef __int64_t f_register_t; @@ -105,42 +71,20 @@ typedef __int32_t __register_t; typedef __int32_t f_register_t; #endif #ifdef __mips_n64 -typedef __int64_t __ptrdiff_t; typedef __int64_t __segsz_t; -typedef __uint64_t __size_t; -typedef __int64_t __ssize_t; -typedef __uint64_t __uintfptr_t; -typedef __uint64_t __uintptr_t; #else -typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int32_t __segsz_t; /* segment size (in pages) */ -typedef __uint32_t __size_t; /* sizeof() */ -typedef __int32_t __ssize_t; /* byte count or error */ -typedef __uint32_t __uintfptr_t; -typedef __uint32_t __uintptr_t; #endif typedef __int64_t __time_t; /* time()... */ -typedef __uint64_t __uintmax_t; typedef __uint32_t __uint_fast8_t; typedef __uint32_t __uint_fast16_t; typedef __uint32_t __uint_fast32_t; typedef __uint64_t __uint_fast64_t; -typedef __uint8_t __uint_least8_t; -typedef __uint16_t __uint_least16_t; -typedef __uint32_t __uint_least32_t; -typedef __uint64_t __uint_least64_t; #if defined(__mips_n64) || defined(__mips_n32) typedef __uint64_t __u_register_t; #else typedef __uint32_t __u_register_t; #endif -#ifdef __mips_n64 -typedef __uint64_t __vm_offset_t; -typedef __uint64_t __vm_size_t; -#else -typedef __uint32_t __vm_offset_t; -typedef __uint32_t __vm_size_t; -#endif #if defined(__mips_n64) || defined(__mips_n32) /* PHYSADDR_64_BIT */ typedef __uint64_t __vm_paddr_t; #else diff --git a/sys/powerpc/include/_types.h b/sys/powerpc/include/_types.h index 7915f5627579..f3163ea6d9db 100644 --- a/sys/powerpc/include/_types.h +++ b/sys/powerpc/include/_types.h @@ -41,33 +41,8 @@ #ifndef _MACHINE__TYPES_H_ #define _MACHINE__TYPES_H_ -#ifndef _SYS_CDEFS_H_ -#error this file needs sys/cdefs.h as a prerequisite -#endif - -/* - * Basic types upon which most other types are built. - */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef short __int16_t; -typedef unsigned short __uint16_t; -typedef int __int32_t; -typedef unsigned int __uint32_t; -#ifdef __LP64__ -typedef long __int64_t; -typedef unsigned long __uint64_t; -#else -#ifndef lint -__extension__ -#endif -/* LONGLONG */ -typedef long long __int64_t; -#ifndef lint -__extension__ -#endif -/* LONGLONG */ -typedef unsigned long long __uint64_t; +#ifndef _SYS__TYPES_H_ +#error do not include this header, use sys/_types.h #endif /* @@ -80,66 +55,35 @@ typedef float __float_t; #endif #ifdef __LP64__ typedef __int64_t __critical_t; -typedef __int64_t __intfptr_t; -typedef __int64_t __intptr_t; #else typedef __int32_t __critical_t; -typedef __int32_t __intfptr_t; -typedef __int32_t __intptr_t; #endif -typedef __int64_t __intmax_t; typedef __int32_t __int_fast8_t; typedef __int32_t __int_fast16_t; typedef __int32_t __int_fast32_t; typedef __int64_t __int_fast64_t; -typedef __int8_t __int_least8_t; -typedef __int16_t __int_least16_t; -typedef __int32_t __int_least32_t; -typedef __int64_t __int_least64_t; #ifdef __LP64__ -typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int64_t __register_t; typedef __int64_t __segsz_t; /* segment size (in pages) */ -typedef __uint64_t __size_t; /* sizeof() */ -typedef __int64_t __ssize_t; /* byte count or error */ #else -typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int32_t __register_t; typedef __int32_t __segsz_t; /* segment size (in pages) */ -typedef __uint32_t __size_t; /* sizeof() */ -typedef __int32_t __ssize_t; /* byte count or error */ #endif typedef __int64_t __time_t; /* time()... */ -#ifdef __LP64__ -typedef __uint64_t __uintfptr_t; -typedef __uint64_t __uintptr_t; -#else -typedef __uint32_t __uintfptr_t; -typedef __uint32_t __uintptr_t; -#endif -typedef __uint64_t __uintmax_t; typedef __uint32_t __uint_fast8_t; typedef __uint32_t __uint_fast16_t; typedef __uint32_t __uint_fast32_t; typedef __uint64_t __uint_fast64_t; -typedef __uint8_t __uint_least8_t; -typedef __uint16_t __uint_least16_t; -typedef __uint32_t __uint_least32_t; -typedef __uint64_t __uint_least64_t; #ifdef __LP64__ typedef __uint64_t __u_register_t; -typedef __uint64_t __vm_offset_t; typedef __uint64_t __vm_paddr_t; -typedef __uint64_t __vm_size_t; #else typedef __uint32_t __u_register_t; -typedef __uint32_t __vm_offset_t; #ifdef BOOKE typedef __uint64_t __vm_paddr_t; #else typedef __uint32_t __vm_paddr_t; #endif -typedef __uint32_t __vm_size_t; #endif typedef int ___wchar_t; diff --git a/sys/riscv/include/_types.h b/sys/riscv/include/_types.h index 50b80af4c636..a3a8e97b5e92 100644 --- a/sys/riscv/include/_types.h +++ b/sys/riscv/include/_types.h @@ -35,22 +35,10 @@ #ifndef _MACHINE__TYPES_H_ #define _MACHINE__TYPES_H_ -#ifndef _SYS_CDEFS_H_ -#error this file needs sys/cdefs.h as a prerequisite +#ifndef _SYS__TYPES_H_ +#error do not include this header, use sys/_types.h #endif -/* - * Basic types upon which most other types are built. - */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef short __int16_t; -typedef unsigned short __uint16_t; -typedef int __int32_t; -typedef unsigned int __uint32_t; -typedef long __int64_t; -typedef unsigned long __uint64_t; - /* * Standard type definitions. */ @@ -60,38 +48,19 @@ typedef __int64_t __critical_t; typedef double __double_t; typedef float __float_t; #endif -typedef __int64_t __intfptr_t; -typedef __int64_t __intmax_t; -typedef __int64_t __intptr_t; typedef __int32_t __int_fast8_t; typedef __int32_t __int_fast16_t; typedef __int32_t __int_fast32_t; typedef __int64_t __int_fast64_t; -typedef __int8_t __int_least8_t; -typedef __int16_t __int_least16_t; -typedef __int32_t __int_least32_t; -typedef __int64_t __int_least64_t; -typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int64_t __register_t; typedef __int64_t __segsz_t; /* segment size (in pages) */ -typedef __uint64_t __size_t; /* sizeof() */ -typedef __int64_t __ssize_t; /* byte count or error */ typedef __int64_t __time_t; /* time()... */ -typedef __uint64_t __uintfptr_t; -typedef __uint64_t __uintmax_t; -typedef __uint64_t __uintptr_t; typedef __uint32_t __uint_fast8_t; typedef __uint32_t __uint_fast16_t; typedef __uint32_t __uint_fast32_t; typedef __uint64_t __uint_fast64_t; -typedef __uint8_t __uint_least8_t; -typedef __uint16_t __uint_least16_t; -typedef __uint32_t __uint_least32_t; -typedef __uint64_t __uint_least64_t; typedef __uint64_t __u_register_t; -typedef __uint64_t __vm_offset_t; typedef __uint64_t __vm_paddr_t; -typedef __uint64_t __vm_size_t; typedef int ___wchar_t; #define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */ diff --git a/sys/sys/_types.h b/sys/sys/_types.h index 020ba025ea98..1669111a437c 100644 --- a/sys/sys/_types.h +++ b/sys/sys/_types.h @@ -32,6 +32,84 @@ #define _SYS__TYPES_H_ #include + +/* + * Basic types upon which most other types are built. + * + * Note: It would be nice to simply use the compiler-provided __FOO_TYPE__ + * macros. However, in order to do so we have to check that those match the + * previous typedefs exactly (not just that they have the same size) since any + * change would be an ABI break. For example, changing `long` to `long long` + * results in different C++ name mangling. + */ +typedef signed char __int8_t; +typedef unsigned char __uint8_t; +typedef short __int16_t; +typedef unsigned short __uint16_t; +typedef int __int32_t; +typedef unsigned int __uint32_t; +#if __SIZEOF_LONG__ == 8 +typedef long __int64_t; +typedef unsigned long __uint64_t; +#elif __SIZEOF_LONG__ == 4 +__extension__ +typedef long long __int64_t; +__extension__ +typedef unsigned long long __uint64_t; +#else +#error unsupported long size +#endif + +typedef __int8_t __int_least8_t; +typedef __int16_t __int_least16_t; +typedef __int32_t __int_least32_t; +typedef __int64_t __int_least64_t; +typedef __int64_t __intmax_t; +typedef __uint8_t __uint_least8_t; +typedef __uint16_t __uint_least16_t; +typedef __uint32_t __uint_least32_t; +typedef __uint64_t __uint_least64_t; +typedef __uint64_t __uintmax_t; + +#if __SIZEOF_POINTER__ == 8 +typedef __int64_t __intptr_t; +typedef __int64_t __intfptr_t; +typedef __uint64_t __uintptr_t; +typedef __uint64_t __uintfptr_t; +typedef __uint64_t __vm_offset_t; +typedef __uint64_t __vm_size_t; +#elif __SIZEOF_POINTER__ == 4 +typedef __int32_t __intptr_t; +typedef __int32_t __intfptr_t; +typedef __uint32_t __uintptr_t; +typedef __uint32_t __uintfptr_t; +typedef __uint32_t __vm_offset_t; +typedef __uint32_t __vm_size_t; +#else +#error unsupported pointer size +#endif + +#if __SIZEOF_SIZE_T__ == 8 +typedef __uint64_t __size_t; /* sizeof() */ +typedef __int64_t __ssize_t; /* byte count or error */ +#elif __SIZEOF_SIZE_T__ == 4 +typedef __uint32_t __size_t; /* sizeof() */ +typedef __int32_t __ssize_t; /* byte count or error */ +#else +#error unsupported size_t size +#endif + +#if __SIZEOF_PTRDIFF_T__ == 8 +typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */ +#elif __SIZEOF_PTRDIFF_T__ == 4 +typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ +#else +#error unsupported ptrdiff_t size +#endif + +/* + * Target-dependent type definitions. + */ #include /* diff --git a/sys/sys/stddef.h b/sys/sys/stddef.h index eeff767bbf20..fba87e4b4702 100644 --- a/sys/sys/stddef.h +++ b/sys/sys/stddef.h @@ -33,7 +33,7 @@ #include #include -#include +#include #ifndef _PTRDIFF_T_DECLARED typedef __ptrdiff_t ptrdiff_t; diff --git a/sys/x86/include/_types.h b/sys/x86/include/_types.h index 68dd7eba6ce1..408f833a1218 100644 --- a/sys/x86/include/_types.h +++ b/sys/x86/include/_types.h @@ -41,33 +41,14 @@ #ifndef _MACHINE__TYPES_H_ #define _MACHINE__TYPES_H_ -#ifndef _SYS_CDEFS_H_ -#error this file needs sys/cdefs.h as a prerequisite +#ifndef _SYS__TYPES_H_ +#error do not include this header, use sys/_types.h #endif #include #define __NO_STRICT_ALIGNMENT -/* - * Basic types upon which most other types are built. - */ -typedef signed char __int8_t; -typedef unsigned char __uint8_t; -typedef short __int16_t; -typedef unsigned short __uint16_t; -typedef int __int32_t; -typedef unsigned int __uint32_t; -#ifdef __LP64__ -typedef long __int64_t; -typedef unsigned long __uint64_t; -#else -__extension__ -typedef long long __int64_t; -__extension__ -typedef unsigned long long __uint64_t; -#endif - /* * Standard type definitions. */ @@ -78,8 +59,6 @@ typedef __int64_t __critical_t; typedef double __double_t; typedef float __float_t; #endif -typedef __int64_t __intfptr_t; -typedef __int64_t __intptr_t; #else typedef unsigned long __clock_t; typedef __int32_t __critical_t; @@ -87,56 +66,30 @@ typedef __int32_t __critical_t; typedef long double __double_t; typedef long double __float_t; #endif -typedef __int32_t __intfptr_t; -typedef __int32_t __intptr_t; #endif -typedef __int64_t __intmax_t; typedef __int32_t __int_fast8_t; typedef __int32_t __int_fast16_t; typedef __int32_t __int_fast32_t; typedef __int64_t __int_fast64_t; -typedef __int8_t __int_least8_t; -typedef __int16_t __int_least16_t; -typedef __int32_t __int_least32_t; -typedef __int64_t __int_least64_t; #ifdef __LP64__ -typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */ typedef __int64_t __register_t; typedef __int64_t __segsz_t; /* segment size (in pages) */ -typedef __uint64_t __size_t; /* sizeof() */ -typedef __int64_t __ssize_t; /* byte count or error */ typedef __int64_t __time_t; /* time()... */ -typedef __uint64_t __uintfptr_t; -typedef __uint64_t __uintptr_t; #else -typedef __int32_t __ptrdiff_t; typedef __int32_t __register_t; typedef __int32_t __segsz_t; -typedef __uint32_t __size_t; -typedef __int32_t __ssize_t; typedef __int32_t __time_t; -typedef __uint32_t __uintfptr_t; -typedef __uint32_t __uintptr_t; #endif -typedef __uint64_t __uintmax_t; typedef __uint32_t __uint_fast8_t; typedef __uint32_t __uint_fast16_t; typedef __uint32_t __uint_fast32_t; typedef __uint64_t __uint_fast64_t; -typedef __uint8_t __uint_least8_t; -typedef __uint16_t __uint_least16_t; -typedef __uint32_t __uint_least32_t; -typedef __uint64_t __uint_least64_t; #ifdef __LP64__ typedef __uint64_t __u_register_t; -typedef __uint64_t __vm_offset_t; typedef __uint64_t __vm_paddr_t; -typedef __uint64_t __vm_size_t; #else typedef __uint32_t __u_register_t; -typedef __uint32_t __vm_offset_t; typedef __uint64_t __vm_paddr_t; -typedef __uint32_t __vm_size_t; #endif typedef int ___wchar_t; diff --git a/sys/x86/include/reg.h b/sys/x86/include/reg.h index f82848192e67..6bfe7aaedd06 100644 --- a/sys/x86/include/reg.h +++ b/sys/x86/include/reg.h @@ -39,7 +39,7 @@ #ifndef _MACHINE_REG_H_ #define _MACHINE_REG_H_ -#include +#include #ifdef __i386__ /* From owner-dev-commits-src-all@freebsd.org Mon Jun 14 15:55:01 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4CA2964804C; Mon, 14 Jun 2021 15:55:01 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3bcj1gc1z3h3d; Mon, 14 Jun 2021 15:55:01 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro.local (ralph.baldwin.cx [66.234.199.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id BB8FAD3FF; Mon, 14 Jun 2021 15:55:00 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: git: 8794846a91c5 - main - bhyve: Add support for handling disk resize events to block_if. From: John Baldwin To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202106120100.15C10iFD084740@gitrepo.freebsd.org> Message-ID: <776cbb8c-11ca-d7fc-c055-553d57d599d4@FreeBSD.org> Date: Mon, 14 Jun 2021 08:54:56 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <202106120100.15C10iFD084740@gitrepo.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 15:55:01 -0000 On 6/11/21 6:00 PM, John Baldwin wrote: > The branch main has been updated by jhb: > > URL: https://cgit.FreeBSD.org/src/commit/?id=8794846a91c5429c612ba939c61ebf8f1ff1a628 > > commit 8794846a91c5429c612ba939c61ebf8f1ff1a628 > Author: John Baldwin > AuthorDate: 2021-06-12 00:59:25 +0000 > Commit: John Baldwin > CommitDate: 2021-06-12 01:00:24 +0000 > > bhyve: Add support for handling disk resize events to block_if. > > Allow clients of blockif to register a resize callback handler. When > a callback is registered, register an EVFILT_VNODE kevent watching the > backing store for a change in the file's attributes. If the size has > changed when the kevent fires, invoke the clients' callback. > > Currently resize detection is limited to backing stores that support > EVFILT_VNODE kevents such as regular files. Notably, this doesn't currently work for ZVOLs. Adding support for NOTE_ATTR events for ZVOLs when they resize is all that is needed for this to work woith ZVOLs. -- John Baldwin From owner-dev-commits-src-all@freebsd.org Mon Jun 14 16:07:21 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1FF1764B49E; Mon, 14 Jun 2021 16:07:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3btx0Gzqz3j4l; Mon, 14 Jun 2021 16:07:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E20D817958; Mon, 14 Jun 2021 16:07:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EG7Kl0016524; Mon, 14 Jun 2021 16:07:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EG7KKm016523; Mon, 14 Jun 2021 16:07:20 GMT (envelope-from git) Date: Mon, 14 Jun 2021 16:07:20 GMT Message-Id: <202106141607.15EG7KKm016523@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 4a3bd4277286 - stable/13 - LinuxKPI: add pr_err_once MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4a3bd4277286909a5c20c3277c9c2f2d726a1113 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 16:07:21 -0000 The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=4a3bd4277286909a5c20c3277c9c2f2d726a1113 commit 4a3bd4277286909a5c20c3277c9c2f2d726a1113 Author: Greg V AuthorDate: 2021-06-07 14:30:18 +0000 Commit: Ed Maste CommitDate: 2021-06-14 16:06:09 +0000 LinuxKPI: add pr_err_once Reviewed by: hselasky, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30672 (cherry picked from commit 05c2d94a081d5948560a01c26c7f432960cde606) --- sys/compat/linuxkpi/common/include/linux/kernel.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h index 6ee292940016..46b11d89652b 100644 --- a/sys/compat/linuxkpi/common/include/linux/kernel.h +++ b/sys/compat/linuxkpi/common/include/linux/kernel.h @@ -235,6 +235,8 @@ extern int linuxkpi_debug; log(LOG_CRIT, pr_fmt(fmt), ##__VA_ARGS__) #define pr_err(fmt, ...) \ log(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__) +#define pr_err_once(fmt, ...) \ + log_once(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__) #define pr_warning(fmt, ...) \ log(LOG_WARNING, pr_fmt(fmt), ##__VA_ARGS__) #define pr_warn(...) \ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 16:07:58 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5611A64B657; Mon, 14 Jun 2021 16:07:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3bvf1vykz3jLR; Mon, 14 Jun 2021 16:07:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2A07C17A41; Mon, 14 Jun 2021 16:07:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EG7wn2016704; Mon, 14 Jun 2021 16:07:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EG7wsq016702; Mon, 14 Jun 2021 16:07:58 GMT (envelope-from git) Date: Mon, 14 Jun 2021 16:07:58 GMT Message-Id: <202106141607.15EG7wsq016702@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 6bed59d60bf6 - stable/12 - LinuxKPI: add pr_err_once MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 6bed59d60bf680d94933df9724547c0f9af57cb1 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 16:07:58 -0000 The branch stable/12 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=6bed59d60bf680d94933df9724547c0f9af57cb1 commit 6bed59d60bf680d94933df9724547c0f9af57cb1 Author: Greg V AuthorDate: 2021-06-07 14:30:18 +0000 Commit: Ed Maste CommitDate: 2021-06-14 16:06:56 +0000 LinuxKPI: add pr_err_once Reviewed by: hselasky, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30672 (cherry picked from commit 05c2d94a081d5948560a01c26c7f432960cde606) --- sys/compat/linuxkpi/common/include/linux/kernel.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h index 9b0a2df72322..36d89cf83557 100644 --- a/sys/compat/linuxkpi/common/include/linux/kernel.h +++ b/sys/compat/linuxkpi/common/include/linux/kernel.h @@ -235,6 +235,8 @@ extern int linuxkpi_debug; log(LOG_CRIT, pr_fmt(fmt), ##__VA_ARGS__) #define pr_err(fmt, ...) \ log(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__) +#define pr_err_once(fmt, ...) \ + log_once(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__) #define pr_warning(fmt, ...) \ log(LOG_WARNING, pr_fmt(fmt), ##__VA_ARGS__) #define pr_warn(...) \ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 16:10:11 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D373C64BE24; Mon, 14 Jun 2021 16:10:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3byC5bbKz3jbL; Mon, 14 Jun 2021 16:10:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A81A217A45; Mon, 14 Jun 2021 16:10:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EGABjs020640; Mon, 14 Jun 2021 16:10:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EGABkb020637; Mon, 14 Jun 2021 16:10:11 GMT (envelope-from git) Date: Mon, 14 Jun 2021 16:10:11 GMT Message-Id: <202106141610.15EGABkb020637@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 626ecbc91b39 - stable/11 - LinuxKPI: add pr_err_once MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 626ecbc91b3983e0a78c41164943ef0daba7d20f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 16:10:11 -0000 The branch stable/11 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=626ecbc91b3983e0a78c41164943ef0daba7d20f commit 626ecbc91b3983e0a78c41164943ef0daba7d20f Author: Greg V AuthorDate: 2021-06-07 14:30:18 +0000 Commit: Ed Maste CommitDate: 2021-06-14 16:07:39 +0000 LinuxKPI: add pr_err_once Reviewed by: hselasky, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30672 (cherry picked from commit 05c2d94a081d5948560a01c26c7f432960cde606) --- sys/compat/linuxkpi/common/include/linux/kernel.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h index 4d0d417a736b..23239e42652b 100644 --- a/sys/compat/linuxkpi/common/include/linux/kernel.h +++ b/sys/compat/linuxkpi/common/include/linux/kernel.h @@ -231,6 +231,8 @@ extern int linuxkpi_debug; log(LOG_CRIT, pr_fmt(fmt), ##__VA_ARGS__) #define pr_err(fmt, ...) \ log(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__) +#define pr_err_once(fmt, ...) \ + log_once(LOG_ERR, pr_fmt(fmt), ##__VA_ARGS__) #define pr_warning(fmt, ...) \ log(LOG_WARNING, pr_fmt(fmt), ##__VA_ARGS__) #define pr_warn(...) \ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 16:10:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C230F64C110; Mon, 14 Jun 2021 16:10:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3byf59gMz3jYB; Mon, 14 Jun 2021 16:10:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 99F591795D; Mon, 14 Jun 2021 16:10:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EGAYDf025282; Mon, 14 Jun 2021 16:10:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EGAYaX025281; Mon, 14 Jun 2021 16:10:34 GMT (envelope-from git) Date: Mon, 14 Jun 2021 16:10:34 GMT Message-Id: <202106141610.15EGAYaX025281@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: 715df83abc04 - main - Disable strict-fp for powerpcspe, as it does not work properly yet MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 715df83abc049b23d9acddc81f2480bd4c056d64 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 16:10:34 -0000 The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=715df83abc049b23d9acddc81f2480bd4c056d64 commit 715df83abc049b23d9acddc81f2480bd4c056d64 Author: Dimitry Andric AuthorDate: 2021-06-14 13:47:53 +0000 Commit: Dimitry Andric CommitDate: 2021-06-14 16:10:03 +0000 Disable strict-fp for powerpcspe, as it does not work properly yet Merge commit 5c18d1136665 from llvm git (by Qiu Chaofan) [SPE] Disable strict-fp for SPE by default As discussed in PR50385, strict-fp on PowerPC SPE has not been handled well. This patch disables it by default for SPE. Reviewed By: nemanjai, vit9696, jhibbits Differential Revision: https://reviews.llvm.org/D103235 PR: 255570 MFC after: 6 weeks --- contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp b/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp index ff09c0fa2a23..6c3036836c6d 100644 --- a/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp +++ b/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp @@ -57,6 +57,7 @@ bool PPCTargetInfo::handleTargetFeatures(std::vector &Features, } else if (Feature == "+pcrelative-memops") { HasPCRelativeMemops = true; } else if (Feature == "+spe" || Feature == "+efpu2") { + HasStrictFP = false; HasSPE = true; LongDoubleWidth = LongDoubleAlign = 64; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 16:35:33 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B88526521A7; Mon, 14 Jun 2021 16:35:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3cWT4qCPz3nF9; Mon, 14 Jun 2021 16:35:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8DE55180F9; Mon, 14 Jun 2021 16:35:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EGZXiU056096; Mon, 14 Jun 2021 16:35:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EGZXmh056095; Mon, 14 Jun 2021 16:35:33 GMT (envelope-from git) Date: Mon, 14 Jun 2021 16:35:33 GMT Message-Id: <202106141635.15EGZXmh056095@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 9c84b01ac069 - stable/12 - pf: Convenience function for optional (numeric) arguments MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9c84b01ac069ddf50dba58f2fcff965c525dc946 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 16:35:33 -0000 The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=9c84b01ac069ddf50dba58f2fcff965c525dc946 commit 9c84b01ac069ddf50dba58f2fcff965c525dc946 Author: Kristof Provost AuthorDate: 2021-05-15 11:45:55 +0000 Commit: Kristof Provost CommitDate: 2021-06-14 16:25:16 +0000 pf: Convenience function for optional (numeric) arguments Add _opt() variants for the uint* functions. These functions set the provided default value if the nvlist doesn't contain the relevant value. This is helpful for optional values (e.g. when the API is extended to add new fields). While here simplify the header by also using macros to create the prototypes for the macro-generated function implementations. Reviewed by: scottl MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30510 (cherry picked from commit 7c4342890bf17b72f0d79ada1326d9cbf34e736c) --- sys/netpfil/pf/pf_nv.c | 15 +++++++++++++++ sys/netpfil/pf/pf_nv.h | 35 ++++++++++++++--------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/sys/netpfil/pf/pf_nv.c b/sys/netpfil/pf/pf_nv.c index dab72f04d138..31943ba69687 100644 --- a/sys/netpfil/pf/pf_nv.c +++ b/sys/netpfil/pf/pf_nv.c @@ -40,6 +40,21 @@ __FBSDID("$FreeBSD$"); #include #define PF_NV_IMPL_UINT(fnname, type, max) \ + int \ + pf_nv ## fnname ## _opt(const nvlist_t *nvl, const char *name, \ + type *val, type dflt) \ + { \ + uint64_t raw; \ + if (! nvlist_exists_number(nvl, name)) { \ + *val = dflt; \ + return (0); \ + } \ + raw = nvlist_get_number(nvl, name); \ + if (raw > max) \ + return (ERANGE); \ + *val = (type)raw; \ + return (0); \ + } \ int \ pf_nv ## fnname(const nvlist_t *nvl, const char *name, type *val) \ { \ diff --git a/sys/netpfil/pf/pf_nv.h b/sys/netpfil/pf/pf_nv.h index 321c0425fe7f..e53d19018ffe 100644 --- a/sys/netpfil/pf/pf_nv.h +++ b/sys/netpfil/pf/pf_nv.h @@ -56,29 +56,22 @@ SDT_PROBE_DECLARE(pf, ioctl, nvchk, error); goto errout; \ } while (0) +#define PF_NV_DEF_UINT(fnname, type, max) \ + int pf_nv ## fnname ## _opt(const nvlist_t *, const char *, \ + type *, type); \ + int pf_nv ## fnname(const nvlist_t *, const char *, type *); \ + int pf_nv ## fnname ## _array(const nvlist_t *, const char *, \ + type *,size_t, size_t *); \ + void pf_ ## fnname ## _array_nv(nvlist_t *, const char *, \ + const type *, size_t); + +PF_NV_DEF_UINT(uint8, uint8_t, UINT8_MAX); +PF_NV_DEF_UINT(uint16, uint16_t, UINT16_MAX); +PF_NV_DEF_UINT(uint32, uint32_t, UINT32_MAX); +PF_NV_DEF_UINT(uint64, uint64_t, UINT64_MAX); + int pf_nvbinary(const nvlist_t *, const char *, void *, size_t); int pf_nvint(const nvlist_t *, const char *, int *); -int pf_nvuint8(const nvlist_t *, const char *, uint8_t *); -int pf_nvuint8_array(const nvlist_t *, const char *, uint8_t *, - size_t, size_t *); -void pf_uint8_array_nv(nvlist_t *, const char *, const uint8_t *, - size_t); -int pf_nvuint16(const nvlist_t *, const char *, uint16_t *); -int pf_nvuint16_array(const nvlist_t *, const char *, uint16_t *, - size_t, size_t *); -void pf_uint16_array_nv(nvlist_t *, const char *, const uint16_t *, - size_t); -int pf_nvuint32(const nvlist_t *, const char *, uint32_t *); -int pf_nvuint32_array(const nvlist_t *, const char *, uint32_t *, - size_t, size_t *); -void pf_uint32_array_nv(nvlist_t *, const char *, const uint32_t *, - size_t); -int pf_nvuint64(const nvlist_t *, const char *, uint64_t *); -int pf_nvuint64_array(const nvlist_t *, const char *, uint64_t *, - size_t, size_t *); -void pf_uint64_array_nv(nvlist_t *, const char *, const uint64_t *, - size_t); - int pf_nvstring(const nvlist_t *, const char *, char *, size_t); /* Translation functions */ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 16:35:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 575C065228A; Mon, 14 Jun 2021 16:35:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3cWV1ygkz3nFB; Mon, 14 Jun 2021 16:35:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 26D1517EFC; Mon, 14 Jun 2021 16:35:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EGZYxa056176; Mon, 14 Jun 2021 16:35:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EGZYjE056175; Mon, 14 Jun 2021 16:35:34 GMT (envelope-from git) Date: Mon, 14 Jun 2021 16:35:34 GMT Message-Id: <202106141635.15EGZYjE056175@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 832594e4e294 - stable/13 - pf: Convenience function for optional (numeric) arguments MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 832594e4e29485880cb6db2bacfdc26e74ea7258 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 16:35:34 -0000 The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=832594e4e29485880cb6db2bacfdc26e74ea7258 commit 832594e4e29485880cb6db2bacfdc26e74ea7258 Author: Kristof Provost AuthorDate: 2021-05-15 11:45:55 +0000 Commit: Kristof Provost CommitDate: 2021-06-14 16:14:23 +0000 pf: Convenience function for optional (numeric) arguments Add _opt() variants for the uint* functions. These functions set the provided default value if the nvlist doesn't contain the relevant value. This is helpful for optional values (e.g. when the API is extended to add new fields). While here simplify the header by also using macros to create the prototypes for the macro-generated function implementations. Reviewed by: scottl MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30510 (cherry picked from commit 7c4342890bf17b72f0d79ada1326d9cbf34e736c) --- sys/netpfil/pf/pf_nv.c | 15 +++++++++++++++ sys/netpfil/pf/pf_nv.h | 35 ++++++++++++++--------------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/sys/netpfil/pf/pf_nv.c b/sys/netpfil/pf/pf_nv.c index dab72f04d138..31943ba69687 100644 --- a/sys/netpfil/pf/pf_nv.c +++ b/sys/netpfil/pf/pf_nv.c @@ -40,6 +40,21 @@ __FBSDID("$FreeBSD$"); #include #define PF_NV_IMPL_UINT(fnname, type, max) \ + int \ + pf_nv ## fnname ## _opt(const nvlist_t *nvl, const char *name, \ + type *val, type dflt) \ + { \ + uint64_t raw; \ + if (! nvlist_exists_number(nvl, name)) { \ + *val = dflt; \ + return (0); \ + } \ + raw = nvlist_get_number(nvl, name); \ + if (raw > max) \ + return (ERANGE); \ + *val = (type)raw; \ + return (0); \ + } \ int \ pf_nv ## fnname(const nvlist_t *nvl, const char *name, type *val) \ { \ diff --git a/sys/netpfil/pf/pf_nv.h b/sys/netpfil/pf/pf_nv.h index 321c0425fe7f..e53d19018ffe 100644 --- a/sys/netpfil/pf/pf_nv.h +++ b/sys/netpfil/pf/pf_nv.h @@ -56,29 +56,22 @@ SDT_PROBE_DECLARE(pf, ioctl, nvchk, error); goto errout; \ } while (0) +#define PF_NV_DEF_UINT(fnname, type, max) \ + int pf_nv ## fnname ## _opt(const nvlist_t *, const char *, \ + type *, type); \ + int pf_nv ## fnname(const nvlist_t *, const char *, type *); \ + int pf_nv ## fnname ## _array(const nvlist_t *, const char *, \ + type *,size_t, size_t *); \ + void pf_ ## fnname ## _array_nv(nvlist_t *, const char *, \ + const type *, size_t); + +PF_NV_DEF_UINT(uint8, uint8_t, UINT8_MAX); +PF_NV_DEF_UINT(uint16, uint16_t, UINT16_MAX); +PF_NV_DEF_UINT(uint32, uint32_t, UINT32_MAX); +PF_NV_DEF_UINT(uint64, uint64_t, UINT64_MAX); + int pf_nvbinary(const nvlist_t *, const char *, void *, size_t); int pf_nvint(const nvlist_t *, const char *, int *); -int pf_nvuint8(const nvlist_t *, const char *, uint8_t *); -int pf_nvuint8_array(const nvlist_t *, const char *, uint8_t *, - size_t, size_t *); -void pf_uint8_array_nv(nvlist_t *, const char *, const uint8_t *, - size_t); -int pf_nvuint16(const nvlist_t *, const char *, uint16_t *); -int pf_nvuint16_array(const nvlist_t *, const char *, uint16_t *, - size_t, size_t *); -void pf_uint16_array_nv(nvlist_t *, const char *, const uint16_t *, - size_t); -int pf_nvuint32(const nvlist_t *, const char *, uint32_t *); -int pf_nvuint32_array(const nvlist_t *, const char *, uint32_t *, - size_t, size_t *); -void pf_uint32_array_nv(nvlist_t *, const char *, const uint32_t *, - size_t); -int pf_nvuint64(const nvlist_t *, const char *, uint64_t *); -int pf_nvuint64_array(const nvlist_t *, const char *, uint64_t *, - size_t, size_t *); -void pf_uint64_array_nv(nvlist_t *, const char *, const uint64_t *, - size_t); - int pf_nvstring(const nvlist_t *, const char *, char *, size_t); /* Translation functions */ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 17:42:35 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C85F1660A7D; Mon, 14 Jun 2021 17:42:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3f0q56xkz3v0F; Mon, 14 Jun 2021 17:42:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9926F18F7F; Mon, 14 Jun 2021 17:42:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EHgZl3050681; Mon, 14 Jun 2021 17:42:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EHgZB5050680; Mon, 14 Jun 2021 17:42:35 GMT (envelope-from git) Date: Mon, 14 Jun 2021 17:42:35 GMT Message-Id: <202106141742.15EHgZB5050680@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: d575e81fbcfa - main - gconcat: Implement new online append feature MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d575e81fbcfa0a83848a8b9b09dd02497bfd5b00 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 17:42:35 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=d575e81fbcfa0a83848a8b9b09dd02497bfd5b00 commit d575e81fbcfa0a83848a8b9b09dd02497bfd5b00 Author: Noah Bergbauer AuthorDate: 2020-12-27 21:09:38 +0000 Commit: Warner Losh CommitDate: 2021-06-14 17:42:03 +0000 gconcat: Implement new online append feature Implement the "gconcat append" command which can be used to append a disk to the end of an existing gconcat device without unmounting. If the gconcat device is using the "automatic" method, i.e., stores metadata on the devices, new metadata is written to all existing components, as well as to the newly added one. Pull Request: https://github.com/freebsd/freebsd-src/pull/472 Reviewed by: imp@ --- lib/geom/concat/gconcat.8 | 45 ++++++++-- lib/geom/concat/geom_concat.c | 7 ++ sys/geom/concat/g_concat.c | 204 ++++++++++++++++++++++++++++++++++++++++++ sys/geom/concat/g_concat.h | 1 + 4 files changed, 252 insertions(+), 5 deletions(-) diff --git a/lib/geom/concat/gconcat.8 b/lib/geom/concat/gconcat.8 index d874b087b649..0aed6dbfb744 100644 --- a/lib/geom/concat/gconcat.8 +++ b/lib/geom/concat/gconcat.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 21, 2004 +.Dd June 14, 2021 .Dt GCONCAT 8 .Os .Sh NAME @@ -46,6 +46,11 @@ .Ar name .Ar prov ... .Nm +.Cm append +.Op Fl hv +.Ar name +.Ar prov +.Nm .Cm stop .Op Fl fv .Ar name ... @@ -104,10 +109,44 @@ method, where metadata are stored in every device's last sector. The kernel module .Pa geom_concat.ko will be loaded if it is not loaded already. +.Pp +Additional options include: +.Bl -tag -width ".Fl h" +.It Fl h +Hardcode providers' names in metadata. +.El +.It Cm append +Append a new device to the end of an existing concatenate device +with the specified +.Ar name . +.Pp +If the existing device is using the +.Dq manual +method, the new device is simply appended as-is. +.Pp +If the existing device is using the +.Dq automatic +method, the device is appended persistently. +New +.Cm gconcat +metadata is written to all existing components, as well as to the +newly added one. +.Pp +Additional options include: +.Bl -tag -width ".Fl h" +.It Fl h +Hardcode providers' names in metadata. +.El .It Cm stop Turn off existing concatenate device by its .Ar name . This command does not touch on-disk metadata! +.Pp +Additional options include: +.Bl -tag -width ".Fl f" +.It Fl f +Stop the given device even if it is opened. +.El .It Cm destroy Same as .Cm stop . @@ -131,10 +170,6 @@ See .Pp Additional options: .Bl -tag -width indent -.It Fl f -Force the removal of the specified concatenated device. -.It Fl h -Hardcode providers' names in metadata. .It Fl v Be more verbose. .El diff --git a/lib/geom/concat/geom_concat.c b/lib/geom/concat/geom_concat.c index 801bea61cdfd..b8144274bf44 100644 --- a/lib/geom/concat/geom_concat.c +++ b/lib/geom/concat/geom_concat.c @@ -53,6 +53,13 @@ static void concat_dump(struct gctl_req *req); static void concat_label(struct gctl_req *req); struct g_command class_commands[] = { + { "append", G_FLAG_VERBOSE, NULL, + { + { 'h', "hardcode", NULL, G_TYPE_BOOL }, + G_OPT_SENTINEL + }, + "[-hv] name prov" + }, { "clear", G_FLAG_VERBOSE, concat_main, G_NULL_OPTS, "[-v] prov ..." }, diff --git a/sys/geom/concat/g_concat.c b/sys/geom/concat/g_concat.c index 3cbf50a7af1a..1bfca1585423 100644 --- a/sys/geom/concat/g_concat.c +++ b/sys/geom/concat/g_concat.c @@ -595,6 +595,10 @@ g_concat_add_disk(struct g_concat_softc *sc, struct g_provider *pp, u_int no) G_CONCAT_DEBUG(0, "Metadata on %s changed.", pp->name); goto fail; } + + disk->d_hardcoded = md.md_provider[0] != '\0'; + } else { + disk->d_hardcoded = false; } cp->private = disk; @@ -984,6 +988,203 @@ g_concat_ctl_destroy(struct gctl_req *req, struct g_class *mp) } } +static struct g_concat_disk * +g_concat_find_disk(struct g_concat_softc *sc, const char *name) +{ + struct g_concat_disk *disk; + + sx_assert(&sc->sc_disks_lock, SX_LOCKED); + if (strncmp(name, "/dev/", 5) == 0) + name += 5; + TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { + if (disk->d_consumer == NULL) + continue; + if (disk->d_consumer->provider == NULL) + continue; + if (strcmp(disk->d_consumer->provider->name, name) == 0) + return (disk); + } + return (NULL); +} + +static void +g_concat_write_metadata(struct gctl_req *req, struct g_concat_softc *sc) +{ + u_int no = 0; + struct g_concat_disk *disk; + struct g_concat_metadata md; + struct g_provider *pp; + u_char *sector; + int error; + + strlcpy(md.md_magic, G_CONCAT_MAGIC, sizeof(md.md_magic)); + md.md_version = G_CONCAT_VERSION; + strlcpy(md.md_name, sc->sc_name, sizeof(md.md_name)); + md.md_id = sc->sc_id; + md.md_all = sc->sc_ndisks; + TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { + pp = disk->d_consumer->provider; + + md.md_no = no; + bzero(md.md_provider, sizeof(md.md_provider)); + if (disk->d_hardcoded) { + strlcpy(md.md_provider, pp->name, sizeof(md.md_provider)); + } + md.md_provsize = disk->d_consumer->provider->mediasize; + + sector = g_malloc(pp->sectorsize, M_WAITOK); + + concat_metadata_encode(&md, sector); + error = g_access(disk->d_consumer, 0, 1, 0); + if (error == 0) { + error = g_write_data(disk->d_consumer, pp->mediasize - pp->sectorsize, + sector, pp->sectorsize); + (void)g_access(disk->d_consumer, 0, -1, 0); + } + g_free(sector); + if (error != 0) { + gctl_error(req, "Cannot store metadata on %s: %d", pp->name, error); + } + + no++; + } +} + +static void +g_concat_ctl_append(struct gctl_req *req, struct g_class *mp) +{ + struct g_concat_softc *sc; + struct g_consumer *cp, *fcp; + struct g_provider *pp; + struct g_geom *gp; + const char *name, *cname; + struct g_concat_disk *disk; + int *nargs, *hardcode; + int error; + int disk_candelete; + + g_topology_assert(); + + nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs)); + if (nargs == NULL) { + gctl_error(req, "No '%s' argument.", "nargs"); + return; + } + if (*nargs != 2) { + gctl_error(req, "Invalid number of arguments."); + return; + } + hardcode = gctl_get_paraml(req, "hardcode", sizeof(*hardcode)); + if (hardcode == NULL) { + gctl_error(req, "No '%s' argument.", "hardcode"); + return; + } + + cname = gctl_get_asciiparam(req, "arg0"); + if (cname == NULL) { + gctl_error(req, "No 'arg%u' argument.", 0); + return; + } + sc = g_concat_find_device(mp, cname); + if (sc == NULL) { + gctl_error(req, "No such device: %s.", cname); + return; + } + if (sc->sc_provider == NULL) { + /* + * this won't race with g_concat_remove_disk as both + * are holding the topology lock + */ + gctl_error(req, "Device not active, can't append: %s.", cname); + return; + } + G_CONCAT_DEBUG(1, "Appending to %s:", cname); + sx_xlock(&sc->sc_disks_lock); + gp = sc->sc_geom; + fcp = LIST_FIRST(&gp->consumer); + + name = gctl_get_asciiparam(req, "arg1"); + if (name == NULL) { + gctl_error(req, "No 'arg%u' argument.", 1); + goto fail; + } + if (strncmp(name, "/dev/", strlen("/dev/")) == 0) + name += strlen("/dev/"); + pp = g_provider_by_name(name); + if (pp == NULL) { + G_CONCAT_DEBUG(1, "Disk %s is invalid.", name); + gctl_error(req, "Disk %s is invalid.", name); + goto fail; + } + G_CONCAT_DEBUG(1, "Appending %s to this", name); + + if (g_concat_find_disk(sc, name) != NULL) { + gctl_error(req, "Disk %s already appended.", name); + goto fail; + } + + if ((sc->sc_provider->sectorsize % pp->sectorsize) != 0) { + gctl_error(req, "Providers sectorsize mismatch: %u vs %u", + sc->sc_provider->sectorsize, pp->sectorsize); + goto fail; + } + + cp = g_new_consumer(gp); + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; + error = g_attach(cp, pp); + if (error != 0) { + g_destroy_consumer(cp); + gctl_error(req, "Cannot open device %s (error=%d).", + name, error); + goto fail; + } + + error = g_access(cp, 1, 0, 0); + if (error == 0) { + error = g_getattr("GEOM::candelete", cp, &disk_candelete); + if (error != 0) + disk_candelete = 0; + (void)g_access(cp, -1, 0, 0); + } else + G_CONCAT_DEBUG(1, "Failed to access disk %s, error %d.", name, error); + + /* invoke g_access exactly as deep as all the other members currently are */ + if (fcp != NULL && (fcp->acr > 0 || fcp->acw > 0 || fcp->ace > 0)) { + error = g_access(cp, fcp->acr, fcp->acw, fcp->ace); + if (error != 0) { + g_detach(cp); + g_destroy_consumer(cp); + gctl_error(req, "Failed to access disk %s (error=%d).", name, error); + goto fail; + } + } + + disk = malloc(sizeof(*disk), M_CONCAT, M_WAITOK | M_ZERO); + disk->d_consumer = cp; + disk->d_softc = sc; + disk->d_start = TAILQ_LAST(&sc->sc_disks, g_concat_disks)->d_end; + disk->d_end = disk->d_start + cp->provider->mediasize; + disk->d_candelete = disk_candelete; + disk->d_removed = 0; + disk->d_hardcoded = *hardcode; + cp->private = disk; + TAILQ_INSERT_TAIL(&sc->sc_disks, disk, d_next); + sc->sc_ndisks++; + + if (sc->sc_type == G_CONCAT_TYPE_AUTOMATIC) { + /* last sector is for metadata */ + disk->d_end -= cp->provider->sectorsize; + + /* update metadata on all parts */ + g_concat_write_metadata(req, sc); + } + + g_resize_provider(sc->sc_provider, disk->d_end); + +fail: + sx_xunlock(&sc->sc_disks_lock); +} + static void g_concat_config(struct gctl_req *req, struct g_class *mp, const char *verb) { @@ -1008,6 +1209,9 @@ g_concat_config(struct gctl_req *req, struct g_class *mp, const char *verb) strcmp(verb, "stop") == 0) { g_concat_ctl_destroy(req, mp); return; + } else if (strcmp(verb, "append") == 0) { + g_concat_ctl_append(req, mp); + return; } gctl_error(req, "Unknown verb."); } diff --git a/sys/geom/concat/g_concat.h b/sys/geom/concat/g_concat.h index 23adf2c7b5e0..2a12e9c90589 100644 --- a/sys/geom/concat/g_concat.h +++ b/sys/geom/concat/g_concat.h @@ -62,6 +62,7 @@ struct g_concat_disk { off_t d_end; int d_candelete; int d_removed; + bool d_hardcoded; }; struct g_concat_softc { From owner-dev-commits-src-all@freebsd.org Mon Jun 14 17:46:19 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 09F73661843; Mon, 14 Jun 2021 17:46:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3f562ftQz3vHg; Mon, 14 Jun 2021 17:46:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2303D19278; Mon, 14 Jun 2021 17:46:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EHkHAj052976; Mon, 14 Jun 2021 17:46:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EHkHIC052971; Mon, 14 Jun 2021 17:46:17 GMT (envelope-from git) Date: Mon, 14 Jun 2021 17:46:17 GMT Message-Id: <202106141746.15EHkHIC052971@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: dd3fd6b85bcc - main - gconcat append: should be in release notes MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: dd3fd6b85bcc80dc497fecf5cc2d7129803a96bd Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 17:46:19 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=dd3fd6b85bcc80dc497fecf5cc2d7129803a96bd commit dd3fd6b85bcc80dc497fecf5cc2d7129803a96bd Author: Warner Losh AuthorDate: 2021-06-14 17:45:11 +0000 Commit: Warner Losh CommitDate: 2021-06-14 17:45:11 +0000 gconcat append: should be in release notes Note that d575e81fbcfa should be in the release notes. First cut at some useable text. --- RELNOTES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RELNOTES b/RELNOTES index 963ddd8c43a8..b5531d8c298b 100644 --- a/RELNOTES +++ b/RELNOTES @@ -10,6 +10,10 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. +d575e81fbcfa + Support to appending additional devices in gconcact has been + added. + 76681661be28 Remove support for asymmetric cryptographic operations from the kernel open cryptographic framework (OCF). From owner-dev-commits-src-all@freebsd.org Mon Jun 14 18:46:58 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A6E576474DD; Mon, 14 Jun 2021 18:46:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3gR64Bdyz4X14; Mon, 14 Jun 2021 18:46:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6E02819C9F; Mon, 14 Jun 2021 18:46:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EIkwUS038035; Mon, 14 Jun 2021 18:46:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EIkwR9038034; Mon, 14 Jun 2021 18:46:58 GMT (envelope-from git) Date: Mon, 14 Jun 2021 18:46:58 GMT Message-Id: <202106141846.15EIkwR9038034@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: d099db25464b - main - Apply upstream libc++ fix to allow building with devel/xxx-xtoolchain-gcc MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d099db25464b826c5724cf2fb5b22292bbe15f6e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 18:46:58 -0000 The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=d099db25464b826c5724cf2fb5b22292bbe15f6e commit d099db25464b826c5724cf2fb5b22292bbe15f6e Author: Dimitry Andric AuthorDate: 2021-06-14 18:44:09 +0000 Commit: Dimitry Andric CommitDate: 2021-06-14 18:44:09 +0000 Apply upstream libc++ fix to allow building with devel/xxx-xtoolchain-gcc Merge commit 52e9d80d5db2 from llvm git (by Jason Liu): [libc++] add `inline` for __open's definition in ifstream and ofstream Summary: When building with gcc on AIX, it seems that gcc does not like the `always_inline` without the `inline` keyword. So adding the inline keywords in for __open in ifstream and ofstream. That will also make it consistent with __open in basic_filebuf (it seems we added `inline` there before for gcc build as well). Differential Revision: https://reviews.llvm.org/D99422 PR: 255570 MFC after: 6 weeks --- contrib/llvm-project/libcxx/include/fstream | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/llvm-project/libcxx/include/fstream b/contrib/llvm-project/libcxx/include/fstream index d7d6b46c32d9..7b1bbfe16c01 100644 --- a/contrib/llvm-project/libcxx/include/fstream +++ b/contrib/llvm-project/libcxx/include/fstream @@ -244,7 +244,7 @@ public: return open(__p.c_str(), __mode); } #endif - inline _LIBCPP_INLINE_VISIBILITY + _LIBCPP_INLINE_VISIBILITY basic_filebuf* __open(int __fd, ios_base::openmode __mode); #endif basic_filebuf* close(); @@ -574,7 +574,7 @@ basic_filebuf<_CharT, _Traits>::open(const char* __s, ios_base::openmode __mode) } template -inline _LIBCPP_INLINE_VISIBILITY +inline basic_filebuf<_CharT, _Traits>* basic_filebuf<_CharT, _Traits>::__open(int __fd, ios_base::openmode __mode) { basic_filebuf<_CharT, _Traits>* __rt = nullptr; @@ -1326,6 +1326,7 @@ basic_ifstream<_CharT, _Traits>::open(const string& __s, ios_base::openmode __mo } template +inline void basic_ifstream<_CharT, _Traits>::__open(int __fd, ios_base::openmode __mode) { if (__sb_.__open(__fd, __mode | ios_base::in)) @@ -1539,6 +1540,7 @@ basic_ofstream<_CharT, _Traits>::open(const string& __s, ios_base::openmode __mo } template +inline void basic_ofstream<_CharT, _Traits>::__open(int __fd, ios_base::openmode __mode) { if (__sb_.__open(__fd, __mode | ios_base::out)) From owner-dev-commits-src-all@freebsd.org Mon Jun 14 18:47:54 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5B3FF647A30; Mon, 14 Jun 2021 18:47:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3gSB205Mz4XR3; Mon, 14 Jun 2021 18:47:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2C5AB19C64; Mon, 14 Jun 2021 18:47:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EIlscR038250; Mon, 14 Jun 2021 18:47:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EIlsdg038249; Mon, 14 Jun 2021 18:47:54 GMT (envelope-from git) Date: Mon, 14 Jun 2021 18:47:54 GMT Message-Id: <202106141847.15EIlsdg038249@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: bc805293d8da - main - arm: allwinner: dtb: Add overlays to disable SD/MMC node MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bc805293d8dac3a984edc45a5acf3906af791c13 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 18:47:54 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=bc805293d8dac3a984edc45a5acf3906af791c13 commit bc805293d8dac3a984edc45a5acf3906af791c13 Author: Emmanuel Vadot AuthorDate: 2021-05-26 10:58:50 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-14 18:47:37 +0000 arm: allwinner: dtb: Add overlays to disable SD/MMC node Useful for dev Sponsored by: Diablotin Systems --- sys/dts/arm/overlays/sun8i-h3-mmc0-disable.dtso | 10 ++++++++++ sys/dts/arm/overlays/sun8i-h3-mmc1-disable.dtso | 10 ++++++++++ sys/dts/arm/overlays/sun8i-h3-mmc2-disable.dtso | 10 ++++++++++ sys/modules/dtb/allwinner/Makefile | 5 ++++- 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/sys/dts/arm/overlays/sun8i-h3-mmc0-disable.dtso b/sys/dts/arm/overlays/sun8i-h3-mmc0-disable.dtso new file mode 100644 index 000000000000..137c66081efd --- /dev/null +++ b/sys/dts/arm/overlays/sun8i-h3-mmc0-disable.dtso @@ -0,0 +1,10 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun8i-h3"; +}; + +&{/soc/mmc@1c0f000} { + status = "disabled"; +}; diff --git a/sys/dts/arm/overlays/sun8i-h3-mmc1-disable.dtso b/sys/dts/arm/overlays/sun8i-h3-mmc1-disable.dtso new file mode 100644 index 000000000000..36854b4b0c39 --- /dev/null +++ b/sys/dts/arm/overlays/sun8i-h3-mmc1-disable.dtso @@ -0,0 +1,10 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun8i-h3"; +}; + +&{/soc/mmc@1c10000} { + status = "disabled"; +}; diff --git a/sys/dts/arm/overlays/sun8i-h3-mmc2-disable.dtso b/sys/dts/arm/overlays/sun8i-h3-mmc2-disable.dtso new file mode 100644 index 000000000000..ad0fc625a4a2 --- /dev/null +++ b/sys/dts/arm/overlays/sun8i-h3-mmc2-disable.dtso @@ -0,0 +1,10 @@ +/dts-v1/; +/plugin/; + +/ { + compatible = "allwinner,sun8i-h3"; +}; + +&{/soc/mmc@1c11000} { + status = "disabled"; +}; diff --git a/sys/modules/dtb/allwinner/Makefile b/sys/modules/dtb/allwinner/Makefile index 184cadb63fb9..fe3dccc7fd91 100644 --- a/sys/modules/dtb/allwinner/Makefile +++ b/sys/modules/dtb/allwinner/Makefile @@ -25,7 +25,10 @@ DTS= \ sun8i-h3-orangepi-plus2e.dts DTSO= sun8i-a83t-sid.dtso \ - sun8i-h3-i2c0.dtso + sun8i-h3-i2c0.dtso \ + sun8i-h3-mmc0-disable.dtso \ + sun8i-h3-mmc1-disable.dtso \ + sun8i-h3-mmc2-disable.dtso LINKS= \ ${DTBDIR}/sun4i-a10-cubieboard.dtb ${DTBDIR}/cubieboard.dtb \ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 18:47:55 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7A8096474F6; Mon, 14 Jun 2021 18:47:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3gSC2lqkz4Xj0; Mon, 14 Jun 2021 18:47:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4617A19BD3; Mon, 14 Jun 2021 18:47:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EIltHd038280; Mon, 14 Jun 2021 18:47:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EIltTM038279; Mon, 14 Jun 2021 18:47:55 GMT (envelope-from git) Date: Mon, 14 Jun 2021 18:47:55 GMT Message-Id: <202106141847.15EIltTM038279@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 6bc8fe8a9f71 - main - arm: allwinner: Add mmc_pwrseq support MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6bc8fe8a9f711923253115d2a23b81370ef3e33a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 18:47:55 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=6bc8fe8a9f711923253115d2a23b81370ef3e33a commit 6bc8fe8a9f711923253115d2a23b81370ef3e33a Author: Emmanuel Vadot AuthorDate: 2021-05-26 11:13:33 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-14 18:47:37 +0000 arm: allwinner: Add mmc_pwrseq support If a pwrseq is found, set power accordingly. Sponsored by: Diablotin Systems --- sys/arm/allwinner/aw_mmc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/arm/allwinner/aw_mmc.c b/sys/arm/allwinner/aw_mmc.c index 0b3f19aea55f..9f215399e62b 100644 --- a/sys/arm/allwinner/aw_mmc.c +++ b/sys/arm/allwinner/aw_mmc.c @@ -71,6 +71,8 @@ __FBSDID("$FreeBSD$"); #include "mmc_sim_if.h" #endif +#include "mmc_pwrseq_if.h" + #define AW_MMC_MEMRES 0 #define AW_MMC_IRQRES 1 #define AW_MMC_RESSZ 2 @@ -1323,6 +1325,9 @@ aw_mmc_update_ios(device_t bus, device_t child) regulator_disable(sc->mmc_helper.vqmmc_supply); } + if (sc->mmc_helper.mmc_pwrseq) + MMC_PWRSEQ_SET_POWER(sc->mmc_helper.mmc_pwrseq, false); + aw_mmc_reset(sc); break; case power_up: @@ -1339,6 +1344,9 @@ aw_mmc_update_ios(device_t bus, device_t child) if (rv == 0 && reg_status != REGULATOR_STATUS_ENABLED) regulator_enable(sc->mmc_helper.vqmmc_supply); } + + if (sc->mmc_helper.mmc_pwrseq) + MMC_PWRSEQ_SET_POWER(sc->mmc_helper.mmc_pwrseq, true); aw_mmc_init(sc); break; }; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 19:05:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 342316494CA; Mon, 14 Jun 2021 19:05:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3grm0rn2z4ZBF; Mon, 14 Jun 2021 19:05:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 05A6C1A244; Mon, 14 Jun 2021 19:05:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EJ5hWu065334; Mon, 14 Jun 2021 19:05:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EJ5hZp065333; Mon, 14 Jun 2021 19:05:43 GMT (envelope-from git) Date: Mon, 14 Jun 2021 19:05:43 GMT Message-Id: <202106141905.15EJ5hZp065333@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Neel Chauhan Subject: git: 210349325af9 - stable/13 - linuxkpi: Add list_for_each_entry_lockless() macro MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nc X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 210349325af9920d1535ad76fa3b92847684f6e0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 19:05:44 -0000 The branch stable/13 has been updated by nc (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=210349325af9920d1535ad76fa3b92847684f6e0 commit 210349325af9920d1535ad76fa3b92847684f6e0 Author: Neel Chauhan AuthorDate: 2021-06-10 15:14:20 +0000 Commit: Neel Chauhan CommitDate: 2021-06-14 19:05:39 +0000 linuxkpi: Add list_for_each_entry_lockless() macro This is needed by the drm-kmod 5.7 update. Approved by: hselasky (src) Differential Revision: https://reviews.freebsd.org/D30708 (cherry picked from commit b47f461c8e67253fdb394968428b760e880baa08) --- sys/compat/linuxkpi/common/include/linux/list.h | 2 ++ sys/sys/param.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/include/linux/list.h b/sys/compat/linuxkpi/common/include/linux/list.h index 1f3db8e43a08..977207376c45 100644 --- a/sys/compat/linuxkpi/common/include/linux/list.h +++ b/sys/compat/linuxkpi/common/include/linux/list.h @@ -197,6 +197,8 @@ list_del_init(struct list_head *entry) for (p = list_entry((h)->next, typeof(*p), field); &(p)->field != (h); \ p = list_entry((p)->field.next, typeof(*p), field)) +#define list_for_each_entry_lockless(...) list_for_each_entry(__VA_ARGS__) + #define list_for_each_entry_safe(p, n, h, field) \ for (p = list_entry((h)->next, typeof(*p), field), \ n = list_entry((p)->field.next, typeof(*p), field); &(p)->field != (h);\ diff --git a/sys/sys/param.h b/sys/sys/param.h index 22b93e1d17fa..9a5716635a2f 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -60,7 +60,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1300508 /* Master, propagated to newvers */ +#define __FreeBSD_version 1300509 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-dev-commits-src-all@freebsd.org Mon Jun 14 19:17:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0AA7C64A836; Mon, 14 Jun 2021 19:17:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3h6W6hybz4b00; Mon, 14 Jun 2021 19:17:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CAB8B1A606; Mon, 14 Jun 2021 19:17:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EJHdsN079093; Mon, 14 Jun 2021 19:17:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EJHdNa079092; Mon, 14 Jun 2021 19:17:39 GMT (envelope-from git) Date: Mon, 14 Jun 2021 19:17:39 GMT Message-Id: <202106141917.15EJHdNa079092@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: 790a6be5a169 - main - Export various 128 bit long double functions from libgcc_s.so.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 790a6be5a1699291c6da87871426d0c56dedcc89 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 19:17:40 -0000 The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=790a6be5a1699291c6da87871426d0c56dedcc89 commit 790a6be5a1699291c6da87871426d0c56dedcc89 Author: Dimitry Andric AuthorDate: 2021-06-14 19:17:05 +0000 Commit: Dimitry Andric CommitDate: 2021-06-14 19:17:05 +0000 Export various 128 bit long double functions from libgcc_s.so.1 These were already compiled for some time on aarch64 and riscv, by including lib/libcompiler_rt/Makefile.inc, but never exported in the shared library. Since gcc exports these under version GCC_4.6.0, we do the same. This review should replace D11482 for now. For e.g. amd64 more work is still to be done, as compiler-rt does not seem to support 128 bit long double math for that architecture. Reviewed by: cem MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D28690 --- lib/libgcc_s/Symbol.map | 29 +++++++++++++++++++++++++++++ lib/libgcc_s/Versions.def | 3 +++ 2 files changed, 32 insertions(+) diff --git a/lib/libgcc_s/Symbol.map b/lib/libgcc_s/Symbol.map index 695f61893360..2580623d778b 100644 --- a/lib/libgcc_s/Symbol.map +++ b/lib/libgcc_s/Symbol.map @@ -148,3 +148,32 @@ GCC_4.3.0 { __bswapdi2; __bswapsi2; }; + +GCC_4.6.0 { + __addtf3; + __cmptf2; + __divtf3; + __eqtf2; + __extenddftf2; + __extendsftf2; + __fixtfdi; + __fixtfsi; + __fixtfti; + __fixunstfdi; + __fixunstfsi; + __fixunstfti; + __floatsitf; + __floattitf; + __floatunsitf; + __floatuntitf; + __getf2; + __gttf2; + __letf2; + __lttf2; + __multf3; + __netf2; + __subtf3; + __trunctfdf2; + __trunctfsf2; + __unordtf2; +}; diff --git a/lib/libgcc_s/Versions.def b/lib/libgcc_s/Versions.def index 2c9fdc00e3b5..16ef1d3fc504 100644 --- a/lib/libgcc_s/Versions.def +++ b/lib/libgcc_s/Versions.def @@ -29,3 +29,6 @@ GCC_4.2.0 { GCC_4.3.0 { } GCC_4.2.0; + +GCC_4.6.0 { +} GCC_4.3.0; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E472B6501B9; Mon, 14 Jun 2021 20:25:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcH5sYtz4l0q; Mon, 14 Jun 2021 20:25:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B18E61B581; Mon, 14 Jun 2021 20:25:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKP3ZD072955; Mon, 14 Jun 2021 20:25:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKP3Zm072954; Mon, 14 Jun 2021 20:25:03 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:03 GMT Message-Id: <202106142025.15EKP3Zm072954@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 4e30dd0567da - stable/12 - ngatm: Handle errors from uni_msg_extend() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4e30dd0567da0ce7e34d9a3438e978465584b161 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:04 -0000 The branch stable/12 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=4e30dd0567da0ce7e34d9a3438e978465584b161 commit 4e30dd0567da0ce7e34d9a3438e978465584b161 Author: Mark Johnston AuthorDate: 2021-06-06 20:42:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:24:48 +0000 ngatm: Handle errors from uni_msg_extend() uni_msg_extend() may fail due to a memory allocation failure. In this case, though, the message is freed, so callers shouldn't touch it. PR: 255861 Reviewed by: harti Sponsored by: The FreeBSD Foundation (cherry picked from commit e755e2776ddff729ae4102f3273473aa33b00077) --- sys/contrib/ngatm/netnatm/msg/uni_ie.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/contrib/ngatm/netnatm/msg/uni_ie.c b/sys/contrib/ngatm/netnatm/msg/uni_ie.c index e4b8310d88d9..3842279c63a1 100644 --- a/sys/contrib/ngatm/netnatm/msg/uni_ie.c +++ b/sys/contrib/ngatm/netnatm/msg/uni_ie.c @@ -216,7 +216,8 @@ uni_encode_msg_hdr(struct uni_msg *msg, struct uni_msghdr *h, { u_char byte; - (void)uni_msg_ensure(msg, 9); + if (uni_msg_ensure(msg, 9) != 0) + return -1; APP_BYTE(msg, cx->pnni ? PNNI_PROTO : UNI_PROTO); APP_BYTE(msg, 3); @@ -654,7 +655,8 @@ uni_encode_ie_hdr(struct uni_msg *msg, enum uni_ietype type, { u_char byte; - (void)uni_msg_ensure(msg, 4 + len); + if (uni_msg_ensure(msg, 4 + len) != 0) + return -1; *msg->b_wptr++ = type; byte = 0x80 | (h->coding << 5); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0D312650241; Mon, 14 Jun 2021 20:25:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcJ6srTz4kjZ; Mon, 14 Jun 2021 20:25:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D49381B3AB; Mon, 14 Jun 2021 20:25:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKP4a6072984; Mon, 14 Jun 2021 20:25:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKP4sr072983; Mon, 14 Jun 2021 20:25:04 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:04 GMT Message-Id: <202106142025.15EKP4sr072983@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 71efecb7eb1a - stable/12 - iwn: adjust EEPROM read timeout for Intel 4965AGN M2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 71efecb7eb1ad713f2d4c58f479baaf0bd861db0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:05 -0000 The branch stable/12 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=71efecb7eb1ad713f2d4c58f479baaf0bd861db0 commit 71efecb7eb1ad713f2d4c58f479baaf0bd861db0 Author: Radosław Chmielarz AuthorDate: 2021-06-06 20:42:10 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:24:48 +0000 iwn: adjust EEPROM read timeout for Intel 4965AGN M2 Reading EEPROM from Intel 4965AGN M2 takes 60 us which was causing panic on system startup. PR: 255465 Reviewed by: markj (cherry picked from commit 03d4b58feee396d392668f192ecdde08ecc8036c) --- sys/dev/iwn/if_iwn.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c index 47beef785069..1c2679b6583a 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -1688,13 +1688,13 @@ iwn_read_prom_data(struct iwn_softc *sc, uint32_t addr, void *data, int count) addr += sc->prom_base; for (; count > 0; count -= 2, addr++) { IWN_WRITE(sc, IWN_EEPROM, addr << 2); - for (ntries = 0; ntries < 10; ntries++) { + for (ntries = 0; ntries < 20; ntries++) { val = IWN_READ(sc, IWN_EEPROM); if (val & IWN_EEPROM_READ_VALID) break; DELAY(5); } - if (ntries == 10) { + if (ntries == 20) { device_printf(sc->sc_dev, "timeout reading ROM at 0x%x\n", addr); return ETIMEDOUT; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:22 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8131A650516; Mon, 14 Jun 2021 20:25:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcf3J0Jz4kxv; Mon, 14 Jun 2021 20:25:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 59C361B341; Mon, 14 Jun 2021 20:25:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPMrf073166; Mon, 14 Jun 2021 20:25:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPMNd073165; Mon, 14 Jun 2021 20:25:22 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:22 GMT Message-Id: <202106142025.15EKPMNd073165@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: e58cb5c01de9 - stable/13 - arm64: Use the right PTE when downgrading perms in pmap_promote_l2() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e58cb5c01de989c8f88af3732a5fe404b0660a9c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:22 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e58cb5c01de989c8f88af3732a5fe404b0660a9c commit e58cb5c01de989c8f88af3732a5fe404b0660a9c Author: Mark Johnston AuthorDate: 2021-06-06 20:40:29 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:14 +0000 arm64: Use the right PTE when downgrading perms in pmap_promote_l2() When promoting a run of small mappings to a superpage, we have to downgrade clean, writable mappings to read-only, to handle the possibility that the MMU will concurrently mark one of the mappings as dirty. The code which performed this operation for the first PTE in the run used the wrong PTE pointer. As a result, the comparison would always fail, aborting the promotion. This only occurs when promoting writable, clean mappings. Fixes: ca2cae0b4dd Reviewed by: alc, kib Sponsored by: The FreeBSD Foundation (cherry picked from commit a48f51b3d396664f9b0a91f016159f4e4324da85) --- sys/arm64/arm64/pmap.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index efe6bdd3d034..b49ec4194e19 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -3518,7 +3518,11 @@ setl2: if ((newl2 & (ATTR_S1_AP_RW_BIT | ATTR_SW_DBM)) == (ATTR_S1_AP(ATTR_S1_AP_RO) | ATTR_SW_DBM)) { - if (!atomic_fcmpset_64(l2, &newl2, newl2 & ~ATTR_SW_DBM)) + /* + * When the mapping is clean, i.e., ATTR_S1_AP_RO is set, + * ATTR_SW_DBM can be cleared without a TLB invalidation. + */ + if (!atomic_fcmpset_64(firstl3, &newl2, newl2 & ~ATTR_SW_DBM)) goto setl2; newl2 &= ~ATTR_SW_DBM; } @@ -3529,6 +3533,11 @@ setl2: setl3: if ((oldl3 & (ATTR_S1_AP_RW_BIT | ATTR_SW_DBM)) == (ATTR_S1_AP(ATTR_S1_AP_RO) | ATTR_SW_DBM)) { + /* + * When the mapping is clean, i.e., ATTR_S1_AP_RO is + * set, ATTR_SW_DBM can be cleared without a TLB + * invalidation. + */ if (!atomic_fcmpset_64(l3, &oldl3, oldl3 & ~ATTR_SW_DBM)) goto setl3; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:23 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DEFF16502A5; Mon, 14 Jun 2021 20:25:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcg5N8Mz4l3V; Mon, 14 Jun 2021 20:25:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 815C81B583; Mon, 14 Jun 2021 20:25:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPNXD073190; Mon, 14 Jun 2021 20:25:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPNOa073189; Mon, 14 Jun 2021 20:25:23 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:23 GMT Message-Id: <202106142025.15EKPNOa073189@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 09e47586d72f - stable/13 - ngatm: Handle errors from uni_msg_extend() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 09e47586d72f4940eea1e70df706dbc165ad0415 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:24 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=09e47586d72f4940eea1e70df706dbc165ad0415 commit 09e47586d72f4940eea1e70df706dbc165ad0415 Author: Mark Johnston AuthorDate: 2021-06-06 20:42:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:14 +0000 ngatm: Handle errors from uni_msg_extend() uni_msg_extend() may fail due to a memory allocation failure. In this case, though, the message is freed, so callers shouldn't touch it. PR: 255861 Reviewed by: harti Sponsored by: The FreeBSD Foundation (cherry picked from commit e755e2776ddff729ae4102f3273473aa33b00077) --- sys/contrib/ngatm/netnatm/msg/uni_ie.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/contrib/ngatm/netnatm/msg/uni_ie.c b/sys/contrib/ngatm/netnatm/msg/uni_ie.c index e4b8310d88d9..3842279c63a1 100644 --- a/sys/contrib/ngatm/netnatm/msg/uni_ie.c +++ b/sys/contrib/ngatm/netnatm/msg/uni_ie.c @@ -216,7 +216,8 @@ uni_encode_msg_hdr(struct uni_msg *msg, struct uni_msghdr *h, { u_char byte; - (void)uni_msg_ensure(msg, 9); + if (uni_msg_ensure(msg, 9) != 0) + return -1; APP_BYTE(msg, cx->pnni ? PNNI_PROTO : UNI_PROTO); APP_BYTE(msg, 3); @@ -654,7 +655,8 @@ uni_encode_ie_hdr(struct uni_msg *msg, enum uni_ietype type, { u_char byte; - (void)uni_msg_ensure(msg, 4 + len); + if (uni_msg_ensure(msg, 4 + len) != 0) + return -1; *msg->b_wptr++ = type; byte = 0x80 | (h->coding << 5); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:24 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E64A2650521; Mon, 14 Jun 2021 20:25:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jch5tLhz4l3d; Mon, 14 Jun 2021 20:25:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A06661B50F; Mon, 14 Jun 2021 20:25:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPOlG073214; Mon, 14 Jun 2021 20:25:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPOZg073213; Mon, 14 Jun 2021 20:25:24 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:24 GMT Message-Id: <202106142025.15EKPOZg073213@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 67b7e2de4fc5 - stable/13 - iwn: adjust EEPROM read timeout for Intel 4965AGN M2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 67b7e2de4fc5dc1165feee8ca281c44444425d0f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:25 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=67b7e2de4fc5dc1165feee8ca281c44444425d0f commit 67b7e2de4fc5dc1165feee8ca281c44444425d0f Author: Radosław Chmielarz AuthorDate: 2021-06-06 20:42:10 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:14 +0000 iwn: adjust EEPROM read timeout for Intel 4965AGN M2 Reading EEPROM from Intel 4965AGN M2 takes 60 us which was causing panic on system startup. PR: 255465 Reviewed by: markj (cherry picked from commit 03d4b58feee396d392668f192ecdde08ecc8036c) --- sys/dev/iwn/if_iwn.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c index 2121a15bad6e..334ba644e04b 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -1688,13 +1688,13 @@ iwn_read_prom_data(struct iwn_softc *sc, uint32_t addr, void *data, int count) addr += sc->prom_base; for (; count > 0; count -= 2, addr++) { IWN_WRITE(sc, IWN_EEPROM, addr << 2); - for (ntries = 0; ntries < 10; ntries++) { + for (ntries = 0; ntries < 20; ntries++) { val = IWN_READ(sc, IWN_EEPROM); if (val & IWN_EEPROM_READ_VALID) break; DELAY(5); } - if (ntries == 10) { + if (ntries == 20) { device_printf(sc->sc_dev, "timeout reading ROM at 0x%x\n", addr); return ETIMEDOUT; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:28 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 58CFA650445; Mon, 14 Jun 2021 20:25:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcm1XyVz4l3s; Mon, 14 Jun 2021 20:25:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1514C1B3AD; Mon, 14 Jun 2021 20:25:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPRpX073293; Mon, 14 Jun 2021 20:25:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPRsD073292; Mon, 14 Jun 2021 20:25:27 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:27 GMT Message-Id: <202106142025.15EKPRsD073292@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: aa8280a90204 - stable/13 - arm: Remove last_fault_code MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: aa8280a90204c25a53851f8a68c6bdf2cb0111ef Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:28 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=aa8280a90204c25a53851f8a68c6bdf2cb0111ef commit aa8280a90204c25a53851f8a68c6bdf2cb0111ef Author: Mark Johnston AuthorDate: 2021-06-06 20:42:13 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:15 +0000 arm: Remove last_fault_code It is unused since the removal of pmap-v4.c in commit b88b275145. Sponsored by: The FreeBSD Foundation (cherry picked from commit 62ba0def5584bc1fc84fc7df6d7a1256e4a34fb8) --- sys/arm/arm/trap-v6.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sys/arm/arm/trap-v6.c b/sys/arm/arm/trap-v6.c index 16f166e83114..cd141376d381 100644 --- a/sys/arm/arm/trap-v6.c +++ b/sys/arm/arm/trap-v6.c @@ -70,10 +70,6 @@ __FBSDID("$FreeBSD$"); extern char cachebailout[]; -#ifdef DEBUG -int last_fault_code; /* For the benefit of pmap_fault_fixup() */ -#endif - struct ksig { int sig; u_long code; @@ -495,10 +491,6 @@ abort_handler(struct trapframe *tf, int prefetch) if (prefetch) ftype |= VM_PROT_EXECUTE; -#ifdef DEBUG - last_fault_code = fsr; -#endif - #ifdef INVARIANTS onfault = pcb->pcb_onfault; pcb->pcb_onfault = NULL; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:30 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7451F650450; Mon, 14 Jun 2021 20:25:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcn5ZCFz4kvw; Mon, 14 Jun 2021 20:25:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3A92A1B510; Mon, 14 Jun 2021 20:25:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPTJc073317; Mon, 14 Jun 2021 20:25:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPTve073316; Mon, 14 Jun 2021 20:25:29 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:29 GMT Message-Id: <202106142025.15EKPTve073316@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 368b1cd57190 - stable/13 - riscv: Rename pmap_fault_fixup() to pmap_fault() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 368b1cd57190757c5fbadd83ce002f7943a3e7ec Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:30 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=368b1cd57190757c5fbadd83ce002f7943a3e7ec commit 368b1cd57190757c5fbadd83ce002f7943a3e7ec Author: Mark Johnston AuthorDate: 2021-06-06 20:42:00 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:15 +0000 riscv: Rename pmap_fault_fixup() to pmap_fault() This is consistent with other platforms, specifically arm and arm64. No functional change intended. Reviewed by: jrtc27 Sponsored by: The FreeBSD Foundation (cherry picked from commit 317113bb125166f6ba3035a29408339af38cca54) --- sys/riscv/include/pmap.h | 2 +- sys/riscv/riscv/pmap.c | 2 +- sys/riscv/riscv/trap.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/riscv/include/pmap.h b/sys/riscv/include/pmap.h index 9a1f23b20245..64b529e95887 100644 --- a/sys/riscv/include/pmap.h +++ b/sys/riscv/include/pmap.h @@ -160,7 +160,7 @@ void pmap_unmap_io_transient(vm_page_t *, vm_offset_t *, int, boolean_t); bool pmap_get_tables(pmap_t, vm_offset_t, pd_entry_t **, pd_entry_t **, pt_entry_t **); -int pmap_fault_fixup(pmap_t, vm_offset_t, vm_prot_t); +int pmap_fault(pmap_t, vm_offset_t, vm_prot_t); static inline int pmap_vmspace_copy(pmap_t dst_pmap __unused, pmap_t src_pmap __unused) diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index 0f2834febd41..9761d97f449a 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -2382,7 +2382,7 @@ retryl3: } int -pmap_fault_fixup(pmap_t pmap, vm_offset_t va, vm_prot_t ftype) +pmap_fault(pmap_t pmap, vm_offset_t va, vm_prot_t ftype) { pd_entry_t *l2, l2e; pt_entry_t bits, *pte, oldpte; diff --git a/sys/riscv/riscv/trap.c b/sys/riscv/riscv/trap.c index 599fd64b56be..88c6adf5623b 100644 --- a/sys/riscv/riscv/trap.c +++ b/sys/riscv/riscv/trap.c @@ -228,7 +228,7 @@ page_fault_handler(struct trapframe *frame, int usermode) ftype = VM_PROT_READ; } - if (pmap_fault_fixup(map->pmap, va, ftype)) + if (pmap_fault(map->pmap, va, ftype)) goto done; error = vm_fault_trap(map, va, ftype, VM_FAULT_NORMAL, &sig, &ucode); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8F3DA6502BB; Mon, 14 Jun 2021 20:25:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcl1JS4z4l5n; Mon, 14 Jun 2021 20:25:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E6C7E1B585; Mon, 14 Jun 2021 20:25:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPQoq073262; Mon, 14 Jun 2021 20:25:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPQnV073261; Mon, 14 Jun 2021 20:25:26 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:26 GMT Message-Id: <202106142025.15EKPQnV073261@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 25b73f214418 - stable/13 - riscv: Handle hardware-managed dirty bit updates in pmap_promote_l2() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 25b73f21441893423d00b6631ad22c7d0ad4b0d2 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:27 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=25b73f21441893423d00b6631ad22c7d0ad4b0d2 commit 25b73f21441893423d00b6631ad22c7d0ad4b0d2 Author: Mark Johnston AuthorDate: 2021-06-06 20:41:35 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:15 +0000 riscv: Handle hardware-managed dirty bit updates in pmap_promote_l2() pmap_promote_l2() failed to handle implementations which set the accessed and dirty flags. In particular, when comparing the attributes of a run of 512 PTEs, we must handle the possibility that the hardware will set PTE_D on a clean, writable mapping. Following the example of amd64 and arm64, change riscv's pmap_promote_l2() to downgrade clean, writable mappings to read-only, so that updates are synchronized by the pmap lock. Fixes: f6893f09d Reported by: Nathaniel Filardo Tested by: Nathaniel Filardo Reviewed by: jrtc27, alc, Nathaniel Filardo Sponsored by: The FreeBSD Foundation (cherry picked from commit c05748e028b84c216d0161e70418f8cb09e074e4) --- sys/riscv/riscv/pmap.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index f30dda17afae..0f2834febd41 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -2540,7 +2540,7 @@ static void pmap_promote_l2(pmap_t pmap, pd_entry_t *l2, vm_offset_t va, struct rwlock **lockp) { - pt_entry_t *firstl3, *l3; + pt_entry_t *firstl3, firstl3e, *l3, l3e; vm_paddr_t pa; vm_page_t ml3; @@ -2551,7 +2551,8 @@ pmap_promote_l2(pmap_t pmap, pd_entry_t *l2, vm_offset_t va, ("pmap_promote_l2: invalid l2 entry %p", l2)); firstl3 = (pt_entry_t *)PHYS_TO_DMAP(PTE_TO_PHYS(pmap_load(l2))); - pa = PTE_TO_PHYS(pmap_load(firstl3)); + firstl3e = pmap_load(firstl3); + pa = PTE_TO_PHYS(firstl3e); if ((pa & L2_OFFSET) != 0) { CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx pmap %p", va, pmap); @@ -2559,17 +2560,40 @@ pmap_promote_l2(pmap_t pmap, pd_entry_t *l2, vm_offset_t va, return; } + /* + * Downgrade a clean, writable mapping to read-only to ensure that the + * hardware does not set PTE_D while we are comparing PTEs. + * + * Upon a write access to a clean mapping, the implementation will + * either atomically check protections and set PTE_D, or raise a page + * fault. In the latter case, the pmap lock provides atomicity. Thus, + * we do not issue an sfence.vma here and instead rely on pmap_fault() + * to do so lazily. + */ + while ((firstl3e & (PTE_W | PTE_D)) == PTE_W) { + if (atomic_fcmpset_64(firstl3, &firstl3e, firstl3e & ~PTE_W)) { + firstl3e &= ~PTE_W; + break; + } + } + pa += PAGE_SIZE; for (l3 = firstl3 + 1; l3 < firstl3 + Ln_ENTRIES; l3++) { - if (PTE_TO_PHYS(pmap_load(l3)) != pa) { + l3e = pmap_load(l3); + if (PTE_TO_PHYS(l3e) != pa) { CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx pmap %p", va, pmap); atomic_add_long(&pmap_l2_p_failures, 1); return; } - if ((pmap_load(l3) & PTE_PROMOTE) != - (pmap_load(firstl3) & PTE_PROMOTE)) { + while ((l3e & (PTE_W | PTE_D)) == PTE_W) { + if (atomic_fcmpset_64(l3, &l3e, l3e & ~PTE_W)) { + l3e &= ~PTE_W; + break; + } + } + if ((l3e & PTE_PROMOTE) != (firstl3e & PTE_PROMOTE)) { CTR2(KTR_PMAP, "pmap_promote_l2: failure for va %#lx pmap %p", va, pmap); @@ -2589,11 +2613,10 @@ pmap_promote_l2(pmap_t pmap, pd_entry_t *l2, vm_offset_t va, return; } - if ((pmap_load(firstl3) & PTE_SW_MANAGED) != 0) - pmap_pv_promote_l2(pmap, va, PTE_TO_PHYS(pmap_load(firstl3)), - lockp); + if ((firstl3e & PTE_SW_MANAGED) != 0) + pmap_pv_promote_l2(pmap, va, PTE_TO_PHYS(firstl3e), lockp); - pmap_store(l2, pmap_load(firstl3)); + pmap_store(l2, firstl3e); atomic_add_long(&pmap_l2_promotions, 1); CTR2(KTR_PMAP, "pmap_promote_l2: success for va %#lx in pmap %p", va, From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:26 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0766965032A; Mon, 14 Jun 2021 20:25:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcj68JYz4l3m; Mon, 14 Jun 2021 20:25:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BB5E31B584; Mon, 14 Jun 2021 20:25:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPPW8073238; Mon, 14 Jun 2021 20:25:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPP4Y073237; Mon, 14 Jun 2021 20:25:25 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:25 GMT Message-Id: <202106142025.15EKPP4Y073237@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 5346c8bc543a - stable/13 - Suppress D_NEEDGIANT warnings for some drivers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5346c8bc543a09932b168f459e8a7a601af4bfdc Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:26 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=5346c8bc543a09932b168f459e8a7a601af4bfdc commit 5346c8bc543a09932b168f459e8a7a601af4bfdc Author: Mark Johnston AuthorDate: 2021-06-06 20:40:19 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:14 +0000 Suppress D_NEEDGIANT warnings for some drivers During boot we warn that the kbd and openfirm drivers are Giant-locked and may be deleted. Generally, the warning helps signal that certain old drivers are not being maintained and are subject to removal, but this doesn't really apply to certain drivers which are harder to detangle from Giant. Add a flag, D_GIANTOK, that devices can specify to suppress the misleading warning. Use it in the kbd and openfirm drivers. Reviewed by: imp, jhb Sponsored by: The FreeBSD Foundation (cherry picked from commit fbeb4ccac990fdb3bc26ab925a3ca8e7d2f89721) --- sys/dev/kbd/kbd.c | 2 +- sys/dev/ofw/openfirmio.c | 2 +- sys/kern/kern_conf.c | 2 +- sys/sys/conf.h | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c index fd996f7a06ad..70c0ef15a56e 100644 --- a/sys/dev/kbd/kbd.c +++ b/sys/dev/kbd/kbd.c @@ -453,7 +453,7 @@ static d_poll_t genkbdpoll; static struct cdevsw kbd_cdevsw = { .d_version = D_VERSION, - .d_flags = D_NEEDGIANT, + .d_flags = D_NEEDGIANT | D_GIANTOK, .d_open = genkbdopen, .d_close = genkbdclose, .d_read = genkbdread, diff --git a/sys/dev/ofw/openfirmio.c b/sys/dev/ofw/openfirmio.c index 2112d45d4dd9..30afb85baf8a 100644 --- a/sys/dev/ofw/openfirmio.c +++ b/sys/dev/ofw/openfirmio.c @@ -66,7 +66,7 @@ static d_ioctl_t openfirm_ioctl; static struct cdevsw openfirm_cdevsw = { .d_version = D_VERSION, - .d_flags = D_NEEDGIANT, + .d_flags = D_NEEDGIANT | D_GIANTOK, .d_ioctl = openfirm_ioctl, .d_name = "openfirm", }; diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 3a07c95e74d0..42435c0b8740 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -665,7 +665,7 @@ prep_cdevsw(struct cdevsw *devsw, int flags) devsw->d_kqfilter = dead_kqfilter; } - if (devsw->d_flags & D_NEEDGIANT) { + if ((devsw->d_flags & (D_NEEDGIANT | D_GIANTOK)) == D_NEEDGIANT) { printf("WARNING: Device \"%s\" is Giant locked and may be " "deleted before FreeBSD 14.0.\n", devsw->d_name == NULL ? "???" : devsw->d_name); diff --git a/sys/sys/conf.h b/sys/sys/conf.h index 2a87e5d3a9ca..123bf91cf952 100644 --- a/sys/sys/conf.h +++ b/sys/sys/conf.h @@ -173,6 +173,7 @@ typedef int dumper_hdr_t(struct dumperinfo *di, struct kerneldumpheader *kdh, */ #define D_TRACKCLOSE 0x00080000 /* track all closes */ #define D_MMAP_ANON 0x00100000 /* special treatment in vm_mmap.c */ +#define D_GIANTOK 0x00200000 /* suppress warning about using Giant */ #define D_NEEDGIANT 0x00400000 /* driver want Giant */ #define D_NEEDMINOR 0x00800000 /* driver uses clone_create() */ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:30 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 961E46502D9; Mon, 14 Jun 2021 20:25:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcp3K3gz4kk2; Mon, 14 Jun 2021 20:25:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 59AE91B511; Mon, 14 Jun 2021 20:25:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPUwe073341; Mon, 14 Jun 2021 20:25:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPUDt073340; Mon, 14 Jun 2021 20:25:30 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:30 GMT Message-Id: <202106142025.15EKPUDt073340@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 129fb0fb0282 - stable/13 - Fix handling of D_GIANTOK MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 129fb0fb02828adf71d457bb20aab48b7d88b287 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:30 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=129fb0fb02828adf71d457bb20aab48b7d88b287 commit 129fb0fb02828adf71d457bb20aab48b7d88b287 Author: Mark Johnston AuthorDate: 2021-06-07 18:25:26 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:15 +0000 Fix handling of D_GIANTOK It was meant to suppress only the printf(), not the subsequent injection of Giant-protected thunks for various file operations. Fixes: fbeb4ccac9 Reported by: pho Tested by: pho Pointy hat: markj (cherry picked from commit 887c753c9f451322cae3efbf9b63f53f3d9011c8) --- sys/kern/kern_conf.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 42435c0b8740..cb575114571a 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -665,10 +665,13 @@ prep_cdevsw(struct cdevsw *devsw, int flags) devsw->d_kqfilter = dead_kqfilter; } - if ((devsw->d_flags & (D_NEEDGIANT | D_GIANTOK)) == D_NEEDGIANT) { - printf("WARNING: Device \"%s\" is Giant locked and may be " - "deleted before FreeBSD 14.0.\n", - devsw->d_name == NULL ? "???" : devsw->d_name); + if ((devsw->d_flags & D_NEEDGIANT) != 0) { + if ((devsw->d_flags & D_GIANTOK) == 0) { + printf( + "WARNING: Device \"%s\" is Giant locked and may be " + "deleted before FreeBSD 14.0.\n", + devsw->d_name == NULL ? "???" : devsw->d_name); + } if (devsw->d_gianttrick == NULL) { memcpy(dsw2, devsw, sizeof *dsw2); devsw->d_gianttrick = dsw2; From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:25:32 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8A85165033C; Mon, 14 Jun 2021 20:25:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3jcq6drzz4kkC; Mon, 14 Jun 2021 20:25:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7D2211AFB3; Mon, 14 Jun 2021 20:25:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKPV1q073365; Mon, 14 Jun 2021 20:25:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKPVgP073364; Mon, 14 Jun 2021 20:25:31 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:25:31 GMT Message-Id: <202106142025.15EKPVgP073364@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: fa3cfd1a845a - stable/13 - arm64: Fix pmap_copy()'s handling of 2MB mappings MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fa3cfd1a845a33dbee88fcd80599c3ecc3268e26 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:25:33 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=fa3cfd1a845a33dbee88fcd80599c3ecc3268e26 commit fa3cfd1a845a33dbee88fcd80599c3ecc3268e26 Author: Mark Johnston AuthorDate: 2021-06-06 20:40:45 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 20:25:15 +0000 arm64: Fix pmap_copy()'s handling of 2MB mappings When copying mappings from parent to child, we clear the accessed and dirty bits. This is done for both 4KB and 2MB PTEs. However, pmap_demote_l2() asserts that writable superpages must be dirty. This is to avoid races with the MMU setting the dirty bit during promotion and demotion. pmap_copy() can create clean, writable superpage mappings, so it violates this assertion. Modify pmap_copy() to preserve the accessed and dirty bits when copying 2MB mappings, like we do on amd64. Fixes: ca2cae0b4dd Reported by: Jenkins via mhorne Reviewed by: alc, kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30643 (cherry picked from commit 4e4035ef1fb5e2f9da6b658ffae8a54862b4d018) --- sys/arm64/arm64/pmap.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index b49ec4194e19..e9dd27981d61 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -4751,11 +4751,8 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len, ((srcptepaddr & ATTR_SW_MANAGED) == 0 || pmap_pv_insert_l2(dst_pmap, addr, srcptepaddr, PMAP_ENTER_NORECLAIM, &lock))) { - mask = ATTR_AF | ATTR_SW_WIRED; - nbits = 0; - if ((srcptepaddr & ATTR_SW_DBM) != 0) - nbits |= ATTR_S1_AP_RW_BIT; - pmap_store(l2, (srcptepaddr & ~mask) | nbits); + mask = ATTR_SW_WIRED; + pmap_store(l2, srcptepaddr & ~mask); pmap_resident_count_inc(dst_pmap, L2_SIZE / PAGE_SIZE); atomic_add_long(&pmap_l2_mappings, 1); From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:51:13 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 486DF6527D3; Mon, 14 Jun 2021 20:51:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3kBT1cl1z4rGR; Mon, 14 Jun 2021 20:51:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1FD971B7A7; Mon, 14 Jun 2021 20:51:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKpD4l009945; Mon, 14 Jun 2021 20:51:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKpDp6009944; Mon, 14 Jun 2021 20:51:13 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:51:13 GMT Message-Id: <202106142051.15EKpDp6009944@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 2071c3fb0dcc - stable/13 - tcp: LRO timestamps have lost their previous precision MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 2071c3fb0dcc8b458d1c7b2eba7f4bc781715288 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:51:13 -0000 The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=2071c3fb0dcc8b458d1c7b2eba7f4bc781715288 commit 2071c3fb0dcc8b458d1c7b2eba7f4bc781715288 Author: Randall Stewart AuthorDate: 2021-06-09 17:58:54 +0000 Commit: Michael Tuexen CommitDate: 2021-06-14 20:49:27 +0000 tcp: LRO timestamps have lost their previous precision Recently we had a rewrite to tcp_lro.c that was tested but one subtle change was the move to a less precise timestamp. This causes all kinds of chaos in tcp's that do pacing and needs to be fixed to use the more precise time that was there before. Reviewed by: mtuexen, gallatin, hselasky Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D30695 (cherry picked from commit b45daaea95abd8bda52caaacf120f9197caab3e7) --- sys/netinet/tcp_lro.c | 23 +++++++++++++---------- sys/netinet/tcp_lro.h | 4 ++-- sys/sys/time.h | 11 +++++++++++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index 09fc024c3d73..ea84ca191eca 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -562,16 +562,18 @@ void tcp_lro_flush_inactive(struct lro_ctrl *lc, const struct timeval *timeout) { struct lro_entry *le, *le_tmp; - sbintime_t sbt; + uint64_t now, tov; + struct bintime bt; if (LIST_EMPTY(&lc->lro_active)) return; - /* get timeout time */ - sbt = getsbinuptime() - tvtosbt(*timeout); - + /* get timeout time and current time in ns */ + binuptime(&bt); + now = bintime2ns(&bt); + tov = ((timeout->tv_sec * 1000000000) + (timeout->tv_usec * 1000)); LIST_FOREACH_SAFE(le, &lc->lro_active, next, le_tmp) { - if (sbt >= le->alloc_time) { + if (now >= (bintime2ns(&le->alloc_time) + tov)) { tcp_lro_active_remove(le); tcp_lro_flush(lc, le); } @@ -610,7 +612,7 @@ tcp_lro_log(struct tcpcb *tp, const struct lro_ctrl *lc, { if (tp->t_logstate != TCP_LOG_STATE_OFF) { union tcp_log_stackspecific log; - struct timeval tv; + struct timeval tv, btv; uint32_t cts; cts = tcp_get_usecs(&tv); @@ -637,7 +639,8 @@ tcp_lro_log(struct tcpcb *tp, const struct lro_ctrl *lc, log.u_bbr.cwnd_gain = le->window; log.u_bbr.cur_del_rate = (uintptr_t)m; log.u_bbr.bw_inuse = (uintptr_t)le->m_head; - log.u_bbr.flex6 = sbttous(lc->lro_last_queue_time); + bintime2timeval(&lc->lro_last_queue_time, &btv); + log.u_bbr.flex6 = tcp_tv_to_usectick(&btv); log.u_bbr.flex7 = le->compressed; log.u_bbr.pacing_gain = le->uncompressed; if (in_epoch(net_epoch_preempt)) @@ -1446,7 +1449,7 @@ tcp_lro_flush_all(struct lro_ctrl *lc) CURVNET_SET(lc->ifp->if_vnet); /* get current time */ - lc->lro_last_queue_time = getsbinuptime(); + binuptime(&lc->lro_last_queue_time); /* sort all mbufs according to stream */ tcp_lro_sort(lc->lro_mbuf_data, lc->lro_mbuf_count); @@ -1739,7 +1742,7 @@ tcp_lro_rx_common(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum, bool use_h #endif /* If no hardware or arrival stamp on the packet add timestamp */ if ((m->m_flags & (M_TSTMP_LRO | M_TSTMP)) == 0) { - m->m_pkthdr.rcv_tstmp = sbttons(lc->lro_last_queue_time); + m->m_pkthdr.rcv_tstmp = bintime2ns(&lc->lro_last_queue_time); m->m_flags |= M_TSTMP_LRO; } @@ -1834,7 +1837,7 @@ tcp_lro_rx(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum) int error; /* get current time */ - lc->lro_last_queue_time = getsbinuptime(); + binuptime(&lc->lro_last_queue_time); CURVNET_SET(lc->ifp->if_vnet); error = tcp_lro_rx_common(lc, m, csum, true); diff --git a/sys/netinet/tcp_lro.h b/sys/netinet/tcp_lro.h index d2220a626b81..5ff15e2dc97e 100644 --- a/sys/netinet/tcp_lro.h +++ b/sys/netinet/tcp_lro.h @@ -140,7 +140,7 @@ struct lro_entry { uint16_t uncompressed; uint16_t window; uint16_t timestamp; /* flag, not a TCP hdr field. */ - sbintime_t alloc_time; /* time when entry was allocated */ + struct bintime alloc_time; /* time when entry was allocated */ }; LIST_HEAD(lro_head, lro_entry); @@ -154,7 +154,7 @@ struct lro_mbuf_sort { struct lro_ctrl { struct ifnet *ifp; struct lro_mbuf_sort *lro_mbuf_data; - sbintime_t lro_last_queue_time; /* last time data was queued */ + struct bintime lro_last_queue_time; /* last time data was queued */ uint64_t lro_queued; uint64_t lro_flushed; uint64_t lro_bad_csum; diff --git a/sys/sys/time.h b/sys/sys/time.h index 9bffca204d56..a48aa3fe5548 100644 --- a/sys/sys/time.h +++ b/sys/sys/time.h @@ -286,6 +286,17 @@ bintime2timespec(const struct bintime *_bt, struct timespec *_ts) (uint32_t)(_bt->frac >> 32)) >> 32; } +static __inline uint64_t +bintime2ns(const struct bintime *_bt) +{ + uint64_t ret; + + ret = (uint64_t)(_bt->sec) * (uint64_t)1000000000; + ret += (((uint64_t)1000000000 * + (uint32_t)(_bt->frac >> 32)) >> 32); + return (ret); +} + static __inline void timespec2bintime(const struct timespec *_ts, struct bintime *_bt) { From owner-dev-commits-src-all@freebsd.org Mon Jun 14 20:59:19 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C103365334D; Mon, 14 Jun 2021 20:59:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3kMq4pQ6z4rY0; Mon, 14 Jun 2021 20:59:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8D3CE1BA19; Mon, 14 Jun 2021 20:59:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EKxJSc014123; Mon, 14 Jun 2021 20:59:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EKxJLb014122; Mon, 14 Jun 2021 20:59:19 GMT (envelope-from git) Date: Mon, 14 Jun 2021 20:59:19 GMT Message-Id: <202106142059.15EKxJLb014122@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: 8ecbecdcfdb0 - stable/13 - tcp: Mbuf leak while holding a socket buffer lock. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8ecbecdcfdb082dc4056a9d627d5de2ed7eceda4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 20:59:19 -0000 The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=8ecbecdcfdb082dc4056a9d627d5de2ed7eceda4 commit 8ecbecdcfdb082dc4056a9d627d5de2ed7eceda4 Author: Randall Stewart AuthorDate: 2021-06-10 12:33:57 +0000 Commit: Michael Tuexen CommitDate: 2021-06-14 20:51:42 +0000 tcp: Mbuf leak while holding a socket buffer lock. When running at NF the current Rack and BBR changes with the recent commits from Richard that cause the socket buffer lock to be held over the ip_output() call and then finally culminating in a call to tcp_handle_wakeup() we get a lot of leaked mbufs. I don't think that this leak is actually caused by holding the lock or what Richard has done, but is exposing some other bug that has probably been lying dormant for a long time. I will continue to look (using his changes) at what is going on to try to root cause out the issue. In the meantime I can't leave the leaks out for everyone else. So this commit will revert all of Richards changes and move both Rack and BBR back to just doing the old sorwakeup_locked() calls after messing with the so_rcv buffer. We may want to look at adding back in Richards changes after I have pinpointed the root cause of the mbuf leak and fixed it. Reviewed by: mtuexen,rscheff Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D30704 (cherry picked from commit 67e892819b26c198e4232c7586ead7f854f848c5) --- sys/netinet/tcp_output.c | 2 ++ sys/netinet/tcp_stacks/bbr.c | 47 +++++++++++++++++------------ sys/netinet/tcp_stacks/rack.c | 69 ++++++++++++++++++++++--------------------- sys/netinet/tcp_var.h | 18 +++++++++++ 4 files changed, 84 insertions(+), 52 deletions(-) diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 2a91570acdad..44333d772482 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -1551,6 +1551,8 @@ send: #endif /* INET */ out: + if (error == 0) + tcp_account_for_send(tp, len, (tp->snd_nxt != tp->snd_max), 0); /* * In transmit state, time the transmission and arrange for * the retransmit. In persist state, just set snd_max. diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 7d709e33f0d7..05db7180e7b2 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -486,7 +486,7 @@ static void uint32_t line, uint8_t is_start, uint16_t set); static struct bbr_sendmap * - bbr_find_lowest_rsm(struct tcp_bbr *bbr); + bbr_find_lowest_rsm(struct tcp_bbr *bbr); static __inline uint32_t bbr_get_rtt(struct tcp_bbr *bbr, int32_t rtt_type); static void @@ -1620,7 +1620,7 @@ bbr_init_sysctls(void) &bbr_drop_limit, 0, "Number of segments limit for drop (0=use min_cwnd w/flight)?"); - /* Timeout controls */ + /* Timeout controls */ bbr_timeout = SYSCTL_ADD_NODE(&bbr_sysctl_ctx, SYSCTL_CHILDREN(bbr_sysctl_root), OID_AUTO, @@ -5750,7 +5750,7 @@ tcp_bbr_tso_size_check(struct tcp_bbr *bbr, uint32_t cts) * seg = goal_tso / mss * tso = seg * mss * else - * tso = mss + * tso = mss * if (tso > per-tcb-max) * tso = per-tcb-max * else if ( bw > 512Mbps) @@ -6736,7 +6736,7 @@ bbr_update_bbr_info(struct tcp_bbr *bbr, struct bbr_sendmap *rsm, uint32_t rtt, else bbr->rc_ack_is_cumack = 0; old_rttprop = bbr_get_rtt(bbr, BBR_RTT_PROP); - /* + /* * Note the following code differs to the original * BBR spec. It calls for <= not <. However after a * long discussion in email with Neal, he acknowledged @@ -8306,12 +8306,14 @@ bbr_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, appended = #endif sbappendstream_locked(&so->so_rcv, m, 0); - tp->t_flags |= TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); #ifdef NETFLIX_SB_LIMITS if (so->so_rcv.sb_shlim && appended != mcnt) counter_fo_release(so->so_rcv.sb_shlim, mcnt - appended); #endif + } else { /* * XXX: Due to the header drop above "th" is @@ -8323,6 +8325,11 @@ bbr_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, thflags = tcp_reass(tp, th, &temp, &tlen, m); tp->t_flags |= TF_ACKNOW; + if (tp->t_flags & TF_WAKESOR) { + tp->t_flags &= ~TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); + } } if ((tp->t_flags & TF_SACK_PERMIT) && (save_tlen > 0) && @@ -8357,7 +8364,6 @@ bbr_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, save_start + tlen); } } - tcp_handle_wakeup(tp, so); } else { m_freem(m); thflags &= ~TH_FIN; @@ -9164,7 +9170,11 @@ bbr_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so, if (tlen == 0 && (thflags & TH_FIN) == 0) { (void)tcp_reass(tp, (struct tcphdr *)0, NULL, 0, (struct mbuf *)0); - tcp_handle_wakeup(tp, so); + if (tp->t_flags & TF_WAKESOR) { + tp->t_flags &= ~TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); + } } tp->snd_wl1 = th->th_seq - 1; if (bbr_process_ack(m, th, so, tp, to, tiwin, tlen, &ourfinisacked, thflags, &ret_val)) { @@ -11565,18 +11575,18 @@ bbr_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, if ((thflags & TH_SYN) && (thflags & TH_FIN) && V_drop_synfin) { retval = 0; m_freem(m); - goto done_with_input; - } - /* - * If a segment with the ACK-bit set arrives in the SYN-SENT state - * check SEQ.ACK first as described on page 66 of RFC 793, section 3.9. - */ - if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && - (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { + goto done_with_input; + } + /* + * If a segment with the ACK-bit set arrives in the SYN-SENT state + * check SEQ.ACK first as described on page 66 of RFC 793, section 3.9. + */ + if ((tp->t_state == TCPS_SYN_SENT) && (thflags & TH_ACK) && + (SEQ_LEQ(th->th_ack, tp->iss) || SEQ_GT(th->th_ack, tp->snd_max))) { tcp_log_end_status(tp, TCP_EI_STATUS_RST_IN_FRONT); ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_RST_OPENPORT, tlen); - return (1); - } + return (1); + } in_recovery = IN_RECOVERY(tp->t_flags); if (tiwin > bbr->r_ctl.rc_high_rwnd) bbr->r_ctl.rc_high_rwnd = tiwin; @@ -11786,8 +11796,6 @@ bbr_do_send_accounting(struct tcpcb *tp, struct tcp_bbr *bbr, struct bbr_sendmap * own bin */ #ifdef NETFLIX_STATS - tp->t_sndtlppack++; - tp->t_sndtlpbyte += len; KMOD_TCPSTAT_INC(tcps_tlpresends); KMOD_TCPSTAT_ADD(tcps_tlpresend_bytes, len); #endif @@ -13741,6 +13749,7 @@ out: * retransmit. In persist state, just set snd_max. */ if (error == 0) { + tcp_account_for_send(tp, len, (rsm != NULL), doing_tlp); if (TCPS_HAVEESTABLISHED(tp->t_state) && (tp->t_flags & TF_SACK_PERMIT) && tp->rcv_numsacks > 0) diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index bcf3dcc0e38a..f9ba67088f7a 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -10219,7 +10219,8 @@ rack_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, sbappendstream_locked(&so->so_rcv, m, 0); rack_log_wakeup(tp,rack, &so->so_rcv, tlen, 1); - tp->t_flags |= TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); #ifdef NETFLIX_SB_LIMITS if (so->so_rcv.sb_shlim && appended != mcnt) counter_fo_release(so->so_rcv.sb_shlim, @@ -10236,7 +10237,11 @@ rack_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, thflags = tcp_reass(tp, th, &temp, &tlen, m); tp->t_flags |= TF_ACKNOW; - + if (tp->t_flags & TF_WAKESOR) { + tp->t_flags &= ~TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); + } } if ((tp->t_flags & TF_SACK_PERMIT) && (save_tlen > 0) && @@ -10276,7 +10281,6 @@ rack_process_data(struct mbuf *m, struct tcphdr *th, struct socket *so, save_start + tlen); } } - tcp_handle_wakeup(tp, so); } else { m_freem(m); thflags &= ~TH_FIN; @@ -10482,7 +10486,8 @@ rack_do_fastnewdata(struct mbuf *m, struct tcphdr *th, struct socket *so, ctf_calc_rwin(so, tp); } rack_log_wakeup(tp,rack, &so->so_rcv, tlen, 1); - tp->t_flags |= TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); #ifdef NETFLIX_SB_LIMITS if (so->so_rcv.sb_shlim && mcnt != appended) counter_fo_release(so->so_rcv.sb_shlim, mcnt - appended); @@ -10490,7 +10495,6 @@ rack_do_fastnewdata(struct mbuf *m, struct tcphdr *th, struct socket *so, rack_handle_delayed_ack(tp, rack, tlen, 0); if (tp->snd_una == tp->snd_max) sack_filter_clear(&rack->r_ctl.rack_sf, tp->snd_una); - tcp_handle_wakeup(tp, so); return (1); } @@ -11083,7 +11087,11 @@ rack_do_syn_recv(struct mbuf *m, struct tcphdr *th, struct socket *so, if (tlen == 0 && (thflags & TH_FIN) == 0) { (void) tcp_reass(tp, (struct tcphdr *)0, NULL, 0, (struct mbuf *)0); - tcp_handle_wakeup(tp, so); + if (tp->t_flags & TF_WAKESOR) { + tp->t_flags &= ~TF_WAKESOR; + /* NB: sorwakeup_locked() does an implicit unlock. */ + sorwakeup_locked(so); + } } tp->snd_wl1 = th->th_seq - 1; /* For syn-recv we need to possibly update the rtt */ @@ -12331,29 +12339,23 @@ rack_fini(struct tcpcb *tp, int32_t tcb_is_purged) rack = (struct tcp_rack *)tp->t_fb_ptr; if (tp->t_in_pkt) { /* - * Since we are switching we need to process any - * inbound packets in case a compressed ack is - * in queue or the new stack does not support - * mbuf queuing. These packets in theory should - * have been handled by the old stack anyway. + * It is unsafe to process the packets since a + * reset may be lurking in them (its rare but it + * can occur). If we were to find a RST, then we + * would end up dropping the connection and the + * INP lock, so when we return the caller (tcp_usrreq) + * will blow up when it trys to unlock the inp. */ - if ((rack->rc_inp->inp_flags & (INP_DROPPED|INP_TIMEWAIT)) || - (rack->rc_inp->inp_flags2 & INP_FREED)) { - /* Kill all the packets */ - struct mbuf *save, *m; - - m = tp->t_in_pkt; - tp->t_in_pkt = NULL; - tp->t_tail_pkt = NULL; - while (m) { - save = m->m_nextpkt; - m->m_nextpkt = NULL; - m_freem(m); - m = save; - } - } else { - /* Process all the packets */ - ctf_do_queued_segments(rack->rc_inp->inp_socket, rack->rc_tp, 0); + struct mbuf *save, *m; + + m = tp->t_in_pkt; + tp->t_in_pkt = NULL; + tp->t_tail_pkt = NULL; + while (m) { + save = m->m_nextpkt; + m->m_nextpkt = NULL; + m_freem(m); + m = save; } if ((tp->t_inpcb) && (tp->t_inpcb->inp_flags2 & INP_MBUF_ACKCMP)) @@ -13995,7 +13997,6 @@ rack_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, } if (rack_do_segment_nounlock(m, th, so, tp, drop_hdrlen, tlen, iptos, 0, &tv) == 0) { - tcp_handle_wakeup(tp, so); INP_WUNLOCK(tp->t_inpcb); } } @@ -15402,6 +15403,8 @@ rack_fast_rsm_output(struct tcpcb *tp, struct tcp_rack *rack, struct rack_sendma rack->rc_tlp_in_progress = 1; rack->r_ctl.rc_tlp_cnt_out++; } + if (error == 0) + tcp_account_for_send(tp, len, 1, doing_tlp); tp->t_flags &= ~(TF_ACKNOW | TF_DELACK); rack->forced_ack = 0; /* If we send something zap the FA flag */ if (IN_FASTRECOVERY(tp->t_flags) && rsm) @@ -15880,6 +15883,9 @@ again: rack_log_progress_event(rack, tp, ticks, PROGRESS_START, __LINE__); tp->t_acktime = ticks; } + if (error == 0) + tcp_account_for_send(tp, len, 0, 0); + rack->forced_ack = 0; /* If we send something zap the FA flag */ tot_len += len; if ((tp->t_flags & TF_GPUTINPROG) == 0) @@ -16320,8 +16326,6 @@ again: tlen = rsm->r_end - rsm->r_start; if (tlen > segsiz) tlen = segsiz; - tp->t_sndtlppack++; - tp->t_sndtlpbyte += tlen; KASSERT(SEQ_LEQ(tp->snd_una, rsm->r_start), ("%s:%d: r.start:%u < SND.UNA:%u; tp:%p, rack:%p, rsm:%p", __func__, __LINE__, @@ -18107,6 +18111,7 @@ out: * retransmit. In persist state, just set snd_max. */ if (error == 0) { + tcp_account_for_send(tp, len, (rsm != NULL), doing_tlp); rack->forced_ack = 0; /* If we send something zap the FA flag */ if (rsm && (doing_tlp == 0)) { /* Set we retransmitted */ @@ -18151,8 +18156,6 @@ out: if (doing_tlp && (rsm == NULL)) { /* New send doing a TLP */ add_flag |= RACK_TLP; - tp->t_sndtlppack++; - tp->t_sndtlpbyte += len; } rack_log_output(tp, &to, len, rack_seq, (uint8_t) flags, error, rack_to_usec_ts(&tv), diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index 1858d0146ce5..367dd9765534 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -261,6 +261,8 @@ struct tcpcb { uint32_t t_maxpeakrate; /* max peak rate set by user, in bytes/s */ uint32_t t_sndtlppack; /* tail loss probe packets sent */ uint64_t t_sndtlpbyte; /* total tail loss probe bytes sent */ + uint64_t t_sndbytes; /* total bytes sent */ + uint64_t t_snd_rxt_bytes; /* total bytes retransmitted */ uint8_t t_tfo_client_cookie_len; /* TCP Fast Open client cookie length */ uint32_t t_end_info_status; /* Status flag of end info */ @@ -1128,6 +1130,22 @@ tcp_fields_to_net(struct tcphdr *th) th->th_win = htons(th->th_win); th->th_urp = htons(th->th_urp); } + +static inline void +tcp_account_for_send(struct tcpcb *tp, uint32_t len, uint8_t is_rxt, uint8_t is_tlp) +{ + if (is_tlp) { + tp->t_sndtlppack++; + tp->t_sndtlpbyte += len; + } + /* To get total bytes sent you must add t_snd_rxt_bytes to t_sndbytes */ + if (is_rxt) + tp->t_snd_rxt_bytes += len; + else + tp->t_sndbytes += len; + +} + #endif /* _KERNEL */ #endif /* _NETINET_TCP_VAR_H_ */ From owner-dev-commits-src-all@freebsd.org Mon Jun 14 21:02:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3236C6535CD; Mon, 14 Jun 2021 21:02:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3kRD0vHXz4tLh; Mon, 14 Jun 2021 21:02:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 071AB1BAB0; Mon, 14 Jun 2021 21:02:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EL2FMK027399; Mon, 14 Jun 2021 21:02:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EL2Ftq027363; Mon, 14 Jun 2021 21:02:15 GMT (envelope-from git) Date: Mon, 14 Jun 2021 21:02:15 GMT Message-Id: <202106142102.15EL2Ftq027363@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michael Tuexen Subject: git: d0eaf95edcaf - stable/13 - tcp: Missing mfree in rack and bbr MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tuexen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d0eaf95edcafcaeebfbc3ce9f361e98914830a49 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 21:02:16 -0000 The branch stable/13 has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=d0eaf95edcafcaeebfbc3ce9f361e98914830a49 commit d0eaf95edcafcaeebfbc3ce9f361e98914830a49 Author: Randall Stewart AuthorDate: 2021-06-11 15:38:08 +0000 Commit: Michael Tuexen CommitDate: 2021-06-14 21:00:17 +0000 tcp: Missing mfree in rack and bbr Recently (Nov) we added logic that protects against a peer negotiating a timestamp, and then not including a timestamp. This involved in the input path doing a goto done_with_input label. Now I suspect the code was cribbed from one in Rack that has to do with the SYN. This had a bug, i.e. it should have a m_freem(m) before going to the label (bbr had this missing m_freem() but rack did not). This then caused the missing m_freem to show up in both BBR and Rack. Also looking at the code referencing m->m_pkthdr.lro_nsegs later (after processing) is not a good idea, even though its only for logging. Best to copy that off before any frees can take place. Reviewed by: mtuexen Sponsored by: Netflix Inc Differential Revision: https://reviews.freebsd.org/D30727 (cherry picked from commit ba1b3e48f5be320f0590bc357ea53fdc3e4edc65) --- sys/netinet/tcp_stacks/bbr.c | 1 + sys/netinet/tcp_stacks/rack.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_stacks/bbr.c b/sys/netinet/tcp_stacks/bbr.c index 05db7180e7b2..06975c45cdbd 100644 --- a/sys/netinet/tcp_stacks/bbr.c +++ b/sys/netinet/tcp_stacks/bbr.c @@ -11441,6 +11441,7 @@ bbr_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, if ((tp->t_flags & TF_RCVD_TSTMP) && !(to.to_flags & TOF_TS) && ((thflags & TH_RST) == 0) && (V_tcp_tolerate_missing_ts == 0)) { retval = 0; + m_freem(m); goto done_with_input; } /* diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index f9ba67088f7a..dc3c8d47dc31 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -13452,6 +13452,7 @@ rack_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, #ifdef TCP_ACCOUNTING int ack_val_set = 0xf; #endif + int nsegs; uint32_t us_cts; /* * tv passed from common code is from either M_TSTMP_LRO or @@ -13463,6 +13464,7 @@ rack_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, if (m->m_flags & M_ACKCMP) { panic("Impossible reach m has ackcmp? m:%p tp:%p", m, tp); } + nsegs = m->m_pkthdr.lro_nsegs; counter_u64_add(rack_proc_non_comp_ack, 1); thflags = th->th_flags; #ifdef TCP_ACCOUNTING @@ -13605,6 +13607,7 @@ rack_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, if ((thflags & TH_SYN) && (thflags & TH_FIN) && V_drop_synfin) { way_out = 4; retval = 0; + m_freem(m); goto done_with_input; } /* @@ -13639,6 +13642,7 @@ rack_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so, ((thflags & TH_RST) == 0) && (V_tcp_tolerate_missing_ts == 0)) { way_out = 5; retval = 0; + m_freem(m); goto done_with_input; } @@ -13942,7 +13946,7 @@ do_output_now: way_out = 2; } done_with_input: - rack_log_doseg_done(rack, cts, nxt_pkt, did_out, way_out, max(1, m->m_pkthdr.lro_nsegs)); + rack_log_doseg_done(rack, cts, nxt_pkt, did_out, way_out, max(1, nsegs)); if (did_out) rack->r_wanted_output = 0; #ifdef INVARIANTS From owner-dev-commits-src-all@freebsd.org Mon Jun 14 21:34:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 57C19654A47; Mon, 14 Jun 2021 21:34:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3l8V1ykqz3Gd0; Mon, 14 Jun 2021 21:34:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2CE4E1C07B; Mon, 14 Jun 2021 21:34:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ELYYJ9067434; Mon, 14 Jun 2021 21:34:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ELYYKH067433; Mon, 14 Jun 2021 21:34:34 GMT (envelope-from git) Date: Mon, 14 Jun 2021 21:34:34 GMT Message-Id: <202106142134.15ELYYKH067433@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 86461b646df5 - main - gconcat: Add some simple regression tests for the new append verb MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 86461b646df5da8117ddf051d212bcd13b5593f8 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 21:34:34 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=86461b646df5da8117ddf051d212bcd13b5593f8 commit 86461b646df5da8117ddf051d212bcd13b5593f8 Author: Mark Johnston AuthorDate: 2021-06-14 19:18:49 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 21:31:28 +0000 gconcat: Add some simple regression tests for the new append verb Sponsored by: The FreeBSD Foundation --- tests/sys/geom/class/concat/Makefile | 2 + tests/sys/geom/class/concat/append1.sh | 47 ++++++++++++++++++++ tests/sys/geom/class/concat/append2.sh | 78 ++++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) diff --git a/tests/sys/geom/class/concat/Makefile b/tests/sys/geom/class/concat/Makefile index b0849962aa01..380eca093038 100644 --- a/tests/sys/geom/class/concat/Makefile +++ b/tests/sys/geom/class/concat/Makefile @@ -6,6 +6,8 @@ TESTSDIR= ${TESTSBASE}/sys/geom/class/${.CURDIR:T} TAP_TESTS_SH+= 1_test TAP_TESTS_SH+= 2_test +TAP_TESTS_SH+= append1 +TAP_TESTS_SH+= append2 ${PACKAGE}FILES+= conf.sh diff --git a/tests/sys/geom/class/concat/append1.sh b/tests/sys/geom/class/concat/append1.sh new file mode 100644 index 000000000000..0331fe4503af --- /dev/null +++ b/tests/sys/geom/class/concat/append1.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# $FreeBSD$ + +# A basic regression test for gconcat append using "gconcat create", +# i.e., manual mode. + +gconcat_check_size() +{ + local actual expected name + + name=$1 + expected=$2 + + actual=$(diskinfo /dev/concat/${name} | awk '{print $3}') + if [ $actual -eq $expected ]; then + echo "ok - Size is ${actual}" + else + echo "not ok - Size is ${actual}" + fi +} + +. `dirname $0`/conf.sh + +echo '1..3' + +us0=$(attach_md -t malloc -s 1M) || exit 1 +us1=$(attach_md -t malloc -s 1M) || exit 1 +us2=$(attach_md -t malloc -s 1M) || exit 1 + +gconcat create $name /dev/$us0 /dev/$us1 || exit 1 +devwait + +# We should have a 2MB device. Add another disk and verify that the +# reported size of the concat device grows accordingly. +gconcat_check_size "${name}" $((2 * 1024 * 1024)) +gconcat append $name /dev/$us2 || exit 1 +gconcat_check_size "${name}" $((3 * 1024 * 1024)) + +# Write some data and make sure that we can read it back. +tmpfile=$(mktemp) || exit 1 +dd if=/dev/random of=$tmpfile bs=1M count=3 || exit 1 +dd if=$tmpfile of=/dev/concat/${name} || exit 1 +if cmp -s $tmpfile /dev/concat/${name}; then + echo "ok - Data matches what was written" +else + echo "not ok - Data matches what was written" +fi diff --git a/tests/sys/geom/class/concat/append2.sh b/tests/sys/geom/class/concat/append2.sh new file mode 100644 index 000000000000..e9f39c34746a --- /dev/null +++ b/tests/sys/geom/class/concat/append2.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# $FreeBSD$ + +# A basic regression test for gconcat append using "gconcat label", +# i.e., automatic mode. + +gconcat_check_size() +{ + local actual expected name + + name=$1 + expected=$2 + + actual=$(diskinfo /dev/concat/${name} | awk '{print $3}') + if [ $actual -eq $expected ]; then + echo "ok - Size is ${actual}" + else + echo "not ok - Size is ${actual}" + fi +} + +. `dirname $0`/conf.sh + +echo '1..4' + +ss=512 + +f1=$(mktemp) || exit 1 +truncate -s $((1024 * 1024 + $ss)) $f1 +f2=$(mktemp) || exit 1 +truncate -s $((1024 * 1024 + $ss)) $f2 +f3=$(mktemp) || exit 1 +truncate -s $((1024 * 1024 + $ss)) $f3 + +us0=$(attach_md -f $f1 -S $ss) || exit 1 +us1=$(attach_md -f $f2 -S $ss) || exit 1 +us2=$(attach_md -f $f3 -S $ss) || exit 1 + +gconcat label $name /dev/$us0 /dev/$us1 || exit 1 +devwait + +# We should have a 2MB device. Add another disk and verify that the +# reported size of the concat device grows accordingly. A sector from +# each disk is reserved for the metadata sector. +gconcat_check_size "${name}" $((2 * 1024 * 1024)) +gconcat append $name /dev/$us2 || exit 1 +gconcat_check_size "${name}" $((3 * 1024 * 1024)) + +copy=$(mktemp) || exit 1 +dd if=/dev/random of=$copy bs=1M count=3 || exit 1 +dd if=$copy of=/dev/concat/${name} || exit 1 + +# Stop the concat device and destroy the backing providers. +gconcat stop ${name} || exit 1 +detach_md $us0 +detach_md $us1 +detach_md $us2 + +# Re-create the providers and verify that the concat device comes +# back and that the data is still there. +us0=$(attach_md -f $f1 -S $ss) || exit 1 +us1=$(attach_md -f $f2 -S $ss) || exit 1 +us2=$(attach_md -f $f3 -S $ss) || exit 1 + +devwait + +# Make sure that the +if [ -c /dev/concat/${name} ]; then + echo "ok - concat device was instantiated" +else + echo "not ok - concat device was instantiated" +fi + +if cmp -s $copy /dev/concat/${name}; then + echo "ok - Data was persisted across gconcat stop" +else + echo "not ok - Data was persisted across gconcat stop" +fi From owner-dev-commits-src-all@freebsd.org Mon Jun 14 21:34:35 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9CD0C654CC1; Mon, 14 Jun 2021 21:34:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3l8W3dYHz3Gm0; Mon, 14 Jun 2021 21:34:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 596B21C417; Mon, 14 Jun 2021 21:34:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ELYZDk067458; Mon, 14 Jun 2021 21:34:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ELYZpJ067457; Mon, 14 Jun 2021 21:34:35 GMT (envelope-from git) Date: Mon, 14 Jun 2021 21:34:35 GMT Message-Id: <202106142134.15ELYZpJ067457@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 70dd5eebc025 - main - amd64: Fix propagation of LDT updates MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 70dd5eebc025badb7b835dfee3915d8b5f1e7468 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 21:34:35 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=70dd5eebc025badb7b835dfee3915d8b5f1e7468 commit 70dd5eebc025badb7b835dfee3915d8b5f1e7468 Author: Mark Johnston AuthorDate: 2021-06-14 21:32:18 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 21:32:18 +0000 amd64: Fix propagation of LDT updates When a process has used sysarch(2) to specify descriptors for its private LDT, upon rfork(RFMEM) descriptors are copied into the new child process. Any updates to the descriptors are thus reflected to all other processes sharing the vmspace. However, this is incorrect in the rather obscure case where the child process was created before the LDT was modified. Fix this by only modifying other processes which already share the LDT. Reported by: syzkaller Reviewed by: kib MFC after: 1 week Sponsored by: The FreeBSD Foundation --- sys/amd64/amd64/sys_machdep.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/sys/amd64/amd64/sys_machdep.c b/sys/amd64/amd64/sys_machdep.c index 5a0145e76ccd..c10b15896132 100644 --- a/sys/amd64/amd64/sys_machdep.c +++ b/sys/amd64/amd64/sys_machdep.c @@ -492,15 +492,19 @@ set_user_ldt(struct mdproc *mdp) } static void -set_user_ldt_rv(struct vmspace *vmsp) +set_user_ldt_rv(void *arg) { - struct thread *td; + struct proc *orig, *target; + struct proc_ldt *ldt; + + orig = arg; + target = curthread->td_proc; - td = curthread; - if (vmsp != td->td_proc->p_vmspace) + ldt = (void *)atomic_load_acq_ptr((uintptr_t *)&orig->p_md.md_ldt); + if (target->p_md.md_ldt != ldt) return; - set_user_ldt(&td->td_proc->p_md); + set_user_ldt(&target->p_md); } struct proc_ldt * @@ -550,8 +554,7 @@ user_ldt_alloc(struct proc *p, int force) atomic_thread_fence_rel(); mdp->md_ldt = new_ldt; critical_exit(); - smp_rendezvous(NULL, (void (*)(void *))set_user_ldt_rv, NULL, - p->p_vmspace); + smp_rendezvous(NULL, set_user_ldt_rv, NULL, p); return (mdp->md_ldt); } From owner-dev-commits-src-all@freebsd.org Mon Jun 14 21:34:36 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C1CA0654ACD; Mon, 14 Jun 2021 21:34:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3l8X4RwMz3Gm2; Mon, 14 Jun 2021 21:34:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 795DD1C488; Mon, 14 Jun 2021 21:34:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ELYaa8067482; Mon, 14 Jun 2021 21:34:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ELYaeI067481; Mon, 14 Jun 2021 21:34:36 GMT (envelope-from git) Date: Mon, 14 Jun 2021 21:34:36 GMT Message-Id: <202106142134.15ELYaeI067481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: f4bb1869ddd2 - main - Consistently use the SOLISTENING() macro MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f4bb1869ddd2bca89b6b6bfaf4d866efdd9243cf Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 21:34:36 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f4bb1869ddd2bca89b6b6bfaf4d866efdd9243cf commit f4bb1869ddd2bca89b6b6bfaf4d866efdd9243cf Author: Mark Johnston AuthorDate: 2021-06-14 21:32:27 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 21:32:27 +0000 Consistently use the SOLISTENING() macro Some code was using it already, but in many places we were testing SO_ACCEPTCONN directly. As a small step towards fixing some bugs involving synchronization with listen(2), make the kernel consistently use SOLISTENING(). No functional change intended. MFC after: 1 week Sponsored by: The FreeBSD Foundation --- sys/dev/hyperv/hvsock/hv_sock.c | 2 +- sys/kern/uipc_accf.c | 7 +++---- sys/kern/uipc_socket.c | 8 ++++---- sys/kern/uipc_syscalls.c | 2 +- sys/kern/uipc_usrreq.c | 2 +- sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c | 3 +-- sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c | 3 +-- sys/netgraph/bluetooth/socket/ng_btsocket_sco.c | 2 +- sys/netinet/tcp_input.c | 7 +++---- sys/netinet/tcp_subr.c | 4 ++-- sys/rpc/svc_vc.c | 2 +- 11 files changed, 19 insertions(+), 23 deletions(-) diff --git a/sys/dev/hyperv/hvsock/hv_sock.c b/sys/dev/hyperv/hvsock/hv_sock.c index bcc237271465..00e296fcd335 100644 --- a/sys/dev/hyperv/hvsock/hv_sock.c +++ b/sys/dev/hyperv/hvsock/hv_sock.c @@ -1482,7 +1482,7 @@ hvsock_open_conn_passive(struct vmbus_channel *chan, struct socket *so, int error; /* Do nothing if socket is not listening */ - if ((so->so_options & SO_ACCEPTCONN) == 0) { + if (!SOLISTENING(so)) { HVSOCK_DBG(HVSOCK_DBG_ERR, "%s: socket is not a listening one\n", __func__); return; diff --git a/sys/kern/uipc_accf.c b/sys/kern/uipc_accf.c index 3ca64dd21e25..792c53c7baff 100644 --- a/sys/kern/uipc_accf.c +++ b/sys/kern/uipc_accf.c @@ -172,7 +172,7 @@ accept_filt_getopt(struct socket *so, struct sockopt *sopt) error = 0; afap = malloc(sizeof(*afap), M_TEMP, M_WAITOK | M_ZERO); SOCK_LOCK(so); - if ((so->so_options & SO_ACCEPTCONN) == 0) { + if (!SOLISTENING(so)) { error = EINVAL; goto out; } @@ -208,7 +208,7 @@ accept_filt_setopt(struct socket *so, struct sockopt *sopt) int wakeup; SOCK_LOCK(so); - if ((so->so_options & SO_ACCEPTCONN) == 0) { + if (!SOLISTENING(so)) { SOCK_UNLOCK(so); return (EINVAL); } @@ -278,8 +278,7 @@ accept_filt_setopt(struct socket *so, struct sockopt *sopt) * without first removing it. */ SOCK_LOCK(so); - if ((so->so_options & SO_ACCEPTCONN) == 0 || - so->sol_accept_filter != NULL) { + if (!SOLISTENING(so) || so->sol_accept_filter != NULL) { error = EINVAL; goto out; } diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 94d7782b5f0a..46d9cb8f3a90 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1180,7 +1180,6 @@ int soclose(struct socket *so) { struct accept_queue lqueue; - bool listening; int error = 0; KASSERT(!(so->so_state & SS_NOFDREF), ("soclose: SS_NOFDREF on enter")); @@ -1216,7 +1215,7 @@ drop: (*so->so_proto->pr_usrreqs->pru_close)(so); SOCK_LOCK(so); - if ((listening = (so->so_options & SO_ACCEPTCONN))) { + if (SOLISTENING(so)) { struct socket *sp; TAILQ_INIT(&lqueue); @@ -1237,7 +1236,7 @@ drop: KASSERT((so->so_state & SS_NOFDREF) == 0, ("soclose: NOFDREF")); so->so_state |= SS_NOFDREF; sorele(so); - if (listening) { + if (SOLISTENING(so)) { struct socket *sp, *tsp; TAILQ_FOREACH_SAFE(sp, &lqueue, so_list, tsp) { @@ -1317,7 +1316,8 @@ soconnectat(int fd, struct socket *so, struct sockaddr *nam, struct thread *td) { int error; - if (so->so_options & SO_ACCEPTCONN) + /* XXXMJ racy */ + if (SOLISTENING(so)) return (EOPNOTSUPP); CURVNET_SET(so->so_vnet); diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 23fae343924a..18505b54d603 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -338,7 +338,7 @@ kern_accept4(struct thread *td, int s, struct sockaddr **name, if (error != 0) return (error); head = headfp->f_data; - if ((head->so_options & SO_ACCEPTCONN) == 0) { + if (!SOLISTENING(head)) { error = EINVAL; goto done; } diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 3f7198c2f3ae..eada98b48a1e 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -1603,7 +1603,7 @@ unp_connectat(int fd, struct socket *so, struct sockaddr *nam, goto bad2; } if (connreq) { - if (so2->so_options & SO_ACCEPTCONN) { + if (SOLISTENING(so2)) { CURVNET_SET(so2->so_vnet); so2 = sonewconn(so2, 0); CURVNET_RESTORE(); diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c index 2bd15ac35895..cd620fe3aef9 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c @@ -2733,8 +2733,7 @@ ng_btsocket_l2cap_pcb_by_addr(bdaddr_p bdaddr, int psm) mtx_assert(&ng_btsocket_l2cap_sockets_mtx, MA_OWNED); LIST_FOREACH(p, &ng_btsocket_l2cap_sockets, next) { - if (p->so == NULL || !(p->so->so_options & SO_ACCEPTCONN) || - p->psm != psm) + if (p->so == NULL || !SOLISTENING(p->so) || p->psm != psm) continue; if (bcmp(&p->src, bdaddr, sizeof(p->src)) == 0) diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c b/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c index 95b28e6cc5e7..c0704bce55fa 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c @@ -3398,8 +3398,7 @@ ng_btsocket_rfcomm_pcb_listener(bdaddr_p src, int channel) mtx_lock(&ng_btsocket_rfcomm_sockets_mtx); LIST_FOREACH(pcb, &ng_btsocket_rfcomm_sockets, next) { - if (pcb->channel != channel || - !(pcb->so->so_options & SO_ACCEPTCONN)) + if (pcb->channel != channel || !SOLISTENING(pcb->so)) continue; if (bcmp(&pcb->src, src, sizeof(*src)) == 0) diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c b/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c index da8f22befc79..068b1890f27f 100644 --- a/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c +++ b/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c @@ -1829,7 +1829,7 @@ ng_btsocket_sco_pcb_by_addr(bdaddr_p bdaddr) LIST_FOREACH(p, &ng_btsocket_sco_sockets, next) { mtx_lock(&p->pcb_mtx); - if (p->so == NULL || !(p->so->so_options & SO_ACCEPTCONN)) { + if (p->so == NULL || !SOLISTENING(p->so)) { mtx_unlock(&p->pcb_mtx); continue; } diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index e71a11bdef05..1d685b43697f 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -955,8 +955,7 @@ findpcb: } if ((inp->inp_flowtype == M_HASHTYPE_NONE) && (M_HASHTYPE_GET(m) != M_HASHTYPE_NONE) && - ((inp->inp_socket == NULL) || - (inp->inp_socket->so_options & SO_ACCEPTCONN) == 0)) { + ((inp->inp_socket == NULL) || !SOLISTENING(inp->inp_socket))) { inp->inp_flowid = m->m_pkthdr.flowid; inp->inp_flowtype = M_HASHTYPE_GET(m); } @@ -1055,9 +1054,9 @@ findpcb: * state) we look into the SYN cache if this is a new connection * attempt or the completion of a previous one. */ - KASSERT(tp->t_state == TCPS_LISTEN || !(so->so_options & SO_ACCEPTCONN), + KASSERT(tp->t_state == TCPS_LISTEN || !SOLISTENING(so), ("%s: so accepting but tp %p not listening", __func__, tp)); - if (tp->t_state == TCPS_LISTEN && (so->so_options & SO_ACCEPTCONN)) { + if (tp->t_state == TCPS_LISTEN && SOLISTENING(so)) { struct in_conninfo inc; bzero(&inc, sizeof(inc)); diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index de22310d241a..a1531ea8d2f3 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -3696,8 +3696,8 @@ sysctl_drop(SYSCTL_HANDLER_ARGS) tcp_twclose(tw, 0); else INP_WUNLOCK(inp); - } else if (!(inp->inp_flags & INP_DROPPED) && - !(inp->inp_socket->so_options & SO_ACCEPTCONN)) { + } else if ((inp->inp_flags & INP_DROPPED) == 0 && + !SOLISTENING(inp->inp_socket)) { tp = intotcpcb(inp); tp = tcp_drop(tp, ECONNABORTED); if (tp != NULL) diff --git a/sys/rpc/svc_vc.c b/sys/rpc/svc_vc.c index de1baa1417b1..234feba5c8bd 100644 --- a/sys/rpc/svc_vc.c +++ b/sys/rpc/svc_vc.c @@ -329,7 +329,7 @@ svc_vc_accept(struct socket *head, struct socket **sop) short nbio; /* XXXGL: shouldn't that be an assertion? */ - if ((head->so_options & SO_ACCEPTCONN) == 0) { + if (!SOLISTENING(head)) { error = EINVAL; goto done; } From owner-dev-commits-src-all@freebsd.org Mon Jun 14 21:34:38 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DFB27654CC4; Mon, 14 Jun 2021 21:34:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3l8Z31wnz3Gwy; Mon, 14 Jun 2021 21:34:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A01061C138; Mon, 14 Jun 2021 21:34:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ELYbZM067510; Mon, 14 Jun 2021 21:34:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ELYbjh067509; Mon, 14 Jun 2021 21:34:37 GMT (envelope-from git) Date: Mon, 14 Jun 2021 21:34:37 GMT Message-Id: <202106142134.15ELYbjh067509@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: a10021748940 - main - Consistently use the SOCKBUF_MTX() and SOCK_MTX() macros MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a100217489405e5926230c50d97aa3f886df5385 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 21:34:39 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a100217489405e5926230c50d97aa3f886df5385 commit a100217489405e5926230c50d97aa3f886df5385 Author: Mark Johnston AuthorDate: 2021-06-14 21:32:32 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 21:32:32 +0000 Consistently use the SOCKBUF_MTX() and SOCK_MTX() macros This makes it easier to change the socket locking protocols. No functional change intended. MFC after: 1 week Sponsored by: The FreeBSD Foundation --- sys/dev/iscsi/icl_soft.c | 2 +- sys/kern/uipc_sockbuf.c | 2 +- sys/kern/uipc_socket.c | 2 +- sys/netinet/sctputil.c | 6 +++--- sys/sys/socketvar.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/dev/iscsi/icl_soft.c b/sys/dev/iscsi/icl_soft.c index c15afbb59a68..001c595af7ec 100644 --- a/sys/dev/iscsi/icl_soft.c +++ b/sys/dev/iscsi/icl_soft.c @@ -729,7 +729,7 @@ icl_receive_thread(void *arg) available = sbavail(&so->so_rcv); if (read + available < ic->ic_receive_len) { so->so_rcv.sb_lowat = ic->ic_receive_len - read; - cv_wait(&ic->ic_receive_cv, &so->so_rcv.sb_mtx); + cv_wait(&ic->ic_receive_cv, SOCKBUF_MTX(&so->so_rcv)); so->so_rcv.sb_lowat = so->so_rcv.sb_hiwat + 1; available = sbavail(&so->so_rcv); } diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index cf53f234d8fc..2c0e10ee1dc2 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -446,7 +446,7 @@ sbwait(struct sockbuf *sb) SOCKBUF_LOCK_ASSERT(sb); sb->sb_flags |= SB_WAIT; - return (msleep_sbt(&sb->sb_acc, &sb->sb_mtx, + return (msleep_sbt(&sb->sb_acc, SOCKBUF_MTX(sb), (sb->sb_flags & SB_NOINTR) ? PSOCK : PSOCK | PCATCH, "sbwait", sb->sb_timeo, 0, 0)); } diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 46d9cb8f3a90..ee3374137acd 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1015,7 +1015,7 @@ solisten_dequeue(struct socket *head, struct socket **ret, int flags) while (!(head->so_state & SS_NBIO) && TAILQ_EMPTY(&head->sol_comp) && head->so_error == 0) { - error = msleep(&head->sol_comp, &head->so_lock, PSOCK | PCATCH, + error = msleep(&head->sol_comp, SOCK_MTX(head), PSOCK | PCATCH, "accept", 0); if (error != 0) { SOLISTEN_UNLOCK(head); diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 2c10ab158c83..82fc38b39ff7 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -376,9 +376,9 @@ sctp_log_lock(struct sctp_inpcb *inp, struct sctp_tcb *stcb, uint8_t from) } sctp_clog.x.lock.info_lock = rw_wowned(&SCTP_BASE_INFO(ipi_ep_mtx)); if (inp && (inp->sctp_socket)) { - sctp_clog.x.lock.sock_lock = mtx_owned(&(inp->sctp_socket->so_rcv.sb_mtx)); - sctp_clog.x.lock.sockrcvbuf_lock = mtx_owned(&(inp->sctp_socket->so_rcv.sb_mtx)); - sctp_clog.x.lock.socksndbuf_lock = mtx_owned(&(inp->sctp_socket->so_snd.sb_mtx)); + sctp_clog.x.lock.sock_lock = mtx_owned(SOCK_MTX(inp->sctp_socket)); + sctp_clog.x.lock.sockrcvbuf_lock = mtx_owned(SOCKBUF_MTX(&inp->sctp_socket->so_rcv)); + sctp_clog.x.lock.socksndbuf_lock = mtx_owned(SOCKBUF_MTX(&inp->sctp_socket->so_snd)); } else { sctp_clog.x.lock.sock_lock = SCTP_LOCK_UNKNOWN; sctp_clog.x.lock.sockrcvbuf_lock = SCTP_LOCK_UNKNOWN; diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h index 295a1cf3d37f..dbd9804a980d 100644 --- a/sys/sys/socketvar.h +++ b/sys/sys/socketvar.h @@ -218,7 +218,7 @@ struct socket { #ifdef _KERNEL -#define SOCK_MTX(so) &(so)->so_lock +#define SOCK_MTX(so) (&(so)->so_lock) #define SOCK_LOCK(so) mtx_lock(&(so)->so_lock) #define SOCK_OWNED(so) mtx_owned(&(so)->so_lock) #define SOCK_UNLOCK(so) mtx_unlock(&(so)->so_lock) From owner-dev-commits-src-all@freebsd.org Mon Jun 14 21:34:39 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BB827654CC7; Mon, 14 Jun 2021 21:34:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3l8b16ysz3GkW; Mon, 14 Jun 2021 21:34:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C2DE81C27C; Mon, 14 Jun 2021 21:34:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ELYcA2067537; Mon, 14 Jun 2021 21:34:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ELYcc7067536; Mon, 14 Jun 2021 21:34:38 GMT (envelope-from git) Date: Mon, 14 Jun 2021 21:34:38 GMT Message-Id: <202106142134.15ELYcc7067536@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 87799c5f85dc - main - cpucontrol: fix extended signature matching code to avoid fallthough MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 87799c5f85dc0aed7e53ca841504e3b2ffc88498 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 21:34:39 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=87799c5f85dc0aed7e53ca841504e3b2ffc88498 commit 87799c5f85dc0aed7e53ca841504e3b2ffc88498 Author: Dan Nelson AuthorDate: 2021-06-14 19:28:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-14 21:34:07 +0000 cpucontrol: fix extended signature matching code to avoid fallthough PR: 256502 MFC after: 1 week --- usr.sbin/cpucontrol/intel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/cpucontrol/intel.c b/usr.sbin/cpucontrol/intel.c index dfe86f7185c6..f4700898d5eb 100644 --- a/usr.sbin/cpucontrol/intel.c +++ b/usr.sbin/cpucontrol/intel.c @@ -242,8 +242,8 @@ no_table: (flags & ext_table[i].cpu_flags) != 0) goto matched; } - } else - goto fail; + } + goto fail; matched: if (revision >= fw_header->revision) { From owner-dev-commits-src-all@freebsd.org Mon Jun 14 22:44:58 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EB38E657553; Mon, 14 Jun 2021 22:44:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3mjk68BJz3NWq; Mon, 14 Jun 2021 22:44:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BB1441D212; Mon, 14 Jun 2021 22:44:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15EMiwZF061034; Mon, 14 Jun 2021 22:44:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15EMiwI2061033; Mon, 14 Jun 2021 22:44:58 GMT (envelope-from git) Date: Mon, 14 Jun 2021 22:44:58 GMT Message-Id: <202106142244.15EMiwI2061033@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jung-uk Kim Subject: git: 09e7341c5ea4 - main - Catch up with Clang 12. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jkim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 09e7341c5ea40120bd1850c48c44bfbae5475f3f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 22:44:59 -0000 The branch main has been updated by jkim: URL: https://cgit.FreeBSD.org/src/commit/?id=09e7341c5ea40120bd1850c48c44bfbae5475f3f commit 09e7341c5ea40120bd1850c48c44bfbae5475f3f Author: Jung-uk Kim AuthorDate: 2021-06-14 22:42:59 +0000 Commit: Jung-uk Kim CommitDate: 2021-06-14 22:42:59 +0000 Catch up with Clang 12. Add "znver3" for AMD and "alderlake" and "sapphirerapids" for Intel. --- share/examples/etc/make.conf | 18 +++++++++--------- share/mk/bsd.cpu.mk | 12 ++++++++---- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/share/examples/etc/make.conf b/share/examples/etc/make.conf index c40a35c0f868..dbb776e7df14 100644 --- a/share/examples/etc/make.conf +++ b/share/examples/etc/make.conf @@ -30,19 +30,19 @@ # NO_CPU_CFLAGS variable below. # Currently the following CPU types are recognized: # Intel x86 architecture: -# (AMD CPUs) znver2, znver1, bdver4, bdver3, bdver2, bdver1, +# (AMD CPUs) znver3, znver2, znver1, bdver4, bdver3, bdver2, bdver1, # btver2, btver1, amdfam10, opteron-sse3, athlon64-sse3, # k8-sse3, opteron, athlon64, athlon-fx, k8, athlon-mp, # athlon-xp, athlon-4, athlon-tbird, athlon, k7, geode, # k6-3, k6-2, k6 -# (Intel CPUs) tigerlake, cooperlake, cascadelake, tremont, -# goldmont-plus, icelake-server, icelake-client, -# cannonlake, knm, skylake-avx512, knl, goldmont, -# skylake, broadwell, haswell, ivybridge, sandybridge, -# westmere, nehalem, silvermont, bonnell, core2, core, -# nocona, pentium4m, pentium4, prescott, pentium3m, -# pentium3, pentium-m, pentium2, pentiumpro, pentium-mmx, -# pentium, i486 +# (Intel CPUs) alderlake, sapphirerapids, tigerlake, cooperlake, +# cascadelake, tremont, goldmont-plus, icelake-server, +# icelake-client, cannonlake, knm, skylake-avx512, knl, +# goldmont, skylake, broadwell, haswell, ivybridge, +# sandybridge, westmere, nehalem, silvermont, bonnell, +# core2, core, nocona, pentium4m, pentium4, prescott, +# pentium3m, pentium3, pentium-m, pentium2, pentiumpro, +# pentium-mmx, pentium, i486 # (VIA CPUs) c7, c3-2, c3 # ARM architecture: armv5, armv5te, armv6, armv6t2, arm1176jzf-s, armv7, # armv7-a, armv7ve, generic-armv7-a, cortex-a5, diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk index cc907d79d03e..c4ca930b74ec 100644 --- a/share/mk/bsd.cpu.mk +++ b/share/mk/bsd.cpu.mk @@ -160,7 +160,8 @@ _CPUCFLAGS = -mcpu=${CPUTYPE} ########## i386 . if ${MACHINE_CPUARCH} == "i386" -. if ${CPUTYPE} == "znver2" || ${CPUTYPE} == "znver1" +. if ${CPUTYPE} == "znver3" || ${CPUTYPE} == "znver2" || \ + ${CPUTYPE} == "znver1" MACHINE_CPU = avx2 avx sse42 sse41 ssse3 sse4a sse3 sse2 sse mmx k6 k5 i586 . elif ${CPUTYPE} == "bdver4" MACHINE_CPU = xop avx2 avx sse42 sse41 ssse3 sse4a sse3 sse2 sse mmx k6 k5 i586 @@ -189,7 +190,8 @@ MACHINE_CPU = 3dnow mmx k6 k5 i586 MACHINE_CPU = mmx k6 k5 i586 . elif ${CPUTYPE} == "k5" MACHINE_CPU = k5 i586 -. elif ${CPUTYPE} == "tigerlake" || ${CPUTYPE} == "cooperlake" || \ +. elif ${CPUTYPE} == "alderlake" || ${CPUTYPE} == "sapphirerapids" || \ + ${CPUTYPE} == "tigerlake" || ${CPUTYPE} == "cooperlake" || \ ${CPUTYPE} == "cascadelake" || ${CPUTYPE} == "icelake-server" || \ ${CPUTYPE} == "icelake-client" || ${CPUTYPE} == "cannonlake" || \ ${CPUTYPE} == "knm" || ${CPUTYPE} == "skylake-avx512" || ${CPUTYPE} == "knl" @@ -236,7 +238,8 @@ MACHINE_CPU = mmx MACHINE_CPU += i486 ########## amd64 . elif ${MACHINE_CPUARCH} == "amd64" -. if ${CPUTYPE} == "znver2" || ${CPUTYPE} == "znver1" +. if ${CPUTYPE} == "znver3" || ${CPUTYPE} == "znver2" || \ + ${CPUTYPE} == "znver1" MACHINE_CPU = avx2 avx sse42 sse41 ssse3 sse4a sse3 . elif ${CPUTYPE} == "bdver4" MACHINE_CPU = xop avx2 avx sse42 sse41 ssse3 sse4a sse3 @@ -255,7 +258,8 @@ MACHINE_CPU = k8 3dnow sse3 . elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \ ${CPUTYPE} == "athlon-fx" || ${CPUTYPE} == "k8" MACHINE_CPU = k8 3dnow -. elif ${CPUTYPE} == "tigerlake" || ${CPUTYPE} == "cooperlake" || \ +. elif ${CPUTYPE} == "alderlake" || ${CPUTYPE} == "sapphirerapids" || \ + ${CPUTYPE} == "tigerlake" || ${CPUTYPE} == "cooperlake" || \ ${CPUTYPE} == "cascadelake" || ${CPUTYPE} == "icelake-server" || \ ${CPUTYPE} == "icelake-client" || ${CPUTYPE} == "cannonlake" || \ ${CPUTYPE} == "knm" || ${CPUTYPE} == "skylake-avx512" || ${CPUTYPE} == "knl" From owner-dev-commits-src-all@freebsd.org Mon Jun 14 23:13:47 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 29E9065914F; Mon, 14 Jun 2021 23:13:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3nLz0MT2z3QMn; Mon, 14 Jun 2021 23:13:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E8E4F1D26D; Mon, 14 Jun 2021 23:13:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ENDkZF002100; Mon, 14 Jun 2021 23:13:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ENDkAA002099; Mon, 14 Jun 2021 23:13:46 GMT (envelope-from git) Date: Mon, 14 Jun 2021 23:13:46 GMT Message-Id: <202106142313.15ENDkAA002099@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jung-uk Kim Subject: git: e80145525b54 - main - bsd.cpu.mk: Correct MACHINE_CPU for Intel Alder Lake MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jkim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e80145525b54a90672d36c9a168d83d0c7cb8161 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 23:13:47 -0000 The branch main has been updated by jkim: URL: https://cgit.FreeBSD.org/src/commit/?id=e80145525b54a90672d36c9a168d83d0c7cb8161 commit e80145525b54a90672d36c9a168d83d0c7cb8161 Author: Jung-uk Kim AuthorDate: 2021-06-14 23:06:03 +0000 Commit: Jung-uk Kim CommitDate: 2021-06-14 23:06:03 +0000 bsd.cpu.mk: Correct MACHINE_CPU for Intel Alder Lake Apparently Intel Alder Lake lacks AVX-512 instructions. Fixes: 09e7341c5ea4 "Catch up with Clang 12" --- share/mk/bsd.cpu.mk | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk index c4ca930b74ec..81a1f0f0dd32 100644 --- a/share/mk/bsd.cpu.mk +++ b/share/mk/bsd.cpu.mk @@ -190,14 +190,14 @@ MACHINE_CPU = 3dnow mmx k6 k5 i586 MACHINE_CPU = mmx k6 k5 i586 . elif ${CPUTYPE} == "k5" MACHINE_CPU = k5 i586 -. elif ${CPUTYPE} == "alderlake" || ${CPUTYPE} == "sapphirerapids" || \ - ${CPUTYPE} == "tigerlake" || ${CPUTYPE} == "cooperlake" || \ - ${CPUTYPE} == "cascadelake" || ${CPUTYPE} == "icelake-server" || \ - ${CPUTYPE} == "icelake-client" || ${CPUTYPE} == "cannonlake" || \ - ${CPUTYPE} == "knm" || ${CPUTYPE} == "skylake-avx512" || ${CPUTYPE} == "knl" +. elif ${CPUTYPE} == "sapphirerapids" || ${CPUTYPE} == "tigerlake" || \ + ${CPUTYPE} == "cooperlake" || ${CPUTYPE} == "cascadelake" || \ + ${CPUTYPE} == "icelake-server" || ${CPUTYPE} == "icelake-client" || \ + ${CPUTYPE} == "cannonlake" || ${CPUTYPE} == "knm" || \ + ${CPUTYPE} == "skylake-avx512" || ${CPUTYPE} == "knl" MACHINE_CPU = avx512 avx2 avx sse42 sse41 ssse3 sse3 sse2 sse i686 mmx i586 -. elif ${CPUTYPE} == "skylake" || ${CPUTYPE} == "broadwell" || \ - ${CPUTYPE} == "haswell" +. elif ${CPUTYPE} == "alderlake" || ${CPUTYPE} == "skylake" || \ + ${CPUTYPE} == "broadwell" || ${CPUTYPE} == "haswell" MACHINE_CPU = avx2 avx sse42 sse41 ssse3 sse3 sse2 sse i686 mmx i586 . elif ${CPUTYPE} == "ivybridge" || ${CPUTYPE} == "sandybridge" MACHINE_CPU = avx sse42 sse41 ssse3 sse3 sse2 sse i686 mmx i586 @@ -258,14 +258,14 @@ MACHINE_CPU = k8 3dnow sse3 . elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \ ${CPUTYPE} == "athlon-fx" || ${CPUTYPE} == "k8" MACHINE_CPU = k8 3dnow -. elif ${CPUTYPE} == "alderlake" || ${CPUTYPE} == "sapphirerapids" || \ - ${CPUTYPE} == "tigerlake" || ${CPUTYPE} == "cooperlake" || \ - ${CPUTYPE} == "cascadelake" || ${CPUTYPE} == "icelake-server" || \ - ${CPUTYPE} == "icelake-client" || ${CPUTYPE} == "cannonlake" || \ - ${CPUTYPE} == "knm" || ${CPUTYPE} == "skylake-avx512" || ${CPUTYPE} == "knl" +. elif ${CPUTYPE} == "sapphirerapids" || ${CPUTYPE} == "tigerlake" || \ + ${CPUTYPE} == "cooperlake" || ${CPUTYPE} == "cascadelake" || \ + ${CPUTYPE} == "icelake-server" || ${CPUTYPE} == "icelake-client" || \ + ${CPUTYPE} == "cannonlake" || ${CPUTYPE} == "knm" || \ + ${CPUTYPE} == "skylake-avx512" || ${CPUTYPE} == "knl" MACHINE_CPU = avx512 avx2 avx sse42 sse41 ssse3 sse3 -. elif ${CPUTYPE} == "skylake" || ${CPUTYPE} == "broadwell" || \ - ${CPUTYPE} == "haswell" +. elif ${CPUTYPE} == "alderlake" || ${CPUTYPE} == "skylake" || \ + ${CPUTYPE} == "broadwell" || ${CPUTYPE} == "haswell" MACHINE_CPU = avx2 avx sse42 sse41 ssse3 sse3 . elif ${CPUTYPE} == "ivybridge" || ${CPUTYPE} == "sandybridge" MACHINE_CPU = avx sse42 sse41 ssse3 sse3 From owner-dev-commits-src-all@freebsd.org Mon Jun 14 23:53:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A0DBB659C18; Mon, 14 Jun 2021 23:53:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3pDn42zdz3jw9; Mon, 14 Jun 2021 23:53:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7314D1DE73; Mon, 14 Jun 2021 23:53:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ENrTNt054918; Mon, 14 Jun 2021 23:53:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ENrTTs054917; Mon, 14 Jun 2021 23:53:29 GMT (envelope-from git) Date: Mon, 14 Jun 2021 23:53:29 GMT Message-Id: <202106142353.15ENrTTs054917@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: df4e97876513 - main - relnotes: fix wording for gconcat entry. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: df4e97876513832cbb46b79318b10846961a2493 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Jun 2021 23:53:29 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=df4e97876513832cbb46b79318b10846961a2493 commit df4e97876513832cbb46b79318b10846961a2493 Author: Warner Losh AuthorDate: 2021-06-14 23:52:47 +0000 Commit: Warner Losh CommitDate: 2021-06-14 23:52:59 +0000 relnotes: fix wording for gconcat entry. --- RELNOTES | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RELNOTES b/RELNOTES index b5531d8c298b..478864776e08 100644 --- a/RELNOTES +++ b/RELNOTES @@ -11,8 +11,8 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. d575e81fbcfa - Support to appending additional devices in gconcact has been - added. + gconcat(8) has added support for appending devices to the device + not present at creation time. 76681661be28 Remove support for asymmetric cryptographic operations from From owner-dev-commits-src-all@freebsd.org Tue Jun 15 00:23:36 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 29A5465A464; Tue, 15 Jun 2021 00:23:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3pvX0SPTz3lPn; Tue, 15 Jun 2021 00:23:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E0D4C1E811; Tue, 15 Jun 2021 00:23:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15F0NZ3C095248; Tue, 15 Jun 2021 00:23:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15F0NZYa095247; Tue, 15 Jun 2021 00:23:35 GMT (envelope-from git) Date: Tue, 15 Jun 2021 00:23:35 GMT Message-Id: <202106150023.15F0NZYa095247@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jessica Clarke Subject: git: 7ef082733bf8 - main - makefs: Cast daddr_t to off_t before multiplication MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7ef082733bf8989797b71025ba6d597a7d17d92b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 00:23:36 -0000 The branch main has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=7ef082733bf8989797b71025ba6d597a7d17d92b commit 7ef082733bf8989797b71025ba6d597a7d17d92b Author: Nathaniel Filardo AuthorDate: 2021-06-15 00:18:36 +0000 Commit: Jessica Clarke CommitDate: 2021-06-15 00:22:04 +0000 makefs: Cast daddr_t to off_t before multiplication Apparently some large-file systems out there, such as my powerpc64le Linux box, define daddr_t as a 32-bit type, which is sad and stymies cross-building disk images. Cast daddr_t to off_t before doing arithmetic that overflows. Reviewed by: arichardson, jrtc27, imp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D27458 --- usr.sbin/makefs/ffs/buf.c | 4 ++-- usr.sbin/makefs/ffs/mkfs.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/usr.sbin/makefs/ffs/buf.c b/usr.sbin/makefs/ffs/buf.c index ccbfd8ae1e23..13f3099c4491 100644 --- a/usr.sbin/makefs/ffs/buf.c +++ b/usr.sbin/makefs/ffs/buf.c @@ -70,7 +70,7 @@ bread(struct m_vnode *vp, daddr_t blkno, int size, struct ucred *u1 __unused, printf("%s: blkno %lld size %d\n", __func__, (long long)blkno, size); *bpp = getblk(vp, blkno, size, 0, 0, 0); - offset = (*bpp)->b_blkno * fs->sectorsize + fs->offset; + offset = (off_t)(*bpp)->b_blkno * fs->sectorsize + fs->offset; if (debug & DEBUG_BUF_BREAD) printf("%s: blkno %lld offset %lld bcount %ld\n", __func__, (long long)(*bpp)->b_blkno, (long long) offset, @@ -130,7 +130,7 @@ bwrite(struct m_buf *bp) fsinfo_t *fs = bp->b_fs; assert (bp != NULL); - offset = bp->b_blkno * fs->sectorsize + fs->offset; + offset = (off_t)bp->b_blkno * fs->sectorsize + fs->offset; if (debug & DEBUG_BUF_BWRITE) printf("bwrite: blkno %lld offset %lld bcount %ld\n", (long long)bp->b_blkno, (long long) offset, diff --git a/usr.sbin/makefs/ffs/mkfs.c b/usr.sbin/makefs/ffs/mkfs.c index a22a604fe501..0f8b040d6997 100644 --- a/usr.sbin/makefs/ffs/mkfs.c +++ b/usr.sbin/makefs/ffs/mkfs.c @@ -794,7 +794,7 @@ ffs_rdfs(daddr_t bno, int size, void *bf, const fsinfo_t *fsopts) int n; off_t offset; - offset = bno * fsopts->sectorsize + fsopts->offset; + offset = (off_t)bno * fsopts->sectorsize + fsopts->offset; if (lseek(fsopts->fd, offset, SEEK_SET) < 0) err(1, "%s: seek error for sector %lld", __func__, (long long)bno); @@ -818,7 +818,7 @@ ffs_wtfs(daddr_t bno, int size, void *bf, const fsinfo_t *fsopts) int n; off_t offset; - offset = bno * fsopts->sectorsize + fsopts->offset; + offset = (off_t)bno * fsopts->sectorsize + fsopts->offset; if (lseek(fsopts->fd, offset, SEEK_SET) < 0) err(1, "%s: seek error for sector %lld", __func__, (long long)bno); From owner-dev-commits-src-all@freebsd.org Tue Jun 15 00:23:37 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3E45E65A68D; Tue, 15 Jun 2021 00:23:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3pvY141mz3lVW; Tue, 15 Jun 2021 00:23:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0DAC81E557; Tue, 15 Jun 2021 00:23:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15F0Nan2095272; Tue, 15 Jun 2021 00:23:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15F0NavY095271; Tue, 15 Jun 2021 00:23:36 GMT (envelope-from git) Date: Tue, 15 Jun 2021 00:23:36 GMT Message-Id: <202106150023.15F0NavY095271@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jessica Clarke Subject: git: 5720b8de4832 - main - riscv: Add an hw.ncpu tunable to limit the number of cores MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5720b8de4832da70e76b9a72c679d0b168d7834e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 00:23:37 -0000 The branch main has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=5720b8de4832da70e76b9a72c679d0b168d7834e commit 5720b8de4832da70e76b9a72c679d0b168d7834e Author: Jessica Clarke AuthorDate: 2021-06-15 00:21:38 +0000 Commit: Jessica Clarke CommitDate: 2021-06-15 00:22:13 +0000 riscv: Add an hw.ncpu tunable to limit the number of cores Based on a similar change to arm64 in 01a8235ea61c. Reviewed by: mhorne MRC after: 1 week Differential Revision: https://reviews.freebsd.org/D30655 --- sys/riscv/riscv/mp_machdep.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sys/riscv/riscv/mp_machdep.c b/sys/riscv/riscv/mp_machdep.c index cdcc86e715dd..1dadf19ce51f 100644 --- a/sys/riscv/riscv/mp_machdep.c +++ b/sys/riscv/riscv/mp_machdep.c @@ -532,9 +532,9 @@ cpu_check_mmu(u_int id, phandle_t node, u_int addr_size, pcell_t *reg) void cpu_mp_setmaxid(void) { -#ifdef FDT int cores; +#ifdef FDT cores = ofw_cpu_early_foreach(cpu_check_mmu, true); if (cores > 0) { cores = MIN(cores, MAXCPU); @@ -543,12 +543,19 @@ cpu_mp_setmaxid(void) mp_ncpus = cores; mp_maxid = cores - 1; cpu_enum_method = CPUS_FDT; - return; - } + } else #endif + { + if (bootverbose) + printf("No CPU data, limiting to 1 core\n"); + mp_ncpus = 1; + mp_maxid = 0; + } - if (bootverbose) - printf("No CPU data, limiting to 1 core\n"); - mp_ncpus = 1; - mp_maxid = 0; + if (TUNABLE_INT_FETCH("hw.ncpu", &cores)) { + if (cores > 0 && cores < mp_ncpus) { + mp_ncpus = cores; + mp_maxid = cores - 1; + } + } } From owner-dev-commits-src-all@freebsd.org Tue Jun 15 00:23:38 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9C3EE65A910; Tue, 15 Jun 2021 00:23:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3pvZ2Lhtz3lBS; Tue, 15 Jun 2021 00:23:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 299EB1E812; Tue, 15 Jun 2021 00:23:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15F0NcYS095296; Tue, 15 Jun 2021 00:23:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15F0NcXA095295; Tue, 15 Jun 2021 00:23:38 GMT (envelope-from git) Date: Tue, 15 Jun 2021 00:23:38 GMT Message-Id: <202106150023.15F0NcXA095295@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jessica Clarke Subject: git: d5c1296234cb - main - spl: Unbreak crossbuild after f20893853e8e MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d5c1296234cb8f2077adf61fc43639ecf2e1569b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 00:23:38 -0000 The branch main has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=d5c1296234cb8f2077adf61fc43639ecf2e1569b commit d5c1296234cb8f2077adf61fc43639ecf2e1569b Author: Jessica Clarke AuthorDate: 2021-06-15 00:23:04 +0000 Commit: Jessica Clarke CommitDate: 2021-06-15 00:23:04 +0000 spl: Unbreak crossbuild after f20893853e8e Summary: f20893853e8e made getexecname no longer guarded by BOOTSTRAPPING, but it does not build on non-FreeBSD as it tries to use KERN_PROC_PATHNAME and related constants. Reviewers: mm, imp Reviewed By: imp Subscribers: imp Differential Revision: https://reviews.freebsd.org/D30763 --- cddl/lib/libspl/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cddl/lib/libspl/Makefile b/cddl/lib/libspl/Makefile index 0aac141301e4..6a918c59e27e 100644 --- a/cddl/lib/libspl/Makefile +++ b/cddl/lib/libspl/Makefile @@ -12,10 +12,8 @@ PACKAGE= runtime SRCS = \ assert.c \ - getexecname.c \ list.c \ mkdirp.c \ - os/freebsd/getexecname.c \ os/freebsd/zone.c \ page.c \ timestamp.c \ @@ -27,6 +25,8 @@ SRCS = \ .if !defined(BOOTSTRAPPING) SRCS += \ atomic.c \ + getexecname.c \ + os/freebsd/getexecname.c \ os/freebsd/gethostid.c \ os/freebsd/getmntany.c \ os/freebsd/mnttab.c From owner-dev-commits-src-all@freebsd.org Tue Jun 15 05:36:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D377B65FCBC; Tue, 15 Jun 2021 05:36:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G3xrT5gVZz4bC9; Tue, 15 Jun 2021 05:36:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A73D422472; Tue, 15 Jun 2021 05:36:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15F5aP1Z011911; Tue, 15 Jun 2021 05:36:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15F5aPfG011910; Tue, 15 Jun 2021 05:36:25 GMT (envelope-from git) Date: Tue, 15 Jun 2021 05:36:25 GMT Message-Id: <202106150536.15F5aPfG011910@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: afce58357164 - main - stress2: Added a new verified syzkaller reproducer, update the exclude list and remove a few syscalls from the ignore list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: afce58357164f68caa62b541edcbf87a3c2cb901 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 05:36:25 -0000 The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=afce58357164f68caa62b541edcbf87a3c2cb901 commit afce58357164f68caa62b541edcbf87a3c2cb901 Author: Peter Holm AuthorDate: 2021-06-15 05:33:58 +0000 Commit: Peter Holm CommitDate: 2021-06-15 05:33:58 +0000 stress2: Added a new verified syzkaller reproducer, update the exclude list and remove a few syscalls from the ignore list --- tools/test/stress2/misc/all.exclude | 2 + tools/test/stress2/misc/syscall4.sh | 3 - tools/test/stress2/misc/syzkaller42.sh | 124 +++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+), 3 deletions(-) diff --git a/tools/test/stress2/misc/all.exclude b/tools/test/stress2/misc/all.exclude index 833e4fb0dbd3..9b33cf1a1f23 100644 --- a/tools/test/stress2/misc/all.exclude +++ b/tools/test/stress2/misc/all.exclude @@ -56,6 +56,7 @@ swapoff5.sh log0005.txt, known issue 20210111 systrace.sh WiP 20200227 systrace2.sh WiP 20200227 syzkaller11.sh WiP 20200721 +syzkaller15.sh WiP 20200712 syzkaller19.sh WiP 20200712 syzkaller25.sh WiP 20201116 syzkaller28.sh WiP 20201120 @@ -67,6 +68,7 @@ syzkaller33.sh Fatal trap 18: integer divide fault while in kernel mode 2021041 syzkaller39.sh WiP 20210607 syzkaller40.sh WiP 20210607 syzkaller41.sh WiP 20210607 +syzkaller42.sh WiP 20210613 truss3.sh WiP 20200915 unionfs.sh insmntque: non-locked vp: xx is not exclusive locked... 20130909 unionfs2.sh insmntque: mp-safe fs and non-locked vp is not ... 20111219 diff --git a/tools/test/stress2/misc/syscall4.sh b/tools/test/stress2/misc/syscall4.sh index 824089760ba7..209a00f7af9b 100755 --- a/tools/test/stress2/misc/syscall4.sh +++ b/tools/test/stress2/misc/syscall4.sh @@ -141,10 +141,7 @@ static int ignore[] = { SYS___syscall, 216, /* custom syscall */ SYS_rfork, - SYS_sigsuspend, SYS_mac_syscall, - SYS_sigtimedwait, - SYS_sigwaitinfo, }; static int fd[900], fds[2], kq, socketpr[2]; diff --git a/tools/test/stress2/misc/syzkaller42.sh b/tools/test/stress2/misc/syzkaller42.sh new file mode 100755 index 000000000000..07425e4b8731 --- /dev/null +++ b/tools/test/stress2/misc/syzkaller42.sh @@ -0,0 +1,124 @@ +#!/bin/sh + +[ `uname -p` != "amd64" ] && exit 0 +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +# panic: Assertion lock == sq->sq_lock failed at ../../../kern/subr_sleepqueue.c:371 +# cpuid = 1 +# time = 1623487895 +# KDB: stack backtrace: +# db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe06c14b4700 +# vpanic() at vpanic+0x181/frame 0xfffffe06c14b4750 +# panic() at panic+0x43/frame 0xfffffe06c14b47b0 +# sleepq_add() at sleepq_add+0x3e6/frame 0xfffffe06c14b4800 +# _sleep() at _sleep+0x20e/frame 0xfffffe06c14b48b0 +# kern_sigtimedwait() at kern_sigtimedwait+0x532/frame 0xfffffe06c14b4a20 +# sys_sigwaitinfo() at sys_sigwaitinfo+0x43/frame 0xfffffe06c14b4ac0 +# amd64_syscall() at amd64_syscall+0x147/frame 0xfffffe06c14b4bf0 +# fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe06c14b4bf0 +# --- syscall (0, FreeBSD ELF64, nosys), rip = 0x8003af5fa, rsp = 0x7fffffffe5f8, rbp = 0x7fffffffe610 --- +# KDB: enter: panic +# [ thread pid 15370 tid 356127 ] +# Stopped at kdb_enter+0x37: movq $0,0x1285b4e(%rip) +# db> x/s version +# version: FreeBSD 14.0-CURRENT #0 main-n247326-2349cda44fea: Sat Jun 12 03:57:33 CEST 2021 +# pho@mercat1.netperf.freebsd.org:/usr/src/sys/amd64/compile/PHO +# db> + +. ../default.cfg +cat > /tmp/syzkaller42.c < + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void kill_and_wait(int pid, int* status) +{ + kill(pid, SIGKILL); + while (waitpid(-1, status, 0) != pid) { + } +} + +static void sleep_ms(uint64_t ms) +{ + usleep(ms * 1000); +} + +static uint64_t current_time_ms(void) +{ + struct timespec ts; + if (clock_gettime(CLOCK_MONOTONIC, &ts)) + exit(1); + return (uint64_t)ts.tv_sec * 1000 + (uint64_t)ts.tv_nsec / 1000000; +} + +static void execute_one(void); + +#define WAIT_FLAGS 0 + +static void loop(void) +{ + int iter = 0; + for (;; iter++) { + int pid = fork(); + if (pid < 0) + exit(1); + if (pid == 0) { + execute_one(); + exit(0); + } + int status = 0; + uint64_t start = current_time_ms(); + for (;;) { + if (waitpid(-1, &status, WNOHANG | WAIT_FLAGS) == pid) + break; + sleep_ms(1); + if (current_time_ms() - start < 5000) { + continue; + } + kill_and_wait(pid, &status); + break; + } + } +} + +void execute_one(void) +{ + syscall(SYS_rfork, 0x14034ul); + *(uint32_t*)0x20000140 = 0x80000002; + *(uint32_t*)0x20000144 = 0xfffffff7; + *(uint32_t*)0x20000148 = 0x41; + *(uint32_t*)0x2000014c = 3; + syscall(SYS_sigwaitinfo, 0x20000140ul, 0ul); +} +int main(void) +{ + syscall(SYS_mmap, 0x20000000ul, 0x1000000ul, 7ul, 0x1012ul, -1, 0ul); + loop(); + return 0; +} +EOF +mycc -o /tmp/syzkaller42 -Wall -Wextra -O0 /tmp/syzkaller42.c -lpthread || + exit 1 + +(cd /tmp; timeout 3m ./syzkaller42) + +rm -rf /tmp/syzkaller42 syzkaller42.c /tmp/syzkaller.* +exit 0 From owner-dev-commits-src-all@freebsd.org Tue Jun 15 09:46:12 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 13C3764550B; Tue, 15 Jun 2021 09:46:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G43Nh043qz3DYs; Tue, 15 Jun 2021 09:46:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DAF982600B; Tue, 15 Jun 2021 09:46:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15F9kBVN046895; Tue, 15 Jun 2021 09:46:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15F9kBFw046894; Tue, 15 Jun 2021 09:46:11 GMT (envelope-from git) Date: Tue, 15 Jun 2021 09:46:11 GMT Message-Id: <202106150946.15F9kBFw046894@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Edward Tomasz Napierala Subject: git: 9d167945e840 - main - linux: improve reporting for unsupported syscall flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: trasz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9d167945e8409c739442a02e3fbacb3bcdcc3306 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 09:46:12 -0000 The branch main has been updated by trasz: URL: https://cgit.FreeBSD.org/src/commit/?id=9d167945e8409c739442a02e3fbacb3bcdcc3306 commit 9d167945e8409c739442a02e3fbacb3bcdcc3306 Author: Edward Tomasz Napierala AuthorDate: 2021-06-15 09:18:04 +0000 Commit: Edward Tomasz Napierala CommitDate: 2021-06-15 09:18:18 +0000 linux: improve reporting for unsupported syscall flags Filter out the flags we do support; previously we would print out the flag value verbatim. Reviewed By: dchagin Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D30693 --- sys/compat/linux/linux_file.c | 7 ++++--- sys/compat/linux/linux_stats.c | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/sys/compat/linux/linux_file.c b/sys/compat/linux/linux_file.c index a5ab3506767e..013c435756fb 100644 --- a/sys/compat/linux/linux_file.c +++ b/sys/compat/linux/linux_file.c @@ -1757,10 +1757,11 @@ int linux_fchownat(struct thread *td, struct linux_fchownat_args *args) { char *path; - int error, dfd, flag; + int error, dfd, flag, unsupported; - if (args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH)) { - linux_msg(td, "fchownat unsupported flag 0x%x", args->flag); + unsupported = args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH); + if (unsupported != 0) { + linux_msg(td, "fchownat unsupported flag 0x%x", unsupported); return (EINVAL); } diff --git a/sys/compat/linux/linux_stats.c b/sys/compat/linux/linux_stats.c index 4e6304500a8b..97bace941943 100644 --- a/sys/compat/linux/linux_stats.c +++ b/sys/compat/linux/linux_stats.c @@ -663,11 +663,12 @@ int linux_fstatat64(struct thread *td, struct linux_fstatat64_args *args) { char *path; - int error, dfd, flag; + int error, dfd, flag, unsupported; struct stat buf; - if (args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH)) { - linux_msg(td, "fstatat64 unsupported flag 0x%x", args->flag); + unsupported = args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH); + if (unsupported != 0) { + linux_msg(td, "fstatat64 unsupported flag 0x%x", unsupported); return (EINVAL); } flag = (args->flag & LINUX_AT_SYMLINK_NOFOLLOW) ? @@ -696,11 +697,12 @@ int linux_newfstatat(struct thread *td, struct linux_newfstatat_args *args) { char *path; - int error, dfd, flag; + int error, dfd, flag, unsupported; struct stat buf; - if (args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH)) { - linux_msg(td, "fstatat unsupported flag 0x%x", args->flag); + unsupported = args->flag & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH); + if (unsupported != 0) { + linux_msg(td, "fstatat unsupported flag 0x%x", unsupported); return (EINVAL); } @@ -769,11 +771,12 @@ int linux_statx(struct thread *td, struct linux_statx_args *args) { char *path; - int error, dirfd, flags; + int error, dirfd, flags, unsupported; struct stat buf; - if (args->flags & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH)) { - linux_msg(td, "statx unsupported flags 0x%x", args->flags); + unsupported = args->flags & ~(LINUX_AT_SYMLINK_NOFOLLOW | LINUX_AT_EMPTY_PATH); + if (unsupported != 0) { + linux_msg(td, "statx unsupported flags 0x%x", unsupported); return (EINVAL); } From owner-dev-commits-src-all@freebsd.org Tue Jun 15 10:07:19 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E11A064507C; Tue, 15 Jun 2021 10:07:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G43s35x7Dz3HQL; Tue, 15 Jun 2021 10:07:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B018926252; Tue, 15 Jun 2021 10:07:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FA7Jag074304; Tue, 15 Jun 2021 10:07:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FA7Jdh074303; Tue, 15 Jun 2021 10:07:19 GMT (envelope-from git) Date: Tue, 15 Jun 2021 10:07:19 GMT Message-Id: <202106151007.15FA7Jdh074303@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Edward Tomasz Napierala Subject: git: 7d681ad774f0 - main - crypt_r(3): fix reentrancy problems with DES MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: trasz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d681ad774f00cf06c4ef910add91e0f8a79f7ae Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 10:07:19 -0000 The branch main has been updated by trasz: URL: https://cgit.FreeBSD.org/src/commit/?id=7d681ad774f00cf06c4ef910add91e0f8a79f7ae commit 7d681ad774f00cf06c4ef910add91e0f8a79f7ae Author: Edward Tomasz Napierala AuthorDate: 2021-06-15 10:04:11 +0000 Commit: Edward Tomasz Napierala CommitDate: 2021-06-15 10:06:40 +0000 crypt_r(3): fix reentrancy problems with DES This code was originally written for non-reentrant crypt(3). In 5f521d7ba72, a thread-safe crypt_r(3) was introduced. However, it looks like the DES implementation is still not re-entrant; routines like setup_salt() or des_setkey() still use global variables. Instead of something drastic, eg removing DES support altogether, just mark those variables as thread-local. This adds about 30kB of data per thread. Given that this only applies to DES, I think the impact is minimal. Reviewed By: markj Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D30674 --- secure/lib/libcrypt/crypt-des.c | 58 ++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/secure/lib/libcrypt/crypt-des.c b/secure/lib/libcrypt/crypt-des.c index 4601e46fe31b..6d8591330ecd 100644 --- a/secure/lib/libcrypt/crypt-des.c +++ b/secure/lib/libcrypt/crypt-des.c @@ -74,27 +74,27 @@ __FBSDID("$FreeBSD$"); #endif -static u_char IP[64] = { +static const u_char IP[64] = { 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 }; -static u_char inv_key_perm[64]; -static u_char key_perm[56] = { +static __thread u_char inv_key_perm[64]; +static const u_char key_perm[56] = { 57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4 }; -static u_char key_shifts[16] = { +static const u_char key_shifts[16] = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 }; -static u_char inv_comp_perm[56]; -static u_char comp_perm[48] = { +static __thread u_char inv_comp_perm[56]; +static const u_char comp_perm[48] = { 14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, @@ -105,8 +105,8 @@ static u_char comp_perm[48] = { * No E box is used, as it's replaced by some ANDs, shifts, and ORs. */ -static u_char u_sbox[8][64]; -static u_char sbox[8][64] = { +static __thread u_char u_sbox[8][64]; +static const u_char sbox[8][64] = { { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, @@ -157,13 +157,13 @@ static u_char sbox[8][64] = { } }; -static u_char un_pbox[32]; -static u_char pbox[32] = { +static __thread u_char un_pbox[32]; +static const u_char pbox[32] = { 16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 }; -static u_int32_t bits32[32] = +static const u_int32_t bits32[32] = { 0x80000000, 0x40000000, 0x20000000, 0x10000000, 0x08000000, 0x04000000, 0x02000000, 0x01000000, @@ -175,24 +175,24 @@ static u_int32_t bits32[32] = 0x00000008, 0x00000004, 0x00000002, 0x00000001 }; -static u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; - -static u_int32_t saltbits; -static u_int32_t old_salt; -static u_int32_t *bits28, *bits24; -static u_char init_perm[64], final_perm[64]; -static u_int32_t en_keysl[16], en_keysr[16]; -static u_int32_t de_keysl[16], de_keysr[16]; -static int des_initialised = 0; -static u_char m_sbox[4][4096]; -static u_int32_t psbox[4][256]; -static u_int32_t ip_maskl[8][256], ip_maskr[8][256]; -static u_int32_t fp_maskl[8][256], fp_maskr[8][256]; -static u_int32_t key_perm_maskl[8][128], key_perm_maskr[8][128]; -static u_int32_t comp_maskl[8][128], comp_maskr[8][128]; -static u_int32_t old_rawkey0, old_rawkey1; - -static u_char ascii64[] = +static const u_char bits8[8] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; + +static __thread u_int32_t saltbits; +static __thread u_int32_t old_salt; +static __thread const u_int32_t *bits28, *bits24; +static __thread u_char init_perm[64], final_perm[64]; +static __thread u_int32_t en_keysl[16], en_keysr[16]; +static __thread u_int32_t de_keysl[16], de_keysr[16]; +static __thread int des_initialised = 0; +static __thread u_char m_sbox[4][4096]; +static __thread u_int32_t psbox[4][256]; +static __thread u_int32_t ip_maskl[8][256], ip_maskr[8][256]; +static __thread u_int32_t fp_maskl[8][256], fp_maskr[8][256]; +static __thread u_int32_t key_perm_maskl[8][128], key_perm_maskr[8][128]; +static __thread u_int32_t comp_maskl[8][128], comp_maskr[8][128]; +static __thread u_int32_t old_rawkey0, old_rawkey1; + +static const u_char ascii64[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; /* 0000000000111111111122222222223333333333444444444455555555556666 */ /* 0123456789012345678901234567890123456789012345678901234567890123 */ From owner-dev-commits-src-all@freebsd.org Tue Jun 15 12:40:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 218966493EE; Tue, 15 Jun 2021 12:40:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G47Fn0CWnz3k44; Tue, 15 Jun 2021 12:40:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DF7621DE; Tue, 15 Jun 2021 12:40:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FCeStH082307; Tue, 15 Jun 2021 12:40:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FCeSO9082306; Tue, 15 Jun 2021 12:40:28 GMT (envelope-from git) Date: Tue, 15 Jun 2021 12:40:28 GMT Message-Id: <202106151240.15FCeSO9082306@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 36c7408818c5 - stable/13 - tests/netgraph: Inital framework for testing libnetgraph MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 36c7408818c53ae0c1f1aee0250c5d3fe16b06e0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 12:40:29 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=36c7408818c53ae0c1f1aee0250c5d3fe16b06e0 commit 36c7408818c53ae0c1f1aee0250c5d3fe16b06e0 Author: Lutz Donnerhacke AuthorDate: 2021-06-02 22:29:46 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-15 12:31:32 +0000 tests/netgraph: Inital framework for testing libnetgraph Provide a framework of functions to test various netgraph modules. Tests contain: - creating, renaming, and destroying nodes - connecting and removing hooks - sending and receiving data - sending ASCII messages and receiving binary responses - errors can be passed for indiviual inspection or fail the test Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30629 Differential Revision: https://reviews.freebsd.org/D30657 Differential Revision: https://reviews.freebsd.org/D30671 Differential Revision: https://reviews.freebsd.org/D30699 (cherry picked from commit 24ea1dbf257aa6757f469bcd859f90e9ad851e59) (cherry picked from commit 09307dbfb888a98232096c751a96ecb3344aa77c) (cherry picked from commit 9021c46603bf29b9700f24b8dce8796b434d7c8f) (cherry picked from commit 5554abd9cc9702af30af90925b33c5efff4e7d88) Also contains some fixups: - indent all files correctly - finish factoring out - remove debugging code - check for renaming issues reported in PR241954 PR: 241954 Differential Revision: https://reviews.freebsd.org/D30692 Differential Revision: https://reviews.freebsd.org/D30714 Differential Revision: https://reviews.freebsd.org/D30713 (cherry picked from commit a664ade93972ce617f0888ff79e715dff9cf0f87) (cherry picked from commit 0afa9be03937d60cb5aeba64c81e3e2165bd3737) (cherry picked from commit 43e4821315c31db067e23564b9bfafb519e77b2b) --- tests/sys/netgraph/Makefile | 6 +- tests/sys/netgraph/basic.c | 191 ++++++++++++++++++++++++++++++ tests/sys/netgraph/util.c | 277 ++++++++++++++++++++++++++++++++++++++++++++ tests/sys/netgraph/util.h | 114 ++++++++++++++++++ 4 files changed, 587 insertions(+), 1 deletion(-) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index aef190bbe178..9f220a620bbe 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -10,6 +10,10 @@ TAP_TESTS_SH+= ng_macfilter_test TEST_METADATA.ng_macfilter_test+= required_user="root" TEST_METADATA.ng_macfilter_test+= required_programs="perl" -MAN= +ATF_TESTS_C+= basic \ + +SRCS.basic= basic.c util.c + +LIBADD+= netgraph .include diff --git a/tests/sys/netgraph/basic.c b/tests/sys/netgraph/basic.c new file mode 100644 index 000000000000..573422add694 --- /dev/null +++ b/tests/sys/netgraph/basic.c @@ -0,0 +1,191 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include "util.h" + +ATF_TC(send_recv); +ATF_TC_HEAD(send_recv, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(send_recv, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_init(); + ng_connect(".", "a", ".", "b"); + ng_register_data("b", get_data0); + ng_send_data("a", msg, sizeof(msg)); + + ng_counter_clear(r); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1); +} + +ATF_TC(node); +ATF_TC_HEAD(node, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(node, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test hub"); + + ng_errors(PASS); + ng_name("a", "test hub"); + ng_errors(FAIL); + if (errno == EADDRINUSE) + atf_tc_expect_fail("PR241954"); + ATF_CHECK_ERRNO(0, 1); + atf_tc_expect_pass(); + + ng_connect(".", "b", "test hub:", "b"); + ng_connect(".", "c", "test hub:", "c"); + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1); + + ng_rmhook(".", "b"); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + ng_shutdown("test hub:"); +} + +ATF_TC(message); +ATF_TC_HEAD(message, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(message, dummy) +{ + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test hub"); + + ng_send_msg("test hub:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("test hub:"); +} + +ATF_TC(same_name); +ATF_TC_HEAD(same_name, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(same_name, dummy) +{ + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test"); + + ng_errors(PASS); + ng_connect(".", "a", ".", "b"); + ATF_CHECK_ERRNO(EEXIST, 1); + ng_connect(".", "b", ".", "b"); + ATF_CHECK_ERRNO(EEXIST, 1); + ng_name(".", "test"); + ATF_CHECK_ERRNO(EADDRINUSE, 1); + + ng_errors(FAIL); + ng_shutdown("test:"); +} + +ATF_TC(queuelimit); +ATF_TC_HEAD(queuelimit, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(queuelimit, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "test"; + const int MAX = 1000; + + ng_init(); + ng_connect(".", "a", ".", "b"); + ng_register_data("b", get_data0); + + ng_errors(PASS); + for (i = 0; i < MAX; i++) + { + ng_send_data("a", msg, sizeof(msg)); + if (errno != 0) + break; + /* no ng_handle_events -> messages stall */ + } + ng_errors(FAIL); + + ng_counter_clear(r); + ng_handle_events(50, &r); + ATF_CHECK(r[0] > 100); + ATF_CHECK(r[0] == i); + atf_tc_expect_fail("Queue full (%d)", i); + ATF_CHECK(r[0] == MAX); + atf_tc_expect_pass(); +} + +ATF_TP_ADD_TCS(basic) +{ + ATF_TP_ADD_TC(basic, send_recv); + ATF_TP_ADD_TC(basic, node); + ATF_TP_ADD_TC(basic, message); + ATF_TP_ADD_TC(basic, same_name); + ATF_TP_ADD_TC(basic, queuelimit); + + return atf_no_error(); +} diff --git a/tests/sys/netgraph/util.c b/tests/sys/netgraph/util.c new file mode 100644 index 000000000000..b25e63dfa76d --- /dev/null +++ b/tests/sys/netgraph/util.c @@ -0,0 +1,277 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include +#include + +#include +#include + +#include "util.h" + + +static int cs = -1, ds = -1; +static ng_error_t error_handling = FAIL; + +#define CHECK(r, x) do { \ + if (!(x)) { \ + if (error_handling == PASS) \ + return r; \ + atf_tc_fail_requirement(file, line, "%s (%s)", \ + #x " not met", strerror(errno));\ + } \ +} while(0) + +struct data_handler +{ + char const *hook; + ng_data_handler_t handler; + SLIST_ENTRY(data_handler) next; +}; +static SLIST_HEAD(, data_handler) data_head = SLIST_HEAD_INITIALIZER(data_head); +static ng_msg_handler_t msg_handler = NULL; + +static void handle_data(void *ctx); +static void handle_msg(void *ctx); + +void +_ng_connect(char const *path1, char const *hook1, + char const *path2, char const *hook2, + char const *file, size_t line) +{ + struct ngm_connect c; + + strncpy(c.ourhook, hook1, sizeof(c.ourhook)); + strncpy(c.peerhook, hook2, sizeof(c.peerhook)); + strncpy(c.path, path2, sizeof(c.path)); + + CHECK(, -1 != NgSendMsg(cs, path1, + NGM_GENERIC_COOKIE, NGM_CONNECT, + &c, sizeof(c))); +} + +void +_ng_mkpeer(char const *path1, char const *hook1, + char const *type, char const *hook2, + char const *file, size_t line) +{ + struct ngm_mkpeer p; + + strncpy(p.ourhook, hook1, sizeof(p.ourhook)); + strncpy(p.peerhook, hook2, sizeof(p.peerhook)); + strncpy(p.type, type, sizeof(p.type)); + + CHECK(, -1 != NgSendMsg(cs, path1, + NGM_GENERIC_COOKIE, NGM_MKPEER, + &p, sizeof(p))); +} + +void +_ng_rmhook(char const *path, char const *hook, + char const *file, size_t line) +{ + struct ngm_rmhook h; + + strncpy(h.ourhook, hook, sizeof(h.ourhook)); + + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_RMHOOK, + &h, sizeof(h))); +} + +void +_ng_name(char const *path, char const *name, + char const *file, size_t line) +{ + struct ngm_name n; + + strncpy(n.name, name, sizeof(n.name)); + + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_NAME, + &n, sizeof(n))); +} + +void +_ng_shutdown(char const *path, + char const *file, size_t line) +{ + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_SHUTDOWN, + NULL, 0)); +} + +void +ng_register_data(char const *hook, ng_data_handler_t proc) +{ + struct data_handler *p; + + ATF_REQUIRE(NULL != (p = calloc(1, sizeof(struct data_handler)))); + ATF_REQUIRE(NULL != (p->hook = strdup(hook))); + ATF_REQUIRE(NULL != (p->handler = proc)); + SLIST_INSERT_HEAD(&data_head, p, next); +} + +void +_ng_send_data(char const *hook, + void const *data, size_t len, + char const *file, size_t line) +{ + CHECK(, -1 != NgSendData(ds, hook, data, len)); +} + +void +ng_register_msg(ng_msg_handler_t proc) +{ + msg_handler = proc; +} + +static void +handle_msg(void *ctx) +{ + struct ng_mesg *m; + char path[NG_PATHSIZ]; + + ATF_REQUIRE(-1 != NgAllocRecvMsg(cs, &m, path)); + + if (msg_handler != NULL) + (*msg_handler) (path, m, ctx); + + free(m); +} + +static void +handle_data(void *ctx) +{ + char hook[NG_HOOKSIZ]; + struct data_handler *hnd; + u_char *data; + int len; + + ATF_REQUIRE(0 < (len = NgAllocRecvData(ds, &data, hook))); + SLIST_FOREACH(hnd, &data_head, next) + { + if (0 == strcmp(hnd->hook, hook)) + break; + } + + if (hnd != NULL) + (*(hnd->handler)) (data, len, ctx); + + free(data); +} + +int +ng_handle_event(unsigned int ms, void *context) +{ + fd_set fds; + int maxfd = (ds < cs) ? cs : ds; + struct timeval timeout = {0, ms * 1000lu}; + + FD_ZERO(&fds); + FD_SET(cs, &fds); + FD_SET(ds, &fds); +retry: + switch (select(maxfd + 1, &fds, NULL, NULL, &timeout)) + { + case -1: + ATF_REQUIRE_ERRNO(EINTR, 1); + goto retry; + case 0: /* timeout */ + return 0; + default: /* something to do */ + if (FD_ISSET(cs, &fds)) + handle_msg(context); + if (FD_ISSET(ds, &fds)) + handle_data(context); + return 1; + } +} + +void +ng_handle_events(unsigned int ms, void *context) +{ + while (ng_handle_event(ms, context)) + ; +} + +int +_ng_send_msg(char const *path, char const *msg, + char const *file, size_t line) +{ + int res; + + CHECK(-1, -1 != (res = NgSendAsciiMsg(cs, path, "%s", msg))); + return (res); +} + +ng_error_t +ng_errors(ng_error_t n) +{ + ng_error_t o = error_handling; + + error_handling = n; + return (o); +} + +void +_ng_init(char const *file, size_t line) +{ + if (cs >= 0) /* prevent reinit */ + return; + + CHECK(, 0 == NgMkSockNode(NULL, &cs, &ds)); + NgSetDebug(3); +} + +#define GD(x) void \ +get_data##x(void *data, size_t len, void *ctx) {\ + int *cnt = ctx; \ + \ + (void)data; \ + (void)len; \ + cnt[x]++; \ +} + +GD(0) +GD(1) +GD(2) +GD(3) +GD(4) +GD(5) +GD(6) +GD(7) +GD(8) +GD(9) diff --git a/tests/sys/netgraph/util.h b/tests/sys/netgraph/util.h new file mode 100644 index 000000000000..44c9f3a360a7 --- /dev/null +++ b/tests/sys/netgraph/util.h @@ -0,0 +1,114 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 + +void +_ng_connect(char const *path1, char const *hook1, + char const *path2, char const *hook2, + char const *file, size_t line); +#define ng_connect(p1,h1,p2,h2) \ + _ng_connect(p1,h1,p2,h2,__FILE__,__LINE__) + +void +_ng_mkpeer(char const *path1, char const *hook1, + char const *type, char const *hook2, + char const *file, size_t line); +#define ng_mkpeer(p1,h1,t,h2) \ + _ng_mkpeer(p1,h1,t,h2,__FILE__,__LINE__) + +void +_ng_shutdown(char const *path, + char const *file, size_t line); +#define ng_shutdown(p) \ + _ng_shutdown(p,__FILE__,__LINE__) + +void +_ng_rmhook(char const *path, char const *hook, + char const *file, size_t line); +#define ng_rmhook(p,h) \ + _ng_rmhook(p,h,__FILE__,__LINE__) + +void +_ng_name(char const *path, char const *name, + char const *file, size_t line); +#define ng_name(p,n) \ + _ng_name(p,n,__FILE__,__LINE__) + + +typedef void (*ng_data_handler_t)(void *, size_t, void *ctx); +void ng_register_data(char const *hook, ng_data_handler_t proc); +void +_ng_send_data(char const *hook, void const *, size_t, + char const *file, size_t line); +#define ng_send_data(h,d,l) \ + _ng_send_data(h,d,l,__FILE__,__LINE__) + +typedef void (*ng_msg_handler_t)(char const *, struct ng_mesg *, void *); +void ng_register_msg(ng_msg_handler_t proc); +int +_ng_send_msg(char const *path, char const *msg, + char const *file, size_t line); +#define ng_send_msg(p,m) \ + _ng_send_msg(p,m,__FILE__,__LINE__) + +int ng_handle_event(unsigned int ms, void *ctx); +void ng_handle_events(unsigned int ms, void *ctx); + +typedef enum +{ + FAIL, PASS +} ng_error_t; +ng_error_t ng_errors(ng_error_t); + +void _ng_init(char const *file, size_t line); +#define ng_init() \ + _ng_init(__FILE__,__LINE__) + +/* Helper function to count received data */ + +typedef int ng_counter_t[10]; +#define ng_counter_clear(x)\ + bzero((x), sizeof(x)) + +void get_data0(void *data, size_t len, void *ctx); +void get_data1(void *data, size_t len, void *ctx); +void get_data2(void *data, size_t len, void *ctx); +void get_data3(void *data, size_t len, void *ctx); +void get_data4(void *data, size_t len, void *ctx); +void get_data5(void *data, size_t len, void *ctx); +void get_data6(void *data, size_t len, void *ctx); +void get_data7(void *data, size_t len, void *ctx); +void get_data8(void *data, size_t len, void *ctx); +void get_data9(void *data, size_t len, void *ctx); From owner-dev-commits-src-all@freebsd.org Tue Jun 15 12:40:30 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 26B68649A9C; Tue, 15 Jun 2021 12:40:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G47Fp0Yzyz3k45; Tue, 15 Jun 2021 12:40:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EEFB81E0; Tue, 15 Jun 2021 12:40:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FCeTKE082331; Tue, 15 Jun 2021 12:40:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FCeT1W082330; Tue, 15 Jun 2021 12:40:29 GMT (envelope-from git) Date: Tue, 15 Jun 2021 12:40:29 GMT Message-Id: <202106151240.15FCeT1W082330@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 1b379f585876 - stable/13 - tests/netgraph: Tests for ng_bridge MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 1b379f5858766867932eff72db19cf435fedd512 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 12:40:30 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=1b379f5858766867932eff72db19cf435fedd512 commit 1b379f5858766867932eff72db19cf435fedd512 Author: Lutz Donnerhacke AuthorDate: 2021-06-04 10:59:00 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-15 12:38:49 +0000 tests/netgraph: Tests for ng_bridge Test functionality of ng_bridge(4): - replicating traffic to anything but the sending hook - persistence - detect loops - unicast to only one link of many - stretch to implementation limits on broadcast Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30647 Differential Revision: https://reviews.freebsd.org/D30699 (cherry picked from commit 61814702398ce29430b2bef75cbdd6fd2c07ad12) (cherry picked from commit 5554abd9cc9702af30af90925b33c5efff4e7d88) --- tests/sys/netgraph/Makefile | 2 + tests/sys/netgraph/bridge.c | 632 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 634 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 9f220a620bbe..7376cb5c1227 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -11,8 +11,10 @@ TEST_METADATA.ng_macfilter_test+= required_user="root" TEST_METADATA.ng_macfilter_test+= required_programs="perl" ATF_TESTS_C+= basic \ + bridge \ SRCS.basic= basic.c util.c +SRCS.bridge= bridge.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/bridge.c b/tests/sys/netgraph/bridge.c new file mode 100644 index 000000000000..3e3c0f804278 --- /dev/null +++ b/tests/sys/netgraph/bridge.c @@ -0,0 +1,632 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include +#include +#include +#include + +#include "util.h" +#include + +static void get_tablesize(char const *source, struct ng_mesg *msg, void *ctx); +struct gettable +{ + u_int32_t tok; + int cnt; +}; + +struct frame4 +{ + struct ether_header eh; + struct ip ip; + char data[64]; +}; +struct frame6 +{ + struct ether_header eh; + struct ip6_hdr ip; + char data[64]; +}; + +static struct frame4 msg4 = { + .ip.ip_v = 4, + .ip.ip_hl = 5, + .ip.ip_ttl = 1, + .ip.ip_p = 254, + .ip.ip_src = {htonl(0x0a00dead)}, + .ip.ip_dst = {htonl(0x0a00beef)}, + .ip.ip_len = 32, + .eh.ether_type = ETHERTYPE_IP, + .eh.ether_shost = {2, 4, 6}, + .eh.ether_dhost = {2, 4, 6}, +}; + + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_connect(".", "b", "bridge:", "link1"); + ng_connect(".", "c", "bridge:", "link2"); + + /* do not bounce back */ + ng_register_data("a", get_data0); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* send to others */ + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + ng_send_data("b", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + ng_send_data("c", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 1 && r[2] == 0); + + /* send to learned unicast */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 3; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 3); + + /* remove a link */ + ng_rmhook(".", "b"); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TC(persistence); +ATF_TC_HEAD(persistence, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(persistence, dummy) +{ + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + + ng_send_msg("bridge:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("bridge:"); +} + +ATF_TC(loop); +ATF_TC_HEAD(loop, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(loop, dummy) +{ + ng_counter_t r; + int i; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge1:"); + ng_shutdown("bridge2:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge1"); + ng_mkpeer(".", "b", "bridge", "link1"); + ng_name("b", "bridge2"); + + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + + /*- + * Open loop + * + * /-- bridge1 + * . < | + * \-- bridge2 + */ + ng_connect("bridge1:", "link11", "bridge2:", "link11"); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1); + + /*- + * Closed loop, DANGEROUS! + * + * /-- bridge1 -\ + * . < | | + * \-- bridge2 -/ + */ + ng_connect("bridge1:", "link12", "bridge2:", "link12"); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_errors(PASS); + ng_send_data("a", &msg4, sizeof(msg4)); + ATF_CHECK_ERRNO(ELOOP, errno != 0); /* loop might be detected */ + ng_errors(FAIL); + for (i = 0; i < 10; i++) /* don't run forever */ + if (!ng_handle_event(50, &r)) + break; + ATF_CHECK(r[0] == 0 && r[1] == 1); + + ng_shutdown("bridge1:"); + ng_shutdown("bridge2:"); +} + +ATF_TC(many_unicasts); +ATF_TC_HEAD(many_unicasts, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_unicasts, dummy) +{ + ng_counter_t r; + int i; + const int HOOKS = 1000; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_register_data("a", get_data0); + + /* learn MAC */ + ng_counter_clear(r); + msg4.eh.ether_shost[3] = 0xff; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* use learned MAC as destination */ + msg4.eh.ether_shost[3] = 0; + msg4.eh.ether_dhost[3] = 0xff; + + /* now send */ + ng_counter_clear(r); + for (i = 1; i <= HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "link%d", i); + ng_connect(".", hook, "bridge:", hook); + ng_register_data(hook, get_data2); + + msg4.eh.ether_shost[4] = i >> 8; + msg4.eh.ether_shost[5] = i & 0xff; + ng_errors(PASS); + ng_send_data(hook, &msg4, sizeof(msg4)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, &r); + } + ATF_CHECK(r[0] == HOOKS && r[2] == 0); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.cnt = 0; + ng_errors(PASS); + rm.tok = ng_send_msg("bridge:", "gettable"); + ng_errors(FAIL); + if (rm.tok == (u_int32_t)-1) + { + ATF_CHECK_ERRNO(ENOBUFS, 1); + atf_tc_expect_fail("response too large"); + } + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == HOOKS + 1); + atf_tc_expect_pass(); + + ng_shutdown("bridge:"); +} + +ATF_TC(many_broadcasts); +ATF_TC_HEAD(many_broadcasts, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_broadcasts, dummy) +{ + ng_counter_t r; + int i; + const int HOOKS = 1000; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_register_data("a", get_data0); + + /* learn MAC */ + ng_counter_clear(r); + msg4.eh.ether_shost[3] = 0xff; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* use broadcast MAC */ + msg4.eh.ether_shost[3] = 0; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + + /* now send */ + ng_counter_clear(r); + for (i = 1; i <= HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "link%d", i); + ng_connect(".", hook, "bridge:", hook); + ng_register_data(hook, get_data3); + + msg4.eh.ether_shost[4] = i >> 8; + msg4.eh.ether_shost[5] = i & 0xff; + ng_errors(PASS); + ng_send_data(hook, &msg4, sizeof(msg4)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, &r); + } + ATF_CHECK(r[0] > 100 && r[3] > 100); + if (i < HOOKS) + atf_tc_expect_fail("netgraph queue full (%d)", i); + ATF_CHECK(r[0] == HOOKS); + atf_tc_expect_pass(); + + ng_shutdown("bridge:"); +} + +ATF_TC(uplink_private); +ATF_TC_HEAD(uplink_private, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(uplink_private, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + + ng_mkpeer(".", "u1", "bridge", "uplink1"); + if (errno > 0) + atf_tc_skip("uplinks are not supported."); + ng_errors(FAIL); + ng_name("u1", "bridge"); + ng_register_data("u1", get_data1); + ng_connect(".", "u2", "bridge:", "uplink2"); + ng_register_data("u2", get_data2); + ng_connect(".", "l0", "bridge:", "link0"); + ng_register_data("l0", get_data0); + ng_connect(".", "l3", "bridge:", "link3"); + ng_register_data("l3", get_data3); + + /* unknown unicast 0 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + + /* unknown unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 0); + + /* known unicast 0 from uplink2 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("u2", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* known unicast 0 from link3 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("l3", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* (un)known unicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + + /* (un)known unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 0); + + /* unknown multicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[0] = 0xff; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* broadcast from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* broadcast from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TC(uplink_classic); +ATF_TC_HEAD(uplink_classic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(uplink_classic, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + + ng_mkpeer(".", "l0", "bridge", "link0"); + if (errno > 0) + atf_tc_skip("uplinks are not supported."); + ng_errors(FAIL); + ng_name("l0", "bridge"); + ng_register_data("l0", get_data0); + ng_connect(".", "u1", "bridge:", "uplink1"); + ng_register_data("u1", get_data1); + ng_connect(".", "u2", "bridge:", "uplink2"); + ng_register_data("u2", get_data2); + ng_connect(".", "l3", "bridge:", "link3"); + ng_register_data("l3", get_data3); + + /* unknown unicast 0 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* known unicast 0 from uplink2 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("u2", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* known unicast 0 from link3 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("l3", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* (un)known unicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* (un)known unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[0] = 0xff; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* broadcast from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* broadcast from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TP_ADD_TCS(bridge) +{ + ATF_TP_ADD_TC(bridge, basic); + ATF_TP_ADD_TC(bridge, loop); + ATF_TP_ADD_TC(bridge, persistence); + ATF_TP_ADD_TC(bridge, many_unicasts); + ATF_TP_ADD_TC(bridge, many_broadcasts); + ATF_TP_ADD_TC(bridge, uplink_private); + ATF_TP_ADD_TC(bridge, uplink_classic); + + return atf_no_error(); +} + +static void +get_tablesize(char const *source, struct ng_mesg *msg, void *ctx) +{ + struct gettable *rm = ctx; + struct ng_bridge_host_ary *gt = (void *)msg->data; + + fprintf(stderr, "Response from %s to query %d\n", source, msg->header.token); + if (rm->tok == msg->header.token) + rm->cnt = gt->numHosts; +} From owner-dev-commits-src-all@freebsd.org Tue Jun 15 12:52:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 75153649A50; Tue, 15 Jun 2021 12:52:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G47WN2xKTz3lYw; Tue, 15 Jun 2021 12:52:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4DB2E653; Tue, 15 Jun 2021 12:52:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FCqGAi098968; Tue, 15 Jun 2021 12:52:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FCqG2x098967; Tue, 15 Jun 2021 12:52:16 GMT (envelope-from git) Date: Tue, 15 Jun 2021 12:52:16 GMT Message-Id: <202106151252.15FCqG2x098967@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 4a06e9377398 - main - id: sanitize arguments better MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4a06e9377398b34922f8a67d7cb3ea980b95bde8 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 12:52:16 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=4a06e9377398b34922f8a67d7cb3ea980b95bde8 commit 4a06e9377398b34922f8a67d7cb3ea980b95bde8 Author: Alan Somers AuthorDate: 2021-06-11 16:38:07 +0000 Commit: Alan Somers CommitDate: 2021-06-15 12:51:16 +0000 id: sanitize arguments better The -[AMc] flags ignore the user argument. Better if id rejects invocations that include a user argument along with any of those flags. PR: 256554 MFC after: 2 weeks Reviewed by: trasz Sponsored by: Axcient Differential Revision: https://reviews.freebsd.org/D30734 --- usr.bin/id/id.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/usr.bin/id/id.c b/usr.bin/id/id.c index 5abfb655c948..b8988dedd6f6 100644 --- a/usr.bin/id/id.c +++ b/usr.bin/id/id.c @@ -144,6 +144,8 @@ main(int argc, char *argv[]) if (iswhoami && argc > 0) usage(); + if ((cflag || Aflag || Mflag) && argc > 0) + usage(); switch(Aflag + Gflag + Mflag + Pflag + gflag + pflag + uflag) { case 1: From owner-dev-commits-src-all@freebsd.org Tue Jun 15 14:11:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4CFAE64B243 for ; Tue, 15 Jun 2021 14:11:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G49GH1b7fz3s6w; Tue, 15 Jun 2021 14:11:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1F5CC13CB; Tue, 15 Jun 2021 14:11:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FEB3Ut006467; Tue, 15 Jun 2021 14:11:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FEB3DD006466; Tue, 15 Jun 2021 14:11:03 GMT (envelope-from git) Date: Tue, 15 Jun 2021 14:11:03 GMT Message-Id: <202106151411.15FEB3DD006466@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Mark Johnston Subject: git: 29a6749b1a3b - internal/admin - Welcome David Chisnall (theraven@) back as a src committer. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/internal/admin X-Git-Reftype: branch X-Git-Commit: 29a6749b1a3bf34afaace2fddbb44c1318249a74 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 14:11:03 -0000 The branch internal/admin has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=29a6749b1a3bf34afaace2fddbb44c1318249a74 commit 29a6749b1a3bf34afaace2fddbb44c1318249a74 Author: Mark Johnston AuthorDate: 2021-06-15 13:53:20 +0000 Commit: Mark Johnston CommitDate: 2021-06-15 13:53:20 +0000 Welcome David Chisnall (theraven@) back as a src committer. I'll act as his mentor while he gets ramped up. Approved by: core --- access | 1 + mentors | 1 + 2 files changed, 2 insertions(+) diff --git a/access b/access index 97b50de9da8a..841474374034 100644 --- a/access +++ b/access @@ -190,6 +190,7 @@ sobomax stevek syrinx takawata +theraven thj tijl tmunro diff --git a/mentors b/mentors index b0171f788b35..365e0658213b 100644 --- a/mentors +++ b/mentors @@ -25,4 +25,5 @@ rajeshasp gallatin Co-mentor: vmaffione ram ken Co-mentor: mav sam emaste scottph scottl Co-mentor: emaste, jhb +theraven markj wosch cem From owner-dev-commits-src-all@freebsd.org Tue Jun 15 16:22:14 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B55C464E511; Tue, 15 Jun 2021 16:22:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4D9f4gM5z4dPF; Tue, 15 Jun 2021 16:22:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 88BA8390E; Tue, 15 Jun 2021 16:22:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FGME4l082044; Tue, 15 Jun 2021 16:22:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FGMEje082043; Tue, 15 Jun 2021 16:22:14 GMT (envelope-from git) Date: Tue, 15 Jun 2021 16:22:14 GMT Message-Id: <202106151622.15FGMEje082043@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 1fbd574e87e6 - main - u3g: Note range of GOBI devices MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1fbd574e87e6084e26a22a6a5af8fc4f71f0fbe9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 16:22:14 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=1fbd574e87e6084e26a22a6a5af8fc4f71f0fbe9 commit 1fbd574e87e6084e26a22a6a5af8fc4f71f0fbe9 Author: Warner Losh AuthorDate: 2021-06-15 16:15:16 +0000 Commit: Warner Losh CommitDate: 2021-06-15 16:21:20 +0000 u3g: Note range of GOBI devices Qualcomm makes the GOBI devices, and gobi_loader port supports all the Qualcomm GOBI 1000 and 2000 devices with the MDM1000 and MDM2000 chipsets. And likely the 3000 as well, though that's not been tested on FreeBSD. Submitted by: zarychtam@plan-b.pwste.edu.pl Sponsored by: Netflix --- share/man/man4/u3g.4 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4 index b1ed3d47db77..6b0bd2a2c1f2 100644 --- a/share/man/man4/u3g.4 +++ b/share/man/man4/u3g.4 @@ -18,7 +18,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 14, 2021 +.Dd June 15, 2021 .Dt U3G 4 .Os .Sh NAME @@ -70,6 +70,8 @@ Vodafone Mobile Broadband K3772-Z .It Qualcomm Inc. CDMA MSM .It +Qualcomm Inc. GOBI 1000, 2000 and 3000 devices with MDM1000 or MDM2000 chipsets +.It Huawei B190, E180v, E220 ('') .It Novatel U740, MC950D, X950D, etc. @@ -150,6 +152,6 @@ The automatic mode switch from disk mode to modem mode does not work unless the driver is either built into the kernel or loaded before the device is connected. .Pp -The Panasonic CF-F9 requires the gobi loader available from the +The GOBI-based devices require the gobi loader available from the .Pa sysutils/gobi_loader port. From owner-dev-commits-src-all@freebsd.org Tue Jun 15 18:18:11 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9C2BE64FD5E; Tue, 15 Jun 2021 18:18:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4GlR43Jhz4mZ3; Tue, 15 Jun 2021 18:18:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 68FEE4B78; Tue, 15 Jun 2021 18:18:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FIIBdE031753; Tue, 15 Jun 2021 18:18:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FIIBLh031752; Tue, 15 Jun 2021 18:18:11 GMT (envelope-from git) Date: Tue, 15 Jun 2021 18:18:11 GMT Message-Id: <202106151818.15FIIBLh031752@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mariusz Zaborski Subject: git: 934e10b4a388 - stable/13 - libcasper: fix descriptors numbers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 934e10b4a388b13c2bcd8fbac8cd8cc4a641b1b0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 18:18:11 -0000 The branch stable/13 has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=934e10b4a388b13c2bcd8fbac8cd8cc4a641b1b0 commit 934e10b4a388b13c2bcd8fbac8cd8cc4a641b1b0 Author: Mariusz Zaborski AuthorDate: 2021-06-09 21:46:51 +0000 Commit: Mariusz Zaborski CommitDate: 2021-06-15 18:14:43 +0000 libcasper: fix descriptors numbers Casper services expect that the first 3 descriptors (stdin/stdout/stderr) will point to /dev/null. Which Casper will ensure later. The Casper services are forked from the original process. If the initial process closes one of those descriptors, Casper may reuse one of them for it on purpose. If this is the case, then renumarate the descriptors used by Casper to higher numbers. This is done already after the fork, so it doesn't break the parent process. PR: 255339 Reported by: Borja Marcos Tested by: jkim@ (cherry picked from commit aa310ebfba3d49a0b6b03a103b969731a8136a73) --- lib/libcasper/libcasper/libcasper_impl.c | 27 +++++++++++++++++++++++++++ lib/libcasper/libcasper/libcasper_impl.h | 1 + lib/libcasper/libcasper/service.c | 23 +++++++++++++---------- lib/libcasper/libcasper/zygote.c | 15 +++++++++------ 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/lib/libcasper/libcasper/libcasper_impl.c b/lib/libcasper/libcasper/libcasper_impl.c index e4411630c8a1..ae28c8769a07 100644 --- a/lib/libcasper/libcasper/libcasper_impl.c +++ b/lib/libcasper/libcasper/libcasper_impl.c @@ -32,8 +32,10 @@ * $FreeBSD$ */ +#include #include #include +#include #include #include "libcasper_impl.h" @@ -44,3 +46,28 @@ fd_is_valid(int fd) return (fcntl(fd, F_GETFL) != -1 || errno != EBADF); } + +void +fd_fix_environment(int *fdp) +{ + int nullfd, nfd; + + if (*fdp > STDERR_FILENO) + return; + + nullfd = open(_PATH_DEVNULL, O_RDWR); + if (nullfd == -1) + errx(1, "Unable to open %s", _PATH_DEVNULL); + + while (*fdp <= STDERR_FILENO) { + nfd = dup(*fdp); + if (nfd == -1) + errx(1, "Unable to secure fd"); + if (dup2(nullfd, *fdp) == -1) + errx(1, "Unable to secure fd"); + *fdp = nfd; + } + + close(nullfd); +} + diff --git a/lib/libcasper/libcasper/libcasper_impl.h b/lib/libcasper/libcasper/libcasper_impl.h index 11e43f083977..24049a0c07c8 100644 --- a/lib/libcasper/libcasper/libcasper_impl.h +++ b/lib/libcasper/libcasper/libcasper_impl.h @@ -44,6 +44,7 @@ struct service; struct service_connection; bool fd_is_valid(int fd); +void fd_fix_environment(int *fdp); /* Private service functions. */ struct service *service_alloc(const char *name, diff --git a/lib/libcasper/libcasper/service.c b/lib/libcasper/libcasper/service.c index 5c1c64d9a9d7..e87d0640347c 100644 --- a/lib/libcasper/libcasper/service.c +++ b/lib/libcasper/libcasper/service.c @@ -386,24 +386,27 @@ stdnull(void) } static void -service_clean(int sock, int procfd, uint64_t flags) +service_clean(int *sockp, int *procfdp, uint64_t flags) { int fd, maxfd, minfd; - assert(sock > STDERR_FILENO); - assert(procfd > STDERR_FILENO); - assert(sock != procfd); + fd_fix_environment(sockp); + fd_fix_environment(procfdp); + + assert(*sockp > STDERR_FILENO); + assert(*procfdp > STDERR_FILENO); + assert(*sockp != *procfdp); if ((flags & CASPER_SERVICE_STDIO) == 0) stdnull(); if ((flags & CASPER_SERVICE_FD) == 0) { - if (procfd > sock) { - maxfd = procfd; - minfd = sock; + if (*procfdp > *sockp) { + maxfd = *procfdp; + minfd = *sockp; } else { - maxfd = sock; - minfd = procfd; + maxfd = *sockp; + minfd = *procfdp; } for (fd = STDERR_FILENO + 1; fd < maxfd; fd++) { @@ -424,7 +427,7 @@ service_start(struct service *service, int sock, int procfd) assert(service != NULL); assert(service->s_magic == SERVICE_MAGIC); setproctitle("%s", service->s_name); - service_clean(sock, procfd, service->s_flags); + service_clean(&sock, &procfd, service->s_flags); if (service_connection_add(service, sock, NULL) == NULL) _exit(1); diff --git a/lib/libcasper/libcasper/zygote.c b/lib/libcasper/libcasper/zygote.c index 2b84bb49a695..5cdd139cc134 100644 --- a/lib/libcasper/libcasper/zygote.c +++ b/lib/libcasper/libcasper/zygote.c @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include "libcasper_impl.h" #include "zygote.h" /* Zygote info. */ @@ -104,7 +105,7 @@ zygote_clone_service_execute(int *chanfdp, int *procfdp) * between sandbox and its owner. */ static void -zygote_main(int sock) +zygote_main(int *sockp) { int error, procfd; int chanfd[2]; @@ -113,12 +114,14 @@ zygote_main(int sock) zygote_func_t *func; pid_t pid; - assert(sock > STDERR_FILENO); + fd_fix_environment(sockp); + + assert(*sockp > STDERR_FILENO); setproctitle("zygote"); for (;;) { - nvlin = nvlist_recv(sock, 0); + nvlin = nvlist_recv(*sockp, 0); if (nvlin == NULL) { if (errno == ENOTCONN) { /* Casper exited. */ @@ -157,7 +160,7 @@ zygote_main(int sock) break; case 0: /* Child. */ - close(sock); + close(*sockp); close(chanfd[0]); func(chanfd[1]); /* NOTREACHED */ @@ -179,7 +182,7 @@ send: nvlist_move_descriptor(nvlout, "chanfd", chanfd[0]); nvlist_move_descriptor(nvlout, "procfd", procfd); } - (void)nvlist_send(sock, nvlout); + (void)nvlist_send(*sockp, nvlout); nvlist_destroy(nvlout); } /* NOTREACHED */ @@ -206,7 +209,7 @@ zygote_init(void) case 0: /* Child. */ close(sp[0]); - zygote_main(sp[1]); + zygote_main(&sp[1]); /* NOTREACHED */ abort(); default: From owner-dev-commits-src-all@freebsd.org Tue Jun 15 18:23:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E29026503F0; Tue, 15 Jun 2021 18:23:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4Gsm61knz4n9t; Tue, 15 Jun 2021 18:23:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B6BB94FBC; Tue, 15 Jun 2021 18:23:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FINeXm044510; Tue, 15 Jun 2021 18:23:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FINegi044509; Tue, 15 Jun 2021 18:23:40 GMT (envelope-from git) Date: Tue, 15 Jun 2021 18:23:40 GMT Message-Id: <202106151823.15FINegi044509@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mariusz Zaborski Subject: git: 4e2ae05c3ae8 - stable/12 - libcasper: fix descriptors numbers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4e2ae05c3ae8c470829b4c3a78aa8c34a7f0b617 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 18:23:41 -0000 The branch stable/12 has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=4e2ae05c3ae8c470829b4c3a78aa8c34a7f0b617 commit 4e2ae05c3ae8c470829b4c3a78aa8c34a7f0b617 Author: Mariusz Zaborski AuthorDate: 2021-06-09 21:46:51 +0000 Commit: Mariusz Zaborski CommitDate: 2021-06-15 18:23:25 +0000 libcasper: fix descriptors numbers Casper services expect that the first 3 descriptors (stdin/stdout/stderr) will point to /dev/null. Which Casper will ensure later. The Casper services are forked from the original process. If the initial process closes one of those descriptors, Casper may reuse one of them for it on purpose. If this is the case, then renumarate the descriptors used by Casper to higher numbers. This is done already after the fork, so it doesn't break the parent process. PR: 255339 Reported by: Borja Marcos Tested by: jkim@ (cherry picked from commit aa310ebfba3d49a0b6b03a103b969731a8136a73) --- lib/libcasper/libcasper/libcasper_impl.c | 27 +++++++++++++++++++++++++++ lib/libcasper/libcasper/libcasper_impl.h | 1 + lib/libcasper/libcasper/service.c | 23 +++++++++++++---------- lib/libcasper/libcasper/zygote.c | 15 +++++++++------ 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/lib/libcasper/libcasper/libcasper_impl.c b/lib/libcasper/libcasper/libcasper_impl.c index e4411630c8a1..ae28c8769a07 100644 --- a/lib/libcasper/libcasper/libcasper_impl.c +++ b/lib/libcasper/libcasper/libcasper_impl.c @@ -32,8 +32,10 @@ * $FreeBSD$ */ +#include #include #include +#include #include #include "libcasper_impl.h" @@ -44,3 +46,28 @@ fd_is_valid(int fd) return (fcntl(fd, F_GETFL) != -1 || errno != EBADF); } + +void +fd_fix_environment(int *fdp) +{ + int nullfd, nfd; + + if (*fdp > STDERR_FILENO) + return; + + nullfd = open(_PATH_DEVNULL, O_RDWR); + if (nullfd == -1) + errx(1, "Unable to open %s", _PATH_DEVNULL); + + while (*fdp <= STDERR_FILENO) { + nfd = dup(*fdp); + if (nfd == -1) + errx(1, "Unable to secure fd"); + if (dup2(nullfd, *fdp) == -1) + errx(1, "Unable to secure fd"); + *fdp = nfd; + } + + close(nullfd); +} + diff --git a/lib/libcasper/libcasper/libcasper_impl.h b/lib/libcasper/libcasper/libcasper_impl.h index 11e43f083977..24049a0c07c8 100644 --- a/lib/libcasper/libcasper/libcasper_impl.h +++ b/lib/libcasper/libcasper/libcasper_impl.h @@ -44,6 +44,7 @@ struct service; struct service_connection; bool fd_is_valid(int fd); +void fd_fix_environment(int *fdp); /* Private service functions. */ struct service *service_alloc(const char *name, diff --git a/lib/libcasper/libcasper/service.c b/lib/libcasper/libcasper/service.c index 5c1c64d9a9d7..e87d0640347c 100644 --- a/lib/libcasper/libcasper/service.c +++ b/lib/libcasper/libcasper/service.c @@ -386,24 +386,27 @@ stdnull(void) } static void -service_clean(int sock, int procfd, uint64_t flags) +service_clean(int *sockp, int *procfdp, uint64_t flags) { int fd, maxfd, minfd; - assert(sock > STDERR_FILENO); - assert(procfd > STDERR_FILENO); - assert(sock != procfd); + fd_fix_environment(sockp); + fd_fix_environment(procfdp); + + assert(*sockp > STDERR_FILENO); + assert(*procfdp > STDERR_FILENO); + assert(*sockp != *procfdp); if ((flags & CASPER_SERVICE_STDIO) == 0) stdnull(); if ((flags & CASPER_SERVICE_FD) == 0) { - if (procfd > sock) { - maxfd = procfd; - minfd = sock; + if (*procfdp > *sockp) { + maxfd = *procfdp; + minfd = *sockp; } else { - maxfd = sock; - minfd = procfd; + maxfd = *sockp; + minfd = *procfdp; } for (fd = STDERR_FILENO + 1; fd < maxfd; fd++) { @@ -424,7 +427,7 @@ service_start(struct service *service, int sock, int procfd) assert(service != NULL); assert(service->s_magic == SERVICE_MAGIC); setproctitle("%s", service->s_name); - service_clean(sock, procfd, service->s_flags); + service_clean(&sock, &procfd, service->s_flags); if (service_connection_add(service, sock, NULL) == NULL) _exit(1); diff --git a/lib/libcasper/libcasper/zygote.c b/lib/libcasper/libcasper/zygote.c index 2b84bb49a695..5cdd139cc134 100644 --- a/lib/libcasper/libcasper/zygote.c +++ b/lib/libcasper/libcasper/zygote.c @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include "libcasper_impl.h" #include "zygote.h" /* Zygote info. */ @@ -104,7 +105,7 @@ zygote_clone_service_execute(int *chanfdp, int *procfdp) * between sandbox and its owner. */ static void -zygote_main(int sock) +zygote_main(int *sockp) { int error, procfd; int chanfd[2]; @@ -113,12 +114,14 @@ zygote_main(int sock) zygote_func_t *func; pid_t pid; - assert(sock > STDERR_FILENO); + fd_fix_environment(sockp); + + assert(*sockp > STDERR_FILENO); setproctitle("zygote"); for (;;) { - nvlin = nvlist_recv(sock, 0); + nvlin = nvlist_recv(*sockp, 0); if (nvlin == NULL) { if (errno == ENOTCONN) { /* Casper exited. */ @@ -157,7 +160,7 @@ zygote_main(int sock) break; case 0: /* Child. */ - close(sock); + close(*sockp); close(chanfd[0]); func(chanfd[1]); /* NOTREACHED */ @@ -179,7 +182,7 @@ send: nvlist_move_descriptor(nvlout, "chanfd", chanfd[0]); nvlist_move_descriptor(nvlout, "procfd", procfd); } - (void)nvlist_send(sock, nvlout); + (void)nvlist_send(*sockp, nvlout); nvlist_destroy(nvlout); } /* NOTREACHED */ @@ -206,7 +209,7 @@ zygote_init(void) case 0: /* Child. */ close(sp[0]); - zygote_main(sp[1]); + zygote_main(&sp[1]); /* NOTREACHED */ abort(); default: From owner-dev-commits-src-all@freebsd.org Tue Jun 15 18:30:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4BF246501EF; Tue, 15 Jun 2021 18:30:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4H1r1VJ0z4pNP; Tue, 15 Jun 2021 18:30:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1C8445316; Tue, 15 Jun 2021 18:30:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FIUenp053379; Tue, 15 Jun 2021 18:30:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FIUeOW053378; Tue, 15 Jun 2021 18:30:40 GMT (envelope-from git) Date: Tue, 15 Jun 2021 18:30:40 GMT Message-Id: <202106151830.15FIUeOW053378@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mariusz Zaborski Subject: git: 6c0a51837f4b - stable/11 - libcasper: fix descriptors numbers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 6c0a51837f4ba242ea723a887c3b6120d9335c8f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 18:30:40 -0000 The branch stable/11 has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=6c0a51837f4ba242ea723a887c3b6120d9335c8f commit 6c0a51837f4ba242ea723a887c3b6120d9335c8f Author: Mariusz Zaborski AuthorDate: 2021-06-09 21:46:51 +0000 Commit: Mariusz Zaborski CommitDate: 2021-06-15 18:30:27 +0000 libcasper: fix descriptors numbers Casper services expect that the first 3 descriptors (stdin/stdout/stderr) will point to /dev/null. Which Casper will ensure later. The Casper services are forked from the original process. If the initial process closes one of those descriptors, Casper may reuse one of them for it on purpose. If this is the case, then renumarate the descriptors used by Casper to higher numbers. This is done already after the fork, so it doesn't break the parent process. PR: 255339 Reported by: Borja Marcos Tested by: jkim@ (cherry picked from commit aa310ebfba3d49a0b6b03a103b969731a8136a73) --- lib/libcasper/libcasper/libcasper_impl.c | 27 +++++++++++++++++++++++++++ lib/libcasper/libcasper/libcasper_impl.h | 1 + lib/libcasper/libcasper/service.c | 23 +++++++++++++---------- lib/libcasper/libcasper/zygote.c | 15 +++++++++------ 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/lib/libcasper/libcasper/libcasper_impl.c b/lib/libcasper/libcasper/libcasper_impl.c index 57d489943252..f58bd44d2039 100644 --- a/lib/libcasper/libcasper/libcasper_impl.c +++ b/lib/libcasper/libcasper/libcasper_impl.c @@ -30,8 +30,10 @@ * $FreeBSD$ */ +#include #include #include +#include #include #include "libcasper_impl.h" @@ -42,3 +44,28 @@ fd_is_valid(int fd) return (fcntl(fd, F_GETFL) != -1 || errno != EBADF); } + +void +fd_fix_environment(int *fdp) +{ + int nullfd, nfd; + + if (*fdp > STDERR_FILENO) + return; + + nullfd = open(_PATH_DEVNULL, O_RDWR); + if (nullfd == -1) + errx(1, "Unable to open %s", _PATH_DEVNULL); + + while (*fdp <= STDERR_FILENO) { + nfd = dup(*fdp); + if (nfd == -1) + errx(1, "Unable to secure fd"); + if (dup2(nullfd, *fdp) == -1) + errx(1, "Unable to secure fd"); + *fdp = nfd; + } + + close(nullfd); +} + diff --git a/lib/libcasper/libcasper/libcasper_impl.h b/lib/libcasper/libcasper/libcasper_impl.h index 89f244d0b87d..01dbd234e3ff 100644 --- a/lib/libcasper/libcasper/libcasper_impl.h +++ b/lib/libcasper/libcasper/libcasper_impl.h @@ -42,6 +42,7 @@ struct service; struct service_connection; bool fd_is_valid(int fd); +void fd_fix_environment(int *fdp); /* Private service functions. */ struct service *service_alloc(const char *name, diff --git a/lib/libcasper/libcasper/service.c b/lib/libcasper/libcasper/service.c index cc53d0d630ae..b3d2d2f05ea3 100644 --- a/lib/libcasper/libcasper/service.c +++ b/lib/libcasper/libcasper/service.c @@ -365,24 +365,27 @@ stdnull(void) } static void -service_clean(int sock, int procfd, uint64_t flags) +service_clean(int *sockp, int *procfdp, uint64_t flags) { int fd, maxfd, minfd; - assert(sock > STDERR_FILENO); - assert(procfd > STDERR_FILENO); - assert(sock != procfd); + fd_fix_environment(sockp); + fd_fix_environment(procfdp); + + assert(*sockp > STDERR_FILENO); + assert(*procfdp > STDERR_FILENO); + assert(*sockp != *procfdp); if ((flags & CASPER_SERVICE_STDIO) == 0) stdnull(); if ((flags & CASPER_SERVICE_FD) == 0) { - if (procfd > sock) { - maxfd = procfd; - minfd = sock; + if (*procfdp > *sockp) { + maxfd = *procfdp; + minfd = *sockp; } else { - maxfd = sock; - minfd = procfd; + maxfd = *sockp; + minfd = *procfdp; } for (fd = STDERR_FILENO + 1; fd < maxfd; fd++) { @@ -403,7 +406,7 @@ service_start(struct service *service, int sock, int procfd) assert(service != NULL); assert(service->s_magic == SERVICE_MAGIC); setproctitle("%s", service->s_name); - service_clean(sock, procfd, service->s_flags); + service_clean(&sock, &procfd, service->s_flags); if (service_connection_add(service, sock, NULL) == NULL) exit(1); diff --git a/lib/libcasper/libcasper/zygote.c b/lib/libcasper/libcasper/zygote.c index feeb1537af87..ef0032ddf58d 100644 --- a/lib/libcasper/libcasper/zygote.c +++ b/lib/libcasper/libcasper/zygote.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include "libcasper_impl.h" #include "zygote.h" /* Zygote info. */ @@ -88,7 +89,7 @@ zygote_clone(zygote_func_t *func, int *chanfdp, int *procfdp) * between sandbox and its owner. */ static void -zygote_main(int sock) +zygote_main(int *sockp) { int error, procfd; int chanfd[2]; @@ -96,12 +97,14 @@ zygote_main(int sock) zygote_func_t *func; pid_t pid; - assert(sock > STDERR_FILENO); + fd_fix_environment(sockp); + + assert(*sockp > STDERR_FILENO); setproctitle("zygote"); for (;;) { - nvlin = nvlist_recv(sock, 0); + nvlin = nvlist_recv(*sockp, 0); if (nvlin == NULL) { if (errno == ENOTCONN) { /* Casper exited. */ @@ -133,7 +136,7 @@ zygote_main(int sock) break; case 0: /* Child. */ - close(sock); + close(*sockp); close(chanfd[0]); func(chanfd[1]); /* NOTREACHED */ @@ -155,7 +158,7 @@ send: nvlist_move_descriptor(nvlout, "chanfd", chanfd[0]); nvlist_move_descriptor(nvlout, "procfd", procfd); } - (void)nvlist_send(sock, nvlout); + (void)nvlist_send(*sockp, nvlout); nvlist_destroy(nvlout); } /* NOTREACHED */ @@ -182,7 +185,7 @@ zygote_init(void) case 0: /* Child. */ close(sp[0]); - zygote_main(sp[1]); + zygote_main(&sp[1]); /* NOTREACHED */ abort(); default: From owner-dev-commits-src-all@freebsd.org Tue Jun 15 19:35:08 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5A128651BCD; Tue, 15 Jun 2021 19:35:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4JSD288Fz4vsf; Tue, 15 Jun 2021 19:35:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 323A16385; Tue, 15 Jun 2021 19:35:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FJZ8qk039365; Tue, 15 Jun 2021 19:35:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FJZ8JZ039364; Tue, 15 Jun 2021 19:35:08 GMT (envelope-from git) Date: Tue, 15 Jun 2021 19:35:08 GMT Message-Id: <202106151935.15FJZ8JZ039364@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: d63e6bc25601 - main - fusefs: delete dead code MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d63e6bc256016c7f5223ff5541671e5a96c4c6c4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 19:35:08 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=d63e6bc256016c7f5223ff5541671e5a96c4c6c4 commit d63e6bc256016c7f5223ff5541671e5a96c4c6c4 Author: Alan Somers AuthorDate: 2021-06-15 19:34:01 +0000 Commit: Alan Somers CommitDate: 2021-06-15 19:34:01 +0000 fusefs: delete dead code Delete two fields in the per-mountpoint struct that have never been used. MFC after: 2 weeks Sponsored by: Axcient --- sys/fs/fuse/fuse_ipc.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/fs/fuse/fuse_ipc.h b/sys/fs/fuse/fuse_ipc.h index 2ed75b3319e3..71562d9193ec 100644 --- a/sys/fs/fuse/fuse_ipc.h +++ b/sys/fs/fuse/fuse_ipc.h @@ -204,8 +204,6 @@ struct fuse_data { uint32_t max_readahead_blocks; uint32_t max_write; uint32_t max_read; - uint32_t subtype; - char volname[MAXPATHLEN]; struct selinfo ks_rsel; From owner-dev-commits-src-all@freebsd.org Tue Jun 15 21:27:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 35F9D653F8A; Tue, 15 Jun 2021 21:27:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4LxP0pTjz3PC9; Tue, 15 Jun 2021 21:27:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 03D8375ED; Tue, 15 Jun 2021 21:27:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FLR4kk087526; Tue, 15 Jun 2021 21:27:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FLR463087525; Tue, 15 Jun 2021 21:27:04 GMT (envelope-from git) Date: Tue, 15 Jun 2021 21:27:04 GMT Message-Id: <202106152127.15FLR463087525@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Pedro F. Giffuni" Subject: git: 62d555c4e828 - stable/13 - fread: improve performance for unbuffered reads MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pfg X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 62d555c4e82852bf80b1d833a31ff4dc7833f4cd Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 21:27:05 -0000 The branch stable/13 has been updated by pfg: URL: https://cgit.FreeBSD.org/src/commit/?id=62d555c4e82852bf80b1d833a31ff4dc7833f4cd commit 62d555c4e82852bf80b1d833a31ff4dc7833f4cd Author: Pedro F. Giffuni AuthorDate: 2021-05-31 01:48:38 +0000 Commit: Pedro F. Giffuni CommitDate: 2021-06-15 21:26:31 +0000 fread: improve performance for unbuffered reads We can use the buffer passed to fread(3) directly in the FILE *. The buffer needs to be reset before each call to __srefill(). This preserves the expected behavior in all cases. The change was found originally in OpenBSD and later adopted by NetBSD. MFC after: 2 weeks Obtained from: OpenBSD (CVS 1.18) Differential Revision: https://reviews.freebsd.org/D30548 --- lib/libc/stdio/fread.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/libc/stdio/fread.c b/lib/libc/stdio/fread.c index c12bcf1148b7..11f8d13f0caf 100644 --- a/lib/libc/stdio/fread.c +++ b/lib/libc/stdio/fread.c @@ -99,6 +99,35 @@ __fread(void * __restrict buf, size_t size, size_t count, FILE * __restrict fp) fp->_r = 0; total = resid; p = buf; + + /* + * If we're unbuffered we know that the buffer in fp is empty so + * we can read directly into buf. This is much faster than a + * series of one byte reads into fp->_nbuf. + */ + if ((fp->_flags & __SNBF) != 0 && buf != NULL) { + while (resid > 0) { + /* set up the buffer */ + fp->_bf._base = fp->_p = p; + fp->_bf._size = resid; + + if (__srefill(fp)) { + /* no more input: return partial result */ + count = (total - resid) / size; + break; + } + p += fp->_r; + resid -= fp->_r; + } + + /* restore the old buffer (see __smakebuf) */ + fp->_bf._base = fp->_p = fp->_nbuf; + fp->_bf._size = 1; + fp->_r = 0; + + return (count); + } + while (resid > (r = fp->_r)) { (void)memcpy((void *)p, (void *)fp->_p, (size_t)r); fp->_p += r; From owner-dev-commits-src-all@freebsd.org Tue Jun 15 21:36:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 07AB1653FE1; Tue, 15 Jun 2021 21:36:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4M8R6rrGz3Pbm; Tue, 15 Jun 2021 21:36:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D36767958; Tue, 15 Jun 2021 21:36:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FLadUx000914; Tue, 15 Jun 2021 21:36:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FLadIR000913; Tue, 15 Jun 2021 21:36:39 GMT (envelope-from git) Date: Tue, 15 Jun 2021 21:36:39 GMT Message-Id: <202106152136.15FLadIR000913@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Vincenzo Maffione Subject: git: 950cf4a29a8e - main - netmap: pkt-gen: fix compilation issue MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: vmaffione X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 950cf4a29a8e11962cf4672311f685af590c106e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 21:36:40 -0000 The branch main has been updated by vmaffione: URL: https://cgit.FreeBSD.org/src/commit/?id=950cf4a29a8e11962cf4672311f685af590c106e commit 950cf4a29a8e11962cf4672311f685af590c106e Author: Vincenzo Maffione AuthorDate: 2021-06-15 21:33:07 +0000 Commit: Vincenzo Maffione CommitDate: 2021-06-15 21:33:07 +0000 netmap: pkt-gen: fix compilation issue Remove stray characters preventing the source code from being compiled. Fixes: 20d684ecc9d7 ("pkt-gen: Allow limiting received packets"). Submitted by: ar_semihalf.com Reviewed by: vmaffione Differential Revision: --- tools/tools/netmap/pkt-gen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/tools/netmap/pkt-gen.c b/tools/tools/netmap/pkt-gen.c index b24915e150a5..f43469cf7ad6 100644 --- a/tools/tools/netmap/pkt-gen.c +++ b/tools/tools/netmap/pkt-gen.c @@ -1844,7 +1844,7 @@ receiver_body(void *data) /* main loop, exit after 1s silence */ clock_gettime(CLOCK_REALTIME_PRECISE, &targ->tic); if (targ->g->dev_type == DEV_TAP) { - while (!targ->cancel && (n == 0 || targ->ctr.pkts < n)) {) { + while (!targ->cancel && (n == 0 || targ->ctr.pkts < n)) { char buf[MAX_BODYSIZE]; /* XXX should we poll ? */ i = read(targ->g->main_fd, buf, sizeof(buf)); From owner-dev-commits-src-all@freebsd.org Tue Jun 15 21:43:11 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DA242654584; Tue, 15 Jun 2021 21:43:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4MHz5rm7z3Ptr; Tue, 15 Jun 2021 21:43:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B14617AD7; Tue, 15 Jun 2021 21:43:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FLhBCi013836; Tue, 15 Jun 2021 21:43:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FLhBGn013835; Tue, 15 Jun 2021 21:43:11 GMT (envelope-from git) Date: Tue, 15 Jun 2021 21:43:11 GMT Message-Id: <202106152143.15FLhBGn013835@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: fcb5a0a2add1 - main - vn_fullpath.9: update args after rev 364633 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fcb5a0a2add19ab070944483a04dc4272f118721 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 21:43:11 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=fcb5a0a2add19ab070944483a04dc4272f118721 commit fcb5a0a2add19ab070944483a04dc4272f118721 Author: Alan Somers AuthorDate: 2021-06-15 20:21:05 +0000 Commit: Alan Somers CommitDate: 2021-06-15 21:42:30 +0000 vn_fullpath.9: update args after rev 364633 MFC after: 2 weeks Sponsored by: Axcient Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D30779 --- share/man/man9/vn_fullpath.9 | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/share/man/man9/vn_fullpath.9 b/share/man/man9/vn_fullpath.9 index f961fbbd1559..9f7287c287dd 100644 --- a/share/man/man9/vn_fullpath.9 +++ b/share/man/man9/vn_fullpath.9 @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 23, 2008 +.Dd June 15, 2021 .Dt VN_FULLPATH 9 .Os .Sh NAME @@ -38,7 +38,7 @@ .In sys/vnode.h .Ft int .Fo vn_fullpath -.Fa "struct thread *td" "struct vnode *vp" "char **retbuf" "char **freebuf" +.Fa "struct vnode *vp" "char **retbuf" "char **freebuf" .Fc .Sh DESCRIPTION The @@ -68,10 +68,6 @@ properly handle) failure. .Pp Its arguments are: .Bl -tag -width ".Fa freebuf" -.It Fa td -The thread performing the call; this pointer will be dereferenced to find -the process and its file descriptor structure, in order to identify the -root vnode to use. .It Fa vp The vnode to search for. No need to be locked by the caller. From owner-dev-commits-src-all@freebsd.org Tue Jun 15 23:55:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 675C5656893; Tue, 15 Jun 2021 23:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4QDN2KCNz3qxB; Tue, 15 Jun 2021 23:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 380C111C26; Tue, 15 Jun 2021 23:55:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FNtGQI086642; Tue, 15 Jun 2021 23:55:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FNtGtB086641; Tue, 15 Jun 2021 23:55:16 GMT (envelope-from git) Date: Tue, 15 Jun 2021 23:55:16 GMT Message-Id: <202106152355.15FNtGtB086641@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: afb36e289c1d - main - sigwait(2) and sigtimedwait(2) must not be restarted. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: afb36e289c1d96053b6063b0e548fc7d31dbd239 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 23:55:16 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=afb36e289c1d96053b6063b0e548fc7d31dbd239 commit afb36e289c1d96053b6063b0e548fc7d31dbd239 Author: Konstantin Belousov AuthorDate: 2021-06-06 23:00:10 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-15 23:00:18 +0000 sigwait(2) and sigtimedwait(2) must not be restarted. Reported by: dchagin Reviewed by: dchagin, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30675 --- sys/kern/kern_sig.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 0453d3b2702c..a2709f38c5cb 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1168,9 +1168,7 @@ sys_sigwait(struct thread *td, struct sigwait_args *uap) error = kern_sigtimedwait(td, set, &ksi, NULL); if (error) { if (error == EINTR && td->td_proc->p_osrel < P_OSREL_SIGWAIT) - error = ERESTART; - if (error == ERESTART) - return (error); + return (ERESTART); td->td_retval[0] = error; return (0); } @@ -1329,15 +1327,13 @@ kern_sigtimedwait(struct thread *td, sigset_t waitset, ksiginfo_t *ksi, error = msleep(ps, &p->p_mtx, PPAUSE|PCATCH, "sigwait", timo); - if (timeout != NULL) { - if (error == ERESTART) { - /* Timeout can not be restarted. */ - error = EINTR; - } else if (error == EAGAIN) { - /* We will calculate timeout by ourself. */ - error = 0; - } - } + /* The syscalls can not be restarted. */ + if (error == ERESTART) + error = EINTR; + + /* We will calculate timeout by ourself. */ + if (timeout != NULL && error == EAGAIN) + error = 0; /* * If PTRACE_SCE or PTRACE_SCX were set after From owner-dev-commits-src-all@freebsd.org Tue Jun 15 23:55:17 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 82A2A65635C; Tue, 15 Jun 2021 23:55:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4QDP300Tz3r0m; Tue, 15 Jun 2021 23:55:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4EB1711BAA; Tue, 15 Jun 2021 23:55:17 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FNtHTA086668; Tue, 15 Jun 2021 23:55:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FNtHIA086667; Tue, 15 Jun 2021 23:55:17 GMT (envelope-from git) Date: Tue, 15 Jun 2021 23:55:17 GMT Message-Id: <202106152355.15FNtHIA086667@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: acced8b043c5 - main - sigwait: add comment explaining EINTR/ERESTART details MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: acced8b043c5df0ebd51934bca6dcae3322cf890 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 23:55:17 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=acced8b043c5df0ebd51934bca6dcae3322cf890 commit acced8b043c5df0ebd51934bca6dcae3322cf890 Author: Konstantin Belousov AuthorDate: 2021-06-07 14:59:41 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-15 23:00:19 +0000 sigwait: add comment explaining EINTR/ERESTART details Reviewed by: dchagin, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30675 --- sys/kern/kern_sig.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index a2709f38c5cb..1cab25aa5a40 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1167,6 +1167,13 @@ sys_sigwait(struct thread *td, struct sigwait_args *uap) error = kern_sigtimedwait(td, set, &ksi, NULL); if (error) { + /* + * sigwait() function shall not return EINTR, but + * the syscall does. Non-ancient libc provides the + * wrapper which hides EINTR. Otherwise, EINTR return + * is used by libthr to handle required cancellation + * point in the sigwait(). + */ if (error == EINTR && td->td_proc->p_osrel < P_OSREL_SIGWAIT) return (ERESTART); td->td_retval[0] = error; From owner-dev-commits-src-all@freebsd.org Tue Jun 15 23:55:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E18A2656664; Tue, 15 Jun 2021 23:55:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4QDS5Skgz3rB9; Tue, 15 Jun 2021 23:55:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A36AD11C27; Tue, 15 Jun 2021 23:55:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FNtKEG086745; Tue, 15 Jun 2021 23:55:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FNtKK4086744; Tue, 15 Jun 2021 23:55:20 GMT (envelope-from git) Date: Tue, 15 Jun 2021 23:55:20 GMT Message-Id: <202106152355.15FNtKK4086744@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 870e197d52c1 - main - Add quirks for Linux ABI signals handling MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 870e197d52c1cb8c3ed6d04ddae34dcae57cb657 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 23:55:21 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=870e197d52c1cb8c3ed6d04ddae34dcae57cb657 commit 870e197d52c1cb8c3ed6d04ddae34dcae57cb657 Author: Konstantin Belousov AuthorDate: 2021-06-05 18:18:21 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-15 23:01:35 +0000 Add quirks for Linux ABI signals handling Require queueing of the signals with default action, and disable dequeueing SIGCHLD on wait for live process. Reported and tested by: dchagin Reviewed by: dchagin, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30675 --- sys/amd64/linux/linux_sysvec.c | 3 ++- sys/amd64/linux32/linux32_sysvec.c | 3 ++- sys/arm64/linux/linux_sysvec.c | 3 ++- sys/i386/linux/linux_sysvec.c | 6 ++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c index 3eab9126f192..66e9fec46e60 100644 --- a/sys/amd64/linux/linux_sysvec.c +++ b/sys/amd64/linux/linux_sysvec.c @@ -752,7 +752,8 @@ struct sysentvec elf_linux_sysvec = { .sv_setregs = linux_exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_LINUX | SV_LP64 | SV_SHP, + .sv_flags = SV_ABI_LINUX | SV_LP64 | SV_SHP | SV_SIG_DISCIGN | + SV_SIG_WAITNDQ, .sv_set_syscall_retval = linux_set_syscall_retval, .sv_fetch_syscall_args = linux_fetch_syscall_args, .sv_syscallnames = NULL, diff --git a/sys/amd64/linux32/linux32_sysvec.c b/sys/amd64/linux32/linux32_sysvec.c index b950c00eba1d..4b492c110556 100644 --- a/sys/amd64/linux32/linux32_sysvec.c +++ b/sys/amd64/linux32/linux32_sysvec.c @@ -919,7 +919,8 @@ struct sysentvec elf_linux_sysvec = { .sv_setregs = linux_exec_setregs, .sv_fixlimit = linux32_fixlimit, .sv_maxssiz = &linux32_maxssiz, - .sv_flags = SV_ABI_LINUX | SV_ILP32 | SV_IA32 | SV_SHP, + .sv_flags = SV_ABI_LINUX | SV_ILP32 | SV_IA32 | SV_SHP | + SV_SIG_DISCIGN | SV_SIG_WAITNDQ, .sv_set_syscall_retval = linux32_set_syscall_retval, .sv_fetch_syscall_args = linux32_fetch_syscall_args, .sv_syscallnames = NULL, diff --git a/sys/arm64/linux/linux_sysvec.c b/sys/arm64/linux/linux_sysvec.c index 57abdc6fd691..177f582ce11f 100644 --- a/sys/arm64/linux/linux_sysvec.c +++ b/sys/arm64/linux/linux_sysvec.c @@ -429,7 +429,8 @@ struct sysentvec elf_linux_sysvec = { .sv_setregs = linux_exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_LINUX | SV_LP64 | SV_SHP, + .sv_flags = SV_ABI_LINUX | SV_LP64 | SV_SHP | SV_SIG_DISCIGN | + SV_SIG_WAITNDQ, .sv_set_syscall_retval = linux_set_syscall_retval, .sv_fetch_syscall_args = linux_fetch_syscall_args, .sv_syscallnames = NULL, diff --git a/sys/i386/linux/linux_sysvec.c b/sys/i386/linux/linux_sysvec.c index 9cc1a723ab55..c94f0824edca 100644 --- a/sys/i386/linux/linux_sysvec.c +++ b/sys/i386/linux/linux_sysvec.c @@ -859,7 +859,8 @@ struct sysentvec linux_sysvec = { .sv_setregs = linux_exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_LINUX | SV_AOUT | SV_IA32 | SV_ILP32, + .sv_flags = SV_ABI_LINUX | SV_AOUT | SV_IA32 | SV_ILP32 | + SV_SIG_DISCIGN | SV_SIG_WAITNDQ, .sv_set_syscall_retval = linux_set_syscall_retval, .sv_fetch_syscall_args = linux_fetch_syscall_args, .sv_syscallnames = NULL, @@ -897,7 +898,8 @@ struct sysentvec elf_linux_sysvec = { .sv_setregs = linux_exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_LINUX | SV_IA32 | SV_ILP32 | SV_SHP, + .sv_flags = SV_ABI_LINUX | SV_IA32 | SV_ILP32 | SV_SHP | + SV_SIG_DISCIGN | SV_SIG_WAITNDQ, .sv_set_syscall_retval = linux_set_syscall_retval, .sv_fetch_syscall_args = linux_fetch_syscall_args, .sv_syscallnames = NULL, From owner-dev-commits-src-all@freebsd.org Tue Jun 15 23:55:18 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BA16D656578; Tue, 15 Jun 2021 23:55:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4QDQ4bXrz3qsM; Tue, 15 Jun 2021 23:55:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 77E9E11CDE; Tue, 15 Jun 2021 23:55:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FNtI56086697; Tue, 15 Jun 2021 23:55:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FNtI0q086696; Tue, 15 Jun 2021 23:55:18 GMT (envelope-from git) Date: Tue, 15 Jun 2021 23:55:18 GMT Message-Id: <202106152355.15FNtI0q086696@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: bc38762474ca - main - Add a knob to not drop signal with default ignored or ignored actions MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bc38762474caed2d41d2562e28f56aa211f47ceb Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 23:55:18 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=bc38762474caed2d41d2562e28f56aa211f47ceb commit bc38762474caed2d41d2562e28f56aa211f47ceb Author: Konstantin Belousov AuthorDate: 2021-06-05 12:42:27 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-15 23:00:19 +0000 Add a knob to not drop signal with default ignored or ignored actions Traditionally, BSD drops signals with the default action during send, not even putting them to the destination process queue. This semantic is not shared with other operating systems (Linux), which do queue such signals. In particular, sigtimedwait(2) and related syscalls can observe the delivery. Add a global knob kern.sig_discard_ign which can be set to false to force enqueuing of the signals with default action. Also add an ABI flag to indicate that signals should be queued. Note that it is not practical to run with the knob turned on, because almost all software that care about the delivery of such signals, is aware of the difference, and misbehaves if the signals are actually queued. The purpose of the knob as is is to allow for easier diagnostic of the programs that need the adjustments, to confirm the cause of problem. Reported by: dchagin Reviewed by: dchagin, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30675 --- sys/kern/kern_sig.c | 65 +++++++++++++++++++++++++++++++---------------------- sys/sys/proc.h | 1 + sys/sys/sysent.h | 1 + 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 1cab25aa5a40..4f6f424fb05d 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -163,6 +163,12 @@ SYSCTL_BOOL(_kern, OID_AUTO, sigfastblock_fetch_always, CTLFLAG_RWTUN, "Fetch sigfastblock word on each syscall entry for proper " "blocking semantic"); +static bool kern_sig_discard_ign = true; +SYSCTL_BOOL(_kern, OID_AUTO, sig_discard_ign, CTLFLAG_RWTUN, + &kern_sig_discard_ign, 0, + "Discard ignored signals on delivery, otherwise queue them to " + "the target queue"); + SYSINIT(signal, SI_SUB_P1003_1B, SI_ORDER_FIRST+3, sigqueue_start, NULL); /* @@ -1290,6 +1296,9 @@ kern_sigtimedwait(struct thread *td, sigset_t waitset, ksiginfo_t *ksi, PROC_LOCK(p); saved_mask = td->td_sigmask; SIGSETNAND(td->td_sigmask, waitset); + if ((p->p_sysent->sv_flags & SV_SIG_DISCIGN) != 0 || + !kern_sig_discard_ign) + td->td_pflags2 |= TDP2_SIGWAIT; for (;;) { mtx_lock(&ps->ps_mtx); sig = cursig(td); @@ -1352,6 +1361,7 @@ kern_sigtimedwait(struct thread *td, sigset_t waitset, ksiginfo_t *ksi, if (error == 0 && (p->p_ptevents & PTRACE_SYSCALL) != 0) traced = true; } + td->td_pflags2 &= ~TDP2_SIGWAIT; new_block = saved_mask; SIGSETNAND(new_block, td->td_sigmask); @@ -2200,22 +2210,25 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) SDT_PROBE3(proc, , , signal__send, td, p, sig); /* - * If the signal is being ignored, - * then we forget about it immediately. - * (Note: we don't set SIGCONT in ps_sigignore, - * and if it is set to SIG_IGN, - * action will be SIG_DFL here.) + * If the signal is being ignored, then we forget about it + * immediately, except when the target process executes + * sigwait(). (Note: we don't set SIGCONT in ps_sigignore, + * and if it is set to SIG_IGN, action will be SIG_DFL here.) */ mtx_lock(&ps->ps_mtx); if (SIGISMEMBER(ps->ps_sigignore, sig)) { - SDT_PROBE3(proc, , , signal__discard, td, p, sig); + if (kern_sig_discard_ign && + (p->p_sysent->sv_flags & SV_SIG_DISCIGN) == 0) { + SDT_PROBE3(proc, , , signal__discard, td, p, sig); - mtx_unlock(&ps->ps_mtx); - if (ksi && (ksi->ksi_flags & KSI_INS)) - ksiginfo_tryfree(ksi); - return (ret); - } - if (SIGISMEMBER(td->td_sigmask, sig)) + mtx_unlock(&ps->ps_mtx); + if (ksi && (ksi->ksi_flags & KSI_INS)) + ksiginfo_tryfree(ksi); + return (ret); + } else { + action = SIG_CATCH; + } + } else if (SIGISMEMBER(td->td_sigmask, sig)) action = SIG_HOLD; else if (SIGISMEMBER(ps->ps_sigcatch, sig)) action = SIG_CATCH; @@ -2950,11 +2963,13 @@ issignal(struct thread *td) } /* - * We should see pending but ignored signals - * only if P_TRACED was on when they were posted. + * We should allow pending but ignored signals below + * only if there is sigwait() active, or P_TRACED was + * on when they were posted. */ if (SIGISMEMBER(ps->ps_sigignore, sig) && - (p->p_flag & P_TRACED) == 0) { + (p->p_flag & P_TRACED) == 0 && + (td->td_pflags2 & TDP2_SIGWAIT) == 0) { sigqueue_delete(&td->td_sigqueue, sig); sigqueue_delete(&p->p_sigqueue, sig); continue; @@ -3066,10 +3081,11 @@ issignal(struct thread *td) PROC_SUNLOCK(p); mtx_lock(&ps->ps_mtx); goto next; - } else if (prop & SIGPROP_IGNORE) { + } else if ((prop & SIGPROP_IGNORE) != 0 && + (td->td_pflags2 & TDP2_SIGWAIT) == 0) { /* - * Except for SIGCONT, shouldn't get here. - * Default action is to ignore; drop it. + * Default action is to ignore; drop it if + * not in kern_sigtimedwait(). */ break; /* == ignore */ } else @@ -3077,15 +3093,10 @@ issignal(struct thread *td) /*NOTREACHED*/ case (intptr_t)SIG_IGN: - /* - * Masking above should prevent us ever trying - * to take action on an ignored signal other - * than SIGCONT, unless process is traced. - */ - if ((prop & SIGPROP_CONT) == 0 && - (p->p_flag & P_TRACED) == 0) - printf("issignal\n"); - break; /* == ignore */ + if ((td->td_pflags2 & TDP2_SIGWAIT) == 0) + break; /* == ignore */ + else + return (sig); default: /* diff --git a/sys/sys/proc.h b/sys/sys/proc.h index afa0be05d33a..ef27691ae4cd 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -529,6 +529,7 @@ do { \ #define TDP2_SBPAGES 0x00000001 /* Owns sbusy on some pages */ #define TDP2_COMPAT32RB 0x00000002 /* compat32 ABI for robust lists */ #define TDP2_ACCT 0x00000004 /* Doing accounting */ +#define TDP2_SIGWAIT 0x00000008 /* Ignore ignored signals */ /* * Reasons that the current thread can not be run yet. diff --git a/sys/sys/sysent.h b/sys/sys/sysent.h index c2cbd77a92b9..95e9dcb1a335 100644 --- a/sys/sys/sysent.h +++ b/sys/sys/sysent.h @@ -161,6 +161,7 @@ struct sysentvec { #define SV_TIMEKEEP 0x040000 /* Shared page timehands. */ #define SV_ASLR 0x080000 /* ASLR allowed. */ #define SV_RNG_SEED_VER 0x100000 /* random(4) reseed generation. */ +#define SV_SIG_DISCIGN 0x200000 /* Do not discard ignored signals */ #define SV_ABI_MASK 0xff #define SV_PROC_FLAG(p, x) ((p)->p_sysent->sv_flags & (x)) From owner-dev-commits-src-all@freebsd.org Tue Jun 15 23:55:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 17277656A8E; Tue, 15 Jun 2021 23:55:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4QDR5XXQz3qvP; Tue, 15 Jun 2021 23:55:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8A1D911949; Tue, 15 Jun 2021 23:55:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15FNtJDn086721; Tue, 15 Jun 2021 23:55:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15FNtJQj086720; Tue, 15 Jun 2021 23:55:19 GMT (envelope-from git) Date: Tue, 15 Jun 2021 23:55:19 GMT Message-Id: <202106152355.15FNtJQj086720@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: a12e901a5a65 - main - Add a knob to disable dequeueing SIGCHLD on waiting for live process MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a12e901a5a65417849c1ccf1e37b8d092fa438da Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jun 2021 23:55:20 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a12e901a5a65417849c1ccf1e37b8d092fa438da commit a12e901a5a65417849c1ccf1e37b8d092fa438da Author: Konstantin Belousov AuthorDate: 2021-06-05 18:24:35 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-15 23:00:19 +0000 Add a knob to disable dequeueing SIGCHLD on waiting for live process It seems that Linux does not dequeue siginfo for SIGCHLD when wait*(2) reports status of the running process. In particular, sigwaitinfo(2) and other signal querying syscalls can observe the siginfo after wait. FreeBSD dequeued siginfo from the beginning, so we cannot change the default ABI to be more compatible. Still, add a knob to enable to change to the other behavior for debugging purposes. Reported by: dchagin Reviewed by: dchagin, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30675 --- sys/kern/kern_exit.c | 14 +++++++++++--- sys/sys/sysent.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index cb5996982a3a..fcd8b39a8ee2 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -105,6 +105,11 @@ SYSCTL_INT(_kern, OID_AUTO, kill_on_debugger_exit, CTLFLAG_RWTUN, &kern_kill_on_dbg_exit, 0, "Kill ptraced processes when debugger exits"); +static bool kern_wait_dequeue_sigchld = 1; +SYSCTL_BOOL(_kern, OID_AUTO, wait_dequeue_sigchld, CTLFLAG_RWTUN, + &kern_wait_dequeue_sigchld, 0, + "Dequeue SIGCHLD on wait(2) for live process"); + struct proc * proc_realparent(struct proc *child) { @@ -1207,9 +1212,12 @@ report_alive_proc(struct thread *td, struct proc *p, siginfo_t *siginfo, p->p_flag &= ~P_CONTINUED; else p->p_flag |= P_WAITED; - PROC_LOCK(td->td_proc); - sigqueue_take(p->p_ksi); - PROC_UNLOCK(td->td_proc); + if (kern_wait_dequeue_sigchld && + (td->td_proc->p_sysent->sv_flags & SV_SIG_WAITNDQ) == 0) { + PROC_LOCK(td->td_proc); + sigqueue_take(p->p_ksi); + PROC_UNLOCK(td->td_proc); + } } sx_xunlock(&proctree_lock); if (siginfo != NULL) { diff --git a/sys/sys/sysent.h b/sys/sys/sysent.h index 95e9dcb1a335..8b0903f7dcc0 100644 --- a/sys/sys/sysent.h +++ b/sys/sys/sysent.h @@ -162,6 +162,7 @@ struct sysentvec { #define SV_ASLR 0x080000 /* ASLR allowed. */ #define SV_RNG_SEED_VER 0x100000 /* random(4) reseed generation. */ #define SV_SIG_DISCIGN 0x200000 /* Do not discard ignored signals */ +#define SV_SIG_WAITNDQ 0x400000 /* Wait does not dequeue SIGCHLD */ #define SV_ABI_MASK 0xff #define SV_PROC_FLAG(p, x) ((p)->p_sysent->sv_flags & (x)) From owner-dev-commits-src-all@freebsd.org Wed Jun 16 00:45:37 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 38EB4657D3B; Wed, 16 Jun 2021 00:45:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4RLT0NR6z3vfd; Wed, 16 Jun 2021 00:45:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E4FDA126AE; Wed, 16 Jun 2021 00:45:36 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G0jadL052638; Wed, 16 Jun 2021 00:45:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G0jaSX052637; Wed, 16 Jun 2021 00:45:36 GMT (envelope-from git) Date: Wed, 16 Jun 2021 00:45:36 GMT Message-Id: <202106160045.15G0jaSX052637@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Martin Matuska Subject: git: d940dcb757cd - stable/13 - zfs: unbreak stable/13 clang build on non-x86 archs after b0c251b0d MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d940dcb757cd2214a218fe3445eef5d24581b556 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 00:45:37 -0000 The branch stable/13 has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=d940dcb757cd2214a218fe3445eef5d24581b556 commit d940dcb757cd2214a218fe3445eef5d24581b556 Author: Martin Matuska AuthorDate: 2021-06-16 00:38:42 +0000 Commit: Martin Matuska CommitDate: 2021-06-16 00:44:48 +0000 zfs: unbreak stable/13 clang build on non-x86 archs after b0c251b0d (direct commit) --- cddl/lib/libspl/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cddl/lib/libspl/Makefile b/cddl/lib/libspl/Makefile index 8088ef497d46..c657dd9b2290 100644 --- a/cddl/lib/libspl/Makefile +++ b/cddl/lib/libspl/Makefile @@ -1,10 +1,12 @@ # $FreeBSD$ +.include +.include + .PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libspl .PATH: ${SRCTOP}/sys/contrib/openzfs/lib/libspl/os/freebsd .PATH: ${SRCTOP}/sys/contrib/openzfs/include - LIB= spl LIBADD= PACKAGE= runtime @@ -53,6 +55,9 @@ CFLAGS+= -I${SRCTOP}/sys/contrib/openzfs/module/icp/include CFLAGS+= -include ${SRCTOP}/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompile.h CFLAGS+= -DHAVE_ISSETUGID CFLAGS+= -include ${SRCTOP}/sys/modules/zfs/zfs_config.h +.if ${COMPILER_TYPE} == "clang" +CFLAGS.atomic.c+= -Wno-error=atomic-alignment +.endif CFLAGS.atomic.S+= -DLOCORE .include From owner-dev-commits-src-all@freebsd.org Wed Jun 16 00:45:59 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5B32F6579CB; Wed, 16 Jun 2021 00:45:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4RLv0CDhz3vnY; Wed, 16 Jun 2021 00:45:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E37DA122C9; Wed, 16 Jun 2021 00:45:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G0jwqE052785; Wed, 16 Jun 2021 00:45:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G0jwG3052784; Wed, 16 Jun 2021 00:45:58 GMT (envelope-from git) Date: Wed, 16 Jun 2021 00:45:58 GMT Message-Id: <202106160045.15G0jwG3052784@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: faf0224ff27b - main - ktls: Don't mark existing received mbufs notready for TOE TLS. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: faf0224ff27b93b743d50b3830bf5ce345b67e94 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 00:45:59 -0000 The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=faf0224ff27b93b743d50b3830bf5ce345b67e94 commit faf0224ff27b93b743d50b3830bf5ce345b67e94 Author: John Baldwin AuthorDate: 2021-06-15 17:36:57 +0000 Commit: John Baldwin CommitDate: 2021-06-16 00:45:21 +0000 ktls: Don't mark existing received mbufs notready for TOE TLS. The TOE driver might receive decrypted TLS records that are enqueued to the socket buffer after ktls_try_toe() returns and before ktls_enable_rx() locks the receive buffer to call sb_mark_notready(). In that case, sb_mark_notready() would incorrectly treat the decrypted TLS record as an encrypted record and schedule it for decryption. This always resulted in the connection being dropped as the data in the control message did not look like a valid TLS header. To fix, don't try to handle software decryption of existing buffers in the socket buffer for TOE TLS in ktls_enable_rx(). If a TOE TLS driver needs to decrypt existing data in the socket buffer, the driver will need to manage that in its tod_alloc_tls_session method. Sponsored by: Chelsio Communications --- sys/kern/uipc_ktls.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/kern/uipc_ktls.c b/sys/kern/uipc_ktls.c index 2ab2ef18446b..8eb52cd02afe 100644 --- a/sys/kern/uipc_ktls.c +++ b/sys/kern/uipc_ktls.c @@ -1049,8 +1049,10 @@ ktls_enable_rx(struct socket *so, struct tls_enable *en) so->so_rcv.sb_flags |= SB_TLS_RX; /* Mark existing data as not ready until it can be decrypted. */ - sb_mark_notready(&so->so_rcv); - ktls_check_rx(&so->so_rcv); + if (tls->mode != TCP_TLS_MODE_TOE) { + sb_mark_notready(&so->so_rcv); + ktls_check_rx(&so->so_rcv); + } SOCKBUF_UNLOCK(&so->so_rcv); counter_u64_add(ktls_offload_total, 1); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 00:46:00 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3EE7A657C1E; Wed, 16 Jun 2021 00:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4RLw0q11z3vYt; Wed, 16 Jun 2021 00:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 036CB12636; Wed, 16 Jun 2021 00:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G0jxLO052809; Wed, 16 Jun 2021 00:45:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G0jxNM052808; Wed, 16 Jun 2021 00:45:59 GMT (envelope-from git) Date: Wed, 16 Jun 2021 00:45:59 GMT Message-Id: <202106160045.15G0jxNM052808@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 789f2d4b3f33 - main - cxgbe tom: Remove support for non-KTLS TLS offload. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 789f2d4b3f33d4414eaf0b4e7daef41e89d1b224 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 00:46:00 -0000 The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=789f2d4b3f33d4414eaf0b4e7daef41e89d1b224 commit 789f2d4b3f33d4414eaf0b4e7daef41e89d1b224 Author: John Baldwin AuthorDate: 2021-05-28 23:49:56 +0000 Commit: John Baldwin CommitDate: 2021-06-16 00:45:26 +0000 cxgbe tom: Remove support for non-KTLS TLS offload. TOE TLS offload was first supported via a customized OpenSSL developed by Chelsio with proprietary socket options prior to KTLS being present either in FreeBSD or upstream OpenSSL. With the addition of KTLS in both places, cxgbe's TOE driver was extended to support TLS offload via KTLS as well. This change removes the older interface leaving only the KTLS bindings for TOE TLS. Since KTLS was added to TOE TLS second, it was somehat shoe-horned into the existing code. In addition to removing the non-KTLS TLS offload, refactor and simplify the code to assume KTLS, e.g. not copying keys into a helper structure that mimic'ed the non-KTLS mode, but using the KTLS session object directly when constructing key contexts. This also removes some unused code to send TX keys inline in work requests for TOE TLS. This code was never enabled, and was arguably sending the wrong thing (it was not sending the raw key context as we do for NIC TLS when using inline keys). Sponsored by: Chelsio Communications --- sys/dev/cxgbe/tom/t4_cpl_io.c | 15 - sys/dev/cxgbe/tom/t4_tls.c | 1455 ++++++++--------------------------------- sys/dev/cxgbe/tom/t4_tls.h | 178 +---- sys/dev/cxgbe/tom/t4_tom.c | 20 - sys/dev/cxgbe/tom/t4_tom.h | 4 - 5 files changed, 294 insertions(+), 1378 deletions(-) diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c index 732754d07f8f..a1bc88bdea7f 100644 --- a/sys/dev/cxgbe/tom/t4_cpl_io.c +++ b/sys/dev/cxgbe/tom/t4_cpl_io.c @@ -1170,12 +1170,8 @@ t4_push_data(struct adapter *sc, struct toepcb *toep, int drop) if (ulp_mode(toep) == ULP_MODE_ISCSI) t4_push_pdus(sc, toep, drop); - else if (tls_tx_key(toep) && toep->tls.mode == TLS_MODE_TLSOM) - t4_push_tls_records(sc, toep, drop); -#ifdef KERN_TLS else if (toep->flags & TPF_KTLS) t4_push_ktls(sc, toep, drop); -#endif else t4_push_frames(sc, toep, drop); } @@ -1809,10 +1805,6 @@ do_fw4_ack(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) credits -= txsd->tx_credits; toep->tx_credits += txsd->tx_credits; plen += txsd->plen; - if (txsd->iv_buffer) { - free(txsd->iv_buffer, M_CXGBE); - txsd->iv_buffer = NULL; - } txsd++; toep->txsd_avail++; KASSERT(toep->txsd_avail <= toep->txsd_total, @@ -1863,13 +1855,6 @@ do_fw4_ack(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) tid, plen); #endif sbdrop_locked(sb, plen); - if (tls_tx_key(toep) && - toep->tls.mode == TLS_MODE_TLSOM) { - struct tls_ofld_info *tls_ofld = &toep->tls; - - MPASS(tls_ofld->sb_off >= plen); - tls_ofld->sb_off -= plen; - } if (!TAILQ_EMPTY(&toep->aiotx_jobq)) t4_aiotx_queue_toep(so, toep); sowwakeup_locked(so); /* unlocks so_snd */ diff --git a/sys/dev/cxgbe/tom/t4_tls.c b/sys/dev/cxgbe/tom/t4_tls.c index bbd905d8acc3..be47dbac7ae5 100644 --- a/sys/dev/cxgbe/tom/t4_tls.c +++ b/sys/dev/cxgbe/tom/t4_tls.c @@ -33,11 +33,10 @@ #include __FBSDID("$FreeBSD$"); +#ifdef KERN_TLS #include #include -#ifdef KERN_TLS #include -#endif #include #include #include @@ -46,10 +45,8 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef KERN_TLS #include #include -#endif #ifdef TCP_OFFLOAD #include "common/common.h" @@ -89,23 +86,6 @@ tls_tx_key(struct toepcb *toep) return (tls_ofld->tx_key_addr >= 0); } -int -tls_rx_key(struct toepcb *toep) -{ - struct tls_ofld_info *tls_ofld = &toep->tls; - - return (tls_ofld->rx_key_addr >= 0); -} - -static int -key_size(struct toepcb *toep) -{ - struct tls_ofld_info *tls_ofld = &toep->tls; - - return ((tls_ofld->key_location == TLS_SFO_WR_CONTEXTLOC_IMMEDIATE) ? - tls_ofld->k_ctx.tx_key_info_size : KEY_IN_DDR_SIZE); -} - /* Set TLS Key-Id in TCB */ static void t4_set_tls_keyid(struct toepcb *toep, unsigned int key_id) @@ -145,125 +125,6 @@ tls_clr_ofld_mode(struct toepcb *toep) toep->params.ulp_mode = ULP_MODE_NONE; } -static void -tls_clr_quiesce(struct toepcb *toep) -{ - - tls_stop_handshake_timer(toep); - t4_clear_rx_quiesce(toep); -} - -/* - * Calculate the TLS data expansion size - */ -static int -tls_expansion_size(struct toepcb *toep, int data_len, int full_pdus_only, - unsigned short *pdus_per_ulp) -{ - struct tls_ofld_info *tls_ofld = &toep->tls; - struct tls_scmd *scmd = &tls_ofld->scmd0; - int expn_size = 0, frag_count = 0, pad_per_pdu = 0, - pad_last_pdu = 0, last_frag_size = 0, max_frag_size = 0; - int exp_per_pdu = 0; - int hdr_len = TLS_HEADER_LENGTH; - - do { - max_frag_size = tls_ofld->k_ctx.frag_size; - if (G_SCMD_CIPH_MODE(scmd->seqno_numivs) == - SCMD_CIPH_MODE_AES_GCM) { - frag_count = (data_len / max_frag_size); - exp_per_pdu = GCM_TAG_SIZE + AEAD_EXPLICIT_DATA_SIZE + - hdr_len; - expn_size = frag_count * exp_per_pdu; - if (full_pdus_only) { - *pdus_per_ulp = data_len / (exp_per_pdu + - max_frag_size); - if (*pdus_per_ulp > 32) - *pdus_per_ulp = 32; - else if(!*pdus_per_ulp) - *pdus_per_ulp = 1; - expn_size = (*pdus_per_ulp) * exp_per_pdu; - break; - } - if ((last_frag_size = data_len % max_frag_size) > 0) { - frag_count += 1; - expn_size += exp_per_pdu; - } - break; - } else if (G_SCMD_CIPH_MODE(scmd->seqno_numivs) != - SCMD_CIPH_MODE_NOP) { - /* Calculate the number of fragments we can make */ - frag_count = (data_len / max_frag_size); - if (frag_count > 0) { - pad_per_pdu = (((howmany((max_frag_size + - tls_ofld->mac_length), - CIPHER_BLOCK_SIZE)) * - CIPHER_BLOCK_SIZE) - - (max_frag_size + - tls_ofld->mac_length)); - if (!pad_per_pdu) - pad_per_pdu = CIPHER_BLOCK_SIZE; - exp_per_pdu = pad_per_pdu + - tls_ofld->mac_length + - hdr_len + CIPHER_BLOCK_SIZE; - expn_size = frag_count * exp_per_pdu; - } - if (full_pdus_only) { - *pdus_per_ulp = data_len / (exp_per_pdu + - max_frag_size); - if (*pdus_per_ulp > 32) - *pdus_per_ulp = 32; - else if (!*pdus_per_ulp) - *pdus_per_ulp = 1; - expn_size = (*pdus_per_ulp) * exp_per_pdu; - break; - } - /* Consider the last fragment */ - if ((last_frag_size = data_len % max_frag_size) > 0) { - pad_last_pdu = (((howmany((last_frag_size + - tls_ofld->mac_length), - CIPHER_BLOCK_SIZE)) * - CIPHER_BLOCK_SIZE) - - (last_frag_size + - tls_ofld->mac_length)); - if (!pad_last_pdu) - pad_last_pdu = CIPHER_BLOCK_SIZE; - expn_size += (pad_last_pdu + - tls_ofld->mac_length + hdr_len + - CIPHER_BLOCK_SIZE); - } - } - } while (0); - - return (expn_size); -} - -/* Copy Key to WR */ -static void -tls_copy_tx_key(struct toepcb *toep, void *dst) -{ - struct tls_ofld_info *tls_ofld = &toep->tls; - struct ulptx_sc_memrd *sc_memrd; - struct ulptx_idata *sc; - - if (tls_ofld->k_ctx.tx_key_info_size <= 0) - return; - - if (tls_ofld->key_location == TLS_SFO_WR_CONTEXTLOC_DDR) { - sc = dst; - sc->cmd_more = htobe32(V_ULPTX_CMD(ULP_TX_SC_NOOP)); - sc->len = htobe32(0); - sc_memrd = (struct ulptx_sc_memrd *)(sc + 1); - sc_memrd->cmd_to_len = htobe32(V_ULPTX_CMD(ULP_TX_SC_MEMRD) | - V_ULP_TX_SC_MORE(1) | - V_ULPTX_LEN16(tls_ofld->k_ctx.tx_key_info_size >> 4)); - sc_memrd->addr = htobe32(tls_ofld->tx_key_addr >> 5); - } else if (tls_ofld->key_location == TLS_SFO_WR_CONTEXTLOC_IMMEDIATE) { - memcpy(dst, &tls_ofld->k_ctx.tx, - tls_ofld->k_ctx.tx_key_info_size); - } -} - /* TLS/DTLS content type for CPL SFO */ static inline unsigned char tls_content_type(unsigned char content_type) @@ -286,64 +147,194 @@ tls_content_type(unsigned char content_type) return CPL_TX_TLS_SFO_TYPE_DATA; } -static unsigned char -get_cipher_key_size(unsigned int ck_size) +static int +tls_key_info_size(struct ktls_session *tls) +{ + u_int key_info_size, mac_key_size; + + key_info_size = sizeof(struct tx_keyctx_hdr) + + tls->params.cipher_key_len; + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { + key_info_size += GMAC_BLOCK_LEN; + } else { + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + mac_key_size = SHA1_HASH_LEN; + break; + case CRYPTO_SHA2_256_HMAC: + mac_key_size = SHA2_256_HASH_LEN; + break; + case CRYPTO_SHA2_384_HMAC: + mac_key_size = SHA2_512_HASH_LEN; + break; + default: + __assert_unreachable(); + } + key_info_size += roundup2(mac_key_size, 16) * 2; + } + return (key_info_size); +} + +static int +tls_proto_ver(struct ktls_session *tls) +{ + if (tls->params.tls_vminor == TLS_MINOR_VER_ONE) + return (SCMD_PROTO_VERSION_TLS_1_1); + else + return (SCMD_PROTO_VERSION_TLS_1_2); +} + +static int +tls_cipher_mode(struct ktls_session *tls) { - switch (ck_size) { - case AES_NOP: /* NOP */ - return 15; - case AES_128: /* AES128 */ - return CH_CK_SIZE_128; - case AES_192: /* AES192 */ - return CH_CK_SIZE_192; - case AES_256: /* AES256 */ - return CH_CK_SIZE_256; + switch (tls->params.cipher_algorithm) { + case CRYPTO_AES_CBC: + return (SCMD_CIPH_MODE_AES_CBC); + case CRYPTO_AES_NIST_GCM_16: + return (SCMD_CIPH_MODE_AES_GCM); default: - return CH_CK_SIZE_256; + return (SCMD_CIPH_MODE_NOP); } } -static unsigned char -get_mac_key_size(unsigned int mk_size) +static int +tls_auth_mode(struct ktls_session *tls) { - switch (mk_size) { - case SHA_NOP: /* NOP */ - return CH_MK_SIZE_128; - case SHA_GHASH: /* GHASH */ - case SHA_512: /* SHA512 */ - return CH_MK_SIZE_512; - case SHA_224: /* SHA2-224 */ - return CH_MK_SIZE_192; - case SHA_256: /* SHA2-256*/ - return CH_MK_SIZE_256; - case SHA_384: /* SHA384 */ - return CH_MK_SIZE_512; - case SHA1: /* SHA1 */ + switch (tls->params.cipher_algorithm) { + case CRYPTO_AES_CBC: + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + return (SCMD_AUTH_MODE_SHA1); + case CRYPTO_SHA2_256_HMAC: + return (SCMD_AUTH_MODE_SHA256); + case CRYPTO_SHA2_384_HMAC: + return (SCMD_AUTH_MODE_SHA512_384); + default: + return (SCMD_AUTH_MODE_NOP); + } + case CRYPTO_AES_NIST_GCM_16: + return (SCMD_AUTH_MODE_GHASH); + default: + return (SCMD_AUTH_MODE_NOP); + } +} + +static int +tls_hmac_ctrl(struct ktls_session *tls) +{ + switch (tls->params.cipher_algorithm) { + case CRYPTO_AES_CBC: + return (SCMD_HMAC_CTRL_NO_TRUNC); + case CRYPTO_AES_NIST_GCM_16: + return (SCMD_HMAC_CTRL_NOP); default: - return CH_MK_SIZE_160; + return (SCMD_HMAC_CTRL_NOP); } } -static unsigned int -get_proto_ver(int proto_ver) +static int +tls_cipher_key_size(struct ktls_session *tls) { - switch (proto_ver) { - case TLS1_2_VERSION: - return TLS_1_2_VERSION; - case TLS1_1_VERSION: - return TLS_1_1_VERSION; - case DTLS1_2_VERSION: - return DTLS_1_2_VERSION; + switch (tls->params.cipher_key_len) { + case 128 / 8: + return (CHCR_KEYCTX_CIPHER_KEY_SIZE_128); + case 192 / 8: + return (CHCR_KEYCTX_CIPHER_KEY_SIZE_192); + case 256 / 8: + return (CHCR_KEYCTX_CIPHER_KEY_SIZE_256); default: - return TLS_VERSION_MAX; + __assert_unreachable(); + } +} + +static int +tls_mac_key_size(struct ktls_session *tls) +{ + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) + /* + * XXX: This used to use 128 (SHA_NOP) for TOE, + * but NIC TLS has always used 512. + */ + return (CHCR_KEYCTX_MAC_KEY_SIZE_512); + else { + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + return (CHCR_KEYCTX_MAC_KEY_SIZE_160); + case CRYPTO_SHA2_256_HMAC: + return (CHCR_KEYCTX_MAC_KEY_SIZE_256); + case CRYPTO_SHA2_384_HMAC: + return (CHCR_KEYCTX_MAC_KEY_SIZE_512); + default: + __assert_unreachable(); + } + } +} + +static void +prepare_tls_keys(char *key, char *salt, struct ktls_session *tls, + int direction) +{ + struct auth_hash *axf; + u_int mac_key_size; + char *hash; + + if (direction == KTLS_RX && + tls->params.cipher_algorithm == CRYPTO_AES_CBC) + t4_aes_getdeckey(key, tls->params.cipher_key, + tls->params.cipher_key_len * 8); + else + memcpy(key, tls->params.cipher_key, + tls->params.cipher_key_len); + hash = key + tls->params.cipher_key_len; + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { + memcpy(salt, tls->params.iv, SALT_SIZE); + t4_init_gmac_hash(tls->params.cipher_key, + tls->params.cipher_key_len, hash); + } else { + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + axf = &auth_hash_hmac_sha1; + mac_key_size = SHA1_HASH_LEN; + break; + case CRYPTO_SHA2_256_HMAC: + axf = &auth_hash_hmac_sha2_256; + mac_key_size = SHA2_256_HASH_LEN; + break; + case CRYPTO_SHA2_384_HMAC: + axf = &auth_hash_hmac_sha2_384; + mac_key_size = SHA2_512_HASH_LEN; + break; + default: + __assert_unreachable(); + } + t4_init_hmac_digest(axf, mac_key_size, tls->params.auth_key, + tls->params.auth_key_len, hash); } } +/* Rx key */ static void -tls_rxkey_flit1(struct tls_keyctx *kwr, struct tls_key_context *kctx) +prepare_rxkey_wr(struct tls_keyctx *kwr, struct ktls_session *tls) { - if (kctx->state.enc_mode == CH_EVP_CIPH_GCM_MODE) { + kwr->u.rxhdr.flitcnt_hmacctrl = + ((tls_key_info_size(tls) / 16) << 3) | tls_hmac_ctrl(tls); + + kwr->u.rxhdr.protover_ciphmode = + V_TLS_KEYCTX_TX_WR_PROTOVER(tls_proto_ver(tls)) | + V_TLS_KEYCTX_TX_WR_CIPHMODE(tls_cipher_mode(tls)); + + kwr->u.rxhdr.authmode_to_rxvalid = + V_TLS_KEYCTX_TX_WR_AUTHMODE(tls_auth_mode(tls)) | + V_TLS_KEYCTX_TX_WR_SEQNUMCTRL(3) | + V_TLS_KEYCTX_TX_WR_RXVALID(1); + + kwr->u.rxhdr.ivpresent_to_rxmk_size = + V_TLS_KEYCTX_TX_WR_IVPRESENT(0) | + V_TLS_KEYCTX_TX_WR_RXCK_SIZE(tls_cipher_key_size(tls)) | + V_TLS_KEYCTX_TX_WR_RXMK_SIZE(tls_mac_key_size(tls)); + + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { kwr->u.rxhdr.ivinsert_to_authinsrt = htobe64(V_TLS_KEYCTX_TX_WR_IVINSERT(6ULL) | V_TLS_KEYCTX_TX_WR_AADSTRTOFST(1ULL) | @@ -353,11 +344,11 @@ tls_rxkey_flit1(struct tls_keyctx *kwr, struct tls_key_context *kctx) V_TLS_KEYCTX_TX_WR_CIPHERSRTOFST(14ULL) | V_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST(0ULL) | V_TLS_KEYCTX_TX_WR_AUTHINSRT(16ULL)); - kwr->u.rxhdr.ivpresent_to_rxmk_size &= - ~(V_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(1)); - kwr->u.rxhdr.authmode_to_rxvalid &= - ~(V_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(1)); } else { + kwr->u.rxhdr.authmode_to_rxvalid |= + V_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(1); + kwr->u.rxhdr.ivpresent_to_rxmk_size |= + V_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(1); kwr->u.rxhdr.ivinsert_to_authinsrt = htobe64(V_TLS_KEYCTX_TX_WR_IVINSERT(6ULL) | V_TLS_KEYCTX_TX_WR_AADSTRTOFST(1ULL) | @@ -368,74 +359,27 @@ tls_rxkey_flit1(struct tls_keyctx *kwr, struct tls_key_context *kctx) V_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST(0ULL) | V_TLS_KEYCTX_TX_WR_AUTHINSRT(0ULL)); } -} - -/* Rx key */ -static void -prepare_rxkey_wr(struct tls_keyctx *kwr, struct tls_key_context *kctx) -{ - unsigned int ck_size = kctx->cipher_secret_size; - unsigned int mk_size = kctx->mac_secret_size; - int proto_ver = kctx->proto_ver; - - kwr->u.rxhdr.flitcnt_hmacctrl = - ((kctx->rx_key_info_size >> 4) << 3) | kctx->hmac_ctrl; - kwr->u.rxhdr.protover_ciphmode = - V_TLS_KEYCTX_TX_WR_PROTOVER(get_proto_ver(proto_ver)) | - V_TLS_KEYCTX_TX_WR_CIPHMODE(kctx->state.enc_mode); - - kwr->u.rxhdr.authmode_to_rxvalid = - V_TLS_KEYCTX_TX_WR_AUTHMODE(kctx->state.auth_mode) | - V_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(1) | - V_TLS_KEYCTX_TX_WR_SEQNUMCTRL(3) | - V_TLS_KEYCTX_TX_WR_RXVALID(1); - - kwr->u.rxhdr.ivpresent_to_rxmk_size = - V_TLS_KEYCTX_TX_WR_IVPRESENT(0) | - V_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(1) | - V_TLS_KEYCTX_TX_WR_RXCK_SIZE(get_cipher_key_size(ck_size)) | - V_TLS_KEYCTX_TX_WR_RXMK_SIZE(get_mac_key_size(mk_size)); - - tls_rxkey_flit1(kwr, kctx); - - /* No key reversal for GCM */ - if (kctx->state.enc_mode != CH_EVP_CIPH_GCM_MODE) { - t4_aes_getdeckey(kwr->keys.edkey, kctx->rx.key, - (kctx->cipher_secret_size << 3)); - memcpy(kwr->keys.edkey + kctx->cipher_secret_size, - kctx->rx.key + kctx->cipher_secret_size, - (IPAD_SIZE + OPAD_SIZE)); - } else { - memcpy(kwr->keys.edkey, kctx->rx.key, - (kctx->rx_key_info_size - SALT_SIZE)); - memcpy(kwr->u.rxhdr.rxsalt, kctx->rx.salt, SALT_SIZE); - } + prepare_tls_keys(kwr->keys.edkey, kwr->u.rxhdr.rxsalt, tls, KTLS_RX); } /* Tx key */ static void -prepare_txkey_wr(struct tls_keyctx *kwr, struct tls_key_context *kctx) +prepare_txkey_wr(struct tls_keyctx *kwr, struct ktls_session *tls) { - unsigned int ck_size = kctx->cipher_secret_size; - unsigned int mk_size = kctx->mac_secret_size; - kwr->u.txhdr.ctxlen = - (kctx->tx_key_info_size >> 4); + kwr->u.txhdr.ctxlen = tls_key_info_size(tls) / 16; kwr->u.txhdr.dualck_to_txvalid = - V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1) | V_TLS_KEYCTX_TX_WR_SALT_PRESENT(1) | - V_TLS_KEYCTX_TX_WR_TXCK_SIZE(get_cipher_key_size(ck_size)) | - V_TLS_KEYCTX_TX_WR_TXMK_SIZE(get_mac_key_size(mk_size)) | + V_TLS_KEYCTX_TX_WR_TXCK_SIZE(tls_cipher_key_size(tls)) | + V_TLS_KEYCTX_TX_WR_TXMK_SIZE(tls_mac_key_size(tls)) | V_TLS_KEYCTX_TX_WR_TXVALID(1); - - memcpy(kwr->keys.edkey, kctx->tx.key, HDR_KCTX_SIZE); - if (kctx->state.enc_mode == CH_EVP_CIPH_GCM_MODE) { - memcpy(kwr->u.txhdr.txsalt, kctx->tx.salt, SALT_SIZE); - kwr->u.txhdr.dualck_to_txvalid &= - ~(V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1)); - } + if (tls->params.cipher_algorithm == CRYPTO_AES_CBC) + kwr->u.txhdr.dualck_to_txvalid |= + V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1); kwr->u.txhdr.dualck_to_txvalid = htons(kwr->u.txhdr.dualck_to_txvalid); + + prepare_tls_keys(kwr->keys.edkey, kwr->u.txhdr.txsalt, tls, KTLS_TX); } /* TLS Key memory management */ @@ -476,23 +420,17 @@ clear_tls_keyid(struct toepcb *toep) } static int -get_keyid(struct tls_ofld_info *tls_ofld, unsigned int ops) -{ - return (ops & KEY_WRITE_RX ? tls_ofld->rx_key_addr : - ((ops & KEY_WRITE_TX) ? tls_ofld->tx_key_addr : -1)); -} - -static int -get_tp_plen_max(struct tls_ofld_info *tls_ofld) +get_tp_plen_max(struct ktls_session *tls) { int plen = ((min(3*4096, TP_TX_PG_SZ))/1448) * 1448; - return (tls_ofld->k_ctx.frag_size <= 8192 ? plen : FC_TP_PLEN_MAX); + return (tls->params.max_frame_len <= 8192 ? plen : FC_TP_PLEN_MAX); } /* Send request to get the key-id */ static int -tls_program_key_id(struct toepcb *toep, struct tls_key_context *k_ctx) +tls_program_key_id(struct toepcb *toep, struct ktls_session *tls, + int direction) { struct tls_ofld_info *tls_ofld = &toep->tls; struct adapter *sc = td_adapter(toep->td); @@ -509,13 +447,8 @@ tls_program_key_id(struct toepcb *toep, struct tls_key_context *k_ctx) if (toep->txsd_avail == 0) return (EAGAIN); - /* Dont initialize key for re-neg */ - if (!G_KEY_CLR_LOC(k_ctx->l_p_key)) { - if ((keyid = get_new_keyid(toep)) < 0) { - return (ENOSPC); - } - } else { - keyid = get_keyid(tls_ofld, k_ctx->l_p_key); + if ((keyid = get_new_keyid(toep)) < 0) { + return (ENOSPC); } wr = alloc_wrqe(len, &toep->ofld_txq->wrq); @@ -530,9 +463,10 @@ tls_program_key_id(struct toepcb *toep, struct tls_key_context *k_ctx) F_FW_WR_ATOMIC); kwr->wr_mid = htobe32(V_FW_WR_LEN16(DIV_ROUND_UP(len, 16)) | V_FW_WR_FLOWID(toep->tid)); - kwr->protocol = get_proto_ver(k_ctx->proto_ver); - kwr->mfs = htons(k_ctx->frag_size); - kwr->reneg_to_write_rx = k_ctx->l_p_key; + kwr->protocol = tls_proto_ver(tls); + kwr->mfs = htons(tls->params.max_frame_len); + kwr->reneg_to_write_rx = V_KEY_GET_LOC(direction == KTLS_TX ? + KEY_WRITE_TX : KEY_WRITE_RX); /* master command */ kwr->cmd = htobe32(V_ULPTX_CMD(ULP_TX_MEM_WRITE) | @@ -549,12 +483,12 @@ tls_program_key_id(struct toepcb *toep, struct tls_key_context *k_ctx) kctx = (struct tls_keyctx *)(kwr + 1); memset(kctx, 0, kctxlen); - if (G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_TX) { + if (direction == KTLS_TX) { tls_ofld->tx_key_addr = keyid; - prepare_txkey_wr(kctx, k_ctx); - } else if (G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_RX) { + prepare_txkey_wr(kctx, tls); + } else { tls_ofld->rx_key_addr = keyid; - prepare_rxkey_wr(kctx, k_ctx); + prepare_rxkey_wr(kctx, tls); } txsd = &toep->txsd[toep->txsd_pidx]; @@ -570,163 +504,6 @@ tls_program_key_id(struct toepcb *toep, struct tls_key_context *k_ctx) return (0); } -/* Store a key received from SSL in DDR. */ -static int -program_key_context(struct tcpcb *tp, struct toepcb *toep, - struct tls_key_context *uk_ctx) -{ - struct adapter *sc = td_adapter(toep->td); - struct tls_ofld_info *tls_ofld = &toep->tls; - struct tls_key_context *k_ctx; - int error, key_offset; - - if (tp->t_state != TCPS_ESTABLISHED) { - /* - * XXX: Matches Linux driver, but not sure this is a - * very appropriate error. - */ - return (ENOENT); - } - - /* Stop timer on handshake completion */ - tls_stop_handshake_timer(toep); - - toep->flags &= ~TPF_FORCE_CREDITS; - - CTR4(KTR_CXGBE, "%s: tid %d %s proto_ver %#x", __func__, toep->tid, - G_KEY_GET_LOC(uk_ctx->l_p_key) == KEY_WRITE_RX ? "KEY_WRITE_RX" : - "KEY_WRITE_TX", uk_ctx->proto_ver); - - if (G_KEY_GET_LOC(uk_ctx->l_p_key) == KEY_WRITE_RX && - ulp_mode(toep) != ULP_MODE_TLS) - return (EOPNOTSUPP); - - /* Don't copy the 'tx' and 'rx' fields. */ - k_ctx = &tls_ofld->k_ctx; - memcpy(&k_ctx->l_p_key, &uk_ctx->l_p_key, - sizeof(*k_ctx) - offsetof(struct tls_key_context, l_p_key)); - - /* TLS version != 1.1 and !1.2 OR DTLS != 1.2 */ - if (get_proto_ver(k_ctx->proto_ver) > DTLS_1_2_VERSION) { - if (G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_RX) { - tls_ofld->rx_key_addr = -1; - t4_clear_rx_quiesce(toep); - } else { - tls_ofld->tx_key_addr = -1; - } - return (0); - } - - if (k_ctx->state.enc_mode == CH_EVP_CIPH_GCM_MODE) { - k_ctx->iv_size = 4; - k_ctx->mac_first = 0; - k_ctx->hmac_ctrl = 0; - } else { - k_ctx->iv_size = 8; /* for CBC, iv is 16B, unit of 2B */ - k_ctx->mac_first = 1; - } - - tls_ofld->scmd0.seqno_numivs = - (V_SCMD_SEQ_NO_CTRL(3) | - V_SCMD_PROTO_VERSION(get_proto_ver(k_ctx->proto_ver)) | - V_SCMD_ENC_DEC_CTRL(SCMD_ENCDECCTRL_ENCRYPT) | - V_SCMD_CIPH_AUTH_SEQ_CTRL((k_ctx->mac_first == 0)) | - V_SCMD_CIPH_MODE(k_ctx->state.enc_mode) | - V_SCMD_AUTH_MODE(k_ctx->state.auth_mode) | - V_SCMD_HMAC_CTRL(k_ctx->hmac_ctrl) | - V_SCMD_IV_SIZE(k_ctx->iv_size)); - - tls_ofld->scmd0.ivgen_hdrlen = - (V_SCMD_IV_GEN_CTRL(k_ctx->iv_ctrl) | - V_SCMD_KEY_CTX_INLINE(0) | - V_SCMD_TLS_FRAG_ENABLE(1)); - - tls_ofld->mac_length = k_ctx->mac_secret_size; - - if (G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_RX) { - k_ctx->rx = uk_ctx->rx; - /* Dont initialize key for re-neg */ - if (!G_KEY_CLR_LOC(k_ctx->l_p_key)) - tls_ofld->rx_key_addr = -1; - } else { - k_ctx->tx = uk_ctx->tx; - /* Dont initialize key for re-neg */ - if (!G_KEY_CLR_LOC(k_ctx->l_p_key)) - tls_ofld->tx_key_addr = -1; - } - - /* Flush pending data before new Tx key becomes active */ - if (G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_TX) { - struct sockbuf *sb; - - /* XXX: This might not drain everything. */ - t4_push_frames(sc, toep, 0); - sb = &toep->inp->inp_socket->so_snd; - SOCKBUF_LOCK(sb); - - /* XXX: This asserts that everything has been pushed. */ - MPASS(sb->sb_sndptr == NULL || sb->sb_sndptr->m_next == NULL); - sb->sb_sndptr = NULL; - tls_ofld->sb_off = sbavail(sb); - SOCKBUF_UNLOCK(sb); - tls_ofld->tx_seq_no = 0; - } - - if ((G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_RX) || - (tls_ofld->key_location == TLS_SFO_WR_CONTEXTLOC_DDR)) { - - /* - * XXX: The userland library sets tx_key_info_size, not - * rx_key_info_size. - */ - k_ctx->rx_key_info_size = k_ctx->tx_key_info_size; - - error = tls_program_key_id(toep, k_ctx); - if (error) { - /* XXX: Only clear quiesce for KEY_WRITE_RX? */ - t4_clear_rx_quiesce(toep); - return (error); - } - } - - if (G_KEY_GET_LOC(k_ctx->l_p_key) == KEY_WRITE_RX) { - /* - * RX key tags are an index into the key portion of MA - * memory stored as an offset from the base address in - * units of 64 bytes. - */ - key_offset = tls_ofld->rx_key_addr - sc->vres.key.start; - t4_set_tls_keyid(toep, key_offset / 64); - t4_set_tls_tcb_field(toep, W_TCB_ULP_RAW, - V_TCB_ULP_RAW(M_TCB_ULP_RAW), - V_TCB_ULP_RAW((V_TF_TLS_KEY_SIZE(3) | - V_TF_TLS_CONTROL(1) | - V_TF_TLS_ACTIVE(1) | - V_TF_TLS_ENABLE(1)))); - t4_set_tls_tcb_field(toep, W_TCB_TLS_SEQ, - V_TCB_TLS_SEQ(M_TCB_TLS_SEQ), - V_TCB_TLS_SEQ(0)); - t4_clear_rx_quiesce(toep); - - toep->flags |= TPF_TLS_RECEIVE; - } else { - unsigned short pdus_per_ulp; - - if (tls_ofld->key_location == TLS_SFO_WR_CONTEXTLOC_IMMEDIATE) - tls_ofld->tx_key_addr = 1; - - tls_ofld->fcplenmax = get_tp_plen_max(tls_ofld); - tls_ofld->expn_per_ulp = tls_expansion_size(toep, - tls_ofld->fcplenmax, 1, &pdus_per_ulp); - tls_ofld->pdus_per_ulp = pdus_per_ulp; - tls_ofld->adjusted_plen = tls_ofld->pdus_per_ulp * - ((tls_ofld->expn_per_ulp/tls_ofld->pdus_per_ulp) + - tls_ofld->k_ctx.frag_size); - } - - return (0); -} - /* * In some cases a client connection can hang without sending the * ServerHelloDone message from the NIC to the host. Send a dummy @@ -791,191 +568,12 @@ tls_stop_handshake_timer(struct toepcb *toep) callout_stop(&tls_ofld->handshake_timer); } -int -t4_ctloutput_tls(struct socket *so, struct sockopt *sopt) -{ - struct tls_key_context uk_ctx; - struct inpcb *inp; - struct tcpcb *tp; - struct toepcb *toep; - int error, optval; - - error = 0; - if (sopt->sopt_dir == SOPT_SET && - sopt->sopt_name == TCP_TLSOM_SET_TLS_CONTEXT) { - error = sooptcopyin(sopt, &uk_ctx, sizeof(uk_ctx), - sizeof(uk_ctx)); - if (error) - return (error); - } - - inp = sotoinpcb(so); - KASSERT(inp != NULL, ("tcp_ctloutput: inp == NULL")); - INP_WLOCK(inp); - if (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) { - INP_WUNLOCK(inp); - return (ECONNRESET); - } - tp = intotcpcb(inp); - toep = tp->t_toe; - switch (sopt->sopt_dir) { - case SOPT_SET: - switch (sopt->sopt_name) { - case TCP_TLSOM_SET_TLS_CONTEXT: - if (toep->tls.mode == TLS_MODE_KTLS) - error = EINVAL; - else { - error = program_key_context(tp, toep, &uk_ctx); - if (error == 0) - toep->tls.mode = TLS_MODE_TLSOM; - } - INP_WUNLOCK(inp); - break; - case TCP_TLSOM_CLR_TLS_TOM: - if (toep->tls.mode == TLS_MODE_KTLS) - error = EINVAL; - else if (ulp_mode(toep) == ULP_MODE_TLS) { - CTR2(KTR_CXGBE, "%s: tid %d CLR_TLS_TOM", - __func__, toep->tid); - tls_clr_ofld_mode(toep); - } else - error = EOPNOTSUPP; - INP_WUNLOCK(inp); - break; - case TCP_TLSOM_CLR_QUIES: - if (toep->tls.mode == TLS_MODE_KTLS) - error = EINVAL; - else if (ulp_mode(toep) == ULP_MODE_TLS) { - CTR2(KTR_CXGBE, "%s: tid %d CLR_QUIES", - __func__, toep->tid); - tls_clr_quiesce(toep); - } else - error = EOPNOTSUPP; - INP_WUNLOCK(inp); - break; - default: - INP_WUNLOCK(inp); - error = EOPNOTSUPP; - break; - } - break; - case SOPT_GET: - switch (sopt->sopt_name) { - case TCP_TLSOM_GET_TLS_TOM: - /* - * TLS TX is permitted on any TOE socket, but - * TLS RX requires a TLS ULP mode. - */ - optval = TLS_TOM_NONE; - if (can_tls_offload(td_adapter(toep->td)) && - toep->tls.mode != TLS_MODE_KTLS) { - switch (ulp_mode(toep)) { - case ULP_MODE_NONE: - case ULP_MODE_TCPDDP: - optval = TLS_TOM_TXONLY; - break; - case ULP_MODE_TLS: - optval = TLS_TOM_BOTH; - break; - } - } - CTR3(KTR_CXGBE, "%s: tid %d GET_TLS_TOM = %d", - __func__, toep->tid, optval); - INP_WUNLOCK(inp); - error = sooptcopyout(sopt, &optval, sizeof(optval)); - break; - default: - INP_WUNLOCK(inp); - error = EOPNOTSUPP; - break; - } - break; - } - return (error); -} - -#ifdef KERN_TLS -static void -init_ktls_key_context(struct ktls_session *tls, struct tls_key_context *k_ctx, - int direction) -{ - struct auth_hash *axf; - u_int key_info_size, mac_key_size; - char *hash, *key; - - k_ctx->l_p_key = V_KEY_GET_LOC(direction == KTLS_TX ? KEY_WRITE_TX : - KEY_WRITE_RX); - k_ctx->proto_ver = tls->params.tls_vmajor << 8 | tls->params.tls_vminor; - k_ctx->cipher_secret_size = tls->params.cipher_key_len; - key_info_size = sizeof(struct tx_keyctx_hdr) + - k_ctx->cipher_secret_size; - if (direction == KTLS_TX) - key = k_ctx->tx.key; - else - key = k_ctx->rx.key; - memcpy(key, tls->params.cipher_key, tls->params.cipher_key_len); - hash = key + tls->params.cipher_key_len; - if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { - k_ctx->state.auth_mode = SCMD_AUTH_MODE_GHASH; - k_ctx->state.enc_mode = SCMD_CIPH_MODE_AES_GCM; - k_ctx->iv_size = 4; - k_ctx->mac_first = 0; - k_ctx->hmac_ctrl = SCMD_HMAC_CTRL_NOP; - key_info_size += GMAC_BLOCK_LEN; - k_ctx->mac_secret_size = 0; - if (direction == KTLS_TX) - memcpy(k_ctx->tx.salt, tls->params.iv, SALT_SIZE); - else - memcpy(k_ctx->rx.salt, tls->params.iv, SALT_SIZE); - t4_init_gmac_hash(tls->params.cipher_key, - tls->params.cipher_key_len, hash); - } else { - switch (tls->params.auth_algorithm) { - case CRYPTO_SHA1_HMAC: - axf = &auth_hash_hmac_sha1; - mac_key_size = SHA1_HASH_LEN; - k_ctx->state.auth_mode = SCMD_AUTH_MODE_SHA1; - break; - case CRYPTO_SHA2_256_HMAC: - axf = &auth_hash_hmac_sha2_256; - mac_key_size = SHA2_256_HASH_LEN; *** 1230 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Wed Jun 16 00:46:01 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 869296577E0; Wed, 16 Jun 2021 00:46:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4RLx1zskz3vld; Wed, 16 Jun 2021 00:46:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2175712440; Wed, 16 Jun 2021 00:46:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G0k1fb052839; Wed, 16 Jun 2021 00:46:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G0k1gv052838; Wed, 16 Jun 2021 00:46:01 GMT (envelope-from git) Date: Wed, 16 Jun 2021 00:46:01 GMT Message-Id: <202106160046.15G0k1gv052838@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 18c69734e9ac - main - cxgbe: De-duplicate some of the code for managing TLS key contexts. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 18c69734e9ac74651ca794d3315ffc4b305ffc6e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 00:46:01 -0000 The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=18c69734e9ac74651ca794d3315ffc4b305ffc6e commit 18c69734e9ac74651ca794d3315ffc4b305ffc6e Author: John Baldwin AuthorDate: 2021-06-08 18:11:51 +0000 Commit: John Baldwin CommitDate: 2021-06-16 00:45:32 +0000 cxgbe: De-duplicate some of the code for managing TLS key contexts. The NIC TLS and TOE TLS modes in cxgbe(4) both work with TLS key contexts. Previously, TOE TLS supported TLS key contexts created by two different methods, and NIC TLS had a separate bit of code copied from NIC TLS but specific to KTLS. Now that TOE TLS only supports KTLS, pull common code for creating TLS key contexts and programming them into on-card memory into t4_keyctx.c. Sponsored by: Chelsio Communications --- sys/dev/cxgbe/adapter.h | 17 ++ sys/dev/cxgbe/crypto/t4_crypto.h | 55 ++++ sys/dev/cxgbe/crypto/t4_kern_tls.c | 292 ++------------------- sys/dev/cxgbe/crypto/t4_keyctx.c | 506 +++++++++++++++++++++++++++++++++++++ sys/dev/cxgbe/tom/t4_tls.c | 322 ++--------------------- sys/dev/cxgbe/tom/t4_tls.h | 274 +------------------- 6 files changed, 626 insertions(+), 840 deletions(-) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index 27655ec2fe59..edcc6e3f5249 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -1291,11 +1291,28 @@ int t6_ktls_write_wr(struct sge_txq *, void *, struct mbuf *, u_int, u_int); /* t4_keyctx.c */ struct auth_hash; union authctx; +#ifdef KERN_TLS +struct ktls_session; +struct tls_key_req; +struct tls_keyctx; +#endif void t4_aes_getdeckey(void *, const void *, unsigned int); void t4_copy_partial_hash(int, union authctx *, void *); void t4_init_gmac_hash(const char *, int, char *); void t4_init_hmac_digest(struct auth_hash *, u_int, const char *, int, char *); +#ifdef KERN_TLS +u_int t4_tls_key_info_size(const struct ktls_session *); +int t4_tls_proto_ver(const struct ktls_session *); +int t4_tls_cipher_mode(const struct ktls_session *); +int t4_tls_auth_mode(const struct ktls_session *); +int t4_tls_hmac_ctrl(const struct ktls_session *); +void t4_tls_key_ctx(const struct ktls_session *, int, struct tls_keyctx *); +int t4_alloc_tls_keyid(struct adapter *); +void t4_free_tls_keyid(struct adapter *, int); +void t4_write_tlskey_wr(const struct ktls_session *, int, int, int, int, + struct tls_key_req *); +#endif #ifdef DEV_NETMAP /* t4_netmap.c */ diff --git a/sys/dev/cxgbe/crypto/t4_crypto.h b/sys/dev/cxgbe/crypto/t4_crypto.h index 161bb2aea520..83ea0fecc6c8 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.h +++ b/sys/dev/cxgbe/crypto/t4_crypto.h @@ -191,4 +191,59 @@ struct phys_sge_pairs { #define CHCR_HASH_MAX_BLOCK_SIZE_64 64 #define CHCR_HASH_MAX_BLOCK_SIZE_128 128 +/* + * TODO: Should coalesce ccr's key context with the TLS key context. + * Lookaside requests use the TX context header. + */ + +struct tls_key_req { + /* FW_ULPTX_WR */ + __be32 wr_hi; + __be32 wr_mid; + __be32 ftid; + __u8 reneg_to_write_rx; + __u8 protocol; + __be16 mfs; + /* master command */ + __be32 cmd; + __be32 len16; /* command length */ + __be32 dlen; /* data length in 32-byte units */ + __be32 kaddr; + /* sub-command */ + __be32 sc_more; + __be32 sc_len; +}__packed; + +struct tls_keyctx { + union key_ctx { + struct tx_keyctx_hdr { + __u8 ctxlen; + __u8 r2; + __be16 dualck_to_txvalid; + __u8 txsalt[4]; + __be64 r5; + } txhdr; + struct rx_keyctx_hdr { + __u8 flitcnt_hmacctrl; + __u8 protover_ciphmode; + __u8 authmode_to_rxvalid; + __u8 ivpresent_to_rxmk_size; + __u8 rxsalt[4]; + __be64 ivinsert_to_authinsrt; + } rxhdr; + } u; + struct keys { + __u8 edkey[32]; + __u8 ipad[64]; + __u8 opad[64]; + } keys; +}; + +#define SALT_SIZE 4 + +#define TLS_KEY_CONTEXT_SZ roundup2(sizeof(struct tls_keyctx), 32) + +#define TLS_KEY_WR_SZ \ + roundup2(sizeof(struct tls_key_req) + TLS_KEY_CONTEXT_SZ, 16) + #endif /* !__T4_CRYPTO_H__ */ diff --git a/sys/dev/cxgbe/crypto/t4_kern_tls.c b/sys/dev/cxgbe/crypto/t4_kern_tls.c index 99d0d33cf128..a20c3045b5b3 100644 --- a/sys/dev/cxgbe/crypto/t4_kern_tls.c +++ b/sys/dev/cxgbe/crypto/t4_kern_tls.c @@ -60,101 +60,13 @@ __FBSDID("$FreeBSD$"); #if defined(INET) || defined(INET6) -#define SALT_SIZE 4 - -#define GCM_TAG_SIZE 16 #define TLS_HEADER_LENGTH 5 -#define TLS_KEY_CONTEXT_SZ roundup2(sizeof(struct tls_keyctx), 32) - struct tls_scmd { __be32 seqno_numivs; __be32 ivgen_hdrlen; }; -struct tls_key_req { - /* FW_ULPTX_WR */ - __be32 wr_hi; - __be32 wr_mid; - __be32 ftid; - __u8 reneg_to_write_rx; - __u8 protocol; - __be16 mfs; - /* master command */ - __be32 cmd; - __be32 len16; /* command length */ - __be32 dlen; /* data length in 32-byte units */ - __be32 kaddr; - /* sub-command */ - __be32 sc_more; - __be32 sc_len; -}__packed; - -struct tls_keyctx { - struct tx_keyctx_hdr { - __u8 ctxlen; - __u8 r2; - __be16 dualck_to_txvalid; - __u8 txsalt[4]; - __be64 r5; - } txhdr; - struct keys { - __u8 edkey[32]; - __u8 ipad[64]; - __u8 opad[64]; - } keys; -}; - -#define S_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT 11 -#define M_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT 0x1 -#define V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(x) \ - ((x) << S_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT) -#define G_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(x) \ - (((x) >> S_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT) & \ - M_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT) -#define F_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT \ - V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1U) - -#define S_TLS_KEYCTX_TX_WR_SALT_PRESENT 10 -#define M_TLS_KEYCTX_TX_WR_SALT_PRESENT 0x1 -#define V_TLS_KEYCTX_TX_WR_SALT_PRESENT(x) \ - ((x) << S_TLS_KEYCTX_TX_WR_SALT_PRESENT) -#define G_TLS_KEYCTX_TX_WR_SALT_PRESENT(x) \ - (((x) >> S_TLS_KEYCTX_TX_WR_SALT_PRESENT) & \ - M_TLS_KEYCTX_TX_WR_SALT_PRESENT) -#define F_TLS_KEYCTX_TX_WR_SALT_PRESENT \ - V_TLS_KEYCTX_TX_WR_SALT_PRESENT(1U) - -#define S_TLS_KEYCTX_TX_WR_TXCK_SIZE 6 -#define M_TLS_KEYCTX_TX_WR_TXCK_SIZE 0xf -#define V_TLS_KEYCTX_TX_WR_TXCK_SIZE(x) \ - ((x) << S_TLS_KEYCTX_TX_WR_TXCK_SIZE) -#define G_TLS_KEYCTX_TX_WR_TXCK_SIZE(x) \ - (((x) >> S_TLS_KEYCTX_TX_WR_TXCK_SIZE) & \ - M_TLS_KEYCTX_TX_WR_TXCK_SIZE) - -#define S_TLS_KEYCTX_TX_WR_TXMK_SIZE 2 -#define M_TLS_KEYCTX_TX_WR_TXMK_SIZE 0xf -#define V_TLS_KEYCTX_TX_WR_TXMK_SIZE(x) \ - ((x) << S_TLS_KEYCTX_TX_WR_TXMK_SIZE) -#define G_TLS_KEYCTX_TX_WR_TXMK_SIZE(x) \ - (((x) >> S_TLS_KEYCTX_TX_WR_TXMK_SIZE) & \ - M_TLS_KEYCTX_TX_WR_TXMK_SIZE) - -#define S_TLS_KEYCTX_TX_WR_TXVALID 0 -#define M_TLS_KEYCTX_TX_WR_TXVALID 0x1 -#define V_TLS_KEYCTX_TX_WR_TXVALID(x) \ - ((x) << S_TLS_KEYCTX_TX_WR_TXVALID) -#define G_TLS_KEYCTX_TX_WR_TXVALID(x) \ - (((x) >> S_TLS_KEYCTX_TX_WR_TXVALID) & M_TLS_KEYCTX_TX_WR_TXVALID) -#define F_TLS_KEYCTX_TX_WR_TXVALID V_TLS_KEYCTX_TX_WR_TXVALID(1U) - -/* Key Context Programming Operation type */ -#define KEY_WRITE_RX 0x1 -#define KEY_WRITE_TX 0x2 -#define KEY_DELETE_RX 0x4 -#define KEY_DELETE_TX 0x8 - struct tlspcb { struct m_snd_tag com; struct vi_info *vi; /* virtual interface */ @@ -187,15 +99,6 @@ struct tlspcb { struct sge_wrq *ctrlq; struct clip_entry *ce; /* CLIP table entry used by this tid */ - unsigned char auth_mode; - unsigned char hmac_ctrl; - unsigned char mac_first; - unsigned char iv_size; - - unsigned int frag_size; - unsigned int cipher_secret_size; - int proto_ver; - bool open_pending; }; @@ -208,27 +111,6 @@ mst_to_tls(struct m_snd_tag *t) return (__containerof(t, struct tlspcb, com)); } -/* XXX: There are similar versions of these two in tom/t4_tls.c. */ -static int -get_new_keyid(struct tlspcb *tlsp) -{ - vmem_addr_t addr; - - if (vmem_alloc(tlsp->sc->key_map, TLS_KEY_CONTEXT_SZ, - M_NOWAIT | M_FIRSTFIT, &addr) != 0) - return (-1); - - return (addr); -} - -static void -free_keyid(struct tlspcb *tlsp, int keyid) -{ - - CTR3(KTR_CXGBE, "%s: tid %d key addr %#x", __func__, tlsp->tid, keyid); - vmem_free(tlsp->sc->key_map, keyid, TLS_KEY_CONTEXT_SZ); -} - static struct tlspcb * alloc_tlspcb(struct ifnet *ifp, struct vi_info *vi, int flags) { @@ -250,50 +132,6 @@ alloc_tlspcb(struct ifnet *ifp, struct vi_info *vi, int flags) return (tlsp); } -static void -init_ktls_key_params(struct tlspcb *tlsp, const struct ktls_session *tls) -{ - int mac_key_size; - - if (tls->params.tls_vminor == TLS_MINOR_VER_ONE) - tlsp->proto_ver = SCMD_PROTO_VERSION_TLS_1_1; - else - tlsp->proto_ver = SCMD_PROTO_VERSION_TLS_1_2; - tlsp->cipher_secret_size = tls->params.cipher_key_len; - tlsp->tx_key_info_size = sizeof(struct tx_keyctx_hdr) + - tlsp->cipher_secret_size; - if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { - tlsp->auth_mode = SCMD_AUTH_MODE_GHASH; - tlsp->enc_mode = SCMD_CIPH_MODE_AES_GCM; - tlsp->iv_size = 4; - tlsp->mac_first = 0; - tlsp->hmac_ctrl = SCMD_HMAC_CTRL_NOP; - tlsp->tx_key_info_size += GMAC_BLOCK_LEN; - } else { - switch (tls->params.auth_algorithm) { - case CRYPTO_SHA1_HMAC: - mac_key_size = roundup2(SHA1_HASH_LEN, 16); - tlsp->auth_mode = SCMD_AUTH_MODE_SHA1; - break; - case CRYPTO_SHA2_256_HMAC: - mac_key_size = SHA2_256_HASH_LEN; - tlsp->auth_mode = SCMD_AUTH_MODE_SHA256; - break; - case CRYPTO_SHA2_384_HMAC: - mac_key_size = SHA2_512_HASH_LEN; - tlsp->auth_mode = SCMD_AUTH_MODE_SHA512_384; - break; - } - tlsp->enc_mode = SCMD_CIPH_MODE_AES_CBC; - tlsp->iv_size = 8; /* for CBC, iv is 16B, unit of 2B */ - tlsp->mac_first = 1; - tlsp->hmac_ctrl = SCMD_HMAC_CTRL_NO_TRUNC; - tlsp->tx_key_info_size += mac_key_size * 2; - } - - tlsp->frag_size = tls->params.max_frame_len; -} - static int ktls_act_open_cpl_size(bool isipv6) { @@ -539,7 +377,7 @@ cxgbe_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, struct inpcb *inp; struct tcpcb *tp; struct sge_txq *txq; - int atid, error, keyid; + int atid, error, explicit_iv_size, keyid, mac_first; tls = params->tls.tls; @@ -569,6 +407,8 @@ cxgbe_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, default: return (EPROTONOSUPPORT); } + explicit_iv_size = AES_BLOCK_LEN; + mac_first = 1; break; case CRYPTO_AES_NIST_GCM_16: if (tls->params.iv_len != SALT_SIZE) @@ -581,6 +421,8 @@ cxgbe_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, default: return (EINVAL); } + explicit_iv_size = 8; + mac_first = 0; break; default: return (EPROTONOSUPPORT); @@ -600,7 +442,7 @@ cxgbe_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, if (sc->tlst.inline_keys) keyid = -1; else - keyid = get_new_keyid(tlsp); + keyid = t4_alloc_tls_keyid(sc); if (keyid < 0) { CTR2(KTR_CXGBE, "%s: atid %d using immediate key ctx", __func__, atid); @@ -673,21 +515,22 @@ cxgbe_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, if (error) goto failed; - init_ktls_key_params(tlsp, tls); - error = ktls_setup_keys(tlsp, tls, txq); if (error) goto failed; + tlsp->enc_mode = t4_tls_cipher_mode(tls); + tlsp->tx_key_info_size = t4_tls_key_info_size(tls); + /* The SCMD fields used when encrypting a full TLS record. */ tlsp->scmd0.seqno_numivs = htobe32(V_SCMD_SEQ_NO_CTRL(3) | - V_SCMD_PROTO_VERSION(tlsp->proto_ver) | + V_SCMD_PROTO_VERSION(t4_tls_proto_ver(tls)) | V_SCMD_ENC_DEC_CTRL(SCMD_ENCDECCTRL_ENCRYPT) | - V_SCMD_CIPH_AUTH_SEQ_CTRL((tlsp->mac_first == 0)) | + V_SCMD_CIPH_AUTH_SEQ_CTRL((mac_first == 0)) | V_SCMD_CIPH_MODE(tlsp->enc_mode) | - V_SCMD_AUTH_MODE(tlsp->auth_mode) | - V_SCMD_HMAC_CTRL(tlsp->hmac_ctrl) | - V_SCMD_IV_SIZE(tlsp->iv_size) | V_SCMD_NUM_IVS(1)); + V_SCMD_AUTH_MODE(t4_tls_auth_mode(tls)) | + V_SCMD_HMAC_CTRL(t4_tls_hmac_ctrl(tls)) | + V_SCMD_IV_SIZE(explicit_iv_size / 2) | V_SCMD_NUM_IVS(1)); tlsp->scmd0.ivgen_hdrlen = V_SCMD_IV_GEN_CTRL(0) | V_SCMD_TLS_FRAG_ENABLE(0); @@ -702,7 +545,7 @@ cxgbe_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, tlsp->scmd0_short.seqno_numivs = V_SCMD_SEQ_NO_CTRL(0) | V_SCMD_PROTO_VERSION(SCMD_PROTO_VERSION_GENERIC) | V_SCMD_ENC_DEC_CTRL(SCMD_ENCDECCTRL_ENCRYPT) | - V_SCMD_CIPH_AUTH_SEQ_CTRL((tlsp->mac_first == 0)) | + V_SCMD_CIPH_AUTH_SEQ_CTRL((mac_first == 0)) | V_SCMD_AUTH_MODE(SCMD_AUTH_MODE_NOP) | V_SCMD_HMAC_CTRL(SCMD_HMAC_CTRL_NOP) | V_SCMD_IV_SIZE(AES_BLOCK_LEN / 2) | V_SCMD_NUM_IVS(0); @@ -741,14 +584,11 @@ static int ktls_setup_keys(struct tlspcb *tlsp, const struct ktls_session *tls, struct sge_txq *txq) { - struct auth_hash *axf; - int error, keyid, kwrlen, kctxlen, len; struct tls_key_req *kwr; struct tls_keyctx *kctx; - void *items[1], *key; - struct tx_keyctx_hdr *khdr; - unsigned int ck_size, mk_size, partial_digest_len; + void *items[1]; struct mbuf *m; + int error; /* * Store the salt and keys in the key context. For @@ -757,80 +597,12 @@ ktls_setup_keys(struct tlspcb *tlsp, const struct ktls_session *tls, * storing the key in DDR, a work request is used to store a * copy of the key context in DDR. */ - kctx = &tlsp->keyctx; - khdr = &kctx->txhdr; - - switch (tlsp->cipher_secret_size) { - case 128 / 8: - ck_size = CHCR_KEYCTX_CIPHER_KEY_SIZE_128; - break; - case 192 / 8: - ck_size = CHCR_KEYCTX_CIPHER_KEY_SIZE_192; - break; - case 256 / 8: - ck_size = CHCR_KEYCTX_CIPHER_KEY_SIZE_256; - break; - default: - panic("bad key size"); - } - axf = NULL; - partial_digest_len = 0; - if (tlsp->enc_mode == SCMD_CIPH_MODE_AES_GCM) - mk_size = CHCR_KEYCTX_MAC_KEY_SIZE_512; - else { - switch (tlsp->auth_mode) { - case SCMD_AUTH_MODE_SHA1: - axf = &auth_hash_hmac_sha1; - mk_size = CHCR_KEYCTX_MAC_KEY_SIZE_160; - partial_digest_len = SHA1_HASH_LEN; - break; - case SCMD_AUTH_MODE_SHA256: - axf = &auth_hash_hmac_sha2_256; - mk_size = CHCR_KEYCTX_MAC_KEY_SIZE_256; - partial_digest_len = SHA2_256_HASH_LEN; - break; - case SCMD_AUTH_MODE_SHA512_384: - axf = &auth_hash_hmac_sha2_384; - mk_size = CHCR_KEYCTX_MAC_KEY_SIZE_512; - partial_digest_len = SHA2_512_HASH_LEN; - break; - default: - panic("bad auth mode"); - } - } - - khdr->ctxlen = (tlsp->tx_key_info_size >> 4); - khdr->dualck_to_txvalid = V_TLS_KEYCTX_TX_WR_SALT_PRESENT(1) | - V_TLS_KEYCTX_TX_WR_TXCK_SIZE(ck_size) | - V_TLS_KEYCTX_TX_WR_TXMK_SIZE(mk_size) | - V_TLS_KEYCTX_TX_WR_TXVALID(1); - if (tlsp->enc_mode != SCMD_CIPH_MODE_AES_GCM) - khdr->dualck_to_txvalid |= V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1); - khdr->dualck_to_txvalid = htobe16(khdr->dualck_to_txvalid); - key = kctx->keys.edkey; - memcpy(key, tls->params.cipher_key, tls->params.cipher_key_len); - if (tlsp->enc_mode == SCMD_CIPH_MODE_AES_GCM) { - memcpy(khdr->txsalt, tls->params.iv, SALT_SIZE); - t4_init_gmac_hash(tls->params.cipher_key, - tls->params.cipher_key_len, - (char *)key + tls->params.cipher_key_len); - } else { - t4_init_hmac_digest(axf, partial_digest_len, - tls->params.auth_key, tls->params.auth_key_len, - (char *)key + tls->params.cipher_key_len); - } - + t4_tls_key_ctx(tls, KTLS_TX, &tlsp->keyctx); if (tlsp->inline_key) return (0); - keyid = tlsp->tx_key_addr; - /* Populate key work request. */ - kwrlen = sizeof(*kwr); - kctxlen = roundup2(sizeof(*kctx), 32); - len = kwrlen + kctxlen; - - m = alloc_wr_mbuf(len, M_NOWAIT); + m = alloc_wr_mbuf(TLS_KEY_WR_SZ, M_NOWAIT); if (m == NULL) { CTR2(KTR_CXGBE, "%s: tid %d failed to alloc WR mbuf", __func__, tlsp->tid); @@ -839,27 +611,9 @@ ktls_setup_keys(struct tlspcb *tlsp, const struct ktls_session *tls, m->m_pkthdr.snd_tag = m_snd_tag_ref(&tlsp->com); m->m_pkthdr.csum_flags |= CSUM_SND_TAG; kwr = mtod(m, void *); - memset(kwr, 0, len); - - kwr->wr_hi = htobe32(V_FW_WR_OP(FW_ULPTX_WR) | - F_FW_WR_ATOMIC); - kwr->wr_mid = htobe32(V_FW_WR_LEN16(DIV_ROUND_UP(len, 16))); - kwr->protocol = tlsp->proto_ver; - kwr->mfs = htons(tlsp->frag_size); - kwr->reneg_to_write_rx = KEY_WRITE_TX; - - /* master command */ - kwr->cmd = htobe32(V_ULPTX_CMD(ULP_TX_MEM_WRITE) | - V_T5_ULP_MEMIO_ORDER(1) | V_T5_ULP_MEMIO_IMM(1)); - kwr->dlen = htobe32(V_ULP_MEMIO_DATA_LEN(kctxlen >> 5)); - kwr->len16 = htobe32((tlsp->tid << 8) | - DIV_ROUND_UP(len - sizeof(struct work_request_hdr), 16)); - kwr->kaddr = htobe32(V_ULP_MEMIO_ADDR(keyid >> 5)); - - /* sub command */ - kwr->sc_more = htobe32(V_ULPTX_CMD(ULP_TX_SC_IMM)); - kwr->sc_len = htobe32(kctxlen); + memset(kwr, 0, TLS_KEY_WR_SZ); + t4_write_tlskey_wr(tls, KTLS_TX, tlsp->tid, 0, tlsp->tx_key_addr, kwr); kctx = (struct tls_keyctx *)(kwr + 1); memcpy(kctx, &tlsp->keyctx, sizeof(*kctx)); @@ -2029,7 +1783,7 @@ ktls_write_tls_wr(struct tlspcb *tlsp, struct sge_txq *txq, if (plen == tlen) { iv = out; if (tlsp->enc_mode == SCMD_CIPH_MODE_AES_GCM) { - memcpy(iv, tlsp->keyctx.txhdr.txsalt, SALT_SIZE); + memcpy(iv, tlsp->keyctx.u.txhdr.txsalt, SALT_SIZE); memcpy(iv + 4, hdr + 1, 8); *(uint32_t *)(iv + 12) = htobe32(2 + offset / AES_BLOCK_LEN); @@ -2335,7 +2089,7 @@ cxgbe_tls_tag_free(struct m_snd_tag *mst) if (tlsp->ce) t4_release_clip_entry(sc, tlsp->ce); if (tlsp->tx_key_addr >= 0) - free_keyid(tlsp, tlsp->tx_key_addr); + t4_free_tls_keyid(sc, tlsp->tx_key_addr); zfree(tlsp, M_CXGBE); } diff --git a/sys/dev/cxgbe/crypto/t4_keyctx.c b/sys/dev/cxgbe/crypto/t4_keyctx.c index 91bd5f28321a..b64eb4ff23d7 100644 --- a/sys/dev/cxgbe/crypto/t4_keyctx.c +++ b/sys/dev/cxgbe/crypto/t4_keyctx.c @@ -25,10 +25,13 @@ * SUCH DAMAGE. */ +#include "opt_kern_tls.h" + #include __FBSDID("$FreeBSD$"); #include +#include #include #include @@ -61,6 +64,234 @@ __FBSDID("$FreeBSD$"); * +-------------------------------+ - */ +/* Fields in the key context header. */ +#define S_TLS_KEYCTX_TX_WR_DUALCK 12 +#define M_TLS_KEYCTX_TX_WR_DUALCK 0x1 +#define V_TLS_KEYCTX_TX_WR_DUALCK(x) ((x) << S_TLS_KEYCTX_TX_WR_DUALCK) +#define G_TLS_KEYCTX_TX_WR_DUALCK(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_DUALCK) & M_TLS_KEYCTX_TX_WR_DUALCK) +#define F_TLS_KEYCTX_TX_WR_DUALCK V_TLS_KEYCTX_TX_WR_DUALCK(1U) + +#define S_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT 11 +#define M_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT 0x1 +#define V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT) +#define G_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT) & \ + M_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT) +#define F_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT \ + V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1U) + +#define S_TLS_KEYCTX_TX_WR_SALT_PRESENT 10 +#define M_TLS_KEYCTX_TX_WR_SALT_PRESENT 0x1 +#define V_TLS_KEYCTX_TX_WR_SALT_PRESENT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_SALT_PRESENT) +#define G_TLS_KEYCTX_TX_WR_SALT_PRESENT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_SALT_PRESENT) & \ + M_TLS_KEYCTX_TX_WR_SALT_PRESENT) +#define F_TLS_KEYCTX_TX_WR_SALT_PRESENT \ + V_TLS_KEYCTX_TX_WR_SALT_PRESENT(1U) + +#define S_TLS_KEYCTX_TX_WR_TXCK_SIZE 6 +#define M_TLS_KEYCTX_TX_WR_TXCK_SIZE 0xf +#define V_TLS_KEYCTX_TX_WR_TXCK_SIZE(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_TXCK_SIZE) +#define G_TLS_KEYCTX_TX_WR_TXCK_SIZE(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_TXCK_SIZE) & \ + M_TLS_KEYCTX_TX_WR_TXCK_SIZE) + +#define S_TLS_KEYCTX_TX_WR_TXMK_SIZE 2 +#define M_TLS_KEYCTX_TX_WR_TXMK_SIZE 0xf +#define V_TLS_KEYCTX_TX_WR_TXMK_SIZE(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_TXMK_SIZE) +#define G_TLS_KEYCTX_TX_WR_TXMK_SIZE(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_TXMK_SIZE) & \ + M_TLS_KEYCTX_TX_WR_TXMK_SIZE) + +#define S_TLS_KEYCTX_TX_WR_TXVALID 0 +#define M_TLS_KEYCTX_TX_WR_TXVALID 0x1 +#define V_TLS_KEYCTX_TX_WR_TXVALID(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_TXVALID) +#define G_TLS_KEYCTX_TX_WR_TXVALID(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_TXVALID) & M_TLS_KEYCTX_TX_WR_TXVALID) +#define F_TLS_KEYCTX_TX_WR_TXVALID V_TLS_KEYCTX_TX_WR_TXVALID(1U) + +#define S_TLS_KEYCTX_TX_WR_FLITCNT 3 +#define M_TLS_KEYCTX_TX_WR_FLITCNT 0x1f +#define V_TLS_KEYCTX_TX_WR_FLITCNT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_FLITCNT) +#define G_TLS_KEYCTX_TX_WR_FLITCNT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_FLITCNT) & M_TLS_KEYCTX_TX_WR_FLITCNT) + +#define S_TLS_KEYCTX_TX_WR_HMACCTRL 0 +#define M_TLS_KEYCTX_TX_WR_HMACCTRL 0x7 +#define V_TLS_KEYCTX_TX_WR_HMACCTRL(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_HMACCTRL) +#define G_TLS_KEYCTX_TX_WR_HMACCTRL(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_HMACCTRL) & M_TLS_KEYCTX_TX_WR_HMACCTRL) + +#define S_TLS_KEYCTX_TX_WR_PROTOVER 4 +#define M_TLS_KEYCTX_TX_WR_PROTOVER 0xf +#define V_TLS_KEYCTX_TX_WR_PROTOVER(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_PROTOVER) +#define G_TLS_KEYCTX_TX_WR_PROTOVER(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_PROTOVER) & M_TLS_KEYCTX_TX_WR_PROTOVER) + +#define S_TLS_KEYCTX_TX_WR_CIPHMODE 0 +#define M_TLS_KEYCTX_TX_WR_CIPHMODE 0xf +#define V_TLS_KEYCTX_TX_WR_CIPHMODE(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_CIPHMODE) +#define G_TLS_KEYCTX_TX_WR_CIPHMODE(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_CIPHMODE) & M_TLS_KEYCTX_TX_WR_CIPHMODE) + +#define S_TLS_KEYCTX_TX_WR_AUTHMODE 4 +#define M_TLS_KEYCTX_TX_WR_AUTHMODE 0xf +#define V_TLS_KEYCTX_TX_WR_AUTHMODE(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_AUTHMODE) +#define G_TLS_KEYCTX_TX_WR_AUTHMODE(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_AUTHMODE) & M_TLS_KEYCTX_TX_WR_AUTHMODE) + +#define S_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL 3 +#define M_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL 0x1 +#define V_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL) +#define G_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL) & \ + M_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL) +#define F_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL \ + V_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(1U) + +#define S_TLS_KEYCTX_TX_WR_SEQNUMCTRL 1 +#define M_TLS_KEYCTX_TX_WR_SEQNUMCTRL 0x3 +#define V_TLS_KEYCTX_TX_WR_SEQNUMCTRL(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_SEQNUMCTRL) +#define G_TLS_KEYCTX_TX_WR_SEQNUMCTRL(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_SEQNUMCTRL) & \ + M_TLS_KEYCTX_TX_WR_SEQNUMCTRL) + +#define S_TLS_KEYCTX_TX_WR_RXVALID 0 +#define M_TLS_KEYCTX_TX_WR_RXVALID 0x1 +#define V_TLS_KEYCTX_TX_WR_RXVALID(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_RXVALID) +#define G_TLS_KEYCTX_TX_WR_RXVALID(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_RXVALID) & M_TLS_KEYCTX_TX_WR_RXVALID) +#define F_TLS_KEYCTX_TX_WR_RXVALID V_TLS_KEYCTX_TX_WR_RXVALID(1U) + +#define S_TLS_KEYCTX_TX_WR_IVPRESENT 7 +#define M_TLS_KEYCTX_TX_WR_IVPRESENT 0x1 +#define V_TLS_KEYCTX_TX_WR_IVPRESENT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_IVPRESENT) +#define G_TLS_KEYCTX_TX_WR_IVPRESENT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_IVPRESENT) & \ + M_TLS_KEYCTX_TX_WR_IVPRESENT) +#define F_TLS_KEYCTX_TX_WR_IVPRESENT V_TLS_KEYCTX_TX_WR_IVPRESENT(1U) + +#define S_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT 6 +#define M_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT 0x1 +#define V_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT) +#define G_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT) & \ + M_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT) +#define F_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT \ + V_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(1U) + +#define S_TLS_KEYCTX_TX_WR_RXCK_SIZE 3 +#define M_TLS_KEYCTX_TX_WR_RXCK_SIZE 0x7 +#define V_TLS_KEYCTX_TX_WR_RXCK_SIZE(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_RXCK_SIZE) +#define G_TLS_KEYCTX_TX_WR_RXCK_SIZE(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_RXCK_SIZE) & \ + M_TLS_KEYCTX_TX_WR_RXCK_SIZE) + +#define S_TLS_KEYCTX_TX_WR_RXMK_SIZE 0 +#define M_TLS_KEYCTX_TX_WR_RXMK_SIZE 0x7 +#define V_TLS_KEYCTX_TX_WR_RXMK_SIZE(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_RXMK_SIZE) +#define G_TLS_KEYCTX_TX_WR_RXMK_SIZE(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_RXMK_SIZE) & \ + M_TLS_KEYCTX_TX_WR_RXMK_SIZE) + +#define S_TLS_KEYCTX_TX_WR_IVINSERT 55 +#define M_TLS_KEYCTX_TX_WR_IVINSERT 0x1ffULL +#define V_TLS_KEYCTX_TX_WR_IVINSERT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_IVINSERT) +#define G_TLS_KEYCTX_TX_WR_IVINSERT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_IVINSERT) & M_TLS_KEYCTX_TX_WR_IVINSERT) + +#define S_TLS_KEYCTX_TX_WR_AADSTRTOFST 47 +#define M_TLS_KEYCTX_TX_WR_AADSTRTOFST 0xffULL +#define V_TLS_KEYCTX_TX_WR_AADSTRTOFST(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_AADSTRTOFST) +#define G_TLS_KEYCTX_TX_WR_AADSTRTOFST(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_AADSTRTOFST) & \ + M_TLS_KEYCTX_TX_WR_AADSTRTOFST) + +#define S_TLS_KEYCTX_TX_WR_AADSTOPOFST 39 +#define M_TLS_KEYCTX_TX_WR_AADSTOPOFST 0xffULL +#define V_TLS_KEYCTX_TX_WR_AADSTOPOFST(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_AADSTOPOFST) +#define G_TLS_KEYCTX_TX_WR_AADSTOPOFST(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_AADSTOPOFST) & \ + M_TLS_KEYCTX_TX_WR_AADSTOPOFST) + +#define S_TLS_KEYCTX_TX_WR_CIPHERSRTOFST 30 +#define M_TLS_KEYCTX_TX_WR_CIPHERSRTOFST 0x1ffULL +#define V_TLS_KEYCTX_TX_WR_CIPHERSRTOFST(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_CIPHERSRTOFST) +#define G_TLS_KEYCTX_TX_WR_CIPHERSRTOFST(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_CIPHERSRTOFST) & \ + M_TLS_KEYCTX_TX_WR_CIPHERSRTOFST) + +#define S_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST 23 +#define M_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST 0x7f +#define V_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST) +#define G_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST) & \ + M_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST) + +#define S_TLS_KEYCTX_TX_WR_AUTHSRTOFST 14 +#define M_TLS_KEYCTX_TX_WR_AUTHSRTOFST 0x1ff +#define V_TLS_KEYCTX_TX_WR_AUTHSRTOFST(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_AUTHSRTOFST) +#define G_TLS_KEYCTX_TX_WR_AUTHSRTOFST(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_AUTHSRTOFST) & \ + M_TLS_KEYCTX_TX_WR_AUTHSRTOFST) + +#define S_TLS_KEYCTX_TX_WR_AUTHSTOPOFST 7 +#define M_TLS_KEYCTX_TX_WR_AUTHSTOPOFST 0x7f +#define V_TLS_KEYCTX_TX_WR_AUTHSTOPOFST(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_AUTHSTOPOFST) +#define G_TLS_KEYCTX_TX_WR_AUTHSTOPOFST(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_AUTHSTOPOFST) & \ + M_TLS_KEYCTX_TX_WR_AUTHSTOPOFST) + +#define S_TLS_KEYCTX_TX_WR_AUTHINSRT 0 +#define M_TLS_KEYCTX_TX_WR_AUTHINSRT 0x7f +#define V_TLS_KEYCTX_TX_WR_AUTHINSRT(x) \ + ((x) << S_TLS_KEYCTX_TX_WR_AUTHINSRT) +#define G_TLS_KEYCTX_TX_WR_AUTHINSRT(x) \ + (((x) >> S_TLS_KEYCTX_TX_WR_AUTHINSRT) & \ + M_TLS_KEYCTX_TX_WR_AUTHINSRT) + +/* Key Context Programming Operation type */ +#define KEY_WRITE_RX 0x1 +#define KEY_WRITE_TX 0x2 +#define KEY_DELETE_RX 0x4 +#define KEY_DELETE_TX 0x8 + +#define S_KEY_CLR_LOC 4 +#define M_KEY_CLR_LOC 0xf +#define V_KEY_CLR_LOC(x) ((x) << S_KEY_CLR_LOC) +#define G_KEY_CLR_LOC(x) (((x) >> S_KEY_CLR_LOC) & M_KEY_CLR_LOC) +#define F_KEY_CLR_LOC V_KEY_CLR_LOC(1U) + +#define S_KEY_GET_LOC 0 +#define M_KEY_GET_LOC 0xf +#define V_KEY_GET_LOC(x) ((x) << S_KEY_GET_LOC) +#define G_KEY_GET_LOC(x) (((x) >> S_KEY_GET_LOC) & M_KEY_GET_LOC) + /* * Generate the initial GMAC hash state for a AES-GCM key. * @@ -172,3 +403,278 @@ t4_aes_getdeckey(void *dec_key, const void *enc_key, unsigned int kbits) MPASS(dkey == dec_key); explicit_bzero(ek, sizeof(ek)); } + +#ifdef KERN_TLS +/* + * - keyid management + * - request to program key? + */ +u_int +t4_tls_key_info_size(const struct ktls_session *tls) +{ + u_int key_info_size, mac_key_size; + + key_info_size = sizeof(struct tx_keyctx_hdr) + + tls->params.cipher_key_len; + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { + key_info_size += GMAC_BLOCK_LEN; + } else { + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + mac_key_size = SHA1_HASH_LEN; + break; + case CRYPTO_SHA2_256_HMAC: + mac_key_size = SHA2_256_HASH_LEN; + break; + case CRYPTO_SHA2_384_HMAC: + mac_key_size = SHA2_512_HASH_LEN; + break; + default: + __assert_unreachable(); + } + key_info_size += roundup2(mac_key_size, 16) * 2; + } + return (key_info_size); +} + +int +t4_tls_proto_ver(const struct ktls_session *tls) +{ + if (tls->params.tls_vminor == TLS_MINOR_VER_ONE) + return (SCMD_PROTO_VERSION_TLS_1_1); + else + return (SCMD_PROTO_VERSION_TLS_1_2); +} + +int +t4_tls_cipher_mode(const struct ktls_session *tls) +{ + switch (tls->params.cipher_algorithm) { + case CRYPTO_AES_CBC: + return (SCMD_CIPH_MODE_AES_CBC); + case CRYPTO_AES_NIST_GCM_16: + return (SCMD_CIPH_MODE_AES_GCM); + default: + return (SCMD_CIPH_MODE_NOP); + } +} + +int +t4_tls_auth_mode(const struct ktls_session *tls) +{ + switch (tls->params.cipher_algorithm) { + case CRYPTO_AES_CBC: + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + return (SCMD_AUTH_MODE_SHA1); + case CRYPTO_SHA2_256_HMAC: + return (SCMD_AUTH_MODE_SHA256); + case CRYPTO_SHA2_384_HMAC: + return (SCMD_AUTH_MODE_SHA512_384); + default: + return (SCMD_AUTH_MODE_NOP); + } + case CRYPTO_AES_NIST_GCM_16: + return (SCMD_AUTH_MODE_GHASH); + default: + return (SCMD_AUTH_MODE_NOP); + } +} + +int +t4_tls_hmac_ctrl(const struct ktls_session *tls) +{ + switch (tls->params.cipher_algorithm) { + case CRYPTO_AES_CBC: + return (SCMD_HMAC_CTRL_NO_TRUNC); + case CRYPTO_AES_NIST_GCM_16: + return (SCMD_HMAC_CTRL_NOP); + default: + return (SCMD_HMAC_CTRL_NOP); + } +} + +static int +tls_cipher_key_size(const struct ktls_session *tls) +{ + switch (tls->params.cipher_key_len) { + case 128 / 8: + return (CHCR_KEYCTX_CIPHER_KEY_SIZE_128); + case 192 / 8: + return (CHCR_KEYCTX_CIPHER_KEY_SIZE_192); + case 256 / 8: + return (CHCR_KEYCTX_CIPHER_KEY_SIZE_256); + default: + __assert_unreachable(); + } +} + +static int +tls_mac_key_size(const struct ktls_session *tls) +{ + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) + return (CHCR_KEYCTX_MAC_KEY_SIZE_512); + else { + switch (tls->params.auth_algorithm) { + case CRYPTO_SHA1_HMAC: + return (CHCR_KEYCTX_MAC_KEY_SIZE_160); + case CRYPTO_SHA2_256_HMAC: + return (CHCR_KEYCTX_MAC_KEY_SIZE_256); + case CRYPTO_SHA2_384_HMAC: + return (CHCR_KEYCTX_MAC_KEY_SIZE_512); + default: + __assert_unreachable(); + } + } +} + +void +t4_tls_key_ctx(const struct ktls_session *tls, int direction, + struct tls_keyctx *kctx) +{ + struct auth_hash *axf; + u_int mac_key_size; + char *hash; + + /* Key context header. */ + if (direction == KTLS_TX) { + kctx->u.txhdr.ctxlen = t4_tls_key_info_size(tls) / 16; + kctx->u.txhdr.dualck_to_txvalid = + V_TLS_KEYCTX_TX_WR_SALT_PRESENT(1) | + V_TLS_KEYCTX_TX_WR_TXCK_SIZE(tls_cipher_key_size(tls)) | + V_TLS_KEYCTX_TX_WR_TXMK_SIZE(tls_mac_key_size(tls)) | + V_TLS_KEYCTX_TX_WR_TXVALID(1); + if (tls->params.cipher_algorithm == CRYPTO_AES_CBC) + kctx->u.txhdr.dualck_to_txvalid |= + V_TLS_KEYCTX_TX_WR_TXOPAD_PRESENT(1); + kctx->u.txhdr.dualck_to_txvalid = + htobe16(kctx->u.txhdr.dualck_to_txvalid); + } else { + kctx->u.rxhdr.flitcnt_hmacctrl = + V_TLS_KEYCTX_TX_WR_FLITCNT(t4_tls_key_info_size(tls) / 16) | + V_TLS_KEYCTX_TX_WR_HMACCTRL(t4_tls_hmac_ctrl(tls)); + + kctx->u.rxhdr.protover_ciphmode = + V_TLS_KEYCTX_TX_WR_PROTOVER(t4_tls_proto_ver(tls)) | + V_TLS_KEYCTX_TX_WR_CIPHMODE(t4_tls_cipher_mode(tls)); + + kctx->u.rxhdr.authmode_to_rxvalid = + V_TLS_KEYCTX_TX_WR_AUTHMODE(t4_tls_auth_mode(tls)) | + V_TLS_KEYCTX_TX_WR_SEQNUMCTRL(3) | + V_TLS_KEYCTX_TX_WR_RXVALID(1); + + kctx->u.rxhdr.ivpresent_to_rxmk_size = + V_TLS_KEYCTX_TX_WR_IVPRESENT(0) | + V_TLS_KEYCTX_TX_WR_RXCK_SIZE(tls_cipher_key_size(tls)) | + V_TLS_KEYCTX_TX_WR_RXMK_SIZE(tls_mac_key_size(tls)); + + if (tls->params.cipher_algorithm == CRYPTO_AES_NIST_GCM_16) { + kctx->u.rxhdr.ivinsert_to_authinsrt = + htobe64(V_TLS_KEYCTX_TX_WR_IVINSERT(6ULL) | + V_TLS_KEYCTX_TX_WR_AADSTRTOFST(1ULL) | + V_TLS_KEYCTX_TX_WR_AADSTOPOFST(5ULL) | + V_TLS_KEYCTX_TX_WR_AUTHSRTOFST(14ULL) | + V_TLS_KEYCTX_TX_WR_AUTHSTOPOFST(16ULL) | + V_TLS_KEYCTX_TX_WR_CIPHERSRTOFST(14ULL) | + V_TLS_KEYCTX_TX_WR_CIPHERSTOPOFST(0ULL) | + V_TLS_KEYCTX_TX_WR_AUTHINSRT(16ULL)); + } else { + kctx->u.rxhdr.authmode_to_rxvalid |= + V_TLS_KEYCTX_TX_WR_CIPHAUTHSEQCTRL(1); + kctx->u.rxhdr.ivpresent_to_rxmk_size |= + V_TLS_KEYCTX_TX_WR_RXOPAD_PRESENT(1); *** 784 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Wed Jun 16 00:51:54 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B4D25657FBA; Wed, 16 Jun 2021 00:51:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4RTk4p2Vz3w5b; Wed, 16 Jun 2021 00:51:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8CDAC12656; Wed, 16 Jun 2021 00:51:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G0psCl064543; Wed, 16 Jun 2021 00:51:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G0psYF064542; Wed, 16 Jun 2021 00:51:54 GMT (envelope-from git) Date: Wed, 16 Jun 2021 00:51:54 GMT Message-Id: <202106160051.15G0psYF064542@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Rick Macklem Subject: git: aed98fa5acb1 - main - nfscl: Make NFSv4.0 client acquisition NFSv4.1/4.2 compatible MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rmacklem X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: aed98fa5acb1a62bb79fc0e182b2151b239d6239 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 00:51:54 -0000 The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=aed98fa5acb1a62bb79fc0e182b2151b239d6239 commit aed98fa5acb1a62bb79fc0e182b2151b239d6239 Author: Rick Macklem AuthorDate: 2021-06-16 00:42:13 +0000 Commit: Rick Macklem CommitDate: 2021-06-16 00:48:51 +0000 nfscl: Make NFSv4.0 client acquisition NFSv4.1/4.2 compatible When the NFSv4.0 client was implemented, acquisition of a clientid via SetClientID/SetClientIDConfirm was done upon the first Open, since that was when it was needed. NFSv4.1/4.2 acquires the clientid during mount (via ExchangeID/CreateSession), since the associated session is required during mount. This patch modifies the NFSv4.0 mount so that it acquires the clientid during mount. This simplifies the code and makes it easy to implement "find the highest minor version supported by the NFSv4 server", which will be done for the default minorversion in a future commit. The "start_renewthread" argument for nfscl_getcl() is replaced by "tryminvers", which will be used by the aforementioned future commit. MFC after: 2 weeks --- sys/fs/nfs/nfs_var.h | 2 +- sys/fs/nfsclient/nfs_clrpcops.c | 29 ++--------------------------- sys/fs/nfsclient/nfs_clstate.c | 19 ++++++------------- sys/fs/nfsclient/nfs_clvfsops.c | 8 ++++---- 4 files changed, 13 insertions(+), 45 deletions(-) diff --git a/sys/fs/nfs/nfs_var.h b/sys/fs/nfs/nfs_var.h index 9db8b92f44e7..5c474d97ad04 100644 --- a/sys/fs/nfs/nfs_var.h +++ b/sys/fs/nfs/nfs_var.h @@ -574,7 +574,7 @@ int nfscl_getstateid(vnode_t, u_int8_t *, int, u_int32_t, int, struct ucred *, NFSPROC_T *, nfsv4stateid_t *, void **); void nfscl_ownerrelease(struct nfsmount *, struct nfsclowner *, int, int, int); void nfscl_openrelease(struct nfsmount *, struct nfsclopen *, int, int); -int nfscl_getcl(struct mount *, struct ucred *, NFSPROC_T *, int, +int nfscl_getcl(struct mount *, struct ucred *, NFSPROC_T *, bool, struct nfsclclient **); struct nfsclclient *nfscl_findcl(struct nfsmount *); void nfscl_clientrelease(struct nfsclclient *); diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index 8cb1a2d81ff5..128afb33b9ef 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -936,12 +936,10 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclclient *clp, int reclaim, u_int32_t *tl; struct nfsrv_descript nfsd; struct nfsrv_descript *nd = &nfsd; - nfsattrbit_t attrbits; u_int8_t *cp = NULL, *cp2, addr[INET6_ADDRSTRLEN + 9]; u_short port; int error, isinet6 = 0, callblen; nfsquad_t confirm; - u_int32_t lease; static u_int32_t rev = 0; struct nfsclds *dsp, *odsp; struct in6_addr a6; @@ -1171,29 +1169,6 @@ nfsrpc_setclient(struct nfsmount *nmp, struct nfsclclient *clp, int reclaim, return (error); m_freem(nd->nd_mrep); nd->nd_mrep = NULL; - if (nd->nd_repstat == 0) { - nfscl_reqstart(nd, NFSPROC_GETATTR, nmp, nmp->nm_fh, - nmp->nm_fhsize, NULL, NULL, 0, 0); - NFSZERO_ATTRBIT(&attrbits); - NFSSETBIT_ATTRBIT(&attrbits, NFSATTRBIT_LEASETIME); - (void) nfsrv_putattrbit(nd, &attrbits); - nd->nd_flag |= ND_USEGSSNAME; - error = newnfs_request(nd, nmp, NULL, &nmp->nm_sockreq, NULL, p, - cred, NFS_PROG, NFS_VER4, NULL, 1, NULL, NULL); - if (error) - return (error); - if (nd->nd_repstat == 0) { - error = nfsv4_loadattr(nd, NULL, NULL, NULL, NULL, 0, NULL, - NULL, NULL, NULL, NULL, 0, NULL, &lease, NULL, p, cred); - if (error) - goto nfsmout; - clp->nfsc_renew = NFSCL_RENEW(lease); - clp->nfsc_expire = NFSD_MONOSEC + clp->nfsc_renew; - clp->nfsc_clientidrev++; - if (clp->nfsc_clientidrev == 0) - clp->nfsc_clientidrev++; - } - } } error = nd->nd_repstat; nfsmout: @@ -3984,7 +3959,7 @@ nfsrpc_advlock(vnode_t vp, off_t size, int op, struct flock *fl, do { nd->nd_repstat = 0; if (op == F_GETLK) { - error = nfscl_getcl(vp->v_mount, cred, p, 1, &clp); + error = nfscl_getcl(vp->v_mount, cred, p, false, &clp); if (error) return (error); error = nfscl_lockt(vp, clp, off, len, fl, p, id, flags); @@ -4001,7 +3976,7 @@ nfsrpc_advlock(vnode_t vp, off_t size, int op, struct flock *fl, * We must loop around for all lockowner cases. */ callcnt = 0; - error = nfscl_getcl(vp->v_mount, cred, p, 1, &clp); + error = nfscl_getcl(vp->v_mount, cred, p, false, &clp); if (error) return (error); do { diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c index 0659e77289e9..fb90c80c69e7 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -246,7 +246,7 @@ nfscl_open(vnode_t vp, u_int8_t *nfhp, int fhlen, u_int32_t amode, int usedeleg, fhlen - 1, M_NFSCLOPEN, M_WAITOK); nop->nfso_hash.le_prev = NULL; } - ret = nfscl_getcl(vp->v_mount, cred, p, 1, &clp); + ret = nfscl_getcl(vp->v_mount, cred, p, false, &clp); if (ret != 0) { free(nowp, M_NFSCLOWNER); if (nop != NULL) @@ -823,13 +823,11 @@ nfscl_openrelease(struct nfsmount *nmp, struct nfsclopen *op, int error, * If the "cred" argument is NULL, a new clientid should not be created. * If the "p" argument is NULL, a SetClientID/SetClientIDConfirm cannot * be done. - * The start_renewthread argument tells nfscl_getcl() to start a renew - * thread if this creates a new clp. * It always clpp with a reference count on it, unless returning an error. */ int nfscl_getcl(struct mount *mp, struct ucred *cred, NFSPROC_T *p, - int start_renewthread, struct nfsclclient **clpp) + bool tryminvers, struct nfsclclient **clpp) { struct nfsclclient *clp; struct nfsclclient *newclp = NULL; @@ -888,15 +886,10 @@ nfscl_getcl(struct mount *mp, struct ucred *cred, NFSPROC_T *p, LIST_INSERT_HEAD(&nfsclhead, clp, nfsc_list); nmp->nm_clp = clp; clp->nfsc_nmp = nmp; - NFSUNLOCKCLSTATE(); - if (start_renewthread != 0) - nfscl_start_renewthread(clp); } else { - NFSUNLOCKCLSTATE(); if (newclp != NULL) free(newclp, M_NFSCLCLIENT); } - NFSLOCKCLSTATE(); while ((clp->nfsc_flags & NFSCLFLAGS_HASCLIENTID) == 0 && !igotlock && !NFSCL_FORCEDISM(mp)) igotlock = nfsv4_lock(&clp->nfsc_lock, 1, NULL, @@ -1085,7 +1078,7 @@ nfscl_getbytelock(vnode_t vp, u_int64_t off, u_int64_t len, if (recovery) clp = rclp; else - error = nfscl_getcl(vp->v_mount, cred, p, 1, &clp); + error = nfscl_getcl(vp->v_mount, cred, p, false, &clp); } if (error) { free(nlp, M_NFSCLLOCKOWNER); @@ -1416,7 +1409,7 @@ nfscl_checkwritelocked(vnode_t vp, struct flock *fl, end = NFS64BITSSET; } - error = nfscl_getcl(vp->v_mount, cred, p, 1, &clp); + error = nfscl_getcl(vp->v_mount, cred, p, false, &clp); if (error) return (1); nfscl_filllockowner(id, own, flags); @@ -3209,7 +3202,7 @@ nfscl_getclose(vnode_t vp, struct nfsclclient **clpp) struct nfsfh *nfhp; int error, notdecr; - error = nfscl_getcl(vp->v_mount, NULL, NULL, 1, &clp); + error = nfscl_getcl(vp->v_mount, NULL, NULL, false, &clp); if (error) return (error); *clpp = clp; @@ -3283,7 +3276,7 @@ nfscl_doclose(vnode_t vp, struct nfsclclient **clpp, NFSPROC_T *p) struct nfsclrecalllayout *recallp; int error; - error = nfscl_getcl(vp->v_mount, NULL, NULL, 1, &clp); + error = nfscl_getcl(vp->v_mount, NULL, NULL, false, &clp); if (error) return (error); *clpp = clp; diff --git a/sys/fs/nfsclient/nfs_clvfsops.c b/sys/fs/nfsclient/nfs_clvfsops.c index 847bf72acf0c..9b81777177b3 100644 --- a/sys/fs/nfsclient/nfs_clvfsops.c +++ b/sys/fs/nfsclient/nfs_clvfsops.c @@ -1573,10 +1573,10 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct sockaddr *nam, if ((error = newnfs_connect(nmp, &nmp->nm_sockreq, cred, td, 0, false))) goto bad; - /* For NFSv4.1, get the clientid now. */ - if (nmp->nm_minorvers > 0) { + /* For NFSv4, get the clientid now. */ + if ((argp->flags & NFSMNT_NFSV4) != 0) { NFSCL_DEBUG(3, "at getcl\n"); - error = nfscl_getcl(mp, cred, td, 0, &clp); + error = nfscl_getcl(mp, cred, td, false, &clp); NFSCL_DEBUG(3, "aft getcl=%d\n", error); if (error != 0) goto bad; @@ -1646,7 +1646,7 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct sockaddr *nam, lease = 60; } (void) nfscl_loadattrcache(vpp, &nfsva, NULL, NULL, 0, 1); - if (nmp->nm_minorvers > 0) { + if ((argp->flags & NFSMNT_NFSV4) != 0) { NFSCL_DEBUG(3, "lease=%d\n", (int)lease); NFSLOCKCLSTATE(); clp->nfsc_renew = NFSCL_RENEW(lease); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 01:59:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 49BCC658D2B; Wed, 16 Jun 2021 01:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4SzS1Mn0z4TSZ; Wed, 16 Jun 2021 01:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 13733135E2; Wed, 16 Jun 2021 01:59:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G1xFrw046130; Wed, 16 Jun 2021 01:59:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G1xFBw046129; Wed, 16 Jun 2021 01:59:15 GMT (envelope-from git) Date: Wed, 16 Jun 2021 01:59:15 GMT Message-Id: <202106160159.15G1xFBw046129@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Martin Matuska Subject: git: 014f9aa8218a - stable/13 - zfs: unbreak stable/13 build on i386 after b0c251b0d MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 014f9aa8218a66ef1e412ad37a75b8da5ab9d65e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 01:59:16 -0000 The branch stable/13 has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=014f9aa8218a66ef1e412ad37a75b8da5ab9d65e commit 014f9aa8218a66ef1e412ad37a75b8da5ab9d65e Author: Martin Matuska AuthorDate: 2021-06-16 01:47:02 +0000 Commit: Martin Matuska CommitDate: 2021-06-16 01:56:19 +0000 zfs: unbreak stable/13 build on i386 after b0c251b0d The build was broken because upstream merged e76373de7 (author: mav) without fef8bd41f from openzfs/zfs/master into openzfs/zfs/zfs-2.1-release. Temporary fix until upstream decides a way to solve this problem. Patch by: mav Differential Revision: https://reviews.freebsd.org/D30783 (direct commit) --- sys/contrib/openzfs/lib/libspl/asm-i386/atomic.S | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sys/contrib/openzfs/lib/libspl/asm-i386/atomic.S b/sys/contrib/openzfs/lib/libspl/asm-i386/atomic.S index 7a574b0d1729..c8a6c78b5fa8 100644 --- a/sys/contrib/openzfs/lib/libspl/asm-i386/atomic.S +++ b/sys/contrib/openzfs/lib/libspl/asm-i386/atomic.S @@ -762,6 +762,7 @@ SET_SIZE(atomic_swap_32) ENTRY(atomic_swap_64) + ALTENTRY(atomic_store_64) pushl %esi pushl %ebx movl 12(%esp), %esi @@ -776,8 +777,20 @@ popl %ebx popl %esi ret + SET_SIZE(atomic_store_64) SET_SIZE(atomic_swap_64) + ENTRY(atomic_load_64) + pushl %esi + movl 8(%esp), %esi + movl %ebx, %eax + movl %ecx, %edx + lock + cmpxchg8b (%esi) + popl %esi + ret + SET_SIZE(atomic_load_64) + ENTRY(atomic_set_long_excl) movl 4(%esp), %edx movl 8(%esp), %ecx From owner-dev-commits-src-all@freebsd.org Wed Jun 16 09:22:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 546B265E4E8; Wed, 16 Jun 2021 09:22:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4fps20bRz3Gl5; Wed, 16 Jun 2021 09:22:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2CE4119558; Wed, 16 Jun 2021 09:22:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G9MT0t046285; Wed, 16 Jun 2021 09:22:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G9MTa3046284; Wed, 16 Jun 2021 09:22:29 GMT (envelope-from git) Date: Wed, 16 Jun 2021 09:22:29 GMT Message-Id: <202106160922.15G9MTa3046284@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ceri Davies Subject: git: 3e4946f0aad9 - main - date.1: Remove mention of -d and -f flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ceri X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3e4946f0aad9961c6e121192acb33956ff612e46 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 09:22:29 -0000 The branch main has been updated by ceri (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=3e4946f0aad9961c6e121192acb33956ff612e46 commit 3e4946f0aad9961c6e121192acb33956ff612e46 Author: Ceri Davies AuthorDate: 2021-06-16 09:18:56 +0000 Commit: Ceri Davies CommitDate: 2021-06-16 09:18:56 +0000 date.1: Remove mention of -d and -f flags These flags were removed in 2019. PR: 256631 Submitted by: David Fiander MFC After: 3 days --- bin/date/date.1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/date/date.1 b/bin/date/date.1 index a7b6265d1195..8f187b311a82 100644 --- a/bin/date/date.1 +++ b/bin/date/date.1 @@ -32,7 +32,7 @@ .\" @(#)date.1 8.3 (Berkeley) 4/28/95 .\" $FreeBSD$ .\" -.Dd August 25, 2020 +.Dd June 16, 2021 .Dt DATE 1 .Os .Sh NAME @@ -455,7 +455,7 @@ The utility is expected to be compatible with .St -p1003.2 . The -.Fl d , f , I , j , r , t , +.Fl f , I , j , r , and .Fl v options are all extensions to the standard. From owner-dev-commits-src-all@freebsd.org Wed Jun 16 09:33:23 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6886F65ED23; Wed, 16 Jun 2021 09:33:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4g3R2XpTz3HmG; Wed, 16 Jun 2021 09:33:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3F7CF197D0; Wed, 16 Jun 2021 09:33:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15G9XNU9059661; Wed, 16 Jun 2021 09:33:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15G9XNpF059660; Wed, 16 Jun 2021 09:33:23 GMT (envelope-from git) Date: Wed, 16 Jun 2021 09:33:23 GMT Message-Id: <202106160933.15G9XNpF059660@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Edward Tomasz Napierala Subject: git: e505c3066bbd - main - linux: implement set_upcall on aarch64 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: trasz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e505c3066bbdb96dd28ff4634a315346490b9b33 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 09:33:23 -0000 The branch main has been updated by trasz: URL: https://cgit.FreeBSD.org/src/commit/?id=e505c3066bbdb96dd28ff4634a315346490b9b33 commit e505c3066bbdb96dd28ff4634a315346490b9b33 Author: Edward Tomasz Napierala AuthorDate: 2021-06-15 12:01:02 +0000 Commit: Edward Tomasz Napierala CommitDate: 2021-06-16 05:13:17 +0000 linux: implement set_upcall on aarch64 This fixes "git diff" (git-1:2.25.1-1ubuntu3). Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D30509 --- sys/arm64/linux/linux_machdep.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/sys/arm64/linux/linux_machdep.c b/sys/arm64/linux/linux_machdep.c index 711ccb4fd63d..80597a2922a7 100644 --- a/sys/arm64/linux/linux_machdep.c +++ b/sys/arm64/linux/linux_machdep.c @@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$"); LIN_SDT_PROVIDER_DECLARE(LINUX_DTRACE); /* DTrace probes */ -LIN_SDT_PROBE_DEFINE0(machdep, linux_set_upcall, todo); LIN_SDT_PROBE_DEFINE0(machdep, linux_mmap2, todo); LIN_SDT_PROBE_DEFINE0(machdep, linux_rt_sigsuspend, todo); LIN_SDT_PROBE_DEFINE0(machdep, linux_sigaltstack, todo); @@ -84,13 +83,19 @@ linux_execve(struct thread *td, struct linux_execve_args *uap) return (error); } -/* LINUXTODO: implement (or deduplicate) arm64 linux_set_upcall */ int linux_set_upcall(struct thread *td, register_t stack) { - LIN_SDT_PROBE0(machdep, linux_set_upcall, todo); - return (EDOOFUS); + if (stack) + td->td_frame->tf_sp = stack; + + /* + * The newly created Linux thread returns + * to the user space by the same path that a parent does. + */ + td->td_frame->tf_x[0] = 0; + return (0); } /* LINUXTODO: deduplicate arm64 linux_mmap2 */ From owner-dev-commits-src-all@freebsd.org Wed Jun 16 10:33:33 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 937F865F2DF; Wed, 16 Jun 2021 10:33:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4hNs3fTXz3MJX; Wed, 16 Jun 2021 10:33:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6591F1A23E; Wed, 16 Jun 2021 10:33:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GAXXjH041346; Wed, 16 Jun 2021 10:33:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GAXXpi041345; Wed, 16 Jun 2021 10:33:33 GMT (envelope-from git) Date: Wed, 16 Jun 2021 10:33:33 GMT Message-Id: <202106161033.15GAXXpi041345@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Edward Tomasz Napierala Subject: git: a397b5508320 - main - linux: implement set_cloned_tls() on arm64 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: trasz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a397b5508320e757274bc652b43ccb2e1a702933 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 10:33:33 -0000 The branch main has been updated by trasz: URL: https://cgit.FreeBSD.org/src/commit/?id=a397b5508320e757274bc652b43ccb2e1a702933 commit a397b5508320e757274bc652b43ccb2e1a702933 Author: Edward Tomasz Napierala AuthorDate: 2021-06-16 09:34:06 +0000 Commit: Edward Tomasz Napierala CommitDate: 2021-06-16 10:32:39 +0000 linux: implement set_cloned_tls() on arm64 This fixes random segfaults on "git commit --amend". Sponsored By: EPSRC Differential Revision: https://reviews.freebsd.org/D30508 --- sys/arm64/linux/linux_machdep.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/arm64/linux/linux_machdep.c b/sys/arm64/linux/linux_machdep.c index 80597a2922a7..8e10fc9d26a1 100644 --- a/sys/arm64/linux/linux_machdep.c +++ b/sys/arm64/linux/linux_machdep.c @@ -55,7 +55,6 @@ LIN_SDT_PROVIDER_DECLARE(LINUX_DTRACE); LIN_SDT_PROBE_DEFINE0(machdep, linux_mmap2, todo); LIN_SDT_PROBE_DEFINE0(machdep, linux_rt_sigsuspend, todo); LIN_SDT_PROBE_DEFINE0(machdep, linux_sigaltstack, todo); -LIN_SDT_PROBE_DEFINE0(machdep, linux_set_cloned_tls, todo); /* * LINUXTODO: deduplicate; linux_execve is common across archs, except that on @@ -141,11 +140,12 @@ linux_sigaltstack(struct thread *td, struct linux_sigaltstack_args *uap) return (EDOOFUS); } -/* LINUXTODO: implement arm64 linux_set_cloned_tls */ int linux_set_cloned_tls(struct thread *td, void *desc) { - LIN_SDT_PROBE0(machdep, linux_set_cloned_tls, todo); - return (EDOOFUS); + if ((uint64_t)desc >= VM_MAXUSER_ADDRESS) + return (EPERM); + + return (cpu_set_user_tls(td, desc)); } From owner-dev-commits-src-all@freebsd.org Wed Jun 16 10:42:26 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 79A7065F4F7; Wed, 16 Jun 2021 10:42:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4hb62P9rz3Mrr; Wed, 16 Jun 2021 10:42:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 371911A699; Wed, 16 Jun 2021 10:42:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GAgQLD054345; Wed, 16 Jun 2021 10:42:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GAgQ3T054344; Wed, 16 Jun 2021 10:42:26 GMT (envelope-from git) Date: Wed, 16 Jun 2021 10:42:26 GMT Message-Id: <202106161042.15GAgQ3T054344@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Andriy Gapon Subject: git: 118ff4e9b3f1 - stable/13 - rk3328_cru: fix a typo in the SCLK_I2S2 gate definition MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: avg X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 118ff4e9b3f1cb22bdb2ccdb05dc4c5092d16371 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 10:42:26 -0000 The branch stable/13 has been updated by avg: URL: https://cgit.FreeBSD.org/src/commit/?id=118ff4e9b3f1cb22bdb2ccdb05dc4c5092d16371 commit 118ff4e9b3f1cb22bdb2ccdb05dc4c5092d16371 Author: Andriy Gapon AuthorDate: 2021-06-09 07:44:41 +0000 Commit: Andriy Gapon CommitDate: 2021-06-16 10:42:12 +0000 rk3328_cru: fix a typo in the SCLK_I2S2 gate definition (cherry picked from commit ffc5dc788f05dec5fd11aff8f216c37cd56fcd7f) --- sys/arm64/rockchip/clk/rk3328_cru.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/arm64/rockchip/clk/rk3328_cru.c b/sys/arm64/rockchip/clk/rk3328_cru.c index e110564f773d..95a87cfd0e00 100644 --- a/sys/arm64/rockchip/clk/rk3328_cru.c +++ b/sys/arm64/rockchip/clk/rk3328_cru.c @@ -114,7 +114,7 @@ static struct rk_cru_gate rk3328_gates[] = { /* CRU_CLKGATE_CON1 */ CRU_GATE(SCLK_I2S0, "clk_i2s0", "clk_i2s0_mux", 0x204, 3) CRU_GATE(SCLK_I2S1, "clk_i2s1", "clk_i2s1_mux", 0x204, 6) - CRU_GATE(SCLK_I2S1, "clk_i2s2", "clk_i2s2_mux", 0x204, 10) + CRU_GATE(SCLK_I2S2, "clk_i2s2", "clk_i2s2_mux", 0x204, 10) /* CRU_CLKGATE_CON4 */ CRU_GATE(0, "gpll_peri", "gpll", 0x210, 0) From owner-dev-commits-src-all@freebsd.org Wed Jun 16 10:46:42 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EFF7565F73F; Wed, 16 Jun 2021 10:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4hh26Ng8z3N5p; Wed, 16 Jun 2021 10:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C3A731A708; Wed, 16 Jun 2021 10:46:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GAkgGk054760; Wed, 16 Jun 2021 10:46:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GAkgrD054759; Wed, 16 Jun 2021 10:46:42 GMT (envelope-from git) Date: Wed, 16 Jun 2021 10:46:42 GMT Message-Id: <202106161046.15GAkgrD054759@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Andriy Gapon Subject: git: e7ca75cb75be - stable/13 - rc.d: liberate powerd from ACPI dependency MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: avg X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e7ca75cb75be2aa6177face2b1220af09988f49f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 10:46:43 -0000 The branch stable/13 has been updated by avg: URL: https://cgit.FreeBSD.org/src/commit/?id=e7ca75cb75be2aa6177face2b1220af09988f49f commit e7ca75cb75be2aa6177face2b1220af09988f49f Author: Andriy Gapon AuthorDate: 2021-06-08 17:08:10 +0000 Commit: Andriy Gapon CommitDate: 2021-06-16 10:46:21 +0000 rc.d: liberate powerd from ACPI dependency For instance, many non-ACPI ARM systems have CPU power / frequency levels. (cherry picked from commit 20eb6bd8c598fdbf4e96ed4ca64a609be255ccba) --- libexec/rc/rc.d/Makefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index 1a61e89aa215..13ed6048efc0 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -80,6 +80,7 @@ CONFS= DAEMON \ pf \ pflog \ pfsync \ + powerd \ ppp \ pppoed \ pwcheck \ @@ -136,10 +137,6 @@ ACPI= power_profile ACPIPACKAGE= acpi .endif -.if ${MK_ACPI} != "no" || ${MK_APM} != "no" -CONFS+= powerd -.endif - .if ${MK_APM} != "no" CONFGROUPS+= APM APM+= apm From owner-dev-commits-src-all@freebsd.org Wed Jun 16 10:49:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6EEC365FA09; Wed, 16 Jun 2021 10:49:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4hlL2mWYz3NJ2; Wed, 16 Jun 2021 10:49:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 439881A4C9; Wed, 16 Jun 2021 10:49:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GAnYk3055067; Wed, 16 Jun 2021 10:49:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GAnYdd055066; Wed, 16 Jun 2021 10:49:34 GMT (envelope-from git) Date: Wed, 16 Jun 2021 10:49:34 GMT Message-Id: <202106161049.15GAnYdd055066@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Andriy Gapon Subject: git: 0dc7e55dcb0e - stable/12 - rc.d: liberate powerd from ACPI dependency MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: avg X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 0dc7e55dcb0e7fd6415bf50ec6b8e11bf0beb2c5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 10:49:34 -0000 The branch stable/12 has been updated by avg: URL: https://cgit.FreeBSD.org/src/commit/?id=0dc7e55dcb0e7fd6415bf50ec6b8e11bf0beb2c5 commit 0dc7e55dcb0e7fd6415bf50ec6b8e11bf0beb2c5 Author: Andriy Gapon AuthorDate: 2021-06-08 17:08:10 +0000 Commit: Andriy Gapon CommitDate: 2021-06-16 10:49:11 +0000 rc.d: liberate powerd from ACPI dependency For instance, many non-ACPI ARM systems have CPU power / frequency levels. (cherry picked from commit 20eb6bd8c598fdbf4e96ed4ca64a609be255ccba) --- libexec/rc/rc.d/Makefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile index e4c426290d4e..f6e6c437fece 100644 --- a/libexec/rc/rc.d/Makefile +++ b/libexec/rc/rc.d/Makefile @@ -84,6 +84,7 @@ CONFS= DAEMON \ pf \ pflog \ pfsync \ + powerd \ ppp \ pppoed \ pwcheck \ @@ -141,10 +142,6 @@ ACPI= power_profile ACPIPACKAGE= acpi .endif -.if ${MK_ACPI} != "no" || ${MK_APM} != "no" -CONFS+= powerd -.endif - .if ${MK_AMD} != "no" CONFGROUPS+= AMD AMD+= amd From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:26:18 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8F78D660999; Wed, 16 Jun 2021 11:26:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4jYk3hWnz3QnH; Wed, 16 Jun 2021 11:26:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6313E1A9F8; Wed, 16 Jun 2021 11:26:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBQIev008237; Wed, 16 Jun 2021 11:26:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBQIi6008236; Wed, 16 Jun 2021 11:26:18 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:26:18 GMT Message-Id: <202106161126.15GBQIi6008236@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 7d243608d516 - stable/13 - tests/netgraph: Tests for ng_hub MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7d243608d516ba421fe603b57fd430beba441eef Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:26:18 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=7d243608d516ba421fe603b57fd430beba441eef commit 7d243608d516ba421fe603b57fd430beba441eef Author: Lutz Donnerhacke AuthorDate: 2021-06-03 22:22:29 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:25:01 +0000 tests/netgraph: Tests for ng_hub Test functionality of ng_hub(4): - replicting traffic to anything but the sending hook - persistence - an unrestricted loop - implementation limits with many hooks. Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30633 (cherry picked from commit 7863faa78ae271017c404c635b2a9d07379d4316) --- tests/sys/netgraph/Makefile | 2 + tests/sys/netgraph/hub.c | 231 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 233 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 7376cb5c1227..2ae9882b2bc3 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -12,9 +12,11 @@ TEST_METADATA.ng_macfilter_test+= required_programs="perl" ATF_TESTS_C+= basic \ bridge \ + hub \ SRCS.basic= basic.c util.c SRCS.bridge= bridge.c util.c +SRCS.hub= hub.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/hub.c b/tests/sys/netgraph/hub.c new file mode 100644 index 000000000000..08d083ad9605 --- /dev/null +++ b/tests/sys/netgraph/hub.c @@ -0,0 +1,231 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include "util.h" + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + ng_connect(".", "b", "hub:", "b"); + ng_connect(".", "c", "hub:", "c"); + + /* do not bounce back */ + ng_register_data("a", get_data0); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 0); + + /* send to others */ + ng_register_data("b", get_data0); + ng_register_data("c", get_data0); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + ng_counter_clear(r); + ng_send_data("b", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + ng_counter_clear(r); + ng_send_data("c", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + /* remove a link */ + ng_rmhook(".", "b"); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 1); + + ng_shutdown("hub:"); +} + +ATF_TC(persistence); +ATF_TC_HEAD(persistence, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(persistence, dummy) +{ + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + + ng_send_msg("hub:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("hub:"); +} + +ATF_TC(loop); +ATF_TC_HEAD(loop, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(loop, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "LOOP Alert!"; + + ng_errors(PASS); + ng_shutdown("hub1:"); + ng_shutdown("hub2:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub1"); + ng_mkpeer(".", "b", "hub", "b"); + ng_name("b", "hub2"); + + ng_register_data("a", get_data0); + ng_register_data("b", get_data0); + + /*- + * Open loop + * + * /-- hub1 + * . < | + * \-- hub2 + */ + ng_connect("hub1:", "xc1", "hub2:", "xc1"); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 1); + + /*- + * Closed loop, DANGEROUS! + * + * /-- hub1 -\ + * . < | | + * \-- hub2 -/ + */ + ng_connect("hub1:", "xc2", "hub2:", "xc2"); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + for (i = 0; i < 10; i++) /* don't run forever */ + if (!ng_handle_event(50, r)) + break; + ATF_CHECK(r[0] > 7); + + ng_shutdown("hub1:"); + ng_shutdown("hub2:"); +} + +ATF_TC(many_hooks); +ATF_TC_HEAD(many_hooks, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_hooks, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "test"; + const int HOOKS = 1000; + + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + + ng_register_data("a", get_data0); + ng_counter_clear(r); + for (i = 0; i < HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "hook%d", i); + ng_connect(".", hook, "hub:", hook); + ng_errors(PASS); + ng_send_data(hook, msg, sizeof(msg)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, r); + } + ATF_CHECK(r[0] > 100); + atf_tc_expect_fail("Implementation limitation (%d)", i); + ATF_CHECK(r[0] == HOOKS); + atf_tc_expect_pass(); + + ng_shutdown("hub:"); +} + + +ATF_TP_ADD_TCS(hub) +{ + ATF_TP_ADD_TC(hub, basic); + ATF_TP_ADD_TC(hub, loop); + ATF_TP_ADD_TC(hub, persistence); + ATF_TP_ADD_TC(hub, many_hooks); + + return atf_no_error(); +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:26:19 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A6EF366091D; Wed, 16 Jun 2021 11:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4jYl45Tmz3QqJ; Wed, 16 Jun 2021 11:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 72EC61A9F9; Wed, 16 Jun 2021 11:26:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBQJRs008261; Wed, 16 Jun 2021 11:26:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBQJur008260; Wed, 16 Jun 2021 11:26:19 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:26:19 GMT Message-Id: <202106161126.15GBQJur008260@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 053937ce6e1a - stable/13 - tests/netgraph: Tests for ng_vlan_rotate MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 053937ce6e1a72a72f8845c0dc8a10be71fea336 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:26:19 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=053937ce6e1a72a72f8845c0dc8a10be71fea336 commit 053937ce6e1a72a72f8845c0dc8a10be71fea336 Author: Lutz Donnerhacke AuthorDate: 2021-06-06 23:56:12 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:25:04 +0000 tests/netgraph: Tests for ng_vlan_rotate Test functionality of ng_vlan_rotate(4): - Rotate 1 to 9 stagged vlans in any possible direction and length - Rotate random combinations of ethertypes (8100, 88a8, 9100) - Automatic reverse rotating for backward data flow - Test too many and too few vlans Reviewed by: kp (earlier version) Differential Revision: https://reviews.freebsd.org/D30670 (cherry picked from commit 6b08e68be111d50931b0d30145f8b7e3402decaf) --- tests/sys/netgraph/Makefile | 8 +- tests/sys/netgraph/vlan_rotate.c | 335 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+), 3 deletions(-) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 2ae9882b2bc3..f397e66a22bc 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -10,13 +10,15 @@ TAP_TESTS_SH+= ng_macfilter_test TEST_METADATA.ng_macfilter_test+= required_user="root" TEST_METADATA.ng_macfilter_test+= required_programs="perl" -ATF_TESTS_C+= basic \ - bridge \ - hub \ +ATF_TESTS_C+= basic \ + bridge \ + hub \ + vlan_rotate \ SRCS.basic= basic.c util.c SRCS.bridge= bridge.c util.c SRCS.hub= hub.c util.c +SRCS.vlan_rotate=vlan_rotate.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/vlan_rotate.c b/tests/sys/netgraph/vlan_rotate.c new file mode 100644 index 000000000000..8df3ab981a7c --- /dev/null +++ b/tests/sys/netgraph/vlan_rotate.c @@ -0,0 +1,335 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include +#include + +#include +#include + +#include "util.h" +#include + +struct vlan +{ + uint16_t proto; + uint16_t tag; +} __packed; + +struct frame +{ + u_char dst[ETHER_ADDR_LEN]; + u_char src[ETHER_ADDR_LEN]; + struct vlan vlan[10]; +} __packed; + +static struct frame msg = { + .src = {2, 4, 6, 1, 3, 5}, + .dst = {2, 4, 6, 1, 3, 7}, + .vlan[0] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(1, 0, 0))}, + .vlan[1] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(2, 0, 0))}, + .vlan[2] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(3, 0, 0))}, + .vlan[3] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(4, 0, 0))}, + .vlan[4] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(5, 0, 0))}, + .vlan[5] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(6, 0, 0))}, + .vlan[6] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(7, 0, 0))}, + .vlan[7] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(8, 0, 0))}, + .vlan[8] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(9, 0, 0))}, + .vlan[9] = {0} +}; + +static void _basic(int); +static void get_vlan(void *data, size_t len, void *ctx); + +static void +get_vlan(void *data, size_t len, void *ctx) +{ + int *v = ctx, i; + struct frame *f = data; + + (void)len; + for (i = 0; i < 10; i++) + v[i] = EVL_VLANOFTAG(ntohs(f->vlan[i].tag)); +} + +static void +_basic(int direction) +{ + int r[10]; + int i, rot, len; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", direction > 0 ? "original" : "ordered"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", direction > 0 ? "ordered" : "original"); + ng_register_data("b", get_vlan); + + for (len = 9; len > 0; len--) + { + /* reduce the number of vlans */ + msg.vlan[len].proto = htons(ETHERTYPE_IP); + + for (rot = -len + 1; rot < len; rot++) + { + char cmd[40]; + + /* set rotation offset */ + snprintf(cmd, sizeof(cmd), "setconf { min=0 max=9 rot=%d }", rot); + ng_send_msg("vr:", cmd); + + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + + /* check rotation */ + for (i = 0; i < len; i++) + { + int expect = (2 * len + i - direction * rot) % len + 1; + int vlan = r[i]; + + ATF_CHECK_MSG(vlan == expect, + "len=%d rot=%d i=%d -> vlan=%d, expect=%d", + len, rot, i, r[i], expect); + } + } + } + + ng_shutdown("vr:"); +} + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + _basic(1); +} + +ATF_TC(reverse); +ATF_TC_HEAD(reverse, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(reverse, dummy) +{ + _basic(-1); +} + +static void _ethertype(int); +static void get_ethertype(void *data, size_t len, void *ctx); + +static void +get_ethertype(void *data, size_t len, void *ctx) +{ + int *v = ctx, i; + struct frame *f = data; + + (void)len; + for (i = 0; i < 10; i++) + v[i] = ntohs(f->vlan[i].proto); +} + +static void +_ethertype(int direction) +{ + int r[10]; + int i, rounds = 20; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", direction > 0 ? "original" : "ordered"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", direction > 0 ? "ordered" : "original"); + ng_register_data("b", get_ethertype); + + while (rounds-- > 0) + { + char cmd[40]; + int len = 9; + int rot = rand() % (2 * len - 1) - len + 1; + int vlan[10]; + + for (i = 0; i < len; i++) + { + switch (rand() % 3) + { + default: + msg.vlan[i].proto = htons(ETHERTYPE_VLAN); + break; + case 1: + msg.vlan[i].proto = htons(ETHERTYPE_QINQ); + break; + case 2: + msg.vlan[i].proto = htons(ETHERTYPE_8021Q9100); + break; + } + } + msg.vlan[i].proto = htons(ETHERTYPE_IP); + + for (i = 0; i < len; i++) + vlan[i] = msg.vlan[i].proto; + + snprintf(cmd, sizeof(cmd), "setconf { min=0 max=9 rot=%d }", rot); + ng_send_msg("vr:", cmd); + + bzero(r, sizeof(r)); + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + + /* check rotation */ + for (i = 0; i < len; i++) + { + int expect = (2 * len + i - direction * rot) % len; + + ATF_CHECK_MSG(r[i] == ntohs(vlan[expect]), + "len=%d rot=%d i=%d -> vlan=%04x, expect(%d)=%04x", + len, rot, i, ntohs(r[i]), expect, vlan[expect]); + } + } + + ng_shutdown("vr:"); +} + +ATF_TC(ethertype); +ATF_TC_HEAD(ethertype, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(ethertype, dummy) +{ + _ethertype(1); +} + +ATF_TC(typeether); +ATF_TC_HEAD(typeether, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(typeether, dummy) +{ + _ethertype(-1); +} + +ATF_TC(minmax); +ATF_TC_HEAD(minmax, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(minmax, dummy) +{ + ng_counter_t r; + int len; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", "original"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", "ordered"); + ng_connect(".", "c", "vr:", "excessive"); + ng_connect(".", "d", "vr:", "incomplete"); + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + ng_register_data("d", get_data3); + + ng_send_msg("vr:", "setconf { min=3 max=7 rot=0 }"); + for (len = 9; len > 0; len--) + { + /* reduce the number of vlans */ + msg.vlan[len].proto = htons(ETHERTYPE_IP); + + ng_counter_clear(r); + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + if (len < 3) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 0 && r[3] == 1); + else if (len > 7) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + else + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("b", &msg, sizeof(msg)); + ng_handle_events(50, &r); + if (len < 3) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 0 && r[3] == 1); + else if (len > 7) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + else + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("c", &msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("d", &msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + } + + ng_shutdown("vr:"); +} + +ATF_TP_ADD_TCS(vlan_rotate) +{ + /* Use "dd if=/dev/random bs=2 count=1 | od -x" to reproduce */ + srand(0xb93b); + + ATF_TP_ADD_TC(vlan_rotate, basic); + ATF_TP_ADD_TC(vlan_rotate, ethertype); + ATF_TP_ADD_TC(vlan_rotate, reverse); + ATF_TP_ADD_TC(vlan_rotate, typeether); + ATF_TP_ADD_TC(vlan_rotate, minmax); + + return atf_no_error(); +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:45:59 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B639E660D26; Wed, 16 Jun 2021 11:45:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k0R0cQkz3jJQ; Wed, 16 Jun 2021 11:45:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EC9A51AD7E; Wed, 16 Jun 2021 11:45:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBjwSn035326; Wed, 16 Jun 2021 11:45:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBjwIs035325; Wed, 16 Jun 2021 11:45:58 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:45:58 GMT Message-Id: <202106161145.15GBjwIs035325@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 49a07e3d08a0 - stable/12 - tests/netgraph: Prebuild tests directory MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 49a07e3d08a0d7126fb759ea394a629a14e914f9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:45:59 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=49a07e3d08a0d7126fb759ea394a629a14e914f9 commit 49a07e3d08a0d7126fb759ea394a629a14e914f9 Author: Lutz Donnerhacke AuthorDate: 2021-06-16 11:37:51 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:44:15 +0000 tests/netgraph: Prebuild tests directory (partially cherry picked from commit e8db04c38959c882fe17e7c2b26fbabe74f26311) --- tests/sys/Makefile | 1 + tests/sys/netgraph/Makefile | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/tests/sys/Makefile b/tests/sys/Makefile index 2d3b26f0f1aa..2bf51bcd3fd7 100644 --- a/tests/sys/Makefile +++ b/tests/sys/Makefile @@ -18,6 +18,7 @@ TESTS_SUBDIRS+= kern TESTS_SUBDIRS+= kqueue TESTS_SUBDIRS+= mac TESTS_SUBDIRS+= mqueue +TESTS_SUBDIRS+= netgraph TESTS_SUBDIRS+= netinet TESTS_SUBDIRS+= netinet6 TESTS_SUBDIRS+= netipsec diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile new file mode 100644 index 000000000000..e6a9d6fbf338 --- /dev/null +++ b/tests/sys/netgraph/Makefile @@ -0,0 +1,8 @@ +# $FreeBSD$ + +PACKAGE= tests + +TESTSDIR= ${TESTSBASE}/sys/netgraph +BINDIR= ${TESTSDIR} + +.include From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:46:01 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6431D660E9B; Wed, 16 Jun 2021 11:46:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k0T20Dmz3jRC; Wed, 16 Jun 2021 11:46:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 280401B0EC; Wed, 16 Jun 2021 11:46:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBk1o6035376; Wed, 16 Jun 2021 11:46:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBk1F2035375; Wed, 16 Jun 2021 11:46:01 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:46:01 GMT Message-Id: <202106161146.15GBk1F2035375@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: da49f6099185 - stable/12 - tests/netgraph: Tests for ng_bridge MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: da49f60991854f2c0e6fac56a574fad0447ae844 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:46:01 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=da49f60991854f2c0e6fac56a574fad0447ae844 commit da49f60991854f2c0e6fac56a574fad0447ae844 Author: Lutz Donnerhacke AuthorDate: 2021-06-04 10:59:00 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:44:15 +0000 tests/netgraph: Tests for ng_bridge Test functionality of ng_bridge(4): - replicating traffic to anything but the sending hook - persistence - detect loops - unicast to only one link of many - stretch to implementation limits on broadcast Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30647 Differential Revision: https://reviews.freebsd.org/D30699 (cherry picked from commit 61814702398ce29430b2bef75cbdd6fd2c07ad12) (cherry picked from commit 5554abd9cc9702af30af90925b33c5efff4e7d88) --- tests/sys/netgraph/Makefile | 2 + tests/sys/netgraph/bridge.c | 632 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 634 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index a28cae2f2432..7ec036139850 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -6,8 +6,10 @@ TESTSDIR= ${TESTSBASE}/sys/netgraph BINDIR= ${TESTSDIR} ATF_TESTS_C+= basic \ + bridge \ SRCS.basic= basic.c util.c +SRCS.bridge= bridge.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/bridge.c b/tests/sys/netgraph/bridge.c new file mode 100644 index 000000000000..3e3c0f804278 --- /dev/null +++ b/tests/sys/netgraph/bridge.c @@ -0,0 +1,632 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include +#include +#include +#include + +#include "util.h" +#include + +static void get_tablesize(char const *source, struct ng_mesg *msg, void *ctx); +struct gettable +{ + u_int32_t tok; + int cnt; +}; + +struct frame4 +{ + struct ether_header eh; + struct ip ip; + char data[64]; +}; +struct frame6 +{ + struct ether_header eh; + struct ip6_hdr ip; + char data[64]; +}; + +static struct frame4 msg4 = { + .ip.ip_v = 4, + .ip.ip_hl = 5, + .ip.ip_ttl = 1, + .ip.ip_p = 254, + .ip.ip_src = {htonl(0x0a00dead)}, + .ip.ip_dst = {htonl(0x0a00beef)}, + .ip.ip_len = 32, + .eh.ether_type = ETHERTYPE_IP, + .eh.ether_shost = {2, 4, 6}, + .eh.ether_dhost = {2, 4, 6}, +}; + + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_connect(".", "b", "bridge:", "link1"); + ng_connect(".", "c", "bridge:", "link2"); + + /* do not bounce back */ + ng_register_data("a", get_data0); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* send to others */ + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + ng_send_data("b", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + ng_send_data("c", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 1 && r[2] == 0); + + /* send to learned unicast */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 3; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 3); + + /* remove a link */ + ng_rmhook(".", "b"); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TC(persistence); +ATF_TC_HEAD(persistence, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(persistence, dummy) +{ + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + + ng_send_msg("bridge:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("bridge:"); +} + +ATF_TC(loop); +ATF_TC_HEAD(loop, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(loop, dummy) +{ + ng_counter_t r; + int i; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge1:"); + ng_shutdown("bridge2:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge1"); + ng_mkpeer(".", "b", "bridge", "link1"); + ng_name("b", "bridge2"); + + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + + /*- + * Open loop + * + * /-- bridge1 + * . < | + * \-- bridge2 + */ + ng_connect("bridge1:", "link11", "bridge2:", "link11"); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1); + + /*- + * Closed loop, DANGEROUS! + * + * /-- bridge1 -\ + * . < | | + * \-- bridge2 -/ + */ + ng_connect("bridge1:", "link12", "bridge2:", "link12"); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_errors(PASS); + ng_send_data("a", &msg4, sizeof(msg4)); + ATF_CHECK_ERRNO(ELOOP, errno != 0); /* loop might be detected */ + ng_errors(FAIL); + for (i = 0; i < 10; i++) /* don't run forever */ + if (!ng_handle_event(50, &r)) + break; + ATF_CHECK(r[0] == 0 && r[1] == 1); + + ng_shutdown("bridge1:"); + ng_shutdown("bridge2:"); +} + +ATF_TC(many_unicasts); +ATF_TC_HEAD(many_unicasts, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_unicasts, dummy) +{ + ng_counter_t r; + int i; + const int HOOKS = 1000; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_register_data("a", get_data0); + + /* learn MAC */ + ng_counter_clear(r); + msg4.eh.ether_shost[3] = 0xff; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* use learned MAC as destination */ + msg4.eh.ether_shost[3] = 0; + msg4.eh.ether_dhost[3] = 0xff; + + /* now send */ + ng_counter_clear(r); + for (i = 1; i <= HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "link%d", i); + ng_connect(".", hook, "bridge:", hook); + ng_register_data(hook, get_data2); + + msg4.eh.ether_shost[4] = i >> 8; + msg4.eh.ether_shost[5] = i & 0xff; + ng_errors(PASS); + ng_send_data(hook, &msg4, sizeof(msg4)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, &r); + } + ATF_CHECK(r[0] == HOOKS && r[2] == 0); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.cnt = 0; + ng_errors(PASS); + rm.tok = ng_send_msg("bridge:", "gettable"); + ng_errors(FAIL); + if (rm.tok == (u_int32_t)-1) + { + ATF_CHECK_ERRNO(ENOBUFS, 1); + atf_tc_expect_fail("response too large"); + } + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == HOOKS + 1); + atf_tc_expect_pass(); + + ng_shutdown("bridge:"); +} + +ATF_TC(many_broadcasts); +ATF_TC_HEAD(many_broadcasts, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_broadcasts, dummy) +{ + ng_counter_t r; + int i; + const int HOOKS = 1000; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_register_data("a", get_data0); + + /* learn MAC */ + ng_counter_clear(r); + msg4.eh.ether_shost[3] = 0xff; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* use broadcast MAC */ + msg4.eh.ether_shost[3] = 0; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + + /* now send */ + ng_counter_clear(r); + for (i = 1; i <= HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "link%d", i); + ng_connect(".", hook, "bridge:", hook); + ng_register_data(hook, get_data3); + + msg4.eh.ether_shost[4] = i >> 8; + msg4.eh.ether_shost[5] = i & 0xff; + ng_errors(PASS); + ng_send_data(hook, &msg4, sizeof(msg4)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, &r); + } + ATF_CHECK(r[0] > 100 && r[3] > 100); + if (i < HOOKS) + atf_tc_expect_fail("netgraph queue full (%d)", i); + ATF_CHECK(r[0] == HOOKS); + atf_tc_expect_pass(); + + ng_shutdown("bridge:"); +} + +ATF_TC(uplink_private); +ATF_TC_HEAD(uplink_private, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(uplink_private, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + + ng_mkpeer(".", "u1", "bridge", "uplink1"); + if (errno > 0) + atf_tc_skip("uplinks are not supported."); + ng_errors(FAIL); + ng_name("u1", "bridge"); + ng_register_data("u1", get_data1); + ng_connect(".", "u2", "bridge:", "uplink2"); + ng_register_data("u2", get_data2); + ng_connect(".", "l0", "bridge:", "link0"); + ng_register_data("l0", get_data0); + ng_connect(".", "l3", "bridge:", "link3"); + ng_register_data("l3", get_data3); + + /* unknown unicast 0 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + + /* unknown unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 0); + + /* known unicast 0 from uplink2 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("u2", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* known unicast 0 from link3 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("l3", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* (un)known unicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + + /* (un)known unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 0); + + /* unknown multicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[0] = 0xff; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* broadcast from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* broadcast from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TC(uplink_classic); +ATF_TC_HEAD(uplink_classic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(uplink_classic, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + + ng_mkpeer(".", "l0", "bridge", "link0"); + if (errno > 0) + atf_tc_skip("uplinks are not supported."); + ng_errors(FAIL); + ng_name("l0", "bridge"); + ng_register_data("l0", get_data0); + ng_connect(".", "u1", "bridge:", "uplink1"); + ng_register_data("u1", get_data1); + ng_connect(".", "u2", "bridge:", "uplink2"); + ng_register_data("u2", get_data2); + ng_connect(".", "l3", "bridge:", "link3"); + ng_register_data("l3", get_data3); + + /* unknown unicast 0 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* known unicast 0 from uplink2 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("u2", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* known unicast 0 from link3 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("l3", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* (un)known unicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* (un)known unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[0] = 0xff; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* broadcast from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* broadcast from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TP_ADD_TCS(bridge) +{ + ATF_TP_ADD_TC(bridge, basic); + ATF_TP_ADD_TC(bridge, loop); + ATF_TP_ADD_TC(bridge, persistence); + ATF_TP_ADD_TC(bridge, many_unicasts); + ATF_TP_ADD_TC(bridge, many_broadcasts); + ATF_TP_ADD_TC(bridge, uplink_private); + ATF_TP_ADD_TC(bridge, uplink_classic); + + return atf_no_error(); +} + +static void +get_tablesize(char const *source, struct ng_mesg *msg, void *ctx) +{ + struct gettable *rm = ctx; + struct ng_bridge_host_ary *gt = (void *)msg->data; + + fprintf(stderr, "Response from %s to query %d\n", source, msg->header.token); + if (rm->tok == msg->header.token) + rm->cnt = gt->numHosts; +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:46:00 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 36E4C660E4A; Wed, 16 Jun 2021 11:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k0S15y1z3jD9; Wed, 16 Jun 2021 11:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0E3DA1B240; Wed, 16 Jun 2021 11:46:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBjx6I035352; Wed, 16 Jun 2021 11:45:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBjxq3035351; Wed, 16 Jun 2021 11:45:59 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:45:59 GMT Message-Id: <202106161145.15GBjxq3035351@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 2def89063412 - stable/12 - tests/netgraph: Inital framework for testing libnetgraph MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 2def8906341231cd6b3647756c182f60d114deee Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:46:00 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=2def8906341231cd6b3647756c182f60d114deee commit 2def8906341231cd6b3647756c182f60d114deee Author: Lutz Donnerhacke AuthorDate: 2021-06-02 22:29:46 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:44:15 +0000 tests/netgraph: Inital framework for testing libnetgraph Provide a framework of functions to test various netgraph modules. Tests contain: - creating, renaming, and destroying nodes - connecting and removing hooks - sending and receiving data - sending ASCII messages and receiving binary responses - errors can be passed for indiviual inspection or fail the test Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30629 Differential Revision: https://reviews.freebsd.org/D30657 Differential Revision: https://reviews.freebsd.org/D30671 Differential Revision: https://reviews.freebsd.org/D30699 (cherry picked from commit 24ea1dbf257aa6757f469bcd859f90e9ad851e59) (cherry picked from commit 09307dbfb888a98232096c751a96ecb3344aa77c) (cherry picked from commit 9021c46603bf29b9700f24b8dce8796b434d7c8f) (cherry picked from commit 5554abd9cc9702af30af90925b33c5efff4e7d88) Also contains some fixups: - indent all files correctly - finish factoring out - remove debugging code - check for renaming issues reported in PR241954 PR: 241954 Differential Revision: https://reviews.freebsd.org/D30692 Differential Revision: https://reviews.freebsd.org/D30714 Differential Revision: https://reviews.freebsd.org/D30713 (cherry picked from commit a664ade93972ce617f0888ff79e715dff9cf0f87) (cherry picked from commit 0afa9be03937d60cb5aeba64c81e3e2165bd3737) (cherry picked from commit 43e4821315c31db067e23564b9bfafb519e77b2b) --- tests/sys/netgraph/Makefile | 6 + tests/sys/netgraph/basic.c | 191 ++++++++++++++++++++++++++++++ tests/sys/netgraph/util.c | 277 ++++++++++++++++++++++++++++++++++++++++++++ tests/sys/netgraph/util.h | 114 ++++++++++++++++++ 4 files changed, 588 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index e6a9d6fbf338..a28cae2f2432 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -5,4 +5,10 @@ PACKAGE= tests TESTSDIR= ${TESTSBASE}/sys/netgraph BINDIR= ${TESTSDIR} +ATF_TESTS_C+= basic \ + +SRCS.basic= basic.c util.c + +LIBADD+= netgraph + .include diff --git a/tests/sys/netgraph/basic.c b/tests/sys/netgraph/basic.c new file mode 100644 index 000000000000..573422add694 --- /dev/null +++ b/tests/sys/netgraph/basic.c @@ -0,0 +1,191 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include "util.h" + +ATF_TC(send_recv); +ATF_TC_HEAD(send_recv, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(send_recv, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_init(); + ng_connect(".", "a", ".", "b"); + ng_register_data("b", get_data0); + ng_send_data("a", msg, sizeof(msg)); + + ng_counter_clear(r); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1); +} + +ATF_TC(node); +ATF_TC_HEAD(node, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(node, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test hub"); + + ng_errors(PASS); + ng_name("a", "test hub"); + ng_errors(FAIL); + if (errno == EADDRINUSE) + atf_tc_expect_fail("PR241954"); + ATF_CHECK_ERRNO(0, 1); + atf_tc_expect_pass(); + + ng_connect(".", "b", "test hub:", "b"); + ng_connect(".", "c", "test hub:", "c"); + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1); + + ng_rmhook(".", "b"); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + ng_shutdown("test hub:"); +} + +ATF_TC(message); +ATF_TC_HEAD(message, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(message, dummy) +{ + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test hub"); + + ng_send_msg("test hub:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("test hub:"); +} + +ATF_TC(same_name); +ATF_TC_HEAD(same_name, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(same_name, dummy) +{ + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test"); + + ng_errors(PASS); + ng_connect(".", "a", ".", "b"); + ATF_CHECK_ERRNO(EEXIST, 1); + ng_connect(".", "b", ".", "b"); + ATF_CHECK_ERRNO(EEXIST, 1); + ng_name(".", "test"); + ATF_CHECK_ERRNO(EADDRINUSE, 1); + + ng_errors(FAIL); + ng_shutdown("test:"); +} + +ATF_TC(queuelimit); +ATF_TC_HEAD(queuelimit, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(queuelimit, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "test"; + const int MAX = 1000; + + ng_init(); + ng_connect(".", "a", ".", "b"); + ng_register_data("b", get_data0); + + ng_errors(PASS); + for (i = 0; i < MAX; i++) + { + ng_send_data("a", msg, sizeof(msg)); + if (errno != 0) + break; + /* no ng_handle_events -> messages stall */ + } + ng_errors(FAIL); + + ng_counter_clear(r); + ng_handle_events(50, &r); + ATF_CHECK(r[0] > 100); + ATF_CHECK(r[0] == i); + atf_tc_expect_fail("Queue full (%d)", i); + ATF_CHECK(r[0] == MAX); + atf_tc_expect_pass(); +} + +ATF_TP_ADD_TCS(basic) +{ + ATF_TP_ADD_TC(basic, send_recv); + ATF_TP_ADD_TC(basic, node); + ATF_TP_ADD_TC(basic, message); + ATF_TP_ADD_TC(basic, same_name); + ATF_TP_ADD_TC(basic, queuelimit); + + return atf_no_error(); +} diff --git a/tests/sys/netgraph/util.c b/tests/sys/netgraph/util.c new file mode 100644 index 000000000000..b25e63dfa76d --- /dev/null +++ b/tests/sys/netgraph/util.c @@ -0,0 +1,277 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include +#include + +#include +#include + +#include "util.h" + + +static int cs = -1, ds = -1; +static ng_error_t error_handling = FAIL; + +#define CHECK(r, x) do { \ + if (!(x)) { \ + if (error_handling == PASS) \ + return r; \ + atf_tc_fail_requirement(file, line, "%s (%s)", \ + #x " not met", strerror(errno));\ + } \ +} while(0) + +struct data_handler +{ + char const *hook; + ng_data_handler_t handler; + SLIST_ENTRY(data_handler) next; +}; +static SLIST_HEAD(, data_handler) data_head = SLIST_HEAD_INITIALIZER(data_head); +static ng_msg_handler_t msg_handler = NULL; + +static void handle_data(void *ctx); +static void handle_msg(void *ctx); + +void +_ng_connect(char const *path1, char const *hook1, + char const *path2, char const *hook2, + char const *file, size_t line) +{ + struct ngm_connect c; + + strncpy(c.ourhook, hook1, sizeof(c.ourhook)); + strncpy(c.peerhook, hook2, sizeof(c.peerhook)); + strncpy(c.path, path2, sizeof(c.path)); + + CHECK(, -1 != NgSendMsg(cs, path1, + NGM_GENERIC_COOKIE, NGM_CONNECT, + &c, sizeof(c))); +} + +void +_ng_mkpeer(char const *path1, char const *hook1, + char const *type, char const *hook2, + char const *file, size_t line) +{ + struct ngm_mkpeer p; + + strncpy(p.ourhook, hook1, sizeof(p.ourhook)); + strncpy(p.peerhook, hook2, sizeof(p.peerhook)); + strncpy(p.type, type, sizeof(p.type)); + + CHECK(, -1 != NgSendMsg(cs, path1, + NGM_GENERIC_COOKIE, NGM_MKPEER, + &p, sizeof(p))); +} + +void +_ng_rmhook(char const *path, char const *hook, + char const *file, size_t line) +{ + struct ngm_rmhook h; + + strncpy(h.ourhook, hook, sizeof(h.ourhook)); + + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_RMHOOK, + &h, sizeof(h))); +} + +void +_ng_name(char const *path, char const *name, + char const *file, size_t line) +{ + struct ngm_name n; + + strncpy(n.name, name, sizeof(n.name)); + + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_NAME, + &n, sizeof(n))); +} + +void +_ng_shutdown(char const *path, + char const *file, size_t line) +{ + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_SHUTDOWN, + NULL, 0)); +} + +void +ng_register_data(char const *hook, ng_data_handler_t proc) +{ + struct data_handler *p; + + ATF_REQUIRE(NULL != (p = calloc(1, sizeof(struct data_handler)))); + ATF_REQUIRE(NULL != (p->hook = strdup(hook))); + ATF_REQUIRE(NULL != (p->handler = proc)); + SLIST_INSERT_HEAD(&data_head, p, next); +} + +void +_ng_send_data(char const *hook, + void const *data, size_t len, + char const *file, size_t line) +{ + CHECK(, -1 != NgSendData(ds, hook, data, len)); +} + +void +ng_register_msg(ng_msg_handler_t proc) +{ + msg_handler = proc; +} + +static void +handle_msg(void *ctx) +{ + struct ng_mesg *m; + char path[NG_PATHSIZ]; + + ATF_REQUIRE(-1 != NgAllocRecvMsg(cs, &m, path)); + + if (msg_handler != NULL) + (*msg_handler) (path, m, ctx); + + free(m); +} + +static void +handle_data(void *ctx) +{ + char hook[NG_HOOKSIZ]; + struct data_handler *hnd; + u_char *data; + int len; + + ATF_REQUIRE(0 < (len = NgAllocRecvData(ds, &data, hook))); + SLIST_FOREACH(hnd, &data_head, next) + { + if (0 == strcmp(hnd->hook, hook)) + break; + } + + if (hnd != NULL) + (*(hnd->handler)) (data, len, ctx); + + free(data); +} + +int +ng_handle_event(unsigned int ms, void *context) +{ + fd_set fds; + int maxfd = (ds < cs) ? cs : ds; + struct timeval timeout = {0, ms * 1000lu}; + + FD_ZERO(&fds); + FD_SET(cs, &fds); + FD_SET(ds, &fds); +retry: + switch (select(maxfd + 1, &fds, NULL, NULL, &timeout)) + { + case -1: + ATF_REQUIRE_ERRNO(EINTR, 1); + goto retry; + case 0: /* timeout */ + return 0; + default: /* something to do */ + if (FD_ISSET(cs, &fds)) + handle_msg(context); + if (FD_ISSET(ds, &fds)) + handle_data(context); + return 1; + } +} + +void +ng_handle_events(unsigned int ms, void *context) +{ + while (ng_handle_event(ms, context)) + ; +} + +int +_ng_send_msg(char const *path, char const *msg, + char const *file, size_t line) +{ + int res; + + CHECK(-1, -1 != (res = NgSendAsciiMsg(cs, path, "%s", msg))); + return (res); +} + +ng_error_t +ng_errors(ng_error_t n) +{ + ng_error_t o = error_handling; + + error_handling = n; + return (o); +} + +void +_ng_init(char const *file, size_t line) +{ + if (cs >= 0) /* prevent reinit */ + return; + + CHECK(, 0 == NgMkSockNode(NULL, &cs, &ds)); + NgSetDebug(3); +} + +#define GD(x) void \ +get_data##x(void *data, size_t len, void *ctx) {\ + int *cnt = ctx; \ + \ + (void)data; \ + (void)len; \ + cnt[x]++; \ +} + +GD(0) +GD(1) +GD(2) +GD(3) +GD(4) +GD(5) +GD(6) +GD(7) +GD(8) +GD(9) diff --git a/tests/sys/netgraph/util.h b/tests/sys/netgraph/util.h new file mode 100644 index 000000000000..44c9f3a360a7 --- /dev/null +++ b/tests/sys/netgraph/util.h @@ -0,0 +1,114 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 + +void +_ng_connect(char const *path1, char const *hook1, + char const *path2, char const *hook2, + char const *file, size_t line); +#define ng_connect(p1,h1,p2,h2) \ + _ng_connect(p1,h1,p2,h2,__FILE__,__LINE__) + +void +_ng_mkpeer(char const *path1, char const *hook1, + char const *type, char const *hook2, + char const *file, size_t line); +#define ng_mkpeer(p1,h1,t,h2) \ + _ng_mkpeer(p1,h1,t,h2,__FILE__,__LINE__) + +void +_ng_shutdown(char const *path, + char const *file, size_t line); +#define ng_shutdown(p) \ + _ng_shutdown(p,__FILE__,__LINE__) + +void +_ng_rmhook(char const *path, char const *hook, + char const *file, size_t line); +#define ng_rmhook(p,h) \ + _ng_rmhook(p,h,__FILE__,__LINE__) + +void +_ng_name(char const *path, char const *name, + char const *file, size_t line); +#define ng_name(p,n) \ + _ng_name(p,n,__FILE__,__LINE__) + + +typedef void (*ng_data_handler_t)(void *, size_t, void *ctx); +void ng_register_data(char const *hook, ng_data_handler_t proc); +void +_ng_send_data(char const *hook, void const *, size_t, + char const *file, size_t line); +#define ng_send_data(h,d,l) \ + _ng_send_data(h,d,l,__FILE__,__LINE__) + +typedef void (*ng_msg_handler_t)(char const *, struct ng_mesg *, void *); +void ng_register_msg(ng_msg_handler_t proc); +int +_ng_send_msg(char const *path, char const *msg, + char const *file, size_t line); +#define ng_send_msg(p,m) \ + _ng_send_msg(p,m,__FILE__,__LINE__) + +int ng_handle_event(unsigned int ms, void *ctx); +void ng_handle_events(unsigned int ms, void *ctx); + +typedef enum +{ + FAIL, PASS +} ng_error_t; +ng_error_t ng_errors(ng_error_t); + +void _ng_init(char const *file, size_t line); +#define ng_init() \ + _ng_init(__FILE__,__LINE__) + +/* Helper function to count received data */ + +typedef int ng_counter_t[10]; +#define ng_counter_clear(x)\ + bzero((x), sizeof(x)) + +void get_data0(void *data, size_t len, void *ctx); +void get_data1(void *data, size_t len, void *ctx); +void get_data2(void *data, size_t len, void *ctx); +void get_data3(void *data, size_t len, void *ctx); +void get_data4(void *data, size_t len, void *ctx); +void get_data5(void *data, size_t len, void *ctx); +void get_data6(void *data, size_t len, void *ctx); +void get_data7(void *data, size_t len, void *ctx); +void get_data8(void *data, size_t len, void *ctx); +void get_data9(void *data, size_t len, void *ctx); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:46:02 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 773F6660E9C; Wed, 16 Jun 2021 11:46:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k0V2jRLz3j7q; Wed, 16 Jun 2021 11:46:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3AB811B29A; Wed, 16 Jun 2021 11:46:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBk2io035409; Wed, 16 Jun 2021 11:46:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBk2Vk035408; Wed, 16 Jun 2021 11:46:02 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:46:02 GMT Message-Id: <202106161146.15GBk2Vk035408@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 1818c5a49a99 - stable/12 - tests/netgraph: Tests for ng_hub MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1818c5a49a99da36ade0fe5e347c5b389dc90a00 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:46:02 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=1818c5a49a99da36ade0fe5e347c5b389dc90a00 commit 1818c5a49a99da36ade0fe5e347c5b389dc90a00 Author: Lutz Donnerhacke AuthorDate: 2021-06-03 22:22:29 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:44:15 +0000 tests/netgraph: Tests for ng_hub Test functionality of ng_hub(4): - replicting traffic to anything but the sending hook - persistence - an unrestricted loop - implementation limits with many hooks. Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30633 (cherry picked from commit 7863faa78ae271017c404c635b2a9d07379d4316) --- tests/sys/netgraph/Makefile | 2 + tests/sys/netgraph/hub.c | 231 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 233 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 7ec036139850..9c5faedbc8e1 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -7,9 +7,11 @@ BINDIR= ${TESTSDIR} ATF_TESTS_C+= basic \ bridge \ + hub \ SRCS.basic= basic.c util.c SRCS.bridge= bridge.c util.c +SRCS.hub= hub.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/hub.c b/tests/sys/netgraph/hub.c new file mode 100644 index 000000000000..08d083ad9605 --- /dev/null +++ b/tests/sys/netgraph/hub.c @@ -0,0 +1,231 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include "util.h" + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + ng_connect(".", "b", "hub:", "b"); + ng_connect(".", "c", "hub:", "c"); + + /* do not bounce back */ + ng_register_data("a", get_data0); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 0); + + /* send to others */ + ng_register_data("b", get_data0); + ng_register_data("c", get_data0); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + ng_counter_clear(r); + ng_send_data("b", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + ng_counter_clear(r); + ng_send_data("c", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + /* remove a link */ + ng_rmhook(".", "b"); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 1); + + ng_shutdown("hub:"); +} + +ATF_TC(persistence); +ATF_TC_HEAD(persistence, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(persistence, dummy) +{ + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + + ng_send_msg("hub:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("hub:"); +} + +ATF_TC(loop); +ATF_TC_HEAD(loop, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(loop, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "LOOP Alert!"; + + ng_errors(PASS); + ng_shutdown("hub1:"); + ng_shutdown("hub2:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub1"); + ng_mkpeer(".", "b", "hub", "b"); + ng_name("b", "hub2"); + + ng_register_data("a", get_data0); + ng_register_data("b", get_data0); + + /*- + * Open loop + * + * /-- hub1 + * . < | + * \-- hub2 + */ + ng_connect("hub1:", "xc1", "hub2:", "xc1"); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 1); + + /*- + * Closed loop, DANGEROUS! + * + * /-- hub1 -\ + * . < | | + * \-- hub2 -/ + */ + ng_connect("hub1:", "xc2", "hub2:", "xc2"); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + for (i = 0; i < 10; i++) /* don't run forever */ + if (!ng_handle_event(50, r)) + break; + ATF_CHECK(r[0] > 7); + + ng_shutdown("hub1:"); + ng_shutdown("hub2:"); +} + +ATF_TC(many_hooks); +ATF_TC_HEAD(many_hooks, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_hooks, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "test"; + const int HOOKS = 1000; + + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + + ng_register_data("a", get_data0); + ng_counter_clear(r); + for (i = 0; i < HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "hook%d", i); + ng_connect(".", hook, "hub:", hook); + ng_errors(PASS); + ng_send_data(hook, msg, sizeof(msg)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, r); + } + ATF_CHECK(r[0] > 100); + atf_tc_expect_fail("Implementation limitation (%d)", i); + ATF_CHECK(r[0] == HOOKS); + atf_tc_expect_pass(); + + ng_shutdown("hub:"); +} + + +ATF_TP_ADD_TCS(hub) +{ + ATF_TP_ADD_TC(hub, basic); + ATF_TP_ADD_TC(hub, loop); + ATF_TP_ADD_TC(hub, persistence); + ATF_TP_ADD_TC(hub, many_hooks); + + return atf_no_error(); +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:46:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BA6DE660A61; Wed, 16 Jun 2021 11:46:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k0W3w3tz3jLn; Wed, 16 Jun 2021 11:46:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 63B191AE73; Wed, 16 Jun 2021 11:46:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBk3ep035433; Wed, 16 Jun 2021 11:46:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBk3kr035432; Wed, 16 Jun 2021 11:46:03 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:46:03 GMT Message-Id: <202106161146.15GBk3kr035432@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 617e33a19aaf - stable/12 - tests/netgraph: Tests for ng_vlan_rotate MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 617e33a19aaf88956be722f286d590f5d4c4683a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:46:03 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=617e33a19aaf88956be722f286d590f5d4c4683a commit 617e33a19aaf88956be722f286d590f5d4c4683a Author: Lutz Donnerhacke AuthorDate: 2021-06-06 23:56:12 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:44:15 +0000 tests/netgraph: Tests for ng_vlan_rotate Test functionality of ng_vlan_rotate(4): - Rotate 1 to 9 stagged vlans in any possible direction and length - Rotate random combinations of ethertypes (8100, 88a8, 9100) - Automatic reverse rotating for backward data flow - Test too many and too few vlans Reviewed by: kp (earlier version) Differential Revision: https://reviews.freebsd.org/D30670 (cherry picked from commit 6b08e68be111d50931b0d30145f8b7e3402decaf) --- tests/sys/netgraph/Makefile | 8 +- tests/sys/netgraph/vlan_rotate.c | 335 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+), 3 deletions(-) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 9c5faedbc8e1..adc5a898dc02 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -5,13 +5,15 @@ PACKAGE= tests TESTSDIR= ${TESTSBASE}/sys/netgraph BINDIR= ${TESTSDIR} -ATF_TESTS_C+= basic \ - bridge \ - hub \ +ATF_TESTS_C+= basic \ + bridge \ + hub \ + vlan_rotate \ SRCS.basic= basic.c util.c SRCS.bridge= bridge.c util.c SRCS.hub= hub.c util.c +SRCS.vlan_rotate=vlan_rotate.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/vlan_rotate.c b/tests/sys/netgraph/vlan_rotate.c new file mode 100644 index 000000000000..8df3ab981a7c --- /dev/null +++ b/tests/sys/netgraph/vlan_rotate.c @@ -0,0 +1,335 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include +#include + +#include +#include + +#include "util.h" +#include + +struct vlan +{ + uint16_t proto; + uint16_t tag; +} __packed; + +struct frame +{ + u_char dst[ETHER_ADDR_LEN]; + u_char src[ETHER_ADDR_LEN]; + struct vlan vlan[10]; +} __packed; + +static struct frame msg = { + .src = {2, 4, 6, 1, 3, 5}, + .dst = {2, 4, 6, 1, 3, 7}, + .vlan[0] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(1, 0, 0))}, + .vlan[1] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(2, 0, 0))}, + .vlan[2] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(3, 0, 0))}, + .vlan[3] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(4, 0, 0))}, + .vlan[4] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(5, 0, 0))}, + .vlan[5] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(6, 0, 0))}, + .vlan[6] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(7, 0, 0))}, + .vlan[7] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(8, 0, 0))}, + .vlan[8] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(9, 0, 0))}, + .vlan[9] = {0} +}; + +static void _basic(int); +static void get_vlan(void *data, size_t len, void *ctx); + +static void +get_vlan(void *data, size_t len, void *ctx) +{ + int *v = ctx, i; + struct frame *f = data; + + (void)len; + for (i = 0; i < 10; i++) + v[i] = EVL_VLANOFTAG(ntohs(f->vlan[i].tag)); +} + +static void +_basic(int direction) +{ + int r[10]; + int i, rot, len; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", direction > 0 ? "original" : "ordered"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", direction > 0 ? "ordered" : "original"); + ng_register_data("b", get_vlan); + + for (len = 9; len > 0; len--) + { + /* reduce the number of vlans */ + msg.vlan[len].proto = htons(ETHERTYPE_IP); + + for (rot = -len + 1; rot < len; rot++) + { + char cmd[40]; + + /* set rotation offset */ + snprintf(cmd, sizeof(cmd), "setconf { min=0 max=9 rot=%d }", rot); + ng_send_msg("vr:", cmd); + + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + + /* check rotation */ + for (i = 0; i < len; i++) + { + int expect = (2 * len + i - direction * rot) % len + 1; + int vlan = r[i]; + + ATF_CHECK_MSG(vlan == expect, + "len=%d rot=%d i=%d -> vlan=%d, expect=%d", + len, rot, i, r[i], expect); + } + } + } + + ng_shutdown("vr:"); +} + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + _basic(1); +} + +ATF_TC(reverse); +ATF_TC_HEAD(reverse, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(reverse, dummy) +{ + _basic(-1); +} + +static void _ethertype(int); +static void get_ethertype(void *data, size_t len, void *ctx); + +static void +get_ethertype(void *data, size_t len, void *ctx) +{ + int *v = ctx, i; + struct frame *f = data; + + (void)len; + for (i = 0; i < 10; i++) + v[i] = ntohs(f->vlan[i].proto); +} + +static void +_ethertype(int direction) +{ + int r[10]; + int i, rounds = 20; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", direction > 0 ? "original" : "ordered"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", direction > 0 ? "ordered" : "original"); + ng_register_data("b", get_ethertype); + + while (rounds-- > 0) + { + char cmd[40]; + int len = 9; + int rot = rand() % (2 * len - 1) - len + 1; + int vlan[10]; + + for (i = 0; i < len; i++) + { + switch (rand() % 3) + { + default: + msg.vlan[i].proto = htons(ETHERTYPE_VLAN); + break; + case 1: + msg.vlan[i].proto = htons(ETHERTYPE_QINQ); + break; + case 2: + msg.vlan[i].proto = htons(ETHERTYPE_8021Q9100); + break; + } + } + msg.vlan[i].proto = htons(ETHERTYPE_IP); + + for (i = 0; i < len; i++) + vlan[i] = msg.vlan[i].proto; + + snprintf(cmd, sizeof(cmd), "setconf { min=0 max=9 rot=%d }", rot); + ng_send_msg("vr:", cmd); + + bzero(r, sizeof(r)); + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + + /* check rotation */ + for (i = 0; i < len; i++) + { + int expect = (2 * len + i - direction * rot) % len; + + ATF_CHECK_MSG(r[i] == ntohs(vlan[expect]), + "len=%d rot=%d i=%d -> vlan=%04x, expect(%d)=%04x", + len, rot, i, ntohs(r[i]), expect, vlan[expect]); + } + } + + ng_shutdown("vr:"); +} + +ATF_TC(ethertype); +ATF_TC_HEAD(ethertype, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(ethertype, dummy) +{ + _ethertype(1); +} + +ATF_TC(typeether); +ATF_TC_HEAD(typeether, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(typeether, dummy) +{ + _ethertype(-1); +} + +ATF_TC(minmax); +ATF_TC_HEAD(minmax, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(minmax, dummy) +{ + ng_counter_t r; + int len; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", "original"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", "ordered"); + ng_connect(".", "c", "vr:", "excessive"); + ng_connect(".", "d", "vr:", "incomplete"); + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + ng_register_data("d", get_data3); + + ng_send_msg("vr:", "setconf { min=3 max=7 rot=0 }"); + for (len = 9; len > 0; len--) + { + /* reduce the number of vlans */ + msg.vlan[len].proto = htons(ETHERTYPE_IP); + + ng_counter_clear(r); + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + if (len < 3) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 0 && r[3] == 1); + else if (len > 7) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + else + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("b", &msg, sizeof(msg)); + ng_handle_events(50, &r); + if (len < 3) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 0 && r[3] == 1); + else if (len > 7) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + else + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("c", &msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("d", &msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + } + + ng_shutdown("vr:"); +} + +ATF_TP_ADD_TCS(vlan_rotate) +{ + /* Use "dd if=/dev/random bs=2 count=1 | od -x" to reproduce */ + srand(0xb93b); + + ATF_TP_ADD_TC(vlan_rotate, basic); + ATF_TP_ADD_TC(vlan_rotate, ethertype); + ATF_TP_ADD_TC(vlan_rotate, reverse); + ATF_TP_ADD_TC(vlan_rotate, typeether); + ATF_TP_ADD_TC(vlan_rotate, minmax); + + return atf_no_error(); +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:49:28 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4E176660EF1; Wed, 16 Jun 2021 11:49:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k4S1nQxz3kHS; Wed, 16 Jun 2021 11:49:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 25EBE1B38E; Wed, 16 Jun 2021 11:49:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBnSnq035972; Wed, 16 Jun 2021 11:49:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBnSR3035971; Wed, 16 Jun 2021 11:49:28 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:49:28 GMT Message-Id: <202106161149.15GBnSR3035971@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: abeb0d0c29ba - stable/11 - tests/netgraph: Prebuild tests directory MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: abeb0d0c29ba28f3f502931adfa8d98758ff116e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:49:28 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=abeb0d0c29ba28f3f502931adfa8d98758ff116e commit abeb0d0c29ba28f3f502931adfa8d98758ff116e Author: Lutz Donnerhacke AuthorDate: 2021-06-16 11:37:51 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:48:21 +0000 tests/netgraph: Prebuild tests directory (partially cherry picked from commit e8db04c38959c882fe17e7c2b26fbabe74f26311) --- tests/sys/Makefile | 1 + tests/sys/netgraph/Makefile | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/tests/sys/Makefile b/tests/sys/Makefile index 5e0c3aba7ed3..bf0d15fa8253 100644 --- a/tests/sys/Makefile +++ b/tests/sys/Makefile @@ -15,6 +15,7 @@ TESTS_SUBDIRS+= kern TESTS_SUBDIRS+= kqueue TESTS_SUBDIRS+= mac TESTS_SUBDIRS+= mqueue +TESTS_SUBDIRS+= netgraph TESTS_SUBDIRS+= netinet TESTS_SUBDIRS+= netmap TESTS_SUBDIRS+= opencrypto diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile new file mode 100644 index 000000000000..e6a9d6fbf338 --- /dev/null +++ b/tests/sys/netgraph/Makefile @@ -0,0 +1,8 @@ +# $FreeBSD$ + +PACKAGE= tests + +TESTSDIR= ${TESTSBASE}/sys/netgraph +BINDIR= ${TESTSDIR} + +.include From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:49:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 61FA8660BDD; Wed, 16 Jun 2021 11:49:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k4T2G2Xz3kN9; Wed, 16 Jun 2021 11:49:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 358BC1B0EF; Wed, 16 Jun 2021 11:49:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBnTnB035998; Wed, 16 Jun 2021 11:49:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBnTKM035997; Wed, 16 Jun 2021 11:49:29 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:49:29 GMT Message-Id: <202106161149.15GBnTKM035997@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 4a0c1d0543af - stable/11 - tests/netgraph: Inital framework for testing libnetgraph MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 4a0c1d0543afd83156b50b3f9b74c79e74cf526f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:49:29 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=4a0c1d0543afd83156b50b3f9b74c79e74cf526f commit 4a0c1d0543afd83156b50b3f9b74c79e74cf526f Author: Lutz Donnerhacke AuthorDate: 2021-06-02 22:29:46 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:48:22 +0000 tests/netgraph: Inital framework for testing libnetgraph Provide a framework of functions to test various netgraph modules. Tests contain: - creating, renaming, and destroying nodes - connecting and removing hooks - sending and receiving data - sending ASCII messages and receiving binary responses - errors can be passed for indiviual inspection or fail the test Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30629 Differential Revision: https://reviews.freebsd.org/D30657 Differential Revision: https://reviews.freebsd.org/D30671 Differential Revision: https://reviews.freebsd.org/D30699 (cherry picked from commit 24ea1dbf257aa6757f469bcd859f90e9ad851e59) (cherry picked from commit 09307dbfb888a98232096c751a96ecb3344aa77c) (cherry picked from commit 9021c46603bf29b9700f24b8dce8796b434d7c8f) (cherry picked from commit 5554abd9cc9702af30af90925b33c5efff4e7d88) Also contains some fixups: - indent all files correctly - finish factoring out - remove debugging code - check for renaming issues reported in PR241954 PR: 241954 Differential Revision: https://reviews.freebsd.org/D30692 Differential Revision: https://reviews.freebsd.org/D30714 Differential Revision: https://reviews.freebsd.org/D30713 (cherry picked from commit a664ade93972ce617f0888ff79e715dff9cf0f87) (cherry picked from commit 0afa9be03937d60cb5aeba64c81e3e2165bd3737) (cherry picked from commit 43e4821315c31db067e23564b9bfafb519e77b2b) --- tests/sys/netgraph/Makefile | 6 + tests/sys/netgraph/basic.c | 191 ++++++++++++++++++++++++++++++ tests/sys/netgraph/util.c | 277 ++++++++++++++++++++++++++++++++++++++++++++ tests/sys/netgraph/util.h | 114 ++++++++++++++++++ 4 files changed, 588 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index e6a9d6fbf338..a28cae2f2432 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -5,4 +5,10 @@ PACKAGE= tests TESTSDIR= ${TESTSBASE}/sys/netgraph BINDIR= ${TESTSDIR} +ATF_TESTS_C+= basic \ + +SRCS.basic= basic.c util.c + +LIBADD+= netgraph + .include diff --git a/tests/sys/netgraph/basic.c b/tests/sys/netgraph/basic.c new file mode 100644 index 000000000000..573422add694 --- /dev/null +++ b/tests/sys/netgraph/basic.c @@ -0,0 +1,191 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include "util.h" + +ATF_TC(send_recv); +ATF_TC_HEAD(send_recv, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(send_recv, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_init(); + ng_connect(".", "a", ".", "b"); + ng_register_data("b", get_data0); + ng_send_data("a", msg, sizeof(msg)); + + ng_counter_clear(r); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1); +} + +ATF_TC(node); +ATF_TC_HEAD(node, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(node, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test hub"); + + ng_errors(PASS); + ng_name("a", "test hub"); + ng_errors(FAIL); + if (errno == EADDRINUSE) + atf_tc_expect_fail("PR241954"); + ATF_CHECK_ERRNO(0, 1); + atf_tc_expect_pass(); + + ng_connect(".", "b", "test hub:", "b"); + ng_connect(".", "c", "test hub:", "c"); + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1); + + ng_rmhook(".", "b"); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + ng_shutdown("test hub:"); +} + +ATF_TC(message); +ATF_TC_HEAD(message, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(message, dummy) +{ + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test hub"); + + ng_send_msg("test hub:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("test hub:"); +} + +ATF_TC(same_name); +ATF_TC_HEAD(same_name, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(same_name, dummy) +{ + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "test"); + + ng_errors(PASS); + ng_connect(".", "a", ".", "b"); + ATF_CHECK_ERRNO(EEXIST, 1); + ng_connect(".", "b", ".", "b"); + ATF_CHECK_ERRNO(EEXIST, 1); + ng_name(".", "test"); + ATF_CHECK_ERRNO(EADDRINUSE, 1); + + ng_errors(FAIL); + ng_shutdown("test:"); +} + +ATF_TC(queuelimit); +ATF_TC_HEAD(queuelimit, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(queuelimit, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "test"; + const int MAX = 1000; + + ng_init(); + ng_connect(".", "a", ".", "b"); + ng_register_data("b", get_data0); + + ng_errors(PASS); + for (i = 0; i < MAX; i++) + { + ng_send_data("a", msg, sizeof(msg)); + if (errno != 0) + break; + /* no ng_handle_events -> messages stall */ + } + ng_errors(FAIL); + + ng_counter_clear(r); + ng_handle_events(50, &r); + ATF_CHECK(r[0] > 100); + ATF_CHECK(r[0] == i); + atf_tc_expect_fail("Queue full (%d)", i); + ATF_CHECK(r[0] == MAX); + atf_tc_expect_pass(); +} + +ATF_TP_ADD_TCS(basic) +{ + ATF_TP_ADD_TC(basic, send_recv); + ATF_TP_ADD_TC(basic, node); + ATF_TP_ADD_TC(basic, message); + ATF_TP_ADD_TC(basic, same_name); + ATF_TP_ADD_TC(basic, queuelimit); + + return atf_no_error(); +} diff --git a/tests/sys/netgraph/util.c b/tests/sys/netgraph/util.c new file mode 100644 index 000000000000..b25e63dfa76d --- /dev/null +++ b/tests/sys/netgraph/util.c @@ -0,0 +1,277 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include +#include + +#include +#include + +#include "util.h" + + +static int cs = -1, ds = -1; +static ng_error_t error_handling = FAIL; + +#define CHECK(r, x) do { \ + if (!(x)) { \ + if (error_handling == PASS) \ + return r; \ + atf_tc_fail_requirement(file, line, "%s (%s)", \ + #x " not met", strerror(errno));\ + } \ +} while(0) + +struct data_handler +{ + char const *hook; + ng_data_handler_t handler; + SLIST_ENTRY(data_handler) next; +}; +static SLIST_HEAD(, data_handler) data_head = SLIST_HEAD_INITIALIZER(data_head); +static ng_msg_handler_t msg_handler = NULL; + +static void handle_data(void *ctx); +static void handle_msg(void *ctx); + +void +_ng_connect(char const *path1, char const *hook1, + char const *path2, char const *hook2, + char const *file, size_t line) +{ + struct ngm_connect c; + + strncpy(c.ourhook, hook1, sizeof(c.ourhook)); + strncpy(c.peerhook, hook2, sizeof(c.peerhook)); + strncpy(c.path, path2, sizeof(c.path)); + + CHECK(, -1 != NgSendMsg(cs, path1, + NGM_GENERIC_COOKIE, NGM_CONNECT, + &c, sizeof(c))); +} + +void +_ng_mkpeer(char const *path1, char const *hook1, + char const *type, char const *hook2, + char const *file, size_t line) +{ + struct ngm_mkpeer p; + + strncpy(p.ourhook, hook1, sizeof(p.ourhook)); + strncpy(p.peerhook, hook2, sizeof(p.peerhook)); + strncpy(p.type, type, sizeof(p.type)); + + CHECK(, -1 != NgSendMsg(cs, path1, + NGM_GENERIC_COOKIE, NGM_MKPEER, + &p, sizeof(p))); +} + +void +_ng_rmhook(char const *path, char const *hook, + char const *file, size_t line) +{ + struct ngm_rmhook h; + + strncpy(h.ourhook, hook, sizeof(h.ourhook)); + + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_RMHOOK, + &h, sizeof(h))); +} + +void +_ng_name(char const *path, char const *name, + char const *file, size_t line) +{ + struct ngm_name n; + + strncpy(n.name, name, sizeof(n.name)); + + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_NAME, + &n, sizeof(n))); +} + +void +_ng_shutdown(char const *path, + char const *file, size_t line) +{ + CHECK(, -1 != NgSendMsg(cs, path, + NGM_GENERIC_COOKIE, NGM_SHUTDOWN, + NULL, 0)); +} + +void +ng_register_data(char const *hook, ng_data_handler_t proc) +{ + struct data_handler *p; + + ATF_REQUIRE(NULL != (p = calloc(1, sizeof(struct data_handler)))); + ATF_REQUIRE(NULL != (p->hook = strdup(hook))); + ATF_REQUIRE(NULL != (p->handler = proc)); + SLIST_INSERT_HEAD(&data_head, p, next); +} + +void +_ng_send_data(char const *hook, + void const *data, size_t len, + char const *file, size_t line) +{ + CHECK(, -1 != NgSendData(ds, hook, data, len)); +} + +void +ng_register_msg(ng_msg_handler_t proc) +{ + msg_handler = proc; +} + +static void +handle_msg(void *ctx) +{ + struct ng_mesg *m; + char path[NG_PATHSIZ]; + + ATF_REQUIRE(-1 != NgAllocRecvMsg(cs, &m, path)); + + if (msg_handler != NULL) + (*msg_handler) (path, m, ctx); + + free(m); +} + +static void +handle_data(void *ctx) +{ + char hook[NG_HOOKSIZ]; + struct data_handler *hnd; + u_char *data; + int len; + + ATF_REQUIRE(0 < (len = NgAllocRecvData(ds, &data, hook))); + SLIST_FOREACH(hnd, &data_head, next) + { + if (0 == strcmp(hnd->hook, hook)) + break; + } + + if (hnd != NULL) + (*(hnd->handler)) (data, len, ctx); + + free(data); +} + +int +ng_handle_event(unsigned int ms, void *context) +{ + fd_set fds; + int maxfd = (ds < cs) ? cs : ds; + struct timeval timeout = {0, ms * 1000lu}; + + FD_ZERO(&fds); + FD_SET(cs, &fds); + FD_SET(ds, &fds); +retry: + switch (select(maxfd + 1, &fds, NULL, NULL, &timeout)) + { + case -1: + ATF_REQUIRE_ERRNO(EINTR, 1); + goto retry; + case 0: /* timeout */ + return 0; + default: /* something to do */ + if (FD_ISSET(cs, &fds)) + handle_msg(context); + if (FD_ISSET(ds, &fds)) + handle_data(context); + return 1; + } +} + +void +ng_handle_events(unsigned int ms, void *context) +{ + while (ng_handle_event(ms, context)) + ; +} + +int +_ng_send_msg(char const *path, char const *msg, + char const *file, size_t line) +{ + int res; + + CHECK(-1, -1 != (res = NgSendAsciiMsg(cs, path, "%s", msg))); + return (res); +} + +ng_error_t +ng_errors(ng_error_t n) +{ + ng_error_t o = error_handling; + + error_handling = n; + return (o); +} + +void +_ng_init(char const *file, size_t line) +{ + if (cs >= 0) /* prevent reinit */ + return; + + CHECK(, 0 == NgMkSockNode(NULL, &cs, &ds)); + NgSetDebug(3); +} + +#define GD(x) void \ +get_data##x(void *data, size_t len, void *ctx) {\ + int *cnt = ctx; \ + \ + (void)data; \ + (void)len; \ + cnt[x]++; \ +} + +GD(0) +GD(1) +GD(2) +GD(3) +GD(4) +GD(5) +GD(6) +GD(7) +GD(8) +GD(9) diff --git a/tests/sys/netgraph/util.h b/tests/sys/netgraph/util.h new file mode 100644 index 000000000000..44c9f3a360a7 --- /dev/null +++ b/tests/sys/netgraph/util.h @@ -0,0 +1,114 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 + +void +_ng_connect(char const *path1, char const *hook1, + char const *path2, char const *hook2, + char const *file, size_t line); +#define ng_connect(p1,h1,p2,h2) \ + _ng_connect(p1,h1,p2,h2,__FILE__,__LINE__) + +void +_ng_mkpeer(char const *path1, char const *hook1, + char const *type, char const *hook2, + char const *file, size_t line); +#define ng_mkpeer(p1,h1,t,h2) \ + _ng_mkpeer(p1,h1,t,h2,__FILE__,__LINE__) + +void +_ng_shutdown(char const *path, + char const *file, size_t line); +#define ng_shutdown(p) \ + _ng_shutdown(p,__FILE__,__LINE__) + +void +_ng_rmhook(char const *path, char const *hook, + char const *file, size_t line); +#define ng_rmhook(p,h) \ + _ng_rmhook(p,h,__FILE__,__LINE__) + +void +_ng_name(char const *path, char const *name, + char const *file, size_t line); +#define ng_name(p,n) \ + _ng_name(p,n,__FILE__,__LINE__) + + +typedef void (*ng_data_handler_t)(void *, size_t, void *ctx); +void ng_register_data(char const *hook, ng_data_handler_t proc); +void +_ng_send_data(char const *hook, void const *, size_t, + char const *file, size_t line); +#define ng_send_data(h,d,l) \ + _ng_send_data(h,d,l,__FILE__,__LINE__) + +typedef void (*ng_msg_handler_t)(char const *, struct ng_mesg *, void *); +void ng_register_msg(ng_msg_handler_t proc); +int +_ng_send_msg(char const *path, char const *msg, + char const *file, size_t line); +#define ng_send_msg(p,m) \ + _ng_send_msg(p,m,__FILE__,__LINE__) + +int ng_handle_event(unsigned int ms, void *ctx); +void ng_handle_events(unsigned int ms, void *ctx); + +typedef enum +{ + FAIL, PASS +} ng_error_t; +ng_error_t ng_errors(ng_error_t); + +void _ng_init(char const *file, size_t line); +#define ng_init() \ + _ng_init(__FILE__,__LINE__) + +/* Helper function to count received data */ + +typedef int ng_counter_t[10]; +#define ng_counter_clear(x)\ + bzero((x), sizeof(x)) + +void get_data0(void *data, size_t len, void *ctx); +void get_data1(void *data, size_t len, void *ctx); +void get_data2(void *data, size_t len, void *ctx); +void get_data3(void *data, size_t len, void *ctx); +void get_data4(void *data, size_t len, void *ctx); +void get_data5(void *data, size_t len, void *ctx); +void get_data6(void *data, size_t len, void *ctx); +void get_data7(void *data, size_t len, void *ctx); +void get_data8(void *data, size_t len, void *ctx); +void get_data9(void *data, size_t len, void *ctx); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:49:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 239A0661138; Wed, 16 Jun 2021 11:49:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k4V3zH3z3kF0; Wed, 16 Jun 2021 11:49:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5FFD21B242; Wed, 16 Jun 2021 11:49:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBnUFY036024; Wed, 16 Jun 2021 11:49:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBnUbn036023; Wed, 16 Jun 2021 11:49:30 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:49:30 GMT Message-Id: <202106161149.15GBnUbn036023@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 49736a31a5c2 - stable/11 - tests/netgraph: Tests for ng_bridge MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 49736a31a5c29319c6dc8f9080b3a85da2305b47 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:49:31 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=49736a31a5c29319c6dc8f9080b3a85da2305b47 commit 49736a31a5c29319c6dc8f9080b3a85da2305b47 Author: Lutz Donnerhacke AuthorDate: 2021-06-04 10:59:00 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:48:24 +0000 tests/netgraph: Tests for ng_bridge Test functionality of ng_bridge(4): - replicating traffic to anything but the sending hook - persistence - detect loops - unicast to only one link of many - stretch to implementation limits on broadcast Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30647 Differential Revision: https://reviews.freebsd.org/D30699 (cherry picked from commit 61814702398ce29430b2bef75cbdd6fd2c07ad12) (cherry picked from commit 5554abd9cc9702af30af90925b33c5efff4e7d88) --- tests/sys/netgraph/Makefile | 2 + tests/sys/netgraph/bridge.c | 632 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 634 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index a28cae2f2432..7ec036139850 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -6,8 +6,10 @@ TESTSDIR= ${TESTSBASE}/sys/netgraph BINDIR= ${TESTSDIR} ATF_TESTS_C+= basic \ + bridge \ SRCS.basic= basic.c util.c +SRCS.bridge= bridge.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/bridge.c b/tests/sys/netgraph/bridge.c new file mode 100644 index 000000000000..3e3c0f804278 --- /dev/null +++ b/tests/sys/netgraph/bridge.c @@ -0,0 +1,632 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include +#include +#include +#include + +#include "util.h" +#include + +static void get_tablesize(char const *source, struct ng_mesg *msg, void *ctx); +struct gettable +{ + u_int32_t tok; + int cnt; +}; + +struct frame4 +{ + struct ether_header eh; + struct ip ip; + char data[64]; +}; +struct frame6 +{ + struct ether_header eh; + struct ip6_hdr ip; + char data[64]; +}; + +static struct frame4 msg4 = { + .ip.ip_v = 4, + .ip.ip_hl = 5, + .ip.ip_ttl = 1, + .ip.ip_p = 254, + .ip.ip_src = {htonl(0x0a00dead)}, + .ip.ip_dst = {htonl(0x0a00beef)}, + .ip.ip_len = 32, + .eh.ether_type = ETHERTYPE_IP, + .eh.ether_shost = {2, 4, 6}, + .eh.ether_dhost = {2, 4, 6}, +}; + + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_connect(".", "b", "bridge:", "link1"); + ng_connect(".", "c", "bridge:", "link2"); + + /* do not bounce back */ + ng_register_data("a", get_data0); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* send to others */ + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + ng_send_data("b", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + ng_send_data("c", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 1 && r[2] == 0); + + /* send to learned unicast */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 3; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 3); + + /* remove a link */ + ng_rmhook(".", "b"); + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TC(persistence); +ATF_TC_HEAD(persistence, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(persistence, dummy) +{ + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + + ng_send_msg("bridge:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("bridge:"); +} + +ATF_TC(loop); +ATF_TC_HEAD(loop, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(loop, dummy) +{ + ng_counter_t r; + int i; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge1:"); + ng_shutdown("bridge2:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge1"); + ng_mkpeer(".", "b", "bridge", "link1"); + ng_name("b", "bridge2"); + + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + + /*- + * Open loop + * + * /-- bridge1 + * . < | + * \-- bridge2 + */ + ng_connect("bridge1:", "link11", "bridge2:", "link11"); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1); + + /*- + * Closed loop, DANGEROUS! + * + * /-- bridge1 -\ + * . < | | + * \-- bridge2 -/ + */ + ng_connect("bridge1:", "link12", "bridge2:", "link12"); + + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_errors(PASS); + ng_send_data("a", &msg4, sizeof(msg4)); + ATF_CHECK_ERRNO(ELOOP, errno != 0); /* loop might be detected */ + ng_errors(FAIL); + for (i = 0; i < 10; i++) /* don't run forever */ + if (!ng_handle_event(50, &r)) + break; + ATF_CHECK(r[0] == 0 && r[1] == 1); + + ng_shutdown("bridge1:"); + ng_shutdown("bridge2:"); +} + +ATF_TC(many_unicasts); +ATF_TC_HEAD(many_unicasts, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_unicasts, dummy) +{ + ng_counter_t r; + int i; + const int HOOKS = 1000; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_register_data("a", get_data0); + + /* learn MAC */ + ng_counter_clear(r); + msg4.eh.ether_shost[3] = 0xff; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* use learned MAC as destination */ + msg4.eh.ether_shost[3] = 0; + msg4.eh.ether_dhost[3] = 0xff; + + /* now send */ + ng_counter_clear(r); + for (i = 1; i <= HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "link%d", i); + ng_connect(".", hook, "bridge:", hook); + ng_register_data(hook, get_data2); + + msg4.eh.ether_shost[4] = i >> 8; + msg4.eh.ether_shost[5] = i & 0xff; + ng_errors(PASS); + ng_send_data(hook, &msg4, sizeof(msg4)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, &r); + } + ATF_CHECK(r[0] == HOOKS && r[2] == 0); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.cnt = 0; + ng_errors(PASS); + rm.tok = ng_send_msg("bridge:", "gettable"); + ng_errors(FAIL); + if (rm.tok == (u_int32_t)-1) + { + ATF_CHECK_ERRNO(ENOBUFS, 1); + atf_tc_expect_fail("response too large"); + } + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == HOOKS + 1); + atf_tc_expect_pass(); + + ng_shutdown("bridge:"); +} + +ATF_TC(many_broadcasts); +ATF_TC_HEAD(many_broadcasts, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_broadcasts, dummy) +{ + ng_counter_t r; + int i; + const int HOOKS = 1000; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "bridge", "link0"); + ng_name("a", "bridge"); + ng_register_data("a", get_data0); + + /* learn MAC */ + ng_counter_clear(r); + msg4.eh.ether_shost[3] = 0xff; + ng_send_data("a", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0); + + /* use broadcast MAC */ + msg4.eh.ether_shost[3] = 0; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + + /* now send */ + ng_counter_clear(r); + for (i = 1; i <= HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "link%d", i); + ng_connect(".", hook, "bridge:", hook); + ng_register_data(hook, get_data3); + + msg4.eh.ether_shost[4] = i >> 8; + msg4.eh.ether_shost[5] = i & 0xff; + ng_errors(PASS); + ng_send_data(hook, &msg4, sizeof(msg4)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, &r); + } + ATF_CHECK(r[0] > 100 && r[3] > 100); + if (i < HOOKS) + atf_tc_expect_fail("netgraph queue full (%d)", i); + ATF_CHECK(r[0] == HOOKS); + atf_tc_expect_pass(); + + ng_shutdown("bridge:"); +} + +ATF_TC(uplink_private); +ATF_TC_HEAD(uplink_private, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(uplink_private, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + + ng_mkpeer(".", "u1", "bridge", "uplink1"); + if (errno > 0) + atf_tc_skip("uplinks are not supported."); + ng_errors(FAIL); + ng_name("u1", "bridge"); + ng_register_data("u1", get_data1); + ng_connect(".", "u2", "bridge:", "uplink2"); + ng_register_data("u2", get_data2); + ng_connect(".", "l0", "bridge:", "link0"); + ng_register_data("l0", get_data0); + ng_connect(".", "l3", "bridge:", "link3"); + ng_register_data("l3", get_data3); + + /* unknown unicast 0 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + + /* unknown unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 0); + + /* known unicast 0 from uplink2 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("u2", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* known unicast 0 from link3 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("l3", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* (un)known unicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + + /* (un)known unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 0); + + /* unknown multicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[0] = 0xff; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* broadcast from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* broadcast from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TC(uplink_classic); +ATF_TC_HEAD(uplink_classic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(uplink_classic, dummy) +{ + ng_counter_t r; + struct gettable rm; + + ng_init(); + ng_errors(PASS); + ng_shutdown("bridge:"); + + ng_mkpeer(".", "l0", "bridge", "link0"); + if (errno > 0) + atf_tc_skip("uplinks are not supported."); + ng_errors(FAIL); + ng_name("l0", "bridge"); + ng_register_data("l0", get_data0); + ng_connect(".", "u1", "bridge:", "uplink1"); + ng_register_data("u1", get_data1); + ng_connect(".", "u2", "bridge:", "uplink2"); + ng_register_data("u2", get_data2); + ng_connect(".", "l3", "bridge:", "link3"); + ng_register_data("l3", get_data3); + + /* unknown unicast 0 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* known unicast 0 from uplink2 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 2; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("u2", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* known unicast 0 from link3 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 3; + msg4.eh.ether_dhost[5] = 0; + ng_send_data("l3", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + /* (un)known unicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[5] = 2; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* (un)known unicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + msg4.eh.ether_dhost[0] = 0xff; + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* unknown multicast 2 from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* broadcast from uplink1 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 1; + memset(msg4.eh.ether_dhost, 0xff, sizeof(msg4.eh.ether_dhost)); + ng_send_data("u1", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 1 && r[3] == 1); + + /* broadcast from link0 */ + ng_counter_clear(r); + msg4.eh.ether_shost[5] = 0; + ng_send_data("l0", &msg4, sizeof(msg4)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 1 && r[3] == 1); + + /* inspect mac table */ + ng_register_msg(get_tablesize); + rm.tok = ng_send_msg("bridge:", "gettable"); + rm.cnt = 0; + ng_handle_events(50, &rm); + ATF_CHECK(rm.cnt == 2); + + ng_shutdown("bridge:"); +} + +ATF_TP_ADD_TCS(bridge) +{ + ATF_TP_ADD_TC(bridge, basic); + ATF_TP_ADD_TC(bridge, loop); + ATF_TP_ADD_TC(bridge, persistence); + ATF_TP_ADD_TC(bridge, many_unicasts); + ATF_TP_ADD_TC(bridge, many_broadcasts); + ATF_TP_ADD_TC(bridge, uplink_private); + ATF_TP_ADD_TC(bridge, uplink_classic); + + return atf_no_error(); +} + +static void +get_tablesize(char const *source, struct ng_mesg *msg, void *ctx) +{ + struct gettable *rm = ctx; + struct ng_bridge_host_ary *gt = (void *)msg->data; + + fprintf(stderr, "Response from %s to query %d\n", source, msg->header.token); + if (rm->tok == msg->header.token) + rm->cnt = gt->numHosts; +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 11:49:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B1660660F39; Wed, 16 Jun 2021 11:49:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4k4W4922z3k6c; Wed, 16 Jun 2021 11:49:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 748731AE77; Wed, 16 Jun 2021 11:49:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GBnVXn036054; Wed, 16 Jun 2021 11:49:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GBnV5D036053; Wed, 16 Jun 2021 11:49:31 GMT (envelope-from git) Date: Wed, 16 Jun 2021 11:49:31 GMT Message-Id: <202106161149.15GBnV5D036053@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: d68f32b4ac35 - stable/11 - tests/netgraph: Tests for ng_hub MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: d68f32b4ac357ebd54dd1c640bb87ba92d7eb76d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 11:49:31 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=d68f32b4ac357ebd54dd1c640bb87ba92d7eb76d commit d68f32b4ac357ebd54dd1c640bb87ba92d7eb76d Author: Lutz Donnerhacke AuthorDate: 2021-06-03 22:22:29 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 11:48:25 +0000 tests/netgraph: Tests for ng_hub Test functionality of ng_hub(4): - replicting traffic to anything but the sending hook - persistence - an unrestricted loop - implementation limits with many hooks. Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D30633 (cherry picked from commit 7863faa78ae271017c404c635b2a9d07379d4316) --- tests/sys/netgraph/Makefile | 2 + tests/sys/netgraph/hub.c | 231 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 233 insertions(+) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 7ec036139850..9c5faedbc8e1 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -7,9 +7,11 @@ BINDIR= ${TESTSDIR} ATF_TESTS_C+= basic \ bridge \ + hub \ SRCS.basic= basic.c util.c SRCS.bridge= bridge.c util.c +SRCS.hub= hub.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/hub.c b/tests/sys/netgraph/hub.c new file mode 100644 index 000000000000..08d083ad9605 --- /dev/null +++ b/tests/sys/netgraph/hub.c @@ -0,0 +1,231 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include + +#include "util.h" + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + char msg[] = "test"; + ng_counter_t r; + + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + ng_connect(".", "b", "hub:", "b"); + ng_connect(".", "c", "hub:", "c"); + + /* do not bounce back */ + ng_register_data("a", get_data0); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 0); + + /* send to others */ + ng_register_data("b", get_data0); + ng_register_data("c", get_data0); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + ng_counter_clear(r); + ng_send_data("b", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + ng_counter_clear(r); + ng_send_data("c", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 2); + + /* remove a link */ + ng_rmhook(".", "b"); + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 1); + + ng_shutdown("hub:"); +} + +ATF_TC(persistence); +ATF_TC_HEAD(persistence, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(persistence, dummy) +{ + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + + ng_send_msg("hub:", "setpersistent"); + ng_rmhook(".", "a"); + + ng_shutdown("hub:"); +} + +ATF_TC(loop); +ATF_TC_HEAD(loop, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(loop, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "LOOP Alert!"; + + ng_errors(PASS); + ng_shutdown("hub1:"); + ng_shutdown("hub2:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub1"); + ng_mkpeer(".", "b", "hub", "b"); + ng_name("b", "hub2"); + + ng_register_data("a", get_data0); + ng_register_data("b", get_data0); + + /*- + * Open loop + * + * /-- hub1 + * . < | + * \-- hub2 + */ + ng_connect("hub1:", "xc1", "hub2:", "xc1"); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + ng_handle_events(50, r); + ATF_CHECK(r[0] == 1); + + /*- + * Closed loop, DANGEROUS! + * + * /-- hub1 -\ + * . < | | + * \-- hub2 -/ + */ + ng_connect("hub1:", "xc2", "hub2:", "xc2"); + + ng_counter_clear(r); + ng_send_data("a", msg, sizeof(msg)); + for (i = 0; i < 10; i++) /* don't run forever */ + if (!ng_handle_event(50, r)) + break; + ATF_CHECK(r[0] > 7); + + ng_shutdown("hub1:"); + ng_shutdown("hub2:"); +} + +ATF_TC(many_hooks); +ATF_TC_HEAD(many_hooks, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(many_hooks, dummy) +{ + ng_counter_t r; + int i; + char msg[] = "test"; + const int HOOKS = 1000; + + ng_errors(PASS); + ng_shutdown("hub:"); + ng_errors(FAIL); + + ng_init(); + ng_mkpeer(".", "a", "hub", "a"); + ng_name("a", "hub"); + + ng_register_data("a", get_data0); + ng_counter_clear(r); + for (i = 0; i < HOOKS; i++) + { + char hook[20]; + + snprintf(hook, sizeof(hook), "hook%d", i); + ng_connect(".", hook, "hub:", hook); + ng_errors(PASS); + ng_send_data(hook, msg, sizeof(msg)); + ng_errors(FAIL); + if (errno != 0) + break; + ng_handle_events(50, r); + } + ATF_CHECK(r[0] > 100); + atf_tc_expect_fail("Implementation limitation (%d)", i); + ATF_CHECK(r[0] == HOOKS); + atf_tc_expect_pass(); + + ng_shutdown("hub:"); +} + + +ATF_TP_ADD_TCS(hub) +{ + ATF_TP_ADD_TC(hub, basic); + ATF_TP_ADD_TC(hub, loop); + ATF_TP_ADD_TC(hub, persistence); + ATF_TP_ADD_TC(hub, many_hooks); + + return atf_no_error(); +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 12:04:26 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2B83C6613CA; Wed, 16 Jun 2021 12:04:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4kPk0kNvz3m5p; Wed, 16 Jun 2021 12:04:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F0A771B171; Wed, 16 Jun 2021 12:04:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GC4PtF062870; Wed, 16 Jun 2021 12:04:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GC4PhM062869; Wed, 16 Jun 2021 12:04:25 GMT (envelope-from git) Date: Wed, 16 Jun 2021 12:04:25 GMT Message-Id: <202106161204.15GC4PhM062869@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 7438333663b4 - stable/11 - tests/netgraph: Tests for ng_vlan_rotate MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 7438333663b4d22f6863aeffba55d6a04149e3a2 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 12:04:26 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=7438333663b4d22f6863aeffba55d6a04149e3a2 commit 7438333663b4d22f6863aeffba55d6a04149e3a2 Author: Lutz Donnerhacke AuthorDate: 2021-06-06 23:56:12 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 12:04:06 +0000 tests/netgraph: Tests for ng_vlan_rotate Test functionality of ng_vlan_rotate(4): - Rotate 1 to 9 stagged vlans in any possible direction and length - Rotate random combinations of ethertypes (8100, 88a8, 9100) - Automatic reverse rotating for backward data flow - Test too many and too few vlans Reviewed by: kp (earlier version) Differential Revision: https://reviews.freebsd.org/D30670 (cherry picked from commit 6b08e68be111d50931b0d30145f8b7e3402decaf) --- tests/sys/netgraph/Makefile | 8 +- tests/sys/netgraph/vlan_rotate.c | 335 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+), 3 deletions(-) diff --git a/tests/sys/netgraph/Makefile b/tests/sys/netgraph/Makefile index 9c5faedbc8e1..adc5a898dc02 100644 --- a/tests/sys/netgraph/Makefile +++ b/tests/sys/netgraph/Makefile @@ -5,13 +5,15 @@ PACKAGE= tests TESTSDIR= ${TESTSBASE}/sys/netgraph BINDIR= ${TESTSDIR} -ATF_TESTS_C+= basic \ - bridge \ - hub \ +ATF_TESTS_C+= basic \ + bridge \ + hub \ + vlan_rotate \ SRCS.basic= basic.c util.c SRCS.bridge= bridge.c util.c SRCS.hub= hub.c util.c +SRCS.vlan_rotate=vlan_rotate.c util.c LIBADD+= netgraph diff --git a/tests/sys/netgraph/vlan_rotate.c b/tests/sys/netgraph/vlan_rotate.c new file mode 100644 index 000000000000..8df3ab981a7c --- /dev/null +++ b/tests/sys/netgraph/vlan_rotate.c @@ -0,0 +1,335 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright 2021 Lutz Donnerhacke + * + * 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT HOLDER 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 +#include +#include +#include + +#include +#include + +#include "util.h" +#include + +struct vlan +{ + uint16_t proto; + uint16_t tag; +} __packed; + +struct frame +{ + u_char dst[ETHER_ADDR_LEN]; + u_char src[ETHER_ADDR_LEN]; + struct vlan vlan[10]; +} __packed; + +static struct frame msg = { + .src = {2, 4, 6, 1, 3, 5}, + .dst = {2, 4, 6, 1, 3, 7}, + .vlan[0] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(1, 0, 0))}, + .vlan[1] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(2, 0, 0))}, + .vlan[2] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(3, 0, 0))}, + .vlan[3] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(4, 0, 0))}, + .vlan[4] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(5, 0, 0))}, + .vlan[5] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(6, 0, 0))}, + .vlan[6] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(7, 0, 0))}, + .vlan[7] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(8, 0, 0))}, + .vlan[8] = {htons(ETHERTYPE_VLAN), htons(EVL_MAKETAG(9, 0, 0))}, + .vlan[9] = {0} +}; + +static void _basic(int); +static void get_vlan(void *data, size_t len, void *ctx); + +static void +get_vlan(void *data, size_t len, void *ctx) +{ + int *v = ctx, i; + struct frame *f = data; + + (void)len; + for (i = 0; i < 10; i++) + v[i] = EVL_VLANOFTAG(ntohs(f->vlan[i].tag)); +} + +static void +_basic(int direction) +{ + int r[10]; + int i, rot, len; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", direction > 0 ? "original" : "ordered"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", direction > 0 ? "ordered" : "original"); + ng_register_data("b", get_vlan); + + for (len = 9; len > 0; len--) + { + /* reduce the number of vlans */ + msg.vlan[len].proto = htons(ETHERTYPE_IP); + + for (rot = -len + 1; rot < len; rot++) + { + char cmd[40]; + + /* set rotation offset */ + snprintf(cmd, sizeof(cmd), "setconf { min=0 max=9 rot=%d }", rot); + ng_send_msg("vr:", cmd); + + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + + /* check rotation */ + for (i = 0; i < len; i++) + { + int expect = (2 * len + i - direction * rot) % len + 1; + int vlan = r[i]; + + ATF_CHECK_MSG(vlan == expect, + "len=%d rot=%d i=%d -> vlan=%d, expect=%d", + len, rot, i, r[i], expect); + } + } + } + + ng_shutdown("vr:"); +} + +ATF_TC(basic); +ATF_TC_HEAD(basic, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(basic, dummy) +{ + _basic(1); +} + +ATF_TC(reverse); +ATF_TC_HEAD(reverse, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(reverse, dummy) +{ + _basic(-1); +} + +static void _ethertype(int); +static void get_ethertype(void *data, size_t len, void *ctx); + +static void +get_ethertype(void *data, size_t len, void *ctx) +{ + int *v = ctx, i; + struct frame *f = data; + + (void)len; + for (i = 0; i < 10; i++) + v[i] = ntohs(f->vlan[i].proto); +} + +static void +_ethertype(int direction) +{ + int r[10]; + int i, rounds = 20; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", direction > 0 ? "original" : "ordered"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", direction > 0 ? "ordered" : "original"); + ng_register_data("b", get_ethertype); + + while (rounds-- > 0) + { + char cmd[40]; + int len = 9; + int rot = rand() % (2 * len - 1) - len + 1; + int vlan[10]; + + for (i = 0; i < len; i++) + { + switch (rand() % 3) + { + default: + msg.vlan[i].proto = htons(ETHERTYPE_VLAN); + break; + case 1: + msg.vlan[i].proto = htons(ETHERTYPE_QINQ); + break; + case 2: + msg.vlan[i].proto = htons(ETHERTYPE_8021Q9100); + break; + } + } + msg.vlan[i].proto = htons(ETHERTYPE_IP); + + for (i = 0; i < len; i++) + vlan[i] = msg.vlan[i].proto; + + snprintf(cmd, sizeof(cmd), "setconf { min=0 max=9 rot=%d }", rot); + ng_send_msg("vr:", cmd); + + bzero(r, sizeof(r)); + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + + /* check rotation */ + for (i = 0; i < len; i++) + { + int expect = (2 * len + i - direction * rot) % len; + + ATF_CHECK_MSG(r[i] == ntohs(vlan[expect]), + "len=%d rot=%d i=%d -> vlan=%04x, expect(%d)=%04x", + len, rot, i, ntohs(r[i]), expect, vlan[expect]); + } + } + + ng_shutdown("vr:"); +} + +ATF_TC(ethertype); +ATF_TC_HEAD(ethertype, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(ethertype, dummy) +{ + _ethertype(1); +} + +ATF_TC(typeether); +ATF_TC_HEAD(typeether, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(typeether, dummy) +{ + _ethertype(-1); +} + +ATF_TC(minmax); +ATF_TC_HEAD(minmax, conf) +{ + atf_tc_set_md_var(conf, "require.user", "root"); +} + +ATF_TC_BODY(minmax, dummy) +{ + ng_counter_t r; + int len; + + ng_init(); + ng_errors(PASS); + ng_shutdown("vr:"); + ng_errors(FAIL); + + ng_mkpeer(".", "a", "vlan_rotate", "original"); + ng_name("a", "vr"); + ng_connect(".", "b", "vr:", "ordered"); + ng_connect(".", "c", "vr:", "excessive"); + ng_connect(".", "d", "vr:", "incomplete"); + ng_register_data("a", get_data0); + ng_register_data("b", get_data1); + ng_register_data("c", get_data2); + ng_register_data("d", get_data3); + + ng_send_msg("vr:", "setconf { min=3 max=7 rot=0 }"); + for (len = 9; len > 0; len--) + { + /* reduce the number of vlans */ + msg.vlan[len].proto = htons(ETHERTYPE_IP); + + ng_counter_clear(r); + ng_send_data("a", &msg, sizeof(msg)); + ng_handle_events(50, &r); + if (len < 3) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 0 && r[3] == 1); + else if (len > 7) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + else + ATF_CHECK(r[0] == 0 && r[1] == 1 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("b", &msg, sizeof(msg)); + ng_handle_events(50, &r); + if (len < 3) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 0 && r[3] == 1); + else if (len > 7) + ATF_CHECK(r[0] == 0 && r[1] == 0 && r[2] == 1 && r[3] == 0); + else + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("c", &msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + + ng_counter_clear(r); + ng_send_data("d", &msg, sizeof(msg)); + ng_handle_events(50, &r); + ATF_CHECK(r[0] == 1 && r[1] == 0 && r[2] == 0 && r[3] == 0); + } + + ng_shutdown("vr:"); +} + +ATF_TP_ADD_TCS(vlan_rotate) +{ + /* Use "dd if=/dev/random bs=2 count=1 | od -x" to reproduce */ + srand(0xb93b); + + ATF_TP_ADD_TC(vlan_rotate, basic); + ATF_TP_ADD_TC(vlan_rotate, ethertype); + ATF_TP_ADD_TC(vlan_rotate, reverse); + ATF_TP_ADD_TC(vlan_rotate, typeether); + ATF_TP_ADD_TC(vlan_rotate, minmax); + + return atf_no_error(); +} From owner-dev-commits-src-all@freebsd.org Wed Jun 16 14:02:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A00A666361D; Wed, 16 Jun 2021 14:02:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4n1z3zgCz3th0; Wed, 16 Jun 2021 14:02:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 717591D0B6; Wed, 16 Jun 2021 14:02:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GE2Vtk021796; Wed, 16 Jun 2021 14:02:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GE2V6w021795; Wed, 16 Jun 2021 14:02:31 GMT (envelope-from git) Date: Wed, 16 Jun 2021 14:02:31 GMT Message-Id: <202106161402.15GE2V6w021795@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: bc6a2267fffe - main - ipfw: Update the pfil mbuf pointer in ipfw_check_frame() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bc6a2267fffeafd3946637607a74cfd639398f9d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 14:02:31 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=bc6a2267fffeafd3946637607a74cfd639398f9d commit bc6a2267fffeafd3946637607a74cfd639398f9d Author: Mark Johnston AuthorDate: 2021-06-16 13:46:56 +0000 Commit: Mark Johnston CommitDate: 2021-06-16 13:46:56 +0000 ipfw: Update the pfil mbuf pointer in ipfw_check_frame() ipfw_chk() might call m_pullup() and thus can change the mbuf chain head. In this case, the new chain head has to be returned to the pfil hook caller, otherwise the pfil hook caller is left with a dangling pointer. Note that this affects only the link-layer hooks installed when the net.link.ether.ipfw sysctl is set to 1. PR: 256439, 254015, 255069, 255104 Fixes: f355cb3e6 Reviewed by: ae MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30764 --- sys/netpfil/ipfw/ip_fw_pfil.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/netpfil/ipfw/ip_fw_pfil.c b/sys/netpfil/ipfw/ip_fw_pfil.c index e21831c80ec6..01a44df47180 100644 --- a/sys/netpfil/ipfw/ip_fw_pfil.c +++ b/sys/netpfil/ipfw/ip_fw_pfil.c @@ -371,6 +371,8 @@ again: } ipfw = ipfw_chk(&args); + if (!mem) + *p.m = args.m; ret = PFIL_PASS; switch (ipfw) { From owner-dev-commits-src-all@freebsd.org Wed Jun 16 14:04:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A4AA26634D3; Wed, 16 Jun 2021 14:04:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4n4910r3z3w92; Wed, 16 Jun 2021 14:04:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DFC021CDBC; Wed, 16 Jun 2021 14:04:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GE4OI6022057; Wed, 16 Jun 2021 14:04:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GE4Oa2022056; Wed, 16 Jun 2021 14:04:24 GMT (envelope-from git) Date: Wed, 16 Jun 2021 14:04:24 GMT Message-Id: <202106161404.15GE4Oa2022056@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 85a55e0c5eb0 - stable/13 - vmm: Let guests enable SMEP/SMAP if the host supports it MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 85a55e0c5eb0c3ad6b3ce27c3f4b5e47bf446320 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 14:04:25 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=85a55e0c5eb0c3ad6b3ce27c3f4b5e47bf446320 commit 85a55e0c5eb0c3ad6b3ce27c3f4b5e47bf446320 Author: Mark Johnston AuthorDate: 2021-05-26 13:34:52 +0000 Commit: Mark Johnston CommitDate: 2021-06-16 14:03:12 +0000 vmm: Let guests enable SMEP/SMAP if the host supports it Reviewed by: kib, grehan, jhb Tested by: grehan (AMD) Sponsored by: The FreeBSD Foundation (cherry picked from commit 4c599db71af56c28bb0388e73bd0570a3873c0ec) --- sys/amd64/vmm/x86.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/amd64/vmm/x86.c b/sys/amd64/vmm/x86.c index a4a9c8203fc5..c43a3c870211 100644 --- a/sys/amd64/vmm/x86.c +++ b/sys/amd64/vmm/x86.c @@ -441,10 +441,12 @@ x86_emulate_cpuid(struct vm *vm, int vcpu_id, uint64_t *rax, uint64_t *rbx, */ regs[1] &= (CPUID_STDEXT_FSGSBASE | CPUID_STDEXT_BMI1 | CPUID_STDEXT_HLE | - CPUID_STDEXT_AVX2 | CPUID_STDEXT_BMI2 | + CPUID_STDEXT_AVX2 | CPUID_STDEXT_SMEP | + CPUID_STDEXT_BMI2 | CPUID_STDEXT_ERMS | CPUID_STDEXT_RTM | CPUID_STDEXT_AVX512F | CPUID_STDEXT_RDSEED | + CPUID_STDEXT_SMAP | CPUID_STDEXT_AVX512PF | CPUID_STDEXT_AVX512ER | CPUID_STDEXT_AVX512CD | CPUID_STDEXT_SHA); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 16:21:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 94A1E665383; Wed, 16 Jun 2021 16:21:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4r5q3bdLz4jX2; Wed, 16 Jun 2021 16:21:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 649451E8FD; Wed, 16 Jun 2021 16:21:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GGL3eY007089; Wed, 16 Jun 2021 16:21:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GGL3BS007088; Wed, 16 Jun 2021 16:21:03 GMT (envelope-from git) Date: Wed, 16 Jun 2021 16:21:03 GMT Message-Id: <202106161621.15GGL3BS007088@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alex Richardson Subject: git: 1a2f06d0f290 - main - vis(3): avoid out-of-bounds stack buffer reads MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arichardson X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1a2f06d0f2905c9a18340b377cbbe772f2ca6844 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 16:21:03 -0000 The branch main has been updated by arichardson: URL: https://cgit.FreeBSD.org/src/commit/?id=1a2f06d0f2905c9a18340b377cbbe772f2ca6844 commit 1a2f06d0f2905c9a18340b377cbbe772f2ca6844 Author: Alex Richardson AuthorDate: 2021-06-16 15:27:13 +0000 Commit: Alex Richardson CommitDate: 2021-06-16 15:27:13 +0000 vis(3): avoid out-of-bounds stack buffer reads I found this while running kdump(1) on a CheriBSD system due to a capability length violation when printing the /etc/libmap.conf read() system call: it crashed immediately after printing the first line. Found by: CHERI Reviewed By: jhb MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D30771 --- contrib/libc-vis/vis.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/libc-vis/vis.c b/contrib/libc-vis/vis.c index 21c07b70619d..c43186a44b51 100644 --- a/contrib/libc-vis/vis.c +++ b/contrib/libc-vis/vis.c @@ -465,7 +465,8 @@ istrsenvisx(char **mbdstp, size_t *dlen, const char *mbsrc, size_t mblength, while (mbslength > 0) { /* Convert one multibyte character to wchar_t. */ if (!cerr) - clen = mbrtowc(src, mbsrc, MB_LEN_MAX, &mbstate); + clen = mbrtowc(src, mbsrc, MIN(mbslength, MB_LEN_MAX), + &mbstate); if (cerr || clen < 0) { /* Conversion error, process as a byte instead. */ *src = (wint_t)(u_char)*mbsrc; From owner-dev-commits-src-all@freebsd.org Wed Jun 16 16:21:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 822B6665296; Wed, 16 Jun 2021 16:21:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4r5r5MwHz4jTp; Wed, 16 Jun 2021 16:21:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 95E851EFBA; Wed, 16 Jun 2021 16:21:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GGL4vJ007119; Wed, 16 Jun 2021 16:21:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GGL4E6007118; Wed, 16 Jun 2021 16:21:04 GMT (envelope-from git) Date: Wed, 16 Jun 2021 16:21:04 GMT Message-Id: <202106161621.15GGL4E6007118@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alex Richardson Subject: git: 1a3a57d74590 - main - kdump: use VIS_NOLOCALE when printing output MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arichardson X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1a3a57d74590bb44e96629aec35897b475bd69fa Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 16:21:05 -0000 The branch main has been updated by arichardson: URL: https://cgit.FreeBSD.org/src/commit/?id=1a3a57d74590bb44e96629aec35897b475bd69fa commit 1a3a57d74590bb44e96629aec35897b475bd69fa Author: Alex Richardson AuthorDate: 2021-06-16 15:28:27 +0000 Commit: Alex Richardson CommitDate: 2021-06-16 15:28:27 +0000 kdump: use VIS_NOLOCALE when printing output Attempting to parse the output as UTF-8 exposed an out-of-bounds read in vis(3) (see https://reviews.freebsd.org/D30771). However, I don't think it makes much sense to decode this output at all. Additionally, passing one byte at a time will almost certainly result in incorrect output for multi-byte characters. Reviewed By: brooks MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D30772 --- usr.bin/kdump/kdump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c index 05988f43133e..d863fffea774 100644 --- a/usr.bin/kdump/kdump.c +++ b/usr.bin/kdump/kdump.c @@ -1638,7 +1638,7 @@ visdump(char *dp, int datalen, int screenwidth) printf(" \""); col = 8; for (;datalen > 0; datalen--, dp++) { - vis(visbuf, *dp, VIS_CSTYLE, *(dp+1)); + vis(visbuf, *dp, VIS_CSTYLE | VIS_NOLOCALE, *(dp+1)); cp = visbuf; /* * Keep track of printables and From owner-dev-commits-src-all@freebsd.org Wed Jun 16 16:21:07 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 62F12665321; Wed, 16 Jun 2021 16:21:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4r5v1N8Hz4jRh; Wed, 16 Jun 2021 16:21:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C23B01EAF5; Wed, 16 Jun 2021 16:21:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GGL6MC007168; Wed, 16 Jun 2021 16:21:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GGL61V007167; Wed, 16 Jun 2021 16:21:06 GMT (envelope-from git) Date: Wed, 16 Jun 2021 16:21:06 GMT Message-Id: <202106161621.15GGL61V007167@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alex Richardson Subject: git: 31dddc6a1904 - main - truss: minor cleanup and pedantic warning fixes MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arichardson X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 31dddc6a19042bad303cb3d3aa8f52a2cb22dd77 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 16:21:07 -0000 The branch main has been updated by arichardson: URL: https://cgit.FreeBSD.org/src/commit/?id=31dddc6a19042bad303cb3d3aa8f52a2cb22dd77 commit 31dddc6a19042bad303cb3d3aa8f52a2cb22dd77 Author: Alex Richardson AuthorDate: 2021-06-16 15:35:55 +0000 Commit: Alex Richardson CommitDate: 2021-06-16 15:35:55 +0000 truss: minor cleanup and pedantic warning fixes Noticed while porting the recent truss compat32 changes to CheriBSD. This also fixes i386 tracing by zero-extending user addresses instead of sign-extending them. Reviewed By: jhb MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D30211 --- usr.bin/truss/main.c | 5 ++-- usr.bin/truss/syscalls.c | 69 ++++++++++++++++++++++++++++-------------------- 2 files changed, 44 insertions(+), 30 deletions(-) diff --git a/usr.bin/truss/main.c b/usr.bin/truss/main.c index 1a3aae75be88..942f98008071 100644 --- a/usr.bin/truss/main.c +++ b/usr.bin/truss/main.c @@ -55,7 +55,7 @@ __FBSDID("$FreeBSD$"); #include "extern.h" #include "syscall.h" -static void +static __dead2 void usage(void) { fprintf(stderr, "%s\n%s\n", @@ -118,7 +118,8 @@ main(int ac, char **av) fname = optarg; break; case 's': /* Specified string size */ - trussinfo->strsize = strtonum(optarg, 0, INT_MAX, &errstr); + trussinfo->strsize = (int)strtonum(optarg, 0, INT_MAX, + &errstr); if (errstr) errx(1, "maximum string size is %s: %s", errstr, optarg); break; diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c index c19f3c3e598d..8c3e833adaec 100644 --- a/usr.bin/truss/syscalls.c +++ b/usr.bin/truss/syscalls.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -863,18 +864,17 @@ lookup(struct xlat *xlat, int val, int base) if (xlat->val == val) return (xlat->str); switch (base) { - case 8: - sprintf(tmp, "0%o", val); - break; - case 16: - sprintf(tmp, "0x%x", val); - break; - case 10: - sprintf(tmp, "%u", val); - break; - default: - errx(1,"Unknown lookup base"); - break; + case 8: + sprintf(tmp, "0%o", val); + break; + case 16: + sprintf(tmp, "0x%x", val); + break; + case 10: + sprintf(tmp, "%u", val); + break; + default: + errx(1, "Unknown lookup base"); } return (tmp); } @@ -1116,12 +1116,12 @@ get_syscall(struct threadinfo *t, u_int number, u_int nargs) * Copy a fixed amount of bytes from the process. */ static int -get_struct(pid_t pid, uintptr_t offset, void *buf, int len) +get_struct(pid_t pid, psaddr_t offset, void *buf, size_t len) { struct ptrace_io_desc iorequest; iorequest.piod_op = PIOD_READ_D; - iorequest.piod_offs = (void *)offset; + iorequest.piod_offs = (void *)(uintptr_t)offset; iorequest.piod_addr = buf; iorequest.piod_len = len; if (ptrace(PT_IO, pid, (caddr_t)&iorequest, 0) < 0) @@ -1137,7 +1137,7 @@ get_struct(pid_t pid, uintptr_t offset, void *buf, int len) * only get that much. */ static char * -get_string(pid_t pid, uintptr_t addr, int max) +get_string(pid_t pid, psaddr_t addr, int max) { struct ptrace_io_desc iorequest; char *buf, *nbuf; @@ -1148,7 +1148,7 @@ get_string(pid_t pid, uintptr_t addr, int max) size = max + 1; else { /* Read up to the end of the current page. */ - size = PAGE_SIZE - ((uintptr_t)addr % PAGE_SIZE); + size = PAGE_SIZE - (addr % PAGE_SIZE); if (size > MAXSIZE) size = MAXSIZE; } @@ -1158,7 +1158,7 @@ get_string(pid_t pid, uintptr_t addr, int max) return (NULL); for (;;) { iorequest.piod_op = PIOD_READ_D; - iorequest.piod_offs = (void *)(addr + offset); + iorequest.piod_offs = (void *)((uintptr_t)addr + offset); iorequest.piod_addr = buf + offset; iorequest.piod_len = size; if (ptrace(PT_IO, pid, (caddr_t)&iorequest, 0) < 0) { @@ -1718,6 +1718,20 @@ print_sysctl(FILE *fp, int *oid, size_t len) fprintf(fp, "%s", name); } +/* + * Convert a 32-bit user-space pointer to psaddr_t. Currently, this + * sign-extends on MIPS and zero-extends on all other architectures. + */ +static psaddr_t +user_ptr32_to_psaddr(int32_t user_pointer) +{ +#if defined(__mips__) + return ((psaddr_t)(intptr_t)user_pointer); +#else + return ((psaddr_t)(uintptr_t)user_pointer); +#endif +} + /* * Converts a syscall argument into a string. Said string is * allocated via malloc(), so needs to be free()'d. sc is @@ -1769,7 +1783,7 @@ print_arg(struct syscall_arg *sc, unsigned long *args, register_t *retval, break; case ShmName: /* Handle special SHM_ANON value. */ - if ((char *)args[sc->offset] == SHM_ANON) { + if ((char *)(uintptr_t)args[sc->offset] == SHM_ANON) { fprintf(fp, "SHM_ANON"); break; } @@ -1829,7 +1843,7 @@ print_arg(struct syscall_arg *sc, unsigned long *args, register_t *retval, case ExecArgs: case ExecEnv: case StringArray: { - uintptr_t addr; + psaddr_t addr; union { int32_t strarray32[PAGE_SIZE / sizeof(int32_t)]; int64_t strarray64[PAGE_SIZE / sizeof(int64_t)]; @@ -1859,7 +1873,7 @@ print_arg(struct syscall_arg *sc, unsigned long *args, register_t *retval, * a partial page. */ addr = args[sc->offset]; - if (addr % pointer_size != 0) { + if (!__is_aligned(addr, pointer_size)) { print_pointer(fp, args[sc->offset]); break; } @@ -1875,20 +1889,19 @@ print_arg(struct syscall_arg *sc, unsigned long *args, register_t *retval, first = 1; i = 0; for (;;) { - uintptr_t straddr; + psaddr_t straddr; if (pointer_size == 4) { - if (u.strarray32[i] == 0) - break; - /* sign-extend 32-bit pointers */ - straddr = (intptr_t)u.strarray32[i]; + straddr = user_ptr32_to_psaddr(u.strarray32[i]); } else if (pointer_size == 8) { - if (u.strarray64[i] == 0) - break; - straddr = (intptr_t)u.strarray64[i]; + straddr = (psaddr_t)u.strarray64[i]; } else { errx(1, "Unsupported pointer size: %zu", pointer_size); } + + /* Stop once we read the first NULL pointer. */ + if (straddr == 0) + break; string = get_string(pid, straddr, 0); fprintf(fp, "%s \"%s\"", first ? "" : ",", string); free(string); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 16:21:06 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 22C50665442; Wed, 16 Jun 2021 16:21:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4r5s5xHxz4jTr; Wed, 16 Jun 2021 16:21:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A7B741E8FE; Wed, 16 Jun 2021 16:21:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GGL5R5007144; Wed, 16 Jun 2021 16:21:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GGL5n8007143; Wed, 16 Jun 2021 16:21:05 GMT (envelope-from git) Date: Wed, 16 Jun 2021 16:21:05 GMT Message-Id: <202106161621.15GGL5n8007143@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alex Richardson Subject: git: 8ba2e89e987c - main - truss: fix handling of 64-bit arguments/return values for compat32 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arichardson X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8ba2e89e987c7ae171c5f099e59d599294d626b7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 16:21:06 -0000 The branch main has been updated by arichardson: URL: https://cgit.FreeBSD.org/src/commit/?id=8ba2e89e987c7ae171c5f099e59d599294d626b7 commit 8ba2e89e987c7ae171c5f099e59d599294d626b7 Author: Alex Richardson AuthorDate: 2021-06-16 15:29:57 +0000 Commit: Alex Richardson CommitDate: 2021-06-16 15:29:57 +0000 truss: fix handling of 64-bit arguments/return values for compat32 Deciding whether to combine two values to a 64-bit one should be based on the process ABI, and not dependent on whether truss is compiled for an LP64 ABI. This is a follow-up cleanup for D27625. I found this while looking for uses of the `__LP64__` macro (since using this is wrong for CHERI systems). Test Plan: truss still works. Since I tested on AMD64 and all syscalls in the trace have their quad argument last there was no difference in the output. Should fix output for compat32 on MIPS64 though. Reviewed By: jhb MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D27637 --- usr.bin/truss/syscalls.c | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c index b9c6ff4ad361..c19f3c3e598d 100644 --- a/usr.bin/truss/syscalls.c +++ b/usr.bin/truss/syscalls.c @@ -1908,32 +1908,29 @@ print_arg(struct syscall_arg *sc, unsigned long *args, register_t *retval, fputs(" ]", fp); break; } -#ifdef __LP64__ - case Quad: - fprintf(fp, "%ld", args[sc->offset]); - break; - case QuadHex: - fprintf(fp, "0x%lx", args[sc->offset]); - break; -#else case Quad: case QuadHex: { - unsigned long long ll; + uint64_t value; + size_t pointer_size = + trussinfo->curthread->proc->abi->pointer_size; + if (pointer_size == 4) { #if _BYTE_ORDER == _LITTLE_ENDIAN - ll = (unsigned long long)args[sc->offset + 1] << 32 | - args[sc->offset]; + value = (uint64_t)args[sc->offset + 1] << 32 | + args[sc->offset]; #else - ll = (unsigned long long)args[sc->offset] << 32 | - args[sc->offset + 1]; + value = (uint64_t)args[sc->offset] << 32 | + args[sc->offset + 1]; #endif + } else { + value = (uint64_t)args[sc->offset]; + } if ((sc->type & ARG_MASK) == Quad) - fprintf(fp, "%lld", ll); + fprintf(fp, "%jd", (intmax_t)value); else - fprintf(fp, "0x%llx", ll); + fprintf(fp, "0x%jx", (intmax_t)value); break; } -#endif case PQuadHex: { uint64_t val; @@ -3015,11 +3012,9 @@ print_syscall_ret(struct trussinfo *trussinfo, int error, register_t *retval) fprintf(trussinfo->outfile, " ERR#%d '%s'\n", sysdecode_freebsd_to_abi_errno(t->proc->abi->abi, error), strerror(error)); - } -#ifndef __LP64__ - else if (sc->decode.ret_type == 2) { + } else if (sc->decode.ret_type == 2 && + t->proc->abi->pointer_size == 4) { off_t off; - #if _BYTE_ORDER == _LITTLE_ENDIAN off = (off_t)retval[1] << 32 | retval[0]; #else @@ -3027,11 +3022,10 @@ print_syscall_ret(struct trussinfo *trussinfo, int error, register_t *retval) #endif fprintf(trussinfo->outfile, " = %jd (0x%jx)\n", (intmax_t)off, (intmax_t)off); - } -#endif - else + } else { fprintf(trussinfo->outfile, " = %jd (0x%jx)\n", (intmax_t)retval[0], (intmax_t)retval[0]); + } } void From owner-dev-commits-src-all@freebsd.org Wed Jun 16 16:49:22 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 611BD6657DE; Wed, 16 Jun 2021 16:49:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4rkV2Lssz4nZQ; Wed, 16 Jun 2021 16:49:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 38F041F05E; Wed, 16 Jun 2021 16:49:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GGnM85035922; Wed, 16 Jun 2021 16:49:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GGnMce035921; Wed, 16 Jun 2021 16:49:22 GMT (envelope-from git) Date: Wed, 16 Jun 2021 16:49:22 GMT Message-Id: <202106161649.15GGnMce035921@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 07ef7a034965 - stable/13 - LinuxKPI: add fault_flag_allow_retry_first MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 07ef7a03496563fddd51e891dbc9e7e5d0b1dccf Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 16:49:22 -0000 The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=07ef7a03496563fddd51e891dbc9e7e5d0b1dccf commit 07ef7a03496563fddd51e891dbc9e7e5d0b1dccf Author: Greg V AuthorDate: 2021-06-09 23:09:16 +0000 Commit: Ed Maste CommitDate: 2021-06-16 16:48:02 +0000 LinuxKPI: add fault_flag_allow_retry_first Used by drm 5.7. Reviewed by: bz, hselasky, nc MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30673 (cherry picked from commit 597cc550e7b98294617cdd41800e9f132b6bcad9) --- sys/compat/linuxkpi/common/include/linux/mm.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/mm.h b/sys/compat/linuxkpi/common/include/linux/mm.h index 68a0f34acaf3..74709299ba1a 100644 --- a/sys/compat/linuxkpi/common/include/linux/mm.h +++ b/sys/compat/linuxkpi/common/include/linux/mm.h @@ -92,6 +92,9 @@ CTASSERT((VM_PROT_ALL & -(1 << 8)) == 0); #define FAULT_FLAG_REMOTE (1 << 7) #define FAULT_FLAG_INSTRUCTION (1 << 8) +#define fault_flag_allow_retry_first(flags) \ + (((flags) & (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_TRIED)) == FAULT_FLAG_ALLOW_RETRY) + typedef int (*pte_fn_t)(linux_pte_t *, pgtable_t, unsigned long addr, void *data); struct vm_area_struct { From owner-dev-commits-src-all@freebsd.org Wed Jun 16 16:50:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 66ACD665ACC; Wed, 16 Jun 2021 16:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4rlj2Wbpz4nvG; Wed, 16 Jun 2021 16:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3EBCF1F0E6; Wed, 16 Jun 2021 16:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GGoP7I044283; Wed, 16 Jun 2021 16:50:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GGoPH6044282; Wed, 16 Jun 2021 16:50:25 GMT (envelope-from git) Date: Wed, 16 Jun 2021 16:50:25 GMT Message-Id: <202106161650.15GGoPH6044282@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ed Maste Subject: git: 97f3e018fa2f - stable/12 - LinuxKPI: add fault_flag_allow_retry_first MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 97f3e018fa2f4af8fec23a4ac391d55b29da3978 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 16:50:25 -0000 The branch stable/12 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=97f3e018fa2f4af8fec23a4ac391d55b29da3978 commit 97f3e018fa2f4af8fec23a4ac391d55b29da3978 Author: Greg V AuthorDate: 2021-06-09 23:09:16 +0000 Commit: Ed Maste CommitDate: 2021-06-16 16:48:49 +0000 LinuxKPI: add fault_flag_allow_retry_first Used by drm 5.7. Reviewed by: bz, hselasky, nc MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30673 (cherry picked from commit 597cc550e7b98294617cdd41800e9f132b6bcad9) --- sys/compat/linuxkpi/common/include/linux/mm.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/mm.h b/sys/compat/linuxkpi/common/include/linux/mm.h index 7710b9d61812..ecc63b85d5b9 100644 --- a/sys/compat/linuxkpi/common/include/linux/mm.h +++ b/sys/compat/linuxkpi/common/include/linux/mm.h @@ -91,6 +91,9 @@ CTASSERT((VM_PROT_ALL & -(1 << 8)) == 0); #define FAULT_FLAG_REMOTE (1 << 7) #define FAULT_FLAG_INSTRUCTION (1 << 8) +#define fault_flag_allow_retry_first(flags) \ + (((flags) & (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_TRIED)) == FAULT_FLAG_ALLOW_RETRY) + typedef int (*pte_fn_t)(linux_pte_t *, pgtable_t, unsigned long addr, void *data); struct vm_area_struct { From owner-dev-commits-src-all@freebsd.org Wed Jun 16 18:28:38 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F09AF666B42; Wed, 16 Jun 2021 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4tx26Wrnz4vdP; Wed, 16 Jun 2021 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C858F202F5; Wed, 16 Jun 2021 18:28:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GISchK068858; Wed, 16 Jun 2021 18:28:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GISc8p068857; Wed, 16 Jun 2021 18:28:38 GMT (envelope-from git) Date: Wed, 16 Jun 2021 18:28:38 GMT Message-Id: <202106161828.15GISc8p068857@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: f336b45e943c - main - Undefine HAVE_(DE)REGISTER_FRAME in llvm's config.h on arm MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f336b45e943c7f9a90ffcea1a6c4c7039e54c73c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 18:28:39 -0000 The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=f336b45e943c7f9a90ffcea1a6c4c7039e54c73c commit f336b45e943c7f9a90ffcea1a6c4c7039e54c73c Author: Dimitry Andric AuthorDate: 2021-06-16 18:27:33 +0000 Commit: Dimitry Andric CommitDate: 2021-06-16 18:27:39 +0000 Undefine HAVE_(DE)REGISTER_FRAME in llvm's config.h on arm Otherwise, the lli tool (enable by WITH_CLANG_EXTRAS) won't link on arm, stating that __register_frame is undefined. This function is normally provided by libunwind, but explicitly not for the ARM Exception ABI. Reported by: oh PR: 255570 MFC after: 6 weeks --- lib/clang/include/llvm/Config/config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/clang/include/llvm/Config/config.h b/lib/clang/include/llvm/Config/config.h index d00cb511c9a8..ab8be211be67 100644 --- a/lib/clang/include/llvm/Config/config.h +++ b/lib/clang/include/llvm/Config/config.h @@ -59,11 +59,13 @@ /* Define if dladdr() is available on this platform. */ #define HAVE_DLADDR 1 +#if !defined(__arm__) || defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__) /* Define to 1 if we can register EH frames on this platform. */ #define HAVE_REGISTER_FRAME 1 /* Define to 1 if we can deregister EH frames on this platform. */ #define HAVE_DEREGISTER_FRAME 1 +#endif // !arm || USING_SJLJ_EXCEPTIONS || ARM_DWARF_EH_ /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 From owner-dev-commits-src-all@freebsd.org Wed Jun 16 18:40:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AC04E667033; Wed, 16 Jun 2021 18:40:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4vBF3g2Qz3CQN; Wed, 16 Jun 2021 18:40:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 61B24209C8; Wed, 16 Jun 2021 18:40:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GIe59l084853; Wed, 16 Jun 2021 18:40:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GIe5U1084850; Wed, 16 Jun 2021 18:40:05 GMT (envelope-from git) Date: Wed, 16 Jun 2021 18:40:05 GMT Message-Id: <202106161840.15GIe5U1084850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 6e26b4f8f4f6 - main - cxgbe tom: Remove orphaned function max_imm_tls_space(). MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6e26b4f8f4f6a9dd2a3ef88050108925f83dc460 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 18:40:05 -0000 The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=6e26b4f8f4f6a9dd2a3ef88050108925f83dc460 commit 6e26b4f8f4f6a9dd2a3ef88050108925f83dc460 Author: John Baldwin AuthorDate: 2021-06-16 18:39:39 +0000 Commit: John Baldwin CommitDate: 2021-06-16 18:39:39 +0000 cxgbe tom: Remove orphaned function max_imm_tls_space(). Reported by: markj Fixes: 789f2d4b3f33 cxgbe tom: Remove support for non-KTLS TLS offload. Sponsored by: Chelsio Communications --- sys/dev/cxgbe/tom/t4_tls.c | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/sys/dev/cxgbe/tom/t4_tls.c b/sys/dev/cxgbe/tom/t4_tls.c index 95fe96b9024a..e7debf75a0e3 100644 --- a/sys/dev/cxgbe/tom/t4_tls.c +++ b/sys/dev/cxgbe/tom/t4_tls.c @@ -507,23 +507,6 @@ tls_uninit_toep(struct toepcb *toep) sizeof(struct ulptx_sc_memrd) + \ AES_BLOCK_LEN + 1, 16)) -static inline u_int -max_imm_tls_space(int tx_credits) -{ - const int n = 2; /* Use only up to 2 desc for imm. data WR */ - int space; - - KASSERT(tx_credits >= 0 && - tx_credits <= MAX_OFLD_TX_CREDITS, - ("%s: %d credits", __func__, tx_credits)); - - if (tx_credits >= (n * EQ_ESIZE) / 16) - space = (n * EQ_ESIZE); - else - space = tx_credits * 16; - return (space); -} - static void write_tlstx_wr(struct fw_tlstx_data_wr *txwr, struct toepcb *toep, unsigned int immdlen, unsigned int plen, unsigned int expn, From owner-dev-commits-src-all@freebsd.org Wed Jun 16 19:32:13 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0EF236415E3; Wed, 16 Jun 2021 19:32:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4wLN72cqz3Gsh; Wed, 16 Jun 2021 19:32:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D9CB521728; Wed, 16 Jun 2021 19:32:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GJWC1W062236; Wed, 16 Jun 2021 19:32:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GJWCUs062235; Wed, 16 Jun 2021 19:32:12 GMT (envelope-from git) Date: Wed, 16 Jun 2021 19:32:12 GMT Message-Id: <202106161932.15GJWCUs062235@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 0b9a5c6fa173 - main - fusefs: improve warnings about buggy FUSE servers MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0b9a5c6fa1733e600dcdb3b9df3b3d0ad5996920 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 19:32:13 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=0b9a5c6fa1733e600dcdb3b9df3b3d0ad5996920 commit 0b9a5c6fa1733e600dcdb3b9df3b3d0ad5996920 Author: Alan Somers AuthorDate: 2021-06-15 20:24:05 +0000 Commit: Alan Somers CommitDate: 2021-06-16 19:31:31 +0000 fusefs: improve warnings about buggy FUSE servers The fusefs driver will print warning messages about FUSE servers that commit protocol violations. Previously it would print those warnings on every violation, but that could spam the console. Now it will print each warning no more than once per lifetime of the mount. There is also now a dtrace probe for each violation. MFC after: 2 weeks Sponsored by: Axcient Reviewed by: emaste, pfg Differential Revision: https://reviews.freebsd.org/D30780 --- sys/fs/fuse/fuse_internal.c | 19 ++++++++----------- sys/fs/fuse/fuse_io.c | 8 ++++---- sys/fs/fuse/fuse_ipc.c | 14 ++++++++++++++ sys/fs/fuse/fuse_ipc.h | 8 ++++++++ sys/fs/fuse/fuse_vfsops.c | 23 ++++++++++++++++++++--- sys/fs/fuse/fuse_vnops.c | 18 +++++++++--------- 6 files changed, 63 insertions(+), 27 deletions(-) diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c index a5f646e5f449..82e37ed5a466 100644 --- a/sys/fs/fuse/fuse_internal.c +++ b/sys/fs/fuse/fuse_internal.c @@ -870,9 +870,6 @@ fuse_internal_forget_send(struct mount *mp, fdisp_destroy(&fdi); } -SDT_PROBE_DEFINE2(fusefs, , internal, getattr_cache_incoherent, - "struct vnode*", "struct fuse_attr_out*"); - /* Fetch the vnode's attributes from the daemon*/ int fuse_internal_do_getattr(struct vnode *vp, struct vattr *vap, @@ -922,14 +919,14 @@ fuse_internal_do_getattr(struct vnode *vp, struct vattr *vap, * The server changed the file's size even though we had it * cached! That's a server bug. */ - SDT_PROBE2(fusefs, , internal, getattr_cache_incoherent, vp, - fao); - printf("%s: cache incoherent on %s! " - "Buggy FUSE server detected. To prevent data corruption, " - "disable the data cache by mounting with -o direct_io, or " - "as directed otherwise by your FUSE server's " - "documentation\n", __func__, - vnode_mount(vp)->mnt_stat.f_mntonname); + struct mount *mp = vnode_mount(vp); + struct fuse_data *data = fuse_get_mpdata(mp); + + fuse_warn(data, FSESS_WARN_CACHE_INCOHERENT, + "cache incoherent! " + "To prevent data corruption, disable the data cache " + "by mounting with -o direct_io, or as directed " + "otherwise by your FUSE server's documentation."); int iosize = fuse_iosize(vp); v_inval_buf_range(vp, 0, INT64_MAX, iosize); } diff --git a/sys/fs/fuse/fuse_io.c b/sys/fs/fuse/fuse_io.c index bcf6e5f601bf..47c7fb97e556 100644 --- a/sys/fs/fuse/fuse_io.c +++ b/sys/fs/fuse/fuse_io.c @@ -576,16 +576,16 @@ retry: fvdat->flag &= ~FN_SIZECHANGE; if (diff < 0) { - printf("WARNING: misbehaving FUSE filesystem " - "wrote more data than we provided it\n"); + fuse_warn(data, FSESS_WARN_WROTE_LONG, + "wrote more data than we provided it."); err = EINVAL; break; } else if (diff > 0) { /* Short write */ if (!direct_io) { - printf("WARNING: misbehaving FUSE filesystem: " + fuse_warn(data, FSESS_WARN_SHORT_WRITE, "short writes are only allowed with " - "direct_io\n"); + "direct_io."); } if (ioflag & IO_DIRECT) { /* Return early */ diff --git a/sys/fs/fuse/fuse_ipc.c b/sys/fs/fuse/fuse_ipc.c index 791ee9f38444..6b4a29214a96 100644 --- a/sys/fs/fuse/fuse_ipc.c +++ b/sys/fs/fuse/fuse_ipc.c @@ -1073,3 +1073,17 @@ fuse_ipc_destroy(void) counter_u64_free(fuse_ticket_count); uma_zdestroy(ticket_zone); } + +SDT_PROBE_DEFINE3(fusefs,, ipc, warn, "struct fuse_data*", "unsigned", "char*"); +void +fuse_warn(struct fuse_data *data, unsigned flag, const char *msg) +{ + SDT_PROBE3(fusefs, , ipc, warn, data, flag, msg); + if (!(data->dataflags & flag)) { + printf("WARNING: FUSE protocol violation for server mounted at " + "%s: %s " + "This warning will not be repeated.\n", + data->mp->mnt_stat.f_mntonname, msg); + data->dataflags |= flag; + } +} diff --git a/sys/fs/fuse/fuse_ipc.h b/sys/fs/fuse/fuse_ipc.h index 71562d9193ec..1351499c0712 100644 --- a/sys/fs/fuse/fuse_ipc.h +++ b/sys/fs/fuse/fuse_ipc.h @@ -233,6 +233,11 @@ struct fuse_data { #define FSESS_POSIX_LOCKS 0x2000 /* daemon supports POSIX locks */ #define FSESS_EXPORT_SUPPORT 0x10000 /* daemon supports NFS-style lookups */ #define FSESS_INTR 0x20000 /* interruptible mounts */ +#define FSESS_WARN_SHORT_WRITE 0x40000 /* Short write without direct_io */ +#define FSESS_WARN_WROTE_LONG 0x80000 /* Wrote more data than provided */ +#define FSESS_WARN_LSEXTATTR_LONG 0x100000 /* Returned too many extattrs */ +#define FSESS_WARN_CACHE_INCOHERENT 0x200000 /* Read cache incoherent */ +#define FSESS_WARN_WB_CACHE_INCOHERENT 0x400000 /* WB cache incoherent */ #define FSESS_MNTOPTS_MASK ( \ FSESS_DAEMON_CAN_SPY | FSESS_PUSH_SYMLINKS_IN | \ FSESS_DEFAULT_PERMISSIONS | FSESS_INTR) @@ -394,6 +399,9 @@ fuse_libabi_geq(struct fuse_data *data, uint32_t abi_maj, uint32_t abi_min) data->fuse_libabi_minor >= abi_min)); } +/* Print msg as a warning to the console, but no more than once per session */ +void fuse_warn(struct fuse_data *data, unsigned flag, const char *msg); + struct fuse_data *fdata_alloc(struct cdev *dev, struct ucred *cred); void fdata_trydestroy(struct fuse_data *data); void fdata_set_dead(struct fuse_data *data); diff --git a/sys/fs/fuse/fuse_vfsops.c b/sys/fs/fuse/fuse_vfsops.c index 7f47f8800994..b188996066d5 100644 --- a/sys/fs/fuse/fuse_vfsops.c +++ b/sys/fs/fuse/fuse_vfsops.c @@ -592,9 +592,26 @@ fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp) if (vnode_isreg(*vpp) && filesize != fvdat->cached_attrs.va_size && fvdat->flag & FN_SIZECHANGE) { - printf("%s: WB cache incoherent on %s!\n", __func__, - vnode_mount(*vpp)->mnt_stat.f_mntonname); - + if (data->cache_mode == fuse_data_cache_mode) { + const char *msg; + + if (fuse_libabi_geq(data, 7, 23)) { + msg = "writeback cache incoherent!." + "To prevent data corruption, disable " + "the writeback cache according to your " + "FUSE server's documentation."; + } else { + msg = "writeback cache incoherent!." + "To prevent data corruption, disable " + "the writeback cache by setting " + "vfs.fusefs.data_cache_mode to 0 or 1."; + } + fuse_warn(data, FSESS_WARN_WB_CACHE_INCOHERENT, msg); + } else { + /* If we get here, it's likely a fusefs kernel bug */ + printf("%s: WB cache incoherent on %s!\n", __func__, + vnode_mount(*vpp)->mnt_stat.f_mntonname); + } fvdat->flag &= ~FN_SIZECHANGE; } diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index a51c1b15e7f0..c79d8d5b5223 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -1177,8 +1177,6 @@ fuse_lookup_alloc(struct mount *mp, void *arg, int lkflags, struct vnode **vpp) SDT_PROBE_DEFINE3(fusefs, , vnops, cache_lookup, "int", "struct timespec*", "struct timespec*"); -SDT_PROBE_DEFINE2(fusefs, , vnops, lookup_cache_incoherent, - "struct vnode*", "struct fuse_entry_out*"); /* struct vnop_lookup_args { struct vnodeop_desc *a_desc; @@ -1388,20 +1386,19 @@ fuse_vnop_lookup(struct vop_lookup_args *ap) ((vap = VTOVA(vp)) && filesize != vap->va_size))) { - SDT_PROBE2(fusefs, , vnops, lookup_cache_incoherent, vp, feo); fvdat->flag &= ~FN_SIZECHANGE; /* * The server changed the file's size even * though we had it cached, or had dirty writes * in the WB cache! */ - printf("%s: cache incoherent on %s! " - "Buggy FUSE server detected. To prevent " + fuse_warn(data, FSESS_WARN_CACHE_INCOHERENT, + "cache incoherent! " + "To prevent " "data corruption, disable the data cache " "by mounting with -o direct_io, or as " "directed otherwise by your FUSE server's " - "documentation\n", __func__, - vnode_mount(vp)->mnt_stat.f_mntonname); + "documentation."); int iosize = fuse_iosize(vp); v_inval_buf_range(vp, 0, INT64_MAX, iosize); } @@ -2595,9 +2592,12 @@ fuse_vnop_listextattr(struct vop_listextattr_args *ap) linux_list = fdi.answ; /* FUSE doesn't allow the server to return more data than requested */ if (fdi.iosize > linux_list_len) { - printf("WARNING: FUSE protocol violation. Server returned " + struct fuse_data *data = fuse_get_mpdata(mp); + + fuse_warn(data, FSESS_WARN_LSEXTATTR_LONG, + "server returned " "more extended attribute data than requested; " - "should've returned ERANGE instead"); + "should've returned ERANGE instead."); } else { /* But returning less data is fine */ linux_list_len = fdi.iosize; From owner-dev-commits-src-all@freebsd.org Wed Jun 16 19:34:52 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 79D35641BB6; Wed, 16 Jun 2021 19:34:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4wPS33zjz3HFX; Wed, 16 Jun 2021 19:34:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 51BD0214E1; Wed, 16 Jun 2021 19:34:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GJYqYP062565; Wed, 16 Jun 2021 19:34:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GJYqWX062564; Wed, 16 Jun 2021 19:34:52 GMT (envelope-from git) Date: Wed, 16 Jun 2021 19:34:52 GMT Message-Id: <202106161934.15GJYqWX062564@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 7b8622fa220b - main - fusefs: support EVFILT_WRITE on /dev/fuse MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7b8622fa220b9c08041102f638f848c48e022644 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 19:34:52 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=7b8622fa220b9c08041102f638f848c48e022644 commit 7b8622fa220b9c08041102f638f848c48e022644 Author: Alan Somers AuthorDate: 2021-06-15 23:17:28 +0000 Commit: Alan Somers CommitDate: 2021-06-16 19:34:14 +0000 fusefs: support EVFILT_WRITE on /dev/fuse /dev/fuse is always ready for writing, so it's kind of dumb to poll it. But some applications do it anyway. Better to return ready than EINVAL. MFC after: 2 weeks Reviewed by: emaste, pfg Differential Revision: https://reviews.freebsd.org/D30784 --- sys/fs/fuse/fuse_device.c | 22 +++++++++++++++++++++- tests/sys/fs/fusefs/mockfs.cc | 20 +++++++++++++++++--- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/sys/fs/fuse/fuse_device.c b/sys/fs/fuse/fuse_device.c index cab5925c91de..8e000475c0ce 100644 --- a/sys/fs/fuse/fuse_device.c +++ b/sys/fs/fuse/fuse_device.c @@ -119,6 +119,7 @@ static struct cdevsw fuse_device_cdevsw = { }; static int fuse_device_filt_read(struct knote *kn, long hint); +static int fuse_device_filt_write(struct knote *kn, long hint); static void fuse_device_filt_detach(struct knote *kn); struct filterops fuse_device_rfiltops = { @@ -127,6 +128,11 @@ struct filterops fuse_device_rfiltops = { .f_event = fuse_device_filt_read, }; +struct filterops fuse_device_wfiltops = { + .f_isfd = 1, + .f_event = fuse_device_filt_write, +}; + /**************************** * * >>> Fuse device op defs @@ -180,12 +186,14 @@ fuse_device_filter(struct cdev *dev, struct knote *kn) error = devfs_get_cdevpriv((void **)&data); - /* EVFILT_WRITE is not supported; the device is always ready to write */ if (error == 0 && kn->kn_filter == EVFILT_READ) { kn->kn_fop = &fuse_device_rfiltops; kn->kn_hook = data; knlist_add(&data->ks_rsel.si_note, kn, 0); error = 0; + } else if (error == 0 && kn->kn_filter == EVFILT_WRITE) { + kn->kn_fop = &fuse_device_wfiltops; + error = 0; } else if (error == 0) { error = EINVAL; kn->kn_data = error; @@ -231,6 +239,18 @@ fuse_device_filt_read(struct knote *kn, long hint) return (ready); } +static int +fuse_device_filt_write(struct knote *kn, long hint) +{ + int ready; + + /* The device is always ready to write */ + kn->kn_data = 0; + ready = 1; + + return (ready); +} + /* * Resources are set up on a per-open basis */ diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc index 7e4991fb7bb9..7003472ca52b 100644 --- a/tests/sys/fs/fusefs/mockfs.cc +++ b/tests/sys/fs/fusefs/mockfs.cc @@ -867,8 +867,8 @@ void MockFS::read_request(mockfs_buf_in &in, ssize_t &res) { timeout_ts.tv_sec = 0; timeout_ts.tv_nsec = timeout_ms * 1'000'000; while (nready == 0) { - EV_SET(&changes[0], m_fuse_fd, EVFILT_READ, EV_ADD, 0, - 0, 0); + EV_SET(&changes[0], m_fuse_fd, EVFILT_READ, + EV_ADD | EV_ONESHOT, 0, 0, 0); nready = kevent(m_kq, &changes[0], 1, &events[0], 1, &timeout_ts); if (m_quit) @@ -930,12 +930,26 @@ void MockFS::read_request(mockfs_buf_in &in, ssize_t &res) { void MockFS::write_response(const mockfs_buf_out &out) { fd_set writefds; pollfd fds[1]; + struct kevent changes[1]; + struct kevent events[1]; int nready, nfds; ssize_t r; switch (m_pm) { case BLOCKING: - case KQ: /* EVFILT_WRITE is not supported */ + break; + case KQ: + EV_SET(&changes[0], m_fuse_fd, EVFILT_WRITE, + EV_ADD | EV_ONESHOT, 0, 0, 0); + nready = kevent(m_kq, &changes[0], 1, &events[0], 1, + NULL); + ASSERT_LE(0, nready) << strerror(errno); + ASSERT_EQ(events[0].ident, (uintptr_t)m_fuse_fd); + if (events[0].flags & EV_ERROR) + FAIL() << strerror(events[0].data); + else if (events[0].flags & EV_EOF) + FAIL() << strerror(events[0].fflags); + m_nready = events[0].data; break; case POLL: fds[0].fd = m_fuse_fd; From owner-dev-commits-src-all@freebsd.org Wed Jun 16 21:22:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F30FD6442AA; Wed, 16 Jun 2021 21:22:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4ynq69jRz3lrC; Wed, 16 Jun 2021 21:22:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BD65D23136; Wed, 16 Jun 2021 21:22:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GLMdhF008780; Wed, 16 Jun 2021 21:22:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GLMdFa008779; Wed, 16 Jun 2021 21:22:39 GMT (envelope-from git) Date: Wed, 16 Jun 2021 21:22:39 GMT Message-Id: <202106162122.15GLMdFa008779@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Chuck Tuffli Subject: git: 3a4ab18377c8 - main - bhyve: Fix cli regression with NVMe ram MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: chuck X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3a4ab18377c86c4588d79c4ca91fe8f4530dc90c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 21:22:40 -0000 The branch main has been updated by chuck: URL: https://cgit.FreeBSD.org/src/commit/?id=3a4ab18377c86c4588d79c4ca91fe8f4530dc90c commit 3a4ab18377c86c4588d79c4ca91fe8f4530dc90c Author: Chuck Tuffli AuthorDate: 2021-06-15 13:59:02 +0000 Commit: Chuck Tuffli CommitDate: 2021-06-16 21:19:01 +0000 bhyve: Fix cli regression with NVMe ram The configuration management refactoring inadvertently removed support for a RAM-backed NVMe Namespace (i.e. -s X,nvme,ram=16384). This adds it back. Reported by: andy@omniosce.org Reviewed by: jhb, andy@omniosce.org Fixes: 621b5090487d MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30717 --- usr.sbin/bhyve/pci_nvme.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/usr.sbin/bhyve/pci_nvme.c b/usr.sbin/bhyve/pci_nvme.c index 0abc0415a1d8..7d472830a40e 100644 --- a/usr.sbin/bhyve/pci_nvme.c +++ b/usr.sbin/bhyve/pci_nvme.c @@ -2800,11 +2800,32 @@ done: return (error); } +static int +pci_nvme_legacy_config(nvlist_t *nvl, const char *opts) +{ + char *cp, *ram; + + if (opts == NULL) + return (0); + + if (strncmp(opts, "ram=", 4) == 0) { + cp = strchr(opts, ','); + if (cp == NULL) { + set_config_value_node(nvl, "ram", opts + 4); + return (0); + } + ram = strndup(opts + 4, cp - opts - 4); + set_config_value_node(nvl, "ram", ram); + free(ram); + return (pci_parse_legacy_config(nvl, cp + 1)); + } else + return (blockif_legacy_config(nvl, opts)); +} struct pci_devemu pci_de_nvme = { .pe_emu = "nvme", .pe_init = pci_nvme_init, - .pe_legacy_config = blockif_legacy_config, + .pe_legacy_config = pci_nvme_legacy_config, .pe_barwrite = pci_nvme_write, .pe_barread = pci_nvme_read }; From owner-dev-commits-src-all@freebsd.org Wed Jun 16 21:56:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 66FC96444DB; Wed, 16 Jun 2021 21:56:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4zY42Rynz3w6l; Wed, 16 Jun 2021 21:56:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3C96522E74; Wed, 16 Jun 2021 21:56:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GLue7P048857; Wed, 16 Jun 2021 21:56:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GLueTP048856; Wed, 16 Jun 2021 21:56:40 GMT (envelope-from git) Date: Wed, 16 Jun 2021 21:56:40 GMT Message-Id: <202106162156.15GLueTP048856@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 9b876fbd504e - main - Simplify fuse_device_filt_write MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9b876fbd504e5c718d8d0275b32d806ab14558c8 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 21:56:40 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=9b876fbd504e5c718d8d0275b32d806ab14558c8 commit 9b876fbd504e5c718d8d0275b32d806ab14558c8 Author: gAlfonso-bit <83477269+gAlfonso-bit@users.noreply.github.com> AuthorDate: 2021-06-16 19:45:04 +0000 Commit: Alan Somers CommitDate: 2021-06-16 21:54:24 +0000 Simplify fuse_device_filt_write It always returns 1, so why bother having a variable. MFC after: 2 weeks MFC with: 7b8622fa220b9c08041102f638f848c48e022644 Pull Request: https://github.com/freebsd/freebsd-src/pull/478 --- sys/fs/fuse/fuse_device.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sys/fs/fuse/fuse_device.c b/sys/fs/fuse/fuse_device.c index 8e000475c0ce..f8807d6d1c26 100644 --- a/sys/fs/fuse/fuse_device.c +++ b/sys/fs/fuse/fuse_device.c @@ -242,13 +242,11 @@ fuse_device_filt_read(struct knote *kn, long hint) static int fuse_device_filt_write(struct knote *kn, long hint) { - int ready; - /* The device is always ready to write */ kn->kn_data = 0; - ready = 1; - return (ready); + /* The device is always ready to write, so we return 1*/ + return (1); } /* From owner-dev-commits-src-all@freebsd.org Wed Jun 16 21:57:04 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8C33E644995; Wed, 16 Jun 2021 21:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4zYX3Rmnz3w3r; Wed, 16 Jun 2021 21:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5EAE4233D8; Wed, 16 Jun 2021 21:57:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GLv4Bf048998; Wed, 16 Jun 2021 21:57:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GLv4Fu048997; Wed, 16 Jun 2021 21:57:04 GMT (envelope-from git) Date: Wed, 16 Jun 2021 21:57:04 GMT Message-Id: <202106162157.15GLv4Fu048997@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: ad2c95130b4b - stable/13 - netgraph/bridge: malloc without flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ad2c95130b4baceca8f314e4f1d966fcac8b96b9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 21:57:04 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=ad2c95130b4baceca8f314e4f1d966fcac8b96b9 commit ad2c95130b4baceca8f314e4f1d966fcac8b96b9 Author: Lutz Donnerhacke AuthorDate: 2021-06-13 22:00:35 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 21:55:35 +0000 netgraph/bridge: malloc without flags During tests an assert was triggered and pointed to missing flags in the newlink function of ng_bridge(4). Reported by: markj Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D30759 (cherry picked from commit 4c3280e58727e900d4c217054fe655e3512380f1) --- sys/netgraph/ng_bridge.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/netgraph/ng_bridge.c b/sys/netgraph/ng_bridge.c index baedeb911e6d..3f3d8b3c406e 100644 --- a/sys/netgraph/ng_bridge.c +++ b/sys/netgraph/ng_bridge.c @@ -395,9 +395,7 @@ ng_bridge_newhook(node_p node, hook_p hook, const char *name) if(NG_PEER_NODE(hook) == node) return (ELOOP); - link = malloc(sizeof(*link), M_NETGRAPH_BRIDGE, M_ZERO); - if (link == NULL) - return (ENOMEM); + link = malloc(sizeof(*link), M_NETGRAPH_BRIDGE, M_WAITOK | M_ZERO); link->stats.recvOctets = counter_u64_alloc(M_WAITOK); link->stats.recvPackets = counter_u64_alloc(M_WAITOK); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 21:59:33 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6656E644367; Wed, 16 Jun 2021 21:59:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G4zcP2RPpz3w7Y; Wed, 16 Jun 2021 21:59:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 38947234EA; Wed, 16 Jun 2021 21:59:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GLxXFg049267; Wed, 16 Jun 2021 21:59:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GLxXUl049266; Wed, 16 Jun 2021 21:59:33 GMT (envelope-from git) Date: Wed, 16 Jun 2021 21:59:33 GMT Message-Id: <202106162159.15GLxXUl049266@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 63312dd6d129 - stable/12 - netgraph/bridge: malloc without flags MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 63312dd6d12992d7e8c10bcd41389d5a25192f8f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 21:59:33 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=63312dd6d12992d7e8c10bcd41389d5a25192f8f commit 63312dd6d12992d7e8c10bcd41389d5a25192f8f Author: Lutz Donnerhacke AuthorDate: 2021-06-13 22:00:35 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-16 21:58:59 +0000 netgraph/bridge: malloc without flags During tests an assert was triggered and pointed to missing flags in the newlink function of ng_bridge(4). Reported by: markj Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D30759 (cherry picked from commit 4c3280e58727e900d4c217054fe655e3512380f1) --- sys/netgraph/ng_bridge.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/netgraph/ng_bridge.c b/sys/netgraph/ng_bridge.c index 5a8c1731aa3f..1a0840341020 100644 --- a/sys/netgraph/ng_bridge.c +++ b/sys/netgraph/ng_bridge.c @@ -395,9 +395,7 @@ ng_bridge_newhook(node_p node, hook_p hook, const char *name) if(NG_PEER_NODE(hook) == node) return (ELOOP); - link = malloc(sizeof(*link), M_NETGRAPH_BRIDGE, M_ZERO); - if (link == NULL) - return (ENOMEM); + link = malloc(sizeof(*link), M_NETGRAPH_BRIDGE, M_WAITOK | M_ZERO); link->stats.recvOctets = counter_u64_alloc(M_WAITOK); link->stats.recvPackets = counter_u64_alloc(M_WAITOK); From owner-dev-commits-src-all@freebsd.org Wed Jun 16 22:23:50 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4FAC3646138; Wed, 16 Jun 2021 22:23:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G508Q1qlbz4StD; Wed, 16 Jun 2021 22:23:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 26D5B239D0; Wed, 16 Jun 2021 22:23:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15GMNoFt090199; Wed, 16 Jun 2021 22:23:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15GMNoFC090198; Wed, 16 Jun 2021 22:23:50 GMT (envelope-from git) Date: Wed, 16 Jun 2021 22:23:50 GMT Message-Id: <202106162223.15GMNoFC090198@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 8fa5c577de30 - main - crypto: Remove now-unused crypto_cursor_seg{base, len}. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8fa5c577de301642de4039a616da6f38bcb54bc5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 22:23:50 -0000 The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8fa5c577de301642de4039a616da6f38bcb54bc5 commit 8fa5c577de301642de4039a616da6f38bcb54bc5 Author: John Baldwin AuthorDate: 2021-06-16 22:22:37 +0000 Commit: John Baldwin CommitDate: 2021-06-16 22:23:16 +0000 crypto: Remove now-unused crypto_cursor_seg{base,len}. Callers should use crypto_cursor_segment() instead. Reviewed by: markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30448 --- ObsoleteFiles.inc | 4 ++++ share/man/man9/Makefile | 2 -- share/man/man9/crypto_buffer.9 | 14 +------------- sys/opencrypto/criov.c | 17 ----------------- sys/opencrypto/cryptodev.h | 2 -- 5 files changed, 5 insertions(+), 34 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 19aa08e23391..3802307d7761 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -40,6 +40,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20210616: Remove crypto_cursor_seg{base,len} +OLD_FILES+=usr/share/man/man9/crypto_cursor_segbase.9.gz +OLD_FILES+=usr/share/man/man9/crypto_cursor_seglen.9.gz + # 20210613: new clang import which bumps version from 11.0.1 to 12.0.0. OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/algorithm OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/complex diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index e4b4a8b5c6b1..60bfc907f16a 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -924,8 +924,6 @@ MLINKS+=crypto_buffer.9 crypto_apply.9 \ crypto_buffer.9 crypto_cursor_copyback.9 \ crypto_buffer.9 crypto_cursor_copydata.9 \ crypto_buffer.9 crypto_cursor_copydata_noadv.9 \ - crypto_buffer.9 crypto_cursor_segbase.9 \ - crypto_buffer.9 crypto_cursor_seglen.9 \ crypto_buffer.9 crypto_cursor_segment.9 \ crypto_buffer.9 CRYPTO_HAS_OUTPUT_BUFFER.9 MLINKS+=crypto_driver.9 crypto_copyback.9 \ diff --git a/share/man/man9/crypto_buffer.9 b/share/man/man9/crypto_buffer.9 index a16206e8e607..c6911d3bb1c9 100644 --- a/share/man/man9/crypto_buffer.9 +++ b/share/man/man9/crypto_buffer.9 @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 25, 2021 +.Dd June 16, 2021 .Dt CRYPTO_BUFFER 9 .Os .Sh NAME @@ -95,10 +95,6 @@ .Fc .Ft void * .Fn crypto_cursor_segment "struct crypto_buffer_cursor *cc" "size_t *len" -.Ft void * -.Fn crypto_cursor_segbase "struct crypto_buffer_cursor *cc" -.Ft size_t -.Fn crypto_cursor_seglen "struct crypto_buffer_cursor *cc" .Ft bool .Fn CRYPTO_HAS_OUTPUT_BUFFER "struct cryptop *crp" .Sh DESCRIPTION @@ -300,13 +296,6 @@ returns the start of the virtually-contiguous segment at the current position of .Fa cc . The length of the segment is stored in .Fa len . -.Pp -.Fn crypto_cursor_segbase -and -.Fn crypto_cursor_seglen -return the start and length, respectively, -of the virtually-contiguous segment at the current position of -.Fa cc . .Sh RETURN VALUES .Fn crypto_apply and @@ -315,7 +304,6 @@ return the return value from the caller-supplied callback function. .Pp .Fn crypto_buffer_contiguous_subsegment , .Fn crypto_contiguous_subsegment , -.Fn crypto_cursor_segbase , and .Fn crypto_cursor_segment return a pointer to a contiguous segment or diff --git a/sys/opencrypto/criov.c b/sys/opencrypto/criov.c index 25702e3592fe..52f3d7988230 100644 --- a/sys/opencrypto/criov.c +++ b/sys/opencrypto/criov.c @@ -433,23 +433,6 @@ crypto_cursor_segment(struct crypto_buffer_cursor *cc, size_t *len) } } -void * -crypto_cursor_segbase(struct crypto_buffer_cursor *cc) -{ - size_t len; - - return (crypto_cursor_segment(cc, &len)); -} - -size_t -crypto_cursor_seglen(struct crypto_buffer_cursor *cc) -{ - size_t len; - - crypto_cursor_segment(cc, &len); - return (len); -} - void crypto_cursor_copyback(struct crypto_buffer_cursor *cc, int size, const void *vsrc) diff --git a/sys/opencrypto/cryptodev.h b/sys/opencrypto/cryptodev.h index fae8ca2787c2..ce5bfefaed9d 100644 --- a/sys/opencrypto/cryptodev.h +++ b/sys/opencrypto/cryptodev.h @@ -662,8 +662,6 @@ void crypto_cursor_init(struct crypto_buffer_cursor *cc, const struct crypto_buffer *cb); void crypto_cursor_advance(struct crypto_buffer_cursor *cc, size_t amount); void *crypto_cursor_segment(struct crypto_buffer_cursor *cc, size_t *len); -void *crypto_cursor_segbase(struct crypto_buffer_cursor *cc); -size_t crypto_cursor_seglen(struct crypto_buffer_cursor *cc); void crypto_cursor_copyback(struct crypto_buffer_cursor *cc, int size, const void *vsrc); void crypto_cursor_copydata(struct crypto_buffer_cursor *cc, int size, From owner-dev-commits-src-all@freebsd.org Thu Jun 17 02:01:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 44995649A9E; Thu, 17 Jun 2021 02:01:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G54z51Xbyz4lgX; Thu, 17 Jun 2021 02:01:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1D2D1269EC; Thu, 17 Jun 2021 02:01:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15H215u3078743; Thu, 17 Jun 2021 02:01:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15H215Z6078742; Thu, 17 Jun 2021 02:01:05 GMT (envelope-from git) Date: Thu, 17 Jun 2021 02:01:05 GMT Message-Id: <202106170201.15H215Z6078742@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 0a99422970d7 - main - Move mips and arm to 1000Hz by default. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0a99422970d7fbdb1e17724339a8dc37082f3431 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 02:01:05 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=0a99422970d7fbdb1e17724339a8dc37082f3431 commit 0a99422970d7fbdb1e17724339a8dc37082f3431 Author: Warner Losh AuthorDate: 2021-06-17 02:00:14 +0000 Commit: Warner Losh CommitDate: 2021-06-17 02:00:14 +0000 Move mips and arm to 1000Hz by default. armv6 and armv7 systems already were 1000Hz. The other armv5 were a mix of 100 and 1000. This changes them to 1000. Should there be issues, we can add options HZ=100 to the systems that have bad performance at the drop of a hat. mips is a lot more complicated. But most of the systems are already 1000HZ. The hardware exceptions are all fast enough to run at 1000Hz. MALTA is our primary emulator, and history has shown emulators tend to like 100Hz better, so run those systems at 100Hz. As with arm, any system that shows a huge performance regression can reverted to 100Hz easily. This was going to be committed well in advance of the 13 branch, but it was delayed and forgotten til now. Discussed on: #bsdmips ages ago Sponsored by: Netflix --- sys/kern/subr_param.c | 6 +----- sys/mips/conf/AR71XX_BASE | 1 - sys/mips/conf/PB92 | 1 - sys/mips/conf/QCA953X_BASE | 1 - sys/mips/conf/std.AR5312 | 1 - sys/mips/conf/std.AR5315 | 1 - sys/mips/conf/std.AR724X | 1 - sys/mips/conf/std.AR91XX | 1 - sys/mips/conf/std.AR933X | 1 - sys/mips/conf/std.AR934X | 1 - sys/mips/conf/std.MALTA | 1 + sys/mips/conf/std.QCA955X | 1 - sys/mips/conf/std.XLP | 1 - 13 files changed, 2 insertions(+), 16 deletions(-) diff --git a/sys/kern/subr_param.c b/sys/kern/subr_param.c index 39ec48a32cb3..bac028bd8e25 100644 --- a/sys/kern/subr_param.c +++ b/sys/kern/subr_param.c @@ -63,11 +63,7 @@ __FBSDID("$FreeBSD$"); */ #ifndef HZ -# if defined(__mips__) || defined(__arm__) -# define HZ 100 -# else -# define HZ 1000 -# endif +# define HZ 1000 # ifndef HZ_VM # define HZ_VM 100 # endif diff --git a/sys/mips/conf/AR71XX_BASE b/sys/mips/conf/AR71XX_BASE index 6ce21dc58857..2d6e834c8ef9 100644 --- a/sys/mips/conf/AR71XX_BASE +++ b/sys/mips/conf/AR71XX_BASE @@ -11,7 +11,6 @@ machine mips mips ident AR71XX_BASE cpu CPU_MIPS24K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 options HWPMC_HOOKS files "../atheros/files.ar71xx" diff --git a/sys/mips/conf/PB92 b/sys/mips/conf/PB92 index 64a0e6db120b..30c134ef1e74 100644 --- a/sys/mips/conf/PB92 +++ b/sys/mips/conf/PB92 @@ -8,7 +8,6 @@ ident PB92 # XXX The default load address in the Uboot environment is 0x80010000 makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 # The PB92 has 32mb of RAM; hard-code that options AR71XX_REALMEM=32*1024*1024 diff --git a/sys/mips/conf/QCA953X_BASE b/sys/mips/conf/QCA953X_BASE index ef5d3d71e255..b8dac404f30e 100644 --- a/sys/mips/conf/QCA953X_BASE +++ b/sys/mips/conf/QCA953X_BASE @@ -14,7 +14,6 @@ machine mips mips ident QCA953X_BASE cpu CPU_MIPS24K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 files "../atheros/files.ar71xx" hints "QCA953X_BASE.hints" diff --git a/sys/mips/conf/std.AR5312 b/sys/mips/conf/std.AR5312 index 56a45cb4c869..d57eea069e3f 100644 --- a/sys/mips/conf/std.AR5312 +++ b/sys/mips/conf/std.AR5312 @@ -10,7 +10,6 @@ machine mips mips #ident AR5312_BASE cpu CPU_MIPS4KC makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 makeoptions MODULES_OVERRIDE="" diff --git a/sys/mips/conf/std.AR5315 b/sys/mips/conf/std.AR5315 index 74a888c32f85..77b81bffb1fb 100644 --- a/sys/mips/conf/std.AR5315 +++ b/sys/mips/conf/std.AR5315 @@ -10,7 +10,6 @@ machine mips mips #ident AR5315_BASE cpu CPU_MIPS4KC makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 makeoptions MODULES_OVERRIDE="" diff --git a/sys/mips/conf/std.AR724X b/sys/mips/conf/std.AR724X index 3201d2f2e4bc..a03070899855 100644 --- a/sys/mips/conf/std.AR724X +++ b/sys/mips/conf/std.AR724X @@ -12,7 +12,6 @@ machine mips mips #ident AR724X_BASE cpu CPU_MIPS24K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 options HWPMC_HOOKS files "../atheros/files.ar71xx" diff --git a/sys/mips/conf/std.AR91XX b/sys/mips/conf/std.AR91XX index c1dee4e7a5d0..88f05ca3b860 100644 --- a/sys/mips/conf/std.AR91XX +++ b/sys/mips/conf/std.AR91XX @@ -14,7 +14,6 @@ machine mips mips #ident std.AR91XX cpu CPU_MIPS24K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 files "../atheros/files.ar71xx" hints "AR91XX_BASE.hints" diff --git a/sys/mips/conf/std.AR933X b/sys/mips/conf/std.AR933X index 832e1db3c958..ddcd4a1824dd 100644 --- a/sys/mips/conf/std.AR933X +++ b/sys/mips/conf/std.AR933X @@ -14,7 +14,6 @@ machine mips mips #ident std.AR933X cpu CPU_MIPS24K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 files "../atheros/files.ar71xx" hints "AR933X_BASE.hints" diff --git a/sys/mips/conf/std.AR934X b/sys/mips/conf/std.AR934X index a4e072c1ea1e..72b0ca137c98 100644 --- a/sys/mips/conf/std.AR934X +++ b/sys/mips/conf/std.AR934X @@ -14,7 +14,6 @@ machine mips mips #ident std.AR934X cpu CPU_MIPS74K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 files "../atheros/files.ar71xx" hints "AR934X_BASE.hints" diff --git a/sys/mips/conf/std.MALTA b/sys/mips/conf/std.MALTA index 7b951b926824..4f7812fa7c72 100644 --- a/sys/mips/conf/std.MALTA +++ b/sys/mips/conf/std.MALTA @@ -15,6 +15,7 @@ makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols options DDB options KDB +options HZ=100 options SCHED_4BSD #4BSD scheduler options INET #InterNETworking diff --git a/sys/mips/conf/std.QCA955X b/sys/mips/conf/std.QCA955X index 8200c79250e1..843da55a31f2 100644 --- a/sys/mips/conf/std.QCA955X +++ b/sys/mips/conf/std.QCA955X @@ -15,7 +15,6 @@ machine mips mips #ident std.QCA955X cpu CPU_MIPS74K makeoptions KERNLOADADDR=0x80050000 -options HZ=1000 files "../atheros/files.ar71xx" hints "QCA955X_BASE.hints" diff --git a/sys/mips/conf/std.XLP b/sys/mips/conf/std.XLP index ea6216dfcc6c..979791c74a58 100644 --- a/sys/mips/conf/std.XLP +++ b/sys/mips/conf/std.XLP @@ -35,7 +35,6 @@ options MD_ROOT # MD is a potential root device options MD_ROOT_SIZE=132000 options ROOTDEVNAME=\"ufs:md0\" options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions -options HZ=1000 options NO_SWAPPING # Debugging options From owner-dev-commits-src-all@freebsd.org Thu Jun 17 06:51:59 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C558664D6E1; Thu, 17 Jun 2021 06:51:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5CQl5Jrdz3PSj; Thu, 17 Jun 2021 06:51:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9F2F42B1F; Thu, 17 Jun 2021 06:51:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15H6pxFk065646; Thu, 17 Jun 2021 06:51:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15H6pxJw065645; Thu, 17 Jun 2021 06:51:59 GMT (envelope-from git) Date: Thu, 17 Jun 2021 06:51:59 GMT Message-Id: <202106170651.15H6pxJw065645@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Marko Zec Subject: git: b6f8436b094d - main - tests: Revise FIB lookups per second benchmarking routines MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zec X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b6f8436b094daf7b1c429ce74997a4daf6994fcb Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 06:51:59 -0000 The branch main has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=b6f8436b094daf7b1c429ce74997a4daf6994fcb commit b6f8436b094daf7b1c429ce74997a4daf6994fcb Author: Marko Zec AuthorDate: 2021-06-17 06:49:09 +0000 Commit: Marko Zec CommitDate: 2021-06-17 06:49:09 +0000 tests: Revise FIB lookups per second benchmarking routines Fix a bug in the LPM SEQ benchmark (missing break inside a switch block) by restructuring the test loop, while introducing additional two synthetic test options: ANN: scan only the address space announced in current RIB REP: repeat lookups over several keys in a sliding window scheme The total of eight combinations of test options are now available through dedicated sysctl hooks. Differential Revision: Reviewed by: melifaro MFC after: 3 days --- sys/tests/fib_lookup/fib_lookup.c | 140 ++++++++++++++++++++++++++++++++------ 1 file changed, 119 insertions(+), 21 deletions(-) diff --git a/sys/tests/fib_lookup/fib_lookup.c b/sys/tests/fib_lookup/fib_lookup.c index 4093ff9dd487..927664166fdd 100644 --- a/sys/tests/fib_lookup/fib_lookup.c +++ b/sys/tests/fib_lookup/fib_lookup.c @@ -505,16 +505,46 @@ SYSCTL_PROC(_net_route_test, OID_AUTO, run_inet_scan, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, run_test_inet_scan, "I", "Execute fib4_lookup scan tests"); +#define LPS_SEQ 0x1 +#define LPS_ANN 0x2 +#define LPS_REP 0x4 + +struct lps_walk_state { + uint32_t *keys; + int pos; + int lim; +}; + +static int +reduce_keys(struct rtentry *rt, void *_data) +{ + struct lps_walk_state *wa = (struct lps_walk_state *) _data; + struct in_addr addr; + uint32_t scopeid; + int plen; + + rt_get_inet_prefix_plen(rt, &addr, &plen, &scopeid); + wa->keys[wa->pos] = ntohl(addr.s_addr) | + (wa->keys[wa->pos] & ~(0xffffffffU << (32 - plen))); + + wa->pos++; + return (wa->pos == wa->lim); +} + static int rnd_lps(SYSCTL_HANDLER_ARGS) { struct epoch_tracker et; struct in_addr key; + struct lps_walk_state wa; struct timespec ts_pre, ts_post; + struct nhop_object *nh_fib; uint64_t total_diff, lps; uint32_t *keys; + uint32_t t, p; uintptr_t acc = 0; - int count = 0; + int i, pos, count = 0; + int seq = 0, rep = 0; int error; error = sysctl_handle_int(oidp, &count, 0, req); @@ -526,25 +556,62 @@ rnd_lps(SYSCTL_HANDLER_ARGS) keys = malloc(sizeof(*keys) * count, M_TEMP, M_NOWAIT); if (keys == NULL) return (ENOMEM); - printf("Preparing %d random keys...\n", count); arc4random_buf(keys, sizeof(*keys) * count); - printf("Starting LPS test...\n"); + if (arg2 & LPS_ANN) { + wa.keys = keys; + wa.pos = 0; + wa.lim = count; + printf("Reducing keys to announced address space...\n"); + do { + rib_walk(RT_DEFAULT_FIB, AF_INET, false, reduce_keys, + &wa); + } while (wa.pos < wa.lim); + printf("Reshuffling keys...\n"); + for (int i = 0; i < count; i++) { + p = random() % count; + t = keys[p]; + keys[p] = keys[i]; + keys[i] = t; + } + } + + if (arg2 & LPS_REP) { + rep = 1; + printf("REP "); + } + if (arg2 & LPS_SEQ) { + seq = 1; + printf("SEQ"); + } else if (arg2 & LPS_ANN) + printf("ANN"); + else + printf("RND"); + printf(" LPS test starting...\n"); NET_EPOCH_ENTER(et); nanouptime(&ts_pre); - switch (arg2) { - case 0: - for (int i = 0; i < count; i++) { - key.s_addr = keys[i] + acc; - acc += (uintptr_t) fib4_lookup(RT_DEFAULT_FIB, key, 0, - NHR_NONE, 0); + for (i = 0, pos = 0; i < count; i++) { + key.s_addr = keys[pos++] ^ ((acc >> 10) & 0xff); + nh_fib = fib4_lookup(RT_DEFAULT_FIB, key, 0, NHR_NONE, 0); + if (seq) { + if (nh_fib != NULL) { + acc += (uintptr_t) nh_fib + 123; + if (acc & 0x1000) + acc += (uintptr_t) nh_fib->nh_ifp; + else + acc -= (uintptr_t) nh_fib->nh_ifp; + } else + acc ^= (acc >> 3) + (acc << 2) + i; + if (acc & 0x800) + pos++; + if (pos >= count) + pos = 0; } - case 1: - for (int i = 0; i < count; i++) { - key.s_addr = keys[i]; - acc += (uintptr_t) fib4_lookup(RT_DEFAULT_FIB, key, 0, - NHR_NONE, 0); + if (rep && ((i & 0xf) == 0xf)) { + pos -= 0xf; + if (pos < 0) + pos += 0xf; } } nanouptime(&ts_post); @@ -553,22 +620,53 @@ rnd_lps(SYSCTL_HANDLER_ARGS) free(keys, M_TEMP); total_diff = (ts_post.tv_sec - ts_pre.tv_sec) * 1000000000 + - (ts_post.tv_nsec - ts_pre.tv_nsec) + (acc & 1); + (ts_post.tv_nsec - ts_pre.tv_nsec); lps = 1000000000ULL * count / total_diff; - printf("%d lookups in %zu nanoseconds, %lu.%06lu MLPS\n", - count, total_diff, lps / 1000000, lps % 1000000); + printf("%d lookups in %zu.%06zu milliseconds, %lu.%06lu MLPS\n", + count, total_diff / 1000000, total_diff % 1000000, + lps / 1000000, lps % 1000000); return (0); } -SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq, +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, independent lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd_ann, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_ANN, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "independent lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_SEQ, rnd_lps, "I", "Measure lookups per second, uniformly random keys, " "artificial dependencies between lookups"); -SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd, +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq_ann, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - 0, 1, rnd_lps, "I", - "Measure lookups per second, uniformly random keys, independent lookups"); + 0, LPS_SEQ | LPS_ANN, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "artificial dependencies between lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_REP, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, independent lookups, " + "repeated keys"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd_ann_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_ANN | LPS_REP, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "independent lookups, repeated keys"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_SEQ | LPS_REP, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, " + "artificial dependencies between lookups, repeated keys"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq_ann_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_SEQ | LPS_ANN | LPS_REP, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "artificial dependencies between lookups, repeated keys"); static int test_fib_lookup_modevent(module_t mod, int type, void *unused) From owner-dev-commits-src-all@freebsd.org Thu Jun 17 08:16:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D452E64EFE5; Thu, 17 Jun 2021 08:16:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5FJ45RSMz3n8Y; Thu, 17 Jun 2021 08:16:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A263A3D4B; Thu, 17 Jun 2021 08:16:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15H8GKr1073312; Thu, 17 Jun 2021 08:16:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15H8GKCZ073311; Thu, 17 Jun 2021 08:16:20 GMT (envelope-from git) Date: Thu, 17 Jun 2021 08:16:20 GMT Message-Id: <202106170816.15H8GKCZ073311@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 7da8312f7bf0 - stable/13 - Do not forward datagrams originated by link-local addresses MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7da8312f7bf050be4fe436ea66ac46414312ae26 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 08:16:20 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=7da8312f7bf050be4fe436ea66ac46414312ae26 commit 7da8312f7bf050be4fe436ea66ac46414312ae26 Author: Zhenlei Huang AuthorDate: 2021-05-18 20:51:37 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-17 08:08:59 +0000 Do not forward datagrams originated by link-local addresses The current implement of ip_input() reject packets destined for 169.254.0.0/16, but not those original from 169.254.0.0/16 link-local addresses. Fix to fully respect RFC 3927 section 2.7. PR: 255388 Reviewed by: donner, rgrimes, karels Differential Revision: https://reviews.freebsd.org/D29968 Reviewed by: rgrimes, donner, karels, marcus, emaste Differential Revision: https://reviews.freebsd.org/D30374 (cherry picked from commit 3d846e48227e2e78c1e7b35145f57353ffda56ba) (cherry picked from commit 03b0505b8fe848f33f2f38fe89dd5538908c847e) --- sys/netinet/ip_input.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index a85f8ac7b567..57c77f29b3eb 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -736,14 +736,12 @@ passin: } ia = NULL; } - /* RFC 3927 2.7: Do not forward datagrams for 169.254.0.0/16. */ - if (IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr))) { - IPSTAT_INC(ips_cantforward); - m_freem(m); - return; - } if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { - if (V_ip_mrouter) { + /* + * RFC 3927 2.7: Do not forward multicast packets from + * IN_LINKLOCAL. + */ + if (V_ip_mrouter && !IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { /* * If we are acting as a multicast router, all * incoming multicast packets are passed to the @@ -778,6 +776,13 @@ passin: goto ours; if (ip->ip_dst.s_addr == INADDR_ANY) goto ours; + /* RFC 3927 2.7: Do not forward packets to or from IN_LINKLOCAL. */ + if (IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr)) || + IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { + IPSTAT_INC(ips_cantforward); + m_freem(m); + return; + } /* * Not for us; forward if possible and desirable. From owner-dev-commits-src-all@freebsd.org Thu Jun 17 08:19:14 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B2C0E64F006; Thu, 17 Jun 2021 08:19:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5FMQ4kSTz3nlf; Thu, 17 Jun 2021 08:19:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8A9F33D4E; Thu, 17 Jun 2021 08:19:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15H8JEnY073631; Thu, 17 Jun 2021 08:19:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15H8JE14073630; Thu, 17 Jun 2021 08:19:14 GMT (envelope-from git) Date: Thu, 17 Jun 2021 08:19:14 GMT Message-Id: <202106170819.15H8JE14073630@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: c0a91473f5be - stable/12 - Do not forward datagrams originated by link-local addresses MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: c0a91473f5be9f0660d1e043b1f08f7d50e815ad Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 08:19:14 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=c0a91473f5be9f0660d1e043b1f08f7d50e815ad commit c0a91473f5be9f0660d1e043b1f08f7d50e815ad Author: Zhenlei Huang AuthorDate: 2021-05-18 20:51:37 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-17 08:18:46 +0000 Do not forward datagrams originated by link-local addresses The current implement of ip_input() reject packets destined for 169.254.0.0/16, but not those original from 169.254.0.0/16 link-local addresses. Fix to fully respect RFC 3927 section 2.7. PR: 255388 Reviewed by: donner, rgrimes, karels Differential Revision: https://reviews.freebsd.org/D29968 Reviewed by: rgrimes, donner, karels, marcus, emaste Differential Revision: https://reviews.freebsd.org/D30374 (cherry picked from commit 3d846e48227e2e78c1e7b35145f57353ffda56ba) (cherry picked from commit 03b0505b8fe848f33f2f38fe89dd5538908c847e) --- sys/netinet/ip_input.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index e329b65b4e21..6e692083c121 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -738,14 +738,12 @@ passin: IF_ADDR_RUNLOCK(ifp); ia = NULL; } - /* RFC 3927 2.7: Do not forward datagrams for 169.254.0.0/16. */ - if (IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr))) { - IPSTAT_INC(ips_cantforward); - m_freem(m); - return; - } if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { - if (V_ip_mrouter) { + /* + * RFC 3927 2.7: Do not forward multicast packets from + * IN_LINKLOCAL. + */ + if (V_ip_mrouter && !IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { /* * If we are acting as a multicast router, all * incoming multicast packets are passed to the @@ -780,6 +778,13 @@ passin: goto ours; if (ip->ip_dst.s_addr == INADDR_ANY) goto ours; + /* RFC 3927 2.7: Do not forward packets to or from IN_LINKLOCAL. */ + if (IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr)) || + IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { + IPSTAT_INC(ips_cantforward); + m_freem(m); + return; + } /* * Not for us; forward if possible and desirable. From owner-dev-commits-src-all@freebsd.org Thu Jun 17 08:21:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AD50F64F108; Thu, 17 Jun 2021 08:21:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5FQJ4ZpQz3qBS; Thu, 17 Jun 2021 08:21:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 859E64007; Thu, 17 Jun 2021 08:21:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15H8Lirp082845; Thu, 17 Jun 2021 08:21:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15H8Lid0082844; Thu, 17 Jun 2021 08:21:44 GMT (envelope-from git) Date: Thu, 17 Jun 2021 08:21:44 GMT Message-Id: <202106170821.15H8Lid0082844@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 9d30353cb494 - stable/11 - Do not forward datagrams originated by link-local addresses MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 9d30353cb49467ba2b672673a5765588c4e857ec Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 08:21:44 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=9d30353cb49467ba2b672673a5765588c4e857ec commit 9d30353cb49467ba2b672673a5765588c4e857ec Author: Zhenlei Huang AuthorDate: 2021-05-18 20:51:37 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-17 08:21:00 +0000 Do not forward datagrams originated by link-local addresses The current implement of ip_input() reject packets destined for 169.254.0.0/16, but not those original from 169.254.0.0/16 link-local addresses. Fix to fully respect RFC 3927 section 2.7. PR: 255388 Reviewed by: donner, rgrimes, karels Differential Revision: https://reviews.freebsd.org/D29968 Reviewed by: rgrimes, donner, karels, marcus, emaste Differential Revision: https://reviews.freebsd.org/D30374 (cherry picked from commit 3d846e48227e2e78c1e7b35145f57353ffda56ba) (cherry picked from commit 03b0505b8fe848f33f2f38fe89dd5538908c847e) --- sys/netinet/ip_input.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index 0f14889f355d..53978fd0fe6c 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -733,14 +733,12 @@ passin: IF_ADDR_RUNLOCK(ifp); ia = NULL; } - /* RFC 3927 2.7: Do not forward datagrams for 169.254.0.0/16. */ - if (IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr))) { - IPSTAT_INC(ips_cantforward); - m_freem(m); - return; - } if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { - if (V_ip_mrouter) { + /* + * RFC 3927 2.7: Do not forward multicast packets from + * IN_LINKLOCAL. + */ + if (V_ip_mrouter && !IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { /* * If we are acting as a multicast router, all * incoming multicast packets are passed to the @@ -775,6 +773,13 @@ passin: goto ours; if (ip->ip_dst.s_addr == INADDR_ANY) goto ours; + /* RFC 3927 2.7: Do not forward packets to or from IN_LINKLOCAL. */ + if (IN_LINKLOCAL(ntohl(ip->ip_dst.s_addr)) || + IN_LINKLOCAL(ntohl(ip->ip_src.s_addr))) { + IPSTAT_INC(ips_cantforward); + m_freem(m); + return; + } /* * Not for us; forward if possible and desirable. From owner-dev-commits-src-all@freebsd.org Thu Jun 17 09:18:12 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CF20F650003; Thu, 17 Jun 2021 09:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5GgS5TbZz3w10; Thu, 17 Jun 2021 09:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A426745EB; Thu, 17 Jun 2021 09:18:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15H9ICj3054546; Thu, 17 Jun 2021 09:18:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15H9ICMY054545; Thu, 17 Jun 2021 09:18:12 GMT (envelope-from git) Date: Thu, 17 Jun 2021 09:18:12 GMT Message-Id: <202106170918.15H9ICMY054545@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 67cef6d411ce - main - bsnmp: Fix incorrect use of libpfctl MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 67cef6d411cef0c3dfcf768ff890b4f97cf513b6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 09:18:12 -0000 The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=67cef6d411cef0c3dfcf768ff890b4f97cf513b6 commit 67cef6d411cef0c3dfcf768ff890b4f97cf513b6 Author: Kristof Provost AuthorDate: 2021-06-15 08:50:32 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 08:53:40 +0000 bsnmp: Fix incorrect use of libpfctl When we introduced libpfctl in bnsmpd this was done incorrectly, and a GETRULE call was replaced by pfctl_add_rule(). Change it to pfctl_get_rule(). Reviewed by: donner MFC after: 3 days Sponsored by: Rubicon Communications, LLC ("Netgate") --- usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c b/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c index 51d940f20c99..4ef35ac1eec2 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c +++ b/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c @@ -1530,8 +1530,8 @@ pfl_scan_ruleset(const char *path) for (nr = pr.nr, i = 0; i < nr; i++) { pr.nr = i; - if (pfctl_add_rule(dev, &rule, pr.anchor, pr.anchor_call, - pr.ticket, pr.pool_ticket)) { + if (pfctl_get_rule(dev, pr.nr, pr.ticket, pr.anchor, + PF_PASS, &rule, pr.anchor_call)) { syslog(LOG_ERR, "pfl_scan_ruleset: ioctl(DIOCGETRULE):" " %s", strerror(errno)); goto err; From owner-dev-commits-src-all@freebsd.org Thu Jun 17 09:20:47 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2B9B96500A7; Thu, 17 Jun 2021 09:20:47 +0000 (UTC) (envelope-from danfe@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5GkR0Jdqz3wQF; Thu, 17 Jun 2021 09:20:47 +0000 (UTC) (envelope-from danfe@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1623921647; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=Y6zbB6hg8CpEmsGBVigTllCuuodPaCwP6w0PYD/TeJM=; b=GwNyUOybj4NBeRPUxG+hvIep2nVW5F9DPYhQ0fkPOBnQryY6bRcqviSaaMNFw6zGZsISe+ h/lUeytLwC2jqtGmDvUtlV/Dzh6R3W/cgFzfBSy9AnsfDkqvMVa+7kiVEjnK1o1kfl2kXM ic/10/oCHCyczzmDjALegT+FDYMqUM4adreRXOzNBDRzMUgV6LiW3pv413rcvJXBBmGE6z uEqulB9gmcXipcVnfpeOnLvtEDG0IziXLvEVswwKOqoVcuJplWz0muDHyE8cMeEkuYHhlG xyS7lUhBwRadK/FnvQ1ZnVU3p0Ld6tw+On44U1MEy3WNbJhdc0SPUYNcmK6DLQ== Received: by freefall.freebsd.org (Postfix, from userid 1033) id EBB331214E; Thu, 17 Jun 2021 09:20:46 +0000 (UTC) Date: Thu, 17 Jun 2021 09:20:46 +0000 From: Alexey Dokuchaev To: Warner Losh Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 0a99422970d7 - main - Move mips and arm to 1000Hz by default. Message-ID: References: <202106170201.15H215Z6078742@gitrepo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202106170201.15H215Z6078742@gitrepo.freebsd.org> ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1623921647; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=Y6zbB6hg8CpEmsGBVigTllCuuodPaCwP6w0PYD/TeJM=; b=Rvrp4M+TcaCjru7YdKBi9taVzCxAk82k32kcHOVdWk7hCm6rtQnBOapYuxHDODR7Gza5R/ aFUVMG1BxbkEAu89gYJfcmXcGjkZLcjoEui937smRP2Y7N/qduJWHImqn4BVwL++8mTOLF fXzAUD+ovjzHxLuIJG7tpg8EruOYUJP1plHcjEgTgsuTc7SxHznA6HGCLM91IhHfQQDTZ9 inCQNTKFXlfZX6OsYTOIr4VWCOnQ9EBX9Oqzkw8xknTSEwn2r/CxtJilgAv6hp9XiIlU9g G3MSJ2lDE8CNf00JS3gKi3Gqlfew37k7DCfs+FairVkg6jXlO69E0tiuCHUSjQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1623921647; a=rsa-sha256; cv=none; b=QEYbNr6TGQrAc9e2LTyVGlfxovdi7XOdPSHP3DWTyiyfrntBvTNBiwAED2UCim+g7OyzOi B3EBBuOPbfRgQTPJ1arJR5ImP88HFp/eBSvBnFWnuq/hNHBgHA3gw/AJUY742b/+nGEwWH YmTYMyx7UHKoIP3eoycsLSRdqI58nSiWSTgXrx/MhM+zcGO2EosyFyni4cB+Aq3luggB0m gCzU92Rr/hbEHzvwHKhq6G6JZnffYxJsjz1ji1m54paYAen7VTEa8DKPRUCbFM/tDHYrre 1pl9be48xAdGRV6hvaUpYRy4USNRAzmCIMykXb0qNktghuS+R5B+DzfTMAtqUw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 09:20:47 -0000 On Thu, Jun 17, 2021 at 02:01:05AM +0000, Warner Losh wrote: > commit 0a99422970d7fbdb1e17724339a8dc37082f3431 > > Move mips and arm to 1000Hz by default. > > armv6 and armv7 systems already were 1000Hz. The other armv5 were a > mix of 100 and 1000. This changes them to 1000. Should there be > issues, we can add options HZ=100 to the systems that have bad > performance at the drop of a hat. Do we have this 1000Hz vs. 100Hz thing documented somewhere for those who are thinking about tuning it? There are various "optimization" howto's floating on the Internet here and there which recommend this change, so it would be nice to have some definitive documentation on the subject, e.g. in our Handbook or Wiki. ./danfe From owner-dev-commits-src-all@freebsd.org Thu Jun 17 09:31:15 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8EA1565031B; Thu, 17 Jun 2021 09:31:15 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5GyV4mGtz4RGF; Thu, 17 Jun 2021 09:31:14 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: by mail-ej1-x630.google.com with SMTP id he7so8668968ejc.13; Thu, 17 Jun 2021 02:31:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=9+0ZySCmnc8Rrvu59yW/rZXljduRcYmOYO0wc1rwvpg=; b=PRauV2RoKpAcmHxKFnoxaKu4PgT+BlQKpy2oDz3ATx+0T0NUMvVRWrJov3DH2gFeIu A1tSUm1aszDHNLSVr1lNjPwNNr5hWxsBlipLBcUe/H0h24Jg483aDjtRU4QyAPwpLNYK 8xVgLYpYLtMe/9xZT/jSzbfbo4FHKZi9Yi+XlJAFdHOmmIvGK6UvhIdUMUIVgPzhneET p6PY27D5XSrCabVleU1nCOXSvBbzVqd8PyOvgrNhxHsuvFlz5UaWDW6JAb3fkbvjGOEF +4UgS8sg5pZM87L6ku8SICipofFzWwAnz4pfFjSZBevF0LDlbdA0YLUfrOaNfxbxcYvA dGYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=9+0ZySCmnc8Rrvu59yW/rZXljduRcYmOYO0wc1rwvpg=; b=jFB8GkfGleQEoIQpk+qEfrtACLMoFV/U4c83Z/JeO67CeP1bCLM61eIzGQfP6z42yy fUcTZAH4Eq4wc1onVvknxEhIDr0l3lCWswBT+f6dYeUZU/daaPZfHw6FR/aqCt79CFej XBw9Fo9hB5OOCz55kCxmOlhppUL//jyvtDOzWjTtj4r3q+fi5eA2IWV4riRm23DZtyUY 6F9y+ZM6D7yl1E1KE4dCYvvopVHQsBWa/tmDbDTURBajLTnD2mlvEdYnDyk7l0q2Qw7N +aY6NAKDTm6p1AQrSplQ8ZY0IvZZ1dxpdxvRC2FjUuEDX7uNfV8IHjpZatPmPlfllbhh 9ogw== X-Gm-Message-State: AOAM532zjLU941mlzxrZRUEuao3h6kcw/G/avsArZr7OrSaXcFvq9SJP sQlBZyLZc4UWGSSPCyBg7f24eBRsgjE= X-Google-Smtp-Source: ABdhPJyhV8l/swtBjILgjsqYzoBUY+BIrseoE+/+uPYwc0GY2BZzc6cN6W++70xyq17+G1xuQ5eGXg== X-Received: by 2002:a17:906:2bc6:: with SMTP id n6mr4288324ejg.256.1623922273239; Thu, 17 Jun 2021 02:31:13 -0700 (PDT) Received: from ernst.home (pd9e2360f.dip0.t-ipconnect.de. [217.226.54.15]) by smtp.gmail.com with ESMTPSA id m26sm923240ejl.26.2021.06.17.02.31.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Jun 2021 02:31:12 -0700 (PDT) Date: Thu, 17 Jun 2021 11:31:11 +0200 From: Gary Jennejohn To: Alexey Dokuchaev Cc: Warner Losh , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 0a99422970d7 - main - Move mips and arm to 1000Hz by default. Message-ID: <20210617093111.5a537750@ernst.home> In-Reply-To: References: <202106170201.15H215Z6078742@gitrepo.freebsd.org> Reply-To: gljennjohn@gmail.com X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; amd64-portbld-freebsd14.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4G5GyV4mGtz4RGF X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=PRauV2Ro; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of gljennjohn@gmail.com designates 2a00:1450:4864:20::630 as permitted sender) smtp.mailfrom=gljennjohn@gmail.com X-Spamd-Result: default: False [-2.10 / 15.00]; HAS_REPLYTO(0.00)[gljennjohn@gmail.com]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; REPLYTO_ADDR_EQ_FROM(0.00)[]; RCPT_COUNT_FIVE(0.00)[5]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RBL_DBL_DONT_QUERY_IPS(0.00)[2a00:1450:4864:20::630:from]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; RECEIVED_SPAMHAUS_PBL(0.00)[217.226.54.15:received]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FREEMAIL_REPLYTO(0.00)[gmail.com]; NEURAL_SPAM_MEDIUM(0.90)[0.904]; SPAMHAUS_ZRD(0.00)[2a00:1450:4864:20::630:from:127.0.2.255]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::630:from]; RCVD_TLS_ALL(0.00)[]; MAILMAN_DEST(0.00)[dev-commits-src-all,dev-commits-src-main] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 09:31:15 -0000 On Thu, 17 Jun 2021 09:20:46 +0000 Alexey Dokuchaev wrote: > On Thu, Jun 17, 2021 at 02:01:05AM +0000, Warner Losh wrote: > > commit 0a99422970d7fbdb1e17724339a8dc37082f3431 > > > > Move mips and arm to 1000Hz by default. > > > > armv6 and armv7 systems already were 1000Hz. The other armv5 were a > > mix of 100 and 1000. This changes them to 1000. Should there be > > issues, we can add options HZ=100 to the systems that have bad > > performance at the drop of a hat. > > Do we have this 1000Hz vs. 100Hz thing documented somewhere for those > who are thinking about tuning it? There are various "optimization" > howto's floating on the Internet here and there which recommend this > change, so it would be nice to have some definitive documentation on > the subject, e.g. in our Handbook or Wiki. > It's discussed in /sys/conf/NOTES, but most users probably wouldn't think about looking there. An entry in the Handbook or Wiki could be useful. -- Gary Jennejohn From owner-dev-commits-src-all@freebsd.org Thu Jun 17 10:35:46 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E3EBC650AE3; Thu, 17 Jun 2021 10:35:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5JNy5tXvz4WZ7; Thu, 17 Jun 2021 10:35:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AE7BC5A42; Thu, 17 Jun 2021 10:35:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HAZkP7063304; Thu, 17 Jun 2021 10:35:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HAZkQK063303; Thu, 17 Jun 2021 10:35:46 GMT (envelope-from git) Date: Thu, 17 Jun 2021 10:35:46 GMT Message-Id: <202106171035.15HAZkQK063303@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marko Zec Subject: git: 4715d948c593 - stable/13 - Introduce DXR as an IPv4 longest prefix matching / FIB module MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zec X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 4715d948c593b5bb3d2e2129ed299becec566373 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 10:35:47 -0000 The branch stable/13 has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=4715d948c593b5bb3d2e2129ed299becec566373 commit 4715d948c593b5bb3d2e2129ed299becec566373 Author: Marko Zec AuthorDate: 2021-05-05 11:45:52 +0000 Commit: Marko Zec CommitDate: 2021-06-17 10:07:05 +0000 Introduce DXR as an IPv4 longest prefix matching / FIB module DXR maintains compressed lookup structures with a trivial search procedure. A two-stage trie is indexed by the more significant bits of the search key (IPv4 address), while the remaining bits are used for finding the next hop in a sorted array. The tradeoff between memory footprint and search speed depends on the split between the trie and the remaining binary search. The default of 20 bits of the key being used for trie indexing yields good performance (see below) with footprints of around 2.5 Bytes per prefix with current BGP snapshots. Rebuilding lookup structures takes some time, which is compensated for by batching several RIB change requests into a single FIB update, i.e. FIB synchronization with the RIB may be delayed for a fraction of a second. RIB to FIB synchronization, next-hop table housekeeping, and lockless lookup capability is provided by the FIB_ALGO infrastructure. DXR works well on modern CPUs with several MBytes of caches, especially in VMs, where is outperforms other currently available IPv4 FIB algorithms by a large margin. Reviewed by: melifaro MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D29821 (cherry picked from commit 2aca58e16f507bfcad127a0865a9d5c75c5eedc3) --- sys/modules/Makefile | 2 + sys/modules/fib_dxr/Makefile | 11 + sys/netinet/in_fib_dxr.c | 1253 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1266 insertions(+) diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 7574c612f49c..ec5dd9a047c2 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -120,6 +120,7 @@ SUBDIR= \ fdc \ fdescfs \ ${_ffec} \ + ${_fib_dxr} \ filemon \ firewire \ firmware \ @@ -476,6 +477,7 @@ _ipfilter= ipfilter .if ${MK_INET_SUPPORT} != "no" && ${KERN_OPTS:MFIB_ALGO} _dpdk_lpm4= dpdk_lpm4 +_fib_dxr= fib_dxr .endif .if ${MK_INET6_SUPPORT} != "no" && ${KERN_OPTS:MFIB_ALGO} diff --git a/sys/modules/fib_dxr/Makefile b/sys/modules/fib_dxr/Makefile new file mode 100644 index 000000000000..c1a704beb535 --- /dev/null +++ b/sys/modules/fib_dxr/Makefile @@ -0,0 +1,11 @@ +# $FreeBSD$ + +SYSDIR?=${SRCTOP}/sys +.include "${SYSDIR}/conf/kern.opts.mk" + +.PATH: ${SYSDIR}/netinet + +KMOD= fib_dxr +SRCS= in_fib_dxr.c opt_inet.h + +.include diff --git a/sys/netinet/in_fib_dxr.c b/sys/netinet/in_fib_dxr.c new file mode 100644 index 000000000000..ec32819a5a6d --- /dev/null +++ b/sys/netinet/in_fib_dxr.c @@ -0,0 +1,1253 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2012-2021 Marko Zec + * Copyright (c) 2005, 2018 University of Zagreb + * Copyright (c) 2005 International Computer Science Institute + * + * 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 AUTHOR 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 AUTHOR 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. + */ + +/* + * An implementation of DXR, a simple IPv4 LPM scheme with compact lookup + * structures and a trivial search procedure. More significant bits of + * the search key are used to directly index a two-stage trie, while the + * remaining bits are used for finding the next hop in a sorted array. + * More details in: + * + * M. Zec, L. Rizzo, M. Mikuc, DXR: towards a billion routing lookups per + * second in software, ACM SIGCOMM Computer Communication Review, September + * 2012 + * + * M. Zec, M. Mikuc, Pushing the envelope: beyond two billion IP routing + * lookups per second on commodity CPUs, IEEE SoftCOM, September 2017, Split + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_inet.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#define DXR_TRIE_BITS 20 + +CTASSERT(DXR_TRIE_BITS >= 16 && DXR_TRIE_BITS <= 24); + +/* DXR2: two-stage primary trie, instead of a single direct lookup table */ +#define DXR2 + +#if DXR_TRIE_BITS > 16 +#define DXR_D 16 +#else +#define DXR_D (DXR_TRIE_BITS - 1) +#endif +#define DXR_X (DXR_TRIE_BITS - DXR_D) + +#define D_TBL_SIZE (1 << DXR_D) +#define DIRECT_TBL_SIZE (1 << DXR_TRIE_BITS) +#define DXR_RANGE_MASK (0xffffffffU >> DXR_TRIE_BITS) +#define DXR_RANGE_SHIFT (32 - DXR_TRIE_BITS) + +#define DESC_BASE_BITS 22 +#define DESC_FRAGMENTS_BITS (32 - DESC_BASE_BITS) +#define BASE_MAX ((1 << DESC_BASE_BITS) - 1) +#define RTBL_SIZE_INCR (BASE_MAX / 64) + +#if DXR_TRIE_BITS < 24 +#define FRAGS_MASK_SHORT ((1 << (23 - DXR_TRIE_BITS)) - 1) +#else +#define FRAGS_MASK_SHORT 0 +#endif +#define FRAGS_PREF_SHORT (((1 << DESC_FRAGMENTS_BITS) - 1) & \ + ~FRAGS_MASK_SHORT) +#define FRAGS_MARK_XL (FRAGS_PREF_SHORT - 1) +#define FRAGS_MARK_HIT (FRAGS_PREF_SHORT - 2) + +#define IS_SHORT_FORMAT(x) ((x & FRAGS_PREF_SHORT) == FRAGS_PREF_SHORT) +#define IS_LONG_FORMAT(x) ((x & FRAGS_PREF_SHORT) != FRAGS_PREF_SHORT) +#define IS_XL_FORMAT(x) (x == FRAGS_MARK_XL) + +#define RE_SHORT_MAX_NH ((1 << (DXR_TRIE_BITS - 8)) - 1) + +#define CHUNK_HASH_BITS 16 +#define CHUNK_HASH_SIZE (1 << CHUNK_HASH_BITS) +#define CHUNK_HASH_MASK (CHUNK_HASH_SIZE - 1) + +#define TRIE_HASH_BITS 16 +#define TRIE_HASH_SIZE (1 << TRIE_HASH_BITS) +#define TRIE_HASH_MASK (TRIE_HASH_SIZE - 1) + +#define XTBL_SIZE_INCR (DIRECT_TBL_SIZE / 16) + +/* Lookup structure elements */ + +struct direct_entry { + uint32_t fragments: DESC_FRAGMENTS_BITS, + base: DESC_BASE_BITS; +}; + +struct range_entry_long { + uint32_t start: DXR_RANGE_SHIFT, + nexthop: DXR_TRIE_BITS; +}; + +#if DXR_TRIE_BITS < 24 +struct range_entry_short { + uint16_t start: DXR_RANGE_SHIFT - 8, + nexthop: DXR_TRIE_BITS - 8; +}; +#endif + +/* Auxiliary structures */ + +struct heap_entry { + uint32_t start; + uint32_t end; + uint32_t preflen; + uint32_t nexthop; +}; + +struct chunk_desc { + LIST_ENTRY(chunk_desc) cd_all_le; + LIST_ENTRY(chunk_desc) cd_hash_le; + uint32_t cd_hash; + uint32_t cd_refcnt; + uint32_t cd_base; + uint32_t cd_cur_size; + uint32_t cd_max_size; +}; + +struct trie_desc { + LIST_ENTRY(trie_desc) td_all_le; + LIST_ENTRY(trie_desc) td_hash_le; + uint32_t td_hash; + uint32_t td_index; + uint32_t td_refcnt; +}; + +struct dxr_aux { + /* Glue to external state */ + struct fib_data *fd; + uint32_t fibnum; + int refcnt; + + /* Auxiliary build-time tables */ + struct direct_entry direct_tbl[DIRECT_TBL_SIZE]; + uint16_t d_tbl[D_TBL_SIZE]; + struct direct_entry *x_tbl; + union { + struct range_entry_long re; + uint32_t fragments; + } *range_tbl; + + /* Auxiliary internal state */ + uint32_t updates_mask[DIRECT_TBL_SIZE / 32]; + struct trie_desc *trietbl[D_TBL_SIZE]; + LIST_HEAD(, chunk_desc) chunk_hashtbl[CHUNK_HASH_SIZE]; + LIST_HEAD(, chunk_desc) all_chunks; + LIST_HEAD(, chunk_desc) unused_chunks; /* abuses hash link entry */ + LIST_HEAD(, trie_desc) trie_hashtbl[TRIE_HASH_SIZE]; + LIST_HEAD(, trie_desc) all_trie; + LIST_HEAD(, trie_desc) unused_trie; /* abuses hash link entry */ + struct sockaddr_in dst; + struct sockaddr_in mask; + struct heap_entry heap[33]; + uint32_t prefixes; + uint32_t updates_low; + uint32_t updates_high; + uint32_t all_chunks_cnt; + uint32_t unused_chunks_cnt; + uint32_t xtbl_size; + uint32_t all_trie_cnt; + uint32_t unused_trie_cnt; + uint32_t trie_rebuilt_prefixes; + uint32_t heap_index; + uint32_t d_bits; + uint32_t rtbl_size; + uint32_t rtbl_top; + uint32_t rtbl_work_frags; + uint32_t work_chunk; +}; + +/* Main lookup structure container */ + +struct dxr { + /* Lookup tables */ + uint16_t d_shift; + uint16_t x_shift; + uint32_t x_mask; + void *d; + void *x; + void *r; + struct nhop_object **nh_tbl; + + /* Glue to external state */ + struct dxr_aux *aux; + struct fib_data *fd; + struct epoch_context epoch_ctx; + uint32_t fibnum; +}; + +static MALLOC_DEFINE(M_DXRLPM, "dxr", "DXR LPM"); +static MALLOC_DEFINE(M_DXRAUX, "dxr aux", "DXR auxiliary"); + +uma_zone_t chunk_zone; +uma_zone_t trie_zone; + +SYSCTL_DECL(_net_route_algo); +SYSCTL_NODE(_net_route_algo, OID_AUTO, dxr, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, + "DXR tunables"); + +VNET_DEFINE_STATIC(int, max_trie_holes) = 8; +#define V_max_trie_holes VNET(max_trie_holes) +SYSCTL_INT(_net_route_algo_dxr, OID_AUTO, max_trie_holes, + CTLFLAG_RW | CTLFLAG_VNET, &VNET_NAME(max_trie_holes), 0, + "Trie fragmentation threshold before triggering a full rebuild"); + +VNET_DEFINE_STATIC(int, max_range_holes) = 16; +#define V_max_range_holes VNET(max_range_holes) +SYSCTL_INT(_net_route_algo_dxr, OID_AUTO, max_range_holes, + CTLFLAG_RW | CTLFLAG_VNET, &VNET_NAME(max_range_holes), 0, + "Range table fragmentation threshold before triggering a full rebuild"); + +/* Binary search for a matching address range */ +#define DXR_LOOKUP_STAGE \ + if (masked_dst < range[middle].start) { \ + upperbound = middle; \ + middle = (middle + lowerbound) / 2; \ + } else if (masked_dst < range[middle + 1].start) \ + return (range[middle].nexthop); \ + else { \ + lowerbound = middle + 1; \ + middle = (upperbound + middle + 1) / 2; \ + } \ + if (upperbound == lowerbound) \ + return (range[lowerbound].nexthop); + +static int +dxr_lookup(struct dxr *dxr, uint32_t dst) +{ +#ifdef DXR2 + uint16_t *dt = dxr->d; + struct direct_entry *xt = dxr->x; + int xi; +#else + struct direct_entry *dt = dxr->d; +#endif + struct direct_entry de; + struct range_entry_long *rt; + uint32_t base; + uint32_t upperbound; + uint32_t middle; + uint32_t lowerbound; + uint32_t masked_dst; + +#ifdef DXR2 + xi = (dt[dst >> dxr->d_shift] << dxr->x_shift) + + ((dst >> DXR_RANGE_SHIFT) & dxr->x_mask); + de = xt[xi]; +#else + de = dt[dst >> DXR_RANGE_SHIFT]; +#endif + + if (__predict_true(de.fragments == FRAGS_MARK_HIT)) + return (de.base); + + rt = dxr->r; + base = de.base; + lowerbound = 0; + masked_dst = dst & DXR_RANGE_MASK; + +#if DXR_TRIE_BITS < 24 + if (__predict_true(IS_SHORT_FORMAT(de.fragments))) { + upperbound = de.fragments & FRAGS_MASK_SHORT; + struct range_entry_short *range = + (struct range_entry_short *) &rt[base]; + + masked_dst >>= 8; + middle = upperbound; + upperbound = upperbound * 2 + 1; + + for (;;) { + DXR_LOOKUP_STAGE + DXR_LOOKUP_STAGE + } + } +#endif + + upperbound = de.fragments; + middle = upperbound / 2; + struct range_entry_long *range = &rt[base]; + if (__predict_false(IS_XL_FORMAT(de.fragments))) { + upperbound = *((uint32_t *) range); + range++; + middle = upperbound / 2; + } + + for (;;) { + DXR_LOOKUP_STAGE + DXR_LOOKUP_STAGE + } +} + +static void +initheap(struct dxr_aux *da, uint32_t dst_u32, uint32_t chunk) +{ + struct heap_entry *fhp = &da->heap[0]; + struct rtentry *rt; + struct route_nhop_data rnd; + + da->heap_index = 0; + da->dst.sin_addr.s_addr = htonl(dst_u32); + rt = fib4_lookup_rt(da->fibnum, da->dst.sin_addr, 0, NHR_UNLOCKED, + &rnd); + if (rt != NULL) { + struct in_addr addr; + uint32_t scopeid; + + rt_get_inet_prefix_plen(rt, &addr, &fhp->preflen, &scopeid); + fhp->start = ntohl(addr.s_addr); + fhp->end = fhp->start; + if (fhp->preflen < 32) + fhp->end |= (0xffffffffU >> fhp->preflen); + fhp->nexthop = fib_get_nhop_idx(da->fd, rnd.rnd_nhop); + } else { + fhp->preflen = fhp->nexthop = fhp->start = 0; + fhp->end = 0xffffffffU; + } +} + +static uint32_t +chunk_size(struct dxr_aux *da, struct direct_entry *fdesc) +{ + + if (IS_SHORT_FORMAT(fdesc->fragments)) + return ((fdesc->fragments & FRAGS_MASK_SHORT) + 1); + else if (IS_XL_FORMAT(fdesc->fragments)) + return (da->range_tbl[fdesc->base].fragments + 2); + else /* if (IS_LONG_FORMAT(fdesc->fragments)) */ + return (fdesc->fragments + 1); +} + +static uint32_t +chunk_hash(struct dxr_aux *da, struct direct_entry *fdesc) +{ + uint32_t size = chunk_size(da, fdesc); + uint32_t *p = (uint32_t *) &da->range_tbl[fdesc->base]; + uint32_t *l = (uint32_t *) &da->range_tbl[fdesc->base + size]; + uint32_t hash = fdesc->fragments; + + for (; p < l; p++) + hash = (hash << 7) + (hash >> 13) + *p; + + return (hash + (hash >> 16)); +} + +static int +chunk_ref(struct dxr_aux *da, uint32_t chunk) +{ + struct direct_entry *fdesc = &da->direct_tbl[chunk]; + struct chunk_desc *cdp, *empty_cdp; + uint32_t base = fdesc->base; + uint32_t size = chunk_size(da, fdesc); + uint32_t hash = chunk_hash(da, fdesc); + + /* Find an existing descriptor */ + LIST_FOREACH(cdp, &da->chunk_hashtbl[hash & CHUNK_HASH_MASK], + cd_hash_le) { + if (cdp->cd_hash != hash || cdp->cd_cur_size != size || + memcmp(&da->range_tbl[base], &da->range_tbl[cdp->cd_base], + sizeof(struct range_entry_long) * size)) + continue; + da->rtbl_top = fdesc->base; + fdesc->base = cdp->cd_base; + cdp->cd_refcnt++; + return (0); + } + + /* No matching chunks found. Recycle an empty or allocate a new one */ + cdp = NULL; + LIST_FOREACH(empty_cdp, &da->unused_chunks, cd_hash_le) + if (empty_cdp->cd_max_size >= size && (cdp == NULL || + empty_cdp->cd_max_size < cdp->cd_max_size)) { + cdp = empty_cdp; + if (empty_cdp->cd_max_size == size) + break; + } + + if (cdp != NULL) { + /* Copy from heap into the recycled chunk */ + bcopy(&da->range_tbl[fdesc->base], &da->range_tbl[cdp->cd_base], + size * sizeof(struct range_entry_long)); + fdesc->base = cdp->cd_base; + da->rtbl_top -= size; + da->unused_chunks_cnt--; + if (cdp->cd_max_size > size + 1) { + /* Split the range in two, need a new descriptor */ + empty_cdp = uma_zalloc(chunk_zone, M_NOWAIT); + if (empty_cdp == NULL) + return (1); + empty_cdp->cd_max_size = cdp->cd_max_size - size; + empty_cdp->cd_base = cdp->cd_base + size; + LIST_INSERT_AFTER(cdp, empty_cdp, cd_all_le); + LIST_INSERT_AFTER(cdp, empty_cdp, cd_hash_le); + da->all_chunks_cnt++; + da->unused_chunks_cnt++; + cdp->cd_max_size = size; + } + LIST_REMOVE(cdp, cd_hash_le); + } else { + /* Alloc a new descriptor */ + cdp = uma_zalloc(chunk_zone, M_NOWAIT); + if (cdp == NULL) + return (1); + cdp->cd_max_size = size; + cdp->cd_base = fdesc->base; + LIST_INSERT_HEAD(&da->all_chunks, cdp, cd_all_le); + da->all_chunks_cnt++; + } + + cdp->cd_hash = hash; + cdp->cd_refcnt = 1; + cdp->cd_cur_size = size; + LIST_INSERT_HEAD(&da->chunk_hashtbl[hash & CHUNK_HASH_MASK], cdp, + cd_hash_le); + if (da->rtbl_top >= da->rtbl_size) { + if (da->rtbl_top >= BASE_MAX) { + FIB_PRINTF(LOG_ERR, da->fd, + "structural limit exceeded at %d " + "range table elements", da->rtbl_top); + return (1); + } + da->rtbl_size += RTBL_SIZE_INCR; + if (da->rtbl_top >= BASE_MAX / 4) + FIB_PRINTF(LOG_WARNING, da->fd, "range table at %d%%", + da->rtbl_top * 100 / BASE_MAX); + da->range_tbl = realloc(da->range_tbl, + sizeof(*da->range_tbl) * da->rtbl_size + FRAGS_PREF_SHORT, + M_DXRAUX, M_NOWAIT); + if (da->range_tbl == NULL) + return (1); + } + + return (0); +} + +static void +chunk_unref(struct dxr_aux *da, uint32_t chunk) +{ + struct direct_entry *fdesc = &da->direct_tbl[chunk]; + struct chunk_desc *cdp; + uint32_t base = fdesc->base; + uint32_t size = chunk_size(da, fdesc); + uint32_t hash = chunk_hash(da, fdesc); + + /* Find an existing descriptor */ + LIST_FOREACH(cdp, &da->chunk_hashtbl[hash & CHUNK_HASH_MASK], + cd_hash_le) + if (cdp->cd_hash == hash && cdp->cd_cur_size == size && + memcmp(&da->range_tbl[base], &da->range_tbl[cdp->cd_base], + sizeof(struct range_entry_long) * size) == 0) + break; + + KASSERT(cdp != NULL, ("dxr: dangling chunk")); + if (--cdp->cd_refcnt > 0) + return; + + LIST_REMOVE(cdp, cd_hash_le); + da->unused_chunks_cnt++; + if (cdp->cd_base + cdp->cd_max_size != da->rtbl_top) { + LIST_INSERT_HEAD(&da->unused_chunks, cdp, cd_hash_le); + return; + } + + do { + da->all_chunks_cnt--; + da->unused_chunks_cnt--; + da->rtbl_top -= cdp->cd_max_size; + LIST_REMOVE(cdp, cd_all_le); + uma_zfree(chunk_zone, cdp); + LIST_FOREACH(cdp, &da->unused_chunks, cd_hash_le) + if (cdp->cd_base + cdp->cd_max_size == da->rtbl_top) { + LIST_REMOVE(cdp, cd_hash_le); + break; + } + } while (cdp != NULL); +} + +#ifdef DXR2 +static uint32_t +trie_hash(struct dxr_aux *da, uint32_t dxr_x, uint32_t index) +{ + uint32_t i, *val; + uint32_t hash = 0; + + for (i = 0; i < (1 << dxr_x); i++) { + hash = (hash << 3) ^ (hash >> 3); + val = (uint32_t *) + (void *) &da->direct_tbl[(index << dxr_x) + i]; + hash += (*val << 5); + hash += (*val >> 5); + } + + return (hash + (hash >> 16)); +} + +static int +trie_ref(struct dxr_aux *da, uint32_t index) +{ + struct trie_desc *tp; + uint32_t dxr_d = da->d_bits; + uint32_t dxr_x = DXR_TRIE_BITS - dxr_d; + uint32_t hash = trie_hash(da, dxr_x, index); + + /* Find an existing descriptor */ + LIST_FOREACH(tp, &da->trie_hashtbl[hash & TRIE_HASH_MASK], td_hash_le) + if (tp->td_hash == hash && + memcmp(&da->direct_tbl[index << dxr_x], + &da->x_tbl[tp->td_index << dxr_x], + sizeof(*da->x_tbl) << dxr_x) == 0) { + tp->td_refcnt++; + da->trietbl[index] = tp; + return(tp->td_index); + } + + tp = LIST_FIRST(&da->unused_trie); + if (tp != NULL) { + LIST_REMOVE(tp, td_hash_le); + da->unused_trie_cnt--; + } else { + tp = uma_zalloc(trie_zone, M_NOWAIT); + if (tp == NULL) + return (-1); + LIST_INSERT_HEAD(&da->all_trie, tp, td_all_le); + tp->td_index = da->all_trie_cnt++; + } + + tp->td_hash = hash; + tp->td_refcnt = 1; + LIST_INSERT_HEAD(&da->trie_hashtbl[hash & TRIE_HASH_MASK], tp, + td_hash_le); + memcpy(&da->x_tbl[tp->td_index << dxr_x], + &da->direct_tbl[index << dxr_x], sizeof(*da->x_tbl) << dxr_x); + da->trietbl[index] = tp; + if (da->all_trie_cnt >= da->xtbl_size >> dxr_x) { + da->xtbl_size += XTBL_SIZE_INCR; + da->x_tbl = realloc(da->x_tbl, + sizeof(*da->x_tbl) * da->xtbl_size, M_DXRAUX, M_NOWAIT); + if (da->x_tbl == NULL) + return (-1); + } + return(tp->td_index); +} + +static void +trie_unref(struct dxr_aux *da, uint32_t index) +{ + struct trie_desc *tp = da->trietbl[index]; + + if (tp == NULL) + return; + da->trietbl[index] = NULL; + if (--tp->td_refcnt > 0) + return; + + LIST_REMOVE(tp, td_hash_le); + da->unused_trie_cnt++; + if (tp->td_index != da->all_trie_cnt - 1) { + LIST_INSERT_HEAD(&da->unused_trie, tp, td_hash_le); + return; + } + + do { + da->all_trie_cnt--; + da->unused_trie_cnt--; + LIST_REMOVE(tp, td_all_le); + uma_zfree(trie_zone, tp); + LIST_FOREACH(tp, &da->unused_trie, td_hash_le) + if (tp->td_index == da->all_trie_cnt - 1) { + LIST_REMOVE(tp, td_hash_le); + break; + } + } while (tp != NULL); +} +#endif + +static void +heap_inject(struct dxr_aux *da, uint32_t start, uint32_t end, uint32_t preflen, + uint32_t nh) +{ + struct heap_entry *fhp; + int i; + + for (i = da->heap_index; i >= 0; i--) { + if (preflen > da->heap[i].preflen) + break; + else if (preflen < da->heap[i].preflen) + da->heap[i + 1] = da->heap[i]; + else + return; + } + + fhp = &da->heap[i + 1]; + fhp->preflen = preflen; + fhp->start = start; + fhp->end = end; + fhp->nexthop = nh; + da->heap_index++; +} + +static int +dxr_walk(struct rtentry *rt, void *arg) +{ + struct dxr_aux *da = arg; + uint32_t chunk = da->work_chunk; + uint32_t first = chunk << DXR_RANGE_SHIFT; + uint32_t last = first | DXR_RANGE_MASK; + struct range_entry_long *fp = + &da->range_tbl[da->rtbl_top + da->rtbl_work_frags].re; + struct heap_entry *fhp = &da->heap[da->heap_index]; + uint32_t preflen, nh, start, end, scopeid; + struct in_addr addr; + + rt_get_inet_prefix_plen(rt, &addr, &preflen, &scopeid); + start = ntohl(addr.s_addr); + if (start > last) + return (-1); /* Beyond chunk boundaries, we are done */ + if (start < first) + return (0); /* Skip this route */ + + end = start; + if (preflen < 32) + end |= (0xffffffffU >> preflen); + nh = fib_get_nhop_idx(da->fd, rt_get_raw_nhop(rt)); + + if (start == fhp->start) + heap_inject(da, start, end, preflen, nh); + else { + /* start > fhp->start */ + while (start > fhp->end) { + uint32_t oend = fhp->end; + + if (da->heap_index > 0) { + fhp--; + da->heap_index--; + } else + initheap(da, fhp->end + 1, chunk); + if (fhp->end > oend && fhp->nexthop != fp->nexthop) { + fp++; + da->rtbl_work_frags++; + fp->start = (oend + 1) & DXR_RANGE_MASK; + fp->nexthop = fhp->nexthop; + } + } + if (start > ((chunk << DXR_RANGE_SHIFT) | fp->start) && + nh != fp->nexthop) { + fp++; + da->rtbl_work_frags++; + fp->start = start & DXR_RANGE_MASK; + } else if (da->rtbl_work_frags) { + if ((--fp)->nexthop == nh) + da->rtbl_work_frags--; + else + fp++; + } + fp->nexthop = nh; + heap_inject(da, start, end, preflen, nh); + } + + return (0); +} + +static int +update_chunk(struct dxr_aux *da, uint32_t chunk) +{ + struct range_entry_long *fp; +#if DXR_TRIE_BITS < 24 + struct range_entry_short *fps; + uint32_t start, nh, i; +#endif + struct heap_entry *fhp; + uint32_t first = chunk << DXR_RANGE_SHIFT; + uint32_t last = first | DXR_RANGE_MASK; + + if (da->direct_tbl[chunk].fragments != FRAGS_MARK_HIT) + chunk_unref(da, chunk); + + initheap(da, first, chunk); + + fp = &da->range_tbl[da->rtbl_top].re; + da->rtbl_work_frags = 0; + fp->start = first & DXR_RANGE_MASK; + fp->nexthop = da->heap[0].nexthop; + + da->dst.sin_addr.s_addr = htonl(first); + da->mask.sin_addr.s_addr = htonl(~DXR_RANGE_MASK); + + da->work_chunk = chunk; + rib_walk_from(da->fibnum, AF_INET, RIB_FLAG_LOCKED, + (struct sockaddr *) &da->dst, (struct sockaddr *) &da->mask, + dxr_walk, da); + + /* Flush any remaining objects on the heap */ + fp = &da->range_tbl[da->rtbl_top + da->rtbl_work_frags].re; + fhp = &da->heap[da->heap_index]; + while (fhp->preflen > DXR_TRIE_BITS) { + uint32_t oend = fhp->end; + + if (da->heap_index > 0) { + fhp--; + da->heap_index--; + } else + initheap(da, fhp->end + 1, chunk); + if (fhp->end > oend && fhp->nexthop != fp->nexthop) { + /* Have we crossed the upper chunk boundary? */ + if (oend >= last) + break; + fp++; + da->rtbl_work_frags++; + fp->start = (oend + 1) & DXR_RANGE_MASK; + fp->nexthop = fhp->nexthop; + } + } + + /* Direct hit if the chunk contains only a single fragment */ + if (da->rtbl_work_frags == 0) { + da->direct_tbl[chunk].base = fp->nexthop; + da->direct_tbl[chunk].fragments = FRAGS_MARK_HIT; + return (0); + } + + da->direct_tbl[chunk].base = da->rtbl_top; + da->direct_tbl[chunk].fragments = da->rtbl_work_frags; + +#if DXR_TRIE_BITS < 24 + /* Check whether the chunk can be more compactly encoded */ + fp = &da->range_tbl[da->rtbl_top].re; + for (i = 0; i <= da->rtbl_work_frags; i++, fp++) + if ((fp->start & 0xff) != 0 || fp->nexthop > RE_SHORT_MAX_NH) + break; + if (i == da->rtbl_work_frags + 1) { + fp = &da->range_tbl[da->rtbl_top].re; + fps = (void *) fp; + for (i = 0; i <= da->rtbl_work_frags; i++, fp++, fps++) { + start = fp->start; + nh = fp->nexthop; + fps->start = start >> 8; + fps->nexthop = nh; + } + fps->start = start >> 8; + fps->nexthop = nh; + da->rtbl_work_frags >>= 1; + da->direct_tbl[chunk].fragments = + da->rtbl_work_frags | FRAGS_PREF_SHORT; + } else +#endif + if (da->rtbl_work_frags >= FRAGS_MARK_HIT) { + da->direct_tbl[chunk].fragments = FRAGS_MARK_XL; + memmove(&da->range_tbl[da->rtbl_top + 1], + &da->range_tbl[da->rtbl_top], + (da->rtbl_work_frags + 1) * sizeof(*da->range_tbl)); + da->range_tbl[da->rtbl_top].fragments = da->rtbl_work_frags; + da->rtbl_work_frags++; + } + da->rtbl_top += (da->rtbl_work_frags + 1); + return (chunk_ref(da, chunk)); +} + +static void +dxr_build(struct dxr *dxr) +{ + struct dxr_aux *da = dxr->aux; + struct chunk_desc *cdp; + struct rib_rtable_info rinfo; + struct timeval t0, t1, t2, t3; + uint32_t r_size, dxr_tot_size; + uint32_t i, m, range_rebuild = 0; +#ifdef DXR2 + struct trie_desc *tp; + uint32_t d_tbl_size, dxr_x, d_size, x_size; + uint32_t ti, trie_rebuild = 0, prev_size = 0; +#endif + + KASSERT(dxr->d == NULL, ("dxr: d not free")); + + if (da == NULL) { + da = malloc(sizeof(*dxr->aux), M_DXRAUX, M_NOWAIT); + if (da == NULL) + return; + dxr->aux = da; + da->fibnum = dxr->fibnum; + da->refcnt = 1; + LIST_INIT(&da->all_chunks); + LIST_INIT(&da->all_trie); + da->rtbl_size = RTBL_SIZE_INCR; + da->range_tbl = NULL; + da->xtbl_size = XTBL_SIZE_INCR; + da->x_tbl = NULL; + bzero(&da->dst, sizeof(da->dst)); + bzero(&da->mask, sizeof(da->mask)); + da->dst.sin_len = sizeof(da->dst); + da->mask.sin_len = sizeof(da->mask); + da->dst.sin_family = AF_INET; + da->mask.sin_family = AF_INET; + } + if (da->range_tbl == NULL) { + da->range_tbl = malloc(sizeof(*da->range_tbl) * da->rtbl_size + + FRAGS_PREF_SHORT, M_DXRAUX, M_NOWAIT); + if (da->range_tbl == NULL) + return; + range_rebuild = 1; + } +#ifdef DXR2 + if (da->x_tbl == NULL) { + da->x_tbl = malloc(sizeof(*da->x_tbl) * da->xtbl_size, + M_DXRAUX, M_NOWAIT); + if (da->x_tbl == NULL) + return; + trie_rebuild = 1; + } +#endif + da->fd = dxr->fd; + + microuptime(&t0); + + dxr->nh_tbl = fib_get_nhop_array(da->fd); + fib_get_rtable_info(fib_get_rh(da->fd), &rinfo); + + if (da->updates_low > da->updates_high || + da->unused_chunks_cnt > V_max_range_holes) + range_rebuild = 1; + if (range_rebuild) { + /* Bulk cleanup */ + bzero(da->chunk_hashtbl, sizeof(da->chunk_hashtbl)); + while ((cdp = LIST_FIRST(&da->all_chunks)) != NULL) { + LIST_REMOVE(cdp, cd_all_le); + uma_zfree(chunk_zone, cdp); + } + LIST_INIT(&da->unused_chunks); + da->all_chunks_cnt = da->unused_chunks_cnt = 0; + da->rtbl_top = 0; + da->updates_low = 0; + da->updates_high = DIRECT_TBL_SIZE - 1; + memset(da->updates_mask, 0xff, sizeof(da->updates_mask)); + for (i = 0; i < DIRECT_TBL_SIZE; i++) { + da->direct_tbl[i].fragments = FRAGS_MARK_HIT; + da->direct_tbl[i].base = 0; + } + } + da->prefixes = rinfo.num_prefixes; + + /* DXR: construct direct & range table */ + for (i = da->updates_low; i <= da->updates_high; i++) { + m = da->updates_mask[i >> 5] >> (i & 0x1f); + if (m == 0) + i |= 0x1f; + else if (m & 1 && update_chunk(da, i) != 0) + return; + } + r_size = sizeof(*da->range_tbl) * da->rtbl_top; + microuptime(&t1); + +#ifdef DXR2 + if (range_rebuild || da->unused_trie_cnt > V_max_trie_holes || + abs(fls(da->prefixes) - fls(da->trie_rebuilt_prefixes)) > 1) + trie_rebuild = 1; + if (trie_rebuild) { + da->trie_rebuilt_prefixes = da->prefixes; + da->d_bits = DXR_D; + da->updates_low = 0; + da->updates_high = DIRECT_TBL_SIZE - 1; + } + +dxr2_try_squeeze: + if (trie_rebuild) { + /* Bulk cleanup */ + bzero(da->trietbl, sizeof(da->trietbl)); *** 351 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Thu Jun 17 13:09:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 504A4652E22; Thu, 17 Jun 2021 13:09:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Mnq1qWlz4mS3; Thu, 17 Jun 2021 13:09:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 265DF7B95; Thu, 17 Jun 2021 13:09:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HD93RH065250; Thu, 17 Jun 2021 13:09:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HD93rp065249; Thu, 17 Jun 2021 13:09:03 GMT (envelope-from git) Date: Thu, 17 Jun 2021 13:09:03 GMT Message-Id: <202106171309.15HD93rp065249@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Philip Paeps Subject: git: 1c9605fe1e19 - main - bsdconfig: add a new mirror in Bulgaria MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1c9605fe1e190197b3846e01dce1e491bef0ec34 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 13:09:03 -0000 The branch main has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=1c9605fe1e190197b3846e01dce1e491bef0ec34 commit 1c9605fe1e190197b3846e01dce1e491bef0ec34 Author: Philip Paeps AuthorDate: 2021-06-17 13:07:37 +0000 Commit: Philip Paeps CommitDate: 2021-06-17 13:07:37 +0000 bsdconfig: add a new mirror in Bulgaria Provided by Telepoint Mirror Service. Reported by: Valentin Nikolov MFC after: 3 days --- usr.sbin/bsdconfig/include/messages.subr | 1 + usr.sbin/bsdconfig/share/media/ftp.subr | 1 + 2 files changed, 2 insertions(+) diff --git a/usr.sbin/bsdconfig/include/messages.subr b/usr.sbin/bsdconfig/include/messages.subr index 4fd05db08d7d..9d910032616d 100644 --- a/usr.sbin/bsdconfig/include/messages.subr +++ b/usr.sbin/bsdconfig/include/messages.subr @@ -61,6 +61,7 @@ msg_bootstrapping_pkg="Bootstrapping pkg(8)..." msg_brazil="Brazil" msg_building_package_menus="Building package menu(s)..." msg_building_package_main_menu="Building package main menu..." +msg_bulgaria="Bulgaria" msg_cad_desc="Computer Aided Design utilities." msg_canada="Canada" msg_cancel="Cancel" diff --git a/usr.sbin/bsdconfig/share/media/ftp.subr b/usr.sbin/bsdconfig/share/media/ftp.subr index 992203ed7402..1f6f216eb0a9 100644 --- a/usr.sbin/bsdconfig/share/media/ftp.subr +++ b/usr.sbin/bsdconfig/share/media/ftp.subr @@ -101,6 +101,7 @@ f_dialog_menu_media_ftp() '$msg_brazil' 'ftp2.br.freebsd.org' ' $msg_brazil #3' 'ftp3.br.freebsd.org' ' $msg_brazil #4' 'ftp4.br.freebsd.org' + '$msg_bulgaria' 'ftp.bg.freebsd.org' '$msg_china' 'ftp.cn.freebsd.org' '$msg_czech_republic' 'ftp.cz.freebsd.org' '$msg_denmark' 'ftp.dk.freebsd.org' From owner-dev-commits-src-all@freebsd.org Thu Jun 17 13:09:04 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6EEED652E28; Thu, 17 Jun 2021 13:09:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Mnr2j1jz4mXy; Thu, 17 Jun 2021 13:09:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4688E7849; Thu, 17 Jun 2021 13:09:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HD9452065274; Thu, 17 Jun 2021 13:09:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HD94Vx065273; Thu, 17 Jun 2021 13:09:04 GMT (envelope-from git) Date: Thu, 17 Jun 2021 13:09:04 GMT Message-Id: <202106171309.15HD94Vx065273@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Philip Paeps Subject: git: 7daa45becfd3 - main - bsdinstall: add a new mirror in Bulgaria MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7daa45becfd32cb38933bfdc87e8a10fc982d188 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 13:09:04 -0000 The branch main has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=7daa45becfd32cb38933bfdc87e8a10fc982d188 commit 7daa45becfd32cb38933bfdc87e8a10fc982d188 Author: Philip Paeps AuthorDate: 2021-06-17 13:07:37 +0000 Commit: Philip Paeps CommitDate: 2021-06-17 13:07:37 +0000 bsdinstall: add a new mirror in Bulgaria Provided by Telepoint Mirror Service. Reported by: Valentin Nikolov MFC after: 3 days --- usr.sbin/bsdinstall/scripts/mirrorselect | 1 + 1 file changed, 1 insertion(+) diff --git a/usr.sbin/bsdinstall/scripts/mirrorselect b/usr.sbin/bsdinstall/scripts/mirrorselect index b78a0bf10aa1..e218fe92dbbb 100755 --- a/usr.sbin/bsdinstall/scripts/mirrorselect +++ b/usr.sbin/bsdinstall/scripts/mirrorselect @@ -63,6 +63,7 @@ MIRROR=`dialog --backtitle "FreeBSD Installer" \ ftp://ftp2.br.freebsd.org "Brazil #2"\ ftp://ftp3.br.freebsd.org "Brazil #3"\ ftp://ftp4.br.freebsd.org "Brazil #4"\ + ftp://ftp.bg.freebsd.org "Bulgaria"\ ftp://ftp.cn.freebsd.org "China"\ ftp://ftp.cz.freebsd.org "Czech Republic"\ ftp://ftp.dk.freebsd.org "Denmark"\ From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:12:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 68D05653EEA; Thu, 17 Jun 2021 14:12:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5PC32LCcz4sP1; Thu, 17 Jun 2021 14:12:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3921210BDD; Thu, 17 Jun 2021 14:12:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HECVhK055687; Thu, 17 Jun 2021 14:12:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HECVqh055686; Thu, 17 Jun 2021 14:12:31 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:12:31 GMT Message-Id: <202106171412.15HECVqh055686@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 5b10e79edba5 - main - Un-staticise vm_page_init_page() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5b10e79edba561270001c097fbffcf05d07e9a4a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:12:31 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5b10e79edba561270001c097fbffcf05d07e9a4a commit 5b10e79edba561270001c097fbffcf05d07e9a4a Author: Konstantin Belousov AuthorDate: 2021-06-17 10:58:13 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-17 13:58:44 +0000 Un-staticise vm_page_init_page() Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30785 --- sys/vm/vm_page.c | 2 +- sys/vm/vm_page.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 29dfb52af5d3..953120e25b4e 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -497,7 +497,7 @@ vm_page_domain_init(int domain) * Initialize a physical page in preparation for adding it to the free * lists. */ -static void +void vm_page_init_page(vm_page_t m, vm_paddr_t pa, int segind) { diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index ed372cae2a3b..6e0a4328e260 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -635,6 +635,7 @@ void vm_page_free_invalid(vm_page_t); vm_page_t vm_page_getfake(vm_paddr_t paddr, vm_memattr_t memattr); void vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr); void vm_page_init_marker(vm_page_t marker, int queue, uint16_t aflags); +void vm_page_init_page(vm_page_t m, vm_paddr_t pa, int segind); int vm_page_insert (vm_page_t, vm_object_t, vm_pindex_t); void vm_page_invalid(vm_page_t m); void vm_page_launder(vm_page_t m); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:12:32 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 78F836535E5; Thu, 17 Jun 2021 14:12:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5PC42mJFz4s9s; Thu, 17 Jun 2021 14:12:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 45ABD10F86; Thu, 17 Jun 2021 14:12:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HECWM8056922; Thu, 17 Jun 2021 14:12:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HECWJ0056914; Thu, 17 Jun 2021 14:12:32 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:12:32 GMT Message-Id: <202106171412.15HECWJ0056914@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 0247c33e89ad - main - amd64 efirt: initialize vm_pages backing EFI runtime memory MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0247c33e89adaf0c7159b847ef7bae9566e55395 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:12:32 -0000 The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0247c33e89adaf0c7159b847ef7bae9566e55395 commit 0247c33e89adaf0c7159b847ef7bae9566e55395 Author: Konstantin Belousov AuthorDate: 2021-06-16 01:59:06 +0000 Commit: Konstantin Belousov CommitDate: 2021-06-17 13:58:51 +0000 amd64 efirt: initialize vm_pages backing EFI runtime memory so that PHYS_TO_VM_PAGE() and consequently physcopyin() work for them Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30785 --- sys/amd64/amd64/efirt_machdep.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sys/amd64/amd64/efirt_machdep.c b/sys/amd64/amd64/efirt_machdep.c index 3c8392bee86f..6fb64816385e 100644 --- a/sys/amd64/amd64/efirt_machdep.c +++ b/sys/amd64/amd64/efirt_machdep.c @@ -180,6 +180,7 @@ efi_create_1t1_map(struct efi_md *map, int ndesc, int descsz) struct efi_md *p; pt_entry_t *pte; void *pml; + vm_page_t m; vm_offset_t va; uint64_t idx; int bits, i, mode; @@ -247,6 +248,14 @@ efi_create_1t1_map(struct efi_md *map, int ndesc, int descsz) va += PAGE_SIZE) { pte = efi_1t1_pte(va); pte_store(pte, va | bits); + + m = PHYS_TO_VM_PAGE(va); + if (m != NULL && VM_PAGE_TO_PHYS(m) == 0) { + vm_page_init_page(m, va, -1); + m->order = VM_NFREEORDER + 1; /* invalid */ + m->pool = VM_NFREEPOOL + 1; /* invalid */ + pmap_page_set_memattr(m, mode); + } } VM_OBJECT_WUNLOCK(obj_1t1_pt); } From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:43 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E55B76547F0; Thu, 17 Jun 2021 14:54:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7l5y8cz4vNg; Thu, 17 Jun 2021 14:54:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B08BE11787; Thu, 17 Jun 2021 14:54:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEshKi010608; Thu, 17 Jun 2021 14:54:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEshLd010607; Thu, 17 Jun 2021 14:54:43 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:43 GMT Message-Id: <202106171454.15HEshLd010607@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 14cde6b5b12d - stable/12 - VNETify dummynet MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 14cde6b5b12d32d7d5374f3766c0e06ae0ca3303 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:44 -0000 The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=14cde6b5b12d32d7d5374f3766c0e06ae0ca3303 commit 14cde6b5b12d32d7d5374f3766c0e06ae0ca3303 Author: Tom Jones AuthorDate: 2021-05-15 12:36:45 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 08:52:13 +0000 VNETify dummynet This moves dn_cfg and other parameters into per VNET variables. The taskqueue and control state remains global. Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D29274 (cherry picked from commit fe3bcfbda30e763a3ec56083b3a19cebbeaf8952) --- sys/netpfil/ipfw/dn_aqm.h | 6 +- sys/netpfil/ipfw/dn_aqm_codel.c | 2 +- sys/netpfil/ipfw/dn_aqm_pie.c | 2 +- sys/netpfil/ipfw/dn_sched.h | 2 +- sys/netpfil/ipfw/dn_sched_fq_codel.c | 2 +- sys/netpfil/ipfw/dn_sched_fq_codel.h | 7 +- sys/netpfil/ipfw/dn_sched_fq_pie.c | 9 +- sys/netpfil/ipfw/ip_dn_glue.c | 8 +- sys/netpfil/ipfw/ip_dn_io.c | 181 ++++++++++++----------- sys/netpfil/ipfw/ip_dn_private.h | 41 +++--- sys/netpfil/ipfw/ip_dummynet.c | 271 +++++++++++++++++++---------------- 11 files changed, 281 insertions(+), 250 deletions(-) diff --git a/sys/netpfil/ipfw/dn_aqm.h b/sys/netpfil/ipfw/dn_aqm.h index a8f6c39c0a8c..cffdbae11c2f 100644 --- a/sys/netpfil/ipfw/dn_aqm.h +++ b/sys/netpfil/ipfw/dn_aqm.h @@ -38,9 +38,9 @@ /* NOW is the current time in millisecond*/ -#define NOW ((dn_cfg.curr_time * tick) / 1000) +#define NOW ((V_dn_cfg.curr_time * tick) / 1000) -#define AQM_UNOW (dn_cfg.curr_time * tick) +#define AQM_UNOW (V_dn_cfg.curr_time * tick) #define AQM_TIME_1US ((aqm_time_t)(1)) #define AQM_TIME_1MS ((aqm_time_t)(1000)) #define AQM_TIME_1S ((aqm_time_t)(AQM_TIME_1MS * 1000)) @@ -135,7 +135,7 @@ update_stats(struct dn_queue *q, int len, int drop) if (drop) { qni->drops++; sni->drops++; - dn_cfg.io_pkt_drop++; + V_dn_cfg.io_pkt_drop++; } else { /*update queue stats */ qni->length += inc; diff --git a/sys/netpfil/ipfw/dn_aqm_codel.c b/sys/netpfil/ipfw/dn_aqm_codel.c index 8e90dcdb1e5b..47ed971c6ba5 100644 --- a/sys/netpfil/ipfw/dn_aqm_codel.c +++ b/sys/netpfil/ipfw/dn_aqm_codel.c @@ -199,7 +199,7 @@ codel_extract_head(struct dn_queue *q, aqm_time_t *pkt_ts) update_stats(q, -m->m_pkthdr.len, 0); if (q->ni.length == 0) /* queue is now idle */ - q->q_time = dn_cfg.curr_time; + q->q_time = V_dn_cfg.curr_time; /* extract packet TS*/ mtag = m_tag_locate(m, MTAG_ABI_COMPAT, DN_AQM_MTAG_TS, NULL); diff --git a/sys/netpfil/ipfw/dn_aqm_pie.c b/sys/netpfil/ipfw/dn_aqm_pie.c index e106fd0121f3..3b2fd8b96f0d 100644 --- a/sys/netpfil/ipfw/dn_aqm_pie.c +++ b/sys/netpfil/ipfw/dn_aqm_pie.c @@ -338,7 +338,7 @@ pie_extract_head(struct dn_queue *q, aqm_time_t *pkt_ts, int getts) update_stats(q, -m->m_pkthdr.len, 0); if (q->ni.length == 0) /* queue is now idle */ - q->q_time = dn_cfg.curr_time; + q->q_time = V_dn_cfg.curr_time; if (getts) { /* extract packet TS*/ diff --git a/sys/netpfil/ipfw/dn_sched.h b/sys/netpfil/ipfw/dn_sched.h index 9bbd9019d623..1aa885ce3ccf 100644 --- a/sys/netpfil/ipfw/dn_sched.h +++ b/sys/netpfil/ipfw/dn_sched.h @@ -187,7 +187,7 @@ dn_dequeue(struct dn_queue *q) q->_si->ni.len_bytes -= m->m_pkthdr.len; } if (q->ni.length == 0) /* queue is now idle */ - q->q_time = dn_cfg.curr_time; + q->q_time = V_dn_cfg.curr_time; return m; } diff --git a/sys/netpfil/ipfw/dn_sched_fq_codel.c b/sys/netpfil/ipfw/dn_sched_fq_codel.c index d2fe6a76f1cc..2f203bd60118 100644 --- a/sys/netpfil/ipfw/dn_sched_fq_codel.c +++ b/sys/netpfil/ipfw/dn_sched_fq_codel.c @@ -163,7 +163,7 @@ codel_drop_head(struct fq_codel_flow *q, struct fq_codel_si *si) fq_update_stats(q, si, -m->m_pkthdr.len, 1); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; FREE_PKT(m); } diff --git a/sys/netpfil/ipfw/dn_sched_fq_codel.h b/sys/netpfil/ipfw/dn_sched_fq_codel.h index e8685caca8d3..608a288c6770 100644 --- a/sys/netpfil/ipfw/dn_sched_fq_codel.h +++ b/sys/netpfil/ipfw/dn_sched_fq_codel.h @@ -36,6 +36,9 @@ #ifndef _IP_DN_SCHED_FQ_CODEL_H #define _IP_DN_SCHED_FQ_CODEL_H +VNET_DECLARE(unsigned long, io_pkt_drop); +#define V_io_pkt_drop VNET(io_pkt_drop) + /* list of queues */ STAILQ_HEAD(fq_codel_list, fq_codel_flow) ; @@ -104,7 +107,7 @@ fq_update_stats(struct fq_codel_flow *q, struct fq_codel_si *si, int len, si->main_q.ni.drops ++; q->stats.drops ++; si->_si.ni.drops ++; - dn_cfg.io_pkt_drop ++; + V_dn_cfg.io_pkt_drop ++; } if (!drop || (drop && len < 0)) { @@ -147,7 +150,7 @@ fq_codel_extract_head(struct fq_codel_flow *q, aqm_time_t *pkt_ts, struct fq_cod fq_update_stats(q, si, -m->m_pkthdr.len, 0); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; /* extract packet timestamp*/ struct m_tag *mtag; diff --git a/sys/netpfil/ipfw/dn_sched_fq_pie.c b/sys/netpfil/ipfw/dn_sched_fq_pie.c index c791ee333bc6..07da51793a52 100644 --- a/sys/netpfil/ipfw/dn_sched_fq_pie.c +++ b/sys/netpfil/ipfw/dn_sched_fq_pie.c @@ -83,6 +83,9 @@ #define DN_SCHED_FQ_PIE 7 +VNET_DECLARE(unsigned long, io_pkt_drop); +#define V_io_pkt_drop VNET(io_pkt_drop) + /* list of queues */ STAILQ_HEAD(fq_pie_list, fq_pie_flow) ; @@ -299,7 +302,7 @@ fq_update_stats(struct fq_pie_flow *q, struct fq_pie_si *si, int len, si->main_q.ni.drops ++; q->stats.drops ++; si->_si.ni.drops ++; - dn_cfg.io_pkt_drop ++; + V_dn_cfg.io_pkt_drop ++; } if (!drop || (drop && len < 0)) { @@ -347,7 +350,7 @@ fq_pie_extract_head(struct fq_pie_flow *q, aqm_time_t *pkt_ts, fq_update_stats(q, si, -m->m_pkthdr.len, 0); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; if (getts) { /* extract packet timestamp*/ @@ -770,7 +773,7 @@ pie_drop_head(struct fq_pie_flow *q, struct fq_pie_si *si) fq_update_stats(q, si, -m->m_pkthdr.len, 1); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; /* reset accu_prob after packet drop */ q->pst.accu_prob = 0; diff --git a/sys/netpfil/ipfw/ip_dn_glue.c b/sys/netpfil/ipfw/ip_dn_glue.c index 7beb8525e30a..05552468599b 100644 --- a/sys/netpfil/ipfw/ip_dn_glue.c +++ b/sys/netpfil/ipfw/ip_dn_glue.c @@ -569,10 +569,10 @@ dn_compat_calc_size(void) * - all flowset queues: queue_count * - all pipe queue: si_count */ - need += dn_cfg.schk_count * sizeof(struct dn_pipe8) / 2; - need += dn_cfg.fsk_count * sizeof(struct dn_flow_set); - need += dn_cfg.si_count * sizeof(struct dn_flow_queue8); - need += dn_cfg.queue_count * sizeof(struct dn_flow_queue8); + need += V_dn_cfg.schk_count * sizeof(struct dn_pipe8) / 2; + need += V_dn_cfg.fsk_count * sizeof(struct dn_flow_set); + need += V_dn_cfg.si_count * sizeof(struct dn_flow_queue8); + need += V_dn_cfg.queue_count * sizeof(struct dn_flow_queue8); return need; } diff --git a/sys/netpfil/ipfw/ip_dn_io.c b/sys/netpfil/ipfw/ip_dn_io.c index 56a7aa5c4c0c..d276f85311d1 100644 --- a/sys/netpfil/ipfw/ip_dn_io.c +++ b/sys/netpfil/ipfw/ip_dn_io.c @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include /* IFNAMSIZ, struct ifaddr, ifq head, lock.h mutex.h */ +#include #include #include @@ -73,11 +74,10 @@ __FBSDID("$FreeBSD$"); /* * We keep a private variable for the simulation time, but we could * probably use an existing one ("softticks" in sys/kern/kern_timeout.c) - * instead of dn_cfg.curr_time + * instead of V_dn_cfg.curr_time */ - -struct dn_parms dn_cfg; -//VNET_DEFINE(struct dn_parms, _base_dn_cfg); +VNET_DEFINE(struct dn_parms, dn_cfg); +#define V_dn_cfg VNET(dn_cfg) /* * We use a heap to store entities for which we have pending timer events. @@ -101,13 +101,13 @@ sysctl_hash_size(SYSCTL_HANDLER_ARGS) { int error, value; - value = dn_cfg.hash_size; + value = V_dn_cfg.hash_size; error = sysctl_handle_int(oidp, &value, 0, req); if (error != 0 || req->newptr == NULL) return (error); if (value < 16 || value > 65536) return (EINVAL); - dn_cfg.hash_size = value; + V_dn_cfg.hash_size = value; return (0); } @@ -118,9 +118,9 @@ sysctl_limits(SYSCTL_HANDLER_ARGS) long value; if (arg2 != 0) - value = dn_cfg.slot_limit; + value = V_dn_cfg.slot_limit; else - value = dn_cfg.byte_limit; + value = V_dn_cfg.byte_limit; error = sysctl_handle_long(oidp, &value, 0, req); if (error != 0 || req->newptr == NULL) @@ -128,11 +128,11 @@ sysctl_limits(SYSCTL_HANDLER_ARGS) if (arg2 != 0) { if (value < 1) return (EINVAL); - dn_cfg.slot_limit = value; + V_dn_cfg.slot_limit = value; } else { if (value < 1500) return (EINVAL); - dn_cfg.byte_limit = value; + V_dn_cfg.byte_limit = value; } return (0); } @@ -147,9 +147,9 @@ SYSCTL_NODE(_net_inet_ip, OID_AUTO, dummynet, CTLFLAG_RW, 0, "Dummynet"); static SYSCTL_NODE(_net_inet_ip, OID_AUTO, dummynet, CTLFLAG_RW, 0, "Dummynet"); #endif -/* wrapper to pass dn_cfg fields to SYSCTL_* */ -//#define DC(x) (&(VNET_NAME(_base_dn_cfg).x)) -#define DC(x) (&(dn_cfg.x)) +/* wrapper to pass V_dn_cfg fields to SYSCTL_* */ +#define DC(x) (&(VNET_NAME(dn_cfg).x)) + /* parameters */ @@ -344,7 +344,7 @@ red_drops (struct dn_queue *q, int len) * XXX check wraps... */ if (q->avg) { - u_int t = div64((dn_cfg.curr_time - q->q_time), fs->lookup_step); + u_int t = div64((V_dn_cfg.curr_time - q->q_time), fs->lookup_step); q->avg = (t < fs->lookup_depth) ? SCALE_MUL(q->avg, fs->w_q_lookup[t]) : 0; @@ -519,7 +519,7 @@ dn_enqueue(struct dn_queue *q, struct mbuf* m, int drop) return (0); drop: - dn_cfg.io_pkt_drop++; + V_dn_cfg.io_pkt_drop++; q->ni.drops++; ni->drops++; FREE_PKT(m); @@ -548,7 +548,7 @@ transmit_event(struct mq *q, struct delay_line *dline, uint64_t now) } if (m != NULL) { dline->oid.subtype = 1; /* in heap */ - heap_insert(&dn_cfg.evheap, pkt->output_time, dline); + heap_insert(&V_dn_cfg.evheap, pkt->output_time, dline); } } @@ -611,7 +611,7 @@ serve_sched(struct mq *q, struct dn_sch_inst *si, uint64_t now) (m->m_pkthdr.len * 8 + extra_bits(m, s)); si->credit -= len_scaled; /* Move packet in the delay line */ - dn_tag_get(m)->output_time = dn_cfg.curr_time + s->link.delay ; + dn_tag_get(m)->output_time = V_dn_cfg.curr_time + s->link.delay ; mq_append(&si->dline.mq, m); } @@ -629,7 +629,7 @@ serve_sched(struct mq *q, struct dn_sch_inst *si, uint64_t now) if (m) dn_tag_get(m)->output_time += t; si->kflags |= DN_ACTIVE; - heap_insert(&dn_cfg.evheap, now + t, si); + heap_insert(&V_dn_cfg.evheap, now + t, si); } if (delay_line_idle && done) transmit_event(q, &si->dline, now); @@ -646,74 +646,85 @@ dummynet_task(void *context, int pending) { struct timeval t; struct mq q = { NULL, NULL }; /* queue to accumulate results */ + struct epoch_tracker et; - CURVNET_SET((struct vnet *)context); + VNET_ITERATOR_DECL(vnet_iter); + VNET_LIST_RLOCK(); + NET_EPOCH_ENTER_ET(et); - DN_BH_WLOCK(); + VNET_FOREACH(vnet_iter) { + memset(&q, 0, sizeof(struct mq)); + CURVNET_SET(vnet_iter); - /* Update number of lost(coalesced) ticks. */ - dn_cfg.tick_lost += pending - 1; + DN_BH_WLOCK(); - getmicrouptime(&t); - /* Last tick duration (usec). */ - dn_cfg.tick_last = (t.tv_sec - dn_cfg.prev_t.tv_sec) * 1000000 + - (t.tv_usec - dn_cfg.prev_t.tv_usec); - /* Last tick vs standard tick difference (usec). */ - dn_cfg.tick_delta = (dn_cfg.tick_last * hz - 1000000) / hz; - /* Accumulated tick difference (usec). */ - dn_cfg.tick_delta_sum += dn_cfg.tick_delta; + /* Update number of lost(coalesced) ticks. */ + V_dn_cfg.tick_lost += pending - 1; - dn_cfg.prev_t = t; + getmicrouptime(&t); + /* Last tick duration (usec). */ + V_dn_cfg.tick_last = (t.tv_sec - V_dn_cfg.prev_t.tv_sec) * 1000000 + + (t.tv_usec - V_dn_cfg.prev_t.tv_usec); + /* Last tick vs standard tick difference (usec). */ + V_dn_cfg.tick_delta = (V_dn_cfg.tick_last * hz - 1000000) / hz; + /* Accumulated tick difference (usec). */ + V_dn_cfg.tick_delta_sum += V_dn_cfg.tick_delta; - /* - * Adjust curr_time if the accumulated tick difference is - * greater than the 'standard' tick. Since curr_time should - * be monotonically increasing, we do positive adjustments - * as required, and throttle curr_time in case of negative - * adjustment. - */ - dn_cfg.curr_time++; - if (dn_cfg.tick_delta_sum - tick >= 0) { - int diff = dn_cfg.tick_delta_sum / tick; - - dn_cfg.curr_time += diff; - dn_cfg.tick_diff += diff; - dn_cfg.tick_delta_sum %= tick; - dn_cfg.tick_adjustment++; - } else if (dn_cfg.tick_delta_sum + tick <= 0) { - dn_cfg.curr_time--; - dn_cfg.tick_diff--; - dn_cfg.tick_delta_sum += tick; - dn_cfg.tick_adjustment++; - } + V_dn_cfg.prev_t = t; - /* serve pending events, accumulate in q */ - for (;;) { - struct dn_id *p; /* generic parameter to handler */ + /* + * Adjust curr_time if the accumulated tick difference is + * greater than the 'standard' tick. Since curr_time should + * be monotonically increasing, we do positive adjustments + * as required, and throttle curr_time in case of negative + * adjustment. + */ + V_dn_cfg.curr_time++; + if (V_dn_cfg.tick_delta_sum - tick >= 0) { + int diff = V_dn_cfg.tick_delta_sum / tick; + + V_dn_cfg.curr_time += diff; + V_dn_cfg.tick_diff += diff; + V_dn_cfg.tick_delta_sum %= tick; + V_dn_cfg.tick_adjustment++; + } else if (V_dn_cfg.tick_delta_sum + tick <= 0) { + V_dn_cfg.curr_time--; + V_dn_cfg.tick_diff--; + V_dn_cfg.tick_delta_sum += tick; + V_dn_cfg.tick_adjustment++; + } - if (dn_cfg.evheap.elements == 0 || - DN_KEY_LT(dn_cfg.curr_time, HEAP_TOP(&dn_cfg.evheap)->key)) - break; - p = HEAP_TOP(&dn_cfg.evheap)->object; - heap_extract(&dn_cfg.evheap, NULL); + /* serve pending events, accumulate in q */ + for (;;) { + struct dn_id *p; /* generic parameter to handler */ - if (p->type == DN_SCH_I) { - serve_sched(&q, (struct dn_sch_inst *)p, dn_cfg.curr_time); - } else { /* extracted a delay line */ - transmit_event(&q, (struct delay_line *)p, dn_cfg.curr_time); + if (V_dn_cfg.evheap.elements == 0 || + DN_KEY_LT(V_dn_cfg.curr_time, HEAP_TOP(&V_dn_cfg.evheap)->key)) + break; + p = HEAP_TOP(&V_dn_cfg.evheap)->object; + heap_extract(&V_dn_cfg.evheap, NULL); + if (p->type == DN_SCH_I) { + serve_sched(&q, (struct dn_sch_inst *)p, V_dn_cfg.curr_time); + } else { /* extracted a delay line */ + transmit_event(&q, (struct delay_line *)p, V_dn_cfg.curr_time); + } } + if (V_dn_cfg.expire && ++V_dn_cfg.expire_cycle >= V_dn_cfg.expire) { + V_dn_cfg.expire_cycle = 0; + dn_drain_scheduler(); + dn_drain_queue(); + } + DN_BH_WUNLOCK(); + if (q.head != NULL) + dummynet_send(q.head); + + CURVNET_RESTORE(); } - if (dn_cfg.expire && ++dn_cfg.expire_cycle >= dn_cfg.expire) { - dn_cfg.expire_cycle = 0; - dn_drain_scheduler(); - dn_drain_queue(); - } + NET_EPOCH_EXIT_ET(et); + VNET_LIST_RUNLOCK(); + /* Schedule our next run. */ dn_reschedule(); - DN_BH_WUNLOCK(); - if (q.head != NULL) - dummynet_send(q.head); - CURVNET_RESTORE(); } /* @@ -827,7 +838,7 @@ tag_mbuf(struct mbuf *m, int dir, struct ip_fw_args *fwa) dt->dn_dir = dir; dt->ifp = fwa->oif; /* dt->output tame is updated as we move through */ - dt->output_time = dn_cfg.curr_time; + dt->output_time = V_dn_cfg.curr_time; dt->iphdr_off = (dir & PROTO_LAYER2) ? ETHER_HDR_LEN : 0; return 0; } @@ -855,12 +866,12 @@ dummynet_io(struct mbuf **m0, int dir, struct ip_fw_args *fwa) int fs_id = (fwa->rule.info & IPFW_INFO_MASK) + ((fwa->rule.info & IPFW_IS_PIPE) ? 2*DN_MAX_ID : 0); DN_BH_WLOCK(); - dn_cfg.io_pkt++; + V_dn_cfg.io_pkt++; /* we could actually tag outside the lock, but who cares... */ if (tag_mbuf(m, dir, fwa)) goto dropit; /* XXX locate_flowset could be optimised with a direct ref. */ - fs = dn_ht_find(dn_cfg.fshash, fs_id, 0, NULL); + fs = dn_ht_find(V_dn_cfg.fshash, fs_id, 0, NULL); if (fs == NULL) goto dropit; /* This queue/pipe does not exist! */ if (fs->sched == NULL) /* should not happen */ @@ -883,7 +894,7 @@ dummynet_io(struct mbuf **m0, int dir, struct ip_fw_args *fwa) m = *m0 = NULL; /* dn_enqueue already increases io_pkt_drop */ - dn_cfg.io_pkt_drop--; + V_dn_cfg.io_pkt_drop--; goto dropit; } @@ -894,34 +905,34 @@ dummynet_io(struct mbuf **m0, int dir, struct ip_fw_args *fwa) } /* compute the initial allowance */ - if (si->idle_time < dn_cfg.curr_time) { + if (si->idle_time < V_dn_cfg.curr_time) { /* Do this only on the first packet on an idle pipe */ struct dn_link *p = &fs->sched->link; - si->sched_time = dn_cfg.curr_time; - si->credit = dn_cfg.io_fast ? p->bandwidth : 0; + si->sched_time = V_dn_cfg.curr_time; + si->credit = V_dn_cfg.io_fast ? p->bandwidth : 0; if (p->burst) { - uint64_t burst = (dn_cfg.curr_time - si->idle_time) * p->bandwidth; + uint64_t burst = (V_dn_cfg.curr_time - si->idle_time) * p->bandwidth; if (burst > p->burst) burst = p->burst; si->credit += burst; } } /* pass through scheduler and delay line */ - m = serve_sched(NULL, si, dn_cfg.curr_time); + m = serve_sched(NULL, si, V_dn_cfg.curr_time); /* optimization -- pass it back to ipfw for immediate send */ /* XXX Don't call dummynet_send() if scheduler return the packet * just enqueued. This avoid a lock order reversal. * */ - if (/*dn_cfg.io_fast &&*/ m == *m0 && (dir & PROTO_LAYER2) == 0 ) { + if (/*V_dn_cfg.io_fast &&*/ m == *m0 && (dir & PROTO_LAYER2) == 0 ) { /* fast io, rename the tag * to carry reinject info. */ struct m_tag *tag = m_tag_first(m); tag->m_tag_cookie = MTAG_IPFW_RULE; tag->m_tag_id = 0; - dn_cfg.io_pkt_fast++; + V_dn_cfg.io_pkt_fast++; if (m->m_nextpkt != NULL) { printf("dummynet: fast io: pkt chain detected!\n"); m->m_nextpkt = NULL; @@ -937,7 +948,7 @@ done: return 0; dropit: - dn_cfg.io_pkt_drop++; + V_dn_cfg.io_pkt_drop++; DN_BH_WUNLOCK(); if (m) FREE_PKT(m); diff --git a/sys/netpfil/ipfw/ip_dn_private.h b/sys/netpfil/ipfw/ip_dn_private.h index 86dd5a8a0cbb..8f8fca5fbd58 100644 --- a/sys/netpfil/ipfw/ip_dn_private.h +++ b/sys/netpfil/ipfw/ip_dn_private.h @@ -46,7 +46,7 @@ #define D(fmt, ...) printf("%-10s " fmt "\n", \ __FUNCTION__, ## __VA_ARGS__) #define DX(lev, fmt, ...) do { \ - if (dn_cfg.debug > lev) D(fmt, ## __VA_ARGS__); } while (0) + if (V_dn_cfg.debug > lev) D(fmt, ## __VA_ARGS__); } while (0) #endif MALLOC_DECLARE(M_DUMMYNET); @@ -56,26 +56,26 @@ MALLOC_DECLARE(M_DUMMYNET); #endif #define DN_LOCK_INIT() do { \ - mtx_init(&dn_cfg.uh_mtx, "dn_uh", NULL, MTX_DEF); \ - mtx_init(&dn_cfg.bh_mtx, "dn_bh", NULL, MTX_DEF); \ + mtx_init(&V_dn_cfg.uh_mtx, "dn_uh", NULL, MTX_DEF); \ + mtx_init(&V_dn_cfg.bh_mtx, "dn_bh", NULL, MTX_DEF); \ } while (0) #define DN_LOCK_DESTROY() do { \ - mtx_destroy(&dn_cfg.uh_mtx); \ - mtx_destroy(&dn_cfg.bh_mtx); \ + mtx_destroy(&V_dn_cfg.uh_mtx); \ + mtx_destroy(&V_dn_cfg.bh_mtx); \ } while (0) #if 0 /* not used yet */ -#define DN_UH_RLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_UH_RUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_UH_WLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_UH_WUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_UH_LOCK_ASSERT() mtx_assert(&dn_cfg.uh_mtx, MA_OWNED) +#define DN_UH_RLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_UH_RUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_UH_WLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_UH_WUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_UH_LOCK_ASSERT() mtx_assert(&V_dn_cfg.uh_mtx, MA_OWNED) #endif -#define DN_BH_RLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_BH_RUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_BH_WLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_BH_WUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_BH_LOCK_ASSERT() mtx_assert(&dn_cfg.uh_mtx, MA_OWNED) +#define DN_BH_RLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_BH_RUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_BH_WLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_BH_WUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_BH_LOCK_ASSERT() mtx_assert(&V_dn_cfg.uh_mtx, MA_OWNED) SLIST_HEAD(dn_schk_head, dn_schk); SLIST_HEAD(dn_sch_inst_head, dn_sch_inst); @@ -101,7 +101,7 @@ set_oid(struct dn_id *o, int type, int len) } /* - * configuration and global data for a dummynet instance + * configuration and data for a dummynet instance * * When a configuration is modified from userland, 'id' is incremented * so we can use the value to check for stale pointers. @@ -154,10 +154,6 @@ struct dn_parms { struct dn_ht *schedhash; /* list of flowsets without a scheduler -- use sch_chain */ struct dn_fsk_head fsu; /* list of unlinked flowsets */ - struct dn_alg_head schedlist; /* list of algorithms */ -#ifdef NEW_AQM - struct dn_aqm_head aqmlist; /* list of AQMs */ -#endif /* Store the fs/sch to scan when draining. The value is the * bucket number of the hash table. Expire can be disabled @@ -393,9 +389,8 @@ struct dn_pkt_tag { uint16_t iphdr_off; /* IP header offset for mtodo() */ }; -extern struct dn_parms dn_cfg; -//VNET_DECLARE(struct dn_parms, _base_dn_cfg); -//#define dn_cfg VNET(_base_dn_cfg) +VNET_DECLARE(struct dn_parms, dn_cfg); +#define V_dn_cfg VNET(dn_cfg) int dummynet_io(struct mbuf **, int , struct ip_fw_args *); void dummynet_task(void *context, int pending); diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c index ab2c0cdfcd05..7eee314ea705 100644 --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include /* ip_output(), IP_FORWARDING */ #include #include +#include #include #include @@ -87,10 +88,17 @@ struct schk_new_arg { /*---- callout hooks. ----*/ static struct callout dn_timeout; +static int dn_tasks_started = 0; static int dn_gone; static struct task dn_task; static struct taskqueue *dn_tq = NULL; +/* global scheduler list */ +struct dn_alg_head schedlist; +#ifdef NEW_AQM +struct dn_aqm_head aqmlist; /* list of AQMs */ +#endif + static void dummynet(void *arg) { @@ -117,7 +125,7 @@ find_aqm_type(int type, char *name) { struct dn_aqm *d; - SLIST_FOREACH(d, &dn_cfg.aqmlist, next) { + SLIST_FOREACH(d, &aqmlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -131,7 +139,7 @@ find_sched_type(int type, char *name) { struct dn_alg *d; - SLIST_FOREACH(d, &dn_cfg.schedlist, next) { + SLIST_FOREACH(d, &schedlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -354,7 +362,7 @@ q_new(uintptr_t key, int flags, void *arg) if(fs->aqmfp->init(q)) D("unable to init AQM for fs %d", fs->fs.fs_nr); #endif - dn_cfg.queue_count++; + V_dn_cfg.queue_count++; return q; } @@ -387,7 +395,7 @@ dn_delete_queue(struct dn_queue *q, int flags) dn_free_pkts(q->mq.head); bzero(q, sizeof(*q)); // safety free(q, M_DUMMYNET); - dn_cfg.queue_count--; + V_dn_cfg.queue_count--; } } @@ -527,7 +535,7 @@ si_new(uintptr_t key, int flags, void *arg) } #endif - dn_cfg.si_count++; + V_dn_cfg.si_count++; return si; error: @@ -552,10 +560,10 @@ si_destroy(void *_si, void *arg) struct delay_line *dl = &si->dline; if (dl->oid.subtype) /* remove delay line from event heap */ - heap_extract(&dn_cfg.evheap, dl); + heap_extract(&V_dn_cfg.evheap, dl); dn_free_pkts(dl->mq.head); /* drain delay line */ if (si->kflags & DN_ACTIVE) /* remove si from event heap */ - heap_extract(&dn_cfg.evheap, si); + heap_extract(&V_dn_cfg.evheap, si); #ifdef NEW_AQM /* clean up AQM status for !DN_MULTIQUEUE sched @@ -574,7 +582,7 @@ si_destroy(void *_si, void *arg) s->fp->free_sched(si); bzero(si, sizeof(*si)); /* safety */ free(si, M_DUMMYNET); - dn_cfg.si_count--; + V_dn_cfg.si_count--; return DNHT_SCAN_DEL; } @@ -605,7 +613,7 @@ si_reset_credit(void *_si, void *arg) struct dn_sch_inst *si = _si; struct dn_link *p = &si->sched->link; - si->credit = p->burst + (dn_cfg.io_fast ? p->bandwidth : 0); + si->credit = p->burst + (V_dn_cfg.io_fast ? p->bandwidth : 0); return 0; } @@ -651,9 +659,9 @@ fsk_new(uintptr_t key, int flags, void *arg) fs = malloc(sizeof(*fs), M_DUMMYNET, M_NOWAIT | M_ZERO); if (fs) { set_oid(&fs->fs.oid, DN_FS, sizeof(fs->fs)); - dn_cfg.fsk_count++; + V_dn_cfg.fsk_count++; fs->drain_bucket = 0; - SLIST_INSERT_HEAD(&dn_cfg.fsu, fs, sch_chain); + SLIST_INSERT_HEAD(&V_dn_cfg.fsu, fs, sch_chain); } return fs; } @@ -737,7 +745,7 @@ fsk_detach(struct dn_fsk *fs, int flags) (flags & DN_DETACH) ? "DET":""); if (flags & DN_DETACH) { /* detach from the list */ struct dn_fsk_head *h; - h = fs->sched ? &fs->sched->fsk_list : &dn_cfg.fsu; + h = fs->sched ? &fs->sched->fsk_list : &V_dn_cfg.fsu; SLIST_REMOVE(h, fs, dn_fsk, sch_chain); } /* Free the RED parameters, they will be recomputed on @@ -757,9 +765,9 @@ fsk_detach(struct dn_fsk *fs, int flags) if (flags & DN_DELETE_FS) { bzero(fs, sizeof(*fs)); /* safety */ free(fs, M_DUMMYNET); - dn_cfg.fsk_count--; + V_dn_cfg.fsk_count--; } else { - SLIST_INSERT_HEAD(&dn_cfg.fsu, fs, sch_chain); + SLIST_INSERT_HEAD(&V_dn_cfg.fsu, fs, sch_chain); } } @@ -797,7 +805,7 @@ delete_fs(int i, int locked) if (!locked) DN_BH_WLOCK(); - fs = dn_ht_find(dn_cfg.fshash, i, DNHT_REMOVE, NULL); + fs = dn_ht_find(V_dn_cfg.fshash, i, DNHT_REMOVE, NULL); ND("fs %d found %p", i, fs); if (fs) { fsk_detach(fs, DN_DETACH | DN_DELETE_FS); @@ -866,7 +874,7 @@ schk_new(uintptr_t key, int flags, void *arg) } } s->fp = NULL; /* mark as a new scheduler */ - dn_cfg.schk_count++; + V_dn_cfg.schk_count++; return s; } @@ -905,7 +913,7 @@ schk_delete_cb(void *obj, void *arg) s->fp->destroy(s); bzero(s, sizeof(*s)); // safety free(obj, M_DUMMYNET); - dn_cfg.schk_count--; + V_dn_cfg.schk_count--; return DNHT_SCAN_DEL; } @@ -919,7 +927,7 @@ delete_schk(int i) { struct dn_schk *s; - s = dn_ht_find(dn_cfg.schedhash, i, DNHT_REMOVE, NULL); + s = dn_ht_find(V_dn_cfg.schedhash, i, DNHT_REMOVE, NULL); ND("%d %p", i, s); if (!s) return EINVAL; @@ -1176,7 +1184,7 @@ copy_data_helper(void *_o, void *_arg) static inline struct dn_schk * locate_scheduler(int i) { - return dn_ht_find(dn_cfg.schedhash, i, 0, NULL); + return dn_ht_find(V_dn_cfg.schedhash, i, 0, NULL); } /* @@ -1194,10 +1202,10 @@ config_red(struct dn_fsk *fs) /* Doing stuff that was in userland */ i = fs->sched->link.bandwidth; s = (i <= 0) ? 0 : - hz * dn_cfg.red_avg_pkt_size * 8 * SCALE(1) / i; + hz * V_dn_cfg.red_avg_pkt_size * 8 * SCALE(1) / i; idle = div64((s * 3) , fs->w_q); /* s, fs->w_q scaled; idle not scaled */ - fs->lookup_step = div64(idle , dn_cfg.red_lookup_depth); + fs->lookup_step = div64(idle , V_dn_cfg.red_lookup_depth); /* fs->lookup_step not scaled, */ if (!fs->lookup_step) fs->lookup_step = 1; @@ -1227,14 +1235,14 @@ config_red(struct dn_fsk *fs) free(fs->w_q_lookup, M_DUMMYNET); fs->w_q_lookup = NULL; } - if (dn_cfg.red_lookup_depth == 0) { + if (V_dn_cfg.red_lookup_depth == 0) { printf("\ndummynet: net.inet.ip.dummynet.red_lookup_depth" "must be > 0\n"); fs->fs.flags &= ~DN_IS_RED; fs->fs.flags &= ~DN_IS_GENTLE_RED; return (EINVAL); } - fs->lookup_depth = dn_cfg.red_lookup_depth; + fs->lookup_depth = V_dn_cfg.red_lookup_depth; fs->w_q_lookup = (u_int *)malloc(fs->lookup_depth * sizeof(int), M_DUMMYNET, M_NOWAIT); if (fs->w_q_lookup == NULL) { @@ -1251,12 +1259,12 @@ config_red(struct dn_fsk *fs) fs->w_q_lookup[i] = SCALE_MUL(fs->w_q_lookup[i - 1], fs->lookup_weight); - if (dn_cfg.red_avg_pkt_size < 1) - dn_cfg.red_avg_pkt_size = 512; - fs->avg_pkt_size = dn_cfg.red_avg_pkt_size; - if (dn_cfg.red_max_pkt_size < 1) - dn_cfg.red_max_pkt_size = 1500; - fs->max_pkt_size = dn_cfg.red_max_pkt_size; + if (V_dn_cfg.red_avg_pkt_size < 1) + V_dn_cfg.red_avg_pkt_size = 512; + fs->avg_pkt_size = V_dn_cfg.red_avg_pkt_size; + if (V_dn_cfg.red_max_pkt_size < 1) + V_dn_cfg.red_max_pkt_size = 1500; + fs->max_pkt_size = V_dn_cfg.red_max_pkt_size; ND("exit"); return 0; } @@ -1278,7 +1286,7 @@ fsk_attach(struct dn_fsk *fs, struct dn_schk *s) { ND("remove fs %d from fsunlinked, link to sched %d", fs->fs.fs_nr, s->sch.sched_nr); - SLIST_REMOVE(&dn_cfg.fsu, fs, dn_fsk, sch_chain); + SLIST_REMOVE(&V_dn_cfg.fsu, fs, dn_fsk, sch_chain); fs->sched = s; SLIST_INSERT_HEAD(&s->fsk_list, fs, sch_chain); if (s->fp->new_fsk) @@ -1317,7 +1325,7 @@ update_fs(struct dn_schk *s) { struct dn_fsk *fs, *tmp; - SLIST_FOREACH_SAFE(fs, &dn_cfg.fsu, sch_chain, tmp) { + SLIST_FOREACH_SAFE(fs, &V_dn_cfg.fsu, sch_chain, tmp) { if (s->sch.sched_nr != fs->fs.sched_nr) { D("fs %d for sch %d not %d still unlinked", fs->fs.fs_nr, fs->fs.sched_nr, @@ -1362,7 +1370,7 @@ get_aqm_parms(struct sockopt *sopt) break; } - fs = dn_ht_find(dn_cfg.fshash, ep->nr, 0, NULL); + fs = dn_ht_find(V_dn_cfg.fshash, ep->nr, 0, NULL); if (!fs) { D("fs %d not found", ep->nr); err = EINVAL; @@ -1579,7 +1587,7 @@ config_link(struct dn_link *p, struct dn_id *arg) s->link.burst = p->burst; schk_reset_credit(s); } - dn_cfg.id++; + V_dn_cfg.id++; DN_BH_WUNLOCK(); return 0; } @@ -1616,15 +1624,15 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) /* XXX other sanity checks */ if (nfs->flags & DN_QSIZE_BYTES) { ipdn_bound_var(&nfs->qsize, 16384, - 1500, dn_cfg.byte_limit, NULL); // "queue byte size"); + 1500, V_dn_cfg.byte_limit, NULL); // "queue byte size"); } else { ipdn_bound_var(&nfs->qsize, 50, - 1, dn_cfg.slot_limit, NULL); // "queue slot size"); + 1, V_dn_cfg.slot_limit, NULL); // "queue slot size"); } if (nfs->flags & DN_HAVE_MASK) { /* make sure we have some buckets */ - ipdn_bound_var((int *)&nfs->buckets, dn_cfg.hash_size, - 1, dn_cfg.max_hash_size, "flowset buckets"); + ipdn_bound_var((int *)&nfs->buckets, V_dn_cfg.hash_size, + 1, V_dn_cfg.max_hash_size, "flowset buckets"); } else { nfs->buckets = 1; /* we only need 1 */ } @@ -1634,8 +1642,8 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) struct dn_schk *s; int flags = nfs->sched_nr ? DNHT_INSERT : 0; int j; - int oldc = dn_cfg.fsk_count; - fs = dn_ht_find(dn_cfg.fshash, i, flags, NULL); + int oldc = V_dn_cfg.fsk_count; + fs = dn_ht_find(V_dn_cfg.fshash, i, flags, NULL); if (fs == NULL) { D("missing sched for flowset %d", i); break; @@ -1662,8 +1670,8 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) #endif break; /* no change, nothing to do */ } - if (oldc != dn_cfg.fsk_count) /* new item */ - dn_cfg.id++; + if (oldc != V_dn_cfg.fsk_count) /* new item */ + V_dn_cfg.id++; s = locate_scheduler(nfs->sched_nr); /* detach from old scheduler if needed, preserving * queues if we need to reattach. Then update the @@ -1729,8 +1737,8 @@ config_sched(struct dn_sch *_nsch, struct dn_id *arg) return EINVAL; /* make sure we have some buckets */ if (a.sch->flags & DN_HAVE_MASK) - ipdn_bound_var((int *)&a.sch->buckets, dn_cfg.hash_size, - 1, dn_cfg.max_hash_size, "sched buckets"); + ipdn_bound_var((int *)&a.sch->buckets, V_dn_cfg.hash_size, + 1, V_dn_cfg.max_hash_size, "sched buckets"); /* XXX other sanity checks */ bzero(&p, sizeof(p)); @@ -1748,14 +1756,14 @@ again: /* run twice, for wfq and fifo */ * lookup the type. If not supplied, use the previous one * or default to WF2Q+. Otherwise, return an error. */ - dn_cfg.id++; + V_dn_cfg.id++; a.fp = find_sched_type(a.sch->oid.subtype, a.sch->name); if (a.fp != NULL) { /* found. Lookup or create entry */ - s = dn_ht_find(dn_cfg.schedhash, i, DNHT_INSERT, &a); + s = dn_ht_find(V_dn_cfg.schedhash, i, DNHT_INSERT, &a); } else if (a.sch->oid.subtype == 0 && !a.sch->name[0]) { /* No type. search existing s* or retry with WF2Q+ */ - s = dn_ht_find(dn_cfg.schedhash, i, 0, &a); + s = dn_ht_find(V_dn_cfg.schedhash, i, 0, &a); if (s != NULL) { a.fp = s->fp; /* Scheduler exists, skip to FIFO scheduler @@ -1827,7 +1835,7 @@ again: /* run twice, for wfq and fifo */ memcpy(pf, s->profile, sizeof(*pf)); } /* remove from the hash */ - dn_ht_find(dn_cfg.schedhash, i, DNHT_REMOVE, NULL); + dn_ht_find(V_dn_cfg.schedhash, i, DNHT_REMOVE, NULL); *** 390 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:46 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 57A4365463A; Thu, 17 Jun 2021 14:54:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7p1Hfgz4vZC; Thu, 17 Jun 2021 14:54:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EEED211806; Thu, 17 Jun 2021 14:54:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEsjVP010665; Thu, 17 Jun 2021 14:54:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEsjVb010664; Thu, 17 Jun 2021 14:54:45 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:45 GMT Message-Id: <202106171454.15HEsjVb010664@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 719f6456fbde - stable/12 - dummynet: free(NULL, M_DUMMYNET); is safe MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 719f6456fbdee54f94109f945d7d945b2abf9589 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:46 -0000 The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=719f6456fbdee54f94109f945d7d945b2abf9589 commit 719f6456fbdee54f94109f945d7d945b2abf9589 Author: Kristof Provost AuthorDate: 2021-05-21 14:55:07 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 14:53:36 +0000 dummynet: free(NULL, M_DUMMYNET); is safe There's no need to check pointers for NULL before free()ing them. No functional change. MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30382 (cherry picked from commit 1b2dbe37fa32d7255faf7d1feec7bb31414a8102) --- sys/netpfil/ipfw/ip_dummynet.c | 46 ++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c index c412a45f7296..57565e0d7d23 100644 --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -758,8 +758,7 @@ fsk_detach(struct dn_fsk *fs, int flags) /* Free the RED parameters, they will be recomputed on * subsequent attach if needed. */ - if (fs->w_q_lookup) - free(fs->w_q_lookup, M_DUMMYNET); + free(fs->w_q_lookup, M_DUMMYNET); fs->w_q_lookup = NULL; qht_delete(fs, flags); #ifdef NEW_AQM @@ -911,10 +910,9 @@ schk_delete_cb(void *obj, void *arg) dn_ht_free(s->siht, 0); } else if (s->siht) si_destroy(s->siht, NULL); - if (s->profile) { - free(s->profile, M_DUMMYNET); - s->profile = NULL; - } + + free(s->profile, M_DUMMYNET); + s->profile = NULL; s->siht = NULL; if (s->fp->destroy) s->fp->destroy(s); @@ -1238,10 +1236,8 @@ config_red(struct dn_fsk *fs) } /* If the lookup table already exist, free and create it again. */ - if (fs->w_q_lookup) { - free(fs->w_q_lookup, M_DUMMYNET); - fs->w_q_lookup = NULL; - } + free(fs->w_q_lookup, M_DUMMYNET); + fs->w_q_lookup = NULL; if (V_dn_cfg.red_lookup_depth == 0) { printf("\ndummynet: net.inet.ip.dummynet.red_lookup_depth" "must be > 0\n"); @@ -1580,10 +1576,9 @@ config_link(struct dn_link *p, struct dn_id *arg) return EINVAL; } /* remove profile if exists */ - if (s->profile) { - free(s->profile, M_DUMMYNET); - s->profile = NULL; - } + free(s->profile, M_DUMMYNET); + s->profile = NULL; + /* copy all parameters */ s->link.oid = p->oid; s->link.link_nr = i; @@ -1707,8 +1702,7 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) if (!locked) DN_BH_WUNLOCK(); #ifdef NEW_AQM - if (ep != NULL) - free(ep, M_TEMP); + free(ep, M_TEMP); #endif return fs; } @@ -1907,8 +1901,7 @@ next: err = 0; error: DN_BH_WUNLOCK(); - if (pf) - free(pf, M_DUMMYNET); + free(pf, M_DUMMYNET); return err; } @@ -2136,10 +2129,8 @@ do_config(void *p, int l) break; off += o.len; } - if (arg != NULL) - free(arg, M_TEMP); - if (dn != NULL) - free(dn, M_TEMP); + free(arg, M_TEMP); + free(dn, M_TEMP); return err; } @@ -2325,8 +2316,7 @@ dummynet_get(struct sockopt *sopt, void **compat) break; DN_BH_WUNLOCK(); - if (start) - free(start, M_DUMMYNET); + free(start, M_DUMMYNET); start = NULL; if (need > sopt_valsize) break; @@ -2384,10 +2374,9 @@ dummynet_get(struct sockopt *sopt, void **compat) error = sooptcopyout(sopt, start, buf - start); } done: - if (cmd && cmd != &r.o) + if (cmd != &r.o) free(cmd, M_DUMMYNET); - if (start) - free(start, M_DUMMYNET); + free(start, M_DUMMYNET); return error; } @@ -2548,8 +2537,7 @@ ip_dn_ctl(struct sockopt *sopt) break; } - if (p != NULL) - free(p, M_TEMP); + free(p, M_TEMP); NET_EPOCH_EXIT_ET(et); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:47 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 627A56540F3; Thu, 17 Jun 2021 14:54:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7q26RFz4vkD; Thu, 17 Jun 2021 14:54:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2C7FF11737; Thu, 17 Jun 2021 14:54:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEslCj010689; Thu, 17 Jun 2021 14:54:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEslk2010688; Thu, 17 Jun 2021 14:54:47 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:47 GMT Message-Id: <202106171454.15HEslk2010688@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: dddbe8523208 - stable/12 - pf: don't hold a lock during copyout() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: dddbe852320818451f004177d4ff887618adaa85 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:47 -0000 The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=dddbe852320818451f004177d4ff887618adaa85 commit dddbe852320818451f004177d4ff887618adaa85 Author: Kristof Provost AuthorDate: 2021-06-14 12:04:02 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 14:53:36 +0000 pf: don't hold a lock during copyout() copyout() can trigger page faults, so it may potentially sleep. Reported by: avg MFC after: 3 days Sponsored by: Rubicon Communications, LLC ("Netgate") (cherry picked from commit 8b5f4e692b1d1585ecfc6690552650114e3e704e) --- sys/netpfil/pf/pf_ioctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index 3a5a7601b51e..3d5ae03b5a11 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -2532,8 +2532,6 @@ DIOCADDRULENV_error: ERROUT(ENOSPC); } - error = copyout(nvlpacked, nv->data, nv->len); - if (clear_counter) { counter_u64_zero(rule->evaluations); for (int i = 0; i < 2; i++) { @@ -2544,6 +2542,8 @@ DIOCADDRULENV_error: } PF_RULES_WUNLOCK(); + error = copyout(nvlpacked, nv->data, nv->len); + #undef ERROUT DIOCGETRULENV_error: free(nvlpacked, M_NVLIST); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:45 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0FCE26543A4; Thu, 17 Jun 2021 14:54:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7m6fpCz4vTS; Thu, 17 Jun 2021 14:54:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CAE1B11567; Thu, 17 Jun 2021 14:54:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEsirZ010632; Thu, 17 Jun 2021 14:54:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEsiNU010631; Thu, 17 Jun 2021 14:54:44 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:44 GMT Message-Id: <202106171454.15HEsiNU010631@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: bc90a9cb0a74 - stable/12 - dummynet: Fix schedlist and aqmlist locking MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: bc90a9cb0a741315ed6a43807b781acd2bd0957c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:45 -0000 The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=bc90a9cb0a741315ed6a43807b781acd2bd0957c commit bc90a9cb0a741315ed6a43807b781acd2bd0957c Author: Kristof Provost AuthorDate: 2021-05-21 12:26:49 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 14:53:36 +0000 dummynet: Fix schedlist and aqmlist locking These are global (i.e. shared across vnets) structures, so we need global lock to protect them. However, we look up entries in these lists (find_aqm_type(), find_sched_type()) and return them. We must ensure that the returned structures cannot go away while we are using them. Resolve this by using NET_EPOCH(). The structures can be safely accessed under it, and we postpone their cleanup until we're sure they're no longer used. MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30381 (cherry picked from commit 51d73df18e4d120f6f062062c18efae3ed5193a6) --- sys/netpfil/ipfw/dn_aqm.h | 3 +- sys/netpfil/ipfw/dn_sched.h | 4 +- sys/netpfil/ipfw/ip_dn_glue.c | 6 +- sys/netpfil/ipfw/ip_dummynet.c | 123 +++++++++++++++++++++++++++++------------ 4 files changed, 98 insertions(+), 38 deletions(-) diff --git a/sys/netpfil/ipfw/dn_aqm.h b/sys/netpfil/ipfw/dn_aqm.h index cffdbae11c2f..143d82154f9e 100644 --- a/sys/netpfil/ipfw/dn_aqm.h +++ b/sys/netpfil/ipfw/dn_aqm.h @@ -36,6 +36,7 @@ #ifndef _IP_DN_AQM_H #define _IP_DN_AQM_H +#include /* NOW is the current time in millisecond*/ #define NOW ((V_dn_cfg.curr_time * tick) / 1000) @@ -108,7 +109,7 @@ typedef int32_t aqm_stime_t; int ref_count; /*Number of queues instances in the system */ int cfg_ref_count; /*Number of AQM instances in the system */ - SLIST_ENTRY (dn_aqm) next; /* Next AQM in the list */ + CK_LIST_ENTRY(dn_aqm) next; /* Next AQM in the list */ }; /* Helper function to update queue and scheduler statistics. diff --git a/sys/netpfil/ipfw/dn_sched.h b/sys/netpfil/ipfw/dn_sched.h index 1aa885ce3ccf..5c506c1d30ac 100644 --- a/sys/netpfil/ipfw/dn_sched.h +++ b/sys/netpfil/ipfw/dn_sched.h @@ -35,6 +35,8 @@ #ifndef _DN_SCHED_H #define _DN_SCHED_H +#include + #define DN_MULTIQUEUE 0x01 /* * Descriptor for a scheduling algorithm. @@ -141,7 +143,7 @@ struct dn_alg { /* run-time fields */ int ref_count; /* XXX number of instances in the system */ - SLIST_ENTRY(dn_alg) next; /* Next scheduler in the list */ + CK_LIST_ENTRY(dn_alg) next; /* Next scheduler in the list */ }; /* MSVC does not support initializers so we need this ugly macro */ diff --git a/sys/netpfil/ipfw/ip_dn_glue.c b/sys/netpfil/ipfw/ip_dn_glue.c index 05552468599b..cfea43110c9e 100644 --- a/sys/netpfil/ipfw/ip_dn_glue.c +++ b/sys/netpfil/ipfw/ip_dn_glue.c @@ -817,7 +817,11 @@ ip_dummynet_compat(struct sockopt *sopt) break; case IP_DUMMYNET_CONFIGURE: - v = malloc(len, M_TEMP, M_WAITOK); + v = malloc(len, M_TEMP, M_NOWAIT); + if (v == NULL) { + error = ENOMEM; + break; + } error = sooptcopyin(sopt, v, len, len); if (error) break; diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c index 7eee314ea705..c412a45f7296 100644 --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet6.h" #include +#include #include #include #include @@ -59,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include #include /* IFNAMSIZ, struct ifaddr, ifq head, lock.h mutex.h */ +#include #include #include /* ip_output(), IP_FORWARDING */ #include @@ -94,9 +96,10 @@ static struct task dn_task; static struct taskqueue *dn_tq = NULL; /* global scheduler list */ -struct dn_alg_head schedlist; +struct mtx sched_mtx; +CK_LIST_HEAD(, dn_alg) schedlist; #ifdef NEW_AQM -struct dn_aqm_head aqmlist; /* list of AQMs */ +CK_LIST_HEAD(, dn_aqm) aqmlist; /* list of AQMs */ #endif static void @@ -125,7 +128,9 @@ find_aqm_type(int type, char *name) { struct dn_aqm *d; - SLIST_FOREACH(d, &aqmlist, next) { + MPASS(in_epoch(net_epoch_preempt)); + + CK_LIST_FOREACH(d, &aqmlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -139,7 +144,9 @@ find_sched_type(int type, char *name) { struct dn_alg *d; - SLIST_FOREACH(d, &schedlist, next) { + MPASS(in_epoch(net_epoch_preempt)); + + CK_LIST_FOREACH(d, &schedlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -1355,7 +1362,7 @@ get_aqm_parms(struct sockopt *sopt) err = EINVAL; return err; } - ep = malloc(l, M_DUMMYNET, M_WAITOK); + ep = malloc(l, M_DUMMYNET, M_NOWAIT); if(!ep) { err = ENOMEM ; return err; @@ -1410,7 +1417,7 @@ get_sched_parms(struct sockopt *sopt) err = EINVAL; return err; } - ep = malloc(l, M_DUMMYNET, M_WAITOK); + ep = malloc(l, M_DUMMYNET, M_NOWAIT); if(!ep) { err = ENOMEM ; return err; @@ -1455,6 +1462,8 @@ config_aqm(struct dn_fsk *fs, struct dn_extra_parms *ep, int busy) { int err = 0; + MPASS(in_epoch(net_epoch_preempt)); + do { /* no configurations */ if (!ep) { @@ -1614,7 +1623,7 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) #ifdef NEW_AQM ep = NULL; if (arg != NULL) { - ep = malloc(sizeof(*ep), M_TEMP, locked ? M_NOWAIT : M_WAITOK); + ep = malloc(sizeof(*ep), M_TEMP, M_NOWAIT); if (ep == NULL) return (NULL); memcpy(ep, arg, sizeof(*ep)); @@ -1727,6 +1736,8 @@ config_sched(struct dn_sch *_nsch, struct dn_id *arg) int pipe_cmd; int err = ENOMEM; + MPASS(in_epoch(net_epoch_preempt)); + a.sch = _nsch; if (a.sch->oid.len != sizeof(*a.sch)) { D("bad sched len %d", a.sch->oid.len); @@ -2070,34 +2081,53 @@ do_config(void *p, int l) DN_BH_WUNLOCK(); break; case DN_TEXT: /* store argument of next block */ - if (arg != NULL) - free(arg, M_TEMP); - arg = malloc(o.len, M_TEMP, M_WAITOK); + free(arg, M_TEMP); + arg = malloc(o.len, M_TEMP, M_NOWAIT); + if (arg == NULL) { + err = ENOMEM; + break; + } memcpy(arg, (char *)p + off, o.len); break; case DN_LINK: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->link, (char *)p + off, sizeof(dn->link)); err = config_link(&dn->link, arg); break; case DN_PROFILE: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->profile, (char *)p + off, sizeof(dn->profile)); err = config_profile(&dn->profile, arg); break; case DN_SCH: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->sched, (char *)p + off, sizeof(dn->sched)); err = config_sched(&dn->sched, arg); break; case DN_FS: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->fs, (char *)p + off, sizeof(dn->fs)); err = (NULL == config_fs(&dn->fs, arg, 0)); break; @@ -2230,7 +2260,11 @@ dummynet_get(struct sockopt *sopt, void **compat) #endif if (l > sizeof(r)) { /* request larger than default, allocate buffer */ - cmd = malloc(l, M_DUMMYNET, M_WAITOK); + cmd = malloc(l, M_DUMMYNET, M_NOWAIT); + if (cmd == NULL) { + error = ENOMEM; + goto done; + } error = sooptcopyin(sopt, cmd, l, l); sopt->sopt_valsize = sopt_valsize; if (error) @@ -2298,7 +2332,7 @@ dummynet_get(struct sockopt *sopt, void **compat) break; have = need; - start = malloc(have, M_DUMMYNET, M_WAITOK | M_ZERO); + start = malloc(have, M_DUMMYNET, M_NOWAIT | M_ZERO); } if (start == NULL) { @@ -2461,6 +2495,7 @@ dn_drain_queue(void) static int ip_dn_ctl(struct sockopt *sopt) { + struct epoch_tracker et; void *p = NULL; int error, l; @@ -2475,6 +2510,8 @@ ip_dn_ctl(struct sockopt *sopt) return (error); } + NET_EPOCH_ENTER_ET(et); + switch (sopt->sopt_name) { default : D("dummynet: unknown option %d", sopt->sopt_name); @@ -2499,7 +2536,11 @@ ip_dn_ctl(struct sockopt *sopt) D("argument len %d invalid", l); break; } - p = malloc(l, M_TEMP, M_WAITOK); // XXX can it fail ? + p = malloc(l, M_TEMP, M_NOWAIT); + if (p == NULL) { + error = ENOMEM; + break; + } error = sooptcopyin(sopt, p, l, l); if (error) break ; @@ -2510,6 +2551,8 @@ ip_dn_ctl(struct sockopt *sopt) if (p != NULL) free(p, M_TEMP); + NET_EPOCH_EXIT_ET(et); + return error ; } @@ -2579,13 +2622,16 @@ ip_dn_init(void) { if (dn_tasks_started) return; + + mtx_init(&sched_mtx, "dn_sched", NULL, MTX_DEF); + dn_tasks_started = 1; TASK_INIT(&dn_task, 0, dummynet_task, NULL); dn_tq = taskqueue_create_fast("dummynet", M_WAITOK, taskqueue_thread_enqueue, &dn_tq); taskqueue_start_threads(&dn_tq, 1, PI_NET, "dummynet"); - SLIST_INIT(&schedlist); + CK_LIST_INIT(&schedlist); callout_init(&dn_timeout, 1); dn_reschedule(); } @@ -2645,16 +2691,16 @@ load_dn_sched(struct dn_alg *d) } /* Search if scheduler already exists */ - DN_BH_WLOCK(); - SLIST_FOREACH(s, &schedlist, next) { + mtx_lock(&sched_mtx); + CK_LIST_FOREACH(s, &schedlist, next) { if (strcmp(s->name, d->name) == 0) { D("%s already loaded", d->name); break; /* scheduler already exists */ } } if (s == NULL) - SLIST_INSERT_HEAD(&schedlist, d, next); - DN_BH_WUNLOCK(); + CK_LIST_INSERT_HEAD(&schedlist, d, next); + mtx_unlock(&sched_mtx); D("dn_sched %s %sloaded", d->name, s ? "not ":""); return s ? 1 : 0; } @@ -2667,17 +2713,18 @@ unload_dn_sched(struct dn_alg *s) ND("called for %s", s->name); - DN_BH_WLOCK(); - SLIST_FOREACH_SAFE(r, &schedlist, next, tmp) { + mtx_lock(&sched_mtx); + CK_LIST_FOREACH_SAFE(r, &schedlist, next, tmp) { if (strcmp(s->name, r->name) != 0) continue; ND("ref_count = %d", r->ref_count); err = (r->ref_count != 0) ? EBUSY : 0; if (err == 0) - SLIST_REMOVE(&schedlist, r, dn_alg, next); + CK_LIST_REMOVE(r, next); break; } - DN_BH_WUNLOCK(); + mtx_unlock(&sched_mtx); + NET_EPOCH_WAIT(); D("dn_sched %s %sunloaded", s->name, err ? "not ":""); return err; } @@ -2737,17 +2784,20 @@ load_dn_aqm(struct dn_aqm *d) return 1; } + mtx_lock(&sched_mtx); + /* Search if AQM already exists */ - DN_BH_WLOCK(); /* XXX Global lock? */ - SLIST_FOREACH(aqm, &aqmlist, next) { + CK_LIST_FOREACH(aqm, &aqmlist, next) { if (strcmp(aqm->name, d->name) == 0) { D("%s already loaded", d->name); break; /* AQM already exists */ } } if (aqm == NULL) - SLIST_INSERT_HEAD(&aqmlist, d, next); - DN_BH_WUNLOCK(); + CK_LIST_INSERT_HEAD(&aqmlist, d, next); + + mtx_unlock(&sched_mtx); + D("dn_aqm %s %sloaded", d->name, aqm ? "not ":""); return aqm ? 1 : 0; } @@ -2777,21 +2827,24 @@ unload_dn_aqm(struct dn_aqm *aqm) err = 0; ND("called for %s", aqm->name); - DN_BH_WLOCK(); - /* clean up AQM status and deconfig flowset */ dn_ht_scan(V_dn_cfg.fshash, fs_cleanup, &aqm->type); - SLIST_FOREACH_SAFE(r, &aqmlist, next, tmp) { + mtx_lock(&sched_mtx); + + CK_LIST_FOREACH_SAFE(r, &aqmlist, next, tmp) { if (strcmp(aqm->name, r->name) != 0) continue; ND("ref_count = %d", r->ref_count); err = (r->ref_count != 0 || r->cfg_ref_count != 0) ? EBUSY : 0; if (err == 0) - SLIST_REMOVE(&aqmlist, r, dn_aqm, next); + CK_LIST_REMOVE(r, next); break; } - DN_BH_WUNLOCK(); + + mtx_unlock(&sched_mtx); + NET_EPOCH_WAIT(); + D("%s %sunloaded", aqm->name, err ? "not ":""); if (err) D("ref_count=%d, cfg_ref_count=%d", r->ref_count, r->cfg_ref_count); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:49 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 243BC6543A8; Thu, 17 Jun 2021 14:54:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7s06NPz4vZQ; Thu, 17 Jun 2021 14:54:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D0C9111613; Thu, 17 Jun 2021 14:54:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEsm23010831; Thu, 17 Jun 2021 14:54:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEsmGX010830; Thu, 17 Jun 2021 14:54:48 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:48 GMT Message-Id: <202106171454.15HEsmGX010830@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: c011422b2d77 - stable/13 - VNETify dummynet MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c011422b2d77cc29001e35383dfc060921d6e85a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:49 -0000 The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=c011422b2d77cc29001e35383dfc060921d6e85a commit c011422b2d77cc29001e35383dfc060921d6e85a Author: Tom Jones AuthorDate: 2021-05-15 12:36:45 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 12:38:07 +0000 VNETify dummynet This moves dn_cfg and other parameters into per VNET variables. The taskqueue and control state remains global. Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D29274 (cherry picked from commit fe3bcfbda30e763a3ec56083b3a19cebbeaf8952) --- sys/netpfil/ipfw/dn_aqm.h | 6 +- sys/netpfil/ipfw/dn_aqm_codel.c | 2 +- sys/netpfil/ipfw/dn_aqm_pie.c | 2 +- sys/netpfil/ipfw/dn_sched.h | 2 +- sys/netpfil/ipfw/dn_sched_fq_codel.c | 2 +- sys/netpfil/ipfw/dn_sched_fq_codel.h | 7 +- sys/netpfil/ipfw/dn_sched_fq_pie.c | 9 +- sys/netpfil/ipfw/ip_dn_glue.c | 8 +- sys/netpfil/ipfw/ip_dn_io.c | 180 ++++++++++++----------- sys/netpfil/ipfw/ip_dn_private.h | 42 +++--- sys/netpfil/ipfw/ip_dummynet.c | 271 +++++++++++++++++++---------------- 11 files changed, 281 insertions(+), 250 deletions(-) diff --git a/sys/netpfil/ipfw/dn_aqm.h b/sys/netpfil/ipfw/dn_aqm.h index 8bbe9fe69e86..b0eaf2ecfc8a 100644 --- a/sys/netpfil/ipfw/dn_aqm.h +++ b/sys/netpfil/ipfw/dn_aqm.h @@ -37,9 +37,9 @@ #define _IP_DN_AQM_H /* NOW is the current time in millisecond*/ -#define NOW ((dn_cfg.curr_time * tick) / 1000) +#define NOW ((V_dn_cfg.curr_time * tick) / 1000) -#define AQM_UNOW (dn_cfg.curr_time * tick) +#define AQM_UNOW (V_dn_cfg.curr_time * tick) #define AQM_TIME_1US ((aqm_time_t)(1)) #define AQM_TIME_1MS ((aqm_time_t)(1000)) #define AQM_TIME_1S ((aqm_time_t)(AQM_TIME_1MS * 1000)) @@ -134,7 +134,7 @@ update_stats(struct dn_queue *q, int len, int drop) if (drop) { qni->drops++; sni->drops++; - dn_cfg.io_pkt_drop++; + V_dn_cfg.io_pkt_drop++; } else { /*update queue stats */ qni->length += inc; diff --git a/sys/netpfil/ipfw/dn_aqm_codel.c b/sys/netpfil/ipfw/dn_aqm_codel.c index a1f90461ecab..79c6afd8b635 100644 --- a/sys/netpfil/ipfw/dn_aqm_codel.c +++ b/sys/netpfil/ipfw/dn_aqm_codel.c @@ -202,7 +202,7 @@ codel_extract_head(struct dn_queue *q, aqm_time_t *pkt_ts) update_stats(q, -m->m_pkthdr.len, 0); if (q->ni.length == 0) /* queue is now idle */ - q->q_time = dn_cfg.curr_time; + q->q_time = V_dn_cfg.curr_time; /* extract packet TS*/ mtag = m_tag_locate(m, MTAG_ABI_COMPAT, DN_AQM_MTAG_TS, NULL); diff --git a/sys/netpfil/ipfw/dn_aqm_pie.c b/sys/netpfil/ipfw/dn_aqm_pie.c index 2d5d500e275c..4a55aed662f7 100644 --- a/sys/netpfil/ipfw/dn_aqm_pie.c +++ b/sys/netpfil/ipfw/dn_aqm_pie.c @@ -338,7 +338,7 @@ pie_extract_head(struct dn_queue *q, aqm_time_t *pkt_ts, int getts) update_stats(q, -m->m_pkthdr.len, 0); if (q->ni.length == 0) /* queue is now idle */ - q->q_time = dn_cfg.curr_time; + q->q_time = V_dn_cfg.curr_time; if (getts) { /* extract packet TS*/ diff --git a/sys/netpfil/ipfw/dn_sched.h b/sys/netpfil/ipfw/dn_sched.h index 9bbd9019d623..1aa885ce3ccf 100644 --- a/sys/netpfil/ipfw/dn_sched.h +++ b/sys/netpfil/ipfw/dn_sched.h @@ -187,7 +187,7 @@ dn_dequeue(struct dn_queue *q) q->_si->ni.len_bytes -= m->m_pkthdr.len; } if (q->ni.length == 0) /* queue is now idle */ - q->q_time = dn_cfg.curr_time; + q->q_time = V_dn_cfg.curr_time; return m; } diff --git a/sys/netpfil/ipfw/dn_sched_fq_codel.c b/sys/netpfil/ipfw/dn_sched_fq_codel.c index bc61be867d36..97341f5a9a60 100644 --- a/sys/netpfil/ipfw/dn_sched_fq_codel.c +++ b/sys/netpfil/ipfw/dn_sched_fq_codel.c @@ -165,7 +165,7 @@ codel_drop_head(struct fq_codel_flow *q, struct fq_codel_si *si) fq_update_stats(q, si, -m->m_pkthdr.len, 1); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; FREE_PKT(m); } diff --git a/sys/netpfil/ipfw/dn_sched_fq_codel.h b/sys/netpfil/ipfw/dn_sched_fq_codel.h index a8369ac83129..dcdbc6f32e7a 100644 --- a/sys/netpfil/ipfw/dn_sched_fq_codel.h +++ b/sys/netpfil/ipfw/dn_sched_fq_codel.h @@ -36,6 +36,9 @@ #ifndef _IP_DN_SCHED_FQ_CODEL_H #define _IP_DN_SCHED_FQ_CODEL_H +VNET_DECLARE(unsigned long, io_pkt_drop); +#define V_io_pkt_drop VNET(io_pkt_drop) + /* list of queues */ STAILQ_HEAD(fq_codel_list, fq_codel_flow) ; @@ -104,7 +107,7 @@ fq_update_stats(struct fq_codel_flow *q, struct fq_codel_si *si, int len, si->main_q.ni.drops ++; q->stats.drops ++; si->_si.ni.drops ++; - dn_cfg.io_pkt_drop ++; + V_dn_cfg.io_pkt_drop ++; } if (!drop || (drop && len < 0)) { @@ -147,7 +150,7 @@ fq_codel_extract_head(struct fq_codel_flow *q, aqm_time_t *pkt_ts, struct fq_cod fq_update_stats(q, si, -m->m_pkthdr.len, 0); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; /* extract packet timestamp*/ struct m_tag *mtag; diff --git a/sys/netpfil/ipfw/dn_sched_fq_pie.c b/sys/netpfil/ipfw/dn_sched_fq_pie.c index 809ca2b5f4e8..76215aed610a 100644 --- a/sys/netpfil/ipfw/dn_sched_fq_pie.c +++ b/sys/netpfil/ipfw/dn_sched_fq_pie.c @@ -82,6 +82,9 @@ #define DN_SCHED_FQ_PIE 7 +VNET_DECLARE(unsigned long, io_pkt_drop); +#define V_io_pkt_drop VNET(io_pkt_drop) + /* list of queues */ STAILQ_HEAD(fq_pie_list, fq_pie_flow) ; @@ -299,7 +302,7 @@ fq_update_stats(struct fq_pie_flow *q, struct fq_pie_si *si, int len, si->main_q.ni.drops ++; q->stats.drops ++; si->_si.ni.drops ++; - dn_cfg.io_pkt_drop ++; + V_dn_cfg.io_pkt_drop ++; } if (!drop || (drop && len < 0)) { @@ -347,7 +350,7 @@ fq_pie_extract_head(struct fq_pie_flow *q, aqm_time_t *pkt_ts, fq_update_stats(q, si, -m->m_pkthdr.len, 0); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; if (getts) { /* extract packet timestamp*/ @@ -768,7 +771,7 @@ pie_drop_head(struct fq_pie_flow *q, struct fq_pie_si *si) fq_update_stats(q, si, -m->m_pkthdr.len, 1); if (si->main_q.ni.length == 0) /* queue is now idle */ - si->main_q.q_time = dn_cfg.curr_time; + si->main_q.q_time = V_dn_cfg.curr_time; /* reset accu_prob after packet drop */ q->pst.accu_prob = 0; diff --git a/sys/netpfil/ipfw/ip_dn_glue.c b/sys/netpfil/ipfw/ip_dn_glue.c index 5a39a1a47282..83f26cb23680 100644 --- a/sys/netpfil/ipfw/ip_dn_glue.c +++ b/sys/netpfil/ipfw/ip_dn_glue.c @@ -567,10 +567,10 @@ dn_compat_calc_size(void) * - all flowset queues: queue_count * - all pipe queue: si_count */ - need += dn_cfg.schk_count * sizeof(struct dn_pipe8) / 2; - need += dn_cfg.fsk_count * sizeof(struct dn_flow_set); - need += dn_cfg.si_count * sizeof(struct dn_flow_queue8); - need += dn_cfg.queue_count * sizeof(struct dn_flow_queue8); + need += V_dn_cfg.schk_count * sizeof(struct dn_pipe8) / 2; + need += V_dn_cfg.fsk_count * sizeof(struct dn_flow_set); + need += V_dn_cfg.si_count * sizeof(struct dn_flow_queue8); + need += V_dn_cfg.queue_count * sizeof(struct dn_flow_queue8); return need; } diff --git a/sys/netpfil/ipfw/ip_dn_io.c b/sys/netpfil/ipfw/ip_dn_io.c index 4a65bd0ef798..39bea3eb99dd 100644 --- a/sys/netpfil/ipfw/ip_dn_io.c +++ b/sys/netpfil/ipfw/ip_dn_io.c @@ -74,11 +74,10 @@ __FBSDID("$FreeBSD$"); /* * We keep a private variable for the simulation time, but we could * probably use an existing one ("softticks" in sys/kern/kern_timeout.c) - * instead of dn_cfg.curr_time + * instead of V_dn_cfg.curr_time */ - -struct dn_parms dn_cfg; -//VNET_DEFINE(struct dn_parms, _base_dn_cfg); +VNET_DEFINE(struct dn_parms, dn_cfg); +#define V_dn_cfg VNET(dn_cfg) /* * We use a heap to store entities for which we have pending timer events. @@ -102,13 +101,13 @@ sysctl_hash_size(SYSCTL_HANDLER_ARGS) { int error, value; - value = dn_cfg.hash_size; + value = V_dn_cfg.hash_size; error = sysctl_handle_int(oidp, &value, 0, req); if (error != 0 || req->newptr == NULL) return (error); if (value < 16 || value > 65536) return (EINVAL); - dn_cfg.hash_size = value; + V_dn_cfg.hash_size = value; return (0); } @@ -119,9 +118,9 @@ sysctl_limits(SYSCTL_HANDLER_ARGS) long value; if (arg2 != 0) - value = dn_cfg.slot_limit; + value = V_dn_cfg.slot_limit; else - value = dn_cfg.byte_limit; + value = V_dn_cfg.byte_limit; error = sysctl_handle_long(oidp, &value, 0, req); if (error != 0 || req->newptr == NULL) @@ -129,11 +128,11 @@ sysctl_limits(SYSCTL_HANDLER_ARGS) if (arg2 != 0) { if (value < 1) return (EINVAL); - dn_cfg.slot_limit = value; + V_dn_cfg.slot_limit = value; } else { if (value < 1500) return (EINVAL); - dn_cfg.byte_limit = value; + V_dn_cfg.byte_limit = value; } return (0); } @@ -151,9 +150,9 @@ static SYSCTL_NODE(_net_inet_ip, OID_AUTO, dummynet, "Dummynet"); #endif -/* wrapper to pass dn_cfg fields to SYSCTL_* */ -//#define DC(x) (&(VNET_NAME(_base_dn_cfg).x)) -#define DC(x) (&(dn_cfg.x)) +/* wrapper to pass V_dn_cfg fields to SYSCTL_* */ +#define DC(x) (&(VNET_NAME(dn_cfg).x)) + /* parameters */ SYSCTL_PROC(_net_inet_ip_dummynet, OID_AUTO, hash_size, @@ -349,7 +348,7 @@ red_drops (struct dn_queue *q, int len) * XXX check wraps... */ if (q->avg) { - u_int t = div64((dn_cfg.curr_time - q->q_time), fs->lookup_step); + u_int t = div64((V_dn_cfg.curr_time - q->q_time), fs->lookup_step); q->avg = (t < fs->lookup_depth) ? SCALE_MUL(q->avg, fs->w_q_lookup[t]) : 0; @@ -524,7 +523,7 @@ dn_enqueue(struct dn_queue *q, struct mbuf* m, int drop) return (0); drop: - dn_cfg.io_pkt_drop++; + V_dn_cfg.io_pkt_drop++; q->ni.drops++; ni->drops++; FREE_PKT(m); @@ -553,7 +552,7 @@ transmit_event(struct mq *q, struct delay_line *dline, uint64_t now) } if (m != NULL) { dline->oid.subtype = 1; /* in heap */ - heap_insert(&dn_cfg.evheap, pkt->output_time, dline); + heap_insert(&V_dn_cfg.evheap, pkt->output_time, dline); } } @@ -616,7 +615,7 @@ serve_sched(struct mq *q, struct dn_sch_inst *si, uint64_t now) (m->m_pkthdr.len * 8 + extra_bits(m, s)); si->credit -= len_scaled; /* Move packet in the delay line */ - dn_tag_get(m)->output_time = dn_cfg.curr_time + s->link.delay ; + dn_tag_get(m)->output_time = V_dn_cfg.curr_time + s->link.delay ; mq_append(&si->dline.mq, m); } @@ -634,7 +633,7 @@ serve_sched(struct mq *q, struct dn_sch_inst *si, uint64_t now) if (m) dn_tag_get(m)->output_time += t; si->kflags |= DN_ACTIVE; - heap_insert(&dn_cfg.evheap, now + t, si); + heap_insert(&V_dn_cfg.evheap, now + t, si); } if (delay_line_idle && done) transmit_event(q, &si->dline, now); @@ -651,74 +650,85 @@ dummynet_task(void *context, int pending) { struct timeval t; struct mq q = { NULL, NULL }; /* queue to accumulate results */ + struct epoch_tracker et; - CURVNET_SET((struct vnet *)context); + VNET_ITERATOR_DECL(vnet_iter); + VNET_LIST_RLOCK(); + NET_EPOCH_ENTER(et); - DN_BH_WLOCK(); + VNET_FOREACH(vnet_iter) { + memset(&q, 0, sizeof(struct mq)); + CURVNET_SET(vnet_iter); - /* Update number of lost(coalesced) ticks. */ - dn_cfg.tick_lost += pending - 1; + DN_BH_WLOCK(); - getmicrouptime(&t); - /* Last tick duration (usec). */ - dn_cfg.tick_last = (t.tv_sec - dn_cfg.prev_t.tv_sec) * 1000000 + - (t.tv_usec - dn_cfg.prev_t.tv_usec); - /* Last tick vs standard tick difference (usec). */ - dn_cfg.tick_delta = (dn_cfg.tick_last * hz - 1000000) / hz; - /* Accumulated tick difference (usec). */ - dn_cfg.tick_delta_sum += dn_cfg.tick_delta; + /* Update number of lost(coalesced) ticks. */ + V_dn_cfg.tick_lost += pending - 1; - dn_cfg.prev_t = t; + getmicrouptime(&t); + /* Last tick duration (usec). */ + V_dn_cfg.tick_last = (t.tv_sec - V_dn_cfg.prev_t.tv_sec) * 1000000 + + (t.tv_usec - V_dn_cfg.prev_t.tv_usec); + /* Last tick vs standard tick difference (usec). */ + V_dn_cfg.tick_delta = (V_dn_cfg.tick_last * hz - 1000000) / hz; + /* Accumulated tick difference (usec). */ + V_dn_cfg.tick_delta_sum += V_dn_cfg.tick_delta; - /* - * Adjust curr_time if the accumulated tick difference is - * greater than the 'standard' tick. Since curr_time should - * be monotonically increasing, we do positive adjustments - * as required, and throttle curr_time in case of negative - * adjustment. - */ - dn_cfg.curr_time++; - if (dn_cfg.tick_delta_sum - tick >= 0) { - int diff = dn_cfg.tick_delta_sum / tick; - - dn_cfg.curr_time += diff; - dn_cfg.tick_diff += diff; - dn_cfg.tick_delta_sum %= tick; - dn_cfg.tick_adjustment++; - } else if (dn_cfg.tick_delta_sum + tick <= 0) { - dn_cfg.curr_time--; - dn_cfg.tick_diff--; - dn_cfg.tick_delta_sum += tick; - dn_cfg.tick_adjustment++; - } + V_dn_cfg.prev_t = t; - /* serve pending events, accumulate in q */ - for (;;) { - struct dn_id *p; /* generic parameter to handler */ + /* + * Adjust curr_time if the accumulated tick difference is + * greater than the 'standard' tick. Since curr_time should + * be monotonically increasing, we do positive adjustments + * as required, and throttle curr_time in case of negative + * adjustment. + */ + V_dn_cfg.curr_time++; + if (V_dn_cfg.tick_delta_sum - tick >= 0) { + int diff = V_dn_cfg.tick_delta_sum / tick; + + V_dn_cfg.curr_time += diff; + V_dn_cfg.tick_diff += diff; + V_dn_cfg.tick_delta_sum %= tick; + V_dn_cfg.tick_adjustment++; + } else if (V_dn_cfg.tick_delta_sum + tick <= 0) { + V_dn_cfg.curr_time--; + V_dn_cfg.tick_diff--; + V_dn_cfg.tick_delta_sum += tick; + V_dn_cfg.tick_adjustment++; + } - if (dn_cfg.evheap.elements == 0 || - DN_KEY_LT(dn_cfg.curr_time, HEAP_TOP(&dn_cfg.evheap)->key)) - break; - p = HEAP_TOP(&dn_cfg.evheap)->object; - heap_extract(&dn_cfg.evheap, NULL); + /* serve pending events, accumulate in q */ + for (;;) { + struct dn_id *p; /* generic parameter to handler */ - if (p->type == DN_SCH_I) { - serve_sched(&q, (struct dn_sch_inst *)p, dn_cfg.curr_time); - } else { /* extracted a delay line */ - transmit_event(&q, (struct delay_line *)p, dn_cfg.curr_time); + if (V_dn_cfg.evheap.elements == 0 || + DN_KEY_LT(V_dn_cfg.curr_time, HEAP_TOP(&V_dn_cfg.evheap)->key)) + break; + p = HEAP_TOP(&V_dn_cfg.evheap)->object; + heap_extract(&V_dn_cfg.evheap, NULL); + if (p->type == DN_SCH_I) { + serve_sched(&q, (struct dn_sch_inst *)p, V_dn_cfg.curr_time); + } else { /* extracted a delay line */ + transmit_event(&q, (struct delay_line *)p, V_dn_cfg.curr_time); + } } + if (V_dn_cfg.expire && ++V_dn_cfg.expire_cycle >= V_dn_cfg.expire) { + V_dn_cfg.expire_cycle = 0; + dn_drain_scheduler(); + dn_drain_queue(); + } + DN_BH_WUNLOCK(); + if (q.head != NULL) + dummynet_send(q.head); + + CURVNET_RESTORE(); } - if (dn_cfg.expire && ++dn_cfg.expire_cycle >= dn_cfg.expire) { - dn_cfg.expire_cycle = 0; - dn_drain_scheduler(); - dn_drain_queue(); - } + NET_EPOCH_EXIT(et); + VNET_LIST_RUNLOCK(); + /* Schedule our next run. */ dn_reschedule(); - DN_BH_WUNLOCK(); - if (q.head != NULL) - dummynet_send(q.head); - CURVNET_RESTORE(); } /* @@ -834,7 +844,7 @@ tag_mbuf(struct mbuf *m, int dir, struct ip_fw_args *fwa) dt->dn_dir = dir; dt->ifp = fwa->flags & IPFW_ARGS_OUT ? fwa->ifp : NULL; /* dt->output tame is updated as we move through */ - dt->output_time = dn_cfg.curr_time; + dt->output_time = V_dn_cfg.curr_time; dt->iphdr_off = (dir & PROTO_LAYER2) ? ETHER_HDR_LEN : 0; return 0; } @@ -866,12 +876,12 @@ dummynet_io(struct mbuf **m0, struct ip_fw_args *fwa) else if (fwa->flags & IPFW_ARGS_IP6) dir |= PROTO_IPV6; DN_BH_WLOCK(); - dn_cfg.io_pkt++; + V_dn_cfg.io_pkt++; /* we could actually tag outside the lock, but who cares... */ if (tag_mbuf(m, dir, fwa)) goto dropit; /* XXX locate_flowset could be optimised with a direct ref. */ - fs = dn_ht_find(dn_cfg.fshash, fs_id, 0, NULL); + fs = dn_ht_find(V_dn_cfg.fshash, fs_id, 0, NULL); if (fs == NULL) goto dropit; /* This queue/pipe does not exist! */ if (fs->sched == NULL) /* should not happen */ @@ -894,7 +904,7 @@ dummynet_io(struct mbuf **m0, struct ip_fw_args *fwa) m = *m0 = NULL; /* dn_enqueue already increases io_pkt_drop */ - dn_cfg.io_pkt_drop--; + V_dn_cfg.io_pkt_drop--; goto dropit; } @@ -905,34 +915,34 @@ dummynet_io(struct mbuf **m0, struct ip_fw_args *fwa) } /* compute the initial allowance */ - if (si->idle_time < dn_cfg.curr_time) { + if (si->idle_time < V_dn_cfg.curr_time) { /* Do this only on the first packet on an idle pipe */ struct dn_link *p = &fs->sched->link; - si->sched_time = dn_cfg.curr_time; - si->credit = dn_cfg.io_fast ? p->bandwidth : 0; + si->sched_time = V_dn_cfg.curr_time; + si->credit = V_dn_cfg.io_fast ? p->bandwidth : 0; if (p->burst) { - uint64_t burst = (dn_cfg.curr_time - si->idle_time) * p->bandwidth; + uint64_t burst = (V_dn_cfg.curr_time - si->idle_time) * p->bandwidth; if (burst > p->burst) burst = p->burst; si->credit += burst; } } /* pass through scheduler and delay line */ - m = serve_sched(NULL, si, dn_cfg.curr_time); + m = serve_sched(NULL, si, V_dn_cfg.curr_time); /* optimization -- pass it back to ipfw for immediate send */ /* XXX Don't call dummynet_send() if scheduler return the packet * just enqueued. This avoid a lock order reversal. * */ - if (/*dn_cfg.io_fast &&*/ m == *m0 && (dir & PROTO_LAYER2) == 0 ) { + if (/*V_dn_cfg.io_fast &&*/ m == *m0 && (dir & PROTO_LAYER2) == 0 ) { /* fast io, rename the tag * to carry reinject info. */ struct m_tag *tag = m_tag_first(m); tag->m_tag_cookie = MTAG_IPFW_RULE; tag->m_tag_id = 0; - dn_cfg.io_pkt_fast++; + V_dn_cfg.io_pkt_fast++; if (m->m_nextpkt != NULL) { printf("dummynet: fast io: pkt chain detected!\n"); m->m_nextpkt = NULL; @@ -948,7 +958,7 @@ done: return 0; dropit: - dn_cfg.io_pkt_drop++; + V_dn_cfg.io_pkt_drop++; DN_BH_WUNLOCK(); if (m) FREE_PKT(m); diff --git a/sys/netpfil/ipfw/ip_dn_private.h b/sys/netpfil/ipfw/ip_dn_private.h index e6e699bf35b2..8dedd071bd81 100644 --- a/sys/netpfil/ipfw/ip_dn_private.h +++ b/sys/netpfil/ipfw/ip_dn_private.h @@ -46,7 +46,7 @@ #define D(fmt, ...) printf("%-10s " fmt "\n", \ __FUNCTION__, ## __VA_ARGS__) #define DX(lev, fmt, ...) do { \ - if (dn_cfg.debug > lev) D(fmt, ## __VA_ARGS__); } while (0) + if (V_dn_cfg.debug > lev) D(fmt, ## __VA_ARGS__); } while (0) #endif MALLOC_DECLARE(M_DUMMYNET); @@ -56,26 +56,26 @@ MALLOC_DECLARE(M_DUMMYNET); #endif #define DN_LOCK_INIT() do { \ - mtx_init(&dn_cfg.uh_mtx, "dn_uh", NULL, MTX_DEF); \ - mtx_init(&dn_cfg.bh_mtx, "dn_bh", NULL, MTX_DEF); \ + mtx_init(&V_dn_cfg.uh_mtx, "dn_uh", NULL, MTX_DEF); \ + mtx_init(&V_dn_cfg.bh_mtx, "dn_bh", NULL, MTX_DEF); \ } while (0) #define DN_LOCK_DESTROY() do { \ - mtx_destroy(&dn_cfg.uh_mtx); \ - mtx_destroy(&dn_cfg.bh_mtx); \ + mtx_destroy(&V_dn_cfg.uh_mtx); \ + mtx_destroy(&V_dn_cfg.bh_mtx); \ } while (0) #if 0 /* not used yet */ -#define DN_UH_RLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_UH_RUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_UH_WLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_UH_WUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_UH_LOCK_ASSERT() mtx_assert(&dn_cfg.uh_mtx, MA_OWNED) +#define DN_UH_RLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_UH_RUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_UH_WLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_UH_WUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_UH_LOCK_ASSERT() mtx_assert(&V_dn_cfg.uh_mtx, MA_OWNED) #endif -#define DN_BH_RLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_BH_RUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_BH_WLOCK() mtx_lock(&dn_cfg.uh_mtx) -#define DN_BH_WUNLOCK() mtx_unlock(&dn_cfg.uh_mtx) -#define DN_BH_LOCK_ASSERT() mtx_assert(&dn_cfg.uh_mtx, MA_OWNED) +#define DN_BH_RLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_BH_RUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_BH_WLOCK() mtx_lock(&V_dn_cfg.uh_mtx) +#define DN_BH_WUNLOCK() mtx_unlock(&V_dn_cfg.uh_mtx) +#define DN_BH_LOCK_ASSERT() mtx_assert(&V_dn_cfg.uh_mtx, MA_OWNED) SLIST_HEAD(dn_schk_head, dn_schk); SLIST_HEAD(dn_sch_inst_head, dn_sch_inst); @@ -101,7 +101,7 @@ set_oid(struct dn_id *o, int type, int len) } /* - * configuration and global data for a dummynet instance + * configuration and data for a dummynet instance * * When a configuration is modified from userland, 'id' is incremented * so we can use the value to check for stale pointers. @@ -154,10 +154,6 @@ struct dn_parms { struct dn_ht *schedhash; /* list of flowsets without a scheduler -- use sch_chain */ struct dn_fsk_head fsu; /* list of unlinked flowsets */ - struct dn_alg_head schedlist; /* list of algorithms */ -#ifdef NEW_AQM - struct dn_aqm_head aqmlist; /* list of AQMs */ -#endif /* Store the fs/sch to scan when draining. The value is the * bucket number of the hash table. Expire can be disabled @@ -406,9 +402,9 @@ enum { PROTO_IFB = 0x0c, /* layer2 + ifbridge */ }; -extern struct dn_parms dn_cfg; -//VNET_DECLARE(struct dn_parms, _base_dn_cfg); -//#define dn_cfg VNET(_base_dn_cfg) +//extern struct dn_parms V_dn_cfg; +VNET_DECLARE(struct dn_parms, dn_cfg); +#define V_dn_cfg VNET(dn_cfg) int dummynet_io(struct mbuf **, struct ip_fw_args *); void dummynet_task(void *context, int pending); diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c index 17f3e364756e..3abc78fc1410 100644 --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include /* ip_output(), IP_FORWARDING */ #include #include +#include #include #include @@ -87,10 +88,17 @@ struct schk_new_arg { /*---- callout hooks. ----*/ static struct callout dn_timeout; +static int dn_tasks_started = 0; static int dn_gone; static struct task dn_task; static struct taskqueue *dn_tq = NULL; +/* global scheduler list */ +struct dn_alg_head schedlist; +#ifdef NEW_AQM +struct dn_aqm_head aqmlist; /* list of AQMs */ +#endif + static void dummynet(void *arg) { @@ -117,7 +125,7 @@ find_aqm_type(int type, char *name) { struct dn_aqm *d; - SLIST_FOREACH(d, &dn_cfg.aqmlist, next) { + SLIST_FOREACH(d, &aqmlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -131,7 +139,7 @@ find_sched_type(int type, char *name) { struct dn_alg *d; - SLIST_FOREACH(d, &dn_cfg.schedlist, next) { + SLIST_FOREACH(d, &schedlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -354,7 +362,7 @@ q_new(uintptr_t key, int flags, void *arg) if(fs->aqmfp->init(q)) D("unable to init AQM for fs %d", fs->fs.fs_nr); #endif - dn_cfg.queue_count++; + V_dn_cfg.queue_count++; return q; } @@ -387,7 +395,7 @@ dn_delete_queue(struct dn_queue *q, int flags) dn_free_pkts(q->mq.head); bzero(q, sizeof(*q)); // safety free(q, M_DUMMYNET); - dn_cfg.queue_count--; + V_dn_cfg.queue_count--; } } @@ -527,7 +535,7 @@ si_new(uintptr_t key, int flags, void *arg) } #endif - dn_cfg.si_count++; + V_dn_cfg.si_count++; return si; error: @@ -552,10 +560,10 @@ si_destroy(void *_si, void *arg) struct delay_line *dl = &si->dline; if (dl->oid.subtype) /* remove delay line from event heap */ - heap_extract(&dn_cfg.evheap, dl); + heap_extract(&V_dn_cfg.evheap, dl); dn_free_pkts(dl->mq.head); /* drain delay line */ if (si->kflags & DN_ACTIVE) /* remove si from event heap */ - heap_extract(&dn_cfg.evheap, si); + heap_extract(&V_dn_cfg.evheap, si); #ifdef NEW_AQM /* clean up AQM status for !DN_MULTIQUEUE sched @@ -574,7 +582,7 @@ si_destroy(void *_si, void *arg) s->fp->free_sched(si); bzero(si, sizeof(*si)); /* safety */ free(si, M_DUMMYNET); - dn_cfg.si_count--; + V_dn_cfg.si_count--; return DNHT_SCAN_DEL; } @@ -605,7 +613,7 @@ si_reset_credit(void *_si, void *arg) struct dn_sch_inst *si = _si; struct dn_link *p = &si->sched->link; - si->credit = p->burst + (dn_cfg.io_fast ? p->bandwidth : 0); + si->credit = p->burst + (V_dn_cfg.io_fast ? p->bandwidth : 0); return 0; } @@ -651,9 +659,9 @@ fsk_new(uintptr_t key, int flags, void *arg) fs = malloc(sizeof(*fs), M_DUMMYNET, M_NOWAIT | M_ZERO); if (fs) { set_oid(&fs->fs.oid, DN_FS, sizeof(fs->fs)); - dn_cfg.fsk_count++; + V_dn_cfg.fsk_count++; fs->drain_bucket = 0; - SLIST_INSERT_HEAD(&dn_cfg.fsu, fs, sch_chain); + SLIST_INSERT_HEAD(&V_dn_cfg.fsu, fs, sch_chain); } return fs; } @@ -737,7 +745,7 @@ fsk_detach(struct dn_fsk *fs, int flags) (flags & DN_DETACH) ? "DET":""); if (flags & DN_DETACH) { /* detach from the list */ struct dn_fsk_head *h; - h = fs->sched ? &fs->sched->fsk_list : &dn_cfg.fsu; + h = fs->sched ? &fs->sched->fsk_list : &V_dn_cfg.fsu; SLIST_REMOVE(h, fs, dn_fsk, sch_chain); } /* Free the RED parameters, they will be recomputed on @@ -757,9 +765,9 @@ fsk_detach(struct dn_fsk *fs, int flags) if (flags & DN_DELETE_FS) { bzero(fs, sizeof(*fs)); /* safety */ free(fs, M_DUMMYNET); - dn_cfg.fsk_count--; + V_dn_cfg.fsk_count--; } else { - SLIST_INSERT_HEAD(&dn_cfg.fsu, fs, sch_chain); + SLIST_INSERT_HEAD(&V_dn_cfg.fsu, fs, sch_chain); } } @@ -797,7 +805,7 @@ delete_fs(int i, int locked) if (!locked) DN_BH_WLOCK(); - fs = dn_ht_find(dn_cfg.fshash, i, DNHT_REMOVE, NULL); + fs = dn_ht_find(V_dn_cfg.fshash, i, DNHT_REMOVE, NULL); ND("fs %d found %p", i, fs); if (fs) { fsk_detach(fs, DN_DETACH | DN_DELETE_FS); @@ -866,7 +874,7 @@ schk_new(uintptr_t key, int flags, void *arg) } } s->fp = NULL; /* mark as a new scheduler */ - dn_cfg.schk_count++; + V_dn_cfg.schk_count++; return s; } @@ -905,7 +913,7 @@ schk_delete_cb(void *obj, void *arg) s->fp->destroy(s); bzero(s, sizeof(*s)); // safety free(obj, M_DUMMYNET); - dn_cfg.schk_count--; + V_dn_cfg.schk_count--; return DNHT_SCAN_DEL; } @@ -919,7 +927,7 @@ delete_schk(int i) { struct dn_schk *s; - s = dn_ht_find(dn_cfg.schedhash, i, DNHT_REMOVE, NULL); + s = dn_ht_find(V_dn_cfg.schedhash, i, DNHT_REMOVE, NULL); ND("%d %p", i, s); if (!s) return EINVAL; @@ -1176,7 +1184,7 @@ copy_data_helper(void *_o, void *_arg) static inline struct dn_schk * locate_scheduler(int i) { - return dn_ht_find(dn_cfg.schedhash, i, 0, NULL); + return dn_ht_find(V_dn_cfg.schedhash, i, 0, NULL); } /* @@ -1194,10 +1202,10 @@ config_red(struct dn_fsk *fs) /* Doing stuff that was in userland */ i = fs->sched->link.bandwidth; s = (i <= 0) ? 0 : - hz * dn_cfg.red_avg_pkt_size * 8 * SCALE(1) / i; + hz * V_dn_cfg.red_avg_pkt_size * 8 * SCALE(1) / i; idle = div64((s * 3) , fs->w_q); /* s, fs->w_q scaled; idle not scaled */ - fs->lookup_step = div64(idle , dn_cfg.red_lookup_depth); + fs->lookup_step = div64(idle , V_dn_cfg.red_lookup_depth); /* fs->lookup_step not scaled, */ if (!fs->lookup_step) fs->lookup_step = 1; @@ -1227,14 +1235,14 @@ config_red(struct dn_fsk *fs) free(fs->w_q_lookup, M_DUMMYNET); fs->w_q_lookup = NULL; } - if (dn_cfg.red_lookup_depth == 0) { + if (V_dn_cfg.red_lookup_depth == 0) { printf("\ndummynet: net.inet.ip.dummynet.red_lookup_depth" "must be > 0\n"); fs->fs.flags &= ~DN_IS_RED; fs->fs.flags &= ~DN_IS_GENTLE_RED; return (EINVAL); } - fs->lookup_depth = dn_cfg.red_lookup_depth; + fs->lookup_depth = V_dn_cfg.red_lookup_depth; fs->w_q_lookup = (u_int *)malloc(fs->lookup_depth * sizeof(int), M_DUMMYNET, M_NOWAIT); if (fs->w_q_lookup == NULL) { @@ -1251,12 +1259,12 @@ config_red(struct dn_fsk *fs) fs->w_q_lookup[i] = SCALE_MUL(fs->w_q_lookup[i - 1], fs->lookup_weight); - if (dn_cfg.red_avg_pkt_size < 1) - dn_cfg.red_avg_pkt_size = 512; - fs->avg_pkt_size = dn_cfg.red_avg_pkt_size; - if (dn_cfg.red_max_pkt_size < 1) - dn_cfg.red_max_pkt_size = 1500; - fs->max_pkt_size = dn_cfg.red_max_pkt_size; + if (V_dn_cfg.red_avg_pkt_size < 1) + V_dn_cfg.red_avg_pkt_size = 512; + fs->avg_pkt_size = V_dn_cfg.red_avg_pkt_size; + if (V_dn_cfg.red_max_pkt_size < 1) + V_dn_cfg.red_max_pkt_size = 1500; + fs->max_pkt_size = V_dn_cfg.red_max_pkt_size; ND("exit"); return 0; } @@ -1278,7 +1286,7 @@ fsk_attach(struct dn_fsk *fs, struct dn_schk *s) { ND("remove fs %d from fsunlinked, link to sched %d", fs->fs.fs_nr, s->sch.sched_nr); - SLIST_REMOVE(&dn_cfg.fsu, fs, dn_fsk, sch_chain); + SLIST_REMOVE(&V_dn_cfg.fsu, fs, dn_fsk, sch_chain); fs->sched = s; SLIST_INSERT_HEAD(&s->fsk_list, fs, sch_chain); if (s->fp->new_fsk) @@ -1317,7 +1325,7 @@ update_fs(struct dn_schk *s) { struct dn_fsk *fs, *tmp; - SLIST_FOREACH_SAFE(fs, &dn_cfg.fsu, sch_chain, tmp) { + SLIST_FOREACH_SAFE(fs, &V_dn_cfg.fsu, sch_chain, tmp) { if (s->sch.sched_nr != fs->fs.sched_nr) { D("fs %d for sch %d not %d still unlinked", fs->fs.fs_nr, fs->fs.sched_nr, @@ -1362,7 +1370,7 @@ get_aqm_parms(struct sockopt *sopt) break; } - fs = dn_ht_find(dn_cfg.fshash, ep->nr, 0, NULL); + fs = dn_ht_find(V_dn_cfg.fshash, ep->nr, 0, NULL); if (!fs) { D("fs %d not found", ep->nr); err = EINVAL; @@ -1579,7 +1587,7 @@ config_link(struct dn_link *p, struct dn_id *arg) s->link.burst = p->burst; schk_reset_credit(s); } - dn_cfg.id++; + V_dn_cfg.id++; DN_BH_WUNLOCK(); return 0; } @@ -1616,15 +1624,15 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) /* XXX other sanity checks */ if (nfs->flags & DN_QSIZE_BYTES) { ipdn_bound_var(&nfs->qsize, 16384, - 1500, dn_cfg.byte_limit, NULL); // "queue byte size"); + 1500, V_dn_cfg.byte_limit, NULL); // "queue byte size"); } else { ipdn_bound_var(&nfs->qsize, 50, - 1, dn_cfg.slot_limit, NULL); // "queue slot size"); + 1, V_dn_cfg.slot_limit, NULL); // "queue slot size"); } if (nfs->flags & DN_HAVE_MASK) { /* make sure we have some buckets */ - ipdn_bound_var((int *)&nfs->buckets, dn_cfg.hash_size, - 1, dn_cfg.max_hash_size, "flowset buckets"); + ipdn_bound_var((int *)&nfs->buckets, V_dn_cfg.hash_size, + 1, V_dn_cfg.max_hash_size, "flowset buckets"); } else { nfs->buckets = 1; /* we only need 1 */ } @@ -1634,8 +1642,8 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) struct dn_schk *s; int flags = nfs->sched_nr ? DNHT_INSERT : 0; int j; - int oldc = dn_cfg.fsk_count; - fs = dn_ht_find(dn_cfg.fshash, i, flags, NULL); + int oldc = V_dn_cfg.fsk_count; + fs = dn_ht_find(V_dn_cfg.fshash, i, flags, NULL); if (fs == NULL) { D("missing sched for flowset %d", i); break; @@ -1662,8 +1670,8 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) #endif break; /* no change, nothing to do */ } - if (oldc != dn_cfg.fsk_count) /* new item */ - dn_cfg.id++; + if (oldc != V_dn_cfg.fsk_count) /* new item */ + V_dn_cfg.id++; s = locate_scheduler(nfs->sched_nr); /* detach from old scheduler if needed, preserving * queues if we need to reattach. Then update the @@ -1729,8 +1737,8 @@ config_sched(struct dn_sch *_nsch, struct dn_id *arg) return EINVAL; /* make sure we have some buckets */ if (a.sch->flags & DN_HAVE_MASK) - ipdn_bound_var((int *)&a.sch->buckets, dn_cfg.hash_size, - 1, dn_cfg.max_hash_size, "sched buckets"); + ipdn_bound_var((int *)&a.sch->buckets, V_dn_cfg.hash_size, + 1, V_dn_cfg.max_hash_size, "sched buckets"); /* XXX other sanity checks */ bzero(&p, sizeof(p)); @@ -1748,14 +1756,14 @@ again: /* run twice, for wfq and fifo */ * lookup the type. If not supplied, use the previous one * or default to WF2Q+. Otherwise, return an error. */ - dn_cfg.id++; + V_dn_cfg.id++; a.fp = find_sched_type(a.sch->oid.subtype, a.sch->name); if (a.fp != NULL) { /* found. Lookup or create entry */ - s = dn_ht_find(dn_cfg.schedhash, i, DNHT_INSERT, &a); + s = dn_ht_find(V_dn_cfg.schedhash, i, DNHT_INSERT, &a); } else if (a.sch->oid.subtype == 0 && !a.sch->name[0]) { /* No type. search existing s* or retry with WF2Q+ */ - s = dn_ht_find(dn_cfg.schedhash, i, 0, &a); + s = dn_ht_find(V_dn_cfg.schedhash, i, 0, &a); if (s != NULL) { a.fp = s->fp; /* Scheduler exists, skip to FIFO scheduler @@ -1827,7 +1835,7 @@ again: /* run twice, for wfq and fifo */ memcpy(pf, s->profile, sizeof(*pf)); } /* remove from the hash */ - dn_ht_find(dn_cfg.schedhash, i, DNHT_REMOVE, NULL); + dn_ht_find(V_dn_cfg.schedhash, i, DNHT_REMOVE, NULL); /* Detach flowsets, preserve queues. */ // schk_delete_cb(s, NULL); // XXX temporarily, kill queues @@ -1845,7 +1853,7 @@ again: /* run twice, for wfq and fifo */ * trying to reuse existing ones if available */ if (!(s->fp->flags & DN_MULTIQUEUE) && !s->fs) { *** 383 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:50 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4F5BA654648; Thu, 17 Jun 2021 14:54:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7t0wlxz4vch; Thu, 17 Jun 2021 14:54:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EC48711738; Thu, 17 Jun 2021 14:54:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEsn0f010855; Thu, 17 Jun 2021 14:54:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEsnB5010854; Thu, 17 Jun 2021 14:54:49 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:49 GMT Message-Id: <202106171454.15HEsnB5010854@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: f63211f546b9 - stable/13 - dummynet: Fix schedlist and aqmlist locking MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f63211f546b96a1585a8d41b1396c36ff696b3f6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:50 -0000 The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=f63211f546b96a1585a8d41b1396c36ff696b3f6 commit f63211f546b96a1585a8d41b1396c36ff696b3f6 Author: Kristof Provost AuthorDate: 2021-05-21 12:26:49 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 12:38:07 +0000 dummynet: Fix schedlist and aqmlist locking These are global (i.e. shared across vnets) structures, so we need global lock to protect them. However, we look up entries in these lists (find_aqm_type(), find_sched_type()) and return them. We must ensure that the returned structures cannot go away while we are using them. Resolve this by using NET_EPOCH(). The structures can be safely accessed under it, and we postpone their cleanup until we're sure they're no longer used. MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30381 (cherry picked from commit 51d73df18e4d120f6f062062c18efae3ed5193a6) --- sys/netpfil/ipfw/dn_aqm.h | 4 +- sys/netpfil/ipfw/dn_sched.h | 4 +- sys/netpfil/ipfw/ip_dn_glue.c | 6 +- sys/netpfil/ipfw/ip_dummynet.c | 122 +++++++++++++++++++++++++++++------------ 4 files changed, 98 insertions(+), 38 deletions(-) diff --git a/sys/netpfil/ipfw/dn_aqm.h b/sys/netpfil/ipfw/dn_aqm.h index b0eaf2ecfc8a..cfa1c266c7c8 100644 --- a/sys/netpfil/ipfw/dn_aqm.h +++ b/sys/netpfil/ipfw/dn_aqm.h @@ -36,6 +36,8 @@ #ifndef _IP_DN_AQM_H #define _IP_DN_AQM_H +#include + /* NOW is the current time in millisecond*/ #define NOW ((V_dn_cfg.curr_time * tick) / 1000) @@ -107,7 +109,7 @@ typedef int32_t aqm_stime_t; int ref_count; /*Number of queues instances in the system */ int cfg_ref_count; /*Number of AQM instances in the system */ - SLIST_ENTRY (dn_aqm) next; /* Next AQM in the list */ + CK_LIST_ENTRY(dn_aqm) next; /* Next AQM in the list */ }; /* Helper function to update queue and scheduler statistics. diff --git a/sys/netpfil/ipfw/dn_sched.h b/sys/netpfil/ipfw/dn_sched.h index 1aa885ce3ccf..5c506c1d30ac 100644 --- a/sys/netpfil/ipfw/dn_sched.h +++ b/sys/netpfil/ipfw/dn_sched.h @@ -35,6 +35,8 @@ #ifndef _DN_SCHED_H #define _DN_SCHED_H +#include + #define DN_MULTIQUEUE 0x01 /* * Descriptor for a scheduling algorithm. @@ -141,7 +143,7 @@ struct dn_alg { /* run-time fields */ int ref_count; /* XXX number of instances in the system */ - SLIST_ENTRY(dn_alg) next; /* Next scheduler in the list */ + CK_LIST_ENTRY(dn_alg) next; /* Next scheduler in the list */ }; /* MSVC does not support initializers so we need this ugly macro */ diff --git a/sys/netpfil/ipfw/ip_dn_glue.c b/sys/netpfil/ipfw/ip_dn_glue.c index 83f26cb23680..e035fedaaf91 100644 --- a/sys/netpfil/ipfw/ip_dn_glue.c +++ b/sys/netpfil/ipfw/ip_dn_glue.c @@ -814,7 +814,11 @@ ip_dummynet_compat(struct sockopt *sopt) break; case IP_DUMMYNET_CONFIGURE: - v = malloc(len, M_TEMP, M_WAITOK); + v = malloc(len, M_TEMP, M_NOWAIT); + if (v == NULL) { + error = ENOMEM; + break; + } error = sooptcopyin(sopt, v, len, len); if (error) break; diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c index 3abc78fc1410..b03ad93041bd 100644 --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet6.h" #include +#include #include #include #include @@ -94,9 +95,10 @@ static struct task dn_task; static struct taskqueue *dn_tq = NULL; /* global scheduler list */ -struct dn_alg_head schedlist; +struct mtx sched_mtx; +CK_LIST_HEAD(, dn_alg) schedlist; #ifdef NEW_AQM -struct dn_aqm_head aqmlist; /* list of AQMs */ +CK_LIST_HEAD(, dn_aqm) aqmlist; /* list of AQMs */ #endif static void @@ -125,7 +127,9 @@ find_aqm_type(int type, char *name) { struct dn_aqm *d; - SLIST_FOREACH(d, &aqmlist, next) { + NET_EPOCH_ASSERT(); + + CK_LIST_FOREACH(d, &aqmlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -139,7 +143,9 @@ find_sched_type(int type, char *name) { struct dn_alg *d; - SLIST_FOREACH(d, &schedlist, next) { + NET_EPOCH_ASSERT(); + + CK_LIST_FOREACH(d, &schedlist, next) { if (d->type == type || (name && !strcasecmp(d->name, name))) return d; } @@ -1355,7 +1361,7 @@ get_aqm_parms(struct sockopt *sopt) err = EINVAL; return err; } - ep = malloc(l, M_DUMMYNET, M_WAITOK); + ep = malloc(l, M_DUMMYNET, M_NOWAIT); if(!ep) { err = ENOMEM ; return err; @@ -1410,7 +1416,7 @@ get_sched_parms(struct sockopt *sopt) err = EINVAL; return err; } - ep = malloc(l, M_DUMMYNET, M_WAITOK); + ep = malloc(l, M_DUMMYNET, M_NOWAIT); if(!ep) { err = ENOMEM ; return err; @@ -1455,6 +1461,8 @@ config_aqm(struct dn_fsk *fs, struct dn_extra_parms *ep, int busy) { int err = 0; + NET_EPOCH_ASSERT(); + do { /* no configurations */ if (!ep) { @@ -1614,7 +1622,7 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) #ifdef NEW_AQM ep = NULL; if (arg != NULL) { - ep = malloc(sizeof(*ep), M_TEMP, locked ? M_NOWAIT : M_WAITOK); + ep = malloc(sizeof(*ep), M_TEMP, M_NOWAIT); if (ep == NULL) return (NULL); memcpy(ep, arg, sizeof(*ep)); @@ -1727,6 +1735,8 @@ config_sched(struct dn_sch *_nsch, struct dn_id *arg) int pipe_cmd; int err = ENOMEM; + NET_EPOCH_ASSERT(); + a.sch = _nsch; if (a.sch->oid.len != sizeof(*a.sch)) { D("bad sched len %d", a.sch->oid.len); @@ -2070,34 +2080,53 @@ do_config(void *p, int l) DN_BH_WUNLOCK(); break; case DN_TEXT: /* store argument of next block */ - if (arg != NULL) - free(arg, M_TEMP); - arg = malloc(o.len, M_TEMP, M_WAITOK); + free(arg, M_TEMP); + arg = malloc(o.len, M_TEMP, M_NOWAIT); + if (arg == NULL) { + err = ENOMEM; + break; + } memcpy(arg, (char *)p + off, o.len); break; case DN_LINK: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->link, (char *)p + off, sizeof(dn->link)); err = config_link(&dn->link, arg); break; case DN_PROFILE: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->profile, (char *)p + off, sizeof(dn->profile)); err = config_profile(&dn->profile, arg); break; case DN_SCH: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->sched, (char *)p + off, sizeof(dn->sched)); err = config_sched(&dn->sched, arg); break; case DN_FS: if (dn == NULL) - dn = malloc(sizeof(*dn), M_TEMP, M_WAITOK); + dn = malloc(sizeof(*dn), M_TEMP, M_NOWAIT); + if (dn == NULL) { + err = ENOMEM; + break; + } memcpy(&dn->fs, (char *)p + off, sizeof(dn->fs)); err = (NULL == config_fs(&dn->fs, arg, 0)); break; @@ -2230,7 +2259,11 @@ dummynet_get(struct sockopt *sopt, void **compat) #endif if (l > sizeof(r)) { /* request larger than default, allocate buffer */ - cmd = malloc(l, M_DUMMYNET, M_WAITOK); + cmd = malloc(l, M_DUMMYNET, M_NOWAIT); + if (cmd == NULL) { + error = ENOMEM; + goto done; + } error = sooptcopyin(sopt, cmd, l, l); sopt->sopt_valsize = sopt_valsize; if (error) @@ -2298,7 +2331,7 @@ dummynet_get(struct sockopt *sopt, void **compat) break; have = need; - start = malloc(have, M_DUMMYNET, M_WAITOK | M_ZERO); + start = malloc(have, M_DUMMYNET, M_NOWAIT | M_ZERO); } if (start == NULL) { @@ -2461,6 +2494,7 @@ dn_drain_queue(void) static int ip_dn_ctl(struct sockopt *sopt) { + struct epoch_tracker et; void *p = NULL; int error, l; @@ -2475,6 +2509,8 @@ ip_dn_ctl(struct sockopt *sopt) return (error); } + NET_EPOCH_ENTER(et); + switch (sopt->sopt_name) { default : D("dummynet: unknown option %d", sopt->sopt_name); @@ -2499,7 +2535,11 @@ ip_dn_ctl(struct sockopt *sopt) D("argument len %d invalid", l); break; } - p = malloc(l, M_TEMP, M_WAITOK); // XXX can it fail ? + p = malloc(l, M_TEMP, M_NOWAIT); + if (p == NULL) { + error = ENOMEM; + break; + } error = sooptcopyin(sopt, p, l, l); if (error) break ; @@ -2510,6 +2550,8 @@ ip_dn_ctl(struct sockopt *sopt) if (p != NULL) free(p, M_TEMP); + NET_EPOCH_EXIT(et); + return error ; } @@ -2578,13 +2620,16 @@ ip_dn_init(void) { if (dn_tasks_started) return; + + mtx_init(&sched_mtx, "dn_sched", NULL, MTX_DEF); + dn_tasks_started = 1; TASK_INIT(&dn_task, 0, dummynet_task, NULL); dn_tq = taskqueue_create_fast("dummynet", M_WAITOK, taskqueue_thread_enqueue, &dn_tq); taskqueue_start_threads(&dn_tq, 1, PI_NET, "dummynet"); - SLIST_INIT(&schedlist); + CK_LIST_INIT(&schedlist); callout_init(&dn_timeout, 1); dn_reschedule(); } @@ -2644,16 +2689,16 @@ load_dn_sched(struct dn_alg *d) } /* Search if scheduler already exists */ - DN_BH_WLOCK(); - SLIST_FOREACH(s, &schedlist, next) { + mtx_lock(&sched_mtx); + CK_LIST_FOREACH(s, &schedlist, next) { if (strcmp(s->name, d->name) == 0) { D("%s already loaded", d->name); break; /* scheduler already exists */ } } if (s == NULL) - SLIST_INSERT_HEAD(&schedlist, d, next); - DN_BH_WUNLOCK(); + CK_LIST_INSERT_HEAD(&schedlist, d, next); + mtx_unlock(&sched_mtx); D("dn_sched %s %sloaded", d->name, s ? "not ":""); return s ? 1 : 0; } @@ -2666,17 +2711,18 @@ unload_dn_sched(struct dn_alg *s) ND("called for %s", s->name); - DN_BH_WLOCK(); - SLIST_FOREACH_SAFE(r, &schedlist, next, tmp) { + mtx_lock(&sched_mtx); + CK_LIST_FOREACH_SAFE(r, &schedlist, next, tmp) { if (strcmp(s->name, r->name) != 0) continue; ND("ref_count = %d", r->ref_count); err = (r->ref_count != 0) ? EBUSY : 0; if (err == 0) - SLIST_REMOVE(&schedlist, r, dn_alg, next); + CK_LIST_REMOVE(r, next); break; } - DN_BH_WUNLOCK(); + mtx_unlock(&sched_mtx); + NET_EPOCH_WAIT(); D("dn_sched %s %sunloaded", s->name, err ? "not ":""); return err; } @@ -2736,17 +2782,20 @@ load_dn_aqm(struct dn_aqm *d) return 1; } + mtx_lock(&sched_mtx); + /* Search if AQM already exists */ - DN_BH_WLOCK(); /* XXX Global lock? */ - SLIST_FOREACH(aqm, &aqmlist, next) { + CK_LIST_FOREACH(aqm, &aqmlist, next) { if (strcmp(aqm->name, d->name) == 0) { D("%s already loaded", d->name); break; /* AQM already exists */ } } if (aqm == NULL) - SLIST_INSERT_HEAD(&aqmlist, d, next); - DN_BH_WUNLOCK(); + CK_LIST_INSERT_HEAD(&aqmlist, d, next); + + mtx_unlock(&sched_mtx); + D("dn_aqm %s %sloaded", d->name, aqm ? "not ":""); return aqm ? 1 : 0; } @@ -2775,21 +2824,24 @@ unload_dn_aqm(struct dn_aqm *aqm) err = 0; ND("called for %s", aqm->name); - DN_BH_WLOCK(); - /* clean up AQM status and deconfig flowset */ dn_ht_scan(V_dn_cfg.fshash, fs_cleanup, &aqm->type); - SLIST_FOREACH_SAFE(r, &aqmlist, next, tmp) { + mtx_lock(&sched_mtx); + + CK_LIST_FOREACH_SAFE(r, &aqmlist, next, tmp) { if (strcmp(aqm->name, r->name) != 0) continue; ND("ref_count = %d", r->ref_count); err = (r->ref_count != 0 || r->cfg_ref_count != 0) ? EBUSY : 0; if (err == 0) - SLIST_REMOVE(&aqmlist, r, dn_aqm, next); + CK_LIST_REMOVE(r, next); break; } - DN_BH_WUNLOCK(); + + mtx_unlock(&sched_mtx); + NET_EPOCH_WAIT(); + D("%s %sunloaded", aqm->name, err ? "not ":""); if (err) D("ref_count=%d, cfg_ref_count=%d", r->ref_count, r->cfg_ref_count); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:51 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 722166543B2; Thu, 17 Jun 2021 14:54:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7v2CdGz4vcm; Thu, 17 Jun 2021 14:54:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 23E8B11807; Thu, 17 Jun 2021 14:54:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEspr6010879; Thu, 17 Jun 2021 14:54:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEspYR010878; Thu, 17 Jun 2021 14:54:51 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:51 GMT Message-Id: <202106171454.15HEspYR010878@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 932531232a9d - stable/13 - dummynet: free(NULL, M_DUMMYNET); is safe MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 932531232a9d97aad2e3302a365b85bee59a8db5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:51 -0000 The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=932531232a9d97aad2e3302a365b85bee59a8db5 commit 932531232a9d97aad2e3302a365b85bee59a8db5 Author: Kristof Provost AuthorDate: 2021-05-21 14:55:07 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 12:38:08 +0000 dummynet: free(NULL, M_DUMMYNET); is safe There's no need to check pointers for NULL before free()ing them. No functional change. MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30382 (cherry picked from commit 1b2dbe37fa32d7255faf7d1feec7bb31414a8102) --- sys/netpfil/ipfw/ip_dummynet.c | 46 ++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c index b03ad93041bd..56fa56138d96 100644 --- a/sys/netpfil/ipfw/ip_dummynet.c +++ b/sys/netpfil/ipfw/ip_dummynet.c @@ -757,8 +757,7 @@ fsk_detach(struct dn_fsk *fs, int flags) /* Free the RED parameters, they will be recomputed on * subsequent attach if needed. */ - if (fs->w_q_lookup) - free(fs->w_q_lookup, M_DUMMYNET); + free(fs->w_q_lookup, M_DUMMYNET); fs->w_q_lookup = NULL; qht_delete(fs, flags); #ifdef NEW_AQM @@ -910,10 +909,9 @@ schk_delete_cb(void *obj, void *arg) dn_ht_free(s->siht, 0); } else if (s->siht) si_destroy(s->siht, NULL); - if (s->profile) { - free(s->profile, M_DUMMYNET); - s->profile = NULL; - } + + free(s->profile, M_DUMMYNET); + s->profile = NULL; s->siht = NULL; if (s->fp->destroy) s->fp->destroy(s); @@ -1237,10 +1235,8 @@ config_red(struct dn_fsk *fs) } /* If the lookup table already exist, free and create it again. */ - if (fs->w_q_lookup) { - free(fs->w_q_lookup, M_DUMMYNET); - fs->w_q_lookup = NULL; - } + free(fs->w_q_lookup, M_DUMMYNET); + fs->w_q_lookup = NULL; if (V_dn_cfg.red_lookup_depth == 0) { printf("\ndummynet: net.inet.ip.dummynet.red_lookup_depth" "must be > 0\n"); @@ -1579,10 +1575,9 @@ config_link(struct dn_link *p, struct dn_id *arg) return EINVAL; } /* remove profile if exists */ - if (s->profile) { - free(s->profile, M_DUMMYNET); - s->profile = NULL; - } + free(s->profile, M_DUMMYNET); + s->profile = NULL; + /* copy all parameters */ s->link.oid = p->oid; s->link.link_nr = i; @@ -1706,8 +1701,7 @@ config_fs(struct dn_fs *nfs, struct dn_id *arg, int locked) if (!locked) DN_BH_WUNLOCK(); #ifdef NEW_AQM - if (ep != NULL) - free(ep, M_TEMP); + free(ep, M_TEMP); #endif return fs; } @@ -1906,8 +1900,7 @@ next: err = 0; error: DN_BH_WUNLOCK(); - if (pf) - free(pf, M_DUMMYNET); + free(pf, M_DUMMYNET); return err; } @@ -2135,10 +2128,8 @@ do_config(void *p, int l) break; off += o.len; } - if (arg != NULL) - free(arg, M_TEMP); - if (dn != NULL) - free(dn, M_TEMP); + free(arg, M_TEMP); + free(dn, M_TEMP); return err; } @@ -2324,8 +2315,7 @@ dummynet_get(struct sockopt *sopt, void **compat) break; DN_BH_WUNLOCK(); - if (start) - free(start, M_DUMMYNET); + free(start, M_DUMMYNET); start = NULL; if (need > sopt_valsize) break; @@ -2383,10 +2373,9 @@ dummynet_get(struct sockopt *sopt, void **compat) error = sooptcopyout(sopt, start, buf - start); } done: - if (cmd && cmd != &r.o) + if (cmd != &r.o) free(cmd, M_DUMMYNET); - if (start) - free(start, M_DUMMYNET); + free(start, M_DUMMYNET); return error; } @@ -2547,8 +2536,7 @@ ip_dn_ctl(struct sockopt *sopt) break; } - if (p != NULL) - free(p, M_TEMP); + free(p, M_TEMP); NET_EPOCH_EXIT(et); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:52 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D39F9654814; Thu, 17 Jun 2021 14:54:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7w3YR7z4vRf; Thu, 17 Jun 2021 14:54:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 44D2511459; Thu, 17 Jun 2021 14:54:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEsqBL010910; Thu, 17 Jun 2021 14:54:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEsq8A010909; Thu, 17 Jun 2021 14:54:52 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:52 GMT Message-Id: <202106171454.15HEsq8A010909@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 3a57bb60f4ad - stable/13 - pf: use M_WAITOK where possible MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 3a57bb60f4ad6afdfc0bbf833e7b6cf62a2038e8 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:53 -0000 The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=3a57bb60f4ad6afdfc0bbf833e7b6cf62a2038e8 commit 3a57bb60f4ad6afdfc0bbf833e7b6cf62a2038e8 Author: Kristof Provost AuthorDate: 2021-06-09 12:00:07 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 12:38:08 +0000 pf: use M_WAITOK where possible In the ioctl path use M_WAITOK allocations whereever possible. These are less sensitive to memory pressure, and ioctl requests have no hard deadlines. Reviewed by: donner MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D30702 (cherry picked from commit ea21980a3facfed4c2c6fd10d0f16276564fb540) --- sys/netpfil/pf/pf_ioctl.c | 78 ++++++++--------------------------------------- 1 file changed, 13 insertions(+), 65 deletions(-) diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index be7b8be23a31..30f12da782e6 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -3773,11 +3773,7 @@ DIOCCHANGEADDR_error: totlen = io->pfrio_size * sizeof(struct pfr_table); pfrts = mallocarray(io->pfrio_size, sizeof(struct pfr_table), - M_TEMP, M_NOWAIT); - if (pfrts == NULL) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfrts, totlen); if (error) { free(pfrts, M_TEMP); @@ -3862,11 +3858,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = mallocarray(io->pfrio_size, sizeof(struct pfr_addr), - M_TEMP, M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { free(pfras, M_TEMP); @@ -3900,11 +3892,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = mallocarray(io->pfrio_size, sizeof(struct pfr_addr), - M_TEMP, M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { free(pfras, M_TEMP); @@ -3942,11 +3930,7 @@ DIOCCHANGEADDR_error: } totlen = count * sizeof(struct pfr_addr); pfras = mallocarray(count, sizeof(struct pfr_addr), M_TEMP, - M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { free(pfras, M_TEMP); @@ -3981,11 +3965,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = mallocarray(io->pfrio_size, sizeof(struct pfr_addr), - M_TEMP, M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); PF_RULES_RLOCK(); error = pfr_get_addrs(&io->pfrio_table, pfras, &io->pfrio_size, io->pfrio_flags | PFR_FLAG_USERIOCTL); @@ -4013,11 +3993,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_astats); pfrastats = mallocarray(io->pfrio_size, - sizeof(struct pfr_astats), M_TEMP, M_NOWAIT); - if (! pfrastats) { - error = ENOMEM; - break; - } + sizeof(struct pfr_astats), M_TEMP, M_WAITOK); PF_RULES_RLOCK(); error = pfr_get_astats(&io->pfrio_table, pfrastats, &io->pfrio_size, io->pfrio_flags | PFR_FLAG_USERIOCTL); @@ -4045,11 +4021,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = mallocarray(io->pfrio_size, sizeof(struct pfr_addr), - M_TEMP, M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { free(pfras, M_TEMP); @@ -4083,11 +4055,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = mallocarray(io->pfrio_size, sizeof(struct pfr_addr), - M_TEMP, M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { free(pfras, M_TEMP); @@ -4121,11 +4089,7 @@ DIOCCHANGEADDR_error: } totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = mallocarray(io->pfrio_size, sizeof(struct pfr_addr), - M_TEMP, M_NOWAIT); - if (! pfras) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { free(pfras, M_TEMP); @@ -4174,11 +4138,7 @@ DIOCCHANGEADDR_error: } totlen = sizeof(struct pfioc_trans_e) * io->size; ioes = mallocarray(io->size, sizeof(struct pfioc_trans_e), - M_TEMP, M_NOWAIT); - if (! ioes) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->array, ioes, totlen); if (error) { free(ioes, M_TEMP); @@ -4251,11 +4211,7 @@ DIOCCHANGEADDR_error: } totlen = sizeof(struct pfioc_trans_e) * io->size; ioes = mallocarray(io->size, sizeof(struct pfioc_trans_e), - M_TEMP, M_NOWAIT); - if (! ioes) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->array, ioes, totlen); if (error) { free(ioes, M_TEMP); @@ -4330,11 +4286,7 @@ DIOCCHANGEADDR_error: totlen = sizeof(struct pfioc_trans_e) * io->size; ioes = mallocarray(io->size, sizeof(struct pfioc_trans_e), - M_TEMP, M_NOWAIT); - if (ioes == NULL) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); error = copyin(io->array, ioes, totlen); if (error) { free(ioes, M_TEMP); @@ -4537,11 +4489,7 @@ DIOCCHANGEADDR_error: bufsiz = io->pfiio_size * sizeof(struct pfi_kif); ifstore = mallocarray(io->pfiio_size, sizeof(struct pfi_kif), - M_TEMP, M_NOWAIT); - if (ifstore == NULL) { - error = ENOMEM; - break; - } + M_TEMP, M_WAITOK); PF_RULES_RLOCK(); pfi_get_ifaces(io->pfiio_name, ifstore, &io->pfiio_size); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 14:54:53 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C12526543E1; Thu, 17 Jun 2021 14:54:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Q7x4F3dz4vZh; Thu, 17 Jun 2021 14:54:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6884A11614; Thu, 17 Jun 2021 14:54:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HEsrTl010934; Thu, 17 Jun 2021 14:54:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HEsrZg010933; Thu, 17 Jun 2021 14:54:53 GMT (envelope-from git) Date: Thu, 17 Jun 2021 14:54:53 GMT Message-Id: <202106171454.15HEsrZg010933@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: ea01d2bc1c5c - stable/13 - pf: don't hold a lock during copyout() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ea01d2bc1c5cfa2aed195e99dec08d36582121d2 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 14:54:53 -0000 The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=ea01d2bc1c5cfa2aed195e99dec08d36582121d2 commit ea01d2bc1c5cfa2aed195e99dec08d36582121d2 Author: Kristof Provost AuthorDate: 2021-06-14 12:04:02 +0000 Commit: Kristof Provost CommitDate: 2021-06-17 12:38:08 +0000 pf: don't hold a lock during copyout() copyout() can trigger page faults, so it may potentially sleep. Reported by: avg MFC after: 3 days Sponsored by: Rubicon Communications, LLC ("Netgate") (cherry picked from commit 8b5f4e692b1d1585ecfc6690552650114e3e704e) --- sys/netpfil/pf/pf_ioctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index 30f12da782e6..657c0e1945d3 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -2521,8 +2521,6 @@ DIOCADDRULENV_error: ERROUT(ENOSPC); } - error = copyout(nvlpacked, nv->data, nv->len); - if (clear_counter) { counter_u64_zero(rule->evaluations); for (int i = 0; i < 2; i++) { @@ -2533,6 +2531,8 @@ DIOCADDRULENV_error: } PF_RULES_WUNLOCK(); + error = copyout(nvlpacked, nv->data, nv->len); + #undef ERROUT DIOCGETRULENV_error: free(nvlpacked, M_NVLIST); From owner-dev-commits-src-all@freebsd.org Thu Jun 17 16:11:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id ADB9D65525F for ; Thu, 17 Jun 2021 16:11:27 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5RrH46hrz3HSV for ; Thu, 17 Jun 2021 16:11:27 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-pl1-x633.google.com with SMTP id x10so3199311plg.3 for ; Thu, 17 Jun 2021 09:11:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=BV3gFTSi6yrodSnYoJ+KrqJkpkTXqWyJPVnJkXXC41c=; b=dMcX63mbmLhGVpcRmv9YtB6PkmE57nCMlHGUy6GRm43RfzD1zsOgomCJ34AbJ/rFrt kkxuPvfnkEWUyGA1ZFUeKM83KlJyNzfVADsau7t4JNbNMoZR1cxXAeXjK7gaVEV58BTa 6hJNWfmhMRbX9srip70SuuPAaJqzQOnHwtbNNoJQ3qZtU8DKXLesFjBYurkMKGVS8Npc SLK9XJ/OqM3efOL48N3SUD6uS2FszOxVr6ipCKJXMYn7ija2wXaU8/aht+XANEdr+967 QirD4sVAOzJhcoWxDoahcal5BIszBJhouB1vpnGeG0HbAp5/cSszfzpFtEzjLrgbckMi n05g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=BV3gFTSi6yrodSnYoJ+KrqJkpkTXqWyJPVnJkXXC41c=; b=rdodt1xUph82oQpXbD3Sdo9CyJT313xFy69vcNqQkwI9AOoBl+VfJq8ETz1LUwQtDq YUXyQ7CXPFtMe7xaSPwJBbm1zoAxnWlqzywfVHE7U8Z/w25b8BPaHZimlAsEwEjaDV4r G2WQ33iNDt1duuudYUONLh1vC0f7ZWxELuqhA+W3tO7vB9+kMfsNuCCXQ+vnfMWyVNs9 YmNwVrptu8uojMdNQLetM7c+eljE72zlSRWx49J0yBtt2CMHtifWMBWGnE7jOmLAQ9Zp ENTlWyumQ0SlitNxpcdL89Ean7zEYqXFZT0gsHhKbZVctHIrpJHm4vyXndprFIMag226 2ajQ== X-Gm-Message-State: AOAM530FmBlmT4QgiEkZyMBv18yCCEmCDzTbQZJ1HlmTz9V2z/13imJ0 g367xl7cFrHv4B/n44eSwVM2ag== X-Google-Smtp-Source: ABdhPJxseODrdKRzNTAkF0nA0bMCXKWKJbrzG6thpFC7/Q7fQLYLgj2GvkEosqQ9I1/Dx1rliE6efg== X-Received: by 2002:a17:90b:502:: with SMTP id r2mr17471497pjz.18.1623946285992; Thu, 17 Jun 2021 09:11:25 -0700 (PDT) Received: from ?IPv6:2603:300b:6:5100:55a0:964e:987c:81fb? ([2603:300b:6:5100:55a0:964e:987c:81fb]) by smtp.gmail.com with ESMTPSA id d20sm3344739pfn.219.2021.06.17.09.11.24 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Jun 2021 09:11:25 -0700 (PDT) From: Warner Losh Message-Id: <64D62F0A-A7CA-4D4F-92E8-D4FF173F7870@bsdimp.com> Content-Type: multipart/signed; boundary="Apple-Mail=_B90A1E55-6D79-490D-9D72-C146A3F586B5"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Subject: Re: git: 0a99422970d7 - main - Move mips and arm to 1000Hz by default. Date: Thu, 17 Jun 2021 10:11:23 -0600 In-Reply-To: <20210617093111.5a537750@ernst.home> Cc: Alexey Dokuchaev , Warner Losh , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org To: Gary Jennejohn References: <202106170201.15H215Z6078742@gitrepo.freebsd.org> <20210617093111.5a537750@ernst.home> X-Mailer: Apple Mail (2.3608.120.23.2.4) X-Rspamd-Queue-Id: 4G5RrH46hrz3HSV X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 16:11:27 -0000 --Apple-Mail=_B90A1E55-6D79-490D-9D72-C146A3F586B5 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Jun 17, 2021, at 3:31 AM, Gary Jennejohn = wrote: >=20 > On Thu, 17 Jun 2021 09:20:46 +0000 > Alexey Dokuchaev wrote: >=20 >> On Thu, Jun 17, 2021 at 02:01:05AM +0000, Warner Losh wrote: >>> commit 0a99422970d7fbdb1e17724339a8dc37082f3431 >>>=20 >>> Move mips and arm to 1000Hz by default. >>>=20 >>> armv6 and armv7 systems already were 1000Hz. The other armv5 were = a >>> mix of 100 and 1000. This changes them to 1000. Should there be >>> issues, we can add options HZ=3D100 to the systems that have bad >>> performance at the drop of a hat. >>=20 >> Do we have this 1000Hz vs. 100Hz thing documented somewhere for those >> who are thinking about tuning it? There are various "optimization" >> howto's floating on the Internet here and there which recommend this >> change, so it would be nice to have some definitive documentation on >> the subject, e.g. in our Handbook or Wiki. >>=20 >=20 > It's discussed in /sys/conf/NOTES, but most users probably wouldn't > think about looking there. An entry in the Handbook or Wiki could > be useful. I=E2=80=99ve brought over NetBSD=E2=80=99s hz(9) and hardclock(9) man = pages in https://reviews.freebsd.org/D30802 with adjustments for = FreeBSD. I mention the kern.hz tunable and the fact that it default to = 100 for VM guests. This should cover people=E2=80=99s curiosity as well = as plug the hole in our docs. All this stuff was from 4.4BSD, so = NetBSD=E2=80=99s man pages were a good place to start. The HZ kernel option is something almost nobody should be adjusting. = I=E2=80=99ve updated the text slightly in NOTES in = https://reviews.freebsd.org/D30804 if people want to tweak it further = before I commit. Wiki is terrible for this stuff, since it goes stale = too quickly, but I=E2=80=99d be happy to review someone else=E2=80=99s = changes to the handbook for tuning this value (though honestly, it = should almost never be frobbed). kern.hz likely shouldn=E2=80=99t be = adjusted either, but it=E2=80=99s a much easier knob to turn than = rebuilding the kernel with a new HZ and there=E2=80=99s more cases where = it can be useful (though tests I=E2=80=99ve done in the past suggest = values > 10,000-50,000 might not be that useful). Finally, NetBSD has an option(4). We=E2=80=99re long past the time where = we should consider it. I=E2=80=99d love to review changes for that too. = Most of a first cut on text can be stolen from NOTES, if someone is = looking for an easy project (it need not be complete to be useful, at = least initially) Warner --Apple-Mail=_B90A1E55-6D79-490D-9D72-C146A3F586B5 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEIDX4lLAKo898zeG3bBzRKH2wEQAFAmDLdCsACgkQbBzRKH2w EQDsRhAAzi5FLrUlwBp1+CEsizCnUR2YSlycuvEwX5szj1QXYE7WLxiSyYPWWLFR 5OtSRCUJnCH+hF17g+A9FAlR9zEefOcc9qqhAsKELH7zLZFzhCT+3PtYrHPp5oY4 WSlR55vmJJvHCyenrFN/jY4XqsLMLeuwJFXx8ZgzPYr/YUJ5O/nmOMXfSnotGCjm rOQNBMX4ig2618KgLn0yQfvkQDyUt/vn/yEMiOJu+6qZ+tipANHq7dWscDAODEkv gwktkyZP3kFW3e06Rl9td846FMwNxS7kthJLfIXcJ6fzFBTMQcCM9SIwg36mj2UZ lrI6JKW0oIVEVQ88AHBayTb4a7zTLZWfgOXVRMZmWZu8IriW+ch7fs/INCvNlGzT CAjvIb/j21LJnmPXuOp9RJAPCNIA4Kp+7fOuD+aQBHNi8j0Mfg8o3OerQRHpnTMk Cokh57YeGcq3Y/MeWil+c74CCUJA3xBWQ0ALIAtjIINuCkGgmgn1wBzdZMO1F1y9 tD1WQrAYZ5NIgvcAAmRjJwYj+1s2acs0Lr9yNwkZXjKgVzCvf2J6AGms19JXduBc zFE7j9VKXq+3QqUfTO2fbaOasi9h+ovaajBuHVo9K7FyErSKgGAsh/8sC8N8+2jD 1uqMXkmMjaYvwVQ4X21eX8Dv+PoP1CnjS9JUCLn+dmc92BJ2eDM= =ymi/ -----END PGP SIGNATURE----- --Apple-Mail=_B90A1E55-6D79-490D-9D72-C146A3F586B5-- From owner-dev-commits-src-all@freebsd.org Thu Jun 17 17:53:42 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4DCFE656C6F; Thu, 17 Jun 2021 17:53:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5V6G1Vp7z3NYl; Thu, 17 Jun 2021 17:53:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1C56D13BFA; Thu, 17 Jun 2021 17:53:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HHrg6A049650; Thu, 17 Jun 2021 17:53:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HHrg9g049649; Thu, 17 Jun 2021 17:53:42 GMT (envelope-from git) Date: Thu, 17 Jun 2021 17:53:42 GMT Message-Id: <202106171753.15HHrg9g049649@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: a877965fa3da - main - dtrace: fix an out of bound read and a NULL pointer increment MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a877965fa3da218bceaaa0f51c4d7770e64e6df0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 17:53:42 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a877965fa3da218bceaaa0f51c4d7770e64e6df0 commit a877965fa3da218bceaaa0f51c4d7770e64e6df0 Author: Domagoj Stolfa AuthorDate: 2021-06-17 17:35:33 +0000 Commit: Mark Johnston CommitDate: 2021-06-17 17:52:32 +0000 dtrace: fix an out of bound read and a NULL pointer increment In dt_cc.c when the provider is an empty string, accessing strlen(pdp->dtpd_provider) - 1 will result in a pdp->dtpd_provider[-1] access. Similarly, in dt_ident.c, if p2 is a NULL pointer, doing a p2++ on it is undefined behaviour. Reviewed by: markj MFC after: 1 week Sponsored by: Google Differential Revision: https://reviews.freebsd.org/D30778 --- cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c | 6 +++++- cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c index 8ec5dd61b8ee..e63771c91e08 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c @@ -1691,6 +1691,7 @@ dt_setcontext(dtrace_hdl_t *dtp, dtrace_probedesc_t *pdp) dt_ident_t *idp; char attrstr[8]; int err; + size_t prov_len; /* * Both kernel and pid based providers are allowed to have names @@ -1704,7 +1705,10 @@ dt_setcontext(dtrace_hdl_t *dtp, dtrace_probedesc_t *pdp) * On an error, dt_pid_create_probes() will set the error message * and tag -- we just have to longjmp() out of here. */ - if (isdigit(pdp->dtpd_provider[strlen(pdp->dtpd_provider) - 1]) && + + prov_len = strlen(pdp->dtpd_provider); + + if ((prov_len > 0 && isdigit(pdp->dtpd_provider[prov_len - 1])) && ((pvp = dt_provider_lookup(dtp, pdp->dtpd_provider)) == NULL || pvp->pv_desc.dtvd_priv.dtpp_flags & DTRACE_PRIV_PROC) && dt_pid_create_probes(pdp, dtp, yypcb) != 0) { diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c index b9164ac26cf9..5ff772be041d 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c @@ -210,8 +210,10 @@ dt_idcook_func(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args) } } - for (p2 = strchr(p2, ','); p2++ != NULL; i++) + for (p2 = strchr(p2, ','); p2 != NULL; i++) { + p2++; p2 = strchr(p2, ','); + } /* * We first allocate a new ident signature structure with the From owner-dev-commits-src-all@freebsd.org Thu Jun 17 17:53:43 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 711B76567BB; Thu, 17 Jun 2021 17:53:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5V6H2mq4z3NYm; Thu, 17 Jun 2021 17:53:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 48155139F7; Thu, 17 Jun 2021 17:53:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HHrhd2049680; Thu, 17 Jun 2021 17:53:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HHrhec049679; Thu, 17 Jun 2021 17:53:43 GMT (envelope-from git) Date: Thu, 17 Jun 2021 17:53:43 GMT Message-Id: <202106171753.15HHrhec049679@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 68d3790ba0bc - main - sort: Change default algorithm to mergesort MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 68d3790ba0bce162f9fcaed09cfecd9adeab3943 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 17:53:43 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=68d3790ba0bce162f9fcaed09cfecd9adeab3943 commit 68d3790ba0bce162f9fcaed09cfecd9adeab3943 Author: Cyril Zhang AuthorDate: 2021-06-17 17:40:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-17 17:53:03 +0000 sort: Change default algorithm to mergesort This results in a significant improvement in the runtime of sort(1) when radix sort cannot be used. This comes at the expense of increased memory usage, but this is small relative to sort's overall memory usage. PR: 255551 Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30319 --- usr.bin/sort/file.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/sort/file.h b/usr.bin/sort/file.h index 724928a7c050..70b46fecaca1 100644 --- a/usr.bin/sort/file.h +++ b/usr.bin/sort/file.h @@ -41,8 +41,8 @@ #define SORT_HEAPSORT 3 #define SORT_RADIXSORT 4 -#define DEFAULT_SORT_ALGORITHM SORT_HEAPSORT -#define DEFAULT_SORT_FUNC heapsort +#define DEFAULT_SORT_ALGORITHM SORT_MERGESORT +#define DEFAULT_SORT_FUNC mergesort /* * List of data to be sorted. From owner-dev-commits-src-all@freebsd.org Thu Jun 17 18:39:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 42050657939; Thu, 17 Jun 2021 18:39:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5W7B1Q9Zz3Qp5; Thu, 17 Jun 2021 18:39:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0D5C71483E; Thu, 17 Jun 2021 18:39:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HIdXdv003481; Thu, 17 Jun 2021 18:39:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HIdXUk003480; Thu, 17 Jun 2021 18:39:33 GMT (envelope-from git) Date: Thu, 17 Jun 2021 18:39:33 GMT Message-Id: <202106171839.15HIdXUk003480@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: ee3a7246c65c - stable/13 - gmultipath: make physpath distinct from the underlying providers' MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ee3a7246c65ceb2fdcfcf8d337dbdeaa315a332d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 18:39:34 -0000 The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=ee3a7246c65ceb2fdcfcf8d337dbdeaa315a332d commit ee3a7246c65ceb2fdcfcf8d337dbdeaa315a332d Author: Alan Somers AuthorDate: 2021-04-22 21:09:03 +0000 Commit: Alan Somers CommitDate: 2021-06-17 18:39:14 +0000 gmultipath: make physpath distinct from the underlying providers' zfsd uses a device's physical path attribute to automatically replace a missing ZFS disk when a blank disk is inserted into the same physical slot. Currently gmultipath passes through its underlying providers' physical path attribute. That may cause zfsd to replace a missing gmultipath provider with a newly arrived, single-path disk. That would be bad. This commit fixes that problem by simply appending "/mp" to the underlying providers' physical path, in a manner similar to what geli already does. Sponsored by: Axcient Differential Revision: https://reviews.freebsd.org/D29941 (cherry picked from commit 420dbe763f15b076751443edfeeb4f676deb3c44) --- sys/geom/multipath/g_multipath.c | 6 ++++++ tests/sys/geom/class/multipath/misc.sh | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/geom/multipath/g_multipath.c b/sys/geom/multipath/g_multipath.c index 5972b63e680a..120fced0a8f1 100644 --- a/sys/geom/multipath/g_multipath.c +++ b/sys/geom/multipath/g_multipath.c @@ -394,6 +394,12 @@ g_multipath_done(struct bio *bp) mtx_unlock(&sc->sc_mtx); } else mtx_unlock(&sc->sc_mtx); + if (bp->bio_error == 0 && + bp->bio_cmd == BIO_GETATTR && + !strcmp(bp->bio_attribute, "GEOM::physpath")) + { + strlcat(bp->bio_data, "/mp", bp->bio_length); + } g_std_done(bp); } } diff --git a/tests/sys/geom/class/multipath/misc.sh b/tests/sys/geom/class/multipath/misc.sh index 583434e1cfa5..4da8462588ca 100755 --- a/tests/sys/geom/class/multipath/misc.sh +++ b/tests/sys/geom/class/multipath/misc.sh @@ -198,7 +198,7 @@ fail_on_error_cleanup() atf_test_case physpath cleanup physpath_head() { - atf_set "descr" "gmultipath should pass through the underlying providers' physical path" + atf_set "descr" "gmultipath should append /mp to the underlying providers' physical path" atf_set "require.user" "root" } physpath_body() @@ -217,7 +217,7 @@ physpath_body() atf_check gnop create -z $physpath /dev/${md1} atf_check -s exit:0 gmultipath create "$name" ${md0}.nop ${md1}.nop gmultipath_physpath=$(diskinfo -p multipath/"$name") - atf_check_equal "$physpath" "$gmultipath_physpath" + atf_check_equal "$physpath/mp" "$gmultipath_physpath" } physpath_cleanup() { From owner-dev-commits-src-all@freebsd.org Thu Jun 17 19:26:54 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3117565AFDF; Thu, 17 Jun 2021 19:26:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5X9n70Bgz3kL4; Thu, 17 Jun 2021 19:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D502E15223; Thu, 17 Jun 2021 19:26:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HJQrIe069292; Thu, 17 Jun 2021 19:26:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HJQrg6069291; Thu, 17 Jun 2021 19:26:53 GMT (envelope-from git) Date: Thu, 17 Jun 2021 19:26:53 GMT Message-Id: <202106171926.15HJQrg6069291@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: c0e72b2bc081 - stable/13 - Delete obsolete Solaris compat files MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c0e72b2bc0816fe923100ceb7bf639764b8c317c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 19:26:54 -0000 The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=c0e72b2bc0816fe923100ceb7bf639764b8c317c commit c0e72b2bc0816fe923100ceb7bf639764b8c317c Author: Alan Somers AuthorDate: 2021-05-24 14:47:44 +0000 Commit: Alan Somers CommitDate: 2021-06-17 18:40:00 +0000 Delete obsolete Solaris compat files These files have been unused ever since the OpenSolaris import Sponsored by: Axcient Reviewed By: freqlabs Differential Revision: https://reviews.freebsd.org/D30371 (cherry picked from commit fc3ba3e9fac03897d17c318b79b52d91cfb87b9e) --- cddl/compat/opensolaris/misc/deviceid.c | 115 ------- cddl/compat/opensolaris/misc/fsshare.c | 262 --------------- cddl/compat/opensolaris/misc/mkdirp.c | 215 ------------ cddl/compat/opensolaris/misc/mnttab.c | 216 ------------ cddl/compat/opensolaris/misc/thread_pool.c | 428 ------------------------ cddl/compat/opensolaris/misc/thread_pool_impl.h | 99 ------ cddl/compat/opensolaris/misc/zmount.c | 106 ------ cddl/compat/opensolaris/misc/zone.c | 46 --- 8 files changed, 1487 deletions(-) diff --git a/cddl/compat/opensolaris/misc/deviceid.c b/cddl/compat/opensolaris/misc/deviceid.c deleted file mode 100644 index 9f3ea8458b3b..000000000000 --- a/cddl/compat/opensolaris/misc/deviceid.c +++ /dev/null @@ -1,115 +0,0 @@ -/*- - * Copyright (c) 2007 Pawel Jakub Dawidek - * All rights reserved. - * - * 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 AUTHORS 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 AUTHORS 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 -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include - -int -devid_str_decode(char *devidstr, ddi_devid_t *retdevid, char **retminor_name) -{ - - if (strlcpy(retdevid->devid, devidstr, sizeof(retdevid->devid)) >= - sizeof(retdevid->devid)) { - return (EINVAL); - } - *retminor_name = strdup(""); - if (*retminor_name == NULL) - return (ENOMEM); - return (0); -} - -int -devid_deviceid_to_nmlist(char *search_path, ddi_devid_t devid, char *minor_name, - devid_nmlist_t **retlist) -{ - char path[MAXPATHLEN]; - char *dst; - - if (g_get_name(devid.devid, path, sizeof(path)) == -1) - return (errno); - *retlist = malloc(sizeof(**retlist)); - if (*retlist == NULL) - return (ENOMEM); - if (strlcpy((*retlist)[0].devname, path, - sizeof((*retlist)[0].devname)) >= sizeof((*retlist)[0].devname)) { - free(*retlist); - return (ENAMETOOLONG); - } - return (0); -} - -void -devid_str_free(char *str) -{ - - free(str); -} - -void -devid_free(ddi_devid_t devid) -{ - /* Do nothing. */ -} - -void -devid_free_nmlist(devid_nmlist_t *list) -{ - - free(list); -} - -int -devid_get(int fd, ddi_devid_t *retdevid) -{ - - return (ENOENT); -} - -int -devid_get_minor_name(int fd, char **retminor_name) -{ - - *retminor_name = strdup(""); - if (*retminor_name == NULL) - return (ENOMEM); - return (0); -} - -char * -devid_str_encode(ddi_devid_t devid, char *minor_name) -{ - - return (strdup(devid.devid)); -} diff --git a/cddl/compat/opensolaris/misc/fsshare.c b/cddl/compat/opensolaris/misc/fsshare.c deleted file mode 100644 index 97f5e20f42f6..000000000000 --- a/cddl/compat/opensolaris/misc/fsshare.c +++ /dev/null @@ -1,262 +0,0 @@ -/*- - * Copyright (c) 2007 Pawel Jakub Dawidek - * All rights reserved. - * - * 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 AUTHORS 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 AUTHORS 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 -__FBSDID("$FreeBSD$"); - -#include - -#include -#include -#include -#include -#include -#include /* _PATH_MOUNTDPID */ -#include -#include -#include -#include - -#define FILE_HEADER "# !!! DO NOT EDIT THIS FILE MANUALLY !!!\n\n" -#define OPTSSIZE 1024 -#define MAXLINESIZE (PATH_MAX + OPTSSIZE) - -static void -restart_mountd(void) -{ - struct pidfh *pfh; - pid_t mountdpid; - - pfh = pidfile_open(_PATH_MOUNTDPID, 0600, &mountdpid); - if (pfh != NULL) { - /* Mountd is not running. */ - pidfile_remove(pfh); - return; - } - if (errno != EEXIST) { - /* Cannot open pidfile for some reason. */ - return; - } - /* We have mountd(8) PID in mountdpid varible. */ - kill(mountdpid, SIGHUP); -} - -/* - * Read one line from a file. Skip comments, empty lines and a line with a - * mountpoint specified in the 'skip' argument. - */ -static char * -zgetline(FILE *fd, const char *skip) -{ - static char line[MAXLINESIZE]; - size_t len, skiplen; - char *s, last; - - if (skip != NULL) - skiplen = strlen(skip); - for (;;) { - s = fgets(line, sizeof(line), fd); - if (s == NULL) - return (NULL); - /* Skip empty lines and comments. */ - if (line[0] == '\n' || line[0] == '#') - continue; - len = strlen(line); - if (line[len - 1] == '\n') - line[len - 1] = '\0'; - last = line[skiplen]; - /* Skip the given mountpoint. */ - if (skip != NULL && strncmp(skip, line, skiplen) == 0 && - (last == '\t' || last == ' ' || last == '\0')) { - continue; - } - break; - } - return (line); -} - -/* - * Function translate options to a format acceptable by exports(5), eg. - * - * -ro -network=192.168.0.0 -mask=255.255.255.0 -maproot=0 freefall.freebsd.org 69.147.83.54 - * - * Accepted input formats: - * - * ro,network=192.168.0.0,mask=255.255.255.0,maproot=0,freefall.freebsd.org - * ro network=192.168.0.0 mask=255.255.255.0 maproot=0 freefall.freebsd.org - * -ro,-network=192.168.0.0,-mask=255.255.255.0,-maproot=0,freefall.freebsd.org - * -ro -network=192.168.0.0 -mask=255.255.255.0 -maproot=0 freefall.freebsd.org - * - * Recognized keywords: - * - * ro, maproot, mapall, mask, network, sec, alldirs, public, webnfs, index, quiet - * - */ -static const char *known_opts[] = { "ro", "maproot", "mapall", "mask", - "network", "sec", "alldirs", "public", "webnfs", "index", "quiet", NULL }; -static char * -translate_opts(const char *shareopts) -{ - static char newopts[OPTSSIZE]; - char oldopts[OPTSSIZE]; - char *o, *s = NULL; - unsigned int i; - size_t len; - - strlcpy(oldopts, shareopts, sizeof(oldopts)); - newopts[0] = '\0'; - s = oldopts; - while ((o = strsep(&s, "-, ")) != NULL) { - if (o[0] == '\0') - continue; - for (i = 0; known_opts[i] != NULL; i++) { - len = strlen(known_opts[i]); - if (strncmp(known_opts[i], o, len) == 0 && - (o[len] == '\0' || o[len] == '=')) { - strlcat(newopts, "-", sizeof(newopts)); - break; - } - } - strlcat(newopts, o, sizeof(newopts)); - strlcat(newopts, " ", sizeof(newopts)); - } - return (newopts); -} - -static int -fsshare_main(const char *file, const char *mountpoint, const char *shareopts, - int share) -{ - char tmpfile[PATH_MAX]; - char *line; - FILE *newfd, *oldfd; - int fd, error; - - newfd = oldfd = NULL; - error = 0; - - /* - * Create temporary file in the same directory, so we can atomically - * rename it. - */ - if (strlcpy(tmpfile, file, sizeof(tmpfile)) >= sizeof(tmpfile)) - return (ENAMETOOLONG); - if (strlcat(tmpfile, ".XXXXXXXX", sizeof(tmpfile)) >= sizeof(tmpfile)) - return (ENAMETOOLONG); - fd = mkstemp(tmpfile); - if (fd == -1) - return (errno); - /* - * File name is random, so we don't really need file lock now, but it - * will be needed after rename(2). - */ - error = flock(fd, LOCK_EX); - assert(error == 0 || (error == -1 && errno == EOPNOTSUPP)); - newfd = fdopen(fd, "r+"); - assert(newfd != NULL); - /* Open old exports file. */ - oldfd = fopen(file, "r"); - if (oldfd == NULL) { - if (share) { - if (errno != ENOENT) { - error = errno; - goto out; - } - } else { - /* If there is no exports file, ignore the error. */ - if (errno == ENOENT) - errno = 0; - error = errno; - goto out; - } - } else { - error = flock(fileno(oldfd), LOCK_EX); - assert(error == 0 || (error == -1 && errno == EOPNOTSUPP)); - error = 0; - } - - /* Place big, fat warning at the begining of the file. */ - fprintf(newfd, "%s", FILE_HEADER); - while (oldfd != NULL && (line = zgetline(oldfd, mountpoint)) != NULL) - fprintf(newfd, "%s\n", line); - if (oldfd != NULL && ferror(oldfd) != 0) { - error = ferror(oldfd); - goto out; - } - if (ferror(newfd) != 0) { - error = ferror(newfd); - goto out; - } - if (share) { - fprintf(newfd, "%s\t%s\n", mountpoint, - translate_opts(shareopts)); - } - -out: - if (error != 0) - unlink(tmpfile); - else { - if (rename(tmpfile, file) == -1) { - error = errno; - unlink(tmpfile); - } else { - fflush(newfd); - /* - * Send SIGHUP to mountd, but unlock exports file later. - */ - restart_mountd(); - } - } - if (oldfd != NULL) { - flock(fileno(oldfd), LOCK_UN); - fclose(oldfd); - } - if (newfd != NULL) { - flock(fileno(newfd), LOCK_UN); - fclose(newfd); - } - return (error); -} - -/* - * Add the given mountpoint to the given exports file. - */ -int -fsshare(const char *file, const char *mountpoint, const char *shareopts) -{ - - return (fsshare_main(file, mountpoint, shareopts, 1)); -} - -/* - * Remove the given mountpoint from the given exports file. - */ -int -fsunshare(const char *file, const char *mountpoint) -{ - - return (fsshare_main(file, mountpoint, NULL, 0)); -} diff --git a/cddl/compat/opensolaris/misc/mkdirp.c b/cddl/compat/opensolaris/misc/mkdirp.c deleted file mode 100644 index 76a90ad0ec30..000000000000 --- a/cddl/compat/opensolaris/misc/mkdirp.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License"). You may not use this file except in compliance - * with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - * - * $FreeBSD$ - */ - -/* Copyright (c) 1988 AT&T */ -/* All Rights Reserved */ - -/* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -#pragma ident "@(#)mkdirp.c 1.15 06/01/04 SMI" - -/* - * Creates directory and it's parents if the parents do not - * exist yet. - * - * Returns -1 if fails for reasons other than non-existing - * parents. - * Does NOT simplify pathnames with . or .. in them. - */ - -#include -#include -#include -#include -#include -#include -#include - -static char *simplify(const char *str); - -int -mkdirp(const char *d, mode_t mode) -{ - char *endptr, *ptr, *slash, *str; - - str = simplify(d); - - /* If space couldn't be allocated for the simplified names, return. */ - - if (str == NULL) - return (-1); - - /* Try to make the directory */ - - if (mkdir(str, mode) == 0) { - free(str); - return (0); - } - if (errno != ENOENT) { - free(str); - return (-1); - } - endptr = strrchr(str, '\0'); - slash = strrchr(str, '/'); - - /* Search upward for the non-existing parent */ - - while (slash != NULL) { - - ptr = slash; - *ptr = '\0'; - - /* If reached an existing parent, break */ - - if (access(str, F_OK) == 0) - break; - - /* If non-existing parent */ - - else { - slash = strrchr(str, '/'); - - /* If under / or current directory, make it. */ - - if (slash == NULL || slash == str) { - if (mkdir(str, mode) != 0 && errno != EEXIST) { - free(str); - return (-1); - } - break; - } - } - } - - /* Create directories starting from upmost non-existing parent */ - - while ((ptr = strchr(str, '\0')) != endptr) { - *ptr = '/'; - if (mkdir(str, mode) != 0 && errno != EEXIST) { - /* - * If the mkdir fails because str already - * exists (EEXIST), then str has the form - * "existing-dir/..", and this is really - * ok. (Remember, this loop is creating the - * portion of the path that didn't exist) - */ - free(str); - return (-1); - } - } - free(str); - return (0); -} - -/* - * simplify - given a pathname, simplify that path by removing - * duplicate contiguous slashes. - * - * A simplified copy of the argument is returned to the - * caller, or NULL is returned on error. - * - * The caller should handle error reporting based upon the - * returned vlaue, and should free the returned value, - * when appropriate. - */ - -static char * -simplify(const char *str) -{ - int i; - size_t mbPathlen; /* length of multi-byte path */ - size_t wcPathlen; /* length of wide-character path */ - wchar_t *wptr; /* scratch pointer */ - wchar_t *wcPath; /* wide-character version of the path */ - char *mbPath; /* The copy fo the path to be returned */ - - /* - * bail out if there is nothing there. - */ - - if (!str) - return (NULL); - - /* - * Get a copy of the argument. - */ - - if ((mbPath = strdup(str)) == NULL) { - return (NULL); - } - - /* - * convert the multi-byte version of the path to a - * wide-character rendering, for doing our figuring. - */ - - mbPathlen = strlen(mbPath); - - if ((wcPath = calloc(sizeof (wchar_t), mbPathlen+1)) == NULL) { - free(mbPath); - return (NULL); - } - - if ((wcPathlen = mbstowcs(wcPath, mbPath, mbPathlen)) == (size_t)-1) { - free(mbPath); - free(wcPath); - return (NULL); - } - - /* - * remove duplicate slashes first ("//../" -> "/") - */ - - for (wptr = wcPath, i = 0; i < wcPathlen; i++) { - *wptr++ = wcPath[i]; - - if (wcPath[i] == '/') { - i++; - - while (wcPath[i] == '/') { - i++; - } - - i--; - } - } - - *wptr = '\0'; - - /* - * now convert back to the multi-byte format. - */ - - if (wcstombs(mbPath, wcPath, mbPathlen) == (size_t)-1) { - free(mbPath); - free(wcPath); - return (NULL); - } - - free(wcPath); - return (mbPath); -} diff --git a/cddl/compat/opensolaris/misc/mnttab.c b/cddl/compat/opensolaris/misc/mnttab.c deleted file mode 100644 index 8f56d90f6232..000000000000 --- a/cddl/compat/opensolaris/misc/mnttab.c +++ /dev/null @@ -1,216 +0,0 @@ -/*- - * Copyright (c) 2006 Pawel Jakub Dawidek - * All rights reserved. - * - * 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 AUTHORS 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 AUTHORS 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. - */ - -/* - * This file implements Solaris compatible getmntany() and hasmntopt() - * functions. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -static char * -mntopt(char **p) -{ - char *cp = *p; - char *retstr; - - while (*cp && isspace(*cp)) - cp++; - - retstr = cp; - while (*cp && *cp != ',') - cp++; - - if (*cp) { - *cp = '\0'; - cp++; - } - - *p = cp; - return (retstr); -} - -char * -hasmntopt(struct mnttab *mnt, char *opt) -{ - char tmpopts[MNT_LINE_MAX]; - char *f, *opts = tmpopts; - - if (mnt->mnt_mntopts == NULL) - return (NULL); - (void) strcpy(opts, mnt->mnt_mntopts); - f = mntopt(&opts); - for (; *f; f = mntopt(&opts)) { - if (strncmp(opt, f, strlen(opt)) == 0) - return (f - tmpopts + mnt->mnt_mntopts); - } - return (NULL); -} - -static void -optadd(char *mntopts, size_t size, const char *opt) -{ - - if (mntopts[0] != '\0') - strlcat(mntopts, ",", size); - strlcat(mntopts, opt, size); -} - -void -statfs2mnttab(struct statfs *sfs, struct mnttab *mp) -{ - static char mntopts[MNTMAXSTR]; - long flags; - - mntopts[0] = '\0'; - - flags = sfs->f_flags; -#define OPTADD(opt) optadd(mntopts, sizeof(mntopts), (opt)) - if (flags & MNT_RDONLY) - OPTADD(MNTOPT_RO); - else - OPTADD(MNTOPT_RW); - if (flags & MNT_NOSUID) - OPTADD(MNTOPT_NOSUID); - else - OPTADD(MNTOPT_SETUID); - if (flags & MNT_UPDATE) - OPTADD(MNTOPT_REMOUNT); - if (flags & MNT_NOATIME) - OPTADD(MNTOPT_NOATIME); - else - OPTADD(MNTOPT_ATIME); - OPTADD(MNTOPT_NOXATTR); - if (flags & MNT_NOEXEC) - OPTADD(MNTOPT_NOEXEC); - else - OPTADD(MNTOPT_EXEC); -#undef OPTADD - mp->mnt_special = sfs->f_mntfromname; - mp->mnt_mountp = sfs->f_mntonname; - mp->mnt_fstype = sfs->f_fstypename; - mp->mnt_mntopts = mntopts; -} - -static struct statfs *gsfs = NULL; -static int allfs = 0; - -static int -statfs_init(void) -{ - struct statfs *sfs; - int error; - - if (gsfs != NULL) { - free(gsfs); - gsfs = NULL; - } - allfs = getfsstat(NULL, 0, MNT_WAIT); - if (allfs == -1) - goto fail; - gsfs = malloc(sizeof(gsfs[0]) * allfs * 2); - if (gsfs == NULL) - goto fail; - allfs = getfsstat(gsfs, (long)(sizeof(gsfs[0]) * allfs * 2), - MNT_WAIT); - if (allfs == -1) - goto fail; - sfs = realloc(gsfs, allfs * sizeof(gsfs[0])); - if (sfs != NULL) - gsfs = sfs; - return (0); -fail: - error = errno; - if (gsfs != NULL) - free(gsfs); - gsfs = NULL; - allfs = 0; - return (error); -} - -int -getmntany(FILE *fd __unused, struct mnttab *mgetp, struct mnttab *mrefp) -{ - struct statfs *sfs; - int i, error; - - error = statfs_init(); - if (error != 0) - return (error); - - for (i = 0; i < allfs; i++) { - if (mrefp->mnt_special != NULL && - strcmp(mrefp->mnt_special, gsfs[i].f_mntfromname) != 0) { - continue; - } - if (mrefp->mnt_mountp != NULL && - strcmp(mrefp->mnt_mountp, gsfs[i].f_mntonname) != 0) { - continue; - } - if (mrefp->mnt_fstype != NULL && - strcmp(mrefp->mnt_fstype, gsfs[i].f_fstypename) != 0) { - continue; - } - statfs2mnttab(&gsfs[i], mgetp); - return (0); - } - return (-1); -} - -int -getmntent(FILE *fp, struct mnttab *mp) -{ - struct statfs *sfs; - int error, nfs; - - nfs = (int)lseek(fileno(fp), 0, SEEK_CUR); - if (nfs == -1) - return (errno); - /* If nfs is 0, we want to refresh out cache. */ - if (nfs == 0 || gsfs == NULL) { - error = statfs_init(); - if (error != 0) - return (error); - } - if (nfs >= allfs) - return (-1); - statfs2mnttab(&gsfs[nfs], mp); - if (lseek(fileno(fp), 1, SEEK_CUR) == -1) - return (errno); - return (0); -} diff --git a/cddl/compat/opensolaris/misc/thread_pool.c b/cddl/compat/opensolaris/misc/thread_pool.c deleted file mode 100644 index 6ae0055afceb..000000000000 --- a/cddl/compat/opensolaris/misc/thread_pool.c +++ /dev/null @@ -1,428 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -#include -__FBSDID("$FreeBSD$"); - -#pragma ident "%Z%%M% %I% %E% SMI" - -#include -#include -#include -#include "thread_pool_impl.h" - -typedef void (*_Voidfp)(void*); /* pointer to extern "C" function */ - -static void -delete_pool(tpool_t *tpool) -{ - tpool_job_t *job; - - /* - * There should be no pending jobs, but just in case... - */ - for (job = tpool->tp_head; job != NULL; job = tpool->tp_head) { - tpool->tp_head = job->tpj_next; - free(job); - } - (void) pthread_attr_destroy(&tpool->tp_attr); - free(tpool); -} - -/* - * Worker thread is terminating. - */ -static void -worker_cleanup(void *arg) -{ - tpool_t *tpool = arg; - - if (--tpool->tp_current == 0 && - (tpool->tp_flags & (TP_DESTROY | TP_ABANDON))) { - if (tpool->tp_flags & TP_ABANDON) { - pthread_mutex_unlock(&tpool->tp_mutex); - delete_pool(tpool); - return; - } - if (tpool->tp_flags & TP_DESTROY) - (void) pthread_cond_broadcast(&tpool->tp_busycv); - } - pthread_mutex_unlock(&tpool->tp_mutex); -} - -static void -notify_waiters(tpool_t *tpool) -{ - if (tpool->tp_head == NULL && tpool->tp_active == NULL) { - tpool->tp_flags &= ~TP_WAIT; - (void) pthread_cond_broadcast(&tpool->tp_waitcv); - } -} - -/* - * Called by a worker thread on return from a tpool_dispatch()d job. - */ -static void -job_cleanup(void *arg) -{ - tpool_t *tpool = arg; - pthread_t my_tid = pthread_self(); - tpool_active_t *activep; - tpool_active_t **activepp; - - pthread_mutex_lock(&tpool->tp_mutex); - /* CSTYLED */ - for (activepp = &tpool->tp_active;; activepp = &activep->tpa_next) { - activep = *activepp; - if (activep->tpa_tid == my_tid) { - *activepp = activep->tpa_next; - break; - } - } - if (tpool->tp_flags & TP_WAIT) - notify_waiters(tpool); -} - -static void * -tpool_worker(void *arg) -{ - tpool_t *tpool = (tpool_t *)arg; - int elapsed; - tpool_job_t *job; - void (*func)(void *); - tpool_active_t active; - sigset_t maskset; - - pthread_mutex_lock(&tpool->tp_mutex); *** 578 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Thu Jun 17 19:55:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E666665D56A; Thu, 17 Jun 2021 19:55:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Xq45vw1z3n6x; Thu, 17 Jun 2021 19:55:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B3E14155B3; Thu, 17 Jun 2021 19:55:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HJtie6008930; Thu, 17 Jun 2021 19:55:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HJtiJB008929; Thu, 17 Jun 2021 19:55:44 GMT (envelope-from git) Date: Thu, 17 Jun 2021 19:55:44 GMT Message-Id: <202106171955.15HJtiJB008929@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 5851680bcabe - main - style(9): Add advice about $FreeBSD$ MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5851680bcabed1079bbb96c78512fedfa6c2737e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 19:55:45 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=5851680bcabed1079bbb96c78512fedfa6c2737e commit 5851680bcabed1079bbb96c78512fedfa6c2737e Author: Warner Losh AuthorDate: 2021-06-17 19:54:12 +0000 Commit: Warner Losh CommitDate: 2021-06-17 19:54:59 +0000 style(9): Add advice about $FreeBSD$ Codify our standard practice with $FreeBSD$ o New code only needs it if it might land in stable/12 o Old code should retain it until stable/12 is unsupported o We'll do a bulk remove in the future: don't do it proactively. o Give advice about how to tag files derived from other files in the tree. Reviewed by: bcr, allanjude,ceri Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30789 --- share/man/man9/style.9 | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/share/man/man9/style.9 b/share/man/man9/style.9 index 77c8dbe8e7d7..fff0e3815c13 100644 --- a/share/man/man9/style.9 +++ b/share/man/man9/style.9 @@ -112,13 +112,20 @@ New lines should only be added when making substantial changes to the file, not for trivial changes. .Pp -After any copyright and license comment, there is a blank line, and the +After any copyright and license comment, there is a blank line. +If your code needs to be merged into stable/12 or earlier, it +needs to have the .Li $\&FreeBSD$ -for non C/C++ language source files. -Version control system ID tags should only exist once in a file -(unlike in this one). +tag. +Otherwise, this tag should be omitted in new code. +Legacy code will have the tag removed in the future. +For non C/C++ language source files, +.Li $\&FreeBSD$ +is next, if applicable. Non-C/C++ source files follow the example above, while C/C++ source files follow the one below. +Version control system ID tags should only exist once in a file +(unlike in this one). All VCS (version control system) revision identification in files obtained from elsewhere should be maintained, including, where applicable, multiple IDs showing a file's history. @@ -132,6 +139,11 @@ and to keep the IDs out of object files. Only add .Dq Li "From: " in front of foreign VCS IDs if the file is renamed. +Add +.Dq Li "From: " +and FreeBSD git hash with full path name if the file was derived +from another FreeBSD file and include relevant copyright info +from the original file. .Bd -literal /* From: @(#)style 1.14 (Berkeley) 4/28/95 */ From owner-dev-commits-src-all@freebsd.org Thu Jun 17 19:56:55 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 25B2C65D1D3; Thu, 17 Jun 2021 19:56:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5XrR0Z7Yz3nL7; Thu, 17 Jun 2021 19:56:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F007115A0E; Thu, 17 Jun 2021 19:56:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HJusA1009117; Thu, 17 Jun 2021 19:56:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HJusk7009116; Thu, 17 Jun 2021 19:56:54 GMT (envelope-from git) Date: Thu, 17 Jun 2021 19:56:54 GMT Message-Id: <202106171956.15HJusk7009116@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: a19bd307bda8 - main - man9: Sort unr in Makefile MLINKS MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a19bd307bda85ef07edcc99a11cfdafadd3a751a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 19:56:55 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=a19bd307bda85ef07edcc99a11cfdafadd3a751a commit a19bd307bda85ef07edcc99a11cfdafadd3a751a Author: Warner Losh AuthorDate: 2021-06-17 15:20:11 +0000 Commit: Warner Losh CommitDate: 2021-06-17 19:55:50 +0000 man9: Sort unr in Makefile MLINKS Sort unr entries in alphabetical order, like everything else in the MLINKS section. Sponsored by: Netflix --- share/man/man9/Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 60bfc907f16a..179f79b39573 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -447,14 +447,7 @@ MAN= accept_filter.9 \ zero_region.9 \ zone.9 -MLINKS= unr.9 alloc_unr.9 \ - unr.9 alloc_unrl.9 \ - unr.9 alloc_unr_specific.9 \ - unr.9 clear_unrhdr.9 \ - unr.9 delete_unrhdr.9 \ - unr.9 free_unr.9 \ - unr.9 new_unrhdr.9 -MLINKS+=accept_filter.9 accept_filt_add.9 \ +MLINKS= accept_filter.9 accept_filt_add.9 \ accept_filter.9 accept_filt_del.9 \ accept_filter.9 accept_filt_generic_mod_event.9 \ accept_filter.9 accept_filt_get.9 @@ -2211,6 +2204,13 @@ MLINKS+=uidinfo.9 uifind.9 \ MLINKS+=uio.9 uiomove.9 \ uio.9 uiomove_frombuf.9 \ uio.9 uiomove_nofault.9 +MLINKS+=unr.9 alloc_unr.9 \ + unr.9 alloc_unrl.9 \ + unr.9 alloc_unr_specific.9 \ + unr.9 clear_unrhdr.9 \ + unr.9 delete_unrhdr.9 \ + unr.9 free_unr.9 \ + unr.9 new_unrhdr.9 .if ${MK_USB} != "no" MAN+= usbdi.9 From owner-dev-commits-src-all@freebsd.org Thu Jun 17 20:09:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D84E865D8AE; Thu, 17 Jun 2021 20:09:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5Y6z5bBBz3pKP; Thu, 17 Jun 2021 20:09:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A430E1557B; Thu, 17 Jun 2021 20:09:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HK9VPt023128; Thu, 17 Jun 2021 20:09:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HK9VgO023127; Thu, 17 Jun 2021 20:09:31 GMT (envelope-from git) Date: Thu, 17 Jun 2021 20:09:31 GMT Message-Id: <202106172009.15HK9VgO023127@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alan Somers Subject: git: b6de677b705d - stable/13 - fusefs: reenable the WriteCluster.cluster_write_err test MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b6de677b705d6f10f605f9a011c18406e9b0cb9a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 20:09:31 -0000 The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=b6de677b705d6f10f605f9a011c18406e9b0cb9a commit b6de677b705d6f10f605f9a011c18406e9b0cb9a Author: Alan Somers AuthorDate: 2021-05-30 22:51:56 +0000 Commit: Alan Somers CommitDate: 2021-06-17 20:09:15 +0000 fusefs: reenable the WriteCluster.cluster_write_err test The underlying panic was just fixed by revision 27006229f7a40a18a61a0e8fd270bc583326b690 PR: 238565 MFC with: 27006229f7a40a18a61a0e8fd270bc583326b690 (cherry picked from commit 425bbe9e64f7af6bdb30a099bd90a32885de1ab8) --- tests/sys/fs/fusefs/write.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/sys/fs/fusefs/write.cc b/tests/sys/fs/fusefs/write.cc index f0f9685000fb..fadf4648d31c 100644 --- a/tests/sys/fs/fusefs/write.cc +++ b/tests/sys/fs/fusefs/write.cc @@ -806,10 +806,10 @@ TEST_F(WriteCluster, clustering) * not panic the system on unmount */ /* - * Disabled because it panics. + * Regression test for bug 238585 * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238565 */ -TEST_F(WriteCluster, DISABLED_cluster_write_err) +TEST_F(WriteCluster, cluster_write_err) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; From owner-dev-commits-src-all@freebsd.org Thu Jun 17 21:26:14 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 19B9D65DC6B; Thu, 17 Jun 2021 21:26:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5ZqT74pKz3ttT; Thu, 17 Jun 2021 21:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DAEF816A4F; Thu, 17 Jun 2021 21:26:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15HLQDRB028169; Thu, 17 Jun 2021 21:26:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15HLQDZx028168; Thu, 17 Jun 2021 21:26:13 GMT (envelope-from git) Date: Thu, 17 Jun 2021 21:26:13 GMT Message-Id: <202106172126.15HLQDZx028168@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 6a836ea741c7 - main - config(8): Remove obsolete 'config' directive. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6a836ea741c71fe3cfd2b09396cb358e9cd89d1d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Jun 2021 21:26:14 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=6a836ea741c71fe3cfd2b09396cb358e9cd89d1d commit 6a836ea741c71fe3cfd2b09396cb358e9cd89d1d Author: Warner Losh AuthorDate: 2021-06-17 21:14:16 +0000 Commit: Warner Losh CommitDate: 2021-06-17 21:17:18 +0000 config(8): Remove obsolete 'config' directive. The "config" line in config files has been obsolete since FreeBSD 4.x when we moved to having the boot loader pass in the root device. Remove it. MFC After: 1 week Sponsored by: Netflix --- usr.sbin/config/config.5 | 12 ------------ usr.sbin/config/config.y | 9 --------- usr.sbin/config/lang.l | 1 - 3 files changed, 22 deletions(-) diff --git a/usr.sbin/config/config.5 b/usr.sbin/config/config.5 index dd3ee8baffee..433194f3b22b 100644 --- a/usr.sbin/config/config.5 +++ b/usr.sbin/config/config.5 @@ -402,18 +402,6 @@ Options specific to architecture are specified in the file .Pa sys/conf/options . Ns Aq Ar arch . .El -.Ss Obsolete Directives -The following kernel configuration directives are obsolete. -.Bl -tag -width indent -.\" -------- CONFIG -------- -.It Ic config -This directive was used to specify the device to be used for the root -file system. -From -.Fx 4.0 -onwards, this information is passed to a booting kernel by -.Xr loader 8 . -.El .Sh FILES .Bl -tag -width ".Pa sys/conf/Makefile. Ns Ar arch" -compact .It Pa sys/compile/ Ns Ar NAME diff --git a/usr.sbin/config/config.y b/usr.sbin/config/config.y index 3d517c2b789e..0ffeb653d722 100644 --- a/usr.sbin/config/config.y +++ b/usr.sbin/config/config.y @@ -203,15 +203,6 @@ Config_spec: STAILQ_INSERT_HEAD(&hints, hint, hint_next); } -System_spec: - CONFIG System_id System_parameter_list { - errx(1, "%s:%d: root/dump/swap specifications obsolete", - yyfile, yyline); - } - | - CONFIG System_id - ; - System_id: Save_id { newopt(&mkopt, ns("KERNEL"), $1, 0, 0); }; diff --git a/usr.sbin/config/lang.l b/usr.sbin/config/lang.l index f83af3b5d9cc..ed0b2aa794b3 100644 --- a/usr.sbin/config/lang.l +++ b/usr.sbin/config/lang.l @@ -62,7 +62,6 @@ struct kt { const char *kt_name; int kt_val; } key_words[] = { - { "config", CONFIG }, { "cpu", CPU }, { "nocpu", NOCPU }, { "device", DEVICE }, From owner-dev-commits-src-all@freebsd.org Fri Jun 18 09:43:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9B1CF641137; Fri, 18 Jun 2021 09:43:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5vB93jtXz3Pd7; Fri, 18 Jun 2021 09:43:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 625C8203EA; Fri, 18 Jun 2021 09:43:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15I9hTMj010425; Fri, 18 Jun 2021 09:43:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15I9hTd4010424; Fri, 18 Jun 2021 09:43:29 GMT (envelope-from git) Date: Fri, 18 Jun 2021 09:43:29 GMT Message-Id: <202106180943.15I9hTd4010424@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mariusz Zaborski Subject: git: b4fe6fbab236 - stable/11 - libcasper: add missing unistd.h MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: b4fe6fbab236a0fd37ebafb4d3bb15856f99596c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 09:43:29 -0000 The branch stable/11 has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=b4fe6fbab236a0fd37ebafb4d3bb15856f99596c commit b4fe6fbab236a0fd37ebafb4d3bb15856f99596c Author: Mariusz Zaborski AuthorDate: 2021-06-18 09:41:40 +0000 Commit: Mariusz Zaborski CommitDate: 2021-06-18 09:43:19 +0000 libcasper: add missing unistd.h Reported by: Arrigo Marchiori --- lib/libcasper/libcasper/libcasper_impl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/libcasper/libcasper/libcasper_impl.c b/lib/libcasper/libcasper/libcasper_impl.c index f58bd44d2039..8d1ebd8dd074 100644 --- a/lib/libcasper/libcasper/libcasper_impl.c +++ b/lib/libcasper/libcasper/libcasper_impl.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "libcasper_impl.h" From owner-dev-commits-src-all@freebsd.org Fri Jun 18 09:54:08 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D09E26416E9; Fri, 18 Jun 2021 09:54:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5vQS5MxPz3hms; Fri, 18 Jun 2021 09:54:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A068320B07; Fri, 18 Jun 2021 09:54:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15I9s81J023591; Fri, 18 Jun 2021 09:54:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15I9s8DD023590; Fri, 18 Jun 2021 09:54:08 GMT (envelope-from git) Date: Fri, 18 Jun 2021 09:54:08 GMT Message-Id: <202106180954.15I9s8DD023590@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: ef84d16e68b2 - stable/13 - ipfw.8: synopsis misses nat show form MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ef84d16e68b2a3f86eeb1b758dc560ec2a4ffcbe Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 09:54:08 -0000 The branch stable/13 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=ef84d16e68b2a3f86eeb1b758dc560ec2a4ffcbe commit ef84d16e68b2a3f86eeb1b758dc560ec2a4ffcbe Author: Lutz Donnerhacke AuthorDate: 2021-05-10 16:30:42 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-18 09:53:26 +0000 ipfw.8: synopsis misses nat show form Document the existing behavior, which is currently only available by reading third party documentation or the source code itself. PR: 254617 Submitted by: Oliver Kiddle Differential Revision: https://reviews.freebsd.org/D30189 (cherry picked from commit c8250c5ada85fec8936e8eb8695d7cb80a3ce8ab) --- sbin/ipfw/ipfw.8 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/sbin/ipfw/ipfw.8 b/sbin/ipfw/ipfw.8 index ef718c247896..be3f92f3bd6b 100644 --- a/sbin/ipfw/ipfw.8 +++ b/sbin/ipfw/ipfw.8 @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 11, 2021 +.Dd June 4, 2021 .Dt IPFW 8 .Os .Sh NAME @@ -105,6 +105,11 @@ in-kernel NAT. .Ar number .Cm config .Ar config-options +.Nm +.Cm nat +.Ar number +.Cm show +.Brq Cm config | log .Ss STATEFUL IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION .Nm .Oo Cm set Ar N Oc Cm nat64lsn Ar name Cm create Ar create-options @@ -922,7 +927,7 @@ This makes the .Xr netstat 1 entry look rather weird but is intended for use with transparent proxy servers. -.It Cm nat Ar nat_nr | tablearg +.It Cm nat Ar nat_nr | global | tablearg Pass packet to a nat instance (for network address translation, address redirect, etc.): @@ -3276,8 +3281,9 @@ Set the aliasing ports between the ranges given. Upper port has to be greater than lower. .El .Pp -Some specials value can be supplied instead of -.Va nat_number : +Some special values can be supplied instead of +.Va nat_number +in nat rule actions: .Bl -tag -width indent .It Cm global Looks up translation state in all configured nat instances. @@ -3303,7 +3309,7 @@ For more information about aliasing modes, refer to .Xr libalias 3 . See Section .Sx EXAMPLES -for some examples about nat usage. +for some examples of nat usage. .Ss REDIRECT AND LSNAT SUPPORT IN IPFW Redirect and LSNAT support follow closely the syntax used in .Xr natd 8 . From owner-dev-commits-src-all@freebsd.org Fri Jun 18 10:01:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BC1846417FB; Fri, 18 Jun 2021 10:01:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5vZs4kt8z3jdL; Fri, 18 Jun 2021 10:01:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8183D20855; Fri, 18 Jun 2021 10:01:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IA1Pf2033923; Fri, 18 Jun 2021 10:01:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IA1P49033922; Fri, 18 Jun 2021 10:01:25 GMT (envelope-from git) Date: Fri, 18 Jun 2021 10:01:25 GMT Message-Id: <202106181001.15IA1P49033922@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 116fc1b5a07f - stable/12 - ipfw.8: synopsis misses nat show form MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 116fc1b5a07f55c43ac39f04bf9dff5a503d99ba Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 10:01:25 -0000 The branch stable/12 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=116fc1b5a07f55c43ac39f04bf9dff5a503d99ba commit 116fc1b5a07f55c43ac39f04bf9dff5a503d99ba Author: Lutz Donnerhacke AuthorDate: 2021-05-10 16:30:42 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-18 10:00:29 +0000 ipfw.8: synopsis misses nat show form Document the existing behavior, which is currently only available by reading third party documentation or the source code itself. PR: 254617 Submitted by: Oliver Kiddle Differential Revision: https://reviews.freebsd.org/D30189 (cherry picked from commit c8250c5ada85fec8936e8eb8695d7cb80a3ce8ab) --- sbin/ipfw/ipfw.8 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/sbin/ipfw/ipfw.8 b/sbin/ipfw/ipfw.8 index ef718c247896..be3f92f3bd6b 100644 --- a/sbin/ipfw/ipfw.8 +++ b/sbin/ipfw/ipfw.8 @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 11, 2021 +.Dd June 4, 2021 .Dt IPFW 8 .Os .Sh NAME @@ -105,6 +105,11 @@ in-kernel NAT. .Ar number .Cm config .Ar config-options +.Nm +.Cm nat +.Ar number +.Cm show +.Brq Cm config | log .Ss STATEFUL IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION .Nm .Oo Cm set Ar N Oc Cm nat64lsn Ar name Cm create Ar create-options @@ -922,7 +927,7 @@ This makes the .Xr netstat 1 entry look rather weird but is intended for use with transparent proxy servers. -.It Cm nat Ar nat_nr | tablearg +.It Cm nat Ar nat_nr | global | tablearg Pass packet to a nat instance (for network address translation, address redirect, etc.): @@ -3276,8 +3281,9 @@ Set the aliasing ports between the ranges given. Upper port has to be greater than lower. .El .Pp -Some specials value can be supplied instead of -.Va nat_number : +Some special values can be supplied instead of +.Va nat_number +in nat rule actions: .Bl -tag -width indent .It Cm global Looks up translation state in all configured nat instances. @@ -3303,7 +3309,7 @@ For more information about aliasing modes, refer to .Xr libalias 3 . See Section .Sx EXAMPLES -for some examples about nat usage. +for some examples of nat usage. .Ss REDIRECT AND LSNAT SUPPORT IN IPFW Redirect and LSNAT support follow closely the syntax used in .Xr natd 8 . From owner-dev-commits-src-all@freebsd.org Fri Jun 18 10:07:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4CA93641A42; Fri, 18 Jun 2021 10:07:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G5vjq1jv2z3kMX; Fri, 18 Jun 2021 10:07:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 23E34209BD; Fri, 18 Jun 2021 10:07:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IA7ROl037829; Fri, 18 Jun 2021 10:07:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IA7REH037828; Fri, 18 Jun 2021 10:07:27 GMT (envelope-from git) Date: Fri, 18 Jun 2021 10:07:27 GMT Message-Id: <202106181007.15IA7REH037828@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lutz Donnerhacke Subject: git: 95f8bb6d06d9 - stable/11 - ipfw.8: synopsis misses nat show form MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 95f8bb6d06d9fb65dc382423485f2f636ec20375 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 10:07:27 -0000 The branch stable/11 has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=95f8bb6d06d9fb65dc382423485f2f636ec20375 commit 95f8bb6d06d9fb65dc382423485f2f636ec20375 Author: Lutz Donnerhacke AuthorDate: 2021-05-10 16:30:42 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-18 10:06:42 +0000 ipfw.8: synopsis misses nat show form Document the existing behavior, which is currently only available by reading third party documentation or the source code itself. PR: 254617 Submitted by: Oliver Kiddle Differential Revision: https://reviews.freebsd.org/D30189 (cherry picked from commit c8250c5ada85fec8936e8eb8695d7cb80a3ce8ab) --- sbin/ipfw/ipfw.8 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/sbin/ipfw/ipfw.8 b/sbin/ipfw/ipfw.8 index 4cdd7b63849f..93c265512ce1 100644 --- a/sbin/ipfw/ipfw.8 +++ b/sbin/ipfw/ipfw.8 @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 11, 2021 +.Dd June 4, 2021 .Dt IPFW 8 .Os .Sh NAME @@ -105,6 +105,11 @@ in-kernel NAT. .Ar number .Cm config .Ar config-options +.Nm +.Cm nat +.Ar number +.Cm show +.Brq Cm config | log .Ss STATEFUL IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION .Nm .Oo Cm set Ar N Oc Cm nat64lsn Ar name Cm create Ar create-options @@ -922,7 +927,7 @@ This makes the .Xr netstat 1 entry look rather weird but is intended for use with transparent proxy servers. -.It Cm nat Ar nat_nr | tablearg +.It Cm nat Ar nat_nr | global | tablearg Pass packet to a nat instance (for network address translation, address redirect, etc.): @@ -3243,8 +3248,9 @@ Obey transparent proxy rules only, packet aliasing is not performed. Skip instance in case of global state lookup (see below). .El .Pp -Some specials value can be supplied instead of -.Va nat_number: +Some special values can be supplied instead of +.Va nat_number +in nat rule actions: .Bl -tag -width indent .It Cm global Looks up translation state in all configured nat instances. @@ -3270,7 +3276,7 @@ For more information about aliasing modes, refer to .Xr libalias 3 . See Section .Sx EXAMPLES -for some examples about nat usage. +for some examples of nat usage. .Ss REDIRECT AND LSNAT SUPPORT IN IPFW Redirect and LSNAT support follow closely the syntax used in .Xr natd 8 . From owner-dev-commits-src-all@freebsd.org Fri Jun 18 14:30:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1C55364633C; Fri, 18 Jun 2021 14:30:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G61YK0C4Rz4hDy; Fri, 18 Jun 2021 14:30:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E351224687; Fri, 18 Jun 2021 14:30:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IEUSED092506; Fri, 18 Jun 2021 14:30:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IEUSel092505; Fri, 18 Jun 2021 14:30:28 GMT (envelope-from git) Date: Fri, 18 Jun 2021 14:30:28 GMT Message-Id: <202106181430.15IEUSel092505@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ceri Davies Subject: git: c43b0081faab - main - devmatch: improve naming of devmatch config variable MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ceri X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c43b0081faab742eb93c3d064b552b65f926b86e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 14:30:29 -0000 The branch main has been updated by ceri (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=c43b0081faab742eb93c3d064b552b65f926b86e commit c43b0081faab742eb93c3d064b552b65f926b86e Author: Ceri Davies AuthorDate: 2021-06-18 12:17:30 +0000 Commit: Ceri Davies CommitDate: 2021-06-18 12:17:30 +0000 devmatch: improve naming of devmatch config variable Accept the old rc.conf variable if the new one is not present for compatability. Approved by: imp Differential Revision: https://reviews.freebsd.org/D30806 --- libexec/rc/rc.conf | 2 +- libexec/rc/rc.d/devmatch | 4 ++-- share/man/man5/rc.conf.5 | 10 +++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf index 041d4b6b5321..9fdc4d9d8636 100644 --- a/libexec/rc/rc.conf +++ b/libexec/rc/rc.conf @@ -45,7 +45,7 @@ ddb_config="/etc/ddb.conf" # ddb(8) config file. devd_enable="YES" # Run devd, to trigger programs on device tree changes. devd_flags="" # Additional flags for devd(8). devmatch_enable="YES" # Demand load kernel modules based on device ids. -devmatch_blacklist="" # List of modules (w/o .ko) to exclude from devmatch. +devmatch_blocklist="" # List of modules (w/o .ko) to exclude from devmatch. #kld_list="" # Kernel modules to load after local disks are mounted kldxref_enable="YES" # Build linker.hints files with kldxref(8). kldxref_clobber="NO" # Overwrite old linker.hints at boot. diff --git a/libexec/rc/rc.d/devmatch b/libexec/rc/rc.d/devmatch index 491bc94c4a16..0b2e3719dabb 100755 --- a/libexec/rc/rc.d/devmatch +++ b/libexec/rc/rc.d/devmatch @@ -59,9 +59,9 @@ devmatch_start() # or drivers that have symbolic links that # confuse devmatch by running it -n. # Finally, we filter out all items in the - # devmactch_blacklist. + # devmatch_blocklist. devctl freeze - x=$(echo ${devmatch_blacklist} | tr ' ' '#') + x=$(echo ${devmatch_blocklist:-${devmatch_blacklist}} | tr ' ' '#') for m in ${list}; do case "#${x}#" in *"#${m}#"*) continue ;; diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 index 95fa8bce4dc0..bf9289f30417 100644 --- a/share/man/man5/rc.conf.5 +++ b/share/man/man5/rc.conf.5 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 13, 2021 +.Dd June 18, 2021 .Dt RC.CONF 5 .Os .Sh NAME @@ -257,8 +257,16 @@ If set to .Dq Li NO , disable auto-loading of kernel modules with .Xr devmatch 8 . +.It Va devmatch_blocklist +.Pq Vt str +A whitespace-separated list of kernel modules to be ignored by +.Xr devmatch 8 . .It Va devmatch_blacklist .Pq Vt str +This variable is deprecated. +Use +.Va devmatch_blocklist +instead. A whitespace-separated list of kernel modules to be ignored by .Xr devmatch 8 . .It Va kld_list From owner-dev-commits-src-all@freebsd.org Fri Jun 18 14:30:30 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 42FB8646634; Fri, 18 Jun 2021 14:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G61YL0rlkz4h08; Fri, 18 Jun 2021 14:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 022042452A; Fri, 18 Jun 2021 14:30:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IEUTib092530; Fri, 18 Jun 2021 14:30:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IEUTUD092529; Fri, 18 Jun 2021 14:30:29 GMT (envelope-from git) Date: Fri, 18 Jun 2021 14:30:29 GMT Message-Id: <202106181430.15IEUTUD092529@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ceri Davies Subject: git: 64e6e1e46363 - main - secure/caroot, certctl: Rename secure/caroot/blacklisted MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ceri X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 64e6e1e46363de5d4843cf0fc79406060ec44c03 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 14:30:30 -0000 The branch main has been updated by ceri (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=64e6e1e46363de5d4843cf0fc79406060ec44c03 commit 64e6e1e46363de5d4843cf0fc79406060ec44c03 Author: Ceri Davies AuthorDate: 2021-06-18 12:29:15 +0000 Commit: Ceri Davies CommitDate: 2021-06-18 12:38:07 +0000 secure/caroot, certctl: Rename secure/caroot/blacklisted Old certctl commands still work for compatability, but are deprecated. Approved by: secteam (gordon) Differential Revision: https://reviews.freebsd.org/D30807 --- ObsoleteFiles.inc | 38 +++++++++++ UPDATING | 4 ++ etc/mtree/BSD.usr.dist | 4 +- secure/caroot/Makefile | 2 +- secure/caroot/README | 4 +- secure/caroot/blacklisted/Makefile | 9 --- .../AddTrust_External_Root.pem | 0 .../AddTrust_Low-Value_Services_Root.pem | 0 .../Camerfirma_Chambers_of_Commerce_Root.pem | 0 .../Camerfirma_Global_Chambersign_Root.pem | 0 .../{blacklisted => untrusted}/Certum_Root_CA.pem | 0 .../Chambers_of_Commerce_Root_-_2008.pem | 0 .../D-TRUST_Root_CA_3_2013.pem | 0 .../caroot/{blacklisted => untrusted}/EC-ACC.pem | 0 .../EE_Certification_Centre_Root_CA.pem | 0 .../GeoTrust_Global_CA.pem | 0 .../GeoTrust_Primary_Certification_Authority.pem | 0 ...oTrust_Primary_Certification_Authority_-_G2.pem | 0 ...oTrust_Primary_Certification_Authority_-_G3.pem | 0 .../GeoTrust_Universal_CA.pem | 0 .../GeoTrust_Universal_CA_2.pem | 0 .../Global_Chambersign_Root_-_2008.pem | 0 .../LuxTrust_Global_Root_2.pem | 0 secure/caroot/untrusted/Makefile | 9 +++ .../OISTE_WISeKey_Global_Root_GA_CA.pem | 0 .../Staat_der_Nederlanden_Root_CA_-_G2.pem | 0 .../Staat_der_Nederlanden_Root_CA_-_G3.pem | 0 .../SwissSign_Platinum_CA_-_G2.pem | 0 ...Public_Primary_Certification_Authority_-_G4.pem | 0 ...Public_Primary_Certification_Authority_-_G6.pem | 0 ...Public_Primary_Certification_Authority_-_G4.pem | 0 ...Public_Primary_Certification_Authority_-_G6.pem | 0 .../{blacklisted => untrusted}/Taiwan_GRCA.pem | 0 .../Trustis_FPS_Root_CA.pem | 0 ...Public_Primary_Certification_Authority_-_G4.pem | 0 ...Public_Primary_Certification_Authority_-_G5.pem | 0 ...Sign_Universal_Root_Certification_Authority.pem | 0 ...Public_Primary_Certification_Authority_-_G3.pem | 0 ...Public_Primary_Certification_Authority_-_G3.pem | 0 ...Public_Primary_Certification_Authority_-_G3.pem | 0 .../thawte_Primary_Root_CA.pem | 0 .../thawte_Primary_Root_CA_-_G2.pem | 0 .../thawte_Primary_Root_CA_-_G3.pem | 0 usr.sbin/certctl/certctl.8 | 47 +++++++------- usr.sbin/certctl/certctl.sh | 73 +++++++++++----------- usr.sbin/etcupdate/etcupdate.sh | 2 +- usr.sbin/mergemaster/mergemaster.sh | 2 +- 47 files changed, 120 insertions(+), 74 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 3802307d7761..468d967efdcc 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -44,6 +44,44 @@ OLD_FILES+=usr/share/man/man9/crypto_cursor_segbase.9.gz OLD_FILES+=usr/share/man/man9/crypto_cursor_seglen.9.gz +# 20210618: rename of usr/share/certs/blacklisted +OLD_FILES+=usr/share/certs/blacklisted/AddTrust_External_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/AddTrust_Low-Value_Services_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/Camerfirma_Chambers_of_Commerce_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/Camerfirma_Global_Chambersign_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/Certum_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Chambers_of_Commerce_Root_-_2008.pem +OLD_FILES+=usr/share/certs/blacklisted/D-TRUST_Root_CA_3_2013.pem +OLD_FILES+=usr/share/certs/blacklisted/EC-ACC.pem +OLD_FILES+=usr/share/certs/blacklisted/EE_Certification_Centre_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Global_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Universal_CA_2.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Universal_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Global_Chambersign_Root_-_2008.pem +OLD_FILES+=usr/share/certs/blacklisted/LuxTrust_Global_Root_2.pem +OLD_FILES+=usr/share/certs/blacklisted/OISTE_WISeKey_Global_Root_GA_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/SwissSign_Platinum_CA_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G4.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G6.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G4.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G6.pem +OLD_FILES+=usr/share/certs/blacklisted/Taiwan_GRCA.pem +OLD_FILES+=usr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/thawte_Primary_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Trustis_FPS_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem +OLD_FILES+=usr/share/certs/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem +OLD_FILES+=usr/share/certs/blacklisted/VeriSign_Universal_Root_Certification_Authority.pem +OLD_DIRS+=usr/share/certs/blacklisted # 20210613: new clang import which bumps version from 11.0.1 to 12.0.0. OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/algorithm OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/complex diff --git a/UPDATING b/UPDATING index 8b4d4a4820f6..61c428bf1af0 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 14.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +202106xx: + The directory "blacklisted" under /usr/share/certs/ has been + renamed to "untrusted". + 20210611: svnlite has been removed from base. Should you need svn for any reason please install the svn package or port. diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index a4a247b7eefd..2bdb65f7b2ab 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -205,10 +205,10 @@ .. .. certs - blacklisted tags=package=caroot - .. trusted tags=package=caroot .. + untrusted tags=package=caroot + .. .. dict .. diff --git a/secure/caroot/Makefile b/secure/caroot/Makefile index 50f92ecc6542..c685c5f6cc7a 100644 --- a/secure/caroot/Makefile +++ b/secure/caroot/Makefile @@ -3,7 +3,7 @@ CLEANFILES+= certdata.txt SUBDIR+= trusted -SUBDIR+= blacklisted +SUBDIR+= untrusted .include diff --git a/secure/caroot/README b/secure/caroot/README index 9a4fc0320e2a..1e123080559e 100644 --- a/secure/caroot/README +++ b/secure/caroot/README @@ -14,8 +14,8 @@ It will: Then the results should manually be inspected (svn status) 1) Any no-longer-trusted certificates should be moved to the - blacklisted directory (svn mv) - 2) any newly added certificates will need to be added (svn add) + untrusted directory (git mv) + 2) any newly added certificates will need to be added (git add) The following make targets exist: diff --git a/secure/caroot/blacklisted/Makefile b/secure/caroot/blacklisted/Makefile deleted file mode 100644 index b7ccfbe88c03..000000000000 --- a/secure/caroot/blacklisted/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -BINDIR= /usr/share/certs/blacklisted - -BLACKLISTED_CERTS!= echo ${.CURDIR}/*.pem 2> /dev/null || true - -FILES+= ${BLACKLISTED_CERTS} - -.include diff --git a/secure/caroot/blacklisted/AddTrust_External_Root.pem b/secure/caroot/untrusted/AddTrust_External_Root.pem similarity index 100% rename from secure/caroot/blacklisted/AddTrust_External_Root.pem rename to secure/caroot/untrusted/AddTrust_External_Root.pem diff --git a/secure/caroot/blacklisted/AddTrust_Low-Value_Services_Root.pem b/secure/caroot/untrusted/AddTrust_Low-Value_Services_Root.pem similarity index 100% rename from secure/caroot/blacklisted/AddTrust_Low-Value_Services_Root.pem rename to secure/caroot/untrusted/AddTrust_Low-Value_Services_Root.pem diff --git a/secure/caroot/blacklisted/Camerfirma_Chambers_of_Commerce_Root.pem b/secure/caroot/untrusted/Camerfirma_Chambers_of_Commerce_Root.pem similarity index 100% rename from secure/caroot/blacklisted/Camerfirma_Chambers_of_Commerce_Root.pem rename to secure/caroot/untrusted/Camerfirma_Chambers_of_Commerce_Root.pem diff --git a/secure/caroot/blacklisted/Camerfirma_Global_Chambersign_Root.pem b/secure/caroot/untrusted/Camerfirma_Global_Chambersign_Root.pem similarity index 100% rename from secure/caroot/blacklisted/Camerfirma_Global_Chambersign_Root.pem rename to secure/caroot/untrusted/Camerfirma_Global_Chambersign_Root.pem diff --git a/secure/caroot/blacklisted/Certum_Root_CA.pem b/secure/caroot/untrusted/Certum_Root_CA.pem similarity index 100% rename from secure/caroot/blacklisted/Certum_Root_CA.pem rename to secure/caroot/untrusted/Certum_Root_CA.pem diff --git a/secure/caroot/blacklisted/Chambers_of_Commerce_Root_-_2008.pem b/secure/caroot/untrusted/Chambers_of_Commerce_Root_-_2008.pem similarity index 100% rename from secure/caroot/blacklisted/Chambers_of_Commerce_Root_-_2008.pem rename to secure/caroot/untrusted/Chambers_of_Commerce_Root_-_2008.pem diff --git a/secure/caroot/blacklisted/D-TRUST_Root_CA_3_2013.pem b/secure/caroot/untrusted/D-TRUST_Root_CA_3_2013.pem similarity index 100% rename from secure/caroot/blacklisted/D-TRUST_Root_CA_3_2013.pem rename to secure/caroot/untrusted/D-TRUST_Root_CA_3_2013.pem diff --git a/secure/caroot/blacklisted/EC-ACC.pem b/secure/caroot/untrusted/EC-ACC.pem similarity index 100% rename from secure/caroot/blacklisted/EC-ACC.pem rename to secure/caroot/untrusted/EC-ACC.pem diff --git a/secure/caroot/blacklisted/EE_Certification_Centre_Root_CA.pem b/secure/caroot/untrusted/EE_Certification_Centre_Root_CA.pem similarity index 100% rename from secure/caroot/blacklisted/EE_Certification_Centre_Root_CA.pem rename to secure/caroot/untrusted/EE_Certification_Centre_Root_CA.pem diff --git a/secure/caroot/blacklisted/GeoTrust_Global_CA.pem b/secure/caroot/untrusted/GeoTrust_Global_CA.pem similarity index 100% rename from secure/caroot/blacklisted/GeoTrust_Global_CA.pem rename to secure/caroot/untrusted/GeoTrust_Global_CA.pem diff --git a/secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority.pem b/secure/caroot/untrusted/GeoTrust_Primary_Certification_Authority.pem similarity index 100% rename from secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority.pem rename to secure/caroot/untrusted/GeoTrust_Primary_Certification_Authority.pem diff --git a/secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority_-_G2.pem b/secure/caroot/untrusted/GeoTrust_Primary_Certification_Authority_-_G2.pem similarity index 100% rename from secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority_-_G2.pem rename to secure/caroot/untrusted/GeoTrust_Primary_Certification_Authority_-_G2.pem diff --git a/secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority_-_G3.pem b/secure/caroot/untrusted/GeoTrust_Primary_Certification_Authority_-_G3.pem similarity index 100% rename from secure/caroot/blacklisted/GeoTrust_Primary_Certification_Authority_-_G3.pem rename to secure/caroot/untrusted/GeoTrust_Primary_Certification_Authority_-_G3.pem diff --git a/secure/caroot/blacklisted/GeoTrust_Universal_CA.pem b/secure/caroot/untrusted/GeoTrust_Universal_CA.pem similarity index 100% rename from secure/caroot/blacklisted/GeoTrust_Universal_CA.pem rename to secure/caroot/untrusted/GeoTrust_Universal_CA.pem diff --git a/secure/caroot/blacklisted/GeoTrust_Universal_CA_2.pem b/secure/caroot/untrusted/GeoTrust_Universal_CA_2.pem similarity index 100% rename from secure/caroot/blacklisted/GeoTrust_Universal_CA_2.pem rename to secure/caroot/untrusted/GeoTrust_Universal_CA_2.pem diff --git a/secure/caroot/blacklisted/Global_Chambersign_Root_-_2008.pem b/secure/caroot/untrusted/Global_Chambersign_Root_-_2008.pem similarity index 100% rename from secure/caroot/blacklisted/Global_Chambersign_Root_-_2008.pem rename to secure/caroot/untrusted/Global_Chambersign_Root_-_2008.pem diff --git a/secure/caroot/blacklisted/LuxTrust_Global_Root_2.pem b/secure/caroot/untrusted/LuxTrust_Global_Root_2.pem similarity index 100% rename from secure/caroot/blacklisted/LuxTrust_Global_Root_2.pem rename to secure/caroot/untrusted/LuxTrust_Global_Root_2.pem diff --git a/secure/caroot/untrusted/Makefile b/secure/caroot/untrusted/Makefile new file mode 100644 index 000000000000..e988841071d2 --- /dev/null +++ b/secure/caroot/untrusted/Makefile @@ -0,0 +1,9 @@ +# $FreeBSD$ + +BINDIR= /usr/share/certs/untrusted + +UNTRUSTED_CERTS!= echo ${.CURDIR}/*.pem 2> /dev/null || true + +FILES+= ${UNTRUSTED_CERTS} + +.include diff --git a/secure/caroot/blacklisted/OISTE_WISeKey_Global_Root_GA_CA.pem b/secure/caroot/untrusted/OISTE_WISeKey_Global_Root_GA_CA.pem similarity index 100% rename from secure/caroot/blacklisted/OISTE_WISeKey_Global_Root_GA_CA.pem rename to secure/caroot/untrusted/OISTE_WISeKey_Global_Root_GA_CA.pem diff --git a/secure/caroot/blacklisted/Staat_der_Nederlanden_Root_CA_-_G2.pem b/secure/caroot/untrusted/Staat_der_Nederlanden_Root_CA_-_G2.pem similarity index 100% rename from secure/caroot/blacklisted/Staat_der_Nederlanden_Root_CA_-_G2.pem rename to secure/caroot/untrusted/Staat_der_Nederlanden_Root_CA_-_G2.pem diff --git a/secure/caroot/blacklisted/Staat_der_Nederlanden_Root_CA_-_G3.pem b/secure/caroot/untrusted/Staat_der_Nederlanden_Root_CA_-_G3.pem similarity index 100% rename from secure/caroot/blacklisted/Staat_der_Nederlanden_Root_CA_-_G3.pem rename to secure/caroot/untrusted/Staat_der_Nederlanden_Root_CA_-_G3.pem diff --git a/secure/caroot/blacklisted/SwissSign_Platinum_CA_-_G2.pem b/secure/caroot/untrusted/SwissSign_Platinum_CA_-_G2.pem similarity index 100% rename from secure/caroot/blacklisted/SwissSign_Platinum_CA_-_G2.pem rename to secure/caroot/untrusted/SwissSign_Platinum_CA_-_G2.pem diff --git a/secure/caroot/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G4.pem b/secure/caroot/untrusted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G4.pem similarity index 100% rename from secure/caroot/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G4.pem rename to secure/caroot/untrusted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G4.pem diff --git a/secure/caroot/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G6.pem b/secure/caroot/untrusted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G6.pem similarity index 100% rename from secure/caroot/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G6.pem rename to secure/caroot/untrusted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G6.pem diff --git a/secure/caroot/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G4.pem b/secure/caroot/untrusted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G4.pem similarity index 100% rename from secure/caroot/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G4.pem rename to secure/caroot/untrusted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G4.pem diff --git a/secure/caroot/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G6.pem b/secure/caroot/untrusted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G6.pem similarity index 100% rename from secure/caroot/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G6.pem rename to secure/caroot/untrusted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G6.pem diff --git a/secure/caroot/blacklisted/Taiwan_GRCA.pem b/secure/caroot/untrusted/Taiwan_GRCA.pem similarity index 100% rename from secure/caroot/blacklisted/Taiwan_GRCA.pem rename to secure/caroot/untrusted/Taiwan_GRCA.pem diff --git a/secure/caroot/blacklisted/Trustis_FPS_Root_CA.pem b/secure/caroot/untrusted/Trustis_FPS_Root_CA.pem similarity index 100% rename from secure/caroot/blacklisted/Trustis_FPS_Root_CA.pem rename to secure/caroot/untrusted/Trustis_FPS_Root_CA.pem diff --git a/secure/caroot/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem b/secure/caroot/untrusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem similarity index 100% rename from secure/caroot/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem rename to secure/caroot/untrusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem diff --git a/secure/caroot/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem b/secure/caroot/untrusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem similarity index 100% rename from secure/caroot/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem rename to secure/caroot/untrusted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem diff --git a/secure/caroot/blacklisted/VeriSign_Universal_Root_Certification_Authority.pem b/secure/caroot/untrusted/VeriSign_Universal_Root_Certification_Authority.pem similarity index 100% rename from secure/caroot/blacklisted/VeriSign_Universal_Root_Certification_Authority.pem rename to secure/caroot/untrusted/VeriSign_Universal_Root_Certification_Authority.pem diff --git a/secure/caroot/blacklisted/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.pem b/secure/caroot/untrusted/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.pem similarity index 100% rename from secure/caroot/blacklisted/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.pem rename to secure/caroot/untrusted/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.pem diff --git a/secure/caroot/blacklisted/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem b/secure/caroot/untrusted/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem similarity index 100% rename from secure/caroot/blacklisted/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem rename to secure/caroot/untrusted/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem diff --git a/secure/caroot/blacklisted/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem b/secure/caroot/untrusted/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem similarity index 100% rename from secure/caroot/blacklisted/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem rename to secure/caroot/untrusted/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem diff --git a/secure/caroot/blacklisted/thawte_Primary_Root_CA.pem b/secure/caroot/untrusted/thawte_Primary_Root_CA.pem similarity index 100% rename from secure/caroot/blacklisted/thawte_Primary_Root_CA.pem rename to secure/caroot/untrusted/thawte_Primary_Root_CA.pem diff --git a/secure/caroot/blacklisted/thawte_Primary_Root_CA_-_G2.pem b/secure/caroot/untrusted/thawte_Primary_Root_CA_-_G2.pem similarity index 100% rename from secure/caroot/blacklisted/thawte_Primary_Root_CA_-_G2.pem rename to secure/caroot/untrusted/thawte_Primary_Root_CA_-_G2.pem diff --git a/secure/caroot/blacklisted/thawte_Primary_Root_CA_-_G3.pem b/secure/caroot/untrusted/thawte_Primary_Root_CA_-_G3.pem similarity index 100% rename from secure/caroot/blacklisted/thawte_Primary_Root_CA_-_G3.pem rename to secure/caroot/untrusted/thawte_Primary_Root_CA_-_G3.pem diff --git a/usr.sbin/certctl/certctl.8 b/usr.sbin/certctl/certctl.8 index 8ca2cd37dee5..9af2adaba757 100644 --- a/usr.sbin/certctl/certctl.8 +++ b/usr.sbin/certctl/certctl.8 @@ -26,19 +26,19 @@ .\" .\" $FreeBSD$ .\" -.Dd January 7, 2021 +.Dd June 18, 2021 .Dt CERTCTL 8 .Os .Sh NAME .Nm certctl -.Nd "tool for managing trusted and blacklist TLS certificates" +.Nd "tool for managing trusted and untrusted TLS certificates" .Sh SYNOPSIS .Nm .Op Fl v .Ic list .Nm .Op Fl v -.Ic blacklisted +.Ic untrusted .Nm .Op Fl nUv .Op Fl D Ar destdir @@ -46,10 +46,10 @@ .Ic rehash .Nm .Op Fl nv -.Ic blacklist Ar file +.Ic untrust Ar file .Nm .Op Fl nv -.Ic unblacklist Ar file +.Ic trust Ar file .Sh DESCRIPTION The .Nm @@ -72,28 +72,28 @@ Do record the ownership in the METALOG file. .El .Pp Primary command functions: -.Bl -tag -width blacklisted +.Bl -tag -width untrusted .It Ic list List all currently trusted certificate authorities. -.It Ic blacklisted -List all currently blacklisted certificates. +.It Ic untrusted +List all currently untrusted certificates. .It Ic rehash Rebuild the list of trusted certificate authorities by scanning all directories in .Ev TRUSTPATH -and all blacklisted certificates in -.Ev BLACKLISTPATH . +and all untrusted certificates in +.Ev UNTRUSTPATH . A symbolic link to each trusted certificate is placed in .Ev CERTDESTDIR -and each blacklisted certificate in -.Ev BLACKLISTDESTDIR . -.It Ic blacklist -Add the specified file to the blacklist. -.It Ic unblacklist -Remove the specified file from the blacklist. +and each untrusted certificate in +.Ev UNTRUSTDESTDIR . +.It Ic untrust +Add the specified file to the untrusted list. +.It Ic trust +Remove the specified file from the untrusted list. .El .Sh ENVIRONMENT -.Bl -tag -width BLACKLISTDESTDIR +.Bl -tag -width UNTRUSTDESTDIR .It Ev DESTDIR Alternate destination directory to operate on. .It Ev TRUSTPATH @@ -101,19 +101,20 @@ List of paths to search for trusted certificates. Default: .Pa /usr/share/certs/trusted .Pa /usr/local/share/certs /usr/local/etc/ssl/certs -.It Ev BLACKLISTPATH -List of paths to search for blacklisted certificates. +.It Ev UNTRUSTPATH +List of paths to search for untrusted certificates. Default: -.Pa /usr/share/certs/blacklisted +.Pa /usr/share/certs/untrusted +.Pa /usr/local/etc/ssl/untrusted .Pa /usr/local/etc/ssl/blacklisted .It Ev CERTDESTDIR Destination directory for symbolic links to trusted certificates. Default: .Pa /etc/ssl/certs -.It Ev BLACKLISTDESTDIR -Destination directory for symbolic links to blacklisted certificates. +.It Ev UNTRUSTDESTDIR +Destination directory for symbolic links to untrusted certificates. Default: -.Pa /etc/ssl/blacklisted +.Pa /etc/ssl/untrusted .It Ev EXTENSIONS List of file extensions to read as certificate files. Default: *.pem *.crt *.cer *.crl *.0 diff --git a/usr.sbin/certctl/certctl.sh b/usr.sbin/certctl/certctl.sh index 1a491cf3a047..327eaa6381a6 100755 --- a/usr.sbin/certctl/certctl.sh +++ b/usr.sbin/certctl/certctl.sh @@ -79,10 +79,10 @@ create_trusted_link() hash=$( do_hash "$1" ) || return certhash=$( openssl x509 -sha1 -in "$1" -noout -fingerprint ) - for blistfile in $(find $BLACKLISTDESTDIR -name "$hash.*"); do + for blistfile in $(find $UNTRUSTDESTDIR -name "$hash.*"); do blisthash=$( openssl x509 -sha1 -in "$blistfile" -noout -fingerprint ) if [ "$certhash" = "$blisthash" ]; then - echo "Skipping blacklisted certificate $1 ($blistfile)" + echo "Skipping untrusted certificate $1 ($blistfile)" return 1 fi done @@ -102,19 +102,19 @@ resolve_certname() if [ -e "$1" ]; then hash=$( do_hash "$1" ) || return srcfile=$(realpath "$1") - suffix=$(get_decimal "$BLACKLISTDESTDIR" "$hash") + suffix=$(get_decimal "$UNTRUSTDESTDIR" "$hash") filename="$hash.$suffix" echo "$srcfile" "$hash.$suffix" elif [ -e "${CERTDESTDIR}/$1" ]; then srcfile=$(realpath "${CERTDESTDIR}/$1") hash=$(echo "$1" | sed -Ee 's/\.([0-9])+$//') - suffix=$(get_decimal "$BLACKLISTDESTDIR" "$hash") + suffix=$(get_decimal "$UNTRUSTDESTDIR" "$hash") filename="$hash.$suffix" echo "$srcfile" "$hash.$suffix" fi } -create_blacklisted() +create_untrusted() { local srcfile filename @@ -126,8 +126,8 @@ create_blacklisted() return fi - [ $VERBOSE -gt 0 ] && echo "Adding $filename to blacklist" - [ $NOOP -eq 0 ] && install ${INSTALLFLAGS} -lrs "$srcfile" "$BLACKLISTDESTDIR/$filename" + [ $VERBOSE -gt 0 ] && echo "Adding $filename to untrusted list" + [ $NOOP -eq 0 ] && install ${INSTALLFLAGS} -lrs "$srcfile" "$UNTRUSTDESTDIR/$filename" } do_scan() @@ -185,14 +185,14 @@ cmd_rehash() else mkdir -p "$CERTDESTDIR" fi - if [ -e "$BLACKLISTDESTDIR" ]; then - find "$BLACKLISTDESTDIR" -type link -delete + if [ -e "$UNTRUSTDESTDIR" ]; then + find "$UNTRUSTDESTDIR" -type link -delete else - mkdir -p "$BLACKLISTDESTDIR" + mkdir -p "$UNTRUSTDESTDIR" fi fi - do_scan create_blacklisted "$BLACKLISTPATH" + do_scan create_untrusted "$UNTRUSTPATH" do_scan create_trusted_link "$TRUSTPATH" } @@ -202,19 +202,19 @@ cmd_list() do_list "$CERTDESTDIR" } -cmd_blacklist() +cmd_untrust() { local BPATH shift # verb - [ $NOOP -eq 0 ] && mkdir -p "$BLACKLISTDESTDIR" + [ $NOOP -eq 0 ] && mkdir -p "$UNTRUSTDESTDIR" for BFILE in "$@"; do - echo "Adding $BFILE to blacklist" - create_blacklisted "$BFILE" + echo "Adding $BFILE to untrusted list" + create_untrusted "$BFILE" done } -cmd_unblacklist() +cmd_trust() { local BFILE blisthash certhash hash @@ -223,16 +223,16 @@ cmd_unblacklist() if [ -s "$BFILE" ]; then hash=$( do_hash "$BFILE" ) certhash=$( openssl x509 -sha1 -in "$BFILE" -noout -fingerprint ) - for BLISTEDFILE in $(find $BLACKLISTDESTDIR -name "$hash.*"); do + for BLISTEDFILE in $(find $UNTRUSTDESTDIR -name "$hash.*"); do blisthash=$( openssl x509 -sha1 -in "$BLISTEDFILE" -noout -fingerprint ) if [ "$certhash" = "$blisthash" ]; then - echo "Removing $(basename "$BLISTEDFILE") from blacklist" + echo "Removing $(basename "$BLISTEDFILE") from untrusted list" [ $NOOP -eq 0 ] && rm -f $BLISTEDFILE fi done - elif [ -e "$BLACKLISTDESTDIR/$BFILE" ]; then - echo "Removing $BFILE from blacklist" - [ $NOOP -eq 0 ] && rm -f "$BLACKLISTDESTDIR/$BFILE" + elif [ -e "$UNTRUSTDESTDIR/$BFILE" ]; then + echo "Removing $BFILE from untrusted list" + [ $NOOP -eq 0 ] && rm -f "$UNTRUSTDESTDIR/$BFILE" else echo "Cannot find $BFILE" >&2 ERRORS=$(( $ERRORS + 1 )) @@ -240,10 +240,10 @@ cmd_unblacklist() done } -cmd_blacklisted() +cmd_untrusted() { - echo "Listing Blacklisted Certificates:" - do_list "$BLACKLISTDESTDIR" + echo "Listing Untrusted Certificates:" + do_list "$UNTRUSTDESTDIR" } usage() @@ -252,14 +252,14 @@ usage() echo "Manage the TLS trusted certificates on the system" echo " $SCRIPTNAME [-v] list" echo " List trusted certificates" - echo " $SCRIPTNAME [-v] blacklisted" - echo " List blacklisted certificates" + echo " $SCRIPTNAME [-v] untrusted" + echo " List untrusted certificates" echo " $SCRIPTNAME [-nUv] [-D ] [-M ] rehash" echo " Generate hash links for all certificates" - echo " $SCRIPTNAME [-nv] blacklist " - echo " Add to the list of blacklisted certificates" - echo " $SCRIPTNAME [-nv] unblacklist " - echo " Remove from the list of blacklisted certificates" + echo " $SCRIPTNAME [-nv] untrust " + echo " Add to the list of untrusted certificates" + echo " $SCRIPTNAME [-nv] trust " + echo " Remove from the list of untrusted certificates" exit 64 } @@ -281,17 +281,20 @@ INSTALLFLAGS= [ $UNPRIV -eq 1 ] && INSTALLFLAGS="-U -M ${METALOG} -D ${DESTDIR}" : ${LOCALBASE:=$(sysctl -n user.localbase)} : ${TRUSTPATH:=${DESTDIR}/usr/share/certs/trusted:${DESTDIR}${LOCALBASE}/share/certs:${DESTDIR}${LOCALBASE}/etc/ssl/certs} -: ${BLACKLISTPATH:=${DESTDIR}/usr/share/certs/blacklisted:${DESTDIR}${LOCALBASE}/etc/ssl/blacklisted} +: ${UNTRUSTPATH:=${DESTDIR}/usr/share/certs/untrusted:${DESTDIR}${LOCALBASE}/etc/ssl/untrusted:${DESTDIR}${LOCALBASE}/etc/ssl/blacklisted} : ${CERTDESTDIR:=${DESTDIR}/etc/ssl/certs} -: ${BLACKLISTDESTDIR:=${DESTDIR}/etc/ssl/blacklisted} +: ${UNTRUSTDESTDIR:=${DESTDIR}/etc/ssl/untrusted} [ $# -gt 0 ] || usage case "$1" in list) cmd_list ;; rehash) cmd_rehash ;; -blacklist) cmd_blacklist "$@" ;; -unblacklist) cmd_unblacklist "$@" ;; -blacklisted) cmd_blacklisted ;; +blacklist) cmd_untrust "$@" ;; +untrust) cmd_untrust "$@" ;; +trust) cmd_trust "$@" ;; +unblacklist) cmd_trust "$@" ;; +untrusted) cmd_untrusted ;; +blacklisted) cmd_untrusted ;; *) usage # NOTREACHED esac diff --git a/usr.sbin/etcupdate/etcupdate.sh b/usr.sbin/etcupdate/etcupdate.sh index acfc601b93af..162a44059e3e 100755 --- a/usr.sbin/etcupdate/etcupdate.sh +++ b/usr.sbin/etcupdate/etcupdate.sh @@ -600,7 +600,7 @@ post_install_file() NEWALIAS_WARN=yes fi ;; - /usr/share/certs/trusted/* | /usr/share/certs/blacklisted/*) + /usr/share/certs/trusted/* | /usr/share/certs/untrusted/*) log "certctl rehash" if [ -z "$dryrun" ]; then env DESTDIR=${DESTDIR} certctl rehash >&3 2>&1 diff --git a/usr.sbin/mergemaster/mergemaster.sh b/usr.sbin/mergemaster/mergemaster.sh index 7703e2856111..5b7a656c1cd9 100755 --- a/usr.sbin/mergemaster/mergemaster.sh +++ b/usr.sbin/mergemaster/mergemaster.sh @@ -884,7 +884,7 @@ mm_install () { /etc/mail/aliases) NEED_NEWALIASES=yes ;; - /usr/share/certs/trusted/* | /usr/share/certs/blacklisted/*) + /usr/share/certs/trusted/* | /usr/share/certs/untrusted/*) NEED_CERTCTL=yes ;; /etc/login.conf) From owner-dev-commits-src-all@freebsd.org Fri Jun 18 14:36:15 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id ECED0646743; Fri, 18 Jun 2021 14:36:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G61gz6GWTz4hMm; Fri, 18 Jun 2021 14:36:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BB9E0243E0; Fri, 18 Jun 2021 14:36:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IEaFXU097850; Fri, 18 Jun 2021 14:36:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IEaFTH097849; Fri, 18 Jun 2021 14:36:15 GMT (envelope-from git) Date: Fri, 18 Jun 2021 14:36:15 GMT Message-Id: <202106181436.15IEaFTH097849@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: fcf2227a5575 - main - periodic: by default, skip 221.backup-gpart in jails MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fcf2227a557552e45646bbcf2422a98baab5c8a8 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 14:36:16 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=fcf2227a557552e45646bbcf2422a98baab5c8a8 commit fcf2227a557552e45646bbcf2422a98baab5c8a8 Author: Alan Somers AuthorDate: 2021-06-18 14:33:08 +0000 Commit: Alan Somers CommitDate: 2021-06-18 14:36:09 +0000 periodic: by default, skip 221.backup-gpart in jails It can still be enabled as usual in /etc/periodic.conf PR: 256253 Reported by: delphij Submitted by: Miroslav Lachman <000.fbsd@quip.cz> MFC after: 2 weeks --- usr.sbin/periodic/periodic.conf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/usr.sbin/periodic/periodic.conf b/usr.sbin/periodic/periodic.conf index d2d59fb783b0..4429c8d48eea 100644 --- a/usr.sbin/periodic/periodic.conf +++ b/usr.sbin/periodic/periodic.conf @@ -78,7 +78,12 @@ daily_backup_passwd_enable="YES" # Backup passwd & group daily_backup_aliases_enable="YES" # Backup mail aliases # 221.backup-gpart -daily_backup_gpart_enable="YES" # Backup partition table/boot partition/MBR +if [ $(sysctl -n security.jail.jailed) = 0 ]; then + # Backup partition table/boot partition/MBR + daily_backup_gpart_enable="YES" +else + daily_backup_gpart_enable="NO" +fi daily_backup_gpart_verbose="NO" # Be verbose if new backup differs from the old one daily_backup_efi_enable="NO" # Backup EFI system partition (ESP) From owner-dev-commits-src-all@freebsd.org Fri Jun 18 14:43:48 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E8C56646C35; Fri, 18 Jun 2021 14:43:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G61rh62TQz4jcg; Fri, 18 Jun 2021 14:43:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B7E2924A09; Fri, 18 Jun 2021 14:43:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IEhmFd010712; Fri, 18 Jun 2021 14:43:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IEhm3h010711; Fri, 18 Jun 2021 14:43:48 GMT (envelope-from git) Date: Fri, 18 Jun 2021 14:43:48 GMT Message-Id: <202106181443.15IEhm3h010711@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 0f882bb14a0e - main - NOTES: Update the HZ entry with latest advice. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0f882bb14a0e772bf901b1a3e40d028a4165fbd9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 14:43:49 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=0f882bb14a0e772bf901b1a3e40d028a4165fbd9 commit 0f882bb14a0e772bf901b1a3e40d028a4165fbd9 Author: Warner Losh AuthorDate: 2021-06-18 14:39:18 +0000 Commit: Warner Losh CommitDate: 2021-06-18 14:41:56 +0000 NOTES: Update the HZ entry with latest advice. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30804 --- sys/conf/NOTES | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 40063c09382f..89dd572986bc 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1047,8 +1047,7 @@ options TCP_SIGNATURE #include support for RFC 2385 # DUMMYNET enables the "dummynet" bandwidth limiter. You need IPFIREWALL # as well. See dummynet(4) and ipfw(8) for more info. When you run -# DUMMYNET it is advisable to also have at least "options HZ=1000" to achieve -# a smooth scheduling of the traffic. +# DUMMYNET, HZ/kern.hz should be at least 1000 for adequate response. options DUMMYNET # The DEBUGNET option enables a basic debug/panic-time networking API. It @@ -1237,14 +1236,11 @@ options CAPABILITY_MODE # sandboxes with no global namespace access ##################################################################### # CLOCK OPTIONS -# The granularity of operation is controlled by the kernel option HZ whose -# default value (1000 on most architectures) means a granularity of 1ms -# (1s/HZ). Historically, the default was 100, but finer granularity is -# required for DUMMYNET and other systems on modern hardware. There are -# reasonable arguments that HZ should, in fact, be 100 still; consider, -# that reducing the granularity too much might cause excessive overhead in -# clock interrupt processing, potentially causing ticks to be missed and thus -# actually reducing the accuracy of operation. +# The granularity of operation is controlled by the kernel option HZ (default +# 1000 or 1ms). Virtual machines guests default to an HZ value of 100. Lower +# values produce less overhead at the expense of reduce accuracy in delivery of +# kernel timeouts. With the adaptive tick code, lower values produce less +# benefit than in the past. options HZ=100 From owner-dev-commits-src-all@freebsd.org Fri Jun 18 14:43:50 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1B01D64683B; Fri, 18 Jun 2021 14:43:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G61rj6vNFz4j6t; Fri, 18 Jun 2021 14:43:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D2B2D246BD; Fri, 18 Jun 2021 14:43:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IEhnsj010736; Fri, 18 Jun 2021 14:43:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IEhn4t010735; Fri, 18 Jun 2021 14:43:49 GMT (envelope-from git) Date: Fri, 18 Jun 2021 14:43:49 GMT Message-Id: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4c0bc591466fd2731ba892269260b7dab74cfbad Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 14:43:50 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=4c0bc591466fd2731ba892269260b7dab74cfbad commit 4c0bc591466fd2731ba892269260b7dab74cfbad Author: Warner Losh AuthorDate: 2021-06-18 14:39:42 +0000 Commit: Warner Losh CommitDate: 2021-06-18 14:42:51 +0000 man9: add hz(9) and hardclock(9) Document aspects of system time keeping. Hz is the nominal rate that we interrupt the system and is known and the 'tick' period of 1 / hz. hardclock is the routine that does various bits of timekeeping. stathz and profhz are documented as historical relics that are deprecated and replaced by hwpmc.4 and others. Reviewed by: phk@, mav@ and gnn@ (previous version) Obtained from: hardclock.9 from NetBSD (with FreeBSD adjustments) Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D30802 --- share/man/man9/Makefile | 3 ++ share/man/man9/hardclock.9 | 100 +++++++++++++++++++++++++++++++++++++++ share/man/man9/hz.9 | 114 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 217 insertions(+) diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 179f79b39573..f7d72ad8cd8f 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -159,10 +159,12 @@ MAN= accept_filter.9 \ g_provider_by_name.9 \ groupmember.9 \ g_wither_geom.9 \ + hardclock.9 \ hash.9 \ hashinit.9 \ hexdump.9 \ hhook.9 \ + hz.9 \ ieee80211.9 \ ieee80211_amrr.9 \ ieee80211_beacon.9 \ @@ -1125,6 +1127,7 @@ MLINKS+=hhook.9 hhook_head_register.9 \ hhook.9 hhook_run_hooks.9 \ hhook.9 HHOOKS_RUN_IF.9 \ hhook.9 HHOOKS_RUN_LOOKUP_IF.9 +MLINKS+=hz.9 tick.9 MLINKS+=ieee80211.9 ieee80211_ifattach.9 \ ieee80211.9 ieee80211_ifdetach.9 MLINKS+=ieee80211_amrr.9 ieee80211_amrr_choose.9 \ diff --git a/share/man/man9/hardclock.9 b/share/man/man9/hardclock.9 new file mode 100644 index 000000000000..2aab68cb5f85 --- /dev/null +++ b/share/man/man9/hardclock.9 @@ -0,0 +1,100 @@ +.\" $NetBSD: hardclock.9,v 1.3 2010/03/25 15:17:38 jruoho Exp $ +.\" +.\" Copyright (c) 2001 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Thomas Klausner. +.\" +.\" 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. +.\" +.Dd March 25, 2010 +.Dt HARDCLOCK 9 +.Os +.Sh NAME +.Nm hardclock +.Nd real-time timer +.Sh SYNOPSIS +.Ft void +.Fn hardclock "int cnt" "int usermode" +.Sh DESCRIPTION +The +.Fn hardclock +function is called +.Xr hz 9 +times per second. +It implements the real-time system clock. +The argument +.Va cnt +is the estimated number of ticks since the last call to +.Fn hardclock . +The argument +.Va usermode +is none-zero when +.Fn hardclock +is called from a user-mode context. +.Pp +.Fn hardclock +may perform different tasks such as: +.Bl -bullet -offset indent +.It +Run the current process's virtual and profile time (decrease the +corresponding timers, if they are activated, and generate +.Li SIGVTALRM +or +.Li SIGPROF , +respectively). +.It +Increment the time-of-day, taking care of any +.Xr ntpd 8 +or +.Xr adjtime 2 +induced changes and leap seconds, as well as any necessary +compensations to keep in sync with PPS signals or external clocks, if +support for this is in the kernel (see +.Xr options 4 ) . +.It +Schedule softclock interrupts ( +.Xr swi 9 ) +processing. +.It +Collect +.Xr hwpmc 4 +statistics. +.It +Do device polling, when enabled. +.It +Implement software +.Xr watchdog 9 +processing. +.It +Enqueue +.Xr epoch 9 +processing. +.El +.Sh SEE ALSO +.Xr adjtime 2 , +.Xr ntp_adjtime 2 , +.Xr signal 3 , +.Xr ntpd 8 , +.Xr callout 9 , +.Xr hz 9 diff --git a/share/man/man9/hz.9 b/share/man/man9/hz.9 new file mode 100644 index 000000000000..d0e5d1b1ff3e --- /dev/null +++ b/share/man/man9/hz.9 @@ -0,0 +1,114 @@ +.\" +.\" Copyright (c) 2021 Netflix, Inc. +.\" +.\" 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. +.\" +.Dd June 18, 2021 +.Dt HZ 9 +.Os +.Sh NAME +.Nm hz , +.Nm tick , +.Nm stathz , +.Nm profhz +.Nd system time model +.Sh SYNOPSIS +.In sys/kernel.h +.Pp +.Vt extern int hz; +.Vt extern int tick; +.Vt extern int stathz; /* deprecated */ +.Vt extern int profhz; /* deprecated */ +.Sh DESCRIPTION +.Fx +utilizes periodic, one-shot, global or per-CPU +timing hardware using +.Xr eventtimers 9 +to produce traditional clock behavior. +.Pp +The main clock is used to update the system's notion of time via +.Xr timecounters 9 +and to pace periodic system callbacks via +.Xr callout 9 , +.Xr epoch 9 , +and other methods documented in +.Xr hardclock 9 . +That routine will be called approximately +.Va hz +times per second. +.Pp +The second clock, running at either +.Va stathz +or +.Va profhz +was used to gather timing statistics, but has been replaced with the more +functional +.Xr hwpmc 4 . +These values are returned for +.Qq compatibility +with +.Bx 4.4 , +.St -p1003.1-2001 +and the +.Xr setitimer 2 +.Va ITIMER_PROF +flag, which were deprecated in +.St -p1003.1-2008 +in favor of +.Xr timer_settime 2 . +.Pp +.Va tick +is the length of time in microseconds of one system tick. +.Pp +These system variables are also available as +.Em struct clockinfo +from +.Xr sysctl 3 +and +.Sy kern.clockrate +from +.Xr sysctl 8 . +.Pp +The +.Va hz +rate may be overridden by defining +.Dv HZ +in the kernel configuration file or setting +.Sy kern.hz +system tuneable via +.Xr loader.conf 5 . +.Pp +The current default is 1000 Hz for a tick of 1 ms for real hardware. +For virtual machine guests, the default is 100 Hz for a tick of 10 ms. +Only override the default value if you really know what you are doing. +Due to the adaptive nature of timeouts, changing this value has less effect than +it had in the past. +.Sh SEE ALSO +.Xr setitimer 2 , +.Xr timer_settime 2 , +.Xr loader.conf 5 , +.Xr callout 9 , +.Xr eventtimers 9 , +.Xr hardclock 9 , +.Xr microtime 9 , +.Xr time_second 9 , +.Xr timecounters 9 From owner-dev-commits-src-all@freebsd.org Fri Jun 18 15:14:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D325F6481AC; Fri, 18 Jun 2021 15:14:20 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G62Ww591Sz4lr1; Fri, 18 Jun 2021 15:14:20 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: by mail-wm1-x32d.google.com with SMTP id m3so5882516wms.4; Fri, 18 Jun 2021 08:14:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=f5zUwiH1vP6pNCH6lw9P/JLkl26ZnW3gt9VUc7mHKbQ=; b=ke0nFcRp+CvY3/NKKf0+OuQ/Eda6FKCpI3CRjGLZBvtOumNYvhAjnbStZPZ0z+SvDc JuB+yIEfnHi/y/9nrqpZtYPR8COsxtWtiYLh8Nw+2NJ7Y6c1cR0DN43IQpjzm4K+jUZg +9vQcZ6CQo5KQLzUAHGsy6iDTqi3dQeI0ulCbheUwCCGoSPtIh3Rny/GpJ3BBsfsbGpk LNkyKhd3jE3qb5PlrNJlz3VMtlDSRv/Qw2U4g9pnx87fsFm5/Pwh1ZtduKzu0qoKX/u8 KkGUB82hSGAlO8mKa5A3iYir5dL2MGsv8KPuvStLoSL9qT/xQS8N8zdfFlwtoGbvzQqe 71QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=f5zUwiH1vP6pNCH6lw9P/JLkl26ZnW3gt9VUc7mHKbQ=; b=m2Hzcb1VHgFB42VCfCHYuxUraNwM87QU84uN6vO5DhKABmxNDMqH6n/NW+1NQBDM2r KcOOeJ5GqHQMMeRnTWyOxkYHen2VniCuiEii2BvY9ML465dWnBlwQnm6nztx+1Fqx3ue qt1Ygyeb0V0okVleoGQCwDE1QfCkKsHt/LsnWEm7KCeseiQjsi3vu9H0Au6CJV9/F8oi fVHfpkQRfQnlIKwIrP7xBMoRZW/ZfRXDEsShI6+B0Bj/WAW18m/EfJw42rsjFFoWlDlQ fMVi1Gn8EV603v8Uc1v4/ibpKxbX95fV3+6X5lSToJTLBA/T/TY8IBNM1igXKpYGnhsc UcfQ== X-Gm-Message-State: AOAM5306TzCwmropuVb2Wxm6V7x3mmPGz5uOmaBJqfwutOMym8lKqwy1 AmpFsa5CH7ZL3/Bbqn9POcH3zUiuVig= X-Google-Smtp-Source: ABdhPJx76wlj8NWmjwkskdUQ7jX/2mprREtsaNpNUwm/dhY+8ecacTBEnSkk02Me3uaRyfPj4TUGiA== X-Received: by 2002:a7b:ca43:: with SMTP id m3mr12092861wml.74.1624029259262; Fri, 18 Jun 2021 08:14:19 -0700 (PDT) Received: from ernst.home (pd9e2360f.dip0.t-ipconnect.de. [217.226.54.15]) by smtp.gmail.com with ESMTPSA id s21sm9118791wmh.9.2021.06.18.08.14.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Jun 2021 08:14:18 -0700 (PDT) Date: Fri, 18 Jun 2021 17:14:15 +0200 From: Gary Jennejohn To: Warner Losh Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 0f882bb14a0e - main - NOTES: Update the HZ entry with latest advice. Message-ID: <20210618151415.6c28e706@ernst.home> In-Reply-To: <202106181443.15IEhm3h010711@gitrepo.freebsd.org> References: <202106181443.15IEhm3h010711@gitrepo.freebsd.org> Reply-To: gljennjohn@gmail.com X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; amd64-portbld-freebsd14.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4G62Ww591Sz4lr1 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 15:14:20 -0000 On Fri, 18 Jun 2021 14:43:48 GMT Warner Losh wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id=0f882bb14a0e772bf901b1a3e40d028a4165fbd9 > > commit 0f882bb14a0e772bf901b1a3e40d028a4165fbd9 > Author: Warner Losh > AuthorDate: 2021-06-18 14:39:18 +0000 > Commit: Warner Losh > CommitDate: 2021-06-18 14:41:56 +0000 > > NOTES: Update the HZ entry with latest advice. > > Sponsored by: Netflix > Differential Revision: https://reviews.freebsd.org/D30804 > --- > sys/conf/NOTES | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/sys/conf/NOTES b/sys/conf/NOTES > index 40063c09382f..89dd572986bc 100644 > --- a/sys/conf/NOTES > +++ b/sys/conf/NOTES > @@ -1047,8 +1047,7 @@ options TCP_SIGNATURE #include support for RFC 2385 > > # DUMMYNET enables the "dummynet" bandwidth limiter. You need IPFIREWALL > # as well. See dummynet(4) and ipfw(8) for more info. When you run > -# DUMMYNET it is advisable to also have at least "options HZ=1000" to achieve > -# a smooth scheduling of the traffic. > +# DUMMYNET, HZ/kern.hz should be at least 1000 for adequate response. > options DUMMYNET > > # The DEBUGNET option enables a basic debug/panic-time networking API. It > @@ -1237,14 +1236,11 @@ options CAPABILITY_MODE # sandboxes with no global namespace access > ##################################################################### > # CLOCK OPTIONS > > -# The granularity of operation is controlled by the kernel option HZ whose > -# default value (1000 on most architectures) means a granularity of 1ms > -# (1s/HZ). Historically, the default was 100, but finer granularity is > -# required for DUMMYNET and other systems on modern hardware. There are > -# reasonable arguments that HZ should, in fact, be 100 still; consider, > -# that reducing the granularity too much might cause excessive overhead in > -# clock interrupt processing, potentially causing ticks to be missed and thus > -# actually reducing the accuracy of operation. > +# The granularity of operation is controlled by the kernel option HZ (default > +# 1000 or 1ms). Virtual machines guests default to an HZ value of 100. Lower > +# values produce less overhead at the expense of reduce accuracy in delivery of reduce should be reduced > +# kernel timeouts. With the adaptive tick code, lower values produce less > +# benefit than in the past. > > options HZ=100 > > _______________________________________________ > dev-commits-src-all@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all > To unsubscribe, send any mail to "dev-commits-src-all-unsubscribe@freebsd.org" -- Gary Jennejohn From owner-dev-commits-src-all@freebsd.org Fri Jun 18 15:18:21 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5A6D5647FBF; Fri, 18 Jun 2021 15:18:21 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G62cY22Q8z4mD9; Fri, 18 Jun 2021 15:18:21 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro.local (ralph.baldwin.cx [66.234.199.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id B745B2CAE5; Fri, 18 Jun 2021 15:18:20 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) To: Warner Losh , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> From: John Baldwin Message-ID: <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> Date: Fri, 18 Jun 2021 08:18:19 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 15:18:21 -0000 On 6/18/21 7:43 AM, Warner Losh wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id=4c0bc591466fd2731ba892269260b7dab74cfbad > > commit 4c0bc591466fd2731ba892269260b7dab74cfbad > Author: Warner Losh > AuthorDate: 2021-06-18 14:39:42 +0000 > Commit: Warner Losh > CommitDate: 2021-06-18 14:42:51 +0000 > > man9: add hz(9) and hardclock(9) > > Document aspects of system time keeping. Hz is the nominal rate that we > interrupt the system and is known and the 'tick' period of 1 / hz. > hardclock is the routine that does various bits of timekeeping. stathz > and profhz are documented as historical relics that are deprecated > and replaced by hwpmc.4 and others. > > Reviewed by: phk@, mav@ and gnn@ (previous version) > Obtained from: hardclock.9 from NetBSD (with FreeBSD adjustments) > Sponsored by: Netflix > Differential Revision: https://reviews.freebsd.org/D30802 The comments about stathz are wrong. While profhz is obsolete and replaced by hwpmc, statclock is not. statclock is used to implement getrusage(), %CPU in ps(1), and kern.cp_time (global and per-CPU stats for CPU usage breakdown you see in top(1) for example). hwpmc doesn't replace any of those. OTOH, it's also true that there's no real reason for anything outside of the actual timer code to use stathz (or even profhz) unlike 'hz' which is still used to set timeout tick values. -- John Baldwin From owner-dev-commits-src-all@freebsd.org Fri Jun 18 15:21:29 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2525E6483CC; Fri, 18 Jun 2021 15:21:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G62h90dStz4mTQ; Fri, 18 Jun 2021 15:21:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F25A624FB2; Fri, 18 Jun 2021 15:21:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IFLSYg063809; Fri, 18 Jun 2021 15:21:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IFLSdW063808; Fri, 18 Jun 2021 15:21:28 GMT (envelope-from git) Date: Fri, 18 Jun 2021 15:21:28 GMT Message-Id: <202106181521.15IFLSdW063808@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 7bd295750b13 - main - NOTES: fix typo MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7bd295750b1383d4ec2061c53482cc9d8ee5384a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 15:21:29 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=7bd295750b1383d4ec2061c53482cc9d8ee5384a commit 7bd295750b1383d4ec2061c53482cc9d8ee5384a Author: Warner Losh AuthorDate: 2021-06-18 15:19:55 +0000 Commit: Warner Losh CommitDate: 2021-06-18 15:19:55 +0000 NOTES: fix typo Noted by: gj@ Sponsored by: Netflix --- sys/conf/NOTES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 89dd572986bc..877dec98dfe4 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1238,7 +1238,7 @@ options CAPABILITY_MODE # sandboxes with no global namespace access # The granularity of operation is controlled by the kernel option HZ (default # 1000 or 1ms). Virtual machines guests default to an HZ value of 100. Lower -# values produce less overhead at the expense of reduce accuracy in delivery of +# values produce less overhead at the expense of reduced accuracy in delivery of # kernel timeouts. With the adaptive tick code, lower values produce less # benefit than in the past. From owner-dev-commits-src-all@freebsd.org Fri Jun 18 15:26:02 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D388C648058; Fri, 18 Jun 2021 15:26:02 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4G62nQ3q8bz4m70; Fri, 18 Jun 2021 15:26:02 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id 15IFPr5a055289; Fri, 18 Jun 2021 08:25:53 -0700 (PDT) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: (from freebsd@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id 15IFPrtI055288; Fri, 18 Jun 2021 08:25:53 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <202106181525.15IFPrtI055288@gndrsh.dnsmgr.net> Subject: Re: git: c43b0081faab - main - devmatch: improve naming of devmatch config variable In-Reply-To: <202106181430.15IEUSel092505@gitrepo.freebsd.org> To: Ceri Davies Date: Fri, 18 Jun 2021 08:25:53 -0700 (PDT) CC: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Rspamd-Queue-Id: 4G62nQ3q8bz4m70 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 15:26:02 -0000 > The branch main has been updated by ceri (doc committer): > > URL: https://cgit.FreeBSD.org/src/commit/?id=c43b0081faab742eb93c3d064b552b65f926b86e > > commit c43b0081faab742eb93c3d064b552b65f926b86e > Author: Ceri Davies > AuthorDate: 2021-06-18 12:17:30 +0000 > Commit: Ceri Davies > CommitDate: 2021-06-18 12:17:30 +0000 > > devmatch: improve naming of devmatch config variable > > Accept the old rc.conf variable if the new one is not present for > compatability. > > Approved by: imp > Differential Revision: https://reviews.freebsd.org/D30806 > --- > libexec/rc/rc.conf | 2 +- > libexec/rc/rc.d/devmatch | 4 ++-- > share/man/man5/rc.conf.5 | 10 +++++++++- > 3 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf > index 041d4b6b5321..9fdc4d9d8636 100644 > --- a/libexec/rc/rc.conf > +++ b/libexec/rc/rc.conf > @@ -45,7 +45,7 @@ ddb_config="/etc/ddb.conf" # ddb(8) config file. > devd_enable="YES" # Run devd, to trigger programs on device tree changes. > devd_flags="" # Additional flags for devd(8). > devmatch_enable="YES" # Demand load kernel modules based on device ids. > -devmatch_blacklist="" # List of modules (w/o .ko) to exclude from devmatch. > +devmatch_blocklist="" # List of modules (w/o .ko) to exclude from devmatch. > #kld_list="" # Kernel modules to load after local disks are mounted > kldxref_enable="YES" # Build linker.hints files with kldxref(8). > kldxref_clobber="NO" # Overwrite old linker.hints at boot. > diff --git a/libexec/rc/rc.d/devmatch b/libexec/rc/rc.d/devmatch > index 491bc94c4a16..0b2e3719dabb 100755 > --- a/libexec/rc/rc.d/devmatch > +++ b/libexec/rc/rc.d/devmatch > @@ -59,9 +59,9 @@ devmatch_start() > # or drivers that have symbolic links that > # confuse devmatch by running it -n. > # Finally, we filter out all items in the > - # devmactch_blacklist. > + # devmatch_blocklist. > devctl freeze > - x=$(echo ${devmatch_blacklist} | tr ' ' '#') > + x=$(echo ${devmatch_blocklist:-${devmatch_blacklist}} | tr ' ' '#') > for m in ${list}; do > case "#${x}#" in > *"#${m}#"*) continue ;; > diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 > index 95fa8bce4dc0..bf9289f30417 100644 > --- a/share/man/man5/rc.conf.5 > +++ b/share/man/man5/rc.conf.5 > @@ -24,7 +24,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd May 13, 2021 > +.Dd June 18, 2021 > .Dt RC.CONF 5 > .Os > .Sh NAME > @@ -257,8 +257,16 @@ If set to > .Dq Li NO , > disable auto-loading of kernel modules with > .Xr devmatch 8 . > +.It Va devmatch_blocklist > +.Pq Vt str > +A whitespace-separated list of kernel modules to be ignored by ^^^^^^^^^ So though this tries to use the canned "you can just change black to block" it fails to consider that this isnt a block list, it is an ignore list, please consider using ignore here and/or in future similiar cases. > +.Xr devmatch 8 . > .It Va devmatch_blacklist > .Pq Vt str > +This variable is deprecated. > +Use > +.Va devmatch_blocklist > +instead. > A whitespace-separated list of kernel modules to be ignored by > .Xr devmatch 8 . > .It Va kld_list > -- Rod Grimes rgrimes@freebsd.org From owner-dev-commits-src-all@freebsd.org Fri Jun 18 15:32:45 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CE20864878B; Fri, 18 Jun 2021 15:32:45 +0000 (UTC) (envelope-from eugen@grosbein.net) Received: from hz.grosbein.net (hz.grosbein.net [IPv6:2a01:4f8:c2c:26d8::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hz.grosbein.net", Issuer "hz.grosbein.net" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G62x93lqRz4myh; Fri, 18 Jun 2021 15:32:45 +0000 (UTC) (envelope-from eugen@grosbein.net) Received: from eg.sd.rdtc.ru (root@eg.sd.rdtc.ru [62.231.161.221] (may be forged)) by hz.grosbein.net (8.15.2/8.15.2) with ESMTPS id 15IFWg88075471 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 18 Jun 2021 15:32:43 GMT (envelope-from eugen@grosbein.net) X-Envelope-From: eugen@grosbein.net X-Envelope-To: jhb@FreeBSD.org Received: from [10.58.0.10] (dadvw [10.58.0.10]) by eg.sd.rdtc.ru (8.16.1/8.16.1) with ESMTPS id 15IFWgGb045799 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Fri, 18 Jun 2021 22:32:42 +0700 (+07) (envelope-from eugen@grosbein.net) Subject: Re: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) To: John Baldwin , Warner Losh , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> From: Eugene Grosbein Message-ID: <7c4c7acc-1fe4-28e4-4e1c-c08912eb0f99@grosbein.net> Date: Fri, 18 Jun 2021 22:32:34 +0700 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=4.3 required=5.0 tests=BAYES_20,LOCAL_FROM, NICE_REPLY_A,RDNS_NONE,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-Report: * -0.0 BAYES_20 BODY: Bayes spam probability is 5 to 20% * [score: 0.1303] * -0.0 SPF_PASS SPF: sender matches SPF record * 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record * 2.6 LOCAL_FROM From my domains * 1.9 RDNS_NONE Delivered to internal network by a host with no rDNS * -0.2 NICE_REPLY_A Looks like a legit reply (A) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on hz.grosbein.net X-Spam-Level: **** X-Rspamd-Queue-Id: 4G62x93lqRz4myh X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 15:32:45 -0000 18.06.2021 22:18, John Baldwin wrote: > OTOH, it's > also true that there's no real reason for anything outside of the actual timer > code to use stathz (or even profhz) unlike 'hz' which is still used to set > timeout tick values. Not agreed: how do I get reliable per-CPU load stats in userland without sysctl kern.cp_times that exports incrementing raw "stathz-tick" counters? I need them to draw per-CPU graphs. From owner-dev-commits-src-all@freebsd.org Fri Jun 18 15:35:52 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DE60F6484DB for ; Fri, 18 Jun 2021 15:35:52 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G630m5QTbz4nJJ for ; Fri, 18 Jun 2021 15:35:52 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-pl1-x631.google.com with SMTP id m17so1677471plx.7 for ; Fri, 18 Jun 2021 08:35:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=4LI2ysUppKNIK7HLb023Op7UHR0/q6ddAw24qxf69xI=; b=JItw+aKietyfDP3cyEmwXhc+oPz4VTdyAgxBlUYJy6jY73MVutj2F5sG4U8DyMqUi/ Hqxq8Jmwpu/gPbsHxr+DXC4dZC0JvxD8jXim6RrJaEXo5JbaTuD1Myudinty1/La8zHJ Pob3y6qavEnGsYk7o2sjqhyHZyQm8rFvPamVyzNcHmqf4Ol6mzVhU37lkzZ0IZxgLiNx a7UUOa8zTSOpmdVGQTpwgLsmR1rpnCKPZNcVPEBI6cD2LP+8uiTaoOyiep2eBBk1a4dQ R0Tz37KJKl9lxMAgwyPMmC9aXRnhlHo72LHeuqgGAUr/ATla0auj5xZrvAo664qA02KG nhRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=4LI2ysUppKNIK7HLb023Op7UHR0/q6ddAw24qxf69xI=; b=f4zANgy9hBJYE34oQd3k1ZgqJ0I3eb3jnmsNTaOLzxLY6tXyxOOXDCptioK0ws6hUk zKzz/LBF5AtAfsYScoYNdRXkJ0AT20kUVcO9+ohmlCwcnDSZ7BHbE+lp2NVpsMDydrBC e1gyq0/GEOTLWcOnO5Rypy9kzrJxgbf35beK1KWxWHzxd6MXPS1LLBcphNXvGhGrY0m6 n5DkZbbX/E4M5HSsg29JlMR/NSDEjiuCQ+nEq+AT3WnpBHEoXD4hvv55gDsbbpnPjpk5 S5q11AhzN7qRxkLquvJrQRpK8akF/dEzgtPVE9t634460EurmfEcFxSGfLut/cJZPkJY wmxw== X-Gm-Message-State: AOAM532dr5Vdp5RglO4FGLU3SX1lJweo9dPPqt17pMEHfdAUVrOTGbnE aHzVxqiGf+qfcI4XWLmssZEZtA== X-Google-Smtp-Source: ABdhPJxuAoep9kY7JlmCfAHTRYP5hMMGGVp1yi38mDg5TXxCMbj6sC5DY4375ULLIx/BVjYV8ah2WA== X-Received: by 2002:a17:90a:db98:: with SMTP id h24mr8522776pjv.62.1624030550907; Fri, 18 Jun 2021 08:35:50 -0700 (PDT) Received: from ?IPv6:2603:300b:6:5100:65b4:c20:23f8:202e? ([2603:300b:6:5100:65b4:c20:23f8:202e]) by smtp.gmail.com with ESMTPSA id u11sm5141177pjf.46.2021.06.18.08.35.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Jun 2021 08:35:50 -0700 (PDT) From: Warner Losh Message-Id: <2F567BC6-94CC-400C-B214-0EDAA2C07557@bsdimp.com> Content-Type: multipart/signed; boundary="Apple-Mail=_9212D75F-A6BB-4A77-AC89-07227C83FE92"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Subject: Re: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) Date: Fri, 18 Jun 2021 09:35:48 -0600 In-Reply-To: <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> Cc: Warner Losh , "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: John Baldwin References: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> X-Mailer: Apple Mail (2.3608.120.23.2.4) X-Rspamd-Queue-Id: 4G630m5QTbz4nJJ X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 15:35:52 -0000 --Apple-Mail=_9212D75F-A6BB-4A77-AC89-07227C83FE92 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Jun 18, 2021, at 9:18 AM, John Baldwin wrote: >=20 > On 6/18/21 7:43 AM, Warner Losh wrote: >> The branch main has been updated by imp: >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D4c0bc591466fd2731ba892269260b7da= b74cfbad >> commit 4c0bc591466fd2731ba892269260b7dab74cfbad >> Author: Warner Losh >> AuthorDate: 2021-06-18 14:39:42 +0000 >> Commit: Warner Losh >> CommitDate: 2021-06-18 14:42:51 +0000 >> man9: add hz(9) and hardclock(9) >> Document aspects of system time keeping. Hz is the nominal = rate that we >> interrupt the system and is known and the 'tick' period of 1 / = hz. >> hardclock is the routine that does various bits of timekeeping. = stathz >> and profhz are documented as historical relics that are = deprecated >> and replaced by hwpmc.4 and others. >> Reviewed by: phk@, mav@ and gnn@ (previous = version) >> Obtained from: hardclock.9 from NetBSD (with FreeBSD = adjustments) >> Sponsored by: Netflix >> Differential Revision: https://reviews.freebsd.org/D30802 >=20 > The comments about stathz are wrong. While profhz is obsolete and = replaced by > hwpmc, statclock is not. statclock is used to implement getrusage(), = %CPU in > ps(1), and kern.cp_time (global and per-CPU stats for CPU usage = breakdown you > see in top(1) for example). hwpmc doesn't replace any of those. = OTOH, it's > also true that there's no real reason for anything outside of the = actual timer > code to use stathz (or even profhz) unlike 'hz' which is still used to = set > timeout tick values. Thanks. All that had been blotted out of my mind somehow :(. I=E2=80=99ll update and include you on the review. Warner --Apple-Mail=_9212D75F-A6BB-4A77-AC89-07227C83FE92 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEIDX4lLAKo898zeG3bBzRKH2wEQAFAmDMvVQACgkQbBzRKH2w EQBj6BAA43MSlLBi+jRAkl2zpD6/UkOwOFYPUOp8kQmsuxkZ/DSU8CYrS5LFtDVo NfhY5kyioAxbyidq2TVrOe1kf7NLDxKJUZMA6Zlu1j95WeTetoRHpyi8PjNoUWnZ aRraGg9bTKFHHduHH65JxGjoMtTlf8XQusnjBin5qiBVodP0Z9FNL8hK/cP6UHCG B1BieHKubvcWPGeJYiuzre8oNzHCTaTU1mrK2/8UqeLcRhsxxm63Z0NlqrmQhAWJ kliMoPbxYagW4ddyAGf+oFJ8NmMpCF3qGjt7vL9FYeXdR/erRdifUUa2fS39h0/r Q6GA2wMhSsz8+ofVPCKMS/tx/0qaeVNgIde21c2YbR1O52keeqP3AATUmrY9bZGI R2yZgdqpmK29VJw7C1ZQyDVivpln4KvNpMd6dxzUaEfheUsI81ukV/4CisHG3UU0 S6jf+bYmCGiysZ+RTWwCQ8u+mv8AZ0uGslwrqFhBeYxF7RABBbeljfp8/6JdCqod U5LEy1epE3b+JDDteRmuSmuVNT5MoGdvTVPGiMoPYTB+RrW9swYTiDXZirTkl40a VN+eoE5vM/MIHDkuqFB3bTI25FR9EpEJsk4Ks8/9QCkawWqNX7TrEFMZ0G+4nB6h Nkyj8BJ1IO5ZaWPVau2R3ue+YRTVmra1A7QKe1GIGI2yE17cLlQ= =m3Sf -----END PGP SIGNATURE----- --Apple-Mail=_9212D75F-A6BB-4A77-AC89-07227C83FE92-- From owner-dev-commits-src-all@freebsd.org Fri Jun 18 16:06:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9CF58648B69; Fri, 18 Jun 2021 16:06:16 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: from mail-io1-xd2f.google.com (mail-io1-xd2f.google.com [IPv6:2607:f8b0:4864:20::d2f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G63gr3kz2z4tD9; Fri, 18 Jun 2021 16:06:16 +0000 (UTC) (envelope-from chmeeedalf@gmail.com) Received: by mail-io1-xd2f.google.com with SMTP id a6so7622241ioe.0; Fri, 18 Jun 2021 09:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:message-id:in-reply-to:references:subject :mime-version:content-transfer-encoding; bh=GQIk09R6dj22GX6+uPHxfLK9T5i2qLw7chdjNi3SON0=; b=Obdohgm3BfePFGBoI2W/jd37gjiCR9TUHELDohnIkYr2JxcjnzHK5UwRyf6bC8s1mZ GAhHfzOb6+CpayfPyOhbu+YwMbYfHDSuHlgmnyoFJFAViGJ0ZKiIU7TWIwLjJKqTrLBj ggDF9eGtXL5YQpLUkioznM4vFnkqvoUUZ13ztyNVVcBrJFReR9xOyXohhfgy8zt8NyzU f+cYT3z8XE7H/daCuj5/dEYCYpk/KE0+GG/sWM4EhvKmMCIs6s9R8H0CEZpfuc5u+bN4 T/YiCg5M6cGlbgf3ccFqMSdBlW/YLtNZPwzqdbCiPrPWSaAmxPEr8DpCiaxYxXk+/bgR DTDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:message-id:in-reply-to :references:subject:mime-version:content-transfer-encoding; bh=GQIk09R6dj22GX6+uPHxfLK9T5i2qLw7chdjNi3SON0=; b=IylLQnNQntMBio/FZ8JAkdkkNL1dm/nMVvGWD2kvbnIkoRjamlOGMU4h4CusrDg3RQ W11I9jricB7nppxMfQH0zav6vDO8/KXDy1i3UzS1MwoYijubTvFEqvDw0Pd10BCHC4Ph TNvi5iEzP82Ya7Pj5cwntCg4zRwBRRLpW8WoRXtAGMqPj3+ntWjE/cia3Krf9B+Gr/DT y6P34TaVz92PAa0AUQNF2HX5vi78SLtPi3xtAvTFjp8KN/b3iNJcSKAjWM3sSlqaVcp/ vZIR8yCwaJow6RT4hiLirmAQlXzPLc0q5htOoLB6LiHl6sTUvAK8hY654rBtFjBbRDil oAfQ== X-Gm-Message-State: AOAM531cVmnCjaribp3idUSj0oFDYh2AhkzDiyt0h7kQc6Nhok9uCMnk 2brwGDFSTZLDPQtlRXN8H+DDM6WqJVmhDQ== X-Google-Smtp-Source: ABdhPJxIelFi+7+xD/m04ADuXJlMi4XadR2EIkVKU4N4BmHex+L2Py35VyE+PA+/dH1/AE+EHtug7w== X-Received: by 2002:a05:6602:722:: with SMTP id g2mr8512110iox.118.1624032374861; Fri, 18 Jun 2021 09:06:14 -0700 (PDT) Received: from [127.0.0.1] (173-18-9-215.client.mchsi.com. [173.18.9.215]) by smtp.gmail.com with ESMTPSA id j8sm636911ilq.34.2021.06.18.09.06.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 18 Jun 2021 09:06:14 -0700 (PDT) Date: Fri, 18 Jun 2021 16:06:12 +0000 (UTC) From: Justin Hibbits To: Ceri Davies Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Message-ID: <75096289-7f26-4808-ae70-088dcc578c34@gmail.com> In-Reply-To: <202106181430.15IEUSel092505@gitrepo.freebsd.org> References: <202106181430.15IEUSel092505@gitrepo.freebsd.org> Subject: Re: git: c43b0081faab - main - devmatch: improve naming of devmatch config variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Correlation-ID: <75096289-7f26-4808-ae70-088dcc578c34@gmail.com> X-Rspamd-Queue-Id: 4G63gr3kz2z4tD9 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 16:06:16 -0000 Is there a reason, other than Wokification? Jun 18, 2021 09:30:33 Ceri Davies : > The branch main has been updated by ceri (doc committer): >=20 > URL: https://cgit.FreeBSD.org/src/commit/?id=3Dc43b0081faab742eb93c3d064b= 552b65f926b86e >=20 > commit c43b0081faab742eb93c3d064b552b65f926b86e > Author:=C2=A0=C2=A0=C2=A0=C2=A0 Ceri Davies > AuthorDate: 2021-06-18 12:17:30 +0000 > Commit:=C2=A0=C2=A0=C2=A0=C2=A0 Ceri Davies > CommitDate: 2021-06-18 12:17:30 +0000 >=20 > =C2=A0=C2=A0=C2=A0 devmatch: improve naming of devmatch config variable > =C2=A0=C2=A0=C2=A0 > =C2=A0=C2=A0=C2=A0 Accept the old rc.conf variable if the new one is not = present for > =C2=A0=C2=A0=C2=A0 compatability. > =C2=A0=C2=A0=C2=A0 > =C2=A0=C2=A0=C2=A0 Approved by:=C2=A0=C2=A0=C2=A0 imp > =C2=A0=C2=A0=C2=A0 Differential Revision:=C2=A0 https://reviews.freebsd.o= rg/D30806 > --- > libexec/rc/rc.conf=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +- > libexec/rc/rc.d/devmatch |=C2=A0 4 ++-- > share/man/man5/rc.conf.5 | 10 +++++++++- > 3 files changed, 12 insertions(+), 4 deletions(-) >=20 > diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf > index 041d4b6b5321..9fdc4d9d8636 100644 > --- a/libexec/rc/rc.conf > +++ b/libexec/rc/rc.conf > @@ -45,7 +45,7 @@ ddb_config=3D"/etc/ddb.conf"=C2=A0 # ddb(8) config file= . > devd_enable=3D"YES"=C2=A0 # Run devd, to trigger programs on device tree = changes. > devd_flags=3D""=C2=A0=C2=A0=C2=A0 # Additional flags for devd(8). > devmatch_enable=3D"YES"=C2=A0 # Demand load kernel modules based on devic= e ids. > -devmatch_blacklist=3D""=C2=A0 # List of modules (w/o .ko) to exclude fro= m devmatch. > +devmatch_blocklist=3D""=C2=A0 # List of modules (w/o .ko) to exclude fro= m devmatch. > #kld_list=3D""=C2=A0=C2=A0=C2=A0=C2=A0 # Kernel modules to load after loc= al disks are mounted > kldxref_enable=3D"YES" # Build linker.hints files with kldxref(8). > kldxref_clobber=3D"NO" # Overwrite old linker.hints at boot. > diff --git a/libexec/rc/rc.d/devmatch b/libexec/rc/rc.d/devmatch > index 491bc94c4a16..0b2e3719dabb 100755 > --- a/libexec/rc/rc.d/devmatch > +++ b/libexec/rc/rc.d/devmatch > @@ -59,9 +59,9 @@ devmatch_start() > =C2=A0 # or drivers that have symbolic links that > =C2=A0 # confuse devmatch by running it -n. > =C2=A0 # Finally, we filter out all items in the > - # devmactch_blacklist. > + # devmatch_blocklist. > =C2=A0 devctl freeze > - x=3D$(echo ${devmatch_blacklist} | tr ' ' '#') > + x=3D$(echo ${devmatch_blocklist:-${devmatch_blacklist}} | tr ' ' '#') > =C2=A0 for m in ${list}; do > =C2=A0=C2=A0=C2=A0 case "#${x}#" in > =C2=A0=C2=A0=C2=A0 *"#${m}#"*) continue ;; > diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 > index 95fa8bce4dc0..bf9289f30417 100644 > --- a/share/man/man5/rc.conf.5 > +++ b/share/man/man5/rc.conf.5 > @@ -24,7 +24,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd May 13, 2021 > +.Dd June 18, 2021 > .Dt RC.CONF 5 > .Os > .Sh NAME > @@ -257,8 +257,16 @@ If set to > .Dq Li NO , > disable auto-loading of kernel modules with > .Xr devmatch 8 . > +.It Va devmatch_blocklist > +.Pq Vt str > +A whitespace-separated list of kernel modules to be ignored by > +.Xr devmatch 8 . > .It Va devmatch_blacklist > .Pq Vt str > +This variable is deprecated. > +Use > +.Va devmatch_blocklist > +instead. > A whitespace-separated list of kernel modules to be ignored by > .Xr devmatch 8 . > .It Va kld_list From owner-dev-commits-src-all@freebsd.org Fri Jun 18 16:12:23 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9C3D5648AF8; Fri, 18 Jun 2021 16:12:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G63pv45vRz4tjQ; Fri, 18 Jun 2021 16:12:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7598125D9A; Fri, 18 Jun 2021 16:12:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IGCNTC027543; Fri, 18 Jun 2021 16:12:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IGCNi5027542; Fri, 18 Jun 2021 16:12:23 GMT (envelope-from git) Date: Fri, 18 Jun 2021 16:12:23 GMT Message-Id: <202106181612.15IGCNi5027542@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mariusz Zaborski Subject: git: bfb5947bb1e9 - main - sockstat: fix core dump MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bfb5947bb1e92b08b07a817bd9d8e7f438115e8a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 16:12:23 -0000 The branch main has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=bfb5947bb1e92b08b07a817bd9d8e7f438115e8a commit bfb5947bb1e92b08b07a817bd9d8e7f438115e8a Author: Mariusz Zaborski AuthorDate: 2021-06-18 16:03:16 +0000 Commit: Mariusz Zaborski CommitDate: 2021-06-18 16:05:14 +0000 sockstat: fix core dump The get_proto_type function is used before creating the Casper function. This is why we have to distinguish when the Casper service is allocated or not. Reported by: olivier@ Tested by: olivier@ --- usr.bin/sockstat/sockstat.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/usr.bin/sockstat/sockstat.c b/usr.bin/sockstat/sockstat.c index 7dc5e4904deb..285889a07b7b 100644 --- a/usr.bin/sockstat/sockstat.c +++ b/usr.bin/sockstat/sockstat.c @@ -163,7 +163,10 @@ get_proto_type(const char *proto) if (strlen(proto) == 0) return (0); - pent = cap_getprotobyname(capnetdb, proto); + if (capnetdb != NULL) + pent = cap_getprotobyname(capnetdb, proto); + else + pent = getprotobyname(proto); if (pent == NULL) { warn("cap_getprotobyname"); return (-1); From owner-dev-commits-src-all@freebsd.org Fri Jun 18 16:12:24 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BE836649482; Fri, 18 Jun 2021 16:12:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G63pw533tz4tlm; Fri, 18 Jun 2021 16:12:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 888D4259FB; Fri, 18 Jun 2021 16:12:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IGCOiL027989; Fri, 18 Jun 2021 16:12:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IGCOH0027975; Fri, 18 Jun 2021 16:12:24 GMT (envelope-from git) Date: Fri, 18 Jun 2021 16:12:24 GMT Message-Id: <202106181612.15IGCOH0027975@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mariusz Zaborski Subject: git: 7ad30f58dd63 - main - sockstat: use cap_pwd MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: oshogbo X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7ad30f58dd63bfabfdf34f6ea93ab270fde8de36 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 16:12:24 -0000 The branch main has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=7ad30f58dd63bfabfdf34f6ea93ab270fde8de36 commit 7ad30f58dd63bfabfdf34f6ea93ab270fde8de36 Author: Mariusz Zaborski AuthorDate: 2021-06-18 16:06:03 +0000 Commit: Mariusz Zaborski CommitDate: 2021-06-18 16:08:30 +0000 sockstat: use cap_pwd The sockstat is using password database operations to obtain the username. Such operations are disallowed in capability mode. For such operations Casper is required. Reported by: olivier@ Tested by: olivier@ --- usr.bin/sockstat/Makefile | 1 + usr.bin/sockstat/sockstat.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/usr.bin/sockstat/Makefile b/usr.bin/sockstat/Makefile index 6d0de7dc22d0..bf1cd0b9a443 100644 --- a/usr.bin/sockstat/Makefile +++ b/usr.bin/sockstat/Makefile @@ -10,6 +10,7 @@ LIBADD= jail LIBADD+= casper LIBADD+= cap_net LIBADD+= cap_netdb +LIBADD+= cap_pwd LIBADD+= cap_sysctl CFLAGS+= -DWITH_CASPER .endif diff --git a/usr.bin/sockstat/sockstat.c b/usr.bin/sockstat/sockstat.c index 285889a07b7b..5318a43f8585 100644 --- a/usr.bin/sockstat/sockstat.c +++ b/usr.bin/sockstat/sockstat.c @@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #define sstosin(ss) ((struct sockaddr_in *)(ss)) @@ -141,6 +142,7 @@ static int nxfiles; static cap_channel_t *capnet; static cap_channel_t *capnetdb; static cap_channel_t *capsysctl; +static cap_channel_t *cappwd; static int xprintf(const char *fmt, ...) @@ -1215,7 +1217,7 @@ display(void) printf(" %-.*s", TCP_CA_NAME_MAX, "CC"); printf("\n"); } - setpassent(1); + cap_setpassent(cappwd, 1); for (xf = xfiles, n = 0; n < nxfiles; ++n, ++xf) { if (xf->xf_data == 0) continue; @@ -1229,7 +1231,8 @@ display(void) continue; s->shown = 1; pos = 0; - if (opt_n || (pwd = getpwuid(xf->xf_uid)) == NULL) + if (opt_n || + (pwd = cap_getpwuid(cappwd, xf->xf_uid)) == NULL) pos += xprintf("%lu ", (u_long)xf->xf_uid); else pos += xprintf("%s ", pwd->pw_name); @@ -1326,6 +1329,8 @@ main(int argc, char *argv[]) { cap_channel_t *capcas; cap_net_limit_t *limit; + const char *pwdcmds[] = { "setpassent", "getpwuid" }; + const char *pwdfields[] = { "pw_name" }; int protos_defined = -1; int o, i; @@ -1424,12 +1429,19 @@ main(int argc, char *argv[]) capsysctl = cap_service_open(capcas, "system.sysctl"); if (capsysctl == NULL) err(1, "Unable to open system.sysctl service"); + cappwd = cap_service_open(capcas, "system.pwd"); + if (cappwd == NULL) + err(1, "Unable to open system.pwd service"); cap_close(capcas); limit = cap_net_limit_init(capnet, CAPNET_ADDR2NAME); if (limit == NULL) err(1, "Unable to init cap_net limits"); if (cap_net_limit(limit) < 0) err(1, "Unable to apply limits"); + if (cap_pwd_limit_cmds(cappwd, pwdcmds, nitems(pwdcmds)) < 0) + err(1, "Unable to apply pwd commands limits"); + if (cap_pwd_limit_fields(cappwd, pwdfields, nitems(pwdfields)) < 0) + err(1, "Unable to apply pwd commands limits"); if ((!opt_4 && !opt_6) && protos_defined != -1) opt_4 = opt_6 = 1; From owner-dev-commits-src-all@freebsd.org Fri Jun 18 16:34:08 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EC009649626; Fri, 18 Jun 2021 16:34:08 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G64J063Hpz4xKh; Fri, 18 Jun 2021 16:34:08 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) (Authenticated sender: kevans) by smtp.freebsd.org (Postfix) with ESMTPSA id B39742D519; Fri, 18 Jun 2021 16:34:08 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qk1-f172.google.com with SMTP id 3so2749901qks.8; Fri, 18 Jun 2021 09:34:08 -0700 (PDT) X-Gm-Message-State: AOAM531hbi7qGXm+Ol6p6a5/36S2Rv86j5QddI45S2vm9Ht0M3P1I3kN yU0X6JGE+BtxoQxP17N0Q8Lyc03fsBMi5rpVUoI= X-Google-Smtp-Source: ABdhPJwCvVrm4Zl8hdmROnS88lhqtjn1/m8k4tk2sYOyaWleyLlkRIa8W8IJoFABjDfu5M7xYNrahokEckTHoy+c7sU= X-Received: by 2002:a05:620a:1987:: with SMTP id bm7mr10471305qkb.120.1624034048290; Fri, 18 Jun 2021 09:34:08 -0700 (PDT) MIME-Version: 1.0 References: <202106181430.15IEUTUD092529@gitrepo.freebsd.org> In-Reply-To: <202106181430.15IEUTUD092529@gitrepo.freebsd.org> From: Kyle Evans Date: Fri, 18 Jun 2021 09:33:57 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: git: 64e6e1e46363 - main - secure/caroot, certctl: Rename secure/caroot/blacklisted To: Ceri Davies Cc: src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 16:34:09 -0000 On Fri, Jun 18, 2021 at 7:30 AM Ceri Davies wrote: > > The branch main has been updated by ceri (doc committer): > > URL: https://cgit.FreeBSD.org/src/commit/?id=64e6e1e46363de5d4843cf0fc79406060ec44c03 > > commit 64e6e1e46363de5d4843cf0fc79406060ec44c03 > Author: Ceri Davies > AuthorDate: 2021-06-18 12:29:15 +0000 > Commit: Ceri Davies > CommitDate: 2021-06-18 12:38:07 +0000 > > secure/caroot, certctl: Rename secure/caroot/blacklisted > > Old certctl commands still work for compatability, but are deprecated. > > Approved by: secteam (gordon) > Differential Revision: https://reviews.freebsd.org/D30807 This is a huge logistical nightmare, and I really wish I would have been included on this review as the effective maintainer of this area. The tree isn't the only producer of these, we have third party trusted/untrusted certs to take into consideration and you've effectively stopped taking them into consideration with insufficient warning (UPDATING alone isn't enough). Thanks, Kyle Evans From owner-dev-commits-src-all@freebsd.org Fri Jun 18 16:47:48 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EF8F1649578; Fri, 18 Jun 2021 16:47:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G64bm6KKNz50WN; Fri, 18 Jun 2021 16:47:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C0B19262CA; Fri, 18 Jun 2021 16:47:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IGlm1O070451; Fri, 18 Jun 2021 16:47:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IGlm1I070450; Fri, 18 Jun 2021 16:47:48 GMT (envelope-from git) Date: Fri, 18 Jun 2021 16:47:48 GMT Message-Id: <202106181647.15IGlm1I070450@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jamie Gritton Subject: git: 5bf6dca2c6db - main - jail: Don't allow substitution of valueless jail parameters. PR: 256544 Reported by: cryptogranny at gmail.com MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jamie X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5bf6dca2c6dbf63d382e97905e205ded3e8525d2 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 16:47:49 -0000 The branch main has been updated by jamie: URL: https://cgit.FreeBSD.org/src/commit/?id=5bf6dca2c6dbf63d382e97905e205ded3e8525d2 commit 5bf6dca2c6dbf63d382e97905e205ded3e8525d2 Author: Jamie Gritton AuthorDate: 2021-06-18 16:44:37 +0000 Commit: Jamie Gritton CommitDate: 2021-06-18 16:44:37 +0000 jail: Don't allow substitution of valueless jail parameters. PR: 256544 Reported by: cryptogranny at gmail.com --- usr.sbin/jail/config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/jail/config.c b/usr.sbin/jail/config.c index e6ebc585bcd7..4cf28820452a 100644 --- a/usr.sbin/jail/config.c +++ b/usr.sbin/jail/config.c @@ -198,7 +198,7 @@ load_config(void) TAILQ_FOREACH(vp, &j->params, tq) if (!strcmp(vp->name, v->name)) break; - if (!vp) { + if (!vp || TAILQ_EMPTY(&vp->val)) { jail_warnx(j, "%s: variable \"%s\" not found", p->name, v->name); From owner-dev-commits-src-all@freebsd.org Fri Jun 18 16:49:49 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 283F4649E07; Fri, 18 Jun 2021 16:49:49 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G64f50jtfz50Tb; Fri, 18 Jun 2021 16:49:49 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from John-Baldwins-MacBook-Pro.local (ralph.baldwin.cx [66.234.199.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: jhb) by smtp.freebsd.org (Postfix) with ESMTPSA id 6EC342D520; Fri, 18 Jun 2021 16:49:48 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) To: Eugene Grosbein , Warner Losh , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> <7c4c7acc-1fe4-28e4-4e1c-c08912eb0f99@grosbein.net> From: John Baldwin Message-ID: Date: Fri, 18 Jun 2021 09:49:46 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <7c4c7acc-1fe4-28e4-4e1c-c08912eb0f99@grosbein.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 16:49:49 -0000 On 6/18/21 8:32 AM, Eugene Grosbein wrote: > 18.06.2021 22:18, John Baldwin wrote: > >> OTOH, it's >> also true that there's no real reason for anything outside of the actual timer >> code to use stathz (or even profhz) unlike 'hz' which is still used to set >> timeout tick values. > > Not agreed: how do I get reliable per-CPU load stats in userland without sysctl kern.cp_times > that exports incrementing raw "stathz-tick" counters? I need them to draw per-CPU graphs. Hmm, I guess userland needs the resolution of the values in the sysctls, yes. To be clear, I was not at all saying that cp_times should be removed, only that very little code in the kernel needs to use the literal C symbol 'stathz' compared to the C symbol 'hz'. -- John Baldwin From owner-dev-commits-src-all@freebsd.org Fri Jun 18 17:38:23 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 49B3264AB09 for ; Fri, 18 Jun 2021 17:38:23 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G65k71HFhz53YB for ; Fri, 18 Jun 2021 17:38:23 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-pj1-x102f.google.com with SMTP id x21-20020a17090aa395b029016e25313bfcso6281476pjp.2 for ; Fri, 18 Jun 2021 10:38:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=/TmL3cJc5gaxXLCpOGdyFevVyU6FzaVVN+B07gv4+C8=; b=lppIerJTQvm7+o4AjwShatcUiaO+Qjw83c0hswfZQhysXwksArVUg39cUXu1xF8KkZ AG2LIZHaehDBixH4acaBla7khhY5LxSrM5gPzcF3cdda3MWU8ZrYrD3qs8zdYo9MhBhQ apPzvgLBy3pFcDzEcEE6vG+UeR17+LOhWu+XVp5JNDQVuQ/56Jsv/HZFcVvIpqMoMqOw gMvILNjuDqGpWy8l5LLgQ8z4htGzT5bB965MmYA7j5xg1Yzsovkf5whrIl8ZCTcU4B+f nVCT2pxeZ6tgTnONPhoFLfd6Bm82DgpbIUGndRYZl7KBwOhNQwFjphDacOzrSjWYtprA CVGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=/TmL3cJc5gaxXLCpOGdyFevVyU6FzaVVN+B07gv4+C8=; b=GpKxHyuk/4ZMDsrCrZP52BTUdRHMVfVheZHRqj214vYRFYTRqzvuNLa7OUJmR7dntp ltX2pKcQ3u0ilxvOSnZv44yBbbtdLI3YqF62KUyQEX+ZShbx65Er09gg/eXA+7jxIYwF lgg/g31tRcaEmSqnicLycjG8IuJ9RXRs4+maaJE+zKx7ySpwQZFts55TsCiBFBV95x75 fWJ5c2ik/V59DbduxYx9PocQUCvlVHyyF/LuamTFk7X+ajmi5elNmiZyhskzydJVlfR0 0eOmWo6QKxx5rF00M5I1LncXEYEVhU7GzDQCvyWtOukDrDTIBt6Ah6w1j5GfyXU3nyFN nBFw== X-Gm-Message-State: AOAM5323slVNGFnjuidQLw6le2SsdIJ/fuqCgGxHSLiOHtYR5t3s6MqV Z/0/TLJaZ4LAVkbkA9Y0KlgwqA== X-Google-Smtp-Source: ABdhPJwTSy8utW/2tkKuyrp9C+v/oOeBfXba5hOXE2jeTV6TA+QUrzNWeudltwLX7iuBk7FrTKtagQ== X-Received: by 2002:a17:902:8493:b029:11a:faa6:5bf6 with SMTP id c19-20020a1709028493b029011afaa65bf6mr5777276plo.42.1624037901475; Fri, 18 Jun 2021 10:38:21 -0700 (PDT) Received: from ?IPv6:2603:300b:6:5100:65b4:c20:23f8:202e? ([2603:300b:6:5100:65b4:c20:23f8:202e]) by smtp.gmail.com with ESMTPSA id w2sm8498328pjq.5.2021.06.18.10.38.20 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Jun 2021 10:38:20 -0700 (PDT) From: Warner Losh Message-Id: Content-Type: multipart/signed; boundary="Apple-Mail=_7F3B6E86-AF9B-4B29-9A5F-96E9AF7B76E6"; protocol="application/pgp-signature"; micalg=pgp-sha512 Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.4\)) Subject: Re: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) Date: Fri, 18 Jun 2021 11:38:18 -0600 In-Reply-To: Cc: Eugene Grosbein , Warner Losh , "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: John Baldwin References: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> <10df4ab6-bee0-58f5-7d42-92850d526e01@FreeBSD.org> <7c4c7acc-1fe4-28e4-4e1c-c08912eb0f99@grosbein.net> X-Mailer: Apple Mail (2.3608.120.23.2.4) X-Rspamd-Queue-Id: 4G65k71HFhz53YB X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 17:38:23 -0000 --Apple-Mail=_7F3B6E86-AF9B-4B29-9A5F-96E9AF7B76E6 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Jun 18, 2021, at 10:49 AM, John Baldwin wrote: >=20 > On 6/18/21 8:32 AM, Eugene Grosbein wrote: >> 18.06.2021 22:18, John Baldwin wrote: >>> OTOH, it's >>> also true that there's no real reason for anything outside of the = actual timer >>> code to use stathz (or even profhz) unlike 'hz' which is still used = to set >>> timeout tick values. >> Not agreed: how do I get reliable per-CPU load stats in userland = without sysctl kern.cp_times >> that exports incrementing raw "stathz-tick" counters? I need them to = draw per-CPU graphs. >=20 > Hmm, I guess userland needs the resolution of the values in the = sysctls, yes. > To be clear, I was not at all saying that cp_times should be removed, = only that > very little code in the kernel needs to use the literal C symbol = 'stathz' compared > to the C symbol 'hz=E2=80=99. There is some code, so I=E2=80=99ll leave it in the man page, but remove = the deprecated comment. I=E2=80=99ve told jhb@ this already, but I=E2=80=99ve started = https://reviews.freebsd.org/D30815 to fix things. Warner --Apple-Mail=_7F3B6E86-AF9B-4B29-9A5F-96E9AF7B76E6 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIzBAEBCgAdFiEEIDX4lLAKo898zeG3bBzRKH2wEQAFAmDM2goACgkQbBzRKH2w EQCdsQ//WTwkB7aCzMgOH1IZIpZ/416QkKWmq1C9seRnNBrB5c0PdFlpaPtEqRCx rZklA58HtL+meWvb9chrBH1CK3+LHDATPc1LeiVnjYAlci7rKqtQfUo7TFhwrEaH l7x/S/t1Rj+i1DcgYITY8DdVhoT0ZlAMW82jXcgrO1DxWlkaEmCDkt8sN8wZmVzb Cf8Z+VtdRzV9CwSYyObZiluG51kSW/IhJXl6eLEAPkMEWEFdDTxxGbMk++AWhu+v APkSFyFrAm1+giXHe+GUPn7bl/dZj0kkf4sXgugkznA4CFMJeEOcKaguNF+0NaPo 6B4gz7EkyeTRpR5HnxGl61zDZ7scgzXqI9BTu9C4JT/2AnpZBo+pogKvyZXnuuPP tqdOAGA/yrNJwrqj/dmrQ9FE7dZ20UWLLcOe239mwfV44rcE/prixoVvD7DBlmLc GpdGiyHsVES3wFNcb1IBLmvknF6u3OI765sh+1bCAtsszg1CjxP34lP8KkLa11DT 8onTdKyapjEpY/K8YByot8GVQJ8W+wy+wcYogvCmP0SCMGw14RvJDCGfXdtkBlSu Hm/1nsTkpvY1HqG8+Aoufb4wcUZHG+uV55NrJ2InBiTcThb9LJ/VmhxFdN4MJuxj NA/XZWP3/sA9IiX64LfiXy8RveDjKKPAF1SYc3SXCG8LaS8tfDM= =IDbK -----END PGP SIGNATURE----- --Apple-Mail=_7F3B6E86-AF9B-4B29-9A5F-96E9AF7B76E6-- From owner-dev-commits-src-all@freebsd.org Fri Jun 18 18:04:12 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A451E64B106; Fri, 18 Jun 2021 18:04:12 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4G66Hw26mCz5523; Fri, 18 Jun 2021 18:04:12 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.16.1/8.16.1) with ESMTPS id 15II44B7087220 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Fri, 18 Jun 2021 21:04:07 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 15II44B7087220 Received: (from kostik@localhost) by tom.home (8.16.1/8.16.1/Submit) id 15II44xA087219; Fri, 18 Jun 2021 21:04:04 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 18 Jun 2021 21:04:04 +0300 From: Konstantin Belousov To: Warner Losh Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 4c0bc591466f - main - man9: add hz(9) and hardclock(9) Message-ID: References: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202106181443.15IEhn4t010735@gitrepo.freebsd.org> X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.5 X-Spam-Checker-Version: SpamAssassin 3.4.5 (2021-03-20) on tom.home X-Rspamd-Queue-Id: 4G66Hw26mCz5523 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 18:04:12 -0000 On Fri, Jun 18, 2021 at 02:43:49PM +0000, Warner Losh wrote: > The branch main has been updated by imp: > > URL: https://cgit.FreeBSD.org/src/commit/?id=4c0bc591466fd2731ba892269260b7dab74cfbad > +.Sh DESCRIPTION > +The > +.Fn hardclock > +function is called > +.Xr hz 9 > +times per second. This is not true, I believe. > +It implements the real-time system clock. > +The argument > +.Va cnt > +is the estimated number of ticks since the last call to > +.Fn hardclock . This is more accurate. > +The argument > +.Va usermode > +is none-zero when > +.Fn hardclock > +is called from a user-mode context. hardclock() is never called from user-mode context, it is a kernel function. Perhaps you mean to say that hardclock() is executing in the context of the handler that interrupted usermode. > +Implement software > +.Xr watchdog 9 > +processing. > +.It > +Enqueue > +.Xr epoch 9 > +processing. > +.El > +.Sh SEE ALSO > +.Xr adjtime 2 , > +.Xr ntp_adjtime 2 , > +.Xr signal 3 , > +.Xr ntpd 8 , > +.Xr callout 9 , Callout processing is not handled by hardclock(). It is done directly by timer eventhandler. > +.Pp > +The main clock is used to update the system's notion of time via > +.Xr timecounters 9 > +and to pace periodic system callbacks via > +.Xr callout 9 , > +.Xr epoch 9 , > +and other methods documented in > +.Xr hardclock 9 . Again, callouts are not managed through hardclock(). > +That routine will be called approximately > +.Va hz > +times per second. And this is not true. > +.Pp > +The second clock, running at either From owner-dev-commits-src-all@freebsd.org Fri Jun 18 19:10:38 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C70D464BC06 for ; Fri, 18 Jun 2021 19:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G67mZ4mXZz59DR; Fri, 18 Jun 2021 19:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8C43D215; Fri, 18 Jun 2021 19:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IJAcx2065179; Fri, 18 Jun 2021 19:10:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IJAcpA065178; Fri, 18 Jun 2021 19:10:38 GMT (envelope-from git) Date: Fri, 18 Jun 2021 19:10:38 GMT Message-Id: <202106181910.15IJAcpA065178@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Dimitry Andric Subject: git: 963eb291031b - Create tag llvmorg-12.0.1-rc2-0-ge7dac564cd0e MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/tags/llvmorg-12.0.1-rc2-0-ge7dac564cd0e X-Git-Reftype: annotated tag X-Git-Commit: 963eb291031bfbf71a4fe715cf267fed4716e5e6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 19:10:38 -0000 The annotated tag llvmorg-12.0.1-rc2-0-ge7dac564cd0e has been created by dim: URL: https://cgit.FreeBSD.org/src/tag/?h=llvmorg-12.0.1-rc2-0-ge7dac564cd0e tag llvmorg-12.0.1-rc2-0-ge7dac564cd0e Tagger: Dimitry Andric TaggerDate: 2021-06-18 19:09:03 +0000 Tag llvm-project branch release/12.x llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. commit e4bbddaec8689e1b24f25e88958bea700e989542 Author: Dimitry Andric AuthorDate: 2021-06-18 19:08:25 +0000 Commit: Dimitry Andric CommitDate: 2021-06-18 19:08:25 +0000 Vendor import of llvm-project branch release/12.x llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. From owner-dev-commits-src-all@freebsd.org Fri Jun 18 19:10:38 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C735264B62F for ; Fri, 18 Jun 2021 19:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G67mZ4XXsz59JG; Fri, 18 Jun 2021 19:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7A66A214; Fri, 18 Jun 2021 19:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IJActO065155; Fri, 18 Jun 2021 19:10:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IJAcGd065154; Fri, 18 Jun 2021 19:10:38 GMT (envelope-from git) Date: Fri, 18 Jun 2021 19:10:38 GMT Message-Id: <202106181910.15IJAcGd065154@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Dimitry Andric Subject: git: b4125f7d51da..e4bbddaec868 - vendor/llvm-project/release-12.x - vendor branch updated MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/vendor/llvm-project/release-12.x X-Git-Reftype: branch X-Git-Commit: e4bbddaec8689e1b24f25e88958bea700e989542 X-Git-Oldrev: b4125f7d51da2bb55d3b850dba9a69c201c3422c X-Git-Newrev: e4bbddaec8689e1b24f25e88958bea700e989542 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 19:10:38 -0000 The branch vendor/llvm-project/release-12.x has been updated by dim: URL: https://cgit.FreeBSD.org/src/log/?id=b4125f7d51da..e4bbddaec868 e4bbddaec868 Vendor import of llvm-project branch release/12.x llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:01 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A318964DB88; Fri, 18 Jun 2021 21:49:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHK426Qz3MsK; Fri, 18 Jun 2021 21:49:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6EFE4239E; Fri, 18 Jun 2021 21:49:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn1J2069094; Fri, 18 Jun 2021 21:49:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn1qF069093; Fri, 18 Jun 2021 21:49:01 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:01 GMT Message-Id: <202106182149.15ILn1qF069093@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 801cf532e70f - main - LinuxKPI: add KPI for netdev_notifier_info returning ifp MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 801cf532e70f6b0ebfb2d536b235f166b2e6f0a4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:01 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=801cf532e70f6b0ebfb2d536b235f166b2e6f0a4 commit 801cf532e70f6b0ebfb2d536b235f166b2e6f0a4 Author: Bjoern A. Zeeb AuthorDate: 2021-05-28 12:44:16 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 17:55:30 +0000 LinuxKPI: add KPI for netdev_notifier_info returning ifp While currently the ifp gets cast to a net_device and then returned and consumers are expecting an ifp again, allow parallel usage now and in the future by extending and also passing the ifp directly back in the netdev_notifier_info. Add a function to return the ifp instead of the net_device. Sponsored by: The FreeBSD Foundation MFC after: 10 days Suggested by: hselasky Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30522 --- sys/compat/linuxkpi/common/include/linux/netdevice.h | 7 +++++++ sys/compat/linuxkpi/common/src/linux_compat.c | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/netdevice.h b/sys/compat/linuxkpi/common/include/linux/netdevice.h index faff2fde5f32..1de31b3fa156 100644 --- a/sys/compat/linuxkpi/common/include/linux/netdevice.h +++ b/sys/compat/linuxkpi/common/include/linux/netdevice.h @@ -59,6 +59,7 @@ /* According to linux::ipoib_main.c. */ struct netdev_notifier_info { struct net_device *dev; + struct ifnet *ifp; }; static inline struct net_device * @@ -67,6 +68,12 @@ netdev_notifier_info_to_dev(struct netdev_notifier_info *ni) return (ni->dev); } +static inline struct ifnet * +netdev_notifier_info_to_ifp(struct netdev_notifier_info *ni) +{ + return (ni->ifp); +} + int register_netdevice_notifier(struct notifier_block *); int register_inetaddr_notifier(struct notifier_block *); int unregister_netdevice_notifier(struct notifier_block *); diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c index ef570dda542c..d4571173f93d 100644 --- a/sys/compat/linuxkpi/common/src/linux_compat.c +++ b/sys/compat/linuxkpi/common/src/linux_compat.c @@ -2315,6 +2315,7 @@ linux_handle_ifnet_link_event(void *arg, struct ifnet *ifp, int linkstate) struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; if (linkstate == LINK_STATE_UP) nb->notifier_call(nb, NETDEV_UP, &ni); @@ -2329,6 +2330,7 @@ linux_handle_ifnet_arrival_event(void *arg, struct ifnet *ifp) struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_REGISTER, &ni); } @@ -2340,6 +2342,7 @@ linux_handle_ifnet_departure_event(void *arg, struct ifnet *ifp) struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_UNREGISTER, &ni); } @@ -2351,6 +2354,7 @@ linux_handle_iflladdr_event(void *arg, struct ifnet *ifp) struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_CHANGEADDR, &ni); } @@ -2362,6 +2366,7 @@ linux_handle_ifaddr_event(void *arg, struct ifnet *ifp) struct netdev_notifier_info ni; nb = arg; + ni.ifp = ifp; ni.dev = (struct net_device *)ifp; nb->notifier_call(nb, NETDEV_CHANGEIFADDR, &ni); } From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:02 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C655164D836; Fri, 18 Jun 2021 21:49:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHL528cz3MkM; Fri, 18 Jun 2021 21:49:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 96057242B; Fri, 18 Jun 2021 21:49:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn2xl069118; Fri, 18 Jun 2021 21:49:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn2BH069117; Fri, 18 Jun 2021 21:49:02 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:02 GMT Message-Id: <202106182149.15ILn2BH069117@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 1411f52facc2 - main - mlx4/OFED: replace the struct net_device with struct ifnet MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1411f52facc2b955584f2cb453b912a903e319ed Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:02 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=1411f52facc2b955584f2cb453b912a903e319ed commit 1411f52facc2b955584f2cb453b912a903e319ed Author: Bjoern A. Zeeb AuthorDate: 2021-06-04 15:36:08 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:08 +0000 mlx4/OFED: replace the struct net_device with struct ifnet Given all the code does operate on struct ifnet, the last step in this longer series of changes now is to rename struct net_device to struct ifnet (that is what it was defined to in the LinuxKPi code). While mlx4 and OFED are "shared" code the decision was made years ago to not write it based on the netdevice KPI but the native ifnet KPI for most of it. This commit simply spells this out and with that frees "struct netdevice" to be re-done on LinuxKPI to become a more native/mixed implementation over time as needed by, e.g., wireless drivers. Sponsored by: The FreeBSD Foundation MFC after: 10 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30515 --- sys/dev/mlx4/mlx4_en/en.h | 30 ++++++------- sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c | 50 +++++++++++----------- sys/dev/mlx4/mlx4_en/mlx4_en_port.c | 4 +- sys/dev/mlx4/mlx4_en/mlx4_en_resources.c | 2 +- sys/dev/mlx4/mlx4_en/mlx4_en_rx.c | 6 +-- sys/dev/mlx4/mlx4_en/mlx4_en_tx.c | 6 +-- sys/dev/mlx4/mlx4_ib/mlx4_ib.h | 2 +- sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c | 22 +++++----- sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c | 2 +- sys/ofed/drivers/infiniband/core/core_priv.h | 10 ++--- sys/ofed/drivers/infiniband/core/ib_addr.c | 8 ++-- sys/ofed/drivers/infiniband/core/ib_cache.c | 16 +++---- sys/ofed/drivers/infiniband/core/ib_cm.c | 2 +- sys/ofed/drivers/infiniband/core/ib_cma.c | 44 +++++++++---------- sys/ofed/drivers/infiniband/core/ib_device.c | 10 ++--- sys/ofed/drivers/infiniband/core/ib_multicast.c | 2 +- .../drivers/infiniband/core/ib_roce_gid_mgmt.c | 24 +++++------ sys/ofed/drivers/infiniband/core/ib_sa_query.c | 6 +-- sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c | 14 +++--- sys/ofed/include/rdma/ib_addr.h | 12 +++--- sys/ofed/include/rdma/ib_cache.h | 4 +- sys/ofed/include/rdma/ib_sa.h | 4 +- sys/ofed/include/rdma/ib_verbs.h | 10 ++--- 23 files changed, 145 insertions(+), 145 deletions(-) diff --git a/sys/dev/mlx4/mlx4_en/en.h b/sys/dev/mlx4/mlx4_en/en.h index e63027bc9dc0..4a8b4fbd5fd4 100644 --- a/sys/dev/mlx4/mlx4_en/en.h +++ b/sys/dev/mlx4/mlx4_en/en.h @@ -385,7 +385,7 @@ struct mlx4_en_cq { struct mlx4_hwq_resources wqres; int ring; spinlock_t lock; - struct net_device *dev; + struct ifnet *dev; /* Per-core Tx cq processing support */ struct timer_list timer; int size; @@ -445,7 +445,7 @@ struct mlx4_en_dev { struct mlx4_dev *dev; struct pci_dev *pdev; struct mutex state_lock; - struct net_device *pndev[MLX4_MAX_PORTS + 1]; + struct ifnet *pndev[MLX4_MAX_PORTS + 1]; u32 port_cnt; bool device_up; struct mlx4_en_profile profile; @@ -536,7 +536,7 @@ struct en_port { struct mlx4_en_priv { struct mlx4_en_dev *mdev; struct mlx4_en_port_profile *prof; - struct net_device *dev; + struct ifnet *dev; unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)]; struct mlx4_en_port_state port_state; spinlock_t stats_lock; @@ -655,7 +655,7 @@ struct mlx4_mac_entry { }; static inline void * -netdev_priv(const struct net_device *dev) +netdev_priv(const struct ifnet *dev) { return (dev->if_softc); } @@ -709,7 +709,7 @@ static inline bool mlx4_en_cq_lock_poll(struct mlx4_en_cq *cq) int rc = true; spin_lock_bh(&cq->poll_lock); if ((cq->state & MLX4_CQ_LOCKED)) { - struct net_device *dev = cq->dev; + struct ifnet *dev = cq->dev; struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_rx_ring *rx_ring = priv->rx_ring[cq->ring]; @@ -778,12 +778,12 @@ static inline bool mlx4_en_cq_busy_polling(struct mlx4_en_cq *cq) #define MLX4_EN_WOL_DO_MODIFY (1ULL << 63) -void mlx4_en_destroy_netdev(struct net_device *dev); +void mlx4_en_destroy_netdev(struct ifnet *dev); int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, struct mlx4_en_port_profile *prof); -int mlx4_en_start_port(struct net_device *dev); -void mlx4_en_stop_port(struct net_device *dev); +int mlx4_en_start_port(struct ifnet *dev); +void mlx4_en_stop_port(struct ifnet *dev); void mlx4_en_free_resources(struct mlx4_en_priv *priv); int mlx4_en_alloc_resources(struct mlx4_en_priv *priv); @@ -799,7 +799,7 @@ int mlx4_en_set_cq_moder(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq); int mlx4_en_arm_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq); void mlx4_en_tx_irq(struct mlx4_cq *mcq); -u16 mlx4_en_select_queue(struct net_device *dev, struct mbuf *mb); +u16 mlx4_en_select_queue(struct ifnet *dev, struct mbuf *mb); int mlx4_en_xmit(struct mlx4_en_priv *priv, int tx_ind, struct mbuf **mbp); int mlx4_en_transmit(struct ifnet *dev, struct mbuf *m); @@ -826,7 +826,7 @@ void mlx4_en_rx_que(void *context, int pending); int mlx4_en_activate_rx_rings(struct mlx4_en_priv *priv); void mlx4_en_deactivate_rx_ring(struct mlx4_en_priv *priv, struct mlx4_en_rx_ring *ring); -int mlx4_en_process_rx_cq(struct net_device *dev, +int mlx4_en_process_rx_cq(struct ifnet *dev, struct mlx4_en_cq *cq, int budget); void mlx4_en_poll_tx_cq(unsigned long data); @@ -836,7 +836,7 @@ void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride, void mlx4_en_sqp_event(struct mlx4_qp *qp, enum mlx4_event event); int mlx4_en_map_buffer(struct mlx4_buf *buf); void mlx4_en_unmap_buffer(struct mlx4_buf *buf); -void mlx4_en_calc_rx_buf(struct net_device *dev); +void mlx4_en_calc_rx_buf(struct ifnet *dev); const u32 *mlx4_en_get_rss_key(struct mlx4_en_priv *priv, u16 *keylen); u8 mlx4_en_get_rss_mask(struct mlx4_en_priv *priv); @@ -844,7 +844,7 @@ int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv); void mlx4_en_release_rss_steer(struct mlx4_en_priv *priv); int mlx4_en_create_drop_qp(struct mlx4_en_priv *priv); void mlx4_en_destroy_drop_qp(struct mlx4_en_priv *priv); -int mlx4_en_free_tx_buf(struct net_device *dev, struct mlx4_en_tx_ring *ring); +int mlx4_en_free_tx_buf(struct ifnet *dev, struct mlx4_en_tx_ring *ring); void mlx4_en_rx_irq(struct mlx4_cq *mcq); int mlx4_SET_VLAN_FLTR(struct mlx4_dev *dev, struct mlx4_en_priv *priv); @@ -862,7 +862,7 @@ extern const struct dcbnl_rtnl_ops mlx4_en_dcbnl_ops; extern const struct dcbnl_rtnl_ops mlx4_en_dcbnl_pfc_ops; #endif -int mlx4_en_setup_tc(struct net_device *dev, u8 up); +int mlx4_en_setup_tc(struct ifnet *dev, u8 up); #ifdef CONFIG_RFS_ACCEL void mlx4_en_cleanup_filters(struct mlx4_en_priv *priv, @@ -870,7 +870,7 @@ void mlx4_en_cleanup_filters(struct mlx4_en_priv *priv, #endif #define MLX4_EN_NUM_SELF_TEST 5 -void mlx4_en_ex_selftest(struct net_device *dev, u32 *flags, u64 *buf); +void mlx4_en_ex_selftest(struct ifnet *dev, u32 *flags, u64 *buf); void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev); /* @@ -882,7 +882,7 @@ void mlx4_en_ptp_overflow_check(struct mlx4_en_dev *mdev); u64 mlx4_en_get_cqe_ts(struct mlx4_cqe *cqe); /* Functions for caching and restoring statistics */ -int mlx4_en_get_sset_count(struct net_device *dev, int sset); +int mlx4_en_get_sset_count(struct ifnet *dev, int sset); void mlx4_en_restore_ethtool_stats(struct mlx4_en_priv *priv, u64 *data); diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c b/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c index b36afc66d476..eec620f5b90e 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c @@ -64,7 +64,7 @@ static void mlx4_en_sysctl_conf(struct mlx4_en_priv *priv); static int mlx4_en_low_latency_recv(struct napi_struct *napi) { struct mlx4_en_cq *cq = container_of(napi, struct mlx4_en_cq, napi); - struct net_device *dev = cq->dev; + struct ifnet *dev = cq->dev; struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_rx_ring *rx_ring = priv->rx_ring[cq->ring]; int done; @@ -288,7 +288,7 @@ mlx4_en_filter_find(struct mlx4_en_priv *priv, __be32 src_ip, __be32 dst_ip, } static int -mlx4_en_filter_rfs(struct net_device *net_dev, const struct sk_buff *skb, +mlx4_en_filter_rfs(struct ifnet *net_dev, const struct sk_buff *skb, u16 rxq_index, u32 flow_id) { struct mlx4_en_priv *priv = netdev_priv(net_dev); @@ -400,7 +400,7 @@ static void mlx4_en_filter_rfs_expire(struct mlx4_en_priv *priv) } #endif -static void mlx4_en_vlan_rx_add_vid(void *arg, struct net_device *dev, u16 vid) +static void mlx4_en_vlan_rx_add_vid(void *arg, struct ifnet *dev, u16 vid) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -427,7 +427,7 @@ static void mlx4_en_vlan_rx_add_vid(void *arg, struct net_device *dev, u16 vid) } -static void mlx4_en_vlan_rx_kill_vid(void *arg, struct net_device *dev, u16 vid) +static void mlx4_en_vlan_rx_kill_vid(void *arg, struct ifnet *dev, u16 vid) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -606,7 +606,7 @@ static void mlx4_en_put_qp(struct mlx4_en_priv *priv) } } -static void mlx4_en_clear_uclist(struct net_device *dev) +static void mlx4_en_clear_uclist(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_addr_list *tmp, *uc_to_del; @@ -635,7 +635,7 @@ static u_int mlx4_copy_addr(void *arg, struct sockaddr_dl *sdl, u_int cnt) return (1); } -static void mlx4_en_cache_uclist(struct net_device *dev) +static void mlx4_en_cache_uclist(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); @@ -643,7 +643,7 @@ static void mlx4_en_cache_uclist(struct net_device *dev) if_foreach_lladdr(dev, mlx4_copy_addr, priv); } -static void mlx4_en_clear_mclist(struct net_device *dev) +static void mlx4_en_clear_mclist(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_addr_list *tmp, *mc_to_del; @@ -671,7 +671,7 @@ static u_int mlx4_copy_maddr(void *arg, struct sockaddr_dl *sdl, u_int count) return (1); } -static void mlx4_en_cache_mclist(struct net_device *dev) +static void mlx4_en_cache_mclist(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); @@ -728,7 +728,7 @@ static void update_addr_list_flags(struct mlx4_en_priv *priv, } } -static void mlx4_en_set_rx_mode(struct net_device *dev) +static void mlx4_en_set_rx_mode(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); @@ -842,7 +842,7 @@ static void mlx4_en_clear_promisc_mode(struct mlx4_en_priv *priv, } static void mlx4_en_do_multicast(struct mlx4_en_priv *priv, - struct net_device *dev, + struct ifnet *dev, struct mlx4_en_dev *mdev) { struct mlx4_en_addr_list *addr_list, *tmp; @@ -977,7 +977,7 @@ static void mlx4_en_do_multicast(struct mlx4_en_priv *priv, } static void mlx4_en_do_unicast(struct mlx4_en_priv *priv, - struct net_device *dev, + struct ifnet *dev, struct mlx4_en_dev *mdev) { struct mlx4_en_addr_list *addr_list, *tmp; @@ -1011,7 +1011,7 @@ static void mlx4_en_do_set_rx_mode(struct work_struct *work) struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, rx_mode_task); struct mlx4_en_dev *mdev = priv->mdev; - struct net_device *dev = priv->dev; + struct ifnet *dev = priv->dev; mutex_lock(&mdev->state_lock); if (!mdev->device_up) { @@ -1258,7 +1258,7 @@ static void mlx4_en_linkstate(struct work_struct *work) } -int mlx4_en_start_port(struct net_device *dev) +int mlx4_en_start_port(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -1451,7 +1451,7 @@ cq_err: } -void mlx4_en_stop_port(struct net_device *dev) +void mlx4_en_stop_port(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -1568,7 +1568,7 @@ static void mlx4_en_restart(struct work_struct *work) struct mlx4_en_priv *priv = container_of(work, struct mlx4_en_priv, watchdog_task); struct mlx4_en_dev *mdev = priv->mdev; - struct net_device *dev = priv->dev; + struct ifnet *dev = priv->dev; struct mlx4_en_tx_ring *ring; int i; @@ -1601,7 +1601,7 @@ reset: mutex_unlock(&mdev->state_lock); } -static void mlx4_en_clear_stats(struct net_device *dev) +static void mlx4_en_clear_stats(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -1635,7 +1635,7 @@ static void mlx4_en_open(void* arg) struct mlx4_en_priv *priv; struct mlx4_en_dev *mdev; - struct net_device *dev; + struct ifnet *dev; int err = 0; priv = arg; @@ -1760,7 +1760,7 @@ struct en_port_attribute en_port_attr_##_name = __ATTR_RO(_name) #define EN_PORT_ATTR(_name, _mode, _show, _store) \ struct en_port_attribute en_port_attr_##_name = __ATTR(_name, _mode, _show, _store) -void mlx4_en_destroy_netdev(struct net_device *dev) +void mlx4_en_destroy_netdev(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -1815,7 +1815,7 @@ void mlx4_en_destroy_netdev(struct net_device *dev) } -static int mlx4_en_change_mtu(struct net_device *dev, int new_mtu) +static int mlx4_en_change_mtu(struct ifnet *dev, int new_mtu) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -2137,7 +2137,7 @@ out: int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port, struct mlx4_en_port_profile *prof) { - struct net_device *dev; + struct ifnet *dev; struct mlx4_en_priv *priv; uint8_t dev_addr[ETHER_ADDR_LEN]; int err; @@ -2350,7 +2350,7 @@ out: return err; } -static int mlx4_en_set_ring_size(struct net_device *dev, +static int mlx4_en_set_ring_size(struct ifnet *dev, int rx_size, int tx_size) { struct mlx4_en_priv *priv = netdev_priv(dev); @@ -2424,7 +2424,7 @@ static int mlx4_en_set_tx_ring_size(SYSCTL_HANDLER_ARGS) return (error); } -static int mlx4_en_get_module_info(struct net_device *dev, +static int mlx4_en_get_module_info(struct ifnet *dev, struct ethtool_modinfo *modinfo) { struct mlx4_en_priv *priv = netdev_priv(dev); @@ -2471,7 +2471,7 @@ static int mlx4_en_get_module_info(struct net_device *dev, return 0; } -static int mlx4_en_get_module_eeprom(struct net_device *dev, +static int mlx4_en_get_module_eeprom(struct ifnet *dev, struct ethtool_eeprom *ee, u8 *data) { @@ -2539,7 +2539,7 @@ static int mlx4_en_read_eeprom(SYSCTL_HANDLER_ARGS) int error; int result = 0; struct mlx4_en_priv *priv; - struct net_device *dev; + struct ifnet *dev; struct ethtool_modinfo modinfo; struct ethtool_eeprom ee; @@ -2655,7 +2655,7 @@ static int mlx4_en_set_rx_ppp(SYSCTL_HANDLER_ARGS) static void mlx4_en_sysctl_conf(struct mlx4_en_priv *priv) { - struct net_device *dev; + struct ifnet *dev; struct sysctl_ctx_list *ctx; struct sysctl_oid *node; struct sysctl_oid_list *node_list; diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_port.c b/sys/dev/mlx4/mlx4_en/mlx4_en_port.c index 7e8d2c1550e4..9a0edac109f4 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_port.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_port.c @@ -149,7 +149,7 @@ static u64 en_stats_adder(__be64 *start, __be64 *next, int num) return ret; } -static void mlx4_en_fold_software_stats(struct net_device *dev) +static void mlx4_en_fold_software_stats(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_dev *mdev = priv->mdev; @@ -187,7 +187,7 @@ int mlx4_en_DUMP_ETH_STATS(struct mlx4_en_dev *mdev, u8 port, u8 reset) struct mlx4_counter tmp_vport_stats; struct mlx4_en_stat_out_mbox *mlx4_en_stats; struct mlx4_en_stat_out_flow_control_mbox *flowstats; - struct net_device *dev = mdev->pndev[port]; + struct ifnet *dev = mdev->pndev[port]; struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_en_vport_stats *vport_stats = &priv->vport_stats; struct mlx4_cmd_mailbox *mailbox; diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_resources.c b/sys/dev/mlx4/mlx4_en/mlx4_en_resources.c index db8beb501594..5d5508eebebf 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_resources.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_resources.c @@ -43,7 +43,7 @@ void mlx4_en_fill_qp_context(struct mlx4_en_priv *priv, int size, int stride, int user_prio, struct mlx4_qp_context *context) { struct mlx4_en_dev *mdev = priv->mdev; - struct net_device *dev = priv->dev; + struct ifnet *dev = priv->dev; memset(context, 0, sizeof *context); context->flags = cpu_to_be32(7 << 16 | rss << MLX4_RSS_QPC_FLAG_OFFSET); diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c b/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c index e9f0d2f640e1..9e6f4df107bd 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_rx.c @@ -338,7 +338,7 @@ void mlx4_en_set_num_rx_rings(struct mlx4_en_dev *mdev) } } -void mlx4_en_calc_rx_buf(struct net_device *dev) +void mlx4_en_calc_rx_buf(struct ifnet *dev) { struct mlx4_en_priv *priv = netdev_priv(dev); int eff_mtu = dev->if_mtu + ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN + @@ -735,7 +735,7 @@ mlx4_en_rss_hash(__be16 status, int udp_rss) * The following calc ensures that when factor==1, it means we are aligned to 64B * and we get the real cqe data*/ #define CQE_FACTOR_INDEX(index, factor) (((index) << (factor)) + (factor)) -int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int budget) +int mlx4_en_process_rx_cq(struct ifnet *dev, struct mlx4_en_cq *cq, int budget) { struct mlx4_en_priv *priv = netdev_priv(dev); struct mlx4_cqe *cqe; @@ -866,7 +866,7 @@ out: /* Rx CQ polling - called by NAPI */ static int mlx4_en_poll_rx_cq(struct mlx4_en_cq *cq, int budget) { - struct net_device *dev = cq->dev; + struct ifnet *dev = cq->dev; struct epoch_tracker et; int done; diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_tx.c b/sys/dev/mlx4/mlx4_en/mlx4_en_tx.c index e07964f3225e..f3a41a15f8b6 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_tx.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_tx.c @@ -308,7 +308,7 @@ done: return (tx_info->nr_txbb); } -int mlx4_en_free_tx_buf(struct net_device *dev, struct mlx4_en_tx_ring *ring) +int mlx4_en_free_tx_buf(struct ifnet *dev, struct mlx4_en_tx_ring *ring) { struct mlx4_en_priv *priv = netdev_priv(dev); int cnt = 0; @@ -344,7 +344,7 @@ mlx4_en_tx_ring_is_full(struct mlx4_en_tx_ring *ring) return (wqs < (HEADROOM + (2 * MLX4_EN_TX_WQE_MAX_WQEBBS))); } -static int mlx4_en_process_tx_cq(struct net_device *dev, +static int mlx4_en_process_tx_cq(struct ifnet *dev, struct mlx4_en_cq *cq) { struct mlx4_en_priv *priv = netdev_priv(dev); @@ -604,7 +604,7 @@ static void hashrandom_init(void *arg) } SYSINIT(hashrandom_init, SI_SUB_RANDOM, SI_ORDER_ANY, &hashrandom_init, NULL); -u16 mlx4_en_select_queue(struct net_device *dev, struct mbuf *mb) +u16 mlx4_en_select_queue(struct ifnet *dev, struct mbuf *mb) { struct mlx4_en_priv *priv = netdev_priv(dev); u32 rings_p_up = priv->num_tx_rings_p_up; diff --git a/sys/dev/mlx4/mlx4_ib/mlx4_ib.h b/sys/dev/mlx4/mlx4_ib/mlx4_ib.h index d8926110a7a1..100a06b75af7 100644 --- a/sys/dev/mlx4/mlx4_ib/mlx4_ib.h +++ b/sys/dev/mlx4/mlx4_ib/mlx4_ib.h @@ -500,7 +500,7 @@ struct mlx4_port_gid_table { struct mlx4_ib_iboe { spinlock_t lock; - struct net_device *netdevs[MLX4_MAX_PORTS]; + struct ifnet *netdevs[MLX4_MAX_PORTS]; atomic64_t mac[MLX4_MAX_PORTS]; struct notifier_block nb; struct mlx4_port_gid_table gids[MLX4_MAX_PORTS]; diff --git a/sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c b/sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c index b050272e49d0..62956607974b 100644 --- a/sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c +++ b/sys/dev/mlx4/mlx4_ib/mlx4_ib_main.c @@ -131,10 +131,10 @@ static int num_ib_ports(struct mlx4_dev *dev) return ib_ports; } -static struct net_device *mlx4_ib_get_netdev(struct ib_device *device, u8 port_num) +static struct ifnet *mlx4_ib_get_netdev(struct ib_device *device, u8 port_num) { struct mlx4_ib_dev *ibdev = to_mdev(device); - struct net_device *dev; + struct ifnet *dev; rcu_read_lock(); dev = mlx4_get_protocol_dev(ibdev->dev, MLX4_PROT_ETH, port_num); @@ -142,11 +142,11 @@ static struct net_device *mlx4_ib_get_netdev(struct ib_device *device, u8 port_n #if 0 if (dev) { if (mlx4_is_bonded(ibdev->dev)) { - struct net_device *upper = NULL; + struct ifnet *upper = NULL; upper = netdev_master_upper_dev_get_rcu(dev); if (upper) { - struct net_device *active; + struct ifnet *active; active = bond_option_active_slave_get_rcu(netdev_priv(upper)); if (active) @@ -693,7 +693,7 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port, struct mlx4_ib_dev *mdev = to_mdev(ibdev); struct mlx4_ib_iboe *iboe = &mdev->iboe; - struct net_device *ndev; + struct ifnet *ndev; enum ib_mtu tmp; struct mlx4_cmd_mailbox *mailbox; int err = 0; @@ -1348,7 +1348,7 @@ static void mlx4_ib_delete_counters_table(struct mlx4_ib_dev *ibdev, int mlx4_ib_add_mc(struct mlx4_ib_dev *mdev, struct mlx4_ib_qp *mqp, union ib_gid *gid) { - struct net_device *ndev; + struct ifnet *ndev; int ret = 0; if (!mqp->port) @@ -1960,7 +1960,7 @@ static int mlx4_ib_mcg_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid) struct mlx4_ib_dev *mdev = to_mdev(ibqp->device); struct mlx4_dev *dev = mdev->dev; struct mlx4_ib_qp *mqp = to_mqp(ibqp); - struct net_device *ndev; + struct ifnet *ndev; struct mlx4_ib_gid_entry *ge; struct mlx4_flow_reg_id reg_id = {0, 0}; enum mlx4_protocol prot = MLX4_PROT_IB_IPV6; @@ -2284,7 +2284,7 @@ static void mlx4_ib_diag_cleanup(struct mlx4_ib_dev *ibdev) #define MLX4_IB_INVALID_MAC ((u64)-1) static void mlx4_ib_update_qps(struct mlx4_ib_dev *ibdev, - struct net_device *dev, + struct ifnet *dev, int port) { u64 new_smac = 0; @@ -2339,7 +2339,7 @@ unlock: } static void mlx4_ib_scan_netdevs(struct mlx4_ib_dev *ibdev, - struct net_device *dev, + struct ifnet *dev, unsigned long event) { @@ -2370,7 +2370,7 @@ static void mlx4_ib_scan_netdevs(struct mlx4_ib_dev *ibdev, static int mlx4_ib_netdev_event(struct notifier_block *this, unsigned long event, void *ptr) { - struct net_device *dev = netdev_notifier_info_to_dev(ptr); + struct ifnet *dev = netdev_notifier_info_to_ifp(ptr); struct mlx4_ib_dev *ibdev; if (dev->if_vnet != &init_net) @@ -3105,7 +3105,7 @@ static void handle_bonded_port_state_event(struct work_struct *work) kfree(ew); spin_lock_bh(&ibdev->iboe.lock); for (i = 0; i < MLX4_MAX_PORTS; ++i) { - struct net_device *curr_netdev = ibdev->iboe.netdevs[i]; + struct ifnet *curr_netdev = ibdev->iboe.netdevs[i]; enum ib_port_state curr_port_state; if (!curr_netdev) diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c index c2a01b26de1c..68dddeb8f1f1 100644 --- a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c +++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c @@ -107,7 +107,7 @@ static bool mlx5_netdev_match(struct ifnet *ndev, static int mlx5_netdev_event(struct notifier_block *this, unsigned long event, void *ptr) { - struct ifnet *ndev = netdev_notifier_info_to_dev(ptr); + struct ifnet *ndev = netdev_notifier_info_to_ifp(ptr); struct mlx5_ib_dev *ibdev = container_of(this, struct mlx5_ib_dev, roce.nb); diff --git a/sys/ofed/drivers/infiniband/core/core_priv.h b/sys/ofed/drivers/infiniband/core/core_priv.h index 7e3401ddf90a..62772fc2a6c5 100644 --- a/sys/ofed/drivers/infiniband/core/core_priv.h +++ b/sys/ofed/drivers/infiniband/core/core_priv.h @@ -79,10 +79,10 @@ void ib_cache_setup(void); void ib_cache_cleanup(void); typedef void (*roce_netdev_callback)(struct ib_device *device, u8 port, - struct net_device *idev, void *cookie); + struct ifnet *idev, void *cookie); typedef int (*roce_netdev_filter)(struct ib_device *device, u8 port, - struct net_device *idev, void *cookie); + struct ifnet *idev, void *cookie); void ib_enum_roce_netdev(struct ib_device *ib_dev, roce_netdev_filter filter, @@ -104,7 +104,7 @@ int ib_cache_gid_parse_type_str(const char *buf); const char *ib_cache_gid_type_str(enum ib_gid_type gid_type); void ib_cache_gid_set_default_gid(struct ib_device *ib_dev, u8 port, - struct net_device *ndev, + struct ifnet *ndev, unsigned long gid_type_mask, enum ib_cache_gid_default_mode mode); @@ -115,8 +115,8 @@ int ib_cache_gid_del(struct ib_device *ib_dev, u8 port, union ib_gid *gid, struct ib_gid_attr *attr); int ib_cache_gid_del_all_netdev_gids(struct ib_device *ib_dev, u8 port, - struct net_device *ndev); -void ib_cache_gid_del_all_by_netdev(struct net_device *ndev); + struct ifnet *ndev); +void ib_cache_gid_del_all_by_netdev(struct ifnet *ndev); int roce_gid_mgmt_init(void); void roce_gid_mgmt_cleanup(void); diff --git a/sys/ofed/drivers/infiniband/core/ib_addr.c b/sys/ofed/drivers/infiniband/core/ib_addr.c index ef5e264577e0..a8e951721b8d 100644 --- a/sys/ofed/drivers/infiniband/core/ib_addr.c +++ b/sys/ofed/drivers/infiniband/core/ib_addr.c @@ -139,7 +139,7 @@ rdma_copy_addr_sub(u8 *dst, const u8 *src, unsigned min, unsigned max) memset(dst + min, 0, max - min); } -int rdma_copy_addr(struct rdma_dev_addr *dev_addr, struct net_device *dev, +int rdma_copy_addr(struct rdma_dev_addr *dev_addr, struct ifnet *dev, const unsigned char *dst_dev_addr) { /* check for loopback device */ @@ -172,7 +172,7 @@ EXPORT_SYMBOL(rdma_copy_addr); int rdma_translate_ip(const struct sockaddr *addr, struct rdma_dev_addr *dev_addr) { - struct net_device *dev; + struct ifnet *dev; int ret; if (dev_addr->bound_dev_if) { @@ -662,7 +662,7 @@ static int addr_resolve(struct sockaddr *src_in, struct rdma_dev_addr *addr) { struct epoch_tracker et; - struct net_device *ndev = NULL; + struct ifnet *ndev = NULL; u8 edst[MAX_ADDR_LEN]; int ret; @@ -852,7 +852,7 @@ static void resolve_cb(int status, struct sockaddr *src_addr, int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid, const union ib_gid *dgid, - u8 *dmac, struct net_device *dev, + u8 *dmac, struct ifnet *dev, int *hoplimit) { int ret = 0; diff --git a/sys/ofed/drivers/infiniband/core/ib_cache.c b/sys/ofed/drivers/infiniband/core/ib_cache.c index a5bc498303c6..3680b97ad2bf 100644 --- a/sys/ofed/drivers/infiniband/core/ib_cache.c +++ b/sys/ofed/drivers/infiniband/core/ib_cache.c @@ -183,7 +183,7 @@ static int write_gid(struct ib_device *ib_dev, u8 port, __releases(&table->rwlock) __acquires(&table->rwlock) { int ret = 0; - struct net_device *old_net_dev; + struct ifnet *old_net_dev; enum ib_gid_type old_gid_type; /* in rdma_cap_roce_gid_table, this funciton should be protected by a @@ -311,7 +311,7 @@ static int find_gid(struct ib_gid_table *table, const union ib_gid *gid, return found; } -static void addrconf_ifid_eui48(u8 *eui, struct net_device *dev) +static void addrconf_ifid_eui48(u8 *eui, struct ifnet *dev) { if (dev->if_addrlen != ETH_ALEN) return; @@ -325,7 +325,7 @@ static void addrconf_ifid_eui48(u8 *eui, struct net_device *dev) eui[0] ^= 2; } -static void make_default_gid(struct net_device *dev, union ib_gid *gid) +static void make_default_gid(struct ifnet *dev, union ib_gid *gid) { gid->global.subnet_prefix = cpu_to_be64(0xfe80000000000000LL); addrconf_ifid_eui48(&gid->raw[8], dev); @@ -400,7 +400,7 @@ out_unlock: } int ib_cache_gid_del_all_netdev_gids(struct ib_device *ib_dev, u8 port, - struct net_device *ndev) + struct ifnet *ndev) { struct ib_gid_table **ports_table = ib_dev->cache.gid_cache; struct ib_gid_table *table; @@ -490,7 +490,7 @@ static int _ib_cache_gid_table_find(struct ib_device *ib_dev, static int ib_cache_gid_find(struct ib_device *ib_dev, const union ib_gid *gid, enum ib_gid_type gid_type, - struct net_device *ndev, u8 *port, + struct ifnet *ndev, u8 *port, u16 *index) { unsigned long mask = GID_ATTR_FIND_MASK_GID | @@ -507,7 +507,7 @@ static int ib_cache_gid_find(struct ib_device *ib_dev, int ib_find_cached_gid_by_port(struct ib_device *ib_dev, const union ib_gid *gid, enum ib_gid_type gid_type, - u8 port, struct net_device *ndev, + u8 port, struct ifnet *ndev, u16 *index) { int local_index; @@ -672,7 +672,7 @@ static void cleanup_gid_table_port(struct ib_device *ib_dev, u8 port, } void ib_cache_gid_set_default_gid(struct ib_device *ib_dev, u8 port, - struct net_device *ndev, + struct ifnet *ndev, unsigned long gid_type_mask, enum ib_cache_gid_default_mode mode) { @@ -899,7 +899,7 @@ EXPORT_SYMBOL(ib_get_cached_gid); int ib_find_cached_gid(struct ib_device *device, const union ib_gid *gid, enum ib_gid_type gid_type, - struct net_device *ndev, + struct ifnet *ndev, u8 *port_num, u16 *index) { diff --git a/sys/ofed/drivers/infiniband/core/ib_cm.c b/sys/ofed/drivers/infiniband/core/ib_cm.c index 7d5197cc4a0d..95b442eb0dd1 100644 --- a/sys/ofed/drivers/infiniband/core/ib_cm.c +++ b/sys/ofed/drivers/infiniband/core/ib_cm.c @@ -429,7 +429,7 @@ static int cm_init_av_by_path(struct ib_sa_path_rec *path, struct cm_av *av, unsigned long flags; int ret; u8 p; - struct net_device *ndev = ib_get_ndev_from_path(path); + struct ifnet *ndev = ib_get_ndev_from_path(path); read_lock_irqsave(&cm.device_lock, flags); list_for_each_entry(cm_dev, &cm.device_list, list) { diff --git a/sys/ofed/drivers/infiniband/core/ib_cma.c b/sys/ofed/drivers/infiniband/core/ib_cma.c index 7c03841d51d7..829d668dbd05 100644 --- a/sys/ofed/drivers/infiniband/core/ib_cma.c +++ b/sys/ofed/drivers/infiniband/core/ib_cma.c @@ -444,7 +444,7 @@ static inline void sdp_set_ip_ver(struct sdp_hh *hh, u8 ip_ver) hh->ipv_cap = (ip_ver << 4) | (hh->ipv_cap & 0xF); } -static int cma_igmp_send(struct net_device *ndev, const union ib_gid *mgid, bool join) +static int cma_igmp_send(struct ifnet *ndev, const union ib_gid *mgid, bool join) { int retval; @@ -586,7 +586,7 @@ static inline int cma_validate_port(struct ib_device *device, u8 port, const struct rdma_dev_addr *dev_addr) { const int dev_type = dev_addr->dev_type; - struct net_device *ndev; + struct ifnet *ndev; int ret = -ENODEV; if ((dev_type == ARPHRD_INFINIBAND) && !rdma_protocol_ib(device, port)) @@ -1346,14 +1346,14 @@ static int cma_save_req_info(const struct ib_cm_event *ib_event, return 0; } -static bool validate_ipv4_net_dev(struct net_device *net_dev, +static bool validate_ipv4_net_dev(struct ifnet *net_dev, const struct sockaddr_in *dst_addr, const struct sockaddr_in *src_addr) { #ifdef INET __be32 daddr = dst_addr->sin_addr.s_addr, saddr = src_addr->sin_addr.s_addr; - struct net_device *dst_dev; + struct ifnet *dst_dev; struct nhop_object *nh; bool ret; @@ -1390,14 +1390,14 @@ static bool validate_ipv4_net_dev(struct net_device *net_dev, #endif } -static bool validate_ipv6_net_dev(struct net_device *net_dev, +static bool validate_ipv6_net_dev(struct ifnet *net_dev, const struct sockaddr_in6 *dst_addr, const struct sockaddr_in6 *src_addr) { #ifdef INET6 struct sockaddr_in6 src_tmp = *src_addr; struct sockaddr_in6 dst_tmp = *dst_addr; - struct net_device *dst_dev; + struct ifnet *dst_dev; struct nhop_object *nh; bool ret; @@ -1444,7 +1444,7 @@ static bool validate_ipv6_net_dev(struct net_device *net_dev, #endif } -static bool validate_net_dev(struct net_device *net_dev, +static bool validate_net_dev(struct ifnet *net_dev, const struct sockaddr *daddr, const struct sockaddr *saddr) { @@ -1467,7 +1467,7 @@ static bool validate_net_dev(struct net_device *net_dev, } } -static struct net_device * +static struct ifnet * roce_get_net_dev_by_cm_event(struct ib_device *device, u8 port_num, const struct ib_cm_event *ib_event) { @@ -1487,13 +1487,13 @@ roce_get_net_dev_by_cm_event(struct ib_device *device, u8 port_num, return (sgid_attr.ndev); } -static struct net_device *cma_get_net_dev(struct ib_cm_event *ib_event, +static struct ifnet *cma_get_net_dev(struct ib_cm_event *ib_event, const struct cma_req_info *req) { struct sockaddr_storage listen_addr_storage, src_addr_storage; struct sockaddr *listen_addr = (struct sockaddr *)&listen_addr_storage, *src_addr = (struct sockaddr *)&src_addr_storage; - struct net_device *net_dev; + struct ifnet *net_dev; const union ib_gid *gid = req->has_gid ? &req->local_gid : NULL; struct epoch_tracker et; int err; @@ -1623,7 +1623,7 @@ static bool cma_protocol_roce(const struct rdma_cm_id *id) } static bool cma_match_net_dev(const struct rdma_cm_id *id, - const struct net_device *net_dev, + const struct ifnet *net_dev, u8 port_num) { const struct rdma_addr *addr = &id->route.addr; @@ -1653,7 +1653,7 @@ static struct rdma_id_private *cma_find_listener( const struct ib_cm_id *cm_id, const struct ib_cm_event *ib_event, const struct cma_req_info *req, - const struct net_device *net_dev) + const struct ifnet *net_dev) { struct rdma_id_private *id_priv, *id_priv_dev; @@ -1680,7 +1680,7 @@ static struct rdma_id_private *cma_find_listener( static struct rdma_id_private *cma_id_from_event(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event, - struct net_device **net_dev) + struct ifnet **net_dev) { struct cma_req_info req; struct rdma_bind_list *bind_list; @@ -1813,7 +1813,7 @@ static void cma_leave_mc_groups(struct rdma_id_private *id_priv) if (mc->igmp_joined) { struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; - struct net_device *ndev = NULL; + struct ifnet *ndev = NULL; if (dev_addr->bound_dev_if) ndev = dev_get_by_index(dev_addr->net, @@ -2002,7 +2002,7 @@ out: static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id, struct ib_cm_event *ib_event, - struct net_device *net_dev) + struct ifnet *net_dev) { struct rdma_id_private *id_priv; struct rdma_cm_id *id; @@ -2063,7 +2063,7 @@ err: static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id, struct ib_cm_event *ib_event, - struct net_device *net_dev) + struct ifnet *net_dev) { struct rdma_id_private *id_priv; struct rdma_cm_id *id; @@ -2131,7 +2131,7 @@ static int cma_req_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event) { struct rdma_id_private *listen_id, *conn_id = NULL; struct rdma_cm_event event; - struct net_device *net_dev; + struct ifnet *net_dev; int offset, ret; listen_id = cma_id_from_event(cm_id, ib_event, &net_dev); @@ -2651,7 +2651,7 @@ static int cma_resolve_iw_route(struct rdma_id_private *id_priv, int timeout_ms) return 0; } -static int iboe_tos_to_sl(struct net_device *ndev, int tos) +static int iboe_tos_to_sl(struct ifnet *ndev, int tos) { /* get service level, SL, from IPv4 type of service, TOS */ int sl = (tos >> 5) & 0x7; @@ -2678,7 +2678,7 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv) struct rdma_addr *addr = &route->addr; struct cma_work *work; int ret; - struct net_device *ndev = NULL; + struct ifnet *ndev = NULL; work = kzalloc(sizeof *work, GFP_KERNEL); @@ -3999,7 +3999,7 @@ static int cma_ib_mc_handler(int status, struct ib_sa_multicast *multicast) if (!status) { struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; - struct net_device *ndev = + struct ifnet *ndev = dev_get_by_index(dev_addr->net, dev_addr->bound_dev_if); enum ib_gid_type gid_type = id_priv->cma_dev->default_gid_type[id_priv->id.port_num - @@ -4226,7 +4226,7 @@ static int cma_iboe_join_multicast(struct rdma_id_private *id_priv, struct rdma_dev_addr *dev_addr = &id_priv->id.route.addr.dev_addr; int err = 0; struct sockaddr *addr = (struct sockaddr *)&mc->addr; - struct net_device *ndev = NULL; + struct ifnet *ndev = NULL; enum ib_gid_type gid_type; bool send_only; @@ -4372,7 +4372,7 @@ void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr) if (mc->igmp_joined) { struct rdma_dev_addr *dev_addr = &id->route.addr.dev_addr; - struct net_device *ndev = NULL; + struct ifnet *ndev = NULL; *** 402 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:04 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2F45064D175; Fri, 18 Jun 2021 21:49:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHN02t5z3MYr; Fri, 18 Jun 2021 21:49:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BE0C4242C; Fri, 18 Jun 2021 21:49:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn3wv069142; Fri, 18 Jun 2021 21:49:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn3pq069141; Fri, 18 Jun 2021 21:49:03 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:03 GMT Message-Id: <202106182149.15ILn3pq069141@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 644b4f117634 - main - LinuxKPI: add device_reprobe() and device_release_driver() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 644b4f117634e3b571031026be87429bea0c30dd Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:04 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=644b4f117634e3b571031026be87429bea0c30dd commit 644b4f117634e3b571031026be87429bea0c30dd Author: Bjoern A. Zeeb AuthorDate: 2021-05-28 11:04:34 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:09 +0000 LinuxKPI: add device_reprobe() and device_release_driver() Add two new (though untested) functions to linux/device.h which are dealing with manually managing the device/driver and are used by at least one wireless driver. We may have to re-fine them in the future. Move the devres declarations further up so they can be used earlier in the file. Sponsored by: The FreeBSD Foundation MFC after: 10 days Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D30519 --- sys/compat/linuxkpi/common/include/linux/device.h | 67 ++++++++++++++++------- 1 file changed, 47 insertions(+), 20 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/device.h b/sys/compat/linuxkpi/common/include/linux/device.h index 4ef35e6abcd3..4bdc3b831e58 100644 --- a/sys/compat/linuxkpi/common/include/linux/device.h +++ b/sys/compat/linuxkpi/common/include/linux/device.h @@ -209,6 +209,25 @@ show_class_attr_string(struct class *class, dev_warn(dev, __VA_ARGS__); \ } while (0) +/* Public and LinuxKPI internal devres functions. */ +void *lkpi_devres_alloc(void(*release)(struct device *, void *), size_t, gfp_t); +void lkpi_devres_add(struct device *, void *); +void lkpi_devres_free(void *); +void *lkpi_devres_find(struct device *, void(*release)(struct device *, void *), + int (*match)(struct device *, void *, void *), void *); +int lkpi_devres_destroy(struct device *, void(*release)(struct device *, void *), + int (*match)(struct device *, void *, void *), void *); +#define devres_alloc(_r, _s, _g) lkpi_devres_alloc(_r, _s, _g) +#define devres_add(_d, _p) lkpi_devres_add(_d, _p) +#define devres_free(_p) lkpi_devres_free(_p) +#define devres_find(_d, _rfn, _mfn, _mp) \ + lkpi_devres_find(_d, _rfn, _mfn, _mp) +#define devres_destroy(_d, _rfn, _mfn, _mp) \ + lkpi_devres_destroy(_d, _rfn, _mfn, _mp) +void lkpi_devres_release_free_list(struct device *); +void lkpi_devres_unlink(struct device *, void *); +void lkpi_devm_kmalloc_release(struct device *, void *); + static inline void * dev_get_drvdata(const struct device *dev) { @@ -483,6 +502,34 @@ device_destroy(struct class *class, dev_t devt) device_unregister(device_get_softc(bsddev)); } +static inline void +device_release_driver(struct device *dev) +{ + + /* We also need to cleanup LinuxKPI bits. What else? */ + lkpi_devres_release_free_list(dev); + dev_set_drvdata(dev, NULL); + /* Do not call dev->release! */ + + mtx_lock(&Giant); + if (device_is_attached(dev->bsddev)) + device_detach(dev->bsddev); + mtx_unlock(&Giant); +} + +static inline int +device_reprobe(struct device *dev) +{ + int error; + + device_release_driver(dev); + mtx_lock(&Giant); + error = device_probe_and_attach(dev->bsddev); + mtx_unlock(&Giant); + + return (-error); +} + #define dev_pm_set_driver_flags(dev, flags) do { \ } while (0) @@ -566,26 +613,6 @@ char *lkpi_devm_kasprintf(struct device *, gfp_t, const char *, ...); #define devm_kasprintf(_dev, _gfp, _fmt, ...) \ lkpi_devm_kasprintf(_dev, _gfp, _fmt, ##__VA_ARGS__) -void *lkpi_devres_alloc(void(*release)(struct device *, void *), size_t, gfp_t); -void lkpi_devres_add(struct device *, void *); -void lkpi_devres_free(void *); -void *lkpi_devres_find(struct device *, void(*release)(struct device *, void *), - int (*match)(struct device *, void *, void *), void *); -int lkpi_devres_destroy(struct device *, void(*release)(struct device *, void *), - int (*match)(struct device *, void *, void *), void *); -#define devres_alloc(_r, _s, _g) lkpi_devres_alloc(_r, _s, _g) -#define devres_add(_d, _p) lkpi_devres_add(_d, _p) -#define devres_free(_p) lkpi_devres_free(_p) -#define devres_find(_d, _rfn, _mfn, _mp) \ - lkpi_devres_find(_d, _rfn, _mfn, _mp) -#define devres_destroy(_d, _rfn, _mfn, _mp) \ - lkpi_devres_destroy(_d, _rfn, _mfn, _mp) - -/* LinuxKPI internal functions. */ -void lkpi_devres_release_free_list(struct device *); -void lkpi_devres_unlink(struct device *, void *); -void lkpi_devm_kmalloc_release(struct device *, void *); - static __inline void * devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) { From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 183B064D897; Fri, 18 Jun 2021 21:49:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHN75SBz3MvW; Fri, 18 Jun 2021 21:49:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DB32F239F; Fri, 18 Jun 2021 21:49:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn48G069171; Fri, 18 Jun 2021 21:49:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn404069169; Fri, 18 Jun 2021 21:49:04 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:04 GMT Message-Id: <202106182149.15ILn404069169@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 2afeed13b586 - main - LinuxKPI: add dmam_pool_create() support MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2afeed13b58653578c6ce5154afa6fb59f6b47f0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:05 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=2afeed13b58653578c6ce5154afa6fb59f6b47f0 commit 2afeed13b58653578c6ce5154afa6fb59f6b47f0 Author: Bjoern A. Zeeb AuthorDate: 2021-05-28 11:11:28 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:09 +0000 LinuxKPI: add dmam_pool_create() support dmam_pool_create() is a "managed" version of dma_pool_create() which will cleanup everything left when the device goes away using the devres framework. For that add an internal cleanup function to be called from devres release. This is used by at least one wireless driver. Sponsored by: The FreeBSD Foundation MFC after: 10 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30520 --- sys/compat/linuxkpi/common/include/linux/dmapool.h | 20 ++++++++++++++++++++ sys/compat/linuxkpi/common/src/linux_pci.c | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/dmapool.h b/sys/compat/linuxkpi/common/include/linux/dmapool.h index 980d5d74884f..60353ede6a82 100644 --- a/sys/compat/linuxkpi/common/include/linux/dmapool.h +++ b/sys/compat/linuxkpi/common/include/linux/dmapool.h @@ -41,6 +41,7 @@ struct dma_pool; struct dma_pool *linux_dma_pool_create(char *name, struct device *dev, size_t size, size_t align, size_t boundary); void linux_dma_pool_destroy(struct dma_pool *pool); +void lkpi_dmam_pool_destroy(struct device *, void *); void *linux_dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle); void linux_dma_pool_free(struct dma_pool *pool, void *vaddr, @@ -54,6 +55,25 @@ dma_pool_create(char *name, struct device *dev, size_t size, return (linux_dma_pool_create(name, dev, size, align, boundary)); } +static inline struct dma_pool * +dmam_pool_create(/* const */ char *name, struct device *dev, size_t size, + size_t align, size_t boundary) +{ + struct dma_pool **pp; + + pp = devres_alloc(lkpi_dmam_pool_destroy, sizeof(*pp), GFP_KERNEL); + if (pp == NULL) + return (NULL); + *pp = linux_dma_pool_create(name, dev, size, align, boundary); + if (*pp == NULL) { + devres_free(pp); + return (NULL); + } + + devres_add(dev, pp); + return (*pp); +} + static inline void dma_pool_destroy(struct dma_pool *pool) { diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index 075df3c2adf7..7aa159600faa 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -997,6 +997,16 @@ linux_dma_pool_destroy(struct dma_pool *pool) kfree(pool); } +void +lkpi_dmam_pool_destroy(struct device *dev, void *p) +{ + struct dma_pool *pool; + + pool = *(struct dma_pool **)p; + LINUX_DMA_PCTRIE_RECLAIM(&pool->pool_ptree); + linux_dma_pool_destroy(pool); +} + void * linux_dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle) From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:06 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5DAAE64DC88; Fri, 18 Jun 2021 21:49:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHQ1Rrfz3MkY; Fri, 18 Jun 2021 21:49:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0BADB242D; Fri, 18 Jun 2021 21:49:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn5hZ069197; Fri, 18 Jun 2021 21:49:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn5MJ069196; Fri, 18 Jun 2021 21:49:05 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:05 GMT Message-Id: <202106182149.15ILn5MJ069196@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 8e106c5230c1 - main - LinuxKPI: extend pci.h by various functions for wireless driver MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8e106c5230c1f0683ffc473db5c2e0d01b2bfeea Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:06 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=8e106c5230c1f0683ffc473db5c2e0d01b2bfeea commit 8e106c5230c1f0683ffc473db5c2e0d01b2bfeea Author: Bjoern A. Zeeb AuthorDate: 2021-05-28 11:16:12 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:09 +0000 LinuxKPI: extend pci.h by various functions for wireless driver Add dummy functions for dealing with "HotPlug" events which we currently do not support. Add pci_dev_get(), pci_find_ext_capability() and pci_pme_capable(). The added pcie_find_root_port() is a bit special as we need to create another linux pci device; for that make lkpinew_pci_dev() public which is also helpful for other cases when we want to use the Linux routines to check for device identifiers only and need a container for the "bsddev" to use natively. This has proven to avoid basic checking code for the sake of rewriting it to native field names elsewhere. Given we cache the newly created "root" we also need to make sure we clean it up. Sponsored by: The FreeBSD Foundation MFC after: 10 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30521 --- sys/compat/linuxkpi/common/include/linux/pci.h | 88 ++++++++++++++++++++++++++ sys/compat/linuxkpi/common/src/linux_pci.c | 6 +- 2 files changed, 93 insertions(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h index 36a82e81b4bc..b8a801ac9f70 100644 --- a/sys/compat/linuxkpi/common/include/linux/pci.h +++ b/sys/compat/linuxkpi/common/include/linux/pci.h @@ -221,6 +221,7 @@ struct pci_dev { struct list_head links; struct pci_driver *pdrv; struct pci_bus *bus; + struct pci_dev *root; uint16_t device; uint16_t vendor; uint16_t subsystem_vendor; @@ -236,6 +237,10 @@ struct pci_dev { TAILQ_HEAD(, pci_mmio_region) mmio; }; +/* Internal helper function(s). */ +struct pci_dev *lkpinew_pci_dev(device_t); + + static inline struct resource_list_entry * linux_pci_get_rle(struct pci_dev *pdev, int type, int rid) { @@ -327,6 +332,15 @@ pci_set_drvdata(struct pci_dev *pdev, void *data) dev_set_drvdata(&pdev->dev, data); } +static inline struct pci_dev * +pci_dev_get(struct pci_dev *pdev) +{ + + if (pdev != NULL) + get_device(&pdev->dev); + return (pdev); +} + static __inline void pci_dev_put(struct pci_dev *pdev) { @@ -496,6 +510,48 @@ static inline int pci_pcie_cap(struct pci_dev *dev) return pci_find_capability(dev, PCI_CAP_ID_EXP); } +static inline int +pci_find_ext_capability(struct pci_dev *pdev, int capid) +{ + int reg; + + if (pci_find_extcap(pdev->dev.bsddev, capid, ®)) + return (0); + return (reg); +} + +#define PCIM_PCAP_PME_SHIFT 11 +static __inline bool +pci_pme_capable(struct pci_dev *pdev, uint32_t flag) +{ + struct pci_devinfo *dinfo; + pcicfgregs *cfg; + + if (flag > (PCIM_PCAP_D3PME_COLD >> PCIM_PCAP_PME_SHIFT)) + return (false); + + dinfo = device_get_ivars(pdev->dev.bsddev); + cfg = &dinfo->cfg; + + if (cfg->pp.pp_cap == 0) + return (false); + + if ((cfg->pp.pp_cap & (1 << (PCIM_PCAP_PME_SHIFT + flag))) != 0) + return (true); + + return (false); +} + +static inline int +pci_disable_link_state(struct pci_dev *pdev, uint32_t flags) +{ + + if (!pci_enable_aspm) + return (-EPERM); + + return (-ENXIO); +} + static inline int pci_read_config_byte(struct pci_dev *pdev, int where, u8 *val) { @@ -1052,6 +1108,38 @@ pcie_bandwidth_available(struct pci_dev *pdev, return (nwidth * PCIE_SPEED2MBS_ENC(nspeed)); } +static inline struct pci_dev * +pcie_find_root_port(struct pci_dev *pdev) +{ + device_t root; + + if (pdev->root != NULL) + return (pdev->root); + + root = pci_find_pcie_root_port(pdev->dev.bsddev); + if (root == NULL) + return (NULL); + + pdev->root = lkpinew_pci_dev(root); + return (pdev->root); +} + +/* This is needed when people rip out the device "HotPlug". */ +static inline void +pci_lock_rescan_remove(void) +{ +} + +static inline void +pci_unlock_rescan_remove(void) +{ +} + +static __inline void +pci_stop_and_remove_bus_device(struct pci_dev *pdev) +{ +} + /* * The following functions can be used to attach/detach the LinuxKPI's * PCI device runtime. The pci_driver and pci_device_id pointer is diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index 7aa159600faa..030951175a42 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -243,11 +243,13 @@ lkpinew_pci_dev_release(struct device *dev) struct pci_dev *pdev; pdev = to_pci_dev(dev); + if (pdev->root != NULL) + pci_dev_put(pdev->root); free(pdev->bus, M_DEVBUF); free(pdev, M_DEVBUF); } -static struct pci_dev * +struct pci_dev * lkpinew_pci_dev(device_t dev) { struct pci_dev *pdev; @@ -408,6 +410,8 @@ linux_pci_detach_device(struct pci_dev *pdev) if (pdev->pdrv != NULL) pdev->pdrv->remove(pdev); + if (pdev->root != NULL) + pci_dev_put(pdev->root); free(pdev->bus, M_DEVBUF); linux_pdev_dma_uninit(pdev); From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:07 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7994F64DD0A; Fri, 18 Jun 2021 21:49:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHR1klsz3Mr1; Fri, 18 Jun 2021 21:49:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 170B4216A; Fri, 18 Jun 2021 21:49:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn7iH069221; Fri, 18 Jun 2021 21:49:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn7x6069220; Fri, 18 Jun 2021 21:49:07 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:07 GMT Message-Id: <202106182149.15ILn7x6069220@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: d16b6cb17837 - main - LinuxKPI: enhance the irq KPI for managed and threaded operations. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d16b6cb17837162d685c960deb28f26f716fa440 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:07 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=d16b6cb17837162d685c960deb28f26f716fa440 commit d16b6cb17837162d685c960deb28f26f716fa440 Author: Bjoern A. Zeeb AuthorDate: 2021-05-30 13:54:13 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:09 +0000 LinuxKPI: enhance the irq KPI for managed and threaded operations. Move request_irq() to an internal function which serves request_irq() and the newly added request_threaded_irq() and devm_request_threaded_irq(). Likewise factor out parts of free_irq() to also be used with devm_free_irq(). Add the storage and call to a thread_handler in case of IRQ_WAKE_THREAD. This is needed for the iwlwifi driver. Sponsored by: The FreeBSD Foundation MFC after: 10 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30549 --- .../linuxkpi/common/include/linux/interrupt.h | 97 ++++++++++++++++++---- sys/compat/linuxkpi/common/src/linux_compat.c | 31 ++++++- 2 files changed, 110 insertions(+), 18 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/interrupt.h b/sys/compat/linuxkpi/common/include/linux/interrupt.h index 90994a2f2315..6770adad2293 100644 --- a/sys/compat/linuxkpi/common/include/linux/interrupt.h +++ b/sys/compat/linuxkpi/common/include/linux/interrupt.h @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -51,10 +52,15 @@ struct irq_ent { struct resource *res; void *arg; irqreturn_t (*handler)(int, void *); + irqreturn_t (*thread_handler)(int, void *); void *tag; unsigned int irq; }; +void linux_irq_handler(void *); +void lkpi_devm_irq_release(struct device *, void *); +void lkpi_irq_release(struct device *, struct irq_ent *); + static inline int linux_irq_rid(struct device *dev, unsigned int irq) { @@ -65,8 +71,6 @@ linux_irq_rid(struct device *dev, unsigned int irq) return (0); } -extern void linux_irq_handler(void *); - static inline struct irq_ent * linux_irq_ent(struct device *dev, unsigned int irq) { @@ -80,8 +84,9 @@ linux_irq_ent(struct device *dev, unsigned int irq) } static inline int -request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, - const char *name, void *arg) +_request_irq(struct device *xdev, unsigned int irq, + irq_handler_t handler, irq_handler_t thread_handler, + unsigned long flags, const char *name, void *arg) { struct resource *res; struct irq_ent *irqe; @@ -92,27 +97,70 @@ request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, dev = linux_pci_find_irq_dev(irq); if (dev == NULL) return -ENXIO; + if (xdev != NULL && xdev != dev) + return -ENXIO; rid = linux_irq_rid(dev, irq); res = bus_alloc_resource_any(dev->bsddev, SYS_RES_IRQ, &rid, flags | RF_ACTIVE); if (res == NULL) return (-ENXIO); - irqe = kmalloc(sizeof(*irqe), GFP_KERNEL); + if (xdev != NULL) + irqe = lkpi_devres_alloc(lkpi_devm_irq_release, sizeof(*irqe), + GFP_KERNEL | __GFP_ZERO); + else + irqe = kzalloc(sizeof(*irqe), GFP_KERNEL); irqe->dev = dev; irqe->res = res; irqe->arg = arg; irqe->handler = handler; + irqe->thread_handler = thread_handler; irqe->irq = irq; + error = bus_setup_intr(dev->bsddev, res, INTR_TYPE_NET | INTR_MPSAFE, NULL, linux_irq_handler, irqe, &irqe->tag); - if (error) { - bus_release_resource(dev->bsddev, SYS_RES_IRQ, rid, irqe->res); - kfree(irqe); - return (-error); - } + if (error) + goto errout; list_add(&irqe->links, &dev->irqents); + if (xdev != NULL) + devres_add(xdev, irqe); return 0; + +errout: + bus_release_resource(dev->bsddev, SYS_RES_IRQ, rid, irqe->res); + if (xdev != NULL) + devres_free(irqe); + else + kfree(irqe); + return (-error); +} + +static inline int +request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, + const char *name, void *arg) +{ + + return (_request_irq(NULL, irq, handler, NULL, flags, name, arg)); +} + +static inline int +request_threaded_irq(int irq, irq_handler_t handler, + irq_handler_t thread_handler, unsigned long flags, + const char *name, void *arg) +{ + + return (_request_irq(NULL, irq, handler, thread_handler, + flags, name, arg)); +} + +static inline int +devm_request_threaded_irq(struct device *dev, int irq, + irq_handler_t handler, irq_handler_t thread_handler, + unsigned long flags, const char *name, void *arg) +{ + + return (_request_irq(dev, irq, handler, thread_handler, + flags, name, arg)); } static inline int @@ -166,26 +214,41 @@ bind_irq_to_cpu(unsigned int irq, int cpu_id) } static inline void -free_irq(unsigned int irq, void *device) +free_irq(unsigned int irq, void *device __unused) { struct irq_ent *irqe; struct device *dev; - int rid; dev = linux_pci_find_irq_dev(irq); if (dev == NULL) return; - rid = linux_irq_rid(dev, irq); irqe = linux_irq_ent(dev, irq); if (irqe == NULL) return; - if (irqe->tag != NULL) - bus_teardown_intr(dev->bsddev, irqe->res, irqe->tag); - bus_release_resource(dev->bsddev, SYS_RES_IRQ, rid, irqe->res); - list_del(&irqe->links); + lkpi_irq_release(dev, irqe); kfree(irqe); } +static inline void +devm_free_irq(struct device *xdev, unsigned int irq, void *p) +{ + struct device *dev; + struct irq_ent *irqe; + + dev = linux_pci_find_irq_dev(irq); + if (dev == NULL) + return; + if (xdev != dev) + return; + irqe = linux_irq_ent(dev, irq); + if (irqe == NULL) + return; + lkpi_irq_release(dev, irqe); + lkpi_devres_unlink(dev, irqe); + lkpi_devres_free(irqe); + return; +} + static inline int irq_set_affinity_hint(int vector, cpumask_t *mask) { diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c index d4571173f93d..217c4081c603 100644 --- a/sys/compat/linuxkpi/common/src/linux_compat.c +++ b/sys/compat/linuxkpi/common/src/linux_compat.c @@ -2463,6 +2463,30 @@ list_sort(void *priv, struct list_head *head, int (*cmp)(void *priv, free(ar, M_KMALLOC); } +void +lkpi_irq_release(struct device *dev, struct irq_ent *irqe) +{ + + if (irqe->tag != NULL) + bus_teardown_intr(dev->bsddev, irqe->res, irqe->tag); + if (irqe->res != NULL) + bus_release_resource(dev->bsddev, SYS_RES_IRQ, + rman_get_rid(irqe->res), irqe->res); + list_del(&irqe->links); +} + +void +lkpi_devm_irq_release(struct device *dev, void *p) +{ + struct irq_ent *irqe; + + if (dev == NULL || p == NULL) + return; + + irqe = p; + lkpi_irq_release(dev, irqe); +} + void linux_irq_handler(void *ent) { @@ -2472,7 +2496,12 @@ linux_irq_handler(void *ent) return; irqe = ent; - irqe->handler(irqe->irq, irqe->arg); + if (irqe->handler(irqe->irq, irqe->arg) == IRQ_WAKE_THREAD && + irqe->thread_handler != NULL) { + THREAD_SLEEPING_OK(); + irqe->thread_handler(irqe->irq, irqe->arg); + THREAD_NO_SLEEPING(); + } } #if defined(__i386__) || defined(__amd64__) From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:08 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EE09564D89D; Fri, 18 Jun 2021 21:49:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHS2zLCz3Msk; Fri, 18 Jun 2021 21:49:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 474A7216B; Fri, 18 Jun 2021 21:49:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn8vv069245; Fri, 18 Jun 2021 21:49:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn8VP069244; Fri, 18 Jun 2021 21:49:08 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:08 GMT Message-Id: <202106182149.15ILn8VP069244@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: c3518147ceb3 - main - LinuxKPI: fix pci device devres initialisation MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c3518147ceb301b01763c3754697731a24410565 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:09 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=c3518147ceb301b01763c3754697731a24410565 commit c3518147ceb301b01763c3754697731a24410565 Author: Bjoern A. Zeeb AuthorDate: 2021-06-07 17:26:14 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:09 +0000 LinuxKPI: fix pci device devres initialisation Given we are manually setting up the "device" in PCI in some cases, we need to initialise the list and lock for device devres here as well as otherwise we will panic on the uninitialised lock. Sponsored by: The FreeBSD Foundation MFC after: 5 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30681 --- sys/compat/linuxkpi/common/src/linux_pci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index 030951175a42..9738f9e6f51a 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -235,6 +235,8 @@ lkpifill_pci_dev(device_t dev, struct pci_dev *pdev) kobject_set_name(&pdev->dev.kobj, device_get_nameunit(dev)); kobject_add(&pdev->dev.kobj, &linux_root_device.kobj, kobject_name(&pdev->dev.kobj)); + spin_lock_init(&pdev->dev.devres_lock); + INIT_LIST_HEAD(&pdev->dev.devres_head); } static void From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:12 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 34A5F64DD1D; Fri, 18 Jun 2021 21:49:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHV5jkFz3Msx; Fri, 18 Jun 2021 21:49:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 842581F6C; Fri, 18 Jun 2021 21:49:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILnAcX069293; Fri, 18 Jun 2021 21:49:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILnAm1069292; Fri, 18 Jun 2021 21:49:10 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:10 GMT Message-Id: <202106182149.15ILnAm1069292@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: edfcdffefc16 - main - LinuxKPI: fix sg_pcopy_from_buffer() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: edfcdffefc1671b7688c8806ae1f59484954dcc7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:12 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=edfcdffefc1671b7688c8806ae1f59484954dcc7 commit edfcdffefc1671b7688c8806ae1f59484954dcc7 Author: Bjoern A. Zeeb AuthorDate: 2021-06-07 15:00:19 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:10 +0000 LinuxKPI: fix sg_pcopy_from_buffer() In sg_pcopy_from_buffer() is an error in that skip can underflow and lead to bogus page arithmetics which may lead to memory corruption or more likely panics. Once we found a s/g page to copy into there is nothing to skip anymore so simply set skip to 0. Sponsored by: The FreeBSD Foundation MFC after: 5 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30676 --- sys/compat/linuxkpi/common/include/linux/scatterlist.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/include/linux/scatterlist.h b/sys/compat/linuxkpi/common/include/linux/scatterlist.h index ebf0632f6f58..5e42876facd0 100644 --- a/sys/compat/linuxkpi/common/include/linux/scatterlist.h +++ b/sys/compat/linuxkpi/common/include/linux/scatterlist.h @@ -520,12 +520,13 @@ sg_pcopy_from_buffer(struct scatterlist *sgl, unsigned int nents, memcpy(p, b, len); sf_buf_free(sf); + /* We copied so nothing more to skip. */ + skip = 0; copied += len; /* Either we exactly filled the page, or we are done. */ buflen -= len; if (buflen == 0) break; - skip -= len; b += len; } sched_unpin(); From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:13 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 23A2E64DBAE; Fri, 18 Jun 2021 21:49:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHX6gVtz3My1; Fri, 18 Jun 2021 21:49:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C6A851F6D; Fri, 18 Jun 2021 21:49:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILnCQ7069347; Fri, 18 Jun 2021 21:49:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILnC7O069346; Fri, 18 Jun 2021 21:49:12 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:12 GMT Message-Id: <202106182149.15ILnC7O069346@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 41dfd8bd6466 - main - Bump __FreeBSD_version to 1400024 for LinuxKPI change. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 41dfd8bd6466fd39957dee2614d88c81cdf420a7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:13 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=41dfd8bd6466fd39957dee2614d88c81cdf420a7 commit 41dfd8bd6466fd39957dee2614d88c81cdf420a7 Author: Bjoern A. Zeeb AuthorDate: 2021-06-18 21:27:49 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:32:13 +0000 Bump __FreeBSD_version to 1400024 for LinuxKPI change. --- UPDATING | 8 +++++++- sys/sys/param.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/UPDATING b/UPDATING index 61c428bf1af0..5bdca3beac94 100644 --- a/UPDATING +++ b/UPDATING @@ -27,7 +27,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 14.x IS SLOW: world, or to merely disable the most expensive debugging functionality at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) -202106xx: +20210618: + Bump __FreeBSD_version to 1400024 for LinuxKPI changes. + Most notably netdev.h can change now as the (last) dependecies + (mlx4/ofed) are now using struct ifnet directly, but also for PCI + additions and others. + +20210618: The directory "blacklisted" under /usr/share/certs/ has been renamed to "untrusted". diff --git a/sys/sys/param.h b/sys/sys/param.h index 5bb9ffc85980..90a3a2cfac89 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -76,7 +76,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1400023 +#define __FreeBSD_version 1400024 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:09 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8F59B64DB94; Fri, 18 Jun 2021 21:49:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHT3PpGz3Msn; Fri, 18 Jun 2021 21:49:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 59E56216C; Fri, 18 Jun 2021 21:49:09 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILn9fD069269; Fri, 18 Jun 2021 21:49:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILn93T069268; Fri, 18 Jun 2021 21:49:09 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:09 GMT Message-Id: <202106182149.15ILn93T069268@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: d4a4960c6559 - main - LinuxKPI: pci: cleanup some code and add support for "pcim" (managed) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d4a4960c6559caa890af0901a21296e75b961210 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:09 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=d4a4960c6559caa890af0901a21296e75b961210 commit d4a4960c6559caa890af0901a21296e75b961210 Author: Bjoern A. Zeeb AuthorDate: 2021-05-30 16:41:13 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:09 +0000 LinuxKPI: pci: cleanup some code and add support for "pcim" (managed) Restructure some code and add support for various "managed" versions for PCI resource management. This is beyond of what iwlwifi needs but some was found with other wireless drivers and it mostly all goes together. Add one FreeBSD sepcific feature returning the resource rather than the handle to allow us to use bus_*() functions in drivers directly. Sponsored by: The FreeBSD Foundation MFC after: 10 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30558 --- sys/compat/linuxkpi/common/include/linux/pci.h | 356 ++++++++++++++++++++++--- sys/compat/linuxkpi/common/src/linux_pci.c | 68 +++++ 2 files changed, 381 insertions(+), 43 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h index b8a801ac9f70..007665730353 100644 --- a/sys/compat/linuxkpi/common/include/linux/pci.h +++ b/sys/compat/linuxkpi/common/include/linux/pci.h @@ -4,6 +4,10 @@ * Copyright (c) 2010 Panasas, Inc. * Copyright (c) 2013-2016 Mellanox Technologies, Ltd. * All rights reserved. + * Copyright (c) 2020-2021 The FreeBSD Foundation + * + * Portions of this software were developed by Björn Zeeb + * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -209,6 +213,10 @@ extern spinlock_t pci_lock; #define __devexit_p(x) x +/* + * If we find drivers accessing this from multiple KPIs we may have to + * refcount objects of this structure. + */ struct pci_mmio_region { TAILQ_ENTRY(pci_mmio_region) next; struct resource *res; @@ -230,16 +238,47 @@ struct pci_dev { unsigned int devfn; uint32_t class; uint8_t revision; + bool managed; /* devres "pcim_*(). */ + bool want_iomap_res; bool msi_enabled; + bool msix_enabled; phys_addr_t rom; size_t romlen; TAILQ_HEAD(, pci_mmio_region) mmio; }; +/* We need some meta-struct to keep track of these for devres. */ +struct pci_devres { + bool enable_io; + /* PCIR_MAX_BAR_0 + 1 = 6 => BIT(0..5). */ + uint8_t region_mask; + struct resource *region_table[PCIR_MAX_BAR_0 + 1]; /* Not needed. */ +}; +struct pcim_iomap_devres { + void *mmio_table[PCIR_MAX_BAR_0 + 1]; + struct resource *res_table[PCIR_MAX_BAR_0 + 1]; +}; + /* Internal helper function(s). */ struct pci_dev *lkpinew_pci_dev(device_t); +void lkpi_pci_devres_release(struct device *, void *); +void lkpi_pcim_iomap_table_release(struct device *, void *); +static inline int +pci_resource_type(struct pci_dev *pdev, int bar) +{ + struct pci_map *pm; + + pm = pci_find_bar(pdev->dev.bsddev, PCIR_BAR(bar)); + if (!pm) + return (-1); + + if (PCI_BAR_IO(pm->pm_value)) + return (SYS_RES_IOPORT); + else + return (SYS_RES_MEMORY); +} static inline struct resource_list_entry * linux_pci_get_rle(struct pci_dev *pdev, int type, int rid) @@ -255,12 +294,13 @@ linux_pci_get_rle(struct pci_dev *pdev, int type, int rid) static inline struct resource_list_entry * linux_pci_get_bar(struct pci_dev *pdev, int bar) { - struct resource_list_entry *rle; + int type; + type = pci_resource_type(pdev, bar); + if (type < 0) + return (NULL); bar = PCIR_BAR(bar); - if ((rle = linux_pci_get_rle(pdev, SYS_RES_MEMORY, bar)) == NULL) - rle = linux_pci_get_rle(pdev, SYS_RES_IOPORT, bar); - return (rle); + return (linux_pci_get_rle(pdev, type, bar)); } static inline struct device * @@ -282,21 +322,6 @@ linux_pci_find_irq_dev(unsigned int irq) return (found); } -static inline int -pci_resource_type(struct pci_dev *pdev, int bar) -{ - struct pci_map *pm; - - pm = pci_find_bar(pdev->dev.bsddev, PCIR_BAR(bar)); - if (!pm) - return (-1); - - if (PCI_BAR_IO(pm->pm_value)) - return (SYS_RES_IOPORT); - else - return (SYS_RES_MEMORY); -} - /* * All drivers just seem to want to inspect the type not flags. */ @@ -389,9 +414,37 @@ pci_clear_master(struct pci_dev *pdev) return (0); } +static inline struct pci_devres * +lkpi_pci_devres_get_alloc(struct pci_dev *pdev) +{ + struct pci_devres *dr; + + dr = lkpi_devres_find(&pdev->dev, lkpi_pci_devres_release, NULL, NULL); + if (dr == NULL) { + dr = lkpi_devres_alloc(lkpi_pci_devres_release, sizeof(*dr), + GFP_KERNEL | __GFP_ZERO); + if (dr != NULL) + lkpi_devres_add(&pdev->dev, dr); + } + + return (dr); +} +static inline struct pci_devres * +lkpi_pci_devres_find(struct pci_dev *pdev) +{ + + if (!pdev->managed) + return (NULL); + + return (lkpi_pci_devres_get_alloc(pdev)); +} + static inline int pci_request_region(struct pci_dev *pdev, int bar, const char *res_name) { + struct resource *res; + struct pci_devres *dr; + struct pci_mmio_region *mmio; int rid; int type; @@ -399,9 +452,34 @@ pci_request_region(struct pci_dev *pdev, int bar, const char *res_name) if (type < 0) return (-ENODEV); rid = PCIR_BAR(bar); - if (bus_alloc_resource_any(pdev->dev.bsddev, type, &rid, - RF_ACTIVE) == NULL) - return (-EINVAL); + res = bus_alloc_resource_any(pdev->dev.bsddev, type, &rid, + RF_ACTIVE|RF_SHAREABLE); + if (res == NULL) { + device_printf(pdev->dev.bsddev, "%s: failed to alloc " + "bar %d type %d rid %d\n", + __func__, bar, type, PCIR_BAR(bar)); + return (-ENODEV); + } + + /* + * It seems there is an implicit devres tracking on these if the device + * is managed; otherwise the resources are not automatiaclly freed on + * FreeBSD/LinuxKPI tough they should be/are expected to be by Linux + * drivers. + */ + dr = lkpi_pci_devres_find(pdev); + if (dr != NULL) { + dr->region_mask |= (1 << bar); + dr->region_table[bar] = res; + } + + /* Even if the device is not managed we need to track it for iomap. */ + mmio = malloc(sizeof(*mmio), M_DEVBUF, M_WAITOK | M_ZERO); + mmio->rid = PCIR_BAR(bar); + mmio->type = type; + mmio->res = res; + TAILQ_INSERT_TAIL(&pdev->mmio, mmio, next); + return (0); } @@ -409,9 +487,32 @@ static inline void pci_release_region(struct pci_dev *pdev, int bar) { struct resource_list_entry *rle; + struct pci_devres *dr; + struct pci_mmio_region *mmio, *p; if ((rle = linux_pci_get_bar(pdev, bar)) == NULL) return; + + /* + * As we implicitly track the requests we also need to clear them on + * release. Do clear before resource release. + */ + dr = lkpi_pci_devres_find(pdev); + if (dr != NULL) { + KASSERT(dr->region_table[bar] == rle->res, ("%s: pdev %p bar %d" + " region_table res %p != rel->res %p\n", __func__, pdev, + bar, dr->region_table[bar], rle->res)); + dr->region_table[bar] = NULL; + dr->region_mask &= ~(1 << bar); + } + + TAILQ_FOREACH_SAFE(mmio, &pdev->mmio, next, p) { + if (rle->res != (void *)rman_get_bushandle(mmio->res)) + continue; + TAILQ_REMOVE(&pdev->mmio, mmio, next); + free(mmio, M_DEVBUF); + } + bus_release_resource(pdev->dev.bsddev, rle->type, rle->rid, rle->res); } @@ -441,7 +542,7 @@ pci_request_regions(struct pci_dev *pdev, const char *res_name) } static inline void -pci_disable_msix(struct pci_dev *pdev) +lkpi_pci_disable_msix(struct pci_dev *pdev) { pci_release_msi(pdev->dev.bsddev); @@ -454,13 +555,13 @@ pci_disable_msix(struct pci_dev *pdev) */ pdev->dev.irq_start = 0; pdev->dev.irq_end = 0; + pdev->msix_enabled = false; } - -#define pci_disable_msi(pdev) \ - linux_pci_disable_msi(pdev) +/* Only for consistency. No conflict on that one. */ +#define pci_disable_msix(pdev) lkpi_pci_disable_msix(pdev) static inline void -linux_pci_disable_msi(struct pci_dev *pdev) +lkpi_pci_disable_msi(struct pci_dev *pdev) { pci_release_msi(pdev->dev.bsddev); @@ -470,9 +571,7 @@ linux_pci_disable_msi(struct pci_dev *pdev) pdev->irq = pdev->dev.irq; pdev->msi_enabled = false; } - -#define pci_free_irq_vectors(pdev) \ - linux_pci_disable_msi(pdev) +#define pci_disable_msi(pdev) lkpi_pci_disable_msi(pdev) unsigned long pci_resource_start(struct pci_dev *pdev, int bar); unsigned long pci_resource_len(struct pci_dev *pdev, int bar); @@ -653,6 +752,7 @@ pci_enable_msix(struct pci_dev *pdev, struct msix_entry *entries, int nreq) pdev->dev.irq_end = rle->start + avail; for (i = 0; i < nreq; i++) entries[i].vector = pdev->dev.irq_start + i; + pdev->msix_enabled = true; return (0); } @@ -723,36 +823,71 @@ static inline void pci_disable_sriov(struct pci_dev *dev) { } -static inline void * -pci_iomap(struct pci_dev *dev, int mmio_bar, int mmio_size __unused) +static inline struct resource * +_lkpi_pci_iomap(struct pci_dev *pdev, int bar, int mmio_size __unused) { - struct pci_mmio_region *mmio; + struct pci_mmio_region *mmio, *p; + int type; + + type = pci_resource_type(pdev, bar); + if (type < 0) { + device_printf(pdev->dev.bsddev, "%s: bar %d type %d\n", + __func__, bar, type); + return (NULL); + } + + /* + * Check for duplicate mappings. + * This can happen if a driver calls pci_request_region() first. + */ + TAILQ_FOREACH_SAFE(mmio, &pdev->mmio, next, p) { + if (mmio->type == type && mmio->rid == PCIR_BAR(bar)) { + return (mmio->res); + } + } mmio = malloc(sizeof(*mmio), M_DEVBUF, M_WAITOK | M_ZERO); - mmio->rid = PCIR_BAR(mmio_bar); - mmio->type = pci_resource_type(dev, mmio_bar); - mmio->res = bus_alloc_resource_any(dev->dev.bsddev, mmio->type, - &mmio->rid, RF_ACTIVE); + mmio->rid = PCIR_BAR(bar); + mmio->type = type; + mmio->res = bus_alloc_resource_any(pdev->dev.bsddev, mmio->type, + &mmio->rid, RF_ACTIVE|RF_SHAREABLE); if (mmio->res == NULL) { + device_printf(pdev->dev.bsddev, "%s: failed to alloc " + "bar %d type %d rid %d\n", + __func__, bar, type, PCIR_BAR(bar)); free(mmio, M_DEVBUF); return (NULL); } - TAILQ_INSERT_TAIL(&dev->mmio, mmio, next); + TAILQ_INSERT_TAIL(&pdev->mmio, mmio, next); + + return (mmio->res); +} + +static inline void * +pci_iomap(struct pci_dev *pdev, int mmio_bar, int mmio_size) +{ + struct resource *res; - return ((void *)rman_get_bushandle(mmio->res)); + res = _lkpi_pci_iomap(pdev, mmio_bar, mmio_size); + if (res == NULL) + return (NULL); + /* This is a FreeBSD extension so we can use bus_*(). */ + if (pdev->want_iomap_res) + return (res); + return ((void *)rman_get_bushandle(res)); } static inline void -pci_iounmap(struct pci_dev *dev, void *res) +pci_iounmap(struct pci_dev *pdev, void *res) { struct pci_mmio_region *mmio, *p; - TAILQ_FOREACH_SAFE(mmio, &dev->mmio, next, p) { + TAILQ_FOREACH_SAFE(mmio, &pdev->mmio, next, p) { if (res != (void *)rman_get_bushandle(mmio->res)) continue; - bus_release_resource(dev->dev.bsddev, + bus_release_resource(pdev->dev.bsddev, mmio->type, mmio->rid, mmio->res); - TAILQ_REMOVE(&dev->mmio, mmio, next); + TAILQ_REMOVE(&pdev->mmio, mmio, next); free(mmio, M_DEVBUF); return; } @@ -1239,4 +1374,139 @@ pci_bus_write_config_word(struct pci_bus *bus, unsigned int devfn, int pos, struct pci_dev *lkpi_pci_get_class(unsigned int class, struct pci_dev *from); #define pci_get_class(class, from) lkpi_pci_get_class(class, from) +/* -------------------------------------------------------------------------- */ + +static inline int +pcim_enable_device(struct pci_dev *pdev) +{ + struct pci_devres *dr; + int error; + + /* Here we cannot run through the pdev->managed check. */ + dr = lkpi_pci_devres_get_alloc(pdev); + if (dr == NULL) + return (-ENOMEM); + + /* If resources were enabled before do not do it again. */ + if (dr->enable_io) + return (0); + + error = pci_enable_device(pdev); + if (error == 0) + dr->enable_io = true; + + /* This device is not managed. */ + pdev->managed = true; + + return (error); +} + +static inline struct pcim_iomap_devres * +lkpi_pcim_iomap_devres_find(struct pci_dev *pdev) +{ + struct pcim_iomap_devres *dr; + + dr = lkpi_devres_find(&pdev->dev, lkpi_pcim_iomap_table_release, + NULL, NULL); + if (dr == NULL) { + dr = lkpi_devres_alloc(lkpi_pcim_iomap_table_release, + sizeof(*dr), GFP_KERNEL | __GFP_ZERO); + if (dr != NULL) + lkpi_devres_add(&pdev->dev, dr); + } + + if (dr == NULL) + device_printf(pdev->dev.bsddev, "%s: NULL\n", __func__); + + return (dr); +} + +static inline void __iomem ** +pcim_iomap_table(struct pci_dev *pdev) +{ + struct pcim_iomap_devres *dr; + + dr = lkpi_pcim_iomap_devres_find(pdev); + if (dr == NULL) + return (NULL); + + /* + * If the driver has manually set a flag to be able to request the + * resource to use bus_read/write_, return the shadow table. + */ + if (pdev->want_iomap_res) + return ((void **)dr->res_table); + + /* This is the Linux default. */ + return (dr->mmio_table); +} + +static inline int +pcim_iomap_regions_request_all(struct pci_dev *pdev, uint32_t mask, char *name) +{ + struct pcim_iomap_devres *dr; + void *res; + uint32_t mappings, requests, req_mask; + int bar, error; + + dr = lkpi_pcim_iomap_devres_find(pdev); + if (dr == NULL) + return (-ENOMEM); + + /* Request all the BARs ("regions") we do not iomap. */ + req_mask = ((1 << (PCIR_MAX_BAR_0 + 1)) - 1) & ~mask; + for (bar = requests = 0; requests != req_mask; bar++) { + if ((req_mask & (1 << bar)) == 0) + continue; + error = pci_request_region(pdev, bar, name); + if (error != 0 && error != -ENODEV) + goto err; + requests |= (1 << bar); + } + + /* Now iomap all the requested (by "mask") ones. */ + for (bar = mappings = 0; mappings != mask; bar++) { + if ((mask & (1 << bar)) == 0) + continue; + + /* Request double is not allowed. */ + if (dr->mmio_table[bar] != NULL) { + device_printf(pdev->dev.bsddev, "%s: bar %d %p\n", + __func__, bar, dr->mmio_table[bar]); + goto err; + } + + res = _lkpi_pci_iomap(pdev, bar, 0); + if (res == NULL) + goto err; + dr->mmio_table[bar] = (void *)rman_get_bushandle(res); + dr->res_table[bar] = res; + + mappings |= (1 << bar); + } + + return (0); + +err: + for (bar = PCIR_MAX_BAR_0; bar >= 0; bar--) { + if ((mappings & (1 << bar)) != 0) { + res = dr->mmio_table[bar]; + if (res == NULL) + continue; + pci_iounmap(pdev, res); + } else if ((requests & (1 << bar)) != 0) { + pci_release_region(pdev, bar); + } + } + + return (-EINVAL); +} + +/* This is a FreeBSD extension so we can use bus_*(). */ +static inline void +linuxkpi_pcim_want_to_use_bus_functions(struct pci_dev *pdev) +{ + pdev->want_iomap_res = true; +} + #endif /* _LINUX_PCI_H_ */ diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index 9738f9e6f51a..5711296b6d1f 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -1,6 +1,10 @@ /*- * Copyright (c) 2015-2016 Mellanox Technologies, Ltd. * All rights reserved. + * Copyright (c) 2020-2021 The FreeBSD Foundation + * + * Portions of this software were developed by Björn Zeeb + * under sponsorship from the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -230,6 +234,7 @@ lkpifill_pci_dev(device_t dev, struct pci_dev *pdev) pdev->bus->domain = pci_get_domain(dev); pdev->dev.bsddev = dev; pdev->dev.parent = &linux_root_device; + pdev->dev.release = lkpi_pci_dev_release; INIT_LIST_HEAD(&pdev->dev.irqents); kobject_init(&pdev->dev.kobj, &linux_dev_ktype); kobject_set_name(&pdev->dev.kobj, device_get_nameunit(dev)); @@ -296,6 +301,14 @@ lkpi_pci_get_domain_bus_and_slot(int domain, unsigned int bus, return (pdev); } +static void +lkpi_pci_dev_release(struct device *dev) +{ + + lkpi_devres_release_free_list(dev); + spin_lock_destroy(&dev->devres_lock); +} + static int linux_pci_probe(device_t dev) { @@ -425,6 +438,61 @@ linux_pci_detach_device(struct pci_dev *pdev) return (0); } +static int +lkpi_pci_disable_dev(struct device *dev) +{ + + (void) pci_disable_io(dev->bsddev, SYS_RES_MEMORY); + (void) pci_disable_io(dev->bsddev, SYS_RES_IOPORT); + return (0); +} + +void +lkpi_pci_devres_release(struct device *dev, void *p) +{ + struct pci_devres *dr; + struct pci_dev *pdev; + int bar; + + pdev = to_pci_dev(dev); + dr = p; + + if (pdev->msix_enabled) + lkpi_pci_disable_msix(pdev); + if (pdev->msi_enabled) + lkpi_pci_disable_msi(pdev); + + if (dr->enable_io && lkpi_pci_disable_dev(dev) == 0) + dr->enable_io = false; + + if (dr->region_mask == 0) + return; + for (bar = PCIR_MAX_BAR_0; bar >= 0; bar--) { + + if ((dr->region_mask & (1 << bar)) == 0) + continue; + pci_release_region(pdev, bar); + } +} + +void +lkpi_pcim_iomap_table_release(struct device *dev, void *p) +{ + struct pcim_iomap_devres *dr; + struct pci_dev *pdev; + int bar; + + dr = p; + pdev = to_pci_dev(dev); + for (bar = PCIR_MAX_BAR_0; bar >= 0; bar--) { + + if (dr->mmio_table[bar] == NULL) + continue; + + pci_iounmap(pdev, dr->mmio_table[bar]); + } +} + static int linux_pci_suspend(device_t dev) { From owner-dev-commits-src-all@freebsd.org Fri Jun 18 21:49:12 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4868864DD1E; Fri, 18 Jun 2021 21:49:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6CHX00Bzz3McC; Fri, 18 Jun 2021 21:49:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B0FC7242E; Fri, 18 Jun 2021 21:49:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15ILnBrL069323; Fri, 18 Jun 2021 21:49:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15ILnBRP069322; Fri, 18 Jun 2021 21:49:11 GMT (envelope-from git) Date: Fri, 18 Jun 2021 21:49:11 GMT Message-Id: <202106182149.15ILnBRP069322@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 46ae23a4024b - main - LinuxKPI: avoid userret: Returning with with pinned thread MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 46ae23a4024b792c44a2b6c5f80429c40dac120b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 21:49:12 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=46ae23a4024b792c44a2b6c5f80429c40dac120b commit 46ae23a4024b792c44a2b6c5f80429c40dac120b Author: Bjoern A. Zeeb AuthorDate: 2021-06-09 18:53:16 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 21:20:10 +0000 LinuxKPI: avoid userret: Returning with with pinned thread Some code manually calls local_bh_disable() and spin_lock() but then calls spin_unlock_bh() (or vice versa). Our code then calls local_bh_disable() again from spin_lock() which means we have the thread pin count increased twice and that means we get out of synch and are still pinned when returning to user space. Avoid this by adding the explicit local_bh_{enable,disable}() to the spin_[un]lock_bh() versions. Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D30711 --- sys/compat/linuxkpi/common/include/linux/spinlock.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/spinlock.h b/sys/compat/linuxkpi/common/include/linux/spinlock.h index 83f45b1a2a40..ca51fd23434c 100644 --- a/sys/compat/linuxkpi/common/include/linux/spinlock.h +++ b/sys/compat/linuxkpi/common/include/linux/spinlock.h @@ -66,6 +66,7 @@ typedef struct { #define spin_lock_bh(_l) do { \ spin_lock(_l); \ + local_bh_disable(); \ } while (0) #define spin_lock_irq(_l) do { \ @@ -80,6 +81,7 @@ typedef struct { } while (0) #define spin_unlock_bh(_l) do { \ + local_bh_enable(); \ spin_unlock(_l); \ } while (0) From owner-dev-commits-src-all@freebsd.org Fri Jun 18 22:55:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BC89164EC2A; Fri, 18 Jun 2021 22:55:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6Dlz50Jnz3hMF; Fri, 18 Jun 2021 22:55:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 939D12F5D; Fri, 18 Jun 2021 22:55:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15IMtRCR062154; Fri, 18 Jun 2021 22:55:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15IMtRqO062153; Fri, 18 Jun 2021 22:55:27 GMT (envelope-from git) Date: Fri, 18 Jun 2021 22:55:27 GMT Message-Id: <202106182255.15IMtRqO062153@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 5f88df77a6a0 - main - LinuxKPI: fix build after d4a4960c655 pci: "pcim" (managed) support MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5f88df77a6a0c7609700e2f2c35b0dbcb211f1bb Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jun 2021 22:55:27 -0000 The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=5f88df77a6a0c7609700e2f2c35b0dbcb211f1bb commit 5f88df77a6a0c7609700e2f2c35b0dbcb211f1bb Author: Bjoern A. Zeeb AuthorDate: 2021-06-18 22:49:12 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-06-18 22:49:12 +0000 LinuxKPI: fix build after d4a4960c655 pci: "pcim" (managed) support Fix a last minute change from d4a4960c6559caa890af0901a21296e75b961210 based on review feedback in where a function now gets called before it is declared which did not fully get merged back to my commit branch. Noticed by: CI, jkim MFC after: 10 days X-MFC with: d4a4960c6559caa890af0901a21296e75b961210 Sponsored-by: The FreeBSD Foundation --- sys/compat/linuxkpi/common/src/linux_pci.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c index 5711296b6d1f..c35d259a45be 100644 --- a/sys/compat/linuxkpi/common/src/linux_pci.c +++ b/sys/compat/linuxkpi/common/src/linux_pci.c @@ -217,6 +217,14 @@ linux_pci_find(device_t dev, const struct pci_device_id **idp) return (NULL); } +static void +lkpi_pci_dev_release(struct device *dev) +{ + + lkpi_devres_release_free_list(dev); + spin_lock_destroy(&dev->devres_lock); +} + static void lkpifill_pci_dev(device_t dev, struct pci_dev *pdev) { @@ -301,14 +309,6 @@ lkpi_pci_get_domain_bus_and_slot(int domain, unsigned int bus, return (pdev); } -static void -lkpi_pci_dev_release(struct device *dev) -{ - - lkpi_devres_release_free_list(dev); - spin_lock_destroy(&dev->devres_lock); -} - static int linux_pci_probe(device_t dev) { From owner-dev-commits-src-all@freebsd.org Sat Jun 19 05:04:47 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AFB91653181; Sat, 19 Jun 2021 05:04:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6Ny741Rpz4dtP; Sat, 19 Jun 2021 05:04:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6EFAA105BC; Sat, 19 Jun 2021 05:04:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15J54lvh053062; Sat, 19 Jun 2021 05:04:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15J54lp2053061; Sat, 19 Jun 2021 05:04:47 GMT (envelope-from git) Date: Sat, 19 Jun 2021 05:04:47 GMT Message-Id: <202106190504.15J54lp2053061@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: 3f770843d55c - main - stress2: Add snap8.sh back on the exclude list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3f770843d55c905bfd00e8de62fb4d35ec70a7a3 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 05:04:47 -0000 The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=3f770843d55c905bfd00e8de62fb4d35ec70a7a3 commit 3f770843d55c905bfd00e8de62fb4d35ec70a7a3 Author: Peter Holm AuthorDate: 2021-06-19 05:03:25 +0000 Commit: Peter Holm CommitDate: 2021-06-19 05:03:25 +0000 stress2: Add snap8.sh back on the exclude list --- tools/test/stress2/misc/all.exclude | 1 + tools/test/stress2/misc/snap8.sh | 3 +++ 2 files changed, 4 insertions(+) diff --git a/tools/test/stress2/misc/all.exclude b/tools/test/stress2/misc/all.exclude index 9b33cf1a1f23..62ddde1b7ca8 100644 --- a/tools/test/stress2/misc/all.exclude +++ b/tools/test/stress2/misc/all.exclude @@ -51,6 +51,7 @@ quota7.sh panic: dqflush: stray dquot 20120221 sctp3.sh panic: Queues are not empty when handling SHUTDOWN-COMPLETE 20210211 sendfile25.sh WiP 20200611 signal.sh Timing issues. Needs fixing 20171116 +snap8.sh panic: handle_workitem_remove: bad dir delta 20210619 swapoff2.sh swap_pager_force_pagein: read from swap failed 20171223 swapoff5.sh log0005.txt, known issue 20210111 systrace.sh WiP 20200227 diff --git a/tools/test/stress2/misc/snap8.sh b/tools/test/stress2/misc/snap8.sh index 412cd06805af..ffe33593bc6e 100755 --- a/tools/test/stress2/misc/snap8.sh +++ b/tools/test/stress2/misc/snap8.sh @@ -32,6 +32,9 @@ # kern/94769: [ufs] Multiple file deletions on multi-snapshotted filesystems # causes hang +# panic: handle_workitem_remove: bad dir delta +# https://people.freebsd.org/~pho/stress/log/log0121.txt + [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg From owner-dev-commits-src-all@freebsd.org Sat Jun 19 06:09:00 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 823F0654031; Sat, 19 Jun 2021 06:09:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6QND34D5z4hfk; Sat, 19 Jun 2021 06:09:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5242A11421; Sat, 19 Jun 2021 06:09:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15J690V0034256; Sat, 19 Jun 2021 06:09:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15J690Ev034255; Sat, 19 Jun 2021 06:09:00 GMT (envelope-from git) Date: Sat, 19 Jun 2021 06:09:00 GMT Message-Id: <202106190609.15J690Ev034255@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ka Ho Ng Subject: git: 210e6aec4f83 - main - vmm: Fix ivrs_drv device_printf usage MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: khng X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 210e6aec4f83ee0efef348ed9dd86be7592596a1 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 06:09:00 -0000 The branch main has been updated by khng: URL: https://cgit.FreeBSD.org/src/commit/?id=210e6aec4f83ee0efef348ed9dd86be7592596a1 commit 210e6aec4f83ee0efef348ed9dd86be7592596a1 Author: Ka Ho Ng AuthorDate: 2021-06-19 06:05:13 +0000 Commit: Ka Ho Ng CommitDate: 2021-06-19 06:07:26 +0000 vmm: Fix ivrs_drv device_printf usage The original %b description string is wrong. Sponsored by: The FreeBSD Foundation Reviewed by: imp, jhb Differential Revision: https://reviews.freebsd.org/D30805 --- sys/amd64/vmm/amd/ivrs_drv.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/sys/amd64/vmm/amd/ivrs_drv.c b/sys/amd64/vmm/amd/ivrs_drv.c index 67b205076cb2..0fb9ba381df6 100644 --- a/sys/amd64/vmm/amd/ivrs_drv.c +++ b/sys/amd64/vmm/amd/ivrs_drv.c @@ -472,7 +472,7 @@ ivhd_print_flag(device_t dev, enum IvrsType ivhd_type, uint8_t flag) "\005IotlbSup" "\006Coherent" "\007PreFSup" - "\008PPRSup"); + "\010PPRSup"); break; case IVRS_TYPE_HARDWARE_EFR: @@ -562,9 +562,9 @@ ivhd_print_ext_feature(device_t dev, uint64_t ext_feature) "\005GTSup" "\006" "\007IASup" - "\008GASup" - "\009HESup" - "\010PCSup", + "\010GASup" + "\011HESup" + "\012PCSup", REG_BITS(ext_low, 11, 10), REG_BITS(ext_low, 13, 12), REG_BITS(ext_low, 15, 14), @@ -581,17 +581,17 @@ ivhd_print_ext_feature(device_t dev, uint64_t ext_feature) (int)(ext_high), "\020" "\006USSup" - "\009PprOvrflwEarlySup" - "\010PPRAutoRspSup" - "\013BlKStopMrkSup" - "\014PerfOptSup" - "\015MsiCapMmioSup" - "\017GIOSup" - "\018HASup" - "\019EPHSup" - "\020AttrFWSup" - "\021HDSup" - "\023InvIotlbSup", + "\011PprOvrflwEarlySup" + "\012PPRAutoRspSup" + "\015BlKStopMrkSup" + "\016PerfOptSup" + "\017MsiCapMmioSup" + "\021GIOSup" + "\022HASup" + "\023EPHSup" + "\024AttrFWSup" + "\025HDSup" + "\027InvIotlbSup", REG_BITS(ext_high, 5, 0), REG_BITS(ext_high, 8, 7), REG_BITS(ext_high, 11, 10)); From owner-dev-commits-src-all@freebsd.org Sat Jun 19 11:29:10 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 883DF657BAC; Sat, 19 Jun 2021 11:29:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6YTf1RHmz3KDd; Sat, 19 Jun 2021 11:29:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1A99615932; Sat, 19 Jun 2021 11:29:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JBTAh4058059; Sat, 19 Jun 2021 11:29:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JBTAQr058058; Sat, 19 Jun 2021 11:29:10 GMT (envelope-from git) Date: Sat, 19 Jun 2021 11:29:10 GMT Message-Id: <202106191129.15JBTAQr058058@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Stefan E=C3=9Fer?= Subject: git: 84f35b6f86ef - main - sbin/md5: add md5sum to synopsis in the man-page MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: se X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 84f35b6f86efd004a8f25ef6eecea0f5d02733c4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 11:29:10 -0000 The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=84f35b6f86efd004a8f25ef6eecea0f5d02733c4 commit 84f35b6f86efd004a8f25ef6eecea0f5d02733c4 Author: Stefan Eßer AuthorDate: 2021-06-19 11:27:16 +0000 Commit: Stefan Eßer CommitDate: 2021-06-19 11:27:16 +0000 sbin/md5: add md5sum to synopsis in the man-page When invoked with "sum" following the hash name, the -c option takes a file argument, not a string argument. --- sbin/md5/md5.1 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sbin/md5/md5.1 b/sbin/md5/md5.1 index c154c4788f8d..04f13339e533 100644 --- a/sbin/md5/md5.1 +++ b/sbin/md5/md5.1 @@ -1,5 +1,5 @@ .\" $FreeBSD$ -.Dd May 19, 2021 +.Dd June 19, 2021 .Dt MD5 1 .Os .Sh NAME @@ -14,6 +14,11 @@ .Op Fl c Ar string .Op Fl s Ar string .Op Ar +.Nm md5sum +.Op Fl pqrtx +.Op Fl c Ar file +.Op Fl s Ar string +.Op Ar .Pp (All other hashes have the same options and usage.) .Sh DESCRIPTION From owner-dev-commits-src-all@freebsd.org Sat Jun 19 14:09:07 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6C47065A60B; Sat, 19 Jun 2021 14:09:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6d2C1FSsz3lrw; Sat, 19 Jun 2021 14:09:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1400F17BEF; Sat, 19 Jun 2021 14:09:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JE96Od073937; Sat, 19 Jun 2021 14:09:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JE96aE073936; Sat, 19 Jun 2021 14:09:06 GMT (envelope-from git) Date: Sat, 19 Jun 2021 14:09:06 GMT Message-Id: <202106191409.15JE96aE073936@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: ed1acef3fe30 - stable/13 - ipfw: Update the pfil mbuf pointer in ipfw_check_frame() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ed1acef3fe3053b418ce3e41036ccf24957253a4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 14:09:07 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=ed1acef3fe3053b418ce3e41036ccf24957253a4 commit ed1acef3fe3053b418ce3e41036ccf24957253a4 Author: Mark Johnston AuthorDate: 2021-06-16 13:46:56 +0000 Commit: Mark Johnston CommitDate: 2021-06-19 14:08:49 +0000 ipfw: Update the pfil mbuf pointer in ipfw_check_frame() ipfw_chk() might call m_pullup() and thus can change the mbuf chain head. In this case, the new chain head has to be returned to the pfil hook caller, otherwise the pfil hook caller is left with a dangling pointer. Note that this affects only the link-layer hooks installed when the net.link.ether.ipfw sysctl is set to 1. PR: 256439, 254015, 255069, 255104 Fixes: f355cb3e6 Reviewed by: ae Sponsored by: The FreeBSD Foundation (cherry picked from commit bc6a2267fffeafd3946637607a74cfd639398f9d) --- sys/netpfil/ipfw/ip_fw_pfil.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/netpfil/ipfw/ip_fw_pfil.c b/sys/netpfil/ipfw/ip_fw_pfil.c index e21831c80ec6..01a44df47180 100644 --- a/sys/netpfil/ipfw/ip_fw_pfil.c +++ b/sys/netpfil/ipfw/ip_fw_pfil.c @@ -371,6 +371,8 @@ again: } ipfw = ipfw_chk(&args); + if (!mem) + *p.m = args.m; ret = PFIL_PASS; switch (ipfw) { From owner-dev-commits-src-all@freebsd.org Sat Jun 19 14:57:52 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2AAC265B46B; Sat, 19 Jun 2021 14:57:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6f6S0ltrz3s6n; Sat, 19 Jun 2021 14:57:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F252217E74; Sat, 19 Jun 2021 14:57:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JEvpFu040458; Sat, 19 Jun 2021 14:57:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JEvpYH040457; Sat, 19 Jun 2021 14:57:51 GMT (envelope-from git) Date: Sat, 19 Jun 2021 14:57:51 GMT Message-Id: <202106191457.15JEvpYH040457@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 0febdc5ed58e - main - NOTES: Improve wording MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0febdc5ed58eaa6e1ee34866c45bc88065f70e7a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 14:57:52 -0000 The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=0febdc5ed58eaa6e1ee34866c45bc88065f70e7a commit 0febdc5ed58eaa6e1ee34866c45bc88065f70e7a Author: Warner Losh AuthorDate: 2021-06-18 17:53:27 +0000 Commit: Warner Losh CommitDate: 2021-06-19 14:56:58 +0000 NOTES: Improve wording jhb@ pointed out an extra plural in this phrase and a gramatical error, so reword a little to be less awkward to fix both issues. Sponsored by: Netflix --- sys/conf/NOTES | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 877dec98dfe4..1cf7f85fd11f 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1237,10 +1237,9 @@ options CAPABILITY_MODE # sandboxes with no global namespace access # CLOCK OPTIONS # The granularity of operation is controlled by the kernel option HZ (default -# 1000 or 1ms). Virtual machines guests default to an HZ value of 100. Lower -# values produce less overhead at the expense of reduced accuracy in delivery of -# kernel timeouts. With the adaptive tick code, lower values produce less -# benefit than in the past. +# frequency of 1000 Hz or a period 1ms between calls). Virtual machine guests +# use a value of 100. Lower values may lower overhead at the expense of accuracy +# of scheduling, though the adaptive tick code reduces that overhead. options HZ=100 From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:43:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 09C3D65BF56; Sat, 19 Jun 2021 15:43:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6g6v6jl6z3vly; Sat, 19 Jun 2021 15:43:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CEA8518D6F; Sat, 19 Jun 2021 15:43:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFhJI6006568; Sat, 19 Jun 2021 15:43:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFhJTb006567; Sat, 19 Jun 2021 15:43:19 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:43:19 GMT Message-Id: <202106191543.15JFhJTb006567@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 395d907e61d1 - main - regulator: Add manpage for this framework MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 395d907e61d11657176adef3bed997882e4aa580 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:43:20 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=395d907e61d11657176adef3bed997882e4aa580 commit 395d907e61d11657176adef3bed997882e4aa580 Author: Emmanuel Vadot AuthorDate: 2021-06-14 16:35:28 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:42:43 +0000 regulator: Add manpage for this framework Reviewed by: imp, mmel Differential Revision: https://reviews.freebsd.org/D30762 Sponsored by: Diablotin Systems --- share/man/man9/Makefile | 1 + share/man/man9/regulator.9 | 148 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index f7d72ad8cd8f..153870c34af9 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -289,6 +289,7 @@ MAN= accept_filter.9 \ ratecheck.9 \ redzone.9 \ refcount.9 \ + regulator.9 \ resettodr.9 \ resource_int_value.9 \ rijndael.9 \ diff --git a/share/man/man9/regulator.9 b/share/man/man9/regulator.9 new file mode 100644 index 000000000000..d4450de6eef1 --- /dev/null +++ b/share/man/man9/regulator.9 @@ -0,0 +1,148 @@ +.\" Copyright (c) 2021 Emmanuel Vadot +.\" +.\" 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 DEVELOPERS ``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 DEVELOPERS 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. +.\" +.Dd June 14, 2021 +.Dt REGULATOR 9 +.Os +.Sh NAME +.Nm regulator , +.Nm regulator_get_by_name , +.Nm regulator_get_by_id , +.Nm regulator_release , +.Nm regulator_get_name , +.Nm regulator_enable , +.Nm regulator_disable , +.Nm regulator_stop , +.Nm regulator_status , +.Nm regulator_get_voltage , +.Nm regulator_set_voltage , +.Nm regulator_check_voltage , +.Nm regulator_get_by_ofw_property +.Nd regulator methods +.Sh SYNOPSIS +.Cd "options EXT_RESOURCES" +.Cd "device regulator" +.In "dev/extres/regulator/regulator.h" +.Ft int +.Fn regulator_get_by_name "device_t cdev" "const char *name" "regulator_t *regulator" +.Ft int +.Fn regulator_get_by_id "device_t cdev" "device_t pdev" "intptr_t id" "regulator_t *regulator" +.Ft int +.Fn regulator_release "regulator_t regulator" +.Ft int +.Fn regulator_get_name "regulator_t regulator" +.Ft int +.Fn regulator_enable "regulator_t reg" +.Ft int +.Fn regulator_disable "regulator_t reg" +.Ft int +.Fn regulator_stop "regulator_t reg" +.Ft int +.Fn regulator_status "regulator_t reg" "int *status" +.Ft int +.Fn regulator_get_voltage "regulator_t reg" "int *uvolt" +.Ft int +.Fn regulator_set_voltage "regulator_t reg" "int min_uvolt" "int max_uvolt" +.Ft int +.Fn regulator_check_voltage "regulator_t reg" "int uvolt" +.Ft int +.Fn regulator_get_by_ofw_property "device_t dev" "phandle_t node" "char *name" "regulator_t *reg" +.Sh DESCRIPTION +The regulator framework allow drivers to enable, disable and change regulator voltage. +.Sh RETURN VALUES +All functions returns 0 on success or +.Er ENODEV +if the regulator or one of its parent was not found. +.Sh INTERFACE +.Bl -tag -width indent +.It Fn regulator_get_by_name "device_t cdev" "const char *name" "regulator_t *regulator" +Resolve a regulator based on its name. +All regulators names are unique. +This will also increment the refcount on the regulator. +.It Fn regulator_get_by_id "device_t cdev" "device_t pdev" "intptr_t id" "regulator_t *regulator" +Resolve a regulator based on its id. +All regulators ids are unique. +This will also increment the refcount on the regulator. +.It Fn regulator_get_by_ofw_property "device_t dev" "phandle_t node" "char *name" "regulator_t *reg" +Resolve a regulator based on the fdt property named name. +If node is 0 then the function will get the ofw node itself. +This will also increment the refcount on the regulator. +Returns 0 on success or +.Er ENOENT +if the ofw property does not exists. +.It Fn regulator_release "regulator_t regulator" +This disables the regulator, decrements the refcount on it and frees the regulator variable passed. +.It Fn regulator_get_name "regulator_t regulator" +Returns the name of the regulator. +All regulator names are unique. +.It Fn regulator_enable "regulator_t reg" +Enable the regulator. +If the regulator supports a voltage range, the one configured in the hardware will be the output voltage. +If the regulator was already enabled by another driver this simply increments the enable counter. +.It Fn regulator_disable "regulator_t reg" +Disable the regulator. +If the regulator was also enabled by another driver this simply decrements the enable counter. +If the regulator was not previously enabled we will kassert. +.It Fn regulator_stop "regulator_t reg" +Disable the regulator in hardware. +This ensures the regulator is disabled even if it was enabled by bootloader. +This should not be called on regulator that has previously been enabled by a driver. +Returns 0 on success or +.Er EBUSY +if another consumer enabled it. +.It Fn regulator_status "regulator_t reg" "int *status" +Get the hardware status of the regulator. +status will contain a bit mask with +thoses possible value : +.Bl -tag -width indent +.It REGULATOR_STATUS_ENABLED +The regulator is enabled. +.It REGULATOR_STATUS_OVERCURRENT +The hardware reports that too much current is being drawn. +.El +.It Fn regulator_get_voltage "regulator_t reg" "int *uvolt" +Get the current voltage set for the regulator in microvolts. +.It Fn regulator_set_voltage "regulator_t reg" "int min_uvolt" "int max_uvolt" +Change the voltage for the regulator. +If a range is acceptable by the hardware or driver different values can be provided as min and max. +Returns 0 on success or +.Er ERANGE +if the regulator doesn't support this voltage range. +.It Fn regulator_check_voltage "regulator_t reg" "int uvolt" +Checks if the regulator support the given voltage. +Returns 0 on success or +.Er ERANGE +if the regulator doesn't support this voltage range. +.El +.Sh HISTORY +The +.Nm regulator +framework first appear in +.Fx 12.0 . +The +.Nm regulator +framework was written by +.An Michal Meloun Aq Mt mmel@FreeBSD.org . +The +.Nm regulator +manual page was written by +.An Emmanuel Vadot Aq Mt manu@FreeBSD.org . From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:50:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3915D65C2AC; Sat, 19 Jun 2021 15:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6gH517RVz3wDB; Sat, 19 Jun 2021 15:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0F1FC18FC9; Sat, 19 Jun 2021 15:50:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFoONv015359; Sat, 19 Jun 2021 15:50:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFoO8B015358; Sat, 19 Jun 2021 15:50:24 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:50:24 GMT Message-Id: <202106191550.15JFoO8B015358@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 79ac3c12a714 - main - pkgbase: Put dtrace in its own package MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 79ac3c12a714bcd3f2354c52d948aed9575c46d6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:50:25 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=79ac3c12a714bcd3f2354c52d948aed9575c46d6 commit 79ac3c12a714bcd3f2354c52d948aed9575c46d6 Author: Emmanuel Vadot AuthorDate: 2021-06-19 15:49:31 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:49:31 +0000 pkgbase: Put dtrace in its own package While dtrace is usefull some people might not want it. Differential Revision: https://reviews.freebsd.org/D30752 Sponsored by: Diablotin Systems --- cddl/lib/drti/Makefile | 1 + cddl/lib/libdtrace/Makefile | 1 + cddl/usr.sbin/dtrace/Makefile | 1 + cddl/usr.sbin/lockstat/Makefile | 1 + cddl/usr.sbin/plockstat/Makefile | 1 + release/packages/Makefile.package | 2 ++ share/dtrace/Makefile | 1 + 7 files changed, 8 insertions(+) diff --git a/cddl/lib/drti/Makefile b/cddl/lib/drti/Makefile index b38949d1d5fe..321352c7100c 100644 --- a/cddl/lib/drti/Makefile +++ b/cddl/lib/drti/Makefile @@ -2,6 +2,7 @@ .PATH: ${SRCTOP}/cddl/contrib/opensolaris/lib/libdtrace/common +PACKAGE= dtrace SRCS= drti.c FILES= ${SRCS:R:S/$/.o/g} FILESOWN= ${LIBOWN} diff --git a/cddl/lib/libdtrace/Makefile b/cddl/lib/libdtrace/Makefile index 45ca1692cf48..26ff06b46c40 100644 --- a/cddl/lib/libdtrace/Makefile +++ b/cddl/lib/libdtrace/Makefile @@ -3,6 +3,7 @@ .PATH: ${SRCTOP}/cddl/contrib/opensolaris/lib/libdtrace/common .PATH: ${SRCTOP}/cddl/contrib/opensolaris/lib/libgen/common +PACKAGE= dtrace LIB= dtrace SRCS= dt_aggregate.c \ dt_as.c \ diff --git a/cddl/usr.sbin/dtrace/Makefile b/cddl/usr.sbin/dtrace/Makefile index f1248f419bee..d8510e62fb29 100644 --- a/cddl/usr.sbin/dtrace/Makefile +++ b/cddl/usr.sbin/dtrace/Makefile @@ -4,6 +4,7 @@ .PATH: ${SRCTOP}/cddl/contrib/opensolaris/cmd/dtrace +PACKAGE= dtrace PROG= dtrace SRCS= dtrace.c BINDIR?= /usr/sbin diff --git a/cddl/usr.sbin/lockstat/Makefile b/cddl/usr.sbin/lockstat/Makefile index 9b5886bf2061..a4bec42df367 100644 --- a/cddl/usr.sbin/lockstat/Makefile +++ b/cddl/usr.sbin/lockstat/Makefile @@ -2,6 +2,7 @@ .PATH: ${SRCTOP}/cddl/contrib/opensolaris/cmd/lockstat +PACKAGE= dtrace PROG= lockstat SRCS= lockstat.c sym.c BINDIR?= /usr/sbin diff --git a/cddl/usr.sbin/plockstat/Makefile b/cddl/usr.sbin/plockstat/Makefile index c267a2135c3b..22610870c846 100644 --- a/cddl/usr.sbin/plockstat/Makefile +++ b/cddl/usr.sbin/plockstat/Makefile @@ -2,6 +2,7 @@ .PATH: ${SRCTOP}/cddl/contrib/opensolaris/cmd/plockstat +PACKAGE= dtrace PROG= plockstat SRCS= plockstat.c BINDIR?= /usr/sbin diff --git a/release/packages/Makefile.package b/release/packages/Makefile.package index dd7ce63d78a1..459dfdabf590 100644 --- a/release/packages/Makefile.package +++ b/release/packages/Makefile.package @@ -34,6 +34,8 @@ dma_COMMENT= DMA Mail Agent Utilities dma_DESC= DMA Mail Agent Utilities docs_COMMENT= Documentation docs_DESC= Documentation +dtrace_COMMENT= Dtrace Utilities +dtrace_DESC= Dtrace Utilities ee_COMMENT= Easy Editor Utilities ee_DESC= Easy Editor Utilities gdb_COMMENT= GDB Utilities diff --git a/share/dtrace/Makefile b/share/dtrace/Makefile index 95e0b4fee4e3..45b173565796 100644 --- a/share/dtrace/Makefile +++ b/share/dtrace/Makefile @@ -6,6 +6,7 @@ .include +PACKAGE= dtrace SCRIPTS= blocking \ disklatency \ disklatencycmd \ From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:50:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A705C65C129; Sat, 19 Jun 2021 15:50:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6gH74BBYz3vrv; Sat, 19 Jun 2021 15:50:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6D03D18BF5; Sat, 19 Jun 2021 15:50:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFoRut015416; Sat, 19 Jun 2021 15:50:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFoRDp015415; Sat, 19 Jun 2021 15:50:27 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:50:27 GMT Message-Id: <202106191550.15JFoRDp015415@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 081fb644925f - main - pkgbase: Create a FreeBSD-nfs package MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 081fb644925f9d9a21265e4a4303d4fb2ab807f9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:50:27 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=081fb644925f9d9a21265e4a4303d4fb2ab807f9 commit 081fb644925f9d9a21265e4a4303d4fb2ab807f9 Author: Emmanuel Vadot AuthorDate: 2021-06-19 15:49:50 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:49:50 +0000 pkgbase: Create a FreeBSD-nfs package And move all the nfs related commands there. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D30754 Sponsored by: Diablotin Systems --- libexec/rpc.rquotad/Makefile | 2 ++ release/packages/Makefile.package | 2 ++ usr.bin/nfsstat/Makefile | 2 ++ usr.sbin/clear_locks/Makefile | 2 ++ usr.sbin/nfscbd/Makefile | 2 ++ usr.sbin/nfsd/Makefile | 2 ++ usr.sbin/nfsdumpstate/Makefile | 2 ++ usr.sbin/nfsrevoke/Makefile | 2 ++ usr.sbin/nfsuserd/Makefile | 2 ++ usr.sbin/pnfsdscopymr/Makefile | 2 ++ usr.sbin/pnfsdsfile/Makefile | 2 ++ usr.sbin/pnfsdskill/Makefile | 2 ++ usr.sbin/rpc.lockd/Makefile | 2 ++ usr.sbin/rpc.umntall/Makefile | 2 ++ 14 files changed, 28 insertions(+) diff --git a/libexec/rpc.rquotad/Makefile b/libexec/rpc.rquotad/Makefile index 21cb45d18ad0..52f302e0f00b 100644 --- a/libexec/rpc.rquotad/Makefile +++ b/libexec/rpc.rquotad/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG = rpc.rquotad SRCS = rquotad.c MAN = rpc.rquotad.8 diff --git a/release/packages/Makefile.package b/release/packages/Makefile.package index 459dfdabf590..eef58af542e4 100644 --- a/release/packages/Makefile.package +++ b/release/packages/Makefile.package @@ -59,6 +59,8 @@ kernel_COMMENT= FreeBSD Kernel kernel_DESC= FreeBSD Kernel manuals_COMMENT= Manual Pages manuals_DESC= Manual Pages +nfs_COMMENT= NFS Utilities +nfs_DESC= NFS Utilities openssl_COMMENT= OpenSSL Library and Utility openssl_DESC= OpenSSL Library and Utility rc_COMMENT= RC Scripts diff --git a/usr.bin/nfsstat/Makefile b/usr.bin/nfsstat/Makefile index 76b701f73c7d..0e5d53a95dde 100644 --- a/usr.bin/nfsstat/Makefile +++ b/usr.bin/nfsstat/Makefile @@ -1,6 +1,8 @@ # @(#)Makefile 8.1 (Berkeley) 6/6/93 # $FreeBSD$ +PACKAGE= nfs + PROG= nfsstat CFLAGS+=-DNFS diff --git a/usr.sbin/clear_locks/Makefile b/usr.sbin/clear_locks/Makefile index 6906bf0c7e8a..a9355ed2ba29 100644 --- a/usr.sbin/clear_locks/Makefile +++ b/usr.sbin/clear_locks/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG= clear_locks MAN= clear_locks.8 LIBADD= rpcsvc diff --git a/usr.sbin/nfscbd/Makefile b/usr.sbin/nfscbd/Makefile index 1e11e3a81711..668914a88154 100644 --- a/usr.sbin/nfscbd/Makefile +++ b/usr.sbin/nfscbd/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG= nfscbd MAN= nfscbd.8 diff --git a/usr.sbin/nfsd/Makefile b/usr.sbin/nfsd/Makefile index 592a1e429cc7..e9d9b31fd168 100644 --- a/usr.sbin/nfsd/Makefile +++ b/usr.sbin/nfsd/Makefile @@ -1,6 +1,8 @@ # @(#)Makefile 8.1 (Berkeley) 6/5/93 # $FreeBSD$ +PACKAGE= nfs + PROG= nfsd MAN= nfsd.8 nfsv4.4 stablerestart.5 pnfs.4 pnfsserver.4 diff --git a/usr.sbin/nfsdumpstate/Makefile b/usr.sbin/nfsdumpstate/Makefile index 66dd94a71f4a..49f14d7ba4ab 100644 --- a/usr.sbin/nfsdumpstate/Makefile +++ b/usr.sbin/nfsdumpstate/Makefile @@ -2,6 +2,8 @@ .include +PACKAGE= nfs + PROG= nfsdumpstate MAN= nfsdumpstate.8 diff --git a/usr.sbin/nfsrevoke/Makefile b/usr.sbin/nfsrevoke/Makefile index ab78aa3300c3..3583d5e8a67a 100644 --- a/usr.sbin/nfsrevoke/Makefile +++ b/usr.sbin/nfsrevoke/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG= nfsrevoke MAN= nfsrevoke.8 diff --git a/usr.sbin/nfsuserd/Makefile b/usr.sbin/nfsuserd/Makefile index aef51aa4c54d..c8a3553191a7 100644 --- a/usr.sbin/nfsuserd/Makefile +++ b/usr.sbin/nfsuserd/Makefile @@ -2,6 +2,8 @@ .include +PACKAGE= nfs + PROG= nfsuserd MAN= nfsuserd.8 WARNS?= 3 diff --git a/usr.sbin/pnfsdscopymr/Makefile b/usr.sbin/pnfsdscopymr/Makefile index 9fd3952198f6..4cefca6af690 100644 --- a/usr.sbin/pnfsdscopymr/Makefile +++ b/usr.sbin/pnfsdscopymr/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG= pnfsdscopymr MAN= pnfsdscopymr.8 diff --git a/usr.sbin/pnfsdsfile/Makefile b/usr.sbin/pnfsdsfile/Makefile index 83d82eb6ec69..2a85baf33fc1 100644 --- a/usr.sbin/pnfsdsfile/Makefile +++ b/usr.sbin/pnfsdsfile/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG= pnfsdsfile MAN= pnfsdsfile.8 diff --git a/usr.sbin/pnfsdskill/Makefile b/usr.sbin/pnfsdskill/Makefile index 603ab18a4167..49b1c3b00d67 100644 --- a/usr.sbin/pnfsdskill/Makefile +++ b/usr.sbin/pnfsdskill/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= nfs + PROG= pnfsdskill MAN= pnfsdskill.8 diff --git a/usr.sbin/rpc.lockd/Makefile b/usr.sbin/rpc.lockd/Makefile index db812a6c48fd..71c68a2d0ced 100644 --- a/usr.sbin/rpc.lockd/Makefile +++ b/usr.sbin/rpc.lockd/Makefile @@ -1,6 +1,8 @@ # $NetBSD: Makefile,v 1.12 2000/08/07 16:23:31 thorpej Exp $ # $FreeBSD$ +PACKAGE= nfs + PROG= rpc.lockd MAN= rpc.lockd.8 MLINKS= rpc.lockd.8 lockd.8 diff --git a/usr.sbin/rpc.umntall/Makefile b/usr.sbin/rpc.umntall/Makefile index fc4a3998c07c..c44441a6de1a 100644 --- a/usr.sbin/rpc.umntall/Makefile +++ b/usr.sbin/rpc.umntall/Makefile @@ -1,6 +1,8 @@ # @(#)Makefile 8.4 (Berkeley) 6/22/95 # $FreeBSD$ +PACKAGE= nfs + PROG= rpc.umntall MAN= rpc.umntall.8 SRCS= rpc.umntall.c mounttab.c From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:50:26 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 687E365C121; Sat, 19 Jun 2021 15:50:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6gH62NXLz3w57; Sat, 19 Jun 2021 15:50:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 31C8118CEC; Sat, 19 Jun 2021 15:50:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFoQZm015392; Sat, 19 Jun 2021 15:50:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFoQT0015391; Sat, 19 Jun 2021 15:50:26 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:50:26 GMT Message-Id: <202106191550.15JFoQT0015391@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 2c733106aea7 - main - pkgbase: Put chio in utilities MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2c733106aea767e5e48b7fd9bb255835919cc01e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:50:26 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=2c733106aea767e5e48b7fd9bb255835919cc01e commit 2c733106aea767e5e48b7fd9bb255835919cc01e Author: Emmanuel Vadot AuthorDate: 2021-06-19 15:49:44 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:49:44 +0000 pkgbase: Put chio in utilities No need to bloat runtime with this utility. Differential Revision: https://reviews.freebsd.org/D30753 Sponsored by: Diablotin Systems --- bin/chio/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/chio/Makefile b/bin/chio/Makefile index ddb07d968129..a88e7df4604c 100644 --- a/bin/chio/Makefile +++ b/bin/chio/Makefile @@ -1,7 +1,7 @@ # $FreeBSD$ # @(#)Makefile 8.1 (Berkeley) 6/6/93 -PACKAGE=runtime +PACKAGE=utilities PROG= chio .include From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:50:30 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 052D165BAFA; Sat, 19 Jun 2021 15:50:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6gH95RZGz3wDW; Sat, 19 Jun 2021 15:50:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 95EA518D78; Sat, 19 Jun 2021 15:50:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFoTB6015464; Sat, 19 Jun 2021 15:50:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFoTJR015463; Sat, 19 Jun 2021 15:50:29 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:50:29 GMT Message-Id: <202106191550.15JFoTJR015463@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: af5e40770e09 - main - pkgbase: Put the mibs and defs in the bnsmp package MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: af5e40770e093cc5b0a1845f2f7b011676b3c709 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:50:30 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=af5e40770e093cc5b0a1845f2f7b011676b3c709 commit af5e40770e093cc5b0a1845f2f7b011676b3c709 Author: Emmanuel Vadot AuthorDate: 2021-06-19 15:50:03 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:50:03 +0000 pkgbase: Put the mibs and defs in the bnsmp package Differential Revision: https://reviews.freebsd.org/D30756 Sponsored by: Diablotin Systems --- lib/libbsnmp/libbsnmp/Makefile | 1 + share/mk/bsd.snmpmod.mk | 3 +++ share/snmp/mibs/Makefile | 2 ++ usr.sbin/bsnmpd/bsnmpd/Makefile | 3 +++ 4 files changed, 9 insertions(+) diff --git a/lib/libbsnmp/libbsnmp/Makefile b/lib/libbsnmp/libbsnmp/Makefile index aac554b3bc74..d4c48a879303 100644 --- a/lib/libbsnmp/libbsnmp/Makefile +++ b/lib/libbsnmp/libbsnmp/Makefile @@ -137,5 +137,6 @@ MLINKS+= bsnmplib.3 snmp_value_parse.3 FILESGROUPS+= DEFS DEFS= tc.def DEFSDIR?= ${SHAREDIR}/snmp/defs +DEFSPACKAGE= bsnmp .include diff --git a/share/mk/bsd.snmpmod.mk b/share/mk/bsd.snmpmod.mk index 6ecbbcf09bf7..7956b89382b5 100644 --- a/share/mk/bsd.snmpmod.mk +++ b/share/mk/bsd.snmpmod.mk @@ -32,6 +32,9 @@ FILESGROUPS+= BMIBS BMIBSDIR?= ${SHAREDIR}/snmp/mibs .endif +DEFSPACKAGE= bsnmp +BMIBSPACKAGE= bsnmp + .if !target(smilint) && !empty(BMIBS) LOCALBASE?= /usr/local diff --git a/share/snmp/mibs/Makefile b/share/snmp/mibs/Makefile index 8bee4c85624e..e4cc1d1d6fb0 100644 --- a/share/snmp/mibs/Makefile +++ b/share/snmp/mibs/Makefile @@ -1,5 +1,7 @@ # $FreeBSD$ +PACKAGE= bsnmp + FILES= FREEBSD-MIB.txt FILESDIR= ${SHAREDIR}/snmp/mibs diff --git a/usr.sbin/bsnmpd/bsnmpd/Makefile b/usr.sbin/bsnmpd/bsnmpd/Makefile index 8555eaee67b8..05d617279ff0 100644 --- a/usr.sbin/bsnmpd/bsnmpd/Makefile +++ b/usr.sbin/bsnmpd/bsnmpd/Makefile @@ -120,6 +120,9 @@ MLINKS+= snmpmod.3 usm_user.3 FILESGROUPS= BMIBS DEFS +DEFSPACKAGE= bsnmp +BMIBSPACKAGE= bsnmp + BMIBS= FOKUS-MIB.txt BEGEMOT-MIB.txt BEGEMOT-SNMPD.txt BMIBSDIR= ${SHAREDIR}/snmp/mibs DEFS= tree.def From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:50:28 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A18A965C2B2; Sat, 19 Jun 2021 15:50:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6gH849gkz3wJb; Sat, 19 Jun 2021 15:50:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7808118CED; Sat, 19 Jun 2021 15:50:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFoStQ015440; Sat, 19 Jun 2021 15:50:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFoSsP015439; Sat, 19 Jun 2021 15:50:28 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:50:28 GMT Message-Id: <202106191550.15JFoSsP015439@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: c42e9af5f12e - main - pkgbase: Move ctld/ctladm to iscsi package MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c42e9af5f12ef3da0429aacb91119ea31ef146e7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:50:28 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=c42e9af5f12ef3da0429aacb91119ea31ef146e7 commit c42e9af5f12ef3da0429aacb91119ea31ef146e7 Author: Emmanuel Vadot AuthorDate: 2021-06-19 15:49:57 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:49:57 +0000 pkgbase: Move ctld/ctladm to iscsi package While here only compile both of them if WITH_ISCSI is set (this is the default). Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D30755 Sponsored by: Diablotin Systems --- usr.sbin/Makefile | 4 +--- usr.sbin/ctladm/Makefile | 1 + usr.sbin/ctld/Makefile | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index 12285ad1d1fd..6acef31cc23a 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -15,8 +15,6 @@ SUBDIR= adduser \ clear_locks \ crashinfo \ cron \ - ctladm \ - ctld \ daemon \ dconschat \ devctl \ @@ -152,7 +150,7 @@ SUBDIR.${MK_INET6}+= rtsold SUBDIR.${MK_INET6}+= traceroute6 SUBDIR.${MK_INETD}+= inetd SUBDIR.${MK_IPFW}+= ipfwpcap -SUBDIR.${MK_ISCSI}+= iscsid +SUBDIR.${MK_ISCSI}+= ctladm ctld iscsid SUBDIR.${MK_JAIL}+= jail SUBDIR.${MK_JAIL}+= jexec SUBDIR.${MK_JAIL}+= jls diff --git a/usr.sbin/ctladm/Makefile b/usr.sbin/ctladm/Makefile index 9f7386bdc36c..c98643b50dcb 100644 --- a/usr.sbin/ctladm/Makefile +++ b/usr.sbin/ctladm/Makefile @@ -2,6 +2,7 @@ .include +PACKAGE= iscsi PROG= ctladm SRCS= ctladm.c util.c ctl_util.c ctl_scsi_all.c .PATH: ${SRCTOP}/sys/cam/ctl diff --git a/usr.sbin/ctld/Makefile b/usr.sbin/ctld/Makefile index 08dcb79d0d84..ec207f024ab1 100644 --- a/usr.sbin/ctld/Makefile +++ b/usr.sbin/ctld/Makefile @@ -5,6 +5,7 @@ CFLAGS+=-I${SRCTOP}/contrib/libucl/include .PATH: ${SRCTOP}/contrib/libucl/include +PACKAGE= iscsi PROG= ctld SRCS= chap.c ctld.c discovery.c isns.c kernel.c keys.c log.c SRCS+= login.c parse.y pdu.c token.l y.tab.h uclparse.c From owner-dev-commits-src-all@freebsd.org Sat Jun 19 15:50:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9F83E65C504; Sat, 19 Jun 2021 15:50:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6gHC0z65z3wGd; Sat, 19 Jun 2021 15:50:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B6BB218CEE; Sat, 19 Jun 2021 15:50:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JFoUhl015488; Sat, 19 Jun 2021 15:50:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JFoUDc015487; Sat, 19 Jun 2021 15:50:30 GMT (envelope-from git) Date: Sat, 19 Jun 2021 15:50:30 GMT Message-Id: <202106191550.15JFoUDc015487@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: ed0a582d88f7 - main - pkgbase: Put the last sendmail files in the sendmail package MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ed0a582d88f7cb8deea9b6fbe6dade43911c0dd7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 15:50:31 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=ed0a582d88f7cb8deea9b6fbe6dade43911c0dd7 commit ed0a582d88f7cb8deea9b6fbe6dade43911c0dd7 Author: Emmanuel Vadot AuthorDate: 2021-06-19 15:50:11 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 15:50:11 +0000 pkgbase: Put the last sendmail files in the sendmail package Differential Revision: https://reviews.freebsd.org/D30757 Sponsored by: Diablotin Systems --- etc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/Makefile b/etc/Makefile index 8ca259b10a17..104e40b6e345 100644 --- a/etc/Makefile +++ b/etc/Makefile @@ -76,10 +76,10 @@ distribution: .if ${MK_MAIL} != "no" cd ${.CURDIR}/mail; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \ - -T "package=runtime" ${ETCMAIL} ${DESTDIR}/etc/mail + -T "package=sendmail" ${ETCMAIL} ${DESTDIR}/etc/mail if [ -d ${DESTDIR}/etc/mail -a -f ${DESTDIR}/etc/mail/aliases -a \ ! -f ${DESTDIR}/etc/aliases ]; then \ - ${INSTALL_SYMLINK} -T "package=runtime" \ + ${INSTALL_SYMLINK} -T "package=sendmail" \ mail/aliases ${DESTDIR}/etc/aliases; \ fi .endif From owner-dev-commits-src-all@freebsd.org Sat Jun 19 16:22:25 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8F78F65CA97; Sat, 19 Jun 2021 16:22:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6h013ckNz4Rs4; Sat, 19 Jun 2021 16:22:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6559C19998; Sat, 19 Jun 2021 16:22:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JGMPKQ059791; Sat, 19 Jun 2021 16:22:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JGMPOT059790; Sat, 19 Jun 2021 16:22:25 GMT (envelope-from git) Date: Sat, 19 Jun 2021 16:22:25 GMT Message-Id: <202106191622.15JGMPOT059790@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 3fd20a79e7b5 - main - libalias: Stats are unsigned MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3fd20a79e7b55d135bbc5fa197980fe0e9ee0f14 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 16:22:25 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=3fd20a79e7b55d135bbc5fa197980fe0e9ee0f14 commit 3fd20a79e7b55d135bbc5fa197980fe0e9ee0f14 Author: Lutz Donnerhacke AuthorDate: 2021-05-31 22:08:24 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 16:21:17 +0000 libalias: Stats are unsigned Stats counters are used as unsigned valued (i.e. printf("%u")) but are defined as signed int. This causes trouble later, so fix it early. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30587 --- sys/netinet/libalias/alias_local.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index fcdaa1690470..8e2fe88fe620 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -97,14 +97,14 @@ struct libalias { /* HouseKeeping */ TAILQ_HEAD (, alias_link) checkExpire; /* Link statistics */ - int icmpLinkCount; - int udpLinkCount; - int tcpLinkCount; - int pptpLinkCount; - int protoLinkCount; - int fragmentIdLinkCount; - int fragmentPtrLinkCount; - int sockCount; + unsigned int icmpLinkCount; + unsigned int udpLinkCount; + unsigned int tcpLinkCount; + unsigned int pptpLinkCount; + unsigned int protoLinkCount; + unsigned int fragmentIdLinkCount; + unsigned int fragmentPtrLinkCount; + unsigned int sockCount; /* System time in seconds for current packet */ int timeStamp; /* If equal to zero, DeleteLink() From owner-dev-commits-src-all@freebsd.org Sat Jun 19 16:38:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1E1B465CE7D; Sat, 19 Jun 2021 16:38:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6hLN0M0nz4Sjh; Sat, 19 Jun 2021 16:38:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E95081975D; Sat, 19 Jun 2021 16:38:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JGcJIh073822; Sat, 19 Jun 2021 16:38:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JGcJFs073821; Sat, 19 Jun 2021 16:38:19 GMT (envelope-from git) Date: Sat, 19 Jun 2021 16:38:19 GMT Message-Id: <202106191638.15JGcJFs073821@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: ef828d39be8e - main - libalias: Promote per instance global variable timeStamp MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ef828d39be8e4b6d922db080ed41611702dec56d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 16:38:20 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=ef828d39be8e4b6d922db080ed41611702dec56d commit ef828d39be8e4b6d922db080ed41611702dec56d Author: Lutz Donnerhacke AuthorDate: 2021-05-25 07:07:21 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 16:25:44 +0000 libalias: Promote per instance global variable timeStamp Summary: - Use LibAliasTime as a real global variable for central timekeeping. - Reduce number of syscalls in user space considerably. - Dynamically adjust the packet counters to match the second resolution. - Only check the first few packets after a time increase for expiry. Discussed with: hselasky MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30566 --- sys/netinet/libalias/alias_db.c | 60 +++++++++++++++++++++++++------------- sys/netinet/libalias/alias_local.h | 5 ++-- sys/netinet/libalias/alias_sctp.c | 16 +++++----- 3 files changed, 50 insertions(+), 31 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index fca2f33906d3..8f6db015fe86 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -176,6 +176,7 @@ __FBSDID("$FreeBSD$"); #endif static LIST_HEAD(, libalias) instancehead = LIST_HEAD_INITIALIZER(instancehead); +int LibAliasTime; /* Constants (note: constants are also defined @@ -820,7 +821,7 @@ CleanupLink(struct libalias *la, struct alias_link **lnk) if (lnk == NULL || *lnk == NULL) return; - if (la->timeStamp - (*lnk)->timestamp > (*lnk)->expire_time) { + if (LibAliasTime - (*lnk)->timestamp > (*lnk)->expire_time) { DeleteLink(lnk); if ((*lnk) == NULL) return; @@ -940,7 +941,7 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, #endif lnk->flags = 0; lnk->pflags = 0; - lnk->timestamp = la->timeStamp; + lnk->timestamp = LibAliasTime; /* Expiration time */ switch (link_type) { @@ -1109,7 +1110,7 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr, CleanupLink(la, &lnk); if (lnk != NULL) - lnk->timestamp = la->timeStamp; + lnk->timestamp = LibAliasTime; /* Search for partially specified links. */ if (lnk == NULL && replace_partial_links) { @@ -1240,7 +1241,7 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, CleanupLink(la, &lnk_fully_specified); if (lnk_fully_specified != NULL) { - lnk_fully_specified->timestamp = la->timeStamp; + lnk_fully_specified->timestamp = LibAliasTime; lnk = lnk_fully_specified; } else if (lnk_unknown_dst_port != NULL) lnk = lnk_unknown_dst_port; @@ -2101,24 +2102,45 @@ SetDestCallId(struct alias_link *lnk, u_int16_t cid) void HouseKeeping(struct libalias *la) { - struct alias_link * lnk = TAILQ_FIRST(&la->checkExpire); -#ifndef _KERNEL - struct timeval tv; -#endif + static unsigned int packets = 0; + static unsigned int packet_limit = 1000; LIBALIAS_LOCK_ASSERT(la); + packets++; + /* - * Save system time (seconds) in global variable timeStamp for use - * by other functions. This is done so as not to unnecessarily - * waste timeline by making system calls. + * User space time/gettimeofday/... is very expensive. + * Kernel space cache trashing is unnecessary. + * + * Save system time (seconds) in global variable LibAliasTime + * for use by other functions. This is done so as not to + * unnecessarily waste timeline by making system calls. + * + * Reduce the amount of house keeping work substantially by + * sampling over the packets. */ + if (packets % packet_limit == 0) { + time_t now; + #ifdef _KERNEL - la->timeStamp = time_uptime; + now = time_uptime; #else - gettimeofday(&tv, NULL); - la->timeStamp = tv.tv_sec; + now = time(NULL); #endif - CleanupLink(la, &lnk); + if (now != LibAliasTime) { + /* retry three times a second */ + packet_limit = packets / 3; + packets = 0; + LibAliasTime = now; + } + + } + /* Do a cleanup for the first packets of the new second only */ + if (packets < (la->udpLinkCount + la->tcpLinkCount)) { + struct alias_link * lnk = TAILQ_FIRST(&la->checkExpire); + + CleanupLink(la, &lnk); + } } /* Init the log file and enable logging */ @@ -2392,9 +2414,6 @@ struct libalias * LibAliasInit(struct libalias *la) { int i; -#ifndef _KERNEL - struct timeval tv; -#endif if (la == NULL) { #ifdef _KERNEL @@ -2414,10 +2433,9 @@ LibAliasInit(struct libalias *la) LIST_INSERT_HEAD(&instancehead, la, instancelist); #ifdef _KERNEL - la->timeStamp = time_uptime; + LibAliasTime = time_uptime; #else - gettimeofday(&tv, NULL); - la->timeStamp = tv.tv_sec; + LibAliasTime = time(NULL); #endif for (i = 0; i < LINK_TABLE_OUT_SIZE; i++) diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index 8e2fe88fe620..f1b40f0438da 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -105,8 +105,6 @@ struct libalias { unsigned int fragmentIdLinkCount; unsigned int fragmentPtrLinkCount; unsigned int sockCount; - /* System time in seconds for current packet */ - int timeStamp; /* If equal to zero, DeleteLink() * will not remove permanent links */ int deleteAllLinks; @@ -206,6 +204,9 @@ struct libalias { /* Prototypes */ +/* System time in seconds for current packet */ +extern int LibAliasTime; + /* * SctpFunction prototypes * diff --git a/sys/netinet/libalias/alias_sctp.c b/sys/netinet/libalias/alias_sctp.c index 719af1512a05..b88ad2b28ca8 100644 --- a/sys/netinet/libalias/alias_sctp.c +++ b/sys/netinet/libalias/alias_sctp.c @@ -298,10 +298,10 @@ static MALLOC_DEFINE(M_SCTPNAT, "sctpnat", "sctp nat dbs"); #define SN_MAX_TIMER 600 #define SN_TIMER_QUEUE_SIZE SN_MAX_TIMER+2 -#define SN_I_T(la) (la->timeStamp + sysctl_init_timer) /**< INIT State expiration time in seconds */ -#define SN_U_T(la) (la->timeStamp + sysctl_up_timer) /**< UP State expiration time in seconds */ -#define SN_C_T(la) (la->timeStamp + sysctl_shutdown_timer) /**< CL State expiration time in seconds */ -#define SN_X_T(la) (la->timeStamp + sysctl_holddown_timer) /**< Wait after a shutdown complete in seconds */ +#define SN_I_T(la) (LibAliasTime + sysctl_init_timer) /**< INIT State expiration time in seconds */ +#define SN_U_T(la) (LibAliasTime + sysctl_up_timer) /**< UP State expiration time in seconds */ +#define SN_C_T(la) (LibAliasTime + sysctl_shutdown_timer) /**< CL State expiration time in seconds */ +#define SN_X_T(la) (LibAliasTime + sysctl_holddown_timer) /**< Wait after a shutdown complete in seconds */ /** @} * @defgroup sysctl SysCtl Variable and callback function declarations * @@ -667,9 +667,9 @@ AliasSctpInit(struct libalias *la) for (i = 0; i < SN_TIMER_QUEUE_SIZE; i++) LIST_INIT(&la->sctpNatTimer.TimerQ[i]); #ifdef _KERNEL - la->sctpNatTimer.loc_time=time_uptime; /* la->timeStamp is not set yet */ + la->sctpNatTimer.loc_time=time_uptime; /* LibAliasTime is not set yet */ #else - la->sctpNatTimer.loc_time=la->timeStamp; + la->sctpNatTimer.loc_time=LibAliasTime; #endif la->sctpNatTimer.cur_loc = 0; la->sctpLinkCount = 0; @@ -2493,12 +2493,12 @@ sctp_CheckTimers(struct libalias *la) struct sctp_nat_assoc *assoc; LIBALIAS_LOCK_ASSERT(la); - while(la->timeStamp >= la->sctpNatTimer.loc_time) { + while(LibAliasTime >= la->sctpNatTimer.loc_time) { while (!LIST_EMPTY(&la->sctpNatTimer.TimerQ[la->sctpNatTimer.cur_loc])) { assoc = LIST_FIRST(&la->sctpNatTimer.TimerQ[la->sctpNatTimer.cur_loc]); //SLIST_REMOVE_HEAD(&la->sctpNatTimer.TimerQ[la->sctpNatTimer.cur_loc], timer_Q); LIST_REMOVE(assoc, timer_Q); - if (la->timeStamp >= assoc->exp) { /* state expired */ + if (LibAliasTime >= assoc->exp) { /* state expired */ SN_LOG(((assoc->state == SN_CL) ? (SN_LOG_DEBUG) : (SN_LOG_INFO)), logsctperror("Timer Expired", assoc->g_vtag, assoc->state, SN_TO_NODIR)); RmSctpAssoc(la, assoc); From owner-dev-commits-src-all@freebsd.org Sat Jun 19 17:05:01 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 84ECA65D32C; Sat, 19 Jun 2021 17:05:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6hx9353Lz4VDG; Sat, 19 Jun 2021 17:05:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 521EA1A29B; Sat, 19 Jun 2021 17:05:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JH51hF013283; Sat, 19 Jun 2021 17:05:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JH51J9013282; Sat, 19 Jun 2021 17:05:01 GMT (envelope-from git) Date: Sat, 19 Jun 2021 17:05:01 GMT Message-Id: <202106191705.15JH51J9013282@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: d41044ddfdbc - main - libalias: Restructure - Common search terms MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d41044ddfdbc2a026570cae11d5fc2e18f5e4b92 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 17:05:01 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=d41044ddfdbc2a026570cae11d5fc2e18f5e4b92 commit d41044ddfdbc2a026570cae11d5fc2e18f5e4b92 Author: Lutz Donnerhacke AuthorDate: 2021-05-25 13:03:34 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 16:58:52 +0000 libalias: Restructure - Common search terms Factor out the common Out and In filter Slightly better performance due to eager skip of search loop MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30568 --- sys/netinet/libalias/alias_db.c | 48 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 8f6db015fe86..342f6117f878 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -1096,15 +1096,19 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr, u_int i; struct alias_link *lnk; +#define OUTGUARD \ + if (lnk->src_port != src_port || \ + lnk->src_addr.s_addr != src_addr.s_addr || \ + lnk->link_type != link_type || \ + lnk->server != NULL) \ + continue; + LIBALIAS_LOCK_ASSERT(la); i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) { + OUTGUARD; if (lnk->dst_addr.s_addr == dst_addr.s_addr && - lnk->src_addr.s_addr == src_addr.s_addr && - lnk->src_port == src_port && - lnk->dst_port == dst_port && - lnk->link_type == link_type && - lnk->server == NULL) + lnk->dst_port == dst_port) break; } @@ -1133,6 +1137,7 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr, link_type); } } +#undef OUTGUARD return (lnk); } @@ -1197,47 +1202,42 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, if (dst_port == 0) flags_in |= LINK_UNKNOWN_DEST_PORT; +#define INGUARD \ + if (lnk->alias_port != alias_port || \ + lnk->link_type != link_type || \ + lnk->alias_addr.s_addr != alias_addr.s_addr) \ + continue; + /* Search loop */ start_point = StartPointIn(alias_addr, alias_port, link_type); LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { int flags; + INGUARD; flags = flags_in | lnk->flags; if (!(flags & LINK_PARTIALLY_SPECIFIED)) { - if (lnk->alias_addr.s_addr == alias_addr.s_addr - && lnk->alias_port == alias_port - && lnk->dst_addr.s_addr == dst_addr.s_addr - && lnk->dst_port == dst_port - && lnk->link_type == link_type) { + if (lnk->dst_addr.s_addr == dst_addr.s_addr + && lnk->dst_port == dst_port) { lnk_fully_specified = lnk; break; } } else if ((flags & LINK_UNKNOWN_DEST_ADDR) && (flags & LINK_UNKNOWN_DEST_PORT)) { - if (lnk->alias_addr.s_addr == alias_addr.s_addr - && lnk->alias_port == alias_port - && lnk->link_type == link_type) { - if (lnk_unknown_all == NULL) - lnk_unknown_all = lnk; - } + if (lnk_unknown_all == NULL) + lnk_unknown_all = lnk; } else if (flags & LINK_UNKNOWN_DEST_ADDR) { - if (lnk->alias_addr.s_addr == alias_addr.s_addr - && lnk->alias_port == alias_port - && lnk->link_type == link_type - && lnk->dst_port == dst_port) { + if (lnk->dst_port == dst_port) { if (lnk_unknown_dst_addr == NULL) lnk_unknown_dst_addr = lnk; } } else if (flags & LINK_UNKNOWN_DEST_PORT) { - if (lnk->alias_addr.s_addr == alias_addr.s_addr - && lnk->alias_port == alias_port - && lnk->link_type == link_type - && lnk->dst_addr.s_addr == dst_addr.s_addr) { + if (lnk->dst_addr.s_addr == dst_addr.s_addr) { if (lnk_unknown_dst_port == NULL) lnk_unknown_dst_port = lnk; } } } +#undef INGUARD CleanupLink(la, &lnk_fully_specified); if (lnk_fully_specified != NULL) { From owner-dev-commits-src-all@freebsd.org Sat Jun 19 17:06:59 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 262F865D345; Sat, 19 Jun 2021 17:06:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6hzR0dPYz4VDv; Sat, 19 Jun 2021 17:06:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EF4501A27D; Sat, 19 Jun 2021 17:06:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JH6wiO013549; Sat, 19 Jun 2021 17:06:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JH6wuw013548; Sat, 19 Jun 2021 17:06:58 GMT (envelope-from git) Date: Sat, 19 Jun 2021 17:06:58 GMT Message-Id: <202106191706.15JH6wuw013548@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 20d601682efe - main - mmccam: Style(9) more mmc_da.c MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 20d601682efe4332dc317a77afada70fa367f89a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 17:06:59 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=20d601682efe4332dc317a77afada70fa367f89a commit 20d601682efe4332dc317a77afada70fa367f89a Author: Emmanuel Vadot AuthorDate: 2021-06-17 15:54:56 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 17:06:54 +0000 mmccam: Style(9) more mmc_da.c No functional changes. Sponsored by: Diablotin Systems --- sys/cam/mmc/mmc_da.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/sys/cam/mmc/mmc_da.c b/sys/cam/mmc/mmc_da.c index 7b2753d5c769..8deba8ccfaff 100644 --- a/sys/cam/mmc/mmc_da.c +++ b/sys/cam/mmc/mmc_da.c @@ -446,12 +446,12 @@ mmc_format_card_id_string(struct sdda_softc *sc, struct mmc_params *mmcp) snprintf(sc->card_sn_string, sizeof(sc->card_sn_string), "%08X", sc->cid.psn); snprintf(sc->card_id_string, sizeof(sc->card_id_string), - "%s%s %s %d.%d SN %08X MFG %02d/%04d by %d %s", - mmcp->card_features & CARD_FEATURE_MMC ? "MMC" : "SD", - mmcp->card_features & CARD_FEATURE_SDHC ? "HC" : "", - sc->cid.pnm, sc->cid.prv >> 4, sc->cid.prv & 0x0f, - sc->cid.psn, sc->cid.mdt_month, sc->cid.mdt_year, - sc->cid.mid, oidstr); + "%s%s %s %d.%d SN %08X MFG %02d/%04d by %d %s", + mmcp->card_features & CARD_FEATURE_MMC ? "MMC" : "SD", + mmcp->card_features & CARD_FEATURE_SDHC ? "HC" : "", + sc->cid.pnm, sc->cid.prv >> 4, sc->cid.prv & 0x0f, + sc->cid.psn, sc->cid.mdt_month, sc->cid.mdt_year, + sc->cid.mid, oidstr); } static int @@ -603,7 +603,7 @@ sddadiskgonecb(struct disk *dp) part = (struct sdda_part *)dp->d_drv1; periph = part->sc->periph; - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddadiskgonecb\n")); + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddadiskgonecb\n")); cam_periph_release(periph); } @@ -616,7 +616,7 @@ sddaoninvalidate(struct cam_periph *periph) softc = (struct sdda_softc *)periph->softc; - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaoninvalidate\n")); + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaoninvalidate\n")); /* * De-register any async callbacks. @@ -628,15 +628,14 @@ sddaoninvalidate(struct cam_periph *periph) * XXX Handle any transactions queued to the card * with XPT_ABORT_CCB. */ - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("bioq_flush start\n")); + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("bioq_flush start\n")); for (int i = 0; i < MMC_PART_MAX; i++) { if ((part = softc->part[i]) != NULL) { bioq_flush(&part->bio_queue, NULL, ENXIO); disk_gone(part->disk); } } - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("bioq_flush end\n")); - + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("bioq_flush end\n")); } static void @@ -675,7 +674,7 @@ sddaasync(void *callback_arg, u_int32_t code, switch (code) { case AC_FOUND_DEVICE: { - CAM_DEBUG(path, CAM_DEBUG_TRACE, ("=> AC_FOUND_DEVICE\n")); + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("=> AC_FOUND_DEVICE\n")); struct ccb_getdev *cgd; cam_status status; @@ -686,10 +685,10 @@ sddaasync(void *callback_arg, u_int32_t code, if (cgd->protocol != PROTO_MMCSD) break; - if (!(path->device->mmc_ident_data.card_features & CARD_FEATURE_MEMORY)) { - CAM_DEBUG(path, CAM_DEBUG_TRACE, ("No memory on the card!\n")); - break; - } + if (!(path->device->mmc_ident_data.card_features & CARD_FEATURE_MEMORY)) { + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("No memory on the card!\n")); + break; + } /* * Allocate a peripheral instance for @@ -774,7 +773,7 @@ sddaregister(struct cam_periph *periph, void *arg) struct ccb_getdev *cgd; union ccb *request_ccb; /* CCB representing the probe request */ - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaregister\n")); + CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("sddaregister\n")); cgd = (struct ccb_getdev *)arg; if (cgd == NULL) { printf("sddaregister: no getdev CCB, can't register device\n"); @@ -1258,7 +1257,6 @@ sdda_start_init(void *context, union ccb *start_ccb) } struct sdda_softc *softc = (struct sdda_softc *)periph->softc; - //struct ccb_mmcio *mmcio = &start_ccb->mmcio; struct mmc_params *mmcp = &periph->path->device->mmc_ident_data; struct cam_ed *device = periph->path->device; @@ -1588,7 +1586,6 @@ sdda_add_part(struct cam_periph *periph, u_int type, const char *name, part->disk->d_close = sddaclose; part->disk->d_strategy = sddastrategy; part->disk->d_getattr = sddagetattr; -// sc->disk->d_dump = sddadump; part->disk->d_gone = sddadiskgonecb; part->disk->d_name = part->name; part->disk->d_drv1 = part; @@ -1948,7 +1945,6 @@ sddadone(struct cam_periph *periph, union ccb *done_ccb) path = done_ccb->ccb_h.path; CAM_DEBUG(path, CAM_DEBUG_TRACE, ("sddadone\n")); -// cam_periph_lock(periph); if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { CAM_DEBUG(path, CAM_DEBUG_TRACE, ("Error!!!\n")); if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) From owner-dev-commits-src-all@freebsd.org Sat Jun 19 17:07:00 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 37CA565D06E; Sat, 19 Jun 2021 17:07:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6hzS17Bkz4VNP; Sat, 19 Jun 2021 17:07:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 059B519EF8; Sat, 19 Jun 2021 17:07:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JH6xTG013573; Sat, 19 Jun 2021 17:06:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JH6xJI013572; Sat, 19 Jun 2021 17:06:59 GMT (envelope-from git) Date: Sat, 19 Jun 2021 17:06:59 GMT Message-Id: <202106191706.15JH6xJI013572@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 6506efea63f5 - main - mmccam: Read the common members of CSD v1.0 and v2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 6506efea63f5a52d62ceea4bc18b8faf8a037ff3 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 17:07:00 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=6506efea63f5a52d62ceea4bc18b8faf8a037ff3 commit 6506efea63f5a52d62ceea4bc18b8faf8a037ff3 Author: Emmanuel Vadot AuthorDate: 2021-06-17 16:11:04 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 17:06:54 +0000 mmccam: Read the common members of CSD v1.0 and v2.0 And only get the differents ones based on the version. No functional changes intented. Sponsored by: Diablotin Systems --- sys/cam/mmc/mmc_da.c | 63 +++++++++++++++++++--------------------------------- 1 file changed, 23 insertions(+), 40 deletions(-) diff --git a/sys/cam/mmc/mmc_da.c b/sys/cam/mmc/mmc_da.c index 8deba8ccfaff..e41792dcebc1 100644 --- a/sys/cam/mmc/mmc_da.c +++ b/sys/cam/mmc/mmc_da.c @@ -284,20 +284,30 @@ mmc_decode_csd_sd(uint32_t *raw_csd, struct mmc_csd *csd) memset(csd, 0, sizeof(*csd)); csd->csd_structure = v = mmc_get_bits(raw_csd, 128, 126, 2); + + /* Common members between 1.0 and 2.0 */ + m = mmc_get_bits(raw_csd, 128, 115, 4); + e = mmc_get_bits(raw_csd, 128, 112, 3); + csd->tacc = (exp[e] * mant[m] + 9) / 10; + csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; + m = mmc_get_bits(raw_csd, 128, 99, 4); + e = mmc_get_bits(raw_csd, 128, 96, 3); + csd->tran_speed = exp[e] * 10000 * mant[m]; + csd->ccc = mmc_get_bits(raw_csd, 128, 84, 12); + csd->read_bl_len = 1 << mmc_get_bits(raw_csd, 128, 80, 4); + csd->read_bl_partial = mmc_get_bits(raw_csd, 128, 79, 1); + csd->write_blk_misalign = mmc_get_bits(raw_csd, 128, 78, 1); + csd->read_blk_misalign = mmc_get_bits(raw_csd, 128, 77, 1); + csd->dsr_imp = mmc_get_bits(raw_csd, 128, 76, 1); + csd->erase_blk_en = mmc_get_bits(raw_csd, 128, 46, 1); + csd->erase_sector = mmc_get_bits(raw_csd, 128, 39, 7) + 1; + csd->wp_grp_size = mmc_get_bits(raw_csd, 128, 32, 7); + csd->wp_grp_enable = mmc_get_bits(raw_csd, 128, 31, 1); + csd->r2w_factor = 1 << mmc_get_bits(raw_csd, 128, 26, 3); + csd->write_bl_len = 1 << mmc_get_bits(raw_csd, 128, 22, 4); + csd->write_bl_partial = mmc_get_bits(raw_csd, 128, 21, 1); + if (v == 0) { - m = mmc_get_bits(raw_csd, 128, 115, 4); - e = mmc_get_bits(raw_csd, 128, 112, 3); - csd->tacc = (exp[e] * mant[m] + 9) / 10; - csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; - m = mmc_get_bits(raw_csd, 128, 99, 4); - e = mmc_get_bits(raw_csd, 128, 96, 3); - csd->tran_speed = exp[e] * 10000 * mant[m]; - csd->ccc = mmc_get_bits(raw_csd, 128, 84, 12); - csd->read_bl_len = 1 << mmc_get_bits(raw_csd, 128, 80, 4); - csd->read_bl_partial = mmc_get_bits(raw_csd, 128, 79, 1); - csd->write_blk_misalign = mmc_get_bits(raw_csd, 128, 78, 1); - csd->read_blk_misalign = mmc_get_bits(raw_csd, 128, 77, 1); - csd->dsr_imp = mmc_get_bits(raw_csd, 128, 76, 1); csd->vdd_r_curr_min = cur_min[mmc_get_bits(raw_csd, 128, 59, 3)]; csd->vdd_r_curr_max = cur_max[mmc_get_bits(raw_csd, 128, 56, 3)]; csd->vdd_w_curr_min = cur_min[mmc_get_bits(raw_csd, 128, 53, 3)]; @@ -305,36 +315,9 @@ mmc_decode_csd_sd(uint32_t *raw_csd, struct mmc_csd *csd) m = mmc_get_bits(raw_csd, 128, 62, 12); e = mmc_get_bits(raw_csd, 128, 47, 3); csd->capacity = ((1 + m) << (e + 2)) * csd->read_bl_len; - csd->erase_blk_en = mmc_get_bits(raw_csd, 128, 46, 1); - csd->erase_sector = mmc_get_bits(raw_csd, 128, 39, 7) + 1; - csd->wp_grp_size = mmc_get_bits(raw_csd, 128, 32, 7); - csd->wp_grp_enable = mmc_get_bits(raw_csd, 128, 31, 1); - csd->r2w_factor = 1 << mmc_get_bits(raw_csd, 128, 26, 3); - csd->write_bl_len = 1 << mmc_get_bits(raw_csd, 128, 22, 4); - csd->write_bl_partial = mmc_get_bits(raw_csd, 128, 21, 1); } else if (v == 1) { - m = mmc_get_bits(raw_csd, 128, 115, 4); - e = mmc_get_bits(raw_csd, 128, 112, 3); - csd->tacc = (exp[e] * mant[m] + 9) / 10; - csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; - m = mmc_get_bits(raw_csd, 128, 99, 4); - e = mmc_get_bits(raw_csd, 128, 96, 3); - csd->tran_speed = exp[e] * 10000 * mant[m]; - csd->ccc = mmc_get_bits(raw_csd, 128, 84, 12); - csd->read_bl_len = 1 << mmc_get_bits(raw_csd, 128, 80, 4); - csd->read_bl_partial = mmc_get_bits(raw_csd, 128, 79, 1); - csd->write_blk_misalign = mmc_get_bits(raw_csd, 128, 78, 1); - csd->read_blk_misalign = mmc_get_bits(raw_csd, 128, 77, 1); - csd->dsr_imp = mmc_get_bits(raw_csd, 128, 76, 1); csd->capacity = ((uint64_t)mmc_get_bits(raw_csd, 128, 48, 22) + 1) * 512 * 1024; - csd->erase_blk_en = mmc_get_bits(raw_csd, 128, 46, 1); - csd->erase_sector = mmc_get_bits(raw_csd, 128, 39, 7) + 1; - csd->wp_grp_size = mmc_get_bits(raw_csd, 128, 32, 7); - csd->wp_grp_enable = mmc_get_bits(raw_csd, 128, 31, 1); - csd->r2w_factor = 1 << mmc_get_bits(raw_csd, 128, 26, 3); - csd->write_bl_len = 1 << mmc_get_bits(raw_csd, 128, 22, 4); - csd->write_bl_partial = mmc_get_bits(raw_csd, 128, 21, 1); } else panic("unknown SD CSD version"); } From owner-dev-commits-src-all@freebsd.org Sat Jun 19 17:15:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1677F65D178; Sat, 19 Jun 2021 17:15:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6j9W72ykz4Vpc; Sat, 19 Jun 2021 17:15:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DA1B31A2C1; Sat, 19 Jun 2021 17:15:43 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JHFhGQ027019; Sat, 19 Jun 2021 17:15:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JHFhiI027018; Sat, 19 Jun 2021 17:15:43 GMT (envelope-from git) Date: Sat, 19 Jun 2021 17:15:43 GMT Message-Id: <202106191715.15JHFhiI027018@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Emmanuel Vadot Subject: git: 3386347f65cd - main - mmc_sim: Make XPT_MMC_GET_TRAN_SETTINGS fully async MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3386347f65cdcd7c36feec216af05f188f82cf2c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 17:15:44 -0000 The branch main has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=3386347f65cdcd7c36feec216af05f188f82cf2c commit 3386347f65cdcd7c36feec216af05f188f82cf2c Author: Emmanuel Vadot AuthorDate: 2021-06-17 18:09:52 +0000 Commit: Emmanuel Vadot CommitDate: 2021-06-19 17:15:25 +0000 mmc_sim: Make XPT_MMC_GET_TRAN_SETTINGS fully async Sponsored by: Diablotin Systems --- sys/cam/mmc/mmc_sim.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/sys/cam/mmc/mmc_sim.c b/sys/cam/mmc/mmc_sim.c index 1500e3f6f1cd..b9a6a852c07f 100644 --- a/sys/cam/mmc/mmc_sim.c +++ b/sys/cam/mmc/mmc_sim.c @@ -63,11 +63,25 @@ mmc_sim_task(void *arg, int pending) return; cts = &mmc_sim->ccb->cts; - rv = MMC_SIM_SET_TRAN_SETTINGS(mmc_sim->dev, &cts->proto_specific.mmc); - if (rv != 0) - mmc_sim->ccb->ccb_h.status = CAM_REQ_INVALID; - else - mmc_sim->ccb->ccb_h.status = CAM_REQ_CMP; + switch (mmc_sim->ccb->ccb_h.func_code) { + case XPT_MMC_GET_TRAN_SETTINGS: + rv = MMC_SIM_GET_TRAN_SETTINGS(mmc_sim->dev, &cts->proto_specific.mmc); + if (rv != 0) + mmc_sim->ccb->ccb_h.status = CAM_REQ_INVALID; + else + mmc_sim->ccb->ccb_h.status = CAM_REQ_CMP; + break; + case XPT_MMC_SET_TRAN_SETTINGS: + rv = MMC_SIM_SET_TRAN_SETTINGS(mmc_sim->dev, &cts->proto_specific.mmc); + if (rv != 0) + mmc_sim->ccb->ccb_h.status = CAM_REQ_INVALID; + else + mmc_sim->ccb->ccb_h.status = CAM_REQ_CMP; + break; + default: + panic("Unsupported ccb func %x\n", mmc_sim->ccb->ccb_h.func_code); + break; + } xpt_done(mmc_sim->ccb); mmc_sim->ccb = NULL; @@ -108,7 +122,6 @@ mmc_cam_sim_default_action(struct cam_sim *sim, union ccb *ccb) } break; case XPT_GET_TRAN_SETTINGS: - case XPT_MMC_GET_TRAN_SETTINGS: { struct ccb_trans_settings *cts = &ccb->cts; @@ -125,6 +138,15 @@ mmc_cam_sim_default_action(struct cam_sim *sim, union ccb *ccb) } break; } + case XPT_MMC_GET_TRAN_SETTINGS: + { + ccb->ccb_h.status = CAM_SIM_QUEUED; + mmc_sim->ccb = ccb; + taskqueue_enqueue(taskqueue_thread, &mmc_sim->sim_task); + return; + /* NOTREACHED */ + break; + } case XPT_SET_TRAN_SETTINGS: { struct ccb_trans_settings *cts = &ccb->cts; From owner-dev-commits-src-all@freebsd.org Sat Jun 19 17:21:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 404D065DB09; Sat, 19 Jun 2021 17:21:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6jJG1PJ2z4VZs; Sat, 19 Jun 2021 17:21:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1814A1A137; Sat, 19 Jun 2021 17:21:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JHLYGa038952; Sat, 19 Jun 2021 17:21:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JHLXS1038951; Sat, 19 Jun 2021 17:21:33 GMT (envelope-from git) Date: Sat, 19 Jun 2021 17:21:33 GMT Message-Id: <202106191721.15JHLXS1038951@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 32f9c2ceb3ec - main - libalias: Restructure - Separate fully qualified search MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 32f9c2ceb3ec8266e48ec0f6d1556fd98ef12db6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 17:21:34 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=32f9c2ceb3ec8266e48ec0f6d1556fd98ef12db6 commit 32f9c2ceb3ec8266e48ec0f6d1556fd98ef12db6 Author: Lutz Donnerhacke AuthorDate: 2021-05-25 13:44:34 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 17:21:05 +0000 libalias: Restructure - Separate fully qualified search Search fully specified links first. Some performance loss due to need to revisit the db twice, if not found. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30569 --- sys/netinet/libalias/alias_db.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 342f6117f878..dfb4cd9c8287 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -1210,18 +1210,27 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, /* Search loop */ start_point = StartPointIn(alias_addr, alias_port, link_type); + if (!(flags_in & LINK_PARTIALLY_SPECIFIED)) { + LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { + INGUARD; + if (lnk->flags & LINK_PARTIALLY_SPECIFIED) + continue; + if (lnk->dst_addr.s_addr == dst_addr.s_addr + && lnk->dst_port == dst_port) { + CleanupLink(la, &lnk); + if (lnk != NULL) { + lnk->timestamp = LibAliasTime; + return (lnk); + } + } + } + } LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { int flags; INGUARD; flags = flags_in | lnk->flags; - if (!(flags & LINK_PARTIALLY_SPECIFIED)) { - if (lnk->dst_addr.s_addr == dst_addr.s_addr - && lnk->dst_port == dst_port) { - lnk_fully_specified = lnk; - break; - } - } else if ((flags & LINK_UNKNOWN_DEST_ADDR) + if ((flags & LINK_UNKNOWN_DEST_ADDR) && (flags & LINK_UNKNOWN_DEST_PORT)) { if (lnk_unknown_all == NULL) lnk_unknown_all = lnk; @@ -1239,11 +1248,7 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, } #undef INGUARD - CleanupLink(la, &lnk_fully_specified); - if (lnk_fully_specified != NULL) { - lnk_fully_specified->timestamp = LibAliasTime; - lnk = lnk_fully_specified; - } else if (lnk_unknown_dst_port != NULL) + if (lnk_unknown_dst_port != NULL) lnk = lnk_unknown_dst_port; else if (lnk_unknown_dst_addr != NULL) lnk = lnk_unknown_dst_addr; From owner-dev-commits-src-all@freebsd.org Sat Jun 19 17:41:44 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9A12265DB7B; Sat, 19 Jun 2021 17:41:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6jlX42SHz4XTJ; Sat, 19 Jun 2021 17:41:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 733151A176; Sat, 19 Jun 2021 17:41:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JHfiCg061654; Sat, 19 Jun 2021 17:41:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JHfiMY061653; Sat, 19 Jun 2021 17:41:44 GMT (envelope-from git) Date: Sat, 19 Jun 2021 17:41:44 GMT Message-Id: <202106191741.15JHfiMY061653@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Richard Scheffenegger Subject: git: 74d7fc8753a7 - main - tcp: Add PRR cwnd reduction for non-SACK loss MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rscheff X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 74d7fc8753a76851db6db556ff0f09de1fbb26d5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 17:41:44 -0000 The branch main has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=74d7fc8753a76851db6db556ff0f09de1fbb26d5 commit 74d7fc8753a76851db6db556ff0f09de1fbb26d5 Author: Richard Scheffenegger AuthorDate: 2021-06-19 17:06:48 +0000 Commit: Richard Scheffenegger CommitDate: 2021-06-19 17:25:22 +0000 tcp: Add PRR cwnd reduction for non-SACK loss This completes PRR cwnd reduction in all circumstances for the base TCP stack (SACK loss recovery, ECN window reduction, non-SACK loss recovery), preventing the arriving ACKs to clock out new data at the old, too high rate. This reduces the chance to induce additional losses while recovering from loss (during congested network conditions). For non-SACK loss recovery, each ACK is assumed to have one MSS delivered. In order to prevent ACK-split attacks, only one window worth of ACKs is considered to actually have delivered new data. MFC after: 6 weeks Reviewed By: rrs, #transport Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D29441 --- sys/netinet/tcp_input.c | 56 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 1d685b43697f..a8fe6d9817d0 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -2612,8 +2612,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, cc_ack_received(tp, th, nsegs, CC_DUPACK); if (V_tcp_do_prr && - IN_FASTRECOVERY(tp->t_flags) && - (tp->t_flags & TF_SACK_PERMIT)) { + IN_FASTRECOVERY(tp->t_flags)) { tcp_do_prr_ack(tp, th, &to); } else if ((tp->t_flags & TF_SACK_PERMIT) && (to.to_flags & TOF_SACK) && @@ -2689,8 +2688,16 @@ enter_recovery: * snd_ssthresh is already updated by * cc_cong_signal. */ - tp->sackhint.prr_delivered = - tp->sackhint.sacked_bytes; + if ((tp->t_flags & TF_SACK_PERMIT) && + (to.to_flags & TOF_SACK)) { + tp->sackhint.prr_delivered = + tp->sackhint.sacked_bytes; + } else { + tp->sackhint.prr_delivered = + imin(tp->snd_max - tp->snd_una, + imin(INT_MAX / 65536, + tp->t_dupacks) * maxseg); + } tp->sackhint.recover_fs = max(1, tp->snd_nxt - tp->snd_una); } @@ -3968,11 +3975,23 @@ tcp_do_prr_ack(struct tcpcb *tp, struct tcphdr *th, struct tcpopt *to) * (del_data) and an estimate of how many bytes are in the * network. */ - del_data = tp->sackhint.delivered_data; - if (V_tcp_do_newsack) - pipe = tcp_compute_pipe(tp); - else - pipe = (tp->snd_nxt - tp->snd_fack) + tp->sackhint.sack_bytes_rexmit; + if (((tp->t_flags & TF_SACK_PERMIT) && + (to->to_flags & TOF_SACK)) || + (IN_CONGRECOVERY(tp->t_flags) && + !IN_FASTRECOVERY(tp->t_flags))) { + del_data = tp->sackhint.delivered_data; + if (V_tcp_do_newsack) + pipe = tcp_compute_pipe(tp); + else + pipe = (tp->snd_nxt - tp->snd_fack) + + tp->sackhint.sack_bytes_rexmit; + } else { + if (tp->sackhint.prr_delivered < (tcprexmtthresh * maxseg + + tp->snd_recover - tp->snd_una)) + del_data = maxseg; + pipe = imax(0, tp->snd_max - tp->snd_una - + imin(INT_MAX / 65536, tp->t_dupacks) * maxseg); + } tp->sackhint.prr_delivered += del_data; /* * Proportional Rate Reduction @@ -3985,9 +4004,9 @@ tcp_do_prr_ack(struct tcpcb *tp, struct tcphdr *th, struct tcpopt *to) tp->snd_ssthresh, tp->sackhint.recover_fs) - tp->sackhint.prr_out; } else { - if (V_tcp_do_prr_conservative) + if (V_tcp_do_prr_conservative || (del_data == 0)) limit = tp->sackhint.prr_delivered - - tp->sackhint.prr_out; + tp->sackhint.prr_out; else limit = imax(tp->sackhint.prr_delivered - tp->sackhint.prr_out, del_data) + @@ -4001,11 +4020,18 @@ tcp_do_prr_ack(struct tcpcb *tp, struct tcphdr *th, struct tcpopt *to) * accordingly. */ if (IN_FASTRECOVERY(tp->t_flags)) { - tp->snd_cwnd = imax(maxseg, tp->snd_nxt - tp->snd_recover + - tp->sackhint.sack_bytes_rexmit + (snd_cnt * maxseg)); + if ((tp->t_flags & TF_SACK_PERMIT) && + (to->to_flags & TOF_SACK)) { + tp->snd_cwnd = tp->snd_nxt - tp->snd_recover + + tp->sackhint.sack_bytes_rexmit + + (snd_cnt * maxseg); + } else { + tp->snd_cwnd = (tp->snd_max - tp->snd_una) + + (snd_cnt * maxseg); + } } else if (IN_CONGRECOVERY(tp->t_flags)) - tp->snd_cwnd = imax(maxseg, pipe - del_data + - (snd_cnt * maxseg)); + tp->snd_cwnd = pipe - del_data + (snd_cnt * maxseg); + tp->snd_cwnd = imax(maxseg, tp->snd_cwnd); } /* From owner-dev-commits-src-all@freebsd.org Sat Jun 19 18:06:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id ED9A865E073; Sat, 19 Jun 2021 18:06:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6kHb6PzBz4ZR7; Sat, 19 Jun 2021 18:06:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C061E1B085; Sat, 19 Jun 2021 18:06:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JI63ki093327; Sat, 19 Jun 2021 18:06:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JI63Yf093326; Sat, 19 Jun 2021 18:06:03 GMT (envelope-from git) Date: Sat, 19 Jun 2021 18:06:03 GMT Message-Id: <202106191806.15JI63Yf093326@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: cac129e60300 - main - libalias: Restructure - Table for partially links MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cac129e6030095c33e95c5ce1cdcb9c5c21efce9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 18:06:04 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=cac129e6030095c33e95c5ce1cdcb9c5c21efce9 commit cac129e6030095c33e95c5ce1cdcb9c5c21efce9 Author: Lutz Donnerhacke AuthorDate: 2021-05-25 16:27:33 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 18:03:08 +0000 libalias: Restructure - Table for partially links Separate the partially specified links into a separate data structure. This would causes a major parformance impact, if there are many of them. Use a (smaller) hash table to speed up the partially link access. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30570 --- sys/netinet/libalias/alias_db.c | 74 +++++++++++++++++++++++++------------- sys/netinet/libalias/alias_local.h | 2 ++ 2 files changed, 52 insertions(+), 24 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index dfb4cd9c8287..39b82d9d3a01 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -401,6 +401,13 @@ static void UninitPacketAliasLog(struct libalias *); void SctpShowAliasStats(struct libalias *la); +static u_int +StartPartialIn(u_short alias_port, int link_type) +{ + return (link_type == LINK_PPTP) ? 0 + : (alias_port % LINK_PARTIAL_SIZE); +} + static u_int StartPointIn(struct in_addr alias_addr, u_short alias_port, @@ -1036,8 +1043,13 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, LIST_INSERT_HEAD(&la->linkTableOut[start_point], lnk, list_out); /* Set up pointers for input lookup table */ - start_point = StartPointIn(alias_addr, lnk->alias_port, link_type); - LIST_INSERT_HEAD(&la->linkTableIn[start_point], lnk, list_in); + if (lnk->flags & LINK_PARTIALLY_SPECIFIED) { + start_point = StartPartialIn(lnk->alias_port, link_type); + LIST_INSERT_HEAD(&la->linkPartialIn[start_point], lnk, list_in); + } else { + start_point = StartPointIn(alias_addr, lnk->alias_port, link_type); + LIST_INSERT_HEAD(&la->linkTableIn[start_point], lnk, list_in); + } /* Include the element into the housekeeping list */ TAILQ_INSERT_TAIL(&la->checkExpire, lnk, list_expire); @@ -1213,8 +1225,6 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, if (!(flags_in & LINK_PARTIALLY_SPECIFIED)) { LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { INGUARD; - if (lnk->flags & LINK_PARTIALLY_SPECIFIED) - continue; if (lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->dst_port == dst_port) { CleanupLink(la, &lnk); @@ -1224,28 +1234,44 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, } } } - } - LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { - int flags; + } else { + LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { + int flags = flags_in & LINK_PARTIALLY_SPECIFIED; - INGUARD; - flags = flags_in | lnk->flags; - if ((flags & LINK_UNKNOWN_DEST_ADDR) - && (flags & LINK_UNKNOWN_DEST_PORT)) { - if (lnk_unknown_all == NULL) + INGUARD; + if (flags == LINK_PARTIALLY_SPECIFIED && + lnk_unknown_all == NULL) lnk_unknown_all = lnk; - } else if (flags & LINK_UNKNOWN_DEST_ADDR) { - if (lnk->dst_port == dst_port) { - if (lnk_unknown_dst_addr == NULL) - lnk_unknown_dst_addr = lnk; - } - } else if (flags & LINK_UNKNOWN_DEST_PORT) { - if (lnk->dst_addr.s_addr == dst_addr.s_addr) { - if (lnk_unknown_dst_port == NULL) - lnk_unknown_dst_port = lnk; + if (flags == LINK_UNKNOWN_DEST_ADDR && + lnk->dst_port == dst_port && + lnk_unknown_dst_addr == NULL) + lnk_unknown_dst_addr = lnk; + if (flags == LINK_UNKNOWN_DEST_PORT && + lnk->dst_addr.s_addr == dst_addr.s_addr) { + lnk_unknown_dst_port = lnk; + break; } } } + + start_point = StartPartialIn(alias_port, link_type); + LIST_FOREACH(lnk, &la->linkPartialIn[start_point], list_in) { + int flags = (flags_in | lnk->flags) & LINK_PARTIALLY_SPECIFIED; + + INGUARD; + if (flags == LINK_PARTIALLY_SPECIFIED && + lnk_unknown_all == NULL) + lnk_unknown_all = lnk; + if (flags == LINK_UNKNOWN_DEST_ADDR && + lnk->dst_port == dst_port && + lnk_unknown_dst_addr == NULL) + lnk_unknown_dst_addr = lnk; + if (flags == LINK_UNKNOWN_DEST_PORT && + lnk->dst_addr.s_addr == dst_addr.s_addr) { + lnk_unknown_dst_port = lnk; + break; + } + } #undef INGUARD if (lnk_unknown_dst_port != NULL) @@ -1612,12 +1638,10 @@ FindPptpInByCallId(struct libalias *la, struct in_addr dst_addr, struct in_addr alias_addr, u_int16_t dst_call_id) { - u_int i; struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); - i = StartPointIn(alias_addr, 0, LINK_PPTP); - LIST_FOREACH(lnk, &la->linkTableIn[i], list_in) + LIST_FOREACH(lnk, &la->linkPartialIn[0], list_in) if (lnk->link_type == LINK_PPTP && lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->alias_addr.s_addr == alias_addr.s_addr && @@ -2447,6 +2471,8 @@ LibAliasInit(struct libalias *la) LIST_INIT(&la->linkTableOut[i]); for (i = 0; i < LINK_TABLE_IN_SIZE; i++) LIST_INIT(&la->linkTableIn[i]); + for (i = 0; i < LINK_PARTIAL_SIZE; i++) + LIST_INIT(&la->linkPartialIn[i]); TAILQ_INIT(&la->checkExpire); #ifdef _KERNEL AliasSctpInit(la); diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index f1b40f0438da..47123d769375 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -68,6 +68,7 @@ /* Sizes of input and output link tables */ #define LINK_TABLE_OUT_SIZE 4001 #define LINK_TABLE_IN_SIZE 4001 +#define LINK_PARTIAL_SIZE 401 #define GET_ALIAS_PORT -1 #define GET_ALIAS_ID GET_ALIAS_PORT @@ -94,6 +95,7 @@ struct libalias { * output lookup tables. */ LIST_HEAD (, alias_link) linkTableOut[LINK_TABLE_OUT_SIZE]; LIST_HEAD (, alias_link) linkTableIn[LINK_TABLE_IN_SIZE]; + LIST_HEAD (, alias_link) linkPartialIn[LINK_PARTIAL_SIZE]; /* HouseKeeping */ TAILQ_HEAD (, alias_link) checkExpire; /* Link statistics */ From owner-dev-commits-src-all@freebsd.org Sat Jun 19 18:11:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 959AB65E07E; Sat, 19 Jun 2021 18:11:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6kPP3YhRz4ZQ4; Sat, 19 Jun 2021 18:11:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 621761AEC5; Sat, 19 Jun 2021 18:11:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JIB5b4002240; Sat, 19 Jun 2021 18:11:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JIB4nu002236; Sat, 19 Jun 2021 18:11:04 GMT (envelope-from git) Date: Sat, 19 Jun 2021 18:11:04 GMT Message-Id: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 23408297fbf3089f0388a8873b02fa75ab3f5bb9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 18:11:05 -0000 The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=23408297fbf3089f0388a8873b02fa75ab3f5bb9 commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 Merge: cac129e60300 e4bbddaec868 Author: Dimitry Andric AuthorDate: 2021-06-19 10:06:00 +0000 Commit: Dimitry Andric CommitDate: 2021-06-19 18:09:28 +0000 Merge llvm-project 12.0.1 rc2 This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. PR: 255570 MFC after: 6 weeks ObsoleteFiles.inc | 291 +++++++++++ .../clang/lib/CodeGen/CodeGenModule.cpp | 12 +- .../clang/lib/Format/TokenAnnotator.cpp | 12 +- .../clang/lib/Format/UnwrappedLineFormatter.cpp | 7 - .../clang/lib/Format/UnwrappedLineParser.cpp | 89 +++- .../clang/lib/Format/UnwrappedLineParser.h | 12 +- .../clang/lib/Headers/ppc_wrappers/xmmintrin.h | 9 +- .../llvm-project/clang/lib/Sema/SemaChecking.cpp | 5 +- contrib/llvm-project/libcxx/include/memory | 32 +- contrib/llvm-project/lld/ELF/SyntheticSections.cpp | 4 +- contrib/llvm-project/lldb/docs/man/lldb.rst | 4 +- contrib/llvm-project/lldb/tools/driver/Driver.cpp | 4 +- contrib/llvm-project/llvm/include/llvm/ADT/Any.h | 7 +- .../llvm/CodeGen/GlobalISel/LegalizerHelper.h | 1 + .../llvm-project/llvm/include/llvm/IR/Constant.h | 4 + .../llvm/lib/Analysis/ConstantFolding.cpp | 15 +- .../llvm/lib/Analysis/InstructionSimplify.cpp | 8 +- .../llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | 4 +- .../llvm/lib/Analysis/ScalarEvolution.cpp | 4 + .../llvm/lib/Analysis/ValueTracking.cpp | 15 +- .../llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 5 +- .../lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 44 +- .../llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 24 +- .../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 33 +- .../llvm/lib/CodeGen/StackProtector.cpp | 24 +- contrib/llvm-project/llvm/lib/IR/Constants.cpp | 12 + .../llvm-project/llvm/lib/Support/CommandLine.cpp | 2 +- .../lib/Target/AArch64/AArch64ISelLowering.cpp | 43 +- .../AArch64/GISel/AArch64InstructionSelector.cpp | 2 +- .../llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 22 +- .../llvm/lib/Target/BPF/BPFMIPeephole.cpp | 3 + .../llvm/lib/Target/BPF/BPFPreserveDIType.cpp | 9 + .../llvm/lib/Target/BPF/BPFTargetMachine.cpp | 6 + .../llvm/lib/Target/BPF/BPFTargetMachine.h | 2 + .../llvm/lib/Target/BPF/BPFTargetTransformInfo.h | 61 +++ contrib/llvm-project/llvm/lib/Target/BPF/BTF.def | 1 + .../llvm-project/llvm/lib/Target/BPF/BTFDebug.cpp | 62 ++- .../llvm-project/llvm/lib/Target/BPF/BTFDebug.h | 11 +- .../llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 6 + .../llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | 365 ++++++------- .../llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 62 +++ .../llvm/lib/Target/PowerPC/PPCISelLowering.h | 1 + .../llvm/lib/Target/PowerPC/PPCRegisterInfo.td | 43 +- .../lib/Target/PowerPC/PPCTargetTransformInfo.cpp | 21 + .../lib/Target/PowerPC/PPCTargetTransformInfo.h | 3 + .../lib/Target/RISCV/RISCVInstrInfoVPseudos.td | 20 +- .../lib/Target/SystemZ/SystemZISelLowering.cpp | 5 +- .../WebAssemblyLowerEmscriptenEHSjLj.cpp | 13 +- .../llvm/lib/Target/X86/X86ISelLowering.cpp | 2 + .../llvm/lib/Target/X86/X86InstrCompiler.td | 11 +- .../Transforms/InstCombine/InstCombineAndOrXor.cpp | 17 +- .../Transforms/InstCombine/InstCombineSelect.cpp | 5 +- .../Transforms/InstCombine/InstCombineShifts.cpp | 58 ++- .../llvm/lib/Transforms/Scalar/LoopRerollPass.cpp | 6 + .../Transforms/Scalar/LowerConstantIntrinsics.cpp | 8 +- .../llvm/lib/Transforms/Scalar/SCCP.cpp | 7 +- .../llvm/lib/Transforms/Utils/InlineFunction.cpp | 106 ++-- etc/mtree/BSD.debug.dist | 2 +- etc/mtree/BSD.usr.dist | 2 +- lib/clang/headers/Makefile | 2 +- lib/clang/include/VCSVersion.inc | 8 +- lib/clang/include/clang/Basic/Version.inc | 6 +- lib/clang/include/clang/Config/config.h | 2 +- lib/clang/include/lld/Common/Version.inc | 2 +- lib/clang/include/llvm/Config/config.h | 4 +- lib/clang/include/llvm/Config/llvm-config.h | 5 +- lib/clang/include/llvm/Support/VCSRevision.h | 2 +- lib/libclang_rt/compiler-rt-vars.mk | 2 +- tools/build/mk/OptionalObsoleteFiles.inc | 578 ++++++++++----------- 69 files changed, 1480 insertions(+), 799 deletions(-) diff --cc ObsoleteFiles.inc index 468d967efdcc,000000000000..a2a423fafc9c mode 100644,000000..100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@@ -1,15375 -1,0 +1,15666 @@@ +# +# $FreeBSD$ +# +# This file lists old files (OLD_FILES), libraries (OLD_LIBS) and +# directories (OLD_DIRS) which should get removed at an update. Recently +# removed entries first (with the date as a comment). Dynamic libraries are +# special cased (OLD_LIBS). Static libraries or the generic links to +# the dynamic libraries (lib*.so) should (if you don't know why to make an +# exception, make this a "must") be viewed as normal files (OLD_FILES). +# +# In case of a complete directory hierarchy the sorting is in depth first +# order. +# +# Files that are installed or removed depending on some build option +# are to be listed in /usr/src/tools/build/mk/OptionalObsoleteFiles.inc +# instead of in this file. +# +# Before you commit changes to this file please check if any entries in +# tools/build/mk/OptionalObsoleteFiles.inc can be removed. The following +# command tells which files are listed more than once regardless of some +# architecture specific conditionals, so you can not blindly trust the +# output: +# ( grep '+=' /usr/src/ObsoleteFiles.inc | sort -u ; \ +# grep '+=' /usr/src/tools/build/mk/OptionalObsoleteFiles.inc | sort -u) | \ +# sort | uniq -d +# +# To find regular duplicates not dependent on optional components, you can +# also use something that will not give you false positives, e.g.: +# for t in `make -V TARGETS universe`; do +# __MAKE_CONF=/dev/null make -f Makefile.inc1 TARGET=$t \ +# -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \ +# xargs -n1 | sort | uniq -d; +# done +# +# For optional components, you can use the following to see if some entries +# in OptionalObsoleteFiles.inc have been obsoleted by ObsoleteFiles.inc +# for o in tools/build/options/WITH*; do +# __MAKE_CONF=/dev/null make -f Makefile.inc1 -D${o##*/} \ +# -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \ +# xargs -n1 | sort | uniq -d; +# done + ++# 20210619: new clang import which bumps version from 12.0.0 to 12.0.1. ++OLD_FILES+=usr/lib/clang/12.0.0/include/cuda_wrappers/algorithm ++OLD_FILES+=usr/lib/clang/12.0.0/include/cuda_wrappers/complex ++OLD_FILES+=usr/lib/clang/12.0.0/include/cuda_wrappers/new ++OLD_DIRS+=usr/lib/clang/12.0.0/include/cuda_wrappers ++OLD_FILES+=usr/lib/clang/12.0.0/include/fuzzer/FuzzedDataProvider.h ++OLD_DIRS+=usr/lib/clang/12.0.0/include/fuzzer ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/cmath ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/complex ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/complex.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/complex_cmath.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/math.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/openmp_wrappers/new ++OLD_DIRS+=usr/lib/clang/12.0.0/include/openmp_wrappers ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/emmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/mm_malloc.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/mmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/pmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/smmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/tmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ppc_wrappers/xmmintrin.h ++OLD_DIRS+=usr/lib/clang/12.0.0/include/ppc_wrappers ++OLD_FILES+=usr/lib/clang/12.0.0/include/profile/InstrProfData.inc ++OLD_DIRS+=usr/lib/clang/12.0.0/include/profile ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/allocator_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/asan_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/common_interface_defs.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/coverage_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/dfsan_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/hwasan_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/linux_syscall_hooks.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/lsan_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/msan_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/netbsd_syscall_hooks.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/scudo_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/tsan_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/tsan_interface_atomic.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sanitizer/ubsan_interface.h ++OLD_DIRS+=usr/lib/clang/12.0.0/include/sanitizer ++OLD_FILES+=usr/lib/clang/12.0.0/include/xray/xray_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xray/xray_log_interface.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xray/xray_records.h ++OLD_DIRS+=usr/lib/clang/12.0.0/include/xray ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_builtin_vars.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_cmath.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_complex_builtins.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_device_functions.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_intrinsics.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_libdevice_declares.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_math.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_math_forward_declares.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_cuda_runtime_wrapper.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_hip_cmath.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_hip_libdevice_declares.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_hip_math.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__clang_hip_runtime_wrapper.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__stddef_max_align_t.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__wmmintrin_aes.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/__wmmintrin_pclmul.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/adxintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/altivec.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ammintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/amxintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm64intr.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_acle.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_bf16.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_cde.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_cmse.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_fp16.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_mve.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_neon.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/arm_sve.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/armintr.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx2intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512bf16intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512bitalgintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512bwintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512cdintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512dqintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512erintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512fintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512ifmaintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512ifmavlintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512pfintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vbmi2intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vbmiintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vbmivlintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlbf16intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlbitalgintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlbwintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlcdintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vldqintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlvbmi2intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlvnniintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vlvp2intersectintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vnniintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vp2intersectintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vpopcntdqintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avx512vpopcntdqvlintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avxintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/avxvnniintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/bmi2intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/bmiintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/cet.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/cetintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/cldemoteintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/clflushoptintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/clwbintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/clzerointrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/cpuid.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/emmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/enqcmdintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/f16cintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/float.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/fma4intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/fmaintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/fxsrintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/gfniintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/hresetintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/htmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/htmxlintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ia32intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/immintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/inttypes.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/invpcidintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/iso646.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/keylockerintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/limits.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/lwpintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/lzcntintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/mm3dnow.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/mm_malloc.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/mmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/module.modulemap ++OLD_FILES+=usr/lib/clang/12.0.0/include/movdirintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/msa.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/mwaitxintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/nmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/omp-tools.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/omp.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ompt.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/opencl-c-base.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/opencl-c.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/pconfigintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/pkuintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/pmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/popcntintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/prfchwintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/ptwriteintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/rdseedintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/rtmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/s390intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/serializeintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/sgxintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/shaintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/smmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stdalign.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stdarg.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stdatomic.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stdbool.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stddef.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stdint.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/stdnoreturn.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/tbmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/tgmath.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/tmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/tsxldtrkintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/uintrintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/unwind.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/vadefs.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/vaesintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/varargs.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/vecintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/vpclmulqdqintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/waitpkgintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/wasm_simd128.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/wbnoinvdintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/wmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/x86gprintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/x86intrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xmmintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xopintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xsavecintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xsaveintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xsaveoptintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xsavesintrin.h ++OLD_FILES+=usr/lib/clang/12.0.0/include/xtestintrin.h ++OLD_DIRS+=usr/lib/clang/12.0.0/include ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-aarch64.so ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-arm.so ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-armhf.so ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-i386.so ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-x86_64.so ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.dd-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.dd-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan_cxx-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-powerpc.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-powerpc64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-powerpc64le.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.safestack-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.safestack-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profiling-aarch64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profiling-arm.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profiling-armhf.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profiling-x86_64.a ++OLD_FILES+=usr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-x86_64.a ++OLD_DIRS+=usr/lib/clang/12.0.0/lib/freebsd ++OLD_DIRS+=usr/lib/clang/12.0.0/lib ++OLD_DIRS+=usr/lib/clang/12.0.0 ++ +# 20210616: Remove crypto_cursor_seg{base,len} +OLD_FILES+=usr/share/man/man9/crypto_cursor_segbase.9.gz +OLD_FILES+=usr/share/man/man9/crypto_cursor_seglen.9.gz + +# 20210618: rename of usr/share/certs/blacklisted +OLD_FILES+=usr/share/certs/blacklisted/AddTrust_External_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/AddTrust_Low-Value_Services_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/Camerfirma_Chambers_of_Commerce_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/Camerfirma_Global_Chambersign_Root.pem +OLD_FILES+=usr/share/certs/blacklisted/Certum_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Chambers_of_Commerce_Root_-_2008.pem +OLD_FILES+=usr/share/certs/blacklisted/D-TRUST_Root_CA_3_2013.pem +OLD_FILES+=usr/share/certs/blacklisted/EC-ACC.pem +OLD_FILES+=usr/share/certs/blacklisted/EE_Certification_Centre_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Global_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Primary_Certification_Authority.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Universal_CA_2.pem +OLD_FILES+=usr/share/certs/blacklisted/GeoTrust_Universal_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Global_Chambersign_Root_-_2008.pem +OLD_FILES+=usr/share/certs/blacklisted/LuxTrust_Global_Root_2.pem +OLD_FILES+=usr/share/certs/blacklisted/OISTE_WISeKey_Global_Root_GA_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/SwissSign_Platinum_CA_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G4.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_1_Public_Primary_Certification_Authority_-_G6.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G4.pem +OLD_FILES+=usr/share/certs/blacklisted/Symantec_Class_2_Public_Primary_Certification_Authority_-_G6.pem +OLD_FILES+=usr/share/certs/blacklisted/Taiwan_GRCA.pem +OLD_FILES+=usr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G2.pem +OLD_FILES+=usr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/thawte_Primary_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Trustis_FPS_Root_CA.pem +OLD_FILES+=usr/share/certs/blacklisted/Verisign_Class_1_Public_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/Verisign_Class_2_Public_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.pem +OLD_FILES+=usr/share/certs/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.pem +OLD_FILES+=usr/share/certs/blacklisted/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem +OLD_FILES+=usr/share/certs/blacklisted/VeriSign_Universal_Root_Certification_Authority.pem +OLD_DIRS+=usr/share/certs/blacklisted +# 20210613: new clang import which bumps version from 11.0.1 to 12.0.0. +OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/algorithm +OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/complex +OLD_FILES+=usr/lib/clang/11.0.1/include/cuda_wrappers/new +OLD_DIRS+=usr/lib/clang/11.0.1/include/cuda_wrappers +OLD_FILES+=usr/lib/clang/11.0.1/include/fuzzer/FuzzedDataProvider.h +OLD_DIRS+=usr/lib/clang/11.0.1/include/fuzzer +OLD_FILES+=usr/lib/clang/11.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +OLD_FILES+=usr/lib/clang/11.0.1/include/openmp_wrappers/cmath +OLD_FILES+=usr/lib/clang/11.0.1/include/openmp_wrappers/complex +OLD_FILES+=usr/lib/clang/11.0.1/include/openmp_wrappers/complex.h +OLD_FILES+=usr/lib/clang/11.0.1/include/openmp_wrappers/math.h +OLD_FILES+=usr/lib/clang/11.0.1/include/openmp_wrappers/new +OLD_DIRS+=usr/lib/clang/11.0.1/include/openmp_wrappers +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/emmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/mm_malloc.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/mmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/pmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/smmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/tmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ppc_wrappers/xmmintrin.h +OLD_DIRS+=usr/lib/clang/11.0.1/include/ppc_wrappers +OLD_FILES+=usr/lib/clang/11.0.1/include/profile/InstrProfData.inc +OLD_DIRS+=usr/lib/clang/11.0.1/include/profile +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/allocator_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/asan_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/common_interface_defs.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/coverage_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/dfsan_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/hwasan_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/linux_syscall_hooks.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/lsan_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/msan_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/netbsd_syscall_hooks.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/scudo_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/tsan_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/tsan_interface_atomic.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sanitizer/ubsan_interface.h +OLD_DIRS+=usr/lib/clang/11.0.1/include/sanitizer +OLD_FILES+=usr/lib/clang/11.0.1/include/xray/xray_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xray/xray_log_interface.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xray/xray_records.h +OLD_DIRS+=usr/lib/clang/11.0.1/include/xray +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_builtin_vars.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_cmath.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_complex_builtins.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_device_functions.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_intrinsics.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_libdevice_declares.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_math.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_math_forward_declares.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_cuda_runtime_wrapper.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_hip_libdevice_declares.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_hip_math.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__clang_hip_runtime_wrapper.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__stddef_max_align_t.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__wmmintrin_aes.h +OLD_FILES+=usr/lib/clang/11.0.1/include/__wmmintrin_pclmul.h +OLD_FILES+=usr/lib/clang/11.0.1/include/adxintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/altivec.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ammintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/amxintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm64intr.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_acle.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_bf16.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_cde.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_cmse.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_fp16.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_mve.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_neon.h +OLD_FILES+=usr/lib/clang/11.0.1/include/arm_sve.h +OLD_FILES+=usr/lib/clang/11.0.1/include/armintr.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx2intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512bf16intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512bitalgintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512bwintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512cdintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512dqintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512erintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512fintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512ifmaintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512ifmavlintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512pfintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vbmi2intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vbmiintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vbmivlintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlbf16intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlbitalgintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlbwintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlcdintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vldqintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlvbmi2intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlvnniintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vlvp2intersectintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vnniintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vp2intersectintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vpopcntdqintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avx512vpopcntdqvlintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/avxintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/bmi2intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/bmiintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/cet.h +OLD_FILES+=usr/lib/clang/11.0.1/include/cetintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/cldemoteintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/clflushoptintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/clwbintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/clzerointrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/cpuid.h +OLD_FILES+=usr/lib/clang/11.0.1/include/emmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/enqcmdintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/f16cintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/float.h +OLD_FILES+=usr/lib/clang/11.0.1/include/fma4intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/fmaintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/fxsrintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/gfniintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/htmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/htmxlintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ia32intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/immintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/inttypes.h +OLD_FILES+=usr/lib/clang/11.0.1/include/invpcidintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/iso646.h +OLD_FILES+=usr/lib/clang/11.0.1/include/limits.h +OLD_FILES+=usr/lib/clang/11.0.1/include/lwpintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/lzcntintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/mm3dnow.h +OLD_FILES+=usr/lib/clang/11.0.1/include/mm_malloc.h +OLD_FILES+=usr/lib/clang/11.0.1/include/mmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/module.modulemap +OLD_FILES+=usr/lib/clang/11.0.1/include/movdirintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/msa.h +OLD_FILES+=usr/lib/clang/11.0.1/include/mwaitxintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/nmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/omp-tools.h +OLD_FILES+=usr/lib/clang/11.0.1/include/omp.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ompt.h +OLD_FILES+=usr/lib/clang/11.0.1/include/opencl-c-base.h +OLD_FILES+=usr/lib/clang/11.0.1/include/opencl-c.h +OLD_FILES+=usr/lib/clang/11.0.1/include/pconfigintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/pkuintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/pmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/popcntintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/prfchwintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/ptwriteintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/rdseedintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/rtmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/s390intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/serializeintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/sgxintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/shaintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/smmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stdalign.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stdarg.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stdatomic.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stdbool.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stddef.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stdint.h +OLD_FILES+=usr/lib/clang/11.0.1/include/stdnoreturn.h +OLD_FILES+=usr/lib/clang/11.0.1/include/tbmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/tgmath.h +OLD_FILES+=usr/lib/clang/11.0.1/include/tmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/tsxldtrkintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/unwind.h +OLD_FILES+=usr/lib/clang/11.0.1/include/vadefs.h +OLD_FILES+=usr/lib/clang/11.0.1/include/vaesintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/varargs.h +OLD_FILES+=usr/lib/clang/11.0.1/include/vecintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/vpclmulqdqintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/waitpkgintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/wasm_simd128.h +OLD_FILES+=usr/lib/clang/11.0.1/include/wbnoinvdintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/wmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/x86intrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xmmintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xopintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xsavecintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xsaveintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xsaveoptintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xsavesintrin.h +OLD_FILES+=usr/lib/clang/11.0.1/include/xtestintrin.h +OLD_DIRS+=usr/lib/clang/11.0.1/include +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-aarch64.so +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-arm.so +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-armhf.so +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-i386.so +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-x86_64.so +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.dd-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.dd-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan_cxx-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-powerpc.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-powerpc64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-powerpc64le.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.safestack-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.safestack-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profiling-aarch64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profiling-arm.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profiling-armhf.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profiling-x86_64.a +OLD_FILES+=usr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-x86_64.a +OLD_DIRS+=usr/lib/clang/11.0.1/lib/freebsd +OLD_DIRS+=usr/lib/clang/11.0.1/lib +OLD_DIRS+=usr/lib/clang/11.0.1 + +# 20210613: Rename OpenZFS manual pages +OLD_FILES+=usr/share/man/man5/spl-module-parameters.5.gz +OLD_FILES+=usr/share/man/man5/zfs-events.5.gz +OLD_FILES+=usr/share/man/man5/zfs-module-parameters.5.gz +OLD_FILES+=usr/share/man/man8/zfsconcepts.8.gz +OLD_FILES+=usr/share/man/man8/zfsprops.8.gz +OLD_FILES+=usr/share/man/man5/zpool-features.5.gz +OLD_FILES+=usr/share/man/man8/zpoolconcepts.8.gz +OLD_FILES+=usr/share/man/man8/zpoolprops.8.gz + +# 20210611: Remove svn and svnlite +OLD_FILES+=usr/bin/svn +OLD_FILES+=usr/bin/svnadmin +OLD_FILES+=usr/bin/svnbench +OLD_FILES+=usr/bin/svndumpfilter +OLD_FILES+=usr/bin/svnfsfs +OLD_FILES+=usr/bin/svnlite +OLD_FILES+=usr/bin/svnliteadmin +OLD_FILES+=usr/bin/svnlitebench +OLD_FILES+=usr/bin/svnlitedumpfilter +OLD_FILES+=usr/bin/svnlitefsfs +OLD_FILES+=usr/bin/svnlitelook +OLD_FILES+=usr/bin/svnlitemucc +OLD_FILES+=usr/bin/svnliterdump +OLD_FILES+=usr/bin/svnliteserve +OLD_FILES+=usr/bin/svnlitesync +OLD_FILES+=usr/bin/svnliteversion +OLD_FILES+=usr/bin/svnlook +OLD_FILES+=usr/bin/svnmucc +OLD_FILES+=usr/bin/svnrdump +OLD_FILES+=usr/bin/svnserve +OLD_FILES+=usr/bin/svnsync +OLD_FILES+=usr/bin/svnversion +OLD_FILES+=usr/share/man/man1/svnlite.1.gz + +# 20210607: remove ancontrol(8) related programs +OLD_FILES+=usr/sbin/ancontrol +OLD_FILES+=usr/share/man/man8/ancontrol.8.gz + +# 20210607: remove an(4) +OLD_FILES+=usr/include/dev/an/if_aironet_ieee.h +OLD_FILES+=usr/include/dev/an/if_anreg.h +OLD_FILES+=usr/share/man/man4/an.4.gz + +# 20210426: remove unused libexec/rc.d/addswap +OLD_FILES+=etc/rc.d/addswap + +# 20210413: Remove pfctlinput2 +OLD_FILES+=usr/share/man/man9/pfctlinput2.9.gz + +# 20210412: Remove kernel asymmetric crypto +OLD_FILES+=usr/share/man/man9/crypto_asym.9.gz +OLD_FILES+=usr/share/man/man9/crypto_kdispatch.9.gz +OLD_FILES+=usr/share/man/man9/crypto_kdone.9.gz +OLD_FILES+=usr/share/man/man9/crypto_kregister.9.gz +OLD_FILES+=usr/share/man/man9/CRYPTODEV_KPROCESS.9.gz + +# 20210410: remove unused libexec/rc.d/archdep +OLD_FILES+=etc/rc.d/archdep + +# 20210408: remove tcp_hostcache.h +OLD_FILES+=usr/include/netinet/tcp_hostcache.h + +# 20210403: remove kgmon(8) +OLD_FILES+=usr/sbin/kgmon +OLD_FILES+=usr/share/man/man8/kgmon.8.gz + +# 20210401: remove bt(4) man page +OLD_FILES+=usr/share/man/man4/bt.4.gz + +# 20210322: retire mn(4) sync serial driver +OLD_FILES+=usr/share/man/man4/if_mn.4.gz +OLD_FILES+=usr/share/man/man4/mn.4.gz + +# 20210318: remove the terminfo database +OLD_FILES+=usr/share/terminfo/1/1178 +OLD_FILES+=usr/share/terminfo/1/1730-lm +OLD_DIRS+=usr/share/terminfo/1 +OLD_FILES+=usr/share/terminfo/2/2621 +OLD_FILES+=usr/share/terminfo/2/2621-wl +OLD_FILES+=usr/share/terminfo/2/2621A +OLD_FILES+=usr/share/terminfo/2/2621a +OLD_DIRS+=usr/share/terminfo/2/ +OLD_FILES+=usr/share/terminfo/3/386at +OLD_FILES+=usr/share/terminfo/3/3b1 +OLD_DIRS+=usr/share/terminfo/3/ +OLD_FILES+=usr/share/terminfo/4/4025ex +OLD_FILES+=usr/share/terminfo/4/4027ex +OLD_FILES+=usr/share/terminfo/4/4410-w +OLD_DIRS+=usr/share/terminfo/4/ +OLD_FILES+=usr/share/terminfo/5/5051 +OLD_FILES+=usr/share/terminfo/5/5410-w +OLD_FILES+=usr/share/terminfo/5/5620 +OLD_FILES+=usr/share/terminfo/5/5630-24 +OLD_FILES+=usr/share/terminfo/5/5630DMD-24 +OLD_DIRS+=usr/share/terminfo/5/ +OLD_FILES+=usr/share/terminfo/6/6053 +OLD_FILES+=usr/share/terminfo/6/6053-dg +OLD_FILES+=usr/share/terminfo/6/605x +OLD_FILES+=usr/share/terminfo/6/605x-dg +OLD_FILES+=usr/share/terminfo/6/630-lm +OLD_FILES+=usr/share/terminfo/6/630MTG-24 +OLD_DIRS+=usr/share/terminfo/6/ +OLD_FILES+=usr/share/terminfo/7/730MTG-24 +OLD_FILES+=usr/share/terminfo/7/730MTG-41 +OLD_FILES+=usr/share/terminfo/7/730MTG-41r +OLD_FILES+=usr/share/terminfo/7/730MTGr +OLD_FILES+=usr/share/terminfo/7/730MTGr-24 +OLD_DIRS+=usr/share/terminfo/7/ +OLD_FILES+=usr/share/terminfo/8/8510 +OLD_DIRS+=usr/share/terminfo/8/ +OLD_FILES+=usr/share/terminfo/9/955-hb +OLD_FILES+=usr/share/terminfo/9/955-w +OLD_FILES+=usr/share/terminfo/9/9term +OLD_DIRS+=usr/share/terminfo/9/ +OLD_FILES+=usr/share/terminfo/A/Apple_Terminal +OLD_DIRS+=usr/share/terminfo/A/ +OLD_FILES+=usr/share/terminfo/E/Eterm +OLD_FILES+=usr/share/terminfo/E/Eterm-256color +OLD_FILES+=usr/share/terminfo/E/Eterm-88color +OLD_FILES+=usr/share/terminfo/E/Eterm-color +OLD_DIRS+=usr/share/terminfo/E/ +OLD_FILES+=usr/share/terminfo/L/LFT-PC850 +OLD_DIRS+=usr/share/terminfo/L/ +OLD_FILES+=usr/share/terminfo/M/MtxOrb +OLD_FILES+=usr/share/terminfo/M/MtxOrb162 +OLD_FILES+=usr/share/terminfo/M/MtxOrb204 +OLD_DIRS+=usr/share/terminfo/M/ +OLD_FILES+=usr/share/terminfo/N/NCR260VT300WPP +OLD_FILES+=usr/share/terminfo/N/NCRVT100WPP +OLD_DIRS+=usr/share/terminfo/N/ +OLD_FILES+=usr/share/terminfo/P/P12 +OLD_FILES+=usr/share/terminfo/P/P12-M +OLD_FILES+=usr/share/terminfo/P/P12-M-W +OLD_FILES+=usr/share/terminfo/P/P12-W +OLD_FILES+=usr/share/terminfo/P/P14 +OLD_FILES+=usr/share/terminfo/P/P14-M +OLD_FILES+=usr/share/terminfo/P/P14-M-W +OLD_FILES+=usr/share/terminfo/P/P14-W +OLD_FILES+=usr/share/terminfo/P/P4 +OLD_FILES+=usr/share/terminfo/P/P5 +OLD_FILES+=usr/share/terminfo/P/P7 +OLD_FILES+=usr/share/terminfo/P/P8 +OLD_FILES+=usr/share/terminfo/P/P8-W +OLD_FILES+=usr/share/terminfo/P/P9 +OLD_FILES+=usr/share/terminfo/P/P9-8 +OLD_FILES+=usr/share/terminfo/P/P9-8-W +OLD_FILES+=usr/share/terminfo/P/P9-W +OLD_DIRS+=usr/share/terminfo/P/ +OLD_FILES+=usr/share/terminfo/Q/Q306-8-pc +OLD_FILES+=usr/share/terminfo/Q/Q310-vip-H +OLD_FILES+=usr/share/terminfo/Q/Q310-vip-H-am +OLD_FILES+=usr/share/terminfo/Q/Q310-vip-Hw +OLD_FILES+=usr/share/terminfo/Q/Q310-vip-w +OLD_FILES+=usr/share/terminfo/Q/Q310-vip-w-am +OLD_DIRS+=usr/share/terminfo/Q/ +OLD_FILES+=usr/share/terminfo/X/X-hpterm +OLD_DIRS+=usr/share/terminfo/X/ +OLD_FILES+=usr/share/terminfo/a/a210 +OLD_FILES+=usr/share/terminfo/a/a80 +OLD_FILES+=usr/share/terminfo/a/a980 +OLD_FILES+=usr/share/terminfo/a/aa4080 +OLD_FILES+=usr/share/terminfo/a/aaa +OLD_FILES+=usr/share/terminfo/a/aaa+dec +OLD_FILES+=usr/share/terminfo/a/aaa+rv +OLD_FILES+=usr/share/terminfo/a/aaa+unk +OLD_FILES+=usr/share/terminfo/a/aaa-18 +OLD_FILES+=usr/share/terminfo/a/aaa-18-rv +OLD_FILES+=usr/share/terminfo/a/aaa-20 +OLD_FILES+=usr/share/terminfo/a/aaa-22 +OLD_FILES+=usr/share/terminfo/a/aaa-24 +OLD_FILES+=usr/share/terminfo/a/aaa-24-rv +OLD_FILES+=usr/share/terminfo/a/aaa-26 +OLD_FILES+=usr/share/terminfo/a/aaa-28 +OLD_FILES+=usr/share/terminfo/a/aaa-30 +OLD_FILES+=usr/share/terminfo/a/aaa-30-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-30-rv +OLD_FILES+=usr/share/terminfo/a/aaa-30-rv-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-30-s +OLD_FILES+=usr/share/terminfo/a/aaa-30-s-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-30-s-rv +OLD_FILES+=usr/share/terminfo/a/aaa-30-s-rv-ct +OLD_FILES+=usr/share/terminfo/a/aaa-36 +OLD_FILES+=usr/share/terminfo/a/aaa-36-rv +OLD_FILES+=usr/share/terminfo/a/aaa-40 +OLD_FILES+=usr/share/terminfo/a/aaa-40-rv +OLD_FILES+=usr/share/terminfo/a/aaa-48 +OLD_FILES+=usr/share/terminfo/a/aaa-48-rv +OLD_FILES+=usr/share/terminfo/a/aaa-60 +OLD_FILES+=usr/share/terminfo/a/aaa-60-dec-rv +OLD_FILES+=usr/share/terminfo/a/aaa-60-rv +OLD_FILES+=usr/share/terminfo/a/aaa-60-s +OLD_FILES+=usr/share/terminfo/a/aaa-60-s-rv +OLD_FILES+=usr/share/terminfo/a/aaa-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-db +OLD_FILES+=usr/share/terminfo/a/aaa-rv +OLD_FILES+=usr/share/terminfo/a/aaa-rv-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-rv-unk +OLD_FILES+=usr/share/terminfo/a/aaa-s +OLD_FILES+=usr/share/terminfo/a/aaa-s-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-s-rv +OLD_FILES+=usr/share/terminfo/a/aaa-s-rv-ctxt +OLD_FILES+=usr/share/terminfo/a/aaa-unk +OLD_FILES+=usr/share/terminfo/a/aas1901 +OLD_FILES+=usr/share/terminfo/a/abm80 +OLD_FILES+=usr/share/terminfo/a/abm85 +OLD_FILES+=usr/share/terminfo/a/abm85e +OLD_FILES+=usr/share/terminfo/a/abm85h +OLD_FILES+=usr/share/terminfo/a/abm85h-old +OLD_FILES+=usr/share/terminfo/a/absolute +OLD_FILES+=usr/share/terminfo/a/act4 +OLD_FILES+=usr/share/terminfo/a/act5 +OLD_FILES+=usr/share/terminfo/a/addrinfo +OLD_FILES+=usr/share/terminfo/a/adds200 +OLD_FILES+=usr/share/terminfo/a/adds980 +OLD_FILES+=usr/share/terminfo/a/addsviewpoint +OLD_FILES+=usr/share/terminfo/a/addsvp60 +OLD_FILES+=usr/share/terminfo/a/adm+sgr +OLD_FILES+=usr/share/terminfo/a/adm1 +OLD_FILES+=usr/share/terminfo/a/adm11 +OLD_FILES+=usr/share/terminfo/a/adm1178 +OLD_FILES+=usr/share/terminfo/a/adm12 +OLD_FILES+=usr/share/terminfo/a/adm1a +OLD_FILES+=usr/share/terminfo/a/adm2 +OLD_FILES+=usr/share/terminfo/a/adm20 +OLD_FILES+=usr/share/terminfo/a/adm21 +OLD_FILES+=usr/share/terminfo/a/adm22 +OLD_FILES+=usr/share/terminfo/a/adm3 +OLD_FILES+=usr/share/terminfo/a/adm31 +OLD_FILES+=usr/share/terminfo/a/adm31-old +OLD_FILES+=usr/share/terminfo/a/adm36 +OLD_FILES+=usr/share/terminfo/a/adm3a *** 27445 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Sat Jun 19 18:20:32 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2ACB065E531; Sat, 19 Jun 2021 18:20:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6kcJ0XWmz4Zvg; Sat, 19 Jun 2021 18:20:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EB9D91B215; Sat, 19 Jun 2021 18:20:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JIKVCq015129; Sat, 19 Jun 2021 18:20:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JIKVaH015128; Sat, 19 Jun 2021 18:20:31 GMT (envelope-from git) Date: Sat, 19 Jun 2021 18:20:31 GMT Message-Id: <202106191820.15JIKVaH015128@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 19dcc4f2250b - main - libalias: Restructure - Cleanup _FindLinkIn MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 19dcc4f2250b3850991366e3058ca8a64b2f135d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 18:20:32 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=19dcc4f2250b3850991366e3058ca8a64b2f135d commit 19dcc4f2250b3850991366e3058ca8a64b2f135d Author: Lutz Donnerhacke AuthorDate: 2021-05-25 17:08:48 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 18:19:16 +0000 libalias: Restructure - Cleanup _FindLinkIn Simplify program flow in function _FindLinkIn. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30571 --- sys/netinet/libalias/alias_db.c | 44 ++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 39b82d9d3a01..229ca24bfe29 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -1198,6 +1198,8 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, struct alias_link *lnk_unknown_all; struct alias_link *lnk_unknown_dst_addr; struct alias_link *lnk_unknown_dst_port; + struct in_addr src_addr; + u_short src_port; LIBALIAS_LOCK_ASSERT(la); /* Initialize pointers */ @@ -1274,34 +1276,26 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, } #undef INGUARD - if (lnk_unknown_dst_port != NULL) - lnk = lnk_unknown_dst_port; - else if (lnk_unknown_dst_addr != NULL) - lnk = lnk_unknown_dst_addr; - else if (lnk_unknown_all != NULL) - lnk = lnk_unknown_all; - else - return (NULL); + lnk = (lnk_unknown_dst_port != NULL) ? lnk_unknown_dst_port + : (lnk_unknown_dst_addr != NULL) ? lnk_unknown_dst_addr + : lnk_unknown_all; - if (replace_partial_links && - (lnk->flags & LINK_PARTIALLY_SPECIFIED || lnk->server != NULL)) { - struct in_addr src_addr; - u_short src_port; + if (lnk == NULL || !replace_partial_links) + return (lnk); - if (lnk->server != NULL) { /* LSNAT link */ - src_addr = lnk->server->addr; - src_port = lnk->server->port; - lnk->server = lnk->server->next; - } else { - src_addr = lnk->src_addr; - src_port = lnk->src_port; - } + if (lnk->server != NULL) { /* LSNAT link */ + src_addr = lnk->server->addr; + src_port = lnk->server->port; + lnk->server = lnk->server->next; + } else { + src_addr = lnk->src_addr; + src_port = lnk->src_port; + } - if (link_type == LINK_SCTP) { - lnk->src_addr = src_addr; - lnk->src_port = src_port; - return (lnk); - } + if (link_type == LINK_SCTP) { + lnk->src_addr = src_addr; + lnk->src_port = src_port; + } else { lnk = ReLink(lnk, src_addr, dst_addr, alias_addr, src_port, dst_port, alias_port, From owner-dev-commits-src-all@freebsd.org Sat Jun 19 18:26:35 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 30FA965E63E; Sat, 19 Jun 2021 18:26:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6klH0W2bz4c0f; Sat, 19 Jun 2021 18:26:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EDB5A1B0FE; Sat, 19 Jun 2021 18:26:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JIQYpx020308; Sat, 19 Jun 2021 18:26:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JIQYwX020307; Sat, 19 Jun 2021 18:26:34 GMT (envelope-from git) Date: Sat, 19 Jun 2021 18:26:34 GMT Message-Id: <202106191826.15JIQYwX020307@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: d5419034381d - main - libalias: Restructure - Outgoing search MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d5419034381d0e8e8c99f0f678118b197144bfff Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 18:26:35 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=d5419034381d0e8e8c99f0f678118b197144bfff commit d5419034381d0e8e8c99f0f678118b197144bfff Author: Lutz Donnerhacke AuthorDate: 2021-05-26 07:09:19 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 18:25:08 +0000 libalias: Restructure - Outgoing search Factor out the outgoing search function. Preparation for a new data structure. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30572 --- sys/netinet/libalias/alias_db.c | 67 ++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 229ca24bfe29..3fd7cf5e0acc 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -1097,50 +1097,65 @@ ReLink(struct alias_link *old_lnk, return (new_lnk); } -static struct alias_link * -_FindLinkOut(struct libalias *la, struct in_addr src_addr, - struct in_addr dst_addr, - u_short src_port, - u_short dst_port, - int link_type, - int replace_partial_links) -{ - u_int i; - struct alias_link *lnk; #define OUTGUARD \ if (lnk->src_port != src_port || \ lnk->src_addr.s_addr != src_addr.s_addr || \ + lnk->dst_addr.s_addr != dst_addr.s_addr || \ + lnk->dst_port != dst_port || \ lnk->link_type != link_type || \ lnk->server != NULL) \ continue; - LIBALIAS_LOCK_ASSERT(la); +static struct alias_link * +_SearchLinkOut(struct libalias *la, struct in_addr src_addr, + struct in_addr dst_addr, + u_short src_port, + u_short dst_port, + int link_type) { + u_int i; + struct alias_link *lnk; + i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) { OUTGUARD; - if (lnk->dst_addr.s_addr == dst_addr.s_addr && - lnk->dst_port == dst_port) - break; + CleanupLink(la, &lnk); + if (lnk != NULL) + lnk->timestamp = LibAliasTime; + return (lnk); } - CleanupLink(la, &lnk); - if (lnk != NULL) - lnk->timestamp = LibAliasTime; + return (NULL); +} + +#undef OUTGUARD + +static struct alias_link * +_FindLinkOut(struct libalias *la, struct in_addr src_addr, + struct in_addr dst_addr, + u_short src_port, + u_short dst_port, + int link_type, + int replace_partial_links) +{ + struct alias_link *lnk; + + LIBALIAS_LOCK_ASSERT(la); + lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, dst_port, link_type); /* Search for partially specified links. */ if (lnk == NULL && replace_partial_links) { if (dst_port != 0 && dst_addr.s_addr != INADDR_ANY) { - lnk = _FindLinkOut(la, src_addr, dst_addr, src_port, 0, - link_type, 0); + lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, 0, + link_type); if (lnk == NULL) - lnk = _FindLinkOut(la, src_addr, ANY_ADDR, src_port, - dst_port, link_type, 0); + lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, + dst_port, link_type); } if (lnk == NULL && (dst_port != 0 || dst_addr.s_addr != INADDR_ANY)) { - lnk = _FindLinkOut(la, src_addr, ANY_ADDR, src_port, 0, - link_type, 0); + lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, 0, + link_type); } if (lnk != NULL) { lnk = ReLink(lnk, @@ -1149,7 +1164,6 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr, link_type); } } -#undef OUTGUARD return (lnk); } @@ -1230,10 +1244,9 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, if (lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->dst_port == dst_port) { CleanupLink(la, &lnk); - if (lnk != NULL) { + if (lnk != NULL) lnk->timestamp = LibAliasTime; - return (lnk); - } + return (lnk); } } } else { From owner-dev-commits-src-all@freebsd.org Sat Jun 19 18:31:58 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BF5BA65EC25; Sat, 19 Jun 2021 18:31:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6ksV4z9cz4cNd; Sat, 19 Jun 2021 18:31:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 92F2D1B6B6; Sat, 19 Jun 2021 18:31:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JIVwWN030666; Sat, 19 Jun 2021 18:31:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JIVwUC030665; Sat, 19 Jun 2021 18:31:58 GMT (envelope-from git) Date: Sat, 19 Jun 2021 18:31:58 GMT Message-Id: <202106191831.15JIVwUC030665@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: d4ab07d2aeb1 - main - libalias: Restructure - Cleanup and Use for links MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d4ab07d2aeb13b1aae9ad5d73e5fe77131f2350c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 18:31:58 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=d4ab07d2aeb13b1aae9ad5d73e5fe77131f2350c commit d4ab07d2aeb13b1aae9ad5d73e5fe77131f2350c Author: Lutz Donnerhacke AuthorDate: 2021-05-26 09:03:07 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 18:28:53 +0000 libalias: Restructure - Cleanup and Use for links Factor out a common idiom to return found links. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30573 --- sys/netinet/libalias/alias_db.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 3fd7cf5e0acc..5c2bef60116b 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -535,6 +535,8 @@ static u_short GetSocket(struct libalias *, u_short, int *, int); static void CleanupAliasData(struct libalias *); static void CleanupLink(struct libalias *, struct alias_link **); static void DeleteLink(struct alias_link **); +static struct alias_link * +UseLink(struct libalias *, struct alias_link *); static struct alias_link * ReLink(struct alias_link *, @@ -839,6 +841,15 @@ CleanupLink(struct libalias *la, struct alias_link **lnk) TAILQ_INSERT_TAIL(&la->checkExpire, (*lnk), list_expire); } +static struct alias_link * +UseLink(struct libalias *la, struct alias_link *lnk) +{ + CleanupLink(la, &lnk); + if (lnk != NULL) + lnk->timestamp = LibAliasTime; + return (lnk); +} + static void DeleteLink(struct alias_link **plnk) { @@ -1119,10 +1130,7 @@ _SearchLinkOut(struct libalias *la, struct in_addr src_addr, i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) { OUTGUARD; - CleanupLink(la, &lnk); - if (lnk != NULL) - lnk->timestamp = LibAliasTime; - return (lnk); + return (UseLink(la, lnk)); } return (NULL); @@ -1242,12 +1250,8 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { INGUARD; if (lnk->dst_addr.s_addr == dst_addr.s_addr - && lnk->dst_port == dst_port) { - CleanupLink(la, &lnk); - if (lnk != NULL) - lnk->timestamp = LibAliasTime; - return (lnk); - } + && lnk->dst_port == dst_port) + return (UseLink(la, lnk)); } } else { LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { @@ -1615,8 +1619,7 @@ FindPptpOutByCallId(struct libalias *la, struct in_addr src_addr, lnk->src_port == src_call_id) break; - CleanupLink(la, &lnk); - return (lnk); + return (UseLink(la, lnk)); } struct alias_link * @@ -1636,8 +1639,7 @@ FindPptpOutByPeerCallId(struct libalias *la, struct in_addr src_addr, lnk->dst_port == dst_call_id) break; - CleanupLink(la, &lnk); - return (lnk); + return (UseLink(la, lnk)); } struct alias_link * @@ -1655,8 +1657,7 @@ FindPptpInByCallId(struct libalias *la, struct in_addr dst_addr, lnk->dst_port == dst_call_id) break; - CleanupLink(la, &lnk); - return (lnk); + return (UseLink(la, lnk)); } struct alias_link * From owner-dev-commits-src-all@freebsd.org Sat Jun 19 19:08:08 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2395965F56C; Sat, 19 Jun 2021 19:08:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6lgD0NGtz4fhx; Sat, 19 Jun 2021 19:08:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DEAF41BD5C; Sat, 19 Jun 2021 19:08:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JJ87EG073792; Sat, 19 Jun 2021 19:08:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JJ872o073791; Sat, 19 Jun 2021 19:08:07 GMT (envelope-from git) Date: Sat, 19 Jun 2021 19:08:07 GMT Message-Id: <202106191908.15JJ872o073791@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 492d3b7109b4 - main - libalias: Restructure - Group incoming links MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 492d3b7109b45ff30fd199b7eeed797447746e42 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 19:08:08 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=492d3b7109b45ff30fd199b7eeed797447746e42 commit 492d3b7109b45ff30fd199b7eeed797447746e42 Author: Lutz Donnerhacke AuthorDate: 2021-05-26 18:48:56 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 19:03:47 +0000 libalias: Restructure - Group incoming links Reorder incoming links by grouping of common search terms. Significant performance improvement for incoming (missing) flows. Remove LSNAT from outgoing search. Slight speedup due to less comparsions in the loop. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30574 --- sys/netinet/libalias/alias_db.c | 218 +++++++++++++++++++++---------------- sys/netinet/libalias/alias_local.h | 14 ++- 2 files changed, 136 insertions(+), 96 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 5c2bef60116b..80da3c54fb41 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -378,12 +378,10 @@ Miscellaneous: */ /* Local prototypes */ -static u_int StartPointIn(struct in_addr, u_short, int); - -static u_int -StartPointOut(struct in_addr, struct in_addr, - u_short, u_short, int); - +static struct group_in * +StartPointIn(struct libalias *, struct in_addr, u_short, int, int); +static u_int +StartPointOut(struct in_addr, struct in_addr, u_short, u_short, int); static int SeqDiff(u_long, u_long); #ifndef NO_FW_PUNCH @@ -401,26 +399,47 @@ static void UninitPacketAliasLog(struct libalias *); void SctpShowAliasStats(struct libalias *la); -static u_int -StartPartialIn(u_short alias_port, int link_type) -{ - return (link_type == LINK_PPTP) ? 0 - : (alias_port % LINK_PARTIAL_SIZE); -} +#define INGUARD \ + if (grp->alias_port != alias_port || \ + grp->link_type != link_type || \ + grp->alias_addr.s_addr != alias_addr.s_addr) \ + continue; -static u_int -StartPointIn(struct in_addr alias_addr, - u_short alias_port, - int link_type) +static struct group_in * +StartPointIn(struct libalias *la, + struct in_addr alias_addr, u_short alias_port, int link_type, + int create) { u_int n; + struct group_in *grp, *tmp; n = alias_addr.s_addr; if (link_type != LINK_PPTP) n += alias_port; n += link_type; - return (n % LINK_TABLE_IN_SIZE); + n %= LINK_TABLE_IN_SIZE; + + LIST_FOREACH_SAFE(grp, &la->groupTableIn[n], group_in, tmp) { + /* Auto cleanup */ + if (LIST_EMPTY(&grp->full) && LIST_EMPTY(&grp->partial)) { + LIST_REMOVE(grp, group_in); + free(grp); + } else { + INGUARD; + return (grp); + } + } + if (!create || (grp = malloc(sizeof(*grp))) == NULL) + return (grp); + grp->alias_addr = alias_addr; + grp->alias_port = alias_port; + grp->link_type = link_type; + LIST_INIT(&grp->full); + LIST_INIT(&grp->partial); + LIST_INSERT_HEAD(&la->groupTableIn[n], grp, group_in); + return (grp); } +#undef INGUARD static u_int StartPointOut(struct in_addr src_addr, struct in_addr dst_addr, @@ -814,12 +833,21 @@ static void CleanupAliasData(struct libalias *la) { struct alias_link *lnk, *lnk_tmp; + struct group_in *grp, *grp_tmp; + u_int i; LIBALIAS_LOCK_ASSERT(la); /* permanent entries may stay */ TAILQ_FOREACH_SAFE(lnk, &la->checkExpire, list_expire, lnk_tmp) DeleteLink(&lnk); + + for (i = 0; i < LINK_TABLE_IN_SIZE; i++) + LIST_FOREACH_SAFE(grp, &la->groupTableIn[i], group_in, grp_tmp) + if (LIST_EMPTY(&grp->full) && LIST_EMPTY(&grp->partial)) { + LIST_REMOVE(grp, group_in); + free(grp); + } } static void @@ -875,9 +903,10 @@ DeleteLink(struct alias_link **plnk) next = curr->next; free(curr); } while ((curr = next) != head); + } else { + /* Adjust output table pointers */ + LIST_REMOVE(lnk, list_out); } - /* Adjust output table pointers */ - LIST_REMOVE(lnk, list_out); /* Adjust input table pointers */ LIST_REMOVE(lnk, list_in); @@ -939,8 +968,10 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, { u_int start_point; struct alias_link *lnk; + struct group_in *grp_in; LIBALIAS_LOCK_ASSERT(la); + lnk = malloc(sizeof(struct alias_link)); if (lnk != NULL) { /* Basic initialization */ @@ -1048,6 +1079,12 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, break; } + grp_in = StartPointIn(la, alias_addr, lnk->alias_port, link_type, 1); + if (grp_in == NULL) { + free(lnk); + return (NULL); + } + /* Set up pointers for output lookup table */ start_point = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); @@ -1055,11 +1092,9 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, /* Set up pointers for input lookup table */ if (lnk->flags & LINK_PARTIALLY_SPECIFIED) { - start_point = StartPartialIn(lnk->alias_port, link_type); - LIST_INSERT_HEAD(&la->linkPartialIn[start_point], lnk, list_in); + LIST_INSERT_HEAD(&grp_in->partial, lnk, list_in); } else { - start_point = StartPointIn(alias_addr, lnk->alias_port, link_type); - LIST_INSERT_HEAD(&la->linkTableIn[start_point], lnk, list_in); + LIST_INSERT_HEAD(&grp_in->full, lnk, list_in); } /* Include the element into the housekeeping list */ @@ -1114,8 +1149,7 @@ ReLink(struct alias_link *old_lnk, lnk->src_addr.s_addr != src_addr.s_addr || \ lnk->dst_addr.s_addr != dst_addr.s_addr || \ lnk->dst_port != dst_port || \ - lnk->link_type != link_type || \ - lnk->server != NULL) \ + lnk->link_type != link_type) \ continue; static struct alias_link * @@ -1150,27 +1184,27 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr, LIBALIAS_LOCK_ASSERT(la); lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, dst_port, link_type); + if (lnk != NULL || !replace_partial_links) + return (lnk); /* Search for partially specified links. */ - if (lnk == NULL && replace_partial_links) { - if (dst_port != 0 && dst_addr.s_addr != INADDR_ANY) { - lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, 0, - link_type); - if (lnk == NULL) - lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, - dst_port, link_type); - } - if (lnk == NULL && - (dst_port != 0 || dst_addr.s_addr != INADDR_ANY)) { - lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, 0, - link_type); - } - if (lnk != NULL) { - lnk = ReLink(lnk, - src_addr, dst_addr, lnk->alias_addr, - src_port, dst_port, lnk->alias_port, - link_type); - } + if (dst_port != 0 && dst_addr.s_addr != INADDR_ANY) { + lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, 0, + link_type); + if (lnk == NULL) + lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, + dst_port, link_type); + } + if (lnk == NULL && + (dst_port != 0 || dst_addr.s_addr != INADDR_ANY)) { + lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, 0, + link_type); + } + if (lnk != NULL) { + lnk = ReLink(lnk, + src_addr, dst_addr, lnk->alias_addr, + src_port, dst_port, lnk->alias_port, + link_type); } return (lnk); } @@ -1214,9 +1248,8 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, int replace_partial_links) { int flags_in; - u_int start_point; + struct group_in *grp; struct alias_link *lnk; - struct alias_link *lnk_fully_specified; struct alias_link *lnk_unknown_all; struct alias_link *lnk_unknown_dst_addr; struct alias_link *lnk_unknown_dst_port; @@ -1225,7 +1258,6 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, LIBALIAS_LOCK_ASSERT(la); /* Initialize pointers */ - lnk_fully_specified = NULL; lnk_unknown_all = NULL; lnk_unknown_dst_addr = NULL; lnk_unknown_dst_port = NULL; @@ -1238,26 +1270,44 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, if (dst_port == 0) flags_in |= LINK_UNKNOWN_DEST_PORT; -#define INGUARD \ - if (lnk->alias_port != alias_port || \ - lnk->link_type != link_type || \ - lnk->alias_addr.s_addr != alias_addr.s_addr) \ - continue; - /* Search loop */ - start_point = StartPointIn(alias_addr, alias_port, link_type); - if (!(flags_in & LINK_PARTIALLY_SPECIFIED)) { - LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { - INGUARD; - if (lnk->dst_addr.s_addr == dst_addr.s_addr - && lnk->dst_port == dst_port) + grp = StartPointIn(la, alias_addr, alias_port, link_type, 0); + if (grp == NULL) + return (NULL); + + switch (flags_in) { + case 0: + LIST_FOREACH(lnk, &grp->full, list_in) { + if (lnk->dst_addr.s_addr == dst_addr.s_addr && + lnk->dst_port == dst_port) return (UseLink(la, lnk)); } - } else { - LIST_FOREACH(lnk, &la->linkTableIn[start_point], list_in) { - int flags = flags_in & LINK_PARTIALLY_SPECIFIED; + break; + case LINK_UNKNOWN_DEST_PORT: + LIST_FOREACH(lnk, &grp->full, list_in) { + if(lnk->dst_addr.s_addr == dst_addr.s_addr) { + lnk_unknown_dst_port = lnk; + break; + } + } + break; + case LINK_UNKNOWN_DEST_ADDR: + LIST_FOREACH(lnk, &grp->full, list_in) { + if(lnk->dst_port == dst_port) { + lnk_unknown_dst_addr = lnk; + break; + } + } + break; + case LINK_PARTIALLY_SPECIFIED: + lnk_unknown_all = LIST_FIRST(&grp->full); + break; + } + + if (lnk_unknown_dst_port == NULL) { + LIST_FOREACH(lnk, &grp->partial, list_in) { + int flags = (flags_in | lnk->flags) & LINK_PARTIALLY_SPECIFIED; - INGUARD; if (flags == LINK_PARTIALLY_SPECIFIED && lnk_unknown_all == NULL) lnk_unknown_all = lnk; @@ -1273,26 +1323,6 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, } } - start_point = StartPartialIn(alias_port, link_type); - LIST_FOREACH(lnk, &la->linkPartialIn[start_point], list_in) { - int flags = (flags_in | lnk->flags) & LINK_PARTIALLY_SPECIFIED; - - INGUARD; - if (flags == LINK_PARTIALLY_SPECIFIED && - lnk_unknown_all == NULL) - lnk_unknown_all = lnk; - if (flags == LINK_UNKNOWN_DEST_ADDR && - lnk->dst_port == dst_port && - lnk_unknown_dst_addr == NULL) - lnk_unknown_dst_addr = lnk; - if (flags == LINK_UNKNOWN_DEST_PORT && - lnk->dst_addr.s_addr == dst_addr.s_addr) { - lnk_unknown_dst_port = lnk; - break; - } - } -#undef INGUARD - lnk = (lnk_unknown_dst_port != NULL) ? lnk_unknown_dst_port : (lnk_unknown_dst_addr != NULL) ? lnk_unknown_dst_addr : lnk_unknown_all; @@ -1647,13 +1677,17 @@ FindPptpInByCallId(struct libalias *la, struct in_addr dst_addr, struct in_addr alias_addr, u_int16_t dst_call_id) { + struct group_in *grp; struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); - LIST_FOREACH(lnk, &la->linkPartialIn[0], list_in) - if (lnk->link_type == LINK_PPTP && - lnk->dst_addr.s_addr == dst_addr.s_addr && - lnk->alias_addr.s_addr == alias_addr.s_addr && + + grp = StartPointIn(la, alias_addr, 0, LINK_PPTP, 0); + if (grp == NULL) + return (NULL); + + LIST_FOREACH(lnk, &grp->full, list_in) + if (lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->dst_port == dst_call_id) break; @@ -2304,9 +2338,11 @@ LibAliasAddServer(struct libalias *la, struct alias_link *lnk, struct in_addr ad server->port = port; head = lnk->server; - if (head == NULL) + if (head == NULL) { server->next = server; - else { + /* not usable for outgoing connections */ + LIST_REMOVE(lnk, list_out); + } else { struct server *s; for (s = head; s->next != head; s = s->next) @@ -2478,9 +2514,7 @@ LibAliasInit(struct libalias *la) for (i = 0; i < LINK_TABLE_OUT_SIZE; i++) LIST_INIT(&la->linkTableOut[i]); for (i = 0; i < LINK_TABLE_IN_SIZE; i++) - LIST_INIT(&la->linkTableIn[i]); - for (i = 0; i < LINK_PARTIAL_SIZE; i++) - LIST_INIT(&la->linkPartialIn[i]); + LIST_INIT(&la->groupTableIn[i]); TAILQ_INIT(&la->checkExpire); #ifdef _KERNEL AliasSctpInit(la); diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index 47123d769375..6e5d40ab0c9a 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -68,7 +68,6 @@ /* Sizes of input and output link tables */ #define LINK_TABLE_OUT_SIZE 4001 #define LINK_TABLE_IN_SIZE 4001 -#define LINK_PARTIAL_SIZE 401 #define GET_ALIAS_PORT -1 #define GET_ALIAS_ID GET_ALIAS_PORT @@ -81,6 +80,14 @@ struct proxy_entry; +struct group_in { + struct in_addr alias_addr; + u_short alias_port; + int link_type; + LIST_ENTRY(group_in) group_in; + LIST_HEAD(, alias_link) full, partial; +}; + struct libalias { LIST_ENTRY(libalias) instancelist; /* Mode flags documented in alias.h */ @@ -93,9 +100,8 @@ struct libalias { /* Lookup table of pointers to chains of link records. * Each link record is doubly indexed into input and * output lookup tables. */ - LIST_HEAD (, alias_link) linkTableOut[LINK_TABLE_OUT_SIZE]; - LIST_HEAD (, alias_link) linkTableIn[LINK_TABLE_IN_SIZE]; - LIST_HEAD (, alias_link) linkPartialIn[LINK_PARTIAL_SIZE]; + LIST_HEAD (, alias_link) linkTableOut[LINK_TABLE_OUT_SIZE]; + LIST_HEAD (, group_in) groupTableIn[LINK_TABLE_IN_SIZE]; /* HouseKeeping */ TAILQ_HEAD (, alias_link) checkExpire; /* Link statistics */ From owner-dev-commits-src-all@freebsd.org Sat Jun 19 19:23:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2DFA965FD14; Sat, 19 Jun 2021 19:23:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6m0v0XmNz4ghx; Sat, 19 Jun 2021 19:23:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E481B1BDD0; Sat, 19 Jun 2021 19:23:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JJNQQF099579; Sat, 19 Jun 2021 19:23:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JJNQ2a099578; Sat, 19 Jun 2021 19:23:26 GMT (envelope-from git) Date: Sat, 19 Jun 2021 19:23:26 GMT Message-Id: <202106191923.15JJNQ2a099578@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 7b44ff4c52ce - main - libalias: Restructure - Group expire handling entries MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7b44ff4c52ce9e7a89e772566a249e5481fe0ac4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 19:23:27 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=7b44ff4c52ce9e7a89e772566a249e5481fe0ac4 commit 7b44ff4c52ce9e7a89e772566a249e5481fe0ac4 Author: Lutz Donnerhacke AuthorDate: 2021-05-31 16:06:29 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 19:12:27 +0000 libalias: Restructure - Group expire handling entries Reorder the internal structure semantically. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30575 --- sys/netinet/libalias/alias_db.c | 44 +++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 80da3c54fb41..3dae7ac72645 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -318,14 +318,16 @@ struct alias_link { #define LINK_UNFIREWALLED 0x08 int timestamp; /* Time link was last accessed */ - int expire_time; /* Expire time for link */ #ifndef NO_USE_SOCKETS int sockfd; /* socket descriptor */ #endif /* Linked list of pointers for input and output lookup tables */ LIST_ENTRY (alias_link) list_out; LIST_ENTRY (alias_link) list_in; - TAILQ_ENTRY (alias_link) list_expire; + struct { + TAILQ_ENTRY(alias_link) list; + int time; /* Expire time for link */ + } expire; /* Auxiliary data */ union { char *frag_ptr; @@ -839,7 +841,7 @@ CleanupAliasData(struct libalias *la) LIBALIAS_LOCK_ASSERT(la); /* permanent entries may stay */ - TAILQ_FOREACH_SAFE(lnk, &la->checkExpire, list_expire, lnk_tmp) + TAILQ_FOREACH_SAFE(lnk, &la->checkExpire, expire.list, lnk_tmp) DeleteLink(&lnk); for (i = 0; i < LINK_TABLE_IN_SIZE; i++) @@ -858,15 +860,15 @@ CleanupLink(struct libalias *la, struct alias_link **lnk) if (lnk == NULL || *lnk == NULL) return; - if (LibAliasTime - (*lnk)->timestamp > (*lnk)->expire_time) { + if (LibAliasTime - (*lnk)->timestamp > (*lnk)->expire.time) { DeleteLink(lnk); if ((*lnk) == NULL) return; } /* move to end, swap may fail on a single entry list */ - TAILQ_REMOVE(&la->checkExpire, (*lnk), list_expire); - TAILQ_INSERT_TAIL(&la->checkExpire, (*lnk), list_expire); + TAILQ_REMOVE(&la->checkExpire, (*lnk), expire.list); + TAILQ_INSERT_TAIL(&la->checkExpire, (*lnk), expire.list); } static struct alias_link * @@ -912,7 +914,7 @@ DeleteLink(struct alias_link **plnk) LIST_REMOVE(lnk, list_in); /* remove from housekeeping */ - TAILQ_REMOVE(&la->checkExpire, lnk, list_expire); + TAILQ_REMOVE(&la->checkExpire, lnk, expire.list); #ifndef NO_USE_SOCKETS /* Close socket, if one has been allocated */ @@ -995,27 +997,27 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, /* Expiration time */ switch (link_type) { case LINK_ICMP: - lnk->expire_time = ICMP_EXPIRE_TIME; + lnk->expire.time = ICMP_EXPIRE_TIME; break; case LINK_UDP: - lnk->expire_time = UDP_EXPIRE_TIME; + lnk->expire.time = UDP_EXPIRE_TIME; break; case LINK_TCP: - lnk->expire_time = TCP_EXPIRE_INITIAL; + lnk->expire.time = TCP_EXPIRE_INITIAL; break; case LINK_PPTP: lnk->flags |= LINK_PERMANENT; /* no timeout. */ break; case LINK_FRAGMENT_ID: - lnk->expire_time = FRAGMENT_ID_EXPIRE_TIME; + lnk->expire.time = FRAGMENT_ID_EXPIRE_TIME; break; case LINK_FRAGMENT_PTR: - lnk->expire_time = FRAGMENT_PTR_EXPIRE_TIME; + lnk->expire.time = FRAGMENT_PTR_EXPIRE_TIME; break; case LINK_ADDR: break; default: - lnk->expire_time = PROTO_EXPIRE_TIME; + lnk->expire.time = PROTO_EXPIRE_TIME; break; } @@ -1098,7 +1100,7 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, } /* Include the element into the housekeeping list */ - TAILQ_INSERT_TAIL(&la->checkExpire, lnk, list_expire); + TAILQ_INSERT_TAIL(&la->checkExpire, lnk, expire.list); } else { #ifdef LIBALIAS_DEBUG fprintf(stderr, "PacketAlias/AddLink(): "); @@ -1841,13 +1843,13 @@ SetStateIn(struct alias_link *lnk, int state) switch (state) { case ALIAS_TCP_STATE_DISCONNECTED: if (lnk->data.tcp->state.out != ALIAS_TCP_STATE_CONNECTED) - lnk->expire_time = TCP_EXPIRE_DEAD; + lnk->expire.time = TCP_EXPIRE_DEAD; else - lnk->expire_time = TCP_EXPIRE_SINGLEDEAD; + lnk->expire.time = TCP_EXPIRE_SINGLEDEAD; break; case ALIAS_TCP_STATE_CONNECTED: if (lnk->data.tcp->state.out == ALIAS_TCP_STATE_CONNECTED) - lnk->expire_time = TCP_EXPIRE_CONNECTED; + lnk->expire.time = TCP_EXPIRE_CONNECTED; break; default: #ifdef _KERNEL @@ -1866,13 +1868,13 @@ SetStateOut(struct alias_link *lnk, int state) switch (state) { case ALIAS_TCP_STATE_DISCONNECTED: if (lnk->data.tcp->state.in != ALIAS_TCP_STATE_CONNECTED) - lnk->expire_time = TCP_EXPIRE_DEAD; + lnk->expire.time = TCP_EXPIRE_DEAD; else - lnk->expire_time = TCP_EXPIRE_SINGLEDEAD; + lnk->expire.time = TCP_EXPIRE_SINGLEDEAD; break; case ALIAS_TCP_STATE_CONNECTED: if (lnk->data.tcp->state.in == ALIAS_TCP_STATE_CONNECTED) - lnk->expire_time = TCP_EXPIRE_CONNECTED; + lnk->expire.time = TCP_EXPIRE_CONNECTED; break; default: #ifdef _KERNEL @@ -2121,7 +2123,7 @@ SetExpire(struct alias_link *lnk, int expire) } else if (expire == -1) { lnk->flags |= LINK_PERMANENT; } else if (expire > 0) { - lnk->expire_time = expire; + lnk->expire.time = expire; } else { #ifdef LIBALIAS_DEBUG fprintf(stderr, "PacketAlias/SetExpire(): "); From owner-dev-commits-src-all@freebsd.org Sat Jun 19 19:28:50 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0166765FD24; Sat, 19 Jun 2021 19:28:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6m756GSLz4h0W; Sat, 19 Jun 2021 19:28:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BB7511C030; Sat, 19 Jun 2021 19:28:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JJSnOd000135; Sat, 19 Jun 2021 19:28:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JJSnYv000134; Sat, 19 Jun 2021 19:28:49 GMT (envelope-from git) Date: Sat, 19 Jun 2021 19:28:49 GMT Message-Id: <202106191928.15JJSnYv000134@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 1178dda53d10 - main - libalias: Restructure - Table for PPTP MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1178dda53d10b096e0b99e356d15b7c24390e099 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 19:28:50 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=1178dda53d10b096e0b99e356d15b7c24390e099 commit 1178dda53d10b096e0b99e356d15b7c24390e099 Author: Lutz Donnerhacke AuthorDate: 2021-05-27 18:27:25 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 19:26:31 +0000 libalias: Restructure - Table for PPTP Let PPTP use its own data structure. Regroup and rename other lists, which are not PPTP. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30580 --- sys/netinet/libalias/alias_db.c | 353 +++++++++++++++++++------------------ sys/netinet/libalias/alias_local.h | 1 + 2 files changed, 187 insertions(+), 167 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 3dae7ac72645..5f199394eb99 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -322,8 +322,15 @@ struct alias_link { int sockfd; /* socket descriptor */ #endif /* Linked list of pointers for input and output lookup tables */ - LIST_ENTRY (alias_link) list_out; - LIST_ENTRY (alias_link) list_in; + union { + struct { + LIST_ENTRY(alias_link) in; + LIST_ENTRY(alias_link) out; + } all; + struct { + LIST_ENTRY(alias_link) list; + } pptp; + }; struct { TAILQ_ENTRY(alias_link) list; int time; /* Expire time for link */ @@ -416,8 +423,7 @@ StartPointIn(struct libalias *la, struct group_in *grp, *tmp; n = alias_addr.s_addr; - if (link_type != LINK_PPTP) - n += alias_port; + n += alias_port; n += link_type; n %= LINK_TABLE_IN_SIZE; @@ -451,10 +457,8 @@ StartPointOut(struct in_addr src_addr, struct in_addr dst_addr, n = src_addr.s_addr; n += dst_addr.s_addr; - if (link_type != LINK_PPTP) { - n += src_port; - n += dst_port; - } + n += src_port; + n += dst_port; n += link_type; return (n % LINK_TABLE_OUT_SIZE); @@ -835,7 +839,6 @@ static void CleanupAliasData(struct libalias *la) { struct alias_link *lnk, *lnk_tmp; - struct group_in *grp, *grp_tmp; u_int i; LIBALIAS_LOCK_ASSERT(la); @@ -844,12 +847,15 @@ CleanupAliasData(struct libalias *la) TAILQ_FOREACH_SAFE(lnk, &la->checkExpire, expire.list, lnk_tmp) DeleteLink(&lnk); - for (i = 0; i < LINK_TABLE_IN_SIZE; i++) + for (i = 0; i < LINK_TABLE_IN_SIZE; i++) { + struct group_in *grp, *grp_tmp; + LIST_FOREACH_SAFE(grp, &la->groupTableIn[i], group_in, grp_tmp) if (LIST_EMPTY(&grp->full) && LIST_EMPTY(&grp->partial)) { LIST_REMOVE(grp, group_in); free(grp); } + } } static void @@ -896,23 +902,30 @@ DeleteLink(struct alias_link **plnk) ClearFWHole(lnk); #endif - /* Free memory allocated for LSNAT server pool */ - if (lnk->server != NULL) { - struct server *head, *curr, *next; + switch (lnk->link_type) { + case LINK_PPTP: + LIST_REMOVE(lnk, pptp.list); + break; + default: + /* Free memory allocated for LSNAT server pool */ + if (lnk->server != NULL) { + struct server *head, *curr, *next; + + head = curr = lnk->server; + do { + next = curr->next; + free(curr); + } while ((curr = next) != head); + } else { + /* Adjust output table pointers */ + LIST_REMOVE(lnk, all.out); + } - head = curr = lnk->server; - do { - next = curr->next; - free(curr); - } while ((curr = next) != head); - } else { - /* Adjust output table pointers */ - LIST_REMOVE(lnk, list_out); + /* Adjust input table pointers */ + LIST_REMOVE(lnk, all.in); + break; } - /* Adjust input table pointers */ - LIST_REMOVE(lnk, list_in); - /* remove from housekeeping */ TAILQ_REMOVE(&la->checkExpire, lnk, expire.list); @@ -970,119 +983,128 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, { u_int start_point; struct alias_link *lnk; - struct group_in *grp_in; LIBALIAS_LOCK_ASSERT(la); lnk = malloc(sizeof(struct alias_link)); - if (lnk != NULL) { - /* Basic initialization */ - lnk->la = la; - lnk->src_addr = src_addr; - lnk->dst_addr = dst_addr; - lnk->alias_addr = alias_addr; - lnk->proxy_addr.s_addr = INADDR_ANY; - lnk->src_port = src_port; - lnk->dst_port = dst_port; - lnk->proxy_port = 0; - lnk->server = NULL; - lnk->link_type = link_type; + if (lnk == NULL) { +#ifdef LIBALIAS_DEBUG + fprintf(stderr, "PacketAlias/AddLink(): "); + fprintf(stderr, "malloc() call failed.\n"); +#endif + return (NULL); + } + /* Basic initialization */ + lnk->la = la; + lnk->src_addr = src_addr; + lnk->dst_addr = dst_addr; + lnk->alias_addr = alias_addr; + lnk->proxy_addr.s_addr = INADDR_ANY; + lnk->src_port = src_port; + lnk->dst_port = dst_port; + lnk->proxy_port = 0; + lnk->server = NULL; + lnk->link_type = link_type; #ifndef NO_USE_SOCKETS - lnk->sockfd = -1; + lnk->sockfd = -1; #endif - lnk->flags = 0; - lnk->pflags = 0; - lnk->timestamp = LibAliasTime; + lnk->flags = 0; + lnk->pflags = 0; + lnk->timestamp = LibAliasTime; - /* Expiration time */ - switch (link_type) { - case LINK_ICMP: - lnk->expire.time = ICMP_EXPIRE_TIME; - break; - case LINK_UDP: - lnk->expire.time = UDP_EXPIRE_TIME; - break; - case LINK_TCP: - lnk->expire.time = TCP_EXPIRE_INITIAL; - break; - case LINK_PPTP: - lnk->flags |= LINK_PERMANENT; /* no timeout. */ - break; - case LINK_FRAGMENT_ID: - lnk->expire.time = FRAGMENT_ID_EXPIRE_TIME; - break; - case LINK_FRAGMENT_PTR: - lnk->expire.time = FRAGMENT_PTR_EXPIRE_TIME; - break; - case LINK_ADDR: - break; - default: - lnk->expire.time = PROTO_EXPIRE_TIME; - break; - } + /* Expiration time */ + switch (link_type) { + case LINK_ICMP: + lnk->expire.time = ICMP_EXPIRE_TIME; + break; + case LINK_UDP: + lnk->expire.time = UDP_EXPIRE_TIME; + break; + case LINK_TCP: + lnk->expire.time = TCP_EXPIRE_INITIAL; + break; + case LINK_FRAGMENT_ID: + lnk->expire.time = FRAGMENT_ID_EXPIRE_TIME; + break; + case LINK_FRAGMENT_PTR: + lnk->expire.time = FRAGMENT_PTR_EXPIRE_TIME; + break; + case LINK_ADDR: + break; + default: + lnk->expire.time = PROTO_EXPIRE_TIME; + break; + } - /* Determine alias flags */ - if (dst_addr.s_addr == INADDR_ANY) - lnk->flags |= LINK_UNKNOWN_DEST_ADDR; - if (dst_port == 0) - lnk->flags |= LINK_UNKNOWN_DEST_PORT; + /* Determine alias flags */ + if (dst_addr.s_addr == INADDR_ANY) + lnk->flags |= LINK_UNKNOWN_DEST_ADDR; + if (dst_port == 0) + lnk->flags |= LINK_UNKNOWN_DEST_PORT; - /* Determine alias port */ - if (GetNewPort(la, lnk, alias_port_param) != 0) { - free(lnk); - return (NULL); - } - /* Link-type dependent initialization */ - switch (link_type) { - struct tcp_dat *aux_tcp; + /* Determine alias port */ + if (GetNewPort(la, lnk, alias_port_param) != 0) { + free(lnk); + return (NULL); + } + /* Link-type dependent initialization */ + switch (link_type) { + case LINK_ICMP: + la->icmpLinkCount++; + break; + case LINK_UDP: + la->udpLinkCount++; + break; + case LINK_TCP: { + struct tcp_dat *aux_tcp; + int i; - case LINK_ICMP: - la->icmpLinkCount++; - break; - case LINK_UDP: - la->udpLinkCount++; - break; - case LINK_TCP: - aux_tcp = malloc(sizeof(struct tcp_dat)); - if (aux_tcp != NULL) { - int i; - - la->tcpLinkCount++; - aux_tcp->state.in = ALIAS_TCP_STATE_NOT_CONNECTED; - aux_tcp->state.out = ALIAS_TCP_STATE_NOT_CONNECTED; - aux_tcp->state.index = 0; - aux_tcp->state.ack_modified = 0; - for (i = 0; i < N_LINK_TCP_DATA; i++) - aux_tcp->ack[i].active = 0; - aux_tcp->fwhole = -1; - lnk->data.tcp = aux_tcp; - } else { + aux_tcp = malloc(sizeof(struct tcp_dat)); + if (aux_tcp == NULL) { #ifdef LIBALIAS_DEBUG - fprintf(stderr, "PacketAlias/AddLink: "); - fprintf(stderr, " cannot allocate auxiliary TCP data\n"); + fprintf(stderr, "PacketAlias/AddLink: "); + fprintf(stderr, " cannot allocate auxiliary TCP data\n"); #endif - free(lnk); - return (NULL); - } - break; - case LINK_PPTP: - la->pptpLinkCount++; - break; - case LINK_FRAGMENT_ID: - la->fragmentIdLinkCount++; - break; - case LINK_FRAGMENT_PTR: - la->fragmentPtrLinkCount++; - break; - case LINK_ADDR: - break; - default: - la->protoLinkCount++; - break; + free(lnk); + return (NULL); } - grp_in = StartPointIn(la, alias_addr, lnk->alias_port, link_type, 1); - if (grp_in == NULL) { + la->tcpLinkCount++; + aux_tcp->state.in = ALIAS_TCP_STATE_NOT_CONNECTED; + aux_tcp->state.out = ALIAS_TCP_STATE_NOT_CONNECTED; + aux_tcp->state.index = 0; + aux_tcp->state.ack_modified = 0; + for (i = 0; i < N_LINK_TCP_DATA; i++) + aux_tcp->ack[i].active = 0; + aux_tcp->fwhole = -1; + lnk->data.tcp = aux_tcp; + } + break; + case LINK_PPTP: + la->pptpLinkCount++; + break; + case LINK_FRAGMENT_ID: + la->fragmentIdLinkCount++; + break; + case LINK_FRAGMENT_PTR: + la->fragmentPtrLinkCount++; + break; + case LINK_ADDR: + break; + default: + la->protoLinkCount++; + break; + } + + switch (link_type) { + case LINK_PPTP: + LIST_INSERT_HEAD(&la->pptpList, lnk, pptp.list); + break; + default: { + struct group_in *grp; + + grp = StartPointIn(la, alias_addr, lnk->alias_port, link_type, 1); + if (grp == NULL) { free(lnk); return (NULL); } @@ -1090,26 +1112,23 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, /* Set up pointers for output lookup table */ start_point = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); - LIST_INSERT_HEAD(&la->linkTableOut[start_point], lnk, list_out); + LIST_INSERT_HEAD(&la->linkTableOut[start_point], lnk, all.out); /* Set up pointers for input lookup table */ - if (lnk->flags & LINK_PARTIALLY_SPECIFIED) { - LIST_INSERT_HEAD(&grp_in->partial, lnk, list_in); - } else { - LIST_INSERT_HEAD(&grp_in->full, lnk, list_in); - } - - /* Include the element into the housekeeping list */ - TAILQ_INSERT_TAIL(&la->checkExpire, lnk, expire.list); - } else { -#ifdef LIBALIAS_DEBUG - fprintf(stderr, "PacketAlias/AddLink(): "); - fprintf(stderr, "malloc() call failed.\n"); -#endif + if (lnk->flags & LINK_PARTIALLY_SPECIFIED) + LIST_INSERT_HEAD(&grp->partial, lnk, all.in); + else + LIST_INSERT_HEAD(&grp->full, lnk, all.in); } - if (la->packetAliasMode & PKT_ALIAS_LOG) { - ShowAliasStats(la); + break; } + + /* Include the element into the housekeeping list */ + TAILQ_INSERT_TAIL(&la->checkExpire, lnk, expire.list); + + if (la->packetAliasMode & PKT_ALIAS_LOG) + ShowAliasStats(la); + return (lnk); } @@ -1164,7 +1183,7 @@ _SearchLinkOut(struct libalias *la, struct in_addr src_addr, struct alias_link *lnk; i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); - LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) { + LIST_FOREACH(lnk, &la->linkTableOut[i], all.out) { OUTGUARD; return (UseLink(la, lnk)); } @@ -1279,14 +1298,14 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, switch (flags_in) { case 0: - LIST_FOREACH(lnk, &grp->full, list_in) { + LIST_FOREACH(lnk, &grp->full, all.in) { if (lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->dst_port == dst_port) return (UseLink(la, lnk)); } break; case LINK_UNKNOWN_DEST_PORT: - LIST_FOREACH(lnk, &grp->full, list_in) { + LIST_FOREACH(lnk, &grp->full, all.in) { if(lnk->dst_addr.s_addr == dst_addr.s_addr) { lnk_unknown_dst_port = lnk; break; @@ -1294,7 +1313,7 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, } break; case LINK_UNKNOWN_DEST_ADDR: - LIST_FOREACH(lnk, &grp->full, list_in) { + LIST_FOREACH(lnk, &grp->full, all.in) { if(lnk->dst_port == dst_port) { lnk_unknown_dst_addr = lnk; break; @@ -1307,7 +1326,7 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, } if (lnk_unknown_dst_port == NULL) { - LIST_FOREACH(lnk, &grp->partial, list_in) { + LIST_FOREACH(lnk, &grp->partial, all.in) { int flags = (flags_in | lnk->flags) & LINK_PARTIALLY_SPECIFIED; if (flags == LINK_PARTIALLY_SPECIFIED && @@ -1639,14 +1658,11 @@ FindPptpOutByCallId(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, u_int16_t src_call_id) { - u_int i; struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); - i = StartPointOut(src_addr, dst_addr, 0, 0, LINK_PPTP); - LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) - if (lnk->link_type == LINK_PPTP && - lnk->src_addr.s_addr == src_addr.s_addr && + LIST_FOREACH(lnk, &la->pptpList, pptp.list) + if (lnk->src_addr.s_addr == src_addr.s_addr && lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->src_port == src_call_id) break; @@ -1659,14 +1675,11 @@ FindPptpOutByPeerCallId(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, u_int16_t dst_call_id) { - u_int i; struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); - i = StartPointOut(src_addr, dst_addr, 0, 0, LINK_PPTP); - LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) - if (lnk->link_type == LINK_PPTP && - lnk->src_addr.s_addr == src_addr.s_addr && + LIST_FOREACH(lnk, &la->pptpList, pptp.list) + if (lnk->src_addr.s_addr == src_addr.s_addr && lnk->dst_addr.s_addr == dst_addr.s_addr && lnk->dst_port == dst_call_id) break; @@ -1679,18 +1692,14 @@ FindPptpInByCallId(struct libalias *la, struct in_addr dst_addr, struct in_addr alias_addr, u_int16_t dst_call_id) { - struct group_in *grp; struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); - grp = StartPointIn(la, alias_addr, 0, LINK_PPTP, 0); - if (grp == NULL) - return (NULL); - - LIST_FOREACH(lnk, &grp->full, list_in) - if (lnk->dst_addr.s_addr == dst_addr.s_addr && - lnk->dst_port == dst_call_id) + LIST_FOREACH(lnk, &la->pptpList, pptp.list) + if (lnk->dst_port == dst_call_id && + lnk->dst_addr.s_addr == dst_addr.s_addr && + lnk->alias_addr.s_addr == alias_addr.s_addr) break; return (UseLink(la, lnk)); @@ -1704,9 +1713,11 @@ FindPptpInByPeerCallId(struct libalias *la, struct in_addr dst_addr, struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); - lnk = FindLinkIn(la, dst_addr, alias_addr, - 0 /* any */ , alias_call_id, - LINK_PPTP, 0); + LIST_FOREACH(lnk, &la->pptpList, pptp.list) + if (lnk->alias_port == alias_call_id && + lnk->dst_addr.s_addr == dst_addr.s_addr && + lnk->alias_addr.s_addr == alias_addr.s_addr) + break; return (lnk); } @@ -2331,7 +2342,14 @@ LibAliasAddServer(struct libalias *la, struct alias_link *lnk, struct in_addr ad LIBALIAS_LOCK(la); (void)la; - server = malloc(sizeof(struct server)); + switch (lnk->link_type) { + case LINK_PPTP: + server = NULL; + break; + default: + server = malloc(sizeof(struct server)); + break; + } if (server != NULL) { struct server *head; @@ -2343,7 +2361,7 @@ LibAliasAddServer(struct libalias *la, struct alias_link *lnk, struct in_addr ad if (head == NULL) { server->next = server; /* not usable for outgoing connections */ - LIST_REMOVE(lnk, list_out); + LIST_REMOVE(lnk, all.out); } else { struct server *s; @@ -2517,6 +2535,7 @@ LibAliasInit(struct libalias *la) LIST_INIT(&la->linkTableOut[i]); for (i = 0; i < LINK_TABLE_IN_SIZE; i++) LIST_INIT(&la->groupTableIn[i]); + LIST_INIT(&la->pptpList); TAILQ_INIT(&la->checkExpire); #ifdef _KERNEL AliasSctpInit(la); diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index 6e5d40ab0c9a..bfdd299a74ff 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -102,6 +102,7 @@ struct libalias { * output lookup tables. */ LIST_HEAD (, alias_link) linkTableOut[LINK_TABLE_OUT_SIZE]; LIST_HEAD (, group_in) groupTableIn[LINK_TABLE_IN_SIZE]; + LIST_HEAD (, alias_link) pptpList; /* HouseKeeping */ TAILQ_HEAD (, alias_link) checkExpire; /* Link statistics */ From owner-dev-commits-src-all@freebsd.org Sat Jun 19 19:53:40 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4EE2E64011D; Sat, 19 Jun 2021 19:53:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6mgm1Yzqz4jWg; Sat, 19 Jun 2021 19:53:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1322A1C6B9; Sat, 19 Jun 2021 19:53:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JJrdGQ039181; Sat, 19 Jun 2021 19:53:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JJrdpI039180; Sat, 19 Jun 2021 19:53:39 GMT (envelope-from git) Date: Sat, 19 Jun 2021 19:53:39 GMT Message-Id: <202106191953.15JJrdpI039180@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 9efcad61d830 - main - libalias: Restructure - Use AliasRange instead of PORT_BASE MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9efcad61d8309ecad3c15392b277fd329a1e45e4 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 19:53:40 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=9efcad61d8309ecad3c15392b277fd329a1e45e4 commit 9efcad61d8309ecad3c15392b277fd329a1e45e4 Author: Lutz Donnerhacke AuthorDate: 2021-05-28 17:17:40 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 19:40:09 +0000 libalias: Restructure - Use AliasRange instead of PORT_BASE Get rid of PORT_BASE, replace by AliasRange. Simplify code. Factor out the search for a new port. Improves the perfomance a bit. Discussed with: Dimitry Luhtionov MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30581 --- sys/netinet/libalias/alias_db.c | 171 +++++++++++++++++----------------------- 1 file changed, 74 insertions(+), 97 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 5f199394eb99..6bfe19a9b2a9 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -574,12 +574,20 @@ FindLinkOut(struct libalias *, struct in_addr, struct in_addr, u_short, u_short, static struct alias_link * FindLinkIn(struct libalias *, struct in_addr, struct in_addr, u_short, u_short, int, int); -#define ALIAS_PORT_BASE 0x08000 -#define ALIAS_PORT_MASK 0x07fff -#define ALIAS_PORT_MASK_EVEN 0x07ffe +static u_short _RandomPort(struct libalias *la); + #define GET_NEW_PORT_MAX_ATTEMPTS 20 -#define FIND_EVEN_ALIAS_BASE 1 +/* get random port in network byte order */ +static u_short +_RandomPort(struct libalias *la) { + u_short port; + + port = la->aliasPortLower + + arc4random_uniform(la->aliasPortLength); + + return ntohs(port); +} /* GetNewPort() allocates port numbers. Note that if a port number is already in use, that does not mean that it cannot be used by @@ -591,8 +599,7 @@ GetNewPort(struct libalias *la, struct alias_link *lnk, int alias_port_param) { int i; int max_trials; - u_short port_sys; - u_short port_net; + u_short port; LIBALIAS_LOCK_ASSERT(la); /* @@ -600,41 +607,18 @@ GetNewPort(struct libalias *la, struct alias_link *lnk, int alias_port_param) * this parameter is zero or positive, it precisely specifies * the port number. GetNewPort() will return this number * without check that it is in use. - + * + * The aliasing port is automatically selected by one of + * two methods below: + * * When this parameter is GET_ALIAS_PORT, it indicates to get * a randomly selected port number. */ - if (alias_port_param == GET_ALIAS_PORT) { - /* - * The aliasing port is automatically selected by one of - * two methods below: - */ - max_trials = GET_NEW_PORT_MAX_ATTEMPTS; - - if (la->packetAliasMode & PKT_ALIAS_SAME_PORTS) { - /* - * When the PKT_ALIAS_SAME_PORTS option is chosen, - * the first try will be the actual source port. If - * this is already in use, the remainder of the - * trials will be random. - */ - port_net = lnk->src_port; - port_sys = ntohs(port_net); - } else if (la->aliasPortLower) { - /* First trial is a random port in the aliasing range. */ - port_sys = la->aliasPortLower + - (arc4random() % la->aliasPortLength); - port_net = htons(port_sys); - } else { - /* First trial and all subsequent are random. */ - port_sys = arc4random() & ALIAS_PORT_MASK; - port_sys += ALIAS_PORT_BASE; - port_net = htons(port_sys); - } - } else if (alias_port_param >= 0 && alias_port_param < 0x10000) { + if (alias_port_param >= 0 && alias_port_param < 0x10000) { lnk->alias_port = (u_short) alias_port_param; return (0); - } else { + } + if (alias_port_param != GET_ALIAS_PORT) { #ifdef LIBALIAS_DEBUG fprintf(stderr, "PacketAlias/GetNewPort(): "); fprintf(stderr, "input parameter error\n"); @@ -642,58 +626,57 @@ GetNewPort(struct libalias *la, struct alias_link *lnk, int alias_port_param) return (-1); } + max_trials = GET_NEW_PORT_MAX_ATTEMPTS; + + /* + * When the PKT_ALIAS_SAME_PORTS option is chosen, + * the first try will be the actual source port. If + * this is already in use, the remainder of the + * trials will be random. + */ + port = (la->packetAliasMode & PKT_ALIAS_SAME_PORTS) + ? lnk->src_port + : _RandomPort(la); + /* Port number search */ - for (i = 0; i < max_trials; i++) { - int go_ahead; + for (i = 0; i < max_trials; i++, port = _RandomPort(la)) { + struct group_in *grp; struct alias_link *search_result; - search_result = FindLinkIn(la, lnk->dst_addr, lnk->alias_addr, - lnk->dst_port, port_net, - lnk->link_type, 0); + grp = StartPointIn(la, lnk->alias_addr, port, lnk->link_type, 0); + if (grp == NULL) + break; + LIST_FOREACH(search_result, &grp->full, all.in) { + if (lnk->dst_addr.s_addr == search_result->dst_addr.s_addr && + lnk->dst_port == search_result->dst_port) + break; /* found match */ + } if (search_result == NULL) - go_ahead = 1; - else if (!(lnk->flags & LINK_PARTIALLY_SPECIFIED) - && (search_result->flags & LINK_PARTIALLY_SPECIFIED)) - go_ahead = 1; - else - go_ahead = 0; + break; + } - if (go_ahead) { -#ifndef NO_USE_SOCKETS - if ((la->packetAliasMode & PKT_ALIAS_USE_SOCKETS) - && (lnk->flags & LINK_PARTIALLY_SPECIFIED) - && ((lnk->link_type == LINK_TCP) || - (lnk->link_type == LINK_UDP))) { - if (GetSocket(la, port_net, &lnk->sockfd, lnk->link_type)) { - lnk->alias_port = port_net; - return (0); - } - } else { + if (i >= max_trials) { +#ifdef LIBALIAS_DEBUG + fprintf(stderr, "PacketAlias/GetNewPort(): "); + fprintf(stderr, "could not find free port\n"); #endif - lnk->alias_port = port_net; - return (0); + return (-1); + } + #ifndef NO_USE_SOCKETS - } -#endif - } - if (la->aliasPortLower) { - port_sys = la->aliasPortLower + - (arc4random() % la->aliasPortLength); - port_net = htons(port_sys); - } else { - port_sys = arc4random() & ALIAS_PORT_MASK; - port_sys += ALIAS_PORT_BASE; - port_net = htons(port_sys); + if ((la->packetAliasMode & PKT_ALIAS_USE_SOCKETS) && + (lnk->flags & LINK_PARTIALLY_SPECIFIED) && + ((lnk->link_type == LINK_TCP) || + (lnk->link_type == LINK_UDP))) { + if (!GetSocket(la, port, &lnk->sockfd, lnk->link_type)) { + return (-1); } } - -#ifdef LIBALIAS_DEBUG - fprintf(stderr, "PacketAlias/GetNewPort(): "); - fprintf(stderr, "could not find free port\n"); #endif + lnk->alias_port = port; - return (-1); + return (0); } #ifndef NO_USE_SOCKETS @@ -760,7 +743,7 @@ FindNewPortGroup(struct libalias *la, { int i, j; int max_trials; - u_short port_sys; + u_short port; int link_type; LIBALIAS_LOCK_ASSERT(la); @@ -792,39 +775,31 @@ FindNewPortGroup(struct libalias *la, * try will be the actual source port. If this is already * in use, the remainder of the trials will be random. */ - port_sys = ntohs(src_port); + port = src_port; } else { - /* First trial and all subsequent are random. */ - if (align == FIND_EVEN_ALIAS_BASE) - port_sys = arc4random() & ALIAS_PORT_MASK_EVEN; - else - port_sys = arc4random() & ALIAS_PORT_MASK; - - port_sys += ALIAS_PORT_BASE; + port = _RandomPort(la); } /* Port number search */ - for (i = 0; i < max_trials; i++) { + for (i = 0; i < max_trials; i++, port = _RandomPort(la)) { struct alias_link *search_result; - for (j = 0; j < port_count; j++) + if (align) + port &= htons(0xfffe); + + for (j = 0; j < port_count; j++) { + u_short port_j = ntohs(port) + j; + if ((search_result = FindLinkIn(la, dst_addr, - alias_addr, dst_port, htons(port_sys + j), + alias_addr, dst_port, htons(port_j), link_type, 0)) != NULL) break; + } /* Found a good range, return base */ if (j == port_count) - return (htons(port_sys)); - - /* Find a new base to try */ - if (align == FIND_EVEN_ALIAS_BASE) - port_sys = arc4random() & ALIAS_PORT_MASK_EVEN; - else - port_sys = arc4random() & ALIAS_PORT_MASK; - - port_sys += ALIAS_PORT_BASE; + return (port); } #ifdef LIBALIAS_DEBUG @@ -2555,6 +2530,8 @@ LibAliasInit(struct libalias *la) la->aliasAddress.s_addr = INADDR_ANY; la->targetAddress.s_addr = INADDR_ANY; + la->aliasPortLower = 0x8000; + la->aliasPortLength = 0x8000; la->icmpLinkCount = 0; la->udpLinkCount = 0; From owner-dev-commits-src-all@freebsd.org Sat Jun 19 19:57:39 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5C4FF640076; Sat, 19 Jun 2021 19:57:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6mmM1z2fz4jX4; Sat, 19 Jun 2021 19:57:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2BBD11C67F; Sat, 19 Jun 2021 19:57:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JJvdsF039563; Sat, 19 Jun 2021 19:57:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JJvdkw039562; Sat, 19 Jun 2021 19:57:39 GMT (envelope-from git) Date: Sat, 19 Jun 2021 19:57:39 GMT Message-Id: <202106191957.15JJvdkw039562@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: fe83900f9fa9 - main - libalias: Restructure - Remove temporary state deleteAllLinks from global struct MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fe83900f9fa931e3d0942ec9c0709896b887c3d7 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 19:57:39 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=fe83900f9fa931e3d0942ec9c0709896b887c3d7 commit fe83900f9fa931e3d0942ec9c0709896b887c3d7 Author: Lutz Donnerhacke AuthorDate: 2021-06-01 18:28:42 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 19:55:11 +0000 libalias: Restructure - Remove temporary state deleteAllLinks from global struct The entry deleteAllLinks in the struct libalias is only used to signal a state between internal calls. It's not used between API calls. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30604 --- sys/netinet/libalias/alias_db.c | 58 ++++++++++++++++---------------------- sys/netinet/libalias/alias_local.h | 3 -- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index 6bfe19a9b2a9..c5ecc49ed191 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -557,16 +557,16 @@ static int GetNewPort(struct libalias *, struct alias_link *, int); #ifndef NO_USE_SOCKETS static u_short GetSocket(struct libalias *, u_short, int *, int); #endif -static void CleanupAliasData(struct libalias *); -static void CleanupLink(struct libalias *, struct alias_link **); -static void DeleteLink(struct alias_link **); +static void CleanupAliasData(struct libalias *, int); +static void CleanupLink(struct libalias *, struct alias_link **, int); +static void DeleteLink(struct alias_link **, int); static struct alias_link * UseLink(struct libalias *, struct alias_link *); static struct alias_link * ReLink(struct alias_link *, struct in_addr, struct in_addr, struct in_addr, - u_short, u_short, int, int); + u_short, u_short, int, int, int); static struct alias_link * FindLinkOut(struct libalias *, struct in_addr, struct in_addr, u_short, u_short, int, int); @@ -811,7 +811,7 @@ FindNewPortGroup(struct libalias *la, } static void -CleanupAliasData(struct libalias *la) +CleanupAliasData(struct libalias *la, int deletePermanent) { struct alias_link *lnk, *lnk_tmp; u_int i; @@ -820,7 +820,7 @@ CleanupAliasData(struct libalias *la) /* permanent entries may stay */ TAILQ_FOREACH_SAFE(lnk, &la->checkExpire, expire.list, lnk_tmp) - DeleteLink(&lnk); + DeleteLink(&lnk, deletePermanent); for (i = 0; i < LINK_TABLE_IN_SIZE; i++) { struct group_in *grp, *grp_tmp; @@ -834,7 +834,7 @@ CleanupAliasData(struct libalias *la) } static void -CleanupLink(struct libalias *la, struct alias_link **lnk) +CleanupLink(struct libalias *la, struct alias_link **lnk, int deletePermanent) { LIBALIAS_LOCK_ASSERT(la); @@ -842,7 +842,7 @@ CleanupLink(struct libalias *la, struct alias_link **lnk) return; if (LibAliasTime - (*lnk)->timestamp > (*lnk)->expire.time) { - DeleteLink(lnk); + DeleteLink(lnk, deletePermanent); if ((*lnk) == NULL) return; } @@ -855,21 +855,21 @@ CleanupLink(struct libalias *la, struct alias_link **lnk) static struct alias_link * UseLink(struct libalias *la, struct alias_link *lnk) { - CleanupLink(la, &lnk); + CleanupLink(la, &lnk, 0); if (lnk != NULL) lnk->timestamp = LibAliasTime; return (lnk); } static void -DeleteLink(struct alias_link **plnk) +DeleteLink(struct alias_link **plnk, int deletePermanent) { struct alias_link *lnk = *plnk; struct libalias *la = lnk->la; LIBALIAS_LOCK_ASSERT(la); /* Don't do anything if the link is marked permanent */ - if (la->deleteAllLinks == 0 && lnk->flags & LINK_PERMANENT) + if (!deletePermanent && (lnk->flags & LINK_PERMANENT)) return; #ifndef NO_FW_PUNCH @@ -1119,7 +1119,8 @@ ReLink(struct alias_link *old_lnk, u_short src_port, u_short dst_port, int alias_port_param, - int link_type) + int link_type, + int deletePermanent) { struct alias_link *new_lnk; struct libalias *la = old_lnk->la; @@ -1135,7 +1136,7 @@ ReLink(struct alias_link *old_lnk, PunchFWHole(new_lnk); } #endif - DeleteLink(&old_lnk); + DeleteLink(&old_lnk, deletePermanent); return (new_lnk); } @@ -1200,7 +1201,7 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr, lnk = ReLink(lnk, src_addr, dst_addr, lnk->alias_addr, src_port, dst_port, lnk->alias_port, - link_type); + link_type, 0); } return (lnk); } @@ -1342,7 +1343,7 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr, lnk = ReLink(lnk, src_addr, dst_addr, alias_addr, src_port, dst_port, alias_port, - link_type); + link_type, 0); } return (lnk); } @@ -2105,7 +2106,7 @@ SetExpire(struct alias_link *lnk, int expire) { if (expire == 0) { lnk->flags &= ~LINK_PERMANENT; - DeleteLink(&lnk); + DeleteLink(&lnk, 0); } else if (expire == -1) { lnk->flags |= LINK_PERMANENT; } else if (expire > 0) { @@ -2133,13 +2134,9 @@ GetProtocolFlags(struct alias_link *lnk) void SetDestCallId(struct alias_link *lnk, u_int16_t cid) { - struct libalias *la = lnk->la; - - LIBALIAS_LOCK_ASSERT(la); - la->deleteAllLinks = 1; + LIBALIAS_LOCK_ASSERT(lnk->la); ReLink(lnk, lnk->src_addr, lnk->dst_addr, lnk->alias_addr, - lnk->src_port, cid, lnk->alias_port, lnk->link_type); - la->deleteAllLinks = 0; + lnk->src_port, cid, lnk->alias_port, lnk->link_type, 1); } /* Miscellaneous Functions @@ -2198,7 +2195,7 @@ HouseKeeping(struct libalias *la) if (packets < (la->udpLinkCount + la->tcpLinkCount)) { struct alias_link * lnk = TAILQ_FIRST(&la->checkExpire); - CleanupLink(la, &lnk); + CleanupLink(la, &lnk, 0); } } @@ -2434,9 +2431,8 @@ void LibAliasRedirectDelete(struct libalias *la, struct alias_link *lnk) { LIBALIAS_LOCK(la); - la->deleteAllLinks = 1; - DeleteLink(&lnk); - la->deleteAllLinks = 0; + (void)la; + DeleteLink(&lnk, 1); LIBALIAS_UNLOCK(la); } @@ -2446,7 +2442,7 @@ LibAliasSetAddress(struct libalias *la, struct in_addr addr) LIBALIAS_LOCK(la); if (la->packetAliasMode & PKT_ALIAS_RESET_ON_ADDR_CHANGE && la->aliasAddress.s_addr != addr.s_addr) - CleanupAliasData(la); + CleanupAliasData(la, 0); la->aliasAddress = addr; LIBALIAS_UNLOCK(la); @@ -2519,9 +2515,7 @@ LibAliasInit(struct libalias *la) LIBALIAS_LOCK(la); } else { LIBALIAS_LOCK(la); - la->deleteAllLinks = 1; - CleanupAliasData(la); - la->deleteAllLinks = 0; + CleanupAliasData(la, 1); #ifdef _KERNEL AliasSctpTerm(la); AliasSctpInit(la); @@ -2565,9 +2559,7 @@ LibAliasUninit(struct libalias *la) #ifdef _KERNEL AliasSctpTerm(la); #endif - la->deleteAllLinks = 1; - CleanupAliasData(la); - la->deleteAllLinks = 0; + CleanupAliasData(la, 1); UninitPacketAliasLog(la); #ifndef NO_FW_PUNCH UninitPunchFW(la); diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index bfdd299a74ff..5628adac203e 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -114,9 +114,6 @@ struct libalias { unsigned int fragmentIdLinkCount; unsigned int fragmentPtrLinkCount; unsigned int sockCount; - /* If equal to zero, DeleteLink() - * will not remove permanent links */ - int deleteAllLinks; /* log descriptor */ #ifdef _KERNEL char *logDesc; From owner-dev-commits-src-all@freebsd.org Sat Jun 19 20:02:00 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 153F764044B; Sat, 19 Jun 2021 20:02:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6msN07ymz4k2H; Sat, 19 Jun 2021 20:02:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E162E1C99D; Sat, 19 Jun 2021 20:01:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JK1xT9052060; Sat, 19 Jun 2021 20:01:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JK1xxJ052059; Sat, 19 Jun 2021 20:01:59 GMT (envelope-from git) Date: Sat, 19 Jun 2021 20:01:59 GMT Message-Id: <202106192001.15JK1xxJ052059@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: d989935b5bcd - main - libalias: Restructure - Finalize MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d989935b5bcd880353f0de89eda958c45e7e3342 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 20:02:00 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=d989935b5bcd880353f0de89eda958c45e7e3342 commit d989935b5bcd880353f0de89eda958c45e7e3342 Author: Lutz Donnerhacke AuthorDate: 2021-05-31 16:52:29 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 19:58:56 +0000 libalias: Restructure - Finalize Note, that the restructuring is done. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30582 --- sys/netinet/libalias/HISTORY | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/netinet/libalias/HISTORY b/sys/netinet/libalias/HISTORY index ee18c7f70d01..04427be17b39 100644 --- a/sys/netinet/libalias/HISTORY +++ b/sys/netinet/libalias/HISTORY @@ -146,3 +146,4 @@ Version 3.2: July, 2000 (Erik Salander, erik@whistle.com and Version 3.3: May 2020 (donner) - Dropped LibAliasCheckNewLink + - Refactor the database handling, perfomance improvements. From owner-dev-commits-src-all@freebsd.org Sat Jun 19 20:10:38 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3BC63640918; Sat, 19 Jun 2021 20:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6n3L10MQz4kLZ; Sat, 19 Jun 2021 20:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0A6011CB3D; Sat, 19 Jun 2021 20:10:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JKAb6V061793; Sat, 19 Jun 2021 20:10:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JKAbQ8061792; Sat, 19 Jun 2021 20:10:37 GMT (envelope-from git) Date: Sat, 19 Jun 2021 20:10:37 GMT Message-Id: <202106192010.15JKAbQ8061792@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: 935fc93af157 - main - libalias: Switch to efficient data structure for outgoing traffic MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 935fc93af157dee352eb4b6c83f8a2a9e7fd9a4e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 20:10:38 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=935fc93af157dee352eb4b6c83f8a2a9e7fd9a4e commit 935fc93af157dee352eb4b6c83f8a2a9e7fd9a4e Author: Lutz Donnerhacke AuthorDate: 2021-05-27 21:42:54 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 20:09:44 +0000 libalias: Switch to efficient data structure for outgoing traffic Current data structure is using a hash of unordered lists. Those unordered lists are quite efficient, because the least recently inserted entries are most likely to be used again. In order to avoid long search times in other cases, the lists are hashed into many buckets. Unfortunatly a search for a miss needs an exhaustive inspection and a careful definition of the hash. Splay trees offer a similar feature - almost O(1) for access of the least recently used entries), and amortized O(ln(n) - for almost all other cases. Get rid of the hash. Discussed with: Dimitry Luhtionov MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30516 --- sys/netinet/libalias/alias_db.c | 81 ++++++++++++++++---------------------- sys/netinet/libalias/alias_local.h | 4 +- 2 files changed, 36 insertions(+), 49 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index c5ecc49ed191..a5a21e40d0cf 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -324,11 +324,11 @@ struct alias_link { /* Linked list of pointers for input and output lookup tables */ union { struct { - LIST_ENTRY(alias_link) in; - LIST_ENTRY(alias_link) out; + SPLAY_ENTRY(alias_link) out; + LIST_ENTRY (alias_link) in; } all; struct { - LIST_ENTRY(alias_link) list; + LIST_ENTRY (alias_link) list; } pptp; }; struct { @@ -389,8 +389,6 @@ Miscellaneous: /* Local prototypes */ static struct group_in * StartPointIn(struct libalias *, struct in_addr, u_short, int, int); -static u_int -StartPointOut(struct in_addr, struct in_addr, u_short, u_short, int); static int SeqDiff(u_long, u_long); #ifndef NO_FW_PUNCH @@ -408,6 +406,24 @@ static void UninitPacketAliasLog(struct libalias *); void SctpShowAliasStats(struct libalias *la); + +/* Splay handling */ +static inline int +cmp_out(struct alias_link *a, struct alias_link *b) { + int i = a->src_port - b->src_port; + if (i != 0) return (i); + i = a->src_addr.s_addr - b->src_addr.s_addr; + if (i != 0) return (i); + i = a->dst_addr.s_addr - b->dst_addr.s_addr; + if (i != 0) return (i); + i = a->dst_port - b->dst_port; + if (i != 0) return (i); + i = a->link_type - b->link_type; + return (i); +} +SPLAY_PROTOTYPE(splay_out, alias_link, all.out, cmp_out); +SPLAY_GENERATE(splay_out, alias_link, all.out, cmp_out); + #define INGUARD \ if (grp->alias_port != alias_port || \ grp->link_type != link_type || \ @@ -449,21 +465,6 @@ StartPointIn(struct libalias *la, } #undef INGUARD -static u_int -StartPointOut(struct in_addr src_addr, struct in_addr dst_addr, - u_short src_port, u_short dst_port, int link_type) -{ - u_int n; - - n = src_addr.s_addr; - n += dst_addr.s_addr; - n += src_port; - n += dst_port; - n += link_type; - - return (n % LINK_TABLE_OUT_SIZE); -} - static int SeqDiff(u_long x, u_long y) { @@ -893,7 +894,7 @@ DeleteLink(struct alias_link **plnk, int deletePermanent) } while ((curr = next) != head); } else { /* Adjust output table pointers */ - LIST_REMOVE(lnk, all.out); + SPLAY_REMOVE(splay_out, &la->linkSplayOut, lnk); } /* Adjust input table pointers */ @@ -956,7 +957,6 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, struct in_addr alias_addr, u_short src_port, u_short dst_port, int alias_port_param, int link_type) { - u_int start_point; struct alias_link *lnk; LIBALIAS_LOCK_ASSERT(la); @@ -1085,9 +1085,7 @@ AddLink(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, } /* Set up pointers for output lookup table */ - start_point = StartPointOut(src_addr, dst_addr, - src_port, dst_port, link_type); - LIST_INSERT_HEAD(&la->linkTableOut[start_point], lnk, all.out); + SPLAY_INSERT(splay_out, &la->linkSplayOut, lnk); /* Set up pointers for input lookup table */ if (lnk->flags & LINK_PARTIALLY_SPECIFIED) @@ -1140,35 +1138,25 @@ ReLink(struct alias_link *old_lnk, return (new_lnk); } - -#define OUTGUARD \ - if (lnk->src_port != src_port || \ - lnk->src_addr.s_addr != src_addr.s_addr || \ - lnk->dst_addr.s_addr != dst_addr.s_addr || \ - lnk->dst_port != dst_port || \ - lnk->link_type != link_type) \ - continue; - static struct alias_link * _SearchLinkOut(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, u_short src_port, u_short dst_port, int link_type) { - u_int i; struct alias_link *lnk; + struct alias_link needle = { + .src_addr = src_addr, + .dst_addr = dst_addr, + .src_port = src_port, + .dst_port = dst_port, + .link_type = link_type + }; - i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type); - LIST_FOREACH(lnk, &la->linkTableOut[i], all.out) { - OUTGUARD; - return (UseLink(la, lnk)); - } - - return (NULL); + lnk = SPLAY_FIND(splay_out, &la->linkSplayOut, &needle); + return (UseLink(la, lnk)); } -#undef OUTGUARD - static struct alias_link * _FindLinkOut(struct libalias *la, struct in_addr src_addr, struct in_addr dst_addr, @@ -2333,7 +2321,7 @@ LibAliasAddServer(struct libalias *la, struct alias_link *lnk, struct in_addr ad if (head == NULL) { server->next = server; /* not usable for outgoing connections */ - LIST_REMOVE(lnk, all.out); + SPLAY_REMOVE(splay_out, &la->linkSplayOut, lnk); } else { struct server *s; @@ -2502,8 +2490,7 @@ LibAliasInit(struct libalias *la) LibAliasTime = time(NULL); #endif - for (i = 0; i < LINK_TABLE_OUT_SIZE; i++) - LIST_INIT(&la->linkTableOut[i]); + SPLAY_INIT(&la->linkSplayOut); for (i = 0; i < LINK_TABLE_IN_SIZE; i++) LIST_INIT(&la->groupTableIn[i]); LIST_INIT(&la->pptpList); diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index 5628adac203e..a1ad08a979d2 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -48,6 +48,7 @@ #ifndef _ALIAS_LOCAL_H_ #define _ALIAS_LOCAL_H_ +#include #include #include @@ -66,7 +67,6 @@ #endif /* Sizes of input and output link tables */ -#define LINK_TABLE_OUT_SIZE 4001 #define LINK_TABLE_IN_SIZE 4001 #define GET_ALIAS_PORT -1 @@ -100,7 +100,7 @@ struct libalias { /* Lookup table of pointers to chains of link records. * Each link record is doubly indexed into input and * output lookup tables. */ - LIST_HEAD (, alias_link) linkTableOut[LINK_TABLE_OUT_SIZE]; + SPLAY_HEAD(splay_out, alias_link) linkSplayOut; LIST_HEAD (, group_in) groupTableIn[LINK_TABLE_IN_SIZE]; LIST_HEAD (, alias_link) pptpList; /* HouseKeeping */ From owner-dev-commits-src-all@freebsd.org Sat Jun 19 20:28:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3CF73640C2F; Sat, 19 Jun 2021 20:28:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6nRv0yV0z4mTG; Sat, 19 Jun 2021 20:28:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 04BD81CC47; Sat, 19 Jun 2021 20:28:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JKSQcS081264; Sat, 19 Jun 2021 20:28:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JKSQFm081263; Sat, 19 Jun 2021 20:28:26 GMT (envelope-from git) Date: Sat, 19 Jun 2021 20:28:26 GMT Message-Id: <202106192028.15JKSQFm081263@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lutz Donnerhacke Subject: git: d261e57deacb - main - libalias: Switch to efficient data structure for incoming traffic MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: donner X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d261e57deacb0d00d9e827447f235df83dda3e3a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 20:28:27 -0000 The branch main has been updated by donner: URL: https://cgit.FreeBSD.org/src/commit/?id=d261e57deacb0d00d9e827447f235df83dda3e3a commit d261e57deacb0d00d9e827447f235df83dda3e3a Author: Lutz Donnerhacke AuthorDate: 2021-05-28 20:36:59 +0000 Commit: Lutz Donnerhacke CommitDate: 2021-06-19 20:12:28 +0000 libalias: Switch to efficient data structure for incoming traffic Current data structure is using a hash of unordered lists. Those unordered lists are quite efficient, because the least recently inserted entries are most likely to be used again. In order to avoid long search times in other cases, the lists are hashed into many buckets. Unfortunatly a search for a miss needs an exhaustive inspection and a careful definition of the hash. Splay trees offer a similar feature: Almost O(1) for access of the least recently used entries, and amortized O(ln(n)) for almost all other cases. Get rid of the hash. Now the data structure should able to quickly react to external packets without eating CPU cycles for breakfast, preventing a DoS. PR: 192888 Discussed with: Dimitry Luhtionov MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30536 --- sys/netinet/libalias/alias_db.c | 75 +++++++++++++++++--------------------- sys/netinet/libalias/alias_local.h | 6 +-- 2 files changed, 36 insertions(+), 45 deletions(-) diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c index a5a21e40d0cf..53ad3396d66b 100644 --- a/sys/netinet/libalias/alias_db.c +++ b/sys/netinet/libalias/alias_db.c @@ -424,43 +424,39 @@ cmp_out(struct alias_link *a, struct alias_link *b) { SPLAY_PROTOTYPE(splay_out, alias_link, all.out, cmp_out); SPLAY_GENERATE(splay_out, alias_link, all.out, cmp_out); -#define INGUARD \ - if (grp->alias_port != alias_port || \ - grp->link_type != link_type || \ - grp->alias_addr.s_addr != alias_addr.s_addr) \ - continue; +static inline int +cmp_in(struct group_in *a, struct group_in *b) { + int i = a->alias_port - b->alias_port; + if (i != 0) return (i); + i = a->link_type - b->link_type; + if (i != 0) return (i); + i = a->alias_addr.s_addr - b->alias_addr.s_addr; + return (i); +} +SPLAY_PROTOTYPE(splay_in, group_in, in, cmp_in); +SPLAY_GENERATE(splay_in, group_in, in, cmp_in); static struct group_in * StartPointIn(struct libalias *la, struct in_addr alias_addr, u_short alias_port, int link_type, int create) { - u_int n; - struct group_in *grp, *tmp; - - n = alias_addr.s_addr; - n += alias_port; - n += link_type; - n %= LINK_TABLE_IN_SIZE; + struct group_in *grp; + struct group_in needle = { + .alias_addr = alias_addr, + .alias_port = alias_port, + .link_type = link_type + }; - LIST_FOREACH_SAFE(grp, &la->groupTableIn[n], group_in, tmp) { - /* Auto cleanup */ - if (LIST_EMPTY(&grp->full) && LIST_EMPTY(&grp->partial)) { - LIST_REMOVE(grp, group_in); - free(grp); - } else { - INGUARD; - return (grp); - } - } - if (!create || (grp = malloc(sizeof(*grp))) == NULL) + grp = SPLAY_FIND(splay_in, &la->linkSplayIn, &needle); + if (grp != NULL || !create || (grp = malloc(sizeof(*grp))) == NULL) return (grp); grp->alias_addr = alias_addr; grp->alias_port = alias_port; grp->link_type = link_type; LIST_INIT(&grp->full); LIST_INIT(&grp->partial); - LIST_INSERT_HEAD(&la->groupTableIn[n], grp, group_in); + SPLAY_INSERT(splay_in, &la->linkSplayIn, grp); return (grp); } #undef INGUARD @@ -815,25 +811,13 @@ static void CleanupAliasData(struct libalias *la, int deletePermanent) { struct alias_link *lnk, *lnk_tmp; - u_int i; LIBALIAS_LOCK_ASSERT(la); /* permanent entries may stay */ TAILQ_FOREACH_SAFE(lnk, &la->checkExpire, expire.list, lnk_tmp) DeleteLink(&lnk, deletePermanent); - - for (i = 0; i < LINK_TABLE_IN_SIZE; i++) { - struct group_in *grp, *grp_tmp; - - LIST_FOREACH_SAFE(grp, &la->groupTableIn[i], group_in, grp_tmp) - if (LIST_EMPTY(&grp->full) && LIST_EMPTY(&grp->partial)) { - LIST_REMOVE(grp, group_in); - free(grp); - } - } } - static void CleanupLink(struct libalias *la, struct alias_link **lnk, int deletePermanent) { @@ -882,7 +866,9 @@ DeleteLink(struct alias_link **plnk, int deletePermanent) case LINK_PPTP: LIST_REMOVE(lnk, pptp.list); break; - default: + default: { + struct group_in *grp; + /* Free memory allocated for LSNAT server pool */ if (lnk->server != NULL) { struct server *head, *curr, *next; @@ -899,6 +885,16 @@ DeleteLink(struct alias_link **plnk, int deletePermanent) /* Adjust input table pointers */ LIST_REMOVE(lnk, all.in); + + /* Remove intermediate node, if empty */ + grp = StartPointIn(la, lnk->alias_addr, lnk->alias_port, lnk->link_type, 0); + if (grp != NULL && + LIST_EMPTY(&grp->full) && + LIST_EMPTY(&grp->partial)) { + SPLAY_REMOVE(splay_in, &la->linkSplayIn, grp); + free(grp); + } + } break; } @@ -2465,8 +2461,6 @@ finishoff(void) struct libalias * LibAliasInit(struct libalias *la) { - int i; - if (la == NULL) { #ifdef _KERNEL #undef malloc /* XXX: ugly */ @@ -2490,9 +2484,8 @@ LibAliasInit(struct libalias *la) LibAliasTime = time(NULL); #endif + SPLAY_INIT(&la->linkSplayIn); SPLAY_INIT(&la->linkSplayOut); - for (i = 0; i < LINK_TABLE_IN_SIZE; i++) - LIST_INIT(&la->groupTableIn[i]); LIST_INIT(&la->pptpList); TAILQ_INIT(&la->checkExpire); #ifdef _KERNEL diff --git a/sys/netinet/libalias/alias_local.h b/sys/netinet/libalias/alias_local.h index a1ad08a979d2..938744924dcc 100644 --- a/sys/netinet/libalias/alias_local.h +++ b/sys/netinet/libalias/alias_local.h @@ -67,8 +67,6 @@ #endif /* Sizes of input and output link tables */ -#define LINK_TABLE_IN_SIZE 4001 - #define GET_ALIAS_PORT -1 #define GET_ALIAS_ID GET_ALIAS_PORT @@ -84,7 +82,7 @@ struct group_in { struct in_addr alias_addr; u_short alias_port; int link_type; - LIST_ENTRY(group_in) group_in; + SPLAY_ENTRY(group_in) in; LIST_HEAD(, alias_link) full, partial; }; @@ -101,7 +99,7 @@ struct libalias { * Each link record is doubly indexed into input and * output lookup tables. */ SPLAY_HEAD(splay_out, alias_link) linkSplayOut; - LIST_HEAD (, group_in) groupTableIn[LINK_TABLE_IN_SIZE]; + SPLAY_HEAD(splay_in, group_in) linkSplayIn; LIST_HEAD (, alias_link) pptpList; /* HouseKeeping */ TAILQ_HEAD (, alias_link) checkExpire; From owner-dev-commits-src-all@freebsd.org Sat Jun 19 20:46:53 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 96FAB640FC3; Sat, 19 Jun 2021 20:46:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6ns93kl3z4ppy; Sat, 19 Jun 2021 20:46:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 685081D39A; Sat, 19 Jun 2021 20:46:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JKkrjX007668; Sat, 19 Jun 2021 20:46:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JKkrUS007667; Sat, 19 Jun 2021 20:46:53 GMT (envelope-from git) Date: Sat, 19 Jun 2021 20:46:53 GMT Message-Id: <202106192046.15JKkrUS007667@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: b97c7abc1a1c - main - fusefs: delete dead code MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b97c7abc1a1cee72ef62109add860c1e8e618efd Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 20:46:53 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=b97c7abc1a1cee72ef62109add860c1e8e618efd commit b97c7abc1a1cee72ef62109add860c1e8e618efd Author: Alan Somers AuthorDate: 2021-06-18 00:14:57 +0000 Commit: Alan Somers CommitDate: 2021-06-19 20:45:04 +0000 fusefs: delete dead code It was always dead, accidentally included in SVN r345876. MFC after: 2 weeks Reviewed by: pfg --- sys/fs/fuse/fuse_ipc.c | 6 ------ sys/fs/fuse/fuse_ipc.h | 2 -- 2 files changed, 8 deletions(-) diff --git a/sys/fs/fuse/fuse_ipc.c b/sys/fs/fuse/fuse_ipc.c index 6b4a29214a96..209c509124fd 100644 --- a/sys/fs/fuse/fuse_ipc.c +++ b/sys/fs/fuse/fuse_ipc.c @@ -976,12 +976,6 @@ fdisp_refresh_vp(struct fuse_dispatcher *fdip, enum fuse_opcode op, td->td_proc->p_pid, cred); } -void -fdisp_refresh(struct fuse_dispatcher *fdip) -{ - fticket_refresh(fdip->tick); -} - SDT_PROBE_DEFINE2(fusefs, , ipc, fdisp_wait_answ_error, "char*", "int"); int diff --git a/sys/fs/fuse/fuse_ipc.h b/sys/fs/fuse/fuse_ipc.h index 1351499c0712..7b27fd97e212 100644 --- a/sys/fs/fuse/fuse_ipc.h +++ b/sys/fs/fuse/fuse_ipc.h @@ -439,8 +439,6 @@ fdisp_destroy(struct fuse_dispatcher *fdisp) #endif } -void fdisp_refresh(struct fuse_dispatcher *fdip); - void fdisp_make(struct fuse_dispatcher *fdip, enum fuse_opcode op, struct mount *mp, uint64_t nid, struct thread *td, struct ucred *cred); From owner-dev-commits-src-all@freebsd.org Sat Jun 19 20:46:54 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CF6FC640A9A; Sat, 19 Jun 2021 20:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6nsB4Z0Gz4pwC; Sat, 19 Jun 2021 20:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 81DBF1CDD3; Sat, 19 Jun 2021 20:46:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JKksRe007692; Sat, 19 Jun 2021 20:46:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JKksYK007691; Sat, 19 Jun 2021 20:46:54 GMT (envelope-from git) Date: Sat, 19 Jun 2021 20:46:54 GMT Message-Id: <202106192046.15JKksYK007691@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 77b040c993ba - main - fusefs: also debug INIT operations in the test suite MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 77b040c993ba9d4844e36f1f5b057066a5b4015a Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 20:46:55 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=77b040c993ba9d4844e36f1f5b057066a5b4015a commit 77b040c993ba9d4844e36f1f5b057066a5b4015a Author: Alan Somers AuthorDate: 2021-06-17 22:06:43 +0000 Commit: Alan Somers CommitDate: 2021-06-19 20:45:21 +0000 fusefs: also debug INIT operations in the test suite MFC after: 2 weeks Reviewed by: pfg --- tests/sys/fs/fusefs/mockfs.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc index 7003472ca52b..c25501eb9785 100644 --- a/tests/sys/fs/fusefs/mockfs.cc +++ b/tests/sys/fs/fusefs/mockfs.cc @@ -702,6 +702,8 @@ void MockFS::init(uint32_t flags) { std::unique_ptr out(new mockfs_buf_out); read_request(*in, buflen); + if (verbosity > 0) + debug_request(*in, buflen); audit_request(*in, buflen); ASSERT_EQ(FUSE_INIT, in->header.opcode); From owner-dev-commits-src-all@freebsd.org Sat Jun 19 20:46:56 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1DB04641211; Sat, 19 Jun 2021 20:46:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6nsC6LVRz4pgb; Sat, 19 Jun 2021 20:46:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B48061D411; Sat, 19 Jun 2021 20:46:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15JKktl3007716; Sat, 19 Jun 2021 20:46:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15JKkt2E007715; Sat, 19 Jun 2021 20:46:55 GMT (envelope-from git) Date: Sat, 19 Jun 2021 20:46:55 GMT Message-Id: <202106192046.15JKkt2E007715@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alan Somers Subject: git: 5403f2c163f7 - main - fusefs: ensure that FUSE ops' headers' unique values are actually unique MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: asomers X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5403f2c163f7e3d1adb9431d216f88d57cf9d74b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2021 20:46:56 -0000 The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=5403f2c163f7e3d1adb9431d216f88d57cf9d74b commit 5403f2c163f7e3d1adb9431d216f88d57cf9d74b Author: Alan Somers AuthorDate: 2021-06-18 00:04:59 +0000 Commit: Alan Somers CommitDate: 2021-06-19 20:45:29 +0000 fusefs: ensure that FUSE ops' headers' unique values are actually unique Every FUSE operation has a unique value in its header. As the name implies, these values are supposed to be unique among all outstanding operations. And since FUSE_INTERRUPT is asynchronous and racy, it is desirable that the unique values be unique among all operations that are "close in time". Ensure that they are actually unique by incrementing them whenever we reuse a fuse_dispatcher object, for example during fsync, write, and listextattr. PR: 244686 MFC after: 2 weeks Reviewed by: pfg Differential Revision: https://reviews.freebsd.org/D30810 --- sys/fs/fuse/fuse_ipc.c | 34 ++++++++++++++-------------------- tests/sys/fs/fusefs/mockfs.cc | 9 +++++++++ tests/sys/fs/fusefs/mockfs.hh | 3 +++ 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/sys/fs/fuse/fuse_ipc.c b/sys/fs/fuse/fuse_ipc.c index 209c509124fd..0042de602739 100644 --- a/sys/fs/fuse/fuse_ipc.c +++ b/sys/fs/fuse/fuse_ipc.c @@ -103,6 +103,7 @@ static void fdisp_make_pid(struct fuse_dispatcher *fdip, enum fuse_opcode op, static void fuse_interrupt_send(struct fuse_ticket *otick, int err); static struct fuse_ticket *fticket_alloc(struct fuse_data *data); static void fticket_refresh(struct fuse_ticket *ftick); +static inline void fticket_reset(struct fuse_ticket *ftick); static void fticket_destroy(struct fuse_ticket *ftick); static int fticket_wait_answer(struct fuse_ticket *ftick); static inline int @@ -318,20 +319,12 @@ fticket_ctor(void *mem, int size, void *arg, int flags) FUSE_ASSERT_AW_DONE(ftick); ftick->tk_data = data; - - if (ftick->tk_unique != 0) - fticket_refresh(ftick); - - /* May be truncated to 32 bits */ - ftick->tk_unique = atomic_fetchadd_long(&data->ticketer, 1); - if (ftick->tk_unique == 0) - ftick->tk_unique = atomic_fetchadd_long(&data->ticketer, 1); - ftick->irq_unique = 0; - refcount_init(&ftick->tk_refcount, 1); counter_u64_add(fuse_ticket_count, 1); + fticket_refresh(ftick); + return 0; } @@ -385,26 +378,22 @@ fticket_destroy(struct fuse_ticket *ftick) return uma_zfree(ticket_zone, ftick); } -static inline -void +/* Prepare the ticket to be reused and clear its data buffers */ +static inline void fticket_refresh(struct fuse_ticket *ftick) { - FUSE_ASSERT_MS_DONE(ftick); - FUSE_ASSERT_AW_DONE(ftick); + fticket_reset(ftick); fiov_refresh(&ftick->tk_ms_fiov); - - bzero(&ftick->tk_aw_ohead, sizeof(struct fuse_out_header)); - fiov_refresh(&ftick->tk_aw_fiov); - ftick->tk_aw_errno = 0; - ftick->tk_flag = 0; } -/* Prepar the ticket to be reused, but don't clear its data buffers */ +/* Prepare the ticket to be reused, but don't clear its data buffers */ static inline void fticket_reset(struct fuse_ticket *ftick) { + struct fuse_data *data = ftick->tk_data; + FUSE_ASSERT_MS_DONE(ftick); FUSE_ASSERT_AW_DONE(ftick); @@ -412,6 +401,11 @@ fticket_reset(struct fuse_ticket *ftick) ftick->tk_aw_errno = 0; ftick->tk_flag = 0; + + /* May be truncated to 32 bits on LP32 arches */ + ftick->tk_unique = atomic_fetchadd_long(&data->ticketer, 1); + if (ftick->tk_unique == 0) + ftick->tk_unique = atomic_fetchadd_long(&data->ticketer, 1); } static int diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc index c25501eb9785..4d0724b9c227 100644 --- a/tests/sys/fs/fusefs/mockfs.cc +++ b/tests/sys/fs/fusefs/mockfs.cc @@ -408,6 +408,7 @@ MockFS::MockFS(int max_readahead, bool allow_other, bool default_permissions, m_pm = pm; m_time_gran = time_gran; m_quit = false; + m_last_unique = 0; if (m_pm == KQ) m_kq = kqueue(); else @@ -693,6 +694,14 @@ void MockFS::audit_request(const mockfs_buf_in &in, ssize_t buflen) { default: FAIL() << "Unknown opcode " << in.header.opcode; } + /* + * Check that the ticket's unique value is sequential. Technically it + * doesn't need to be sequential, merely unique. But the current + * fusefs driver _does_ make it sequential, and that's easy to check + * for. + */ + if (in.header.unique != ++m_last_unique) + FAIL() << "Non-sequential unique value"; } void MockFS::init(uint32_t flags) { diff --git a/tests/sys/fs/fusefs/mockfs.hh b/tests/sys/fs/fusefs/mockfs.hh index a7a6a55922c7..24ca017dcdb1 100644 --- a/tests/sys/fs/fusefs/mockfs.hh +++ b/tests/sys/fs/fusefs/mockfs.hh @@ -297,6 +297,9 @@ class MockFS { /* pid of the test process */ pid_t m_pid; + /* The unique value of the header of the last received operation */ + uint64_t m_last_unique; + /* Method the daemon should use for I/O to and from /dev/fuse */ enum poll_method m_pm; From owner-dev-commits-src-all@freebsd.org Sun Jun 20 03:23:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6A6DE6470AD; Sun, 20 Jun 2021 03:23:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6yfc2PKKz3pff; Sun, 20 Jun 2021 03:23:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3AEFC22929; Sun, 20 Jun 2021 03:23:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K3NKdP038471; Sun, 20 Jun 2021 03:23:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K3NKTe038470; Sun, 20 Jun 2021 03:23:20 GMT (envelope-from git) Date: Sun, 20 Jun 2021 03:23:20 GMT Message-Id: <202106200323.15K3NKTe038470@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: f36e15feb09b - stable/13 - bsdinstall: add a new mirror in Bulgaria MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: f36e15feb09b90d298af33da64ecd07a43b62a9c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 03:23:20 -0000 The branch stable/13 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=f36e15feb09b90d298af33da64ecd07a43b62a9c commit f36e15feb09b90d298af33da64ecd07a43b62a9c Author: Philip Paeps AuthorDate: 2021-06-17 13:07:37 +0000 Commit: Philip Paeps CommitDate: 2021-06-20 03:21:39 +0000 bsdinstall: add a new mirror in Bulgaria Provided by Telepoint Mirror Service. Reported by: Valentin Nikolov (cherry picked from commit 7daa45becfd32cb38933bfdc87e8a10fc982d188) --- usr.sbin/bsdinstall/scripts/mirrorselect | 1 + 1 file changed, 1 insertion(+) diff --git a/usr.sbin/bsdinstall/scripts/mirrorselect b/usr.sbin/bsdinstall/scripts/mirrorselect index 987a524218af..77fc785b94ae 100755 --- a/usr.sbin/bsdinstall/scripts/mirrorselect +++ b/usr.sbin/bsdinstall/scripts/mirrorselect @@ -63,6 +63,7 @@ MIRROR=`dialog --backtitle "FreeBSD Installer" \ ftp://ftp2.br.freebsd.org "Brazil #2"\ ftp://ftp3.br.freebsd.org "Brazil #3"\ ftp://ftp4.br.freebsd.org "Brazil #4"\ + ftp://ftp.bg.freebsd.org "Bulgaria"\ ftp://ftp.cn.freebsd.org "China"\ ftp://ftp.cz.freebsd.org "Czech Republic"\ ftp://ftp.dk.freebsd.org "Denmark"\ From owner-dev-commits-src-all@freebsd.org Sun Jun 20 03:23:56 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5BE9B646FCB; Sun, 20 Jun 2021 03:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6ygJ2Bhzz3pfv; Sun, 20 Jun 2021 03:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 33ED3224BC; Sun, 20 Jun 2021 03:23:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K3NutZ038642; Sun, 20 Jun 2021 03:23:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K3Nu6O038641; Sun, 20 Jun 2021 03:23:56 GMT (envelope-from git) Date: Sun, 20 Jun 2021 03:23:56 GMT Message-Id: <202106200323.15K3Nu6O038641@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: e5d8c43e170b - stable/13 - bsdconfig: add a new mirror in Bulgaria MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e5d8c43e170b1c45f13c030aff99ac25dba1593e Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 03:23:56 -0000 The branch stable/13 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=e5d8c43e170b1c45f13c030aff99ac25dba1593e commit e5d8c43e170b1c45f13c030aff99ac25dba1593e Author: Philip Paeps AuthorDate: 2021-06-17 13:07:37 +0000 Commit: Philip Paeps CommitDate: 2021-06-20 03:23:44 +0000 bsdconfig: add a new mirror in Bulgaria Provided by Telepoint Mirror Service. Reported by: Valentin Nikolov (cherry picked from commit 1c9605fe1e190197b3846e01dce1e491bef0ec34) --- usr.sbin/bsdconfig/include/messages.subr | 1 + usr.sbin/bsdconfig/share/media/ftp.subr | 1 + 2 files changed, 2 insertions(+) diff --git a/usr.sbin/bsdconfig/include/messages.subr b/usr.sbin/bsdconfig/include/messages.subr index 4fd05db08d7d..9d910032616d 100644 --- a/usr.sbin/bsdconfig/include/messages.subr +++ b/usr.sbin/bsdconfig/include/messages.subr @@ -61,6 +61,7 @@ msg_bootstrapping_pkg="Bootstrapping pkg(8)..." msg_brazil="Brazil" msg_building_package_menus="Building package menu(s)..." msg_building_package_main_menu="Building package main menu..." +msg_bulgaria="Bulgaria" msg_cad_desc="Computer Aided Design utilities." msg_canada="Canada" msg_cancel="Cancel" diff --git a/usr.sbin/bsdconfig/share/media/ftp.subr b/usr.sbin/bsdconfig/share/media/ftp.subr index a6d0e1ca1ad0..fb2579f59f89 100644 --- a/usr.sbin/bsdconfig/share/media/ftp.subr +++ b/usr.sbin/bsdconfig/share/media/ftp.subr @@ -101,6 +101,7 @@ f_dialog_menu_media_ftp() '$msg_brazil' 'ftp2.br.freebsd.org' ' $msg_brazil #3' 'ftp3.br.freebsd.org' ' $msg_brazil #4' 'ftp4.br.freebsd.org' + '$msg_bulgaria' 'ftp.bg.freebsd.org' '$msg_china' 'ftp.cn.freebsd.org' '$msg_czech_republic' 'ftp.cz.freebsd.org' '$msg_denmark' 'ftp.dk.freebsd.org' From owner-dev-commits-src-all@freebsd.org Sun Jun 20 03:25:22 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 75B42647453; Sun, 20 Jun 2021 03:25:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6yhy2rjyz3pRn; Sun, 20 Jun 2021 03:25:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4A504226AE; Sun, 20 Jun 2021 03:25:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K3PMkB038882; Sun, 20 Jun 2021 03:25:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K3PMZo038881; Sun, 20 Jun 2021 03:25:22 GMT (envelope-from git) Date: Sun, 20 Jun 2021 03:25:22 GMT Message-Id: <202106200325.15K3PMZo038881@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: bd1c7f1f05a5 - stable/12 - bsdinstall: add a new mirror in Bulgaria MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: bd1c7f1f05a55402d4728f732e1336044cdde701 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 03:25:22 -0000 The branch stable/12 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=bd1c7f1f05a55402d4728f732e1336044cdde701 commit bd1c7f1f05a55402d4728f732e1336044cdde701 Author: Philip Paeps AuthorDate: 2021-06-17 13:07:37 +0000 Commit: Philip Paeps CommitDate: 2021-06-20 03:22:21 +0000 bsdinstall: add a new mirror in Bulgaria Provided by Telepoint Mirror Service. Reported by: Valentin Nikolov (cherry picked from commit 7daa45becfd32cb38933bfdc87e8a10fc982d188) --- usr.sbin/bsdinstall/scripts/mirrorselect | 1 + 1 file changed, 1 insertion(+) diff --git a/usr.sbin/bsdinstall/scripts/mirrorselect b/usr.sbin/bsdinstall/scripts/mirrorselect index 987a524218af..77fc785b94ae 100755 --- a/usr.sbin/bsdinstall/scripts/mirrorselect +++ b/usr.sbin/bsdinstall/scripts/mirrorselect @@ -63,6 +63,7 @@ MIRROR=`dialog --backtitle "FreeBSD Installer" \ ftp://ftp2.br.freebsd.org "Brazil #2"\ ftp://ftp3.br.freebsd.org "Brazil #3"\ ftp://ftp4.br.freebsd.org "Brazil #4"\ + ftp://ftp.bg.freebsd.org "Bulgaria"\ ftp://ftp.cn.freebsd.org "China"\ ftp://ftp.cz.freebsd.org "Czech Republic"\ ftp://ftp.dk.freebsd.org "Denmark"\ From owner-dev-commits-src-all@freebsd.org Sun Jun 20 03:25:23 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E0771647458; Sun, 20 Jun 2021 03:25:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G6yhz3gSBz3prV; Sun, 20 Jun 2021 03:25:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6702722715; Sun, 20 Jun 2021 03:25:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K3PNeM038912; Sun, 20 Jun 2021 03:25:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K3PNMa038911; Sun, 20 Jun 2021 03:25:23 GMT (envelope-from git) Date: Sun, 20 Jun 2021 03:25:23 GMT Message-Id: <202106200325.15K3PNMa038911@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Philip Paeps Subject: git: 7e7e2b9f9c85 - stable/12 - bsdconfig: add a new mirror in Bulgaria MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: philip X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 7e7e2b9f9c8507d6e8c3a65aea28b53ba49d612b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 03:25:24 -0000 The branch stable/12 has been updated by philip: URL: https://cgit.FreeBSD.org/src/commit/?id=7e7e2b9f9c8507d6e8c3a65aea28b53ba49d612b commit 7e7e2b9f9c8507d6e8c3a65aea28b53ba49d612b Author: Philip Paeps AuthorDate: 2021-06-17 13:07:37 +0000 Commit: Philip Paeps CommitDate: 2021-06-20 03:24:20 +0000 bsdconfig: add a new mirror in Bulgaria Provided by Telepoint Mirror Service. Reported by: Valentin Nikolov (cherry picked from commit 1c9605fe1e190197b3846e01dce1e491bef0ec34) --- usr.sbin/bsdconfig/include/messages.subr | 1 + usr.sbin/bsdconfig/share/media/ftp.subr | 1 + 2 files changed, 2 insertions(+) diff --git a/usr.sbin/bsdconfig/include/messages.subr b/usr.sbin/bsdconfig/include/messages.subr index 4932f08364d7..c1bc62749ad7 100644 --- a/usr.sbin/bsdconfig/include/messages.subr +++ b/usr.sbin/bsdconfig/include/messages.subr @@ -61,6 +61,7 @@ msg_bootstrapping_pkg="Bootstrapping pkg(8)..." msg_brazil="Brazil" msg_building_package_menus="Building package menu(s)..." msg_building_package_main_menu="Building package main menu..." +msg_bulgaria="Bulgaria" msg_cad_desc="Computer Aided Design utilities." msg_canada="Canada" msg_cancel="Cancel" diff --git a/usr.sbin/bsdconfig/share/media/ftp.subr b/usr.sbin/bsdconfig/share/media/ftp.subr index a6d0e1ca1ad0..fb2579f59f89 100644 --- a/usr.sbin/bsdconfig/share/media/ftp.subr +++ b/usr.sbin/bsdconfig/share/media/ftp.subr @@ -101,6 +101,7 @@ f_dialog_menu_media_ftp() '$msg_brazil' 'ftp2.br.freebsd.org' ' $msg_brazil #3' 'ftp3.br.freebsd.org' ' $msg_brazil #4' 'ftp4.br.freebsd.org' + '$msg_bulgaria' 'ftp.bg.freebsd.org' '$msg_china' 'ftp.cn.freebsd.org' '$msg_czech_republic' 'ftp.cz.freebsd.org' '$msg_denmark' 'ftp.dk.freebsd.org' From owner-dev-commits-src-all@freebsd.org Sun Jun 20 07:17:54 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DE35B64A008 for ; Sun, 20 Jun 2021 07:17:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G73sG5hX5z4Yrs; Sun, 20 Jun 2021 07:17:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id ABA6D25836; Sun, 20 Jun 2021 07:17:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K7Hsmx051621; Sun, 20 Jun 2021 07:17:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K7HsN7051620; Sun, 20 Jun 2021 07:17:54 GMT (envelope-from git) Date: Sun, 20 Jun 2021 07:17:54 GMT Message-Id: <202106200717.15K7HsN7051620@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Martin Matuska Subject: git: afa7b3484556..c4c162c1e8ff - vendor/openzfs/master - vendor branch updated MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/vendor/openzfs/master X-Git-Reftype: branch X-Git-Commit: c4c162c1e8ff9ce8833014711875d18df520096c X-Git-Oldrev: afa7b3484556d3ae610a34582ce5ebd2c3e27bba X-Git-Newrev: c4c162c1e8ff9ce8833014711875d18df520096c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 07:17:54 -0000 The branch vendor/openzfs/master has been updated by mm: URL: https://cgit.FreeBSD.org/src/log/?id=afa7b3484556..c4c162c1e8ff 069bf406b461 vdev_draid_min_asize() ignores reserved space 83ba91adf6c0 systemd: import: expand $ZPOOL_IMPORT_OPTS correctly ff3175040572 Fix importing with symlinks 9ffcaa370aee Avoid deadlock when removing L2ARC devices under I/O c4c162c1e8ff Use wmsum for arc, abd, dbuf and zfetch statistics. (#12172) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 07:18:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 80E2C649D1B for ; Sun, 20 Jun 2021 07:18:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G73sR2vKbz4Ys5; Sun, 20 Jun 2021 07:18:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4C2DB25A01; Sun, 20 Jun 2021 07:18:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K7I3gF051782; Sun, 20 Jun 2021 07:18:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K7I3Vp051781; Sun, 20 Jun 2021 07:18:03 GMT (envelope-from git) Date: Sun, 20 Jun 2021 07:18:03 GMT Message-Id: <202106200718.15K7I3Vp051781@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Martin Matuska Subject: git: c3b60ededa6e..3de7aeb68ac1 - vendor/openzfs/zfs-2.1-release - vendor branch updated MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/vendor/openzfs/zfs-2.1-release X-Git-Reftype: branch X-Git-Commit: 3de7aeb68ac1cc1fedd99506671d9028ad1a3c20 X-Git-Oldrev: c3b60ededa6e6ce36a457a54451ca153c4c630dc X-Git-Newrev: 3de7aeb68ac1cc1fedd99506671d9028ad1a3c20 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 07:18:03 -0000 The branch vendor/openzfs/zfs-2.1-release has been updated by mm: URL: https://cgit.FreeBSD.org/src/log/?id=c3b60ededa6e..3de7aeb68ac1 af4b6f7dabe3 ZTS: Add zfs_clone_livelist_dedup.ksh to Makefile.am a416b29e16c7 Added uncompress requirement bd83c1e0c6f9 Do not hash unlinked inodes 7e2212990b99 vdev_draid_min_asize() ignores reserved space ff64096e7566 systemd: import: expand $ZPOOL_IMPORT_OPTS correctly 3de7aeb68ac1 Avoid deadlock when removing L2ARC devices under I/O From owner-dev-commits-src-all@freebsd.org Sun Jun 20 08:04:10 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3924364AE21; Sun, 20 Jun 2021 08:04:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G74tf0tr7z4crY; Sun, 20 Jun 2021 08:04:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 06A9A2614D; Sun, 20 Jun 2021 08:04:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K849mN019691; Sun, 20 Jun 2021 08:04:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K849Eo019690; Sun, 20 Jun 2021 08:04:09 GMT (envelope-from git) Date: Sun, 20 Jun 2021 08:04:09 GMT Message-Id: <202106200804.15K849Eo019690@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Martin Matuska Subject: git: 0d8fe2373503 - main - zfs: merge openzfs/zfs@c4c162c1e (master) into main MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0d8fe2373503aeac48492f28073049a8bfa4feb5 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 08:04:10 -0000 The branch main has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=0d8fe2373503aeac48492f28073049a8bfa4feb5 commit 0d8fe2373503aeac48492f28073049a8bfa4feb5 Merge: 5403f2c163f7 c4c162c1e8ff Author: Martin Matuska AuthorDate: 2021-06-20 07:18:44 +0000 Commit: Martin Matuska CommitDate: 2021-06-20 07:18:44 +0000 zfs: merge openzfs/zfs@c4c162c1e (master) into main Notable upstream pull request merges: #12054 Avoid deadlock when removing L2ARC devices under I/O #12172 Use wmsum for arc, abd, dbuf and zfetch statistics #12221 vdev_draid_min_asize() ignores reserved space Obtained from: OpenZFS OpenZFS commit: c4c162c1e8ff9ce8833014711875d18df520096c .../etc/systemd/system/zfs-import-cache.service.in | 2 +- .../etc/systemd/system/zfs-import-scan.service.in | 2 +- sys/contrib/openzfs/include/sys/abd_impl.h | 4 +- sys/contrib/openzfs/include/sys/arc_impl.h | 119 +++- sys/contrib/openzfs/lib/libzutil/zutil_import.c | 1 + sys/contrib/openzfs/module/os/freebsd/zfs/abd_os.c | 46 ++ sys/contrib/openzfs/module/os/linux/zfs/abd_os.c | 75 +++ sys/contrib/openzfs/module/os/linux/zfs/arc_os.c | 2 +- sys/contrib/openzfs/module/zfs/arc.c | 606 +++++++++++++++------ sys/contrib/openzfs/module/zfs/dbuf.c | 112 +++- sys/contrib/openzfs/module/zfs/dmu_zfetch.c | 47 +- sys/contrib/openzfs/module/zfs/vdev_draid.c | 3 +- sys/contrib/openzfs/module/zfs/zio.c | 3 - 13 files changed, 789 insertions(+), 233 deletions(-) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 08:05:27 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3F12464B005; Sun, 20 Jun 2021 08:05:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G74w70zBkz4cq7; Sun, 20 Jun 2021 08:05:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0A3E02614E; Sun, 20 Jun 2021 08:05:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15K85Qqv019946; Sun, 20 Jun 2021 08:05:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15K85Q73019945; Sun, 20 Jun 2021 08:05:26 GMT (envelope-from git) Date: Sun, 20 Jun 2021 08:05:26 GMT Message-Id: <202106200805.15K85Q73019945@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Martin Matuska Subject: git: 9d1cafb30497 - main - zfs: add version update missing in 0d8fe2373 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9d1cafb304974e0e919abb269c260a52273bd0b9 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 08:05:27 -0000 The branch main has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=9d1cafb304974e0e919abb269c260a52273bd0b9 commit 9d1cafb304974e0e919abb269c260a52273bd0b9 Author: Martin Matuska AuthorDate: 2021-06-20 08:04:52 +0000 Commit: Martin Matuska CommitDate: 2021-06-20 08:04:52 +0000 zfs: add version update missing in 0d8fe2373 --- sys/modules/zfs/zfs_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/modules/zfs/zfs_config.h b/sys/modules/zfs/zfs_config.h index 6565242f82f9..1e9bdef25a1c 100644 --- a/sys/modules/zfs/zfs_config.h +++ b/sys/modules/zfs/zfs_config.h @@ -734,7 +734,7 @@ /* #undef ZFS_IS_GPL_COMPATIBLE */ /* Define the project alias string. */ -#define ZFS_META_ALIAS "zfs-2.1.99-FreeBSD_gafa7b3484" +#define ZFS_META_ALIAS "zfs-2.1.99-FreeBSD_gc4c162c1e" /* Define the project author. */ #define ZFS_META_AUTHOR "OpenZFS" @@ -764,7 +764,7 @@ #define ZFS_META_NAME "zfs" /* Define the project release. */ -#define ZFS_META_RELEASE "FreeBSD_gafa7b3484" +#define ZFS_META_RELEASE "FreeBSD_gc4c162c1e" /* Define the project version. */ #define ZFS_META_VERSION "2.1.99" From owner-dev-commits-src-all@freebsd.org Sun Jun 20 11:31:12 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5E6F764D6C9; Sun, 20 Jun 2021 11:31:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G79TX27jfz4r7S; Sun, 20 Jun 2021 11:31:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 32A3DDC8; Sun, 20 Jun 2021 11:31:12 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KBVCPI099097; Sun, 20 Jun 2021 11:31:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KBVCLY099096; Sun, 20 Jun 2021 11:31:12 GMT (envelope-from git) Date: Sun, 20 Jun 2021 11:31:12 GMT Message-Id: <202106201131.15KBVCLY099096@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marko Zec Subject: git: 402ddb85eed2 - stable/13 - Add IPv4 fib lookup performance tests with uniform keys. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zec X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 402ddb85eed2332c6e876e68e0d319e07bb8223d Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 11:31:12 -0000 The branch stable/13 has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=402ddb85eed2332c6e876e68e0d319e07bb8223d commit 402ddb85eed2332c6e876e68e0d319e07bb8223d Author: Alexander V. Chernikov AuthorDate: 2021-03-30 12:43:55 +0000 Commit: Marko Zec CommitDate: 2021-06-20 11:25:58 +0000 Add IPv4 fib lookup performance tests with uniform keys. Submitted by: zec MFC after: 1 week (cherry picked from commit b8598e2ff65ab82da0cf6861ee12f078b40bc252) --- sys/tests/fib_lookup/fib_lookup.c | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/sys/tests/fib_lookup/fib_lookup.c b/sys/tests/fib_lookup/fib_lookup.c index 3dd1bb8d5a50..ea07e3d697c6 100644 --- a/sys/tests/fib_lookup/fib_lookup.c +++ b/sys/tests/fib_lookup/fib_lookup.c @@ -505,6 +505,58 @@ SYSCTL_PROC(_net_route_test, OID_AUTO, run_inet_scan, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, run_test_inet_scan, "I", "Execute fib4_lookup scan tests"); +static int +rnd_lps(SYSCTL_HANDLER_ARGS) +{ + struct epoch_tracker et; + struct in_addr *keys; + struct nhop_object **nhops; + + struct timespec ts_pre, ts_post; + uint64_t total_diff, lps; + int error; + int count = 0; + + error = sysctl_handle_int(oidp, &count, 0, req); + if (error != 0) + return (error); + if (count <= 0) + return (0); + + keys = malloc(sizeof(*keys) * count, M_TEMP, M_NOWAIT); + nhops = malloc(sizeof(*nhops) * count, M_TEMP, M_NOWAIT); + if (keys == NULL || nhops == NULL) { + free(keys, M_TEMP); + free(nhops, M_TEMP); + return (ENOMEM); + } + + printf("Preparing %d random keys...\n", count); + arc4random_buf(keys, sizeof(*keys) * count); + printf("Starting LPS test...\n"); + + NET_EPOCH_ENTER(et); + nanouptime(&ts_pre); + for (int i = 0; i < count; i++) + nhops[i] = fib4_lookup(RT_DEFAULT_FIB, keys[i], 0, NHR_NONE, 0); + nanouptime(&ts_post); + NET_EPOCH_EXIT(et); + + free(keys, M_TEMP); + free(nhops, M_TEMP); + + total_diff = (ts_post.tv_sec - ts_pre.tv_sec) * 1000000000 + + (ts_post.tv_nsec - ts_pre.tv_nsec); + lps = 1000000000ULL * count / total_diff; + printf("%d lookups in %zu nanoseconds, %lu.%06lu MLPS\n", + count, total_diff, lps / 1000000, lps % 1000000); + + return (0); +} +SYSCTL_PROC(_net_route_test, OID_AUTO, rnd_lps, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, 0, rnd_lps, "I", + "Measure lookups per second using uniformly random keys"); static int test_fib_lookup_modevent(module_t mod, int type, void *unused) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 11:31:13 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 849C864D869; Sun, 20 Jun 2021 11:31:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G79TY3FfLz4rFl; Sun, 20 Jun 2021 11:31:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 55E2EE35; Sun, 20 Jun 2021 11:31:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KBVD0g099122; Sun, 20 Jun 2021 11:31:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KBVDfH099120; Sun, 20 Jun 2021 11:31:13 GMT (envelope-from git) Date: Sun, 20 Jun 2021 11:31:13 GMT Message-Id: <202106201131.15KBVDfH099120@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marko Zec Subject: git: 2b6b8ea60cb5 - stable/13 - Revise FIB lookups per second benchmarking routines. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zec X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 2b6b8ea60cb59158e7fb080476251bd1369d6bd2 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 11:31:13 -0000 The branch stable/13 has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=2b6b8ea60cb59158e7fb080476251bd1369d6bd2 commit 2b6b8ea60cb59158e7fb080476251bd1369d6bd2 Author: Marko Zec AuthorDate: 2021-05-05 10:28:17 +0000 Commit: Marko Zec CommitDate: 2021-06-20 11:26:52 +0000 Revise FIB lookups per second benchmarking routines. Add a LPS benchmark variant which introduces artificial dependencies between successive lookups. While here, instead of writing the results from the lookups to a huge array, add them to an accumulator, in a more lightweight attempt at preventing the CPU's OOO machinery from discarding the lookup results if they would be completely unused. net.route.test.run_lps_rnd measures LPS throughput with independent uniformly random keys net.route.test.run_lps_seq measures LPS throughput with uniformly random keys with artificial interdependencies Reviewed by: melifaro MFC after: 7 days Differential Revision: https://reviews.freebsd.org/D30096 (cherry picked from commit a43104ebe7630111d7e7debc56aacf49787dcf43) --- sys/tests/fib_lookup/fib_lookup.c | 42 +++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/sys/tests/fib_lookup/fib_lookup.c b/sys/tests/fib_lookup/fib_lookup.c index ea07e3d697c6..4093ff9dd487 100644 --- a/sys/tests/fib_lookup/fib_lookup.c +++ b/sys/tests/fib_lookup/fib_lookup.c @@ -509,13 +509,13 @@ static int rnd_lps(SYSCTL_HANDLER_ARGS) { struct epoch_tracker et; - struct in_addr *keys; - struct nhop_object **nhops; - + struct in_addr key; struct timespec ts_pre, ts_post; uint64_t total_diff, lps; - int error; + uint32_t *keys; + uintptr_t acc = 0; int count = 0; + int error; error = sysctl_handle_int(oidp, &count, 0, req); if (error != 0) @@ -524,12 +524,8 @@ rnd_lps(SYSCTL_HANDLER_ARGS) return (0); keys = malloc(sizeof(*keys) * count, M_TEMP, M_NOWAIT); - nhops = malloc(sizeof(*nhops) * count, M_TEMP, M_NOWAIT); - if (keys == NULL || nhops == NULL) { - free(keys, M_TEMP); - free(nhops, M_TEMP); + if (keys == NULL) return (ENOMEM); - } printf("Preparing %d random keys...\n", count); arc4random_buf(keys, sizeof(*keys) * count); @@ -537,26 +533,42 @@ rnd_lps(SYSCTL_HANDLER_ARGS) NET_EPOCH_ENTER(et); nanouptime(&ts_pre); - for (int i = 0; i < count; i++) - nhops[i] = fib4_lookup(RT_DEFAULT_FIB, keys[i], 0, NHR_NONE, 0); + switch (arg2) { + case 0: + for (int i = 0; i < count; i++) { + key.s_addr = keys[i] + acc; + acc += (uintptr_t) fib4_lookup(RT_DEFAULT_FIB, key, 0, + NHR_NONE, 0); + } + case 1: + for (int i = 0; i < count; i++) { + key.s_addr = keys[i]; + acc += (uintptr_t) fib4_lookup(RT_DEFAULT_FIB, key, 0, + NHR_NONE, 0); + } + } nanouptime(&ts_post); NET_EPOCH_EXIT(et); free(keys, M_TEMP); - free(nhops, M_TEMP); total_diff = (ts_post.tv_sec - ts_pre.tv_sec) * 1000000000 + - (ts_post.tv_nsec - ts_pre.tv_nsec); + (ts_post.tv_nsec - ts_pre.tv_nsec) + (acc & 1); lps = 1000000000ULL * count / total_diff; printf("%d lookups in %zu nanoseconds, %lu.%06lu MLPS\n", count, total_diff, lps / 1000000, lps % 1000000); return (0); } -SYSCTL_PROC(_net_route_test, OID_AUTO, rnd_lps, +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, rnd_lps, "I", - "Measure lookups per second using uniformly random keys"); + "Measure lookups per second, uniformly random keys, " + "artificial dependencies between lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, 1, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, independent lookups"); static int test_fib_lookup_modevent(module_t mod, int type, void *unused) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 11:31:15 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 02B0F64D4F6; Sun, 20 Jun 2021 11:31:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G79TZ6Rcgz4rGg; Sun, 20 Jun 2021 11:31:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8EC7DDCC; Sun, 20 Jun 2021 11:31:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KBVEQA099152; Sun, 20 Jun 2021 11:31:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KBVECL099151; Sun, 20 Jun 2021 11:31:14 GMT (envelope-from git) Date: Sun, 20 Jun 2021 11:31:14 GMT Message-Id: <202106201131.15KBVECL099151@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marko Zec Subject: git: 09274116f4d9 - stable/13 - tests: Revise FIB lookups per second benchmarking routines MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zec X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 09274116f4d90f5c25cfad3bd7d13b48b2d494da Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 11:31:15 -0000 The branch stable/13 has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=09274116f4d90f5c25cfad3bd7d13b48b2d494da commit 09274116f4d90f5c25cfad3bd7d13b48b2d494da Author: Marko Zec AuthorDate: 2021-06-17 06:49:09 +0000 Commit: Marko Zec CommitDate: 2021-06-20 11:27:17 +0000 tests: Revise FIB lookups per second benchmarking routines Fix a bug in the LPM SEQ benchmark (missing break inside a switch block) by restructuring the test loop, while introducing additional two synthetic test options: ANN: scan only the address space announced in current RIB REP: repeat lookups over several keys in a sliding window scheme The total of eight combinations of test options are now available through dedicated sysctl hooks. Differential Revision: Reviewed by: melifaro MFC after: 3 days (cherry picked from commit b6f8436b094daf7b1c429ce74997a4daf6994fcb) --- sys/tests/fib_lookup/fib_lookup.c | 140 ++++++++++++++++++++++++++++++++------ 1 file changed, 119 insertions(+), 21 deletions(-) diff --git a/sys/tests/fib_lookup/fib_lookup.c b/sys/tests/fib_lookup/fib_lookup.c index 4093ff9dd487..927664166fdd 100644 --- a/sys/tests/fib_lookup/fib_lookup.c +++ b/sys/tests/fib_lookup/fib_lookup.c @@ -505,16 +505,46 @@ SYSCTL_PROC(_net_route_test, OID_AUTO, run_inet_scan, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, run_test_inet_scan, "I", "Execute fib4_lookup scan tests"); +#define LPS_SEQ 0x1 +#define LPS_ANN 0x2 +#define LPS_REP 0x4 + +struct lps_walk_state { + uint32_t *keys; + int pos; + int lim; +}; + +static int +reduce_keys(struct rtentry *rt, void *_data) +{ + struct lps_walk_state *wa = (struct lps_walk_state *) _data; + struct in_addr addr; + uint32_t scopeid; + int plen; + + rt_get_inet_prefix_plen(rt, &addr, &plen, &scopeid); + wa->keys[wa->pos] = ntohl(addr.s_addr) | + (wa->keys[wa->pos] & ~(0xffffffffU << (32 - plen))); + + wa->pos++; + return (wa->pos == wa->lim); +} + static int rnd_lps(SYSCTL_HANDLER_ARGS) { struct epoch_tracker et; struct in_addr key; + struct lps_walk_state wa; struct timespec ts_pre, ts_post; + struct nhop_object *nh_fib; uint64_t total_diff, lps; uint32_t *keys; + uint32_t t, p; uintptr_t acc = 0; - int count = 0; + int i, pos, count = 0; + int seq = 0, rep = 0; int error; error = sysctl_handle_int(oidp, &count, 0, req); @@ -526,25 +556,62 @@ rnd_lps(SYSCTL_HANDLER_ARGS) keys = malloc(sizeof(*keys) * count, M_TEMP, M_NOWAIT); if (keys == NULL) return (ENOMEM); - printf("Preparing %d random keys...\n", count); arc4random_buf(keys, sizeof(*keys) * count); - printf("Starting LPS test...\n"); + if (arg2 & LPS_ANN) { + wa.keys = keys; + wa.pos = 0; + wa.lim = count; + printf("Reducing keys to announced address space...\n"); + do { + rib_walk(RT_DEFAULT_FIB, AF_INET, false, reduce_keys, + &wa); + } while (wa.pos < wa.lim); + printf("Reshuffling keys...\n"); + for (int i = 0; i < count; i++) { + p = random() % count; + t = keys[p]; + keys[p] = keys[i]; + keys[i] = t; + } + } + + if (arg2 & LPS_REP) { + rep = 1; + printf("REP "); + } + if (arg2 & LPS_SEQ) { + seq = 1; + printf("SEQ"); + } else if (arg2 & LPS_ANN) + printf("ANN"); + else + printf("RND"); + printf(" LPS test starting...\n"); NET_EPOCH_ENTER(et); nanouptime(&ts_pre); - switch (arg2) { - case 0: - for (int i = 0; i < count; i++) { - key.s_addr = keys[i] + acc; - acc += (uintptr_t) fib4_lookup(RT_DEFAULT_FIB, key, 0, - NHR_NONE, 0); + for (i = 0, pos = 0; i < count; i++) { + key.s_addr = keys[pos++] ^ ((acc >> 10) & 0xff); + nh_fib = fib4_lookup(RT_DEFAULT_FIB, key, 0, NHR_NONE, 0); + if (seq) { + if (nh_fib != NULL) { + acc += (uintptr_t) nh_fib + 123; + if (acc & 0x1000) + acc += (uintptr_t) nh_fib->nh_ifp; + else + acc -= (uintptr_t) nh_fib->nh_ifp; + } else + acc ^= (acc >> 3) + (acc << 2) + i; + if (acc & 0x800) + pos++; + if (pos >= count) + pos = 0; } - case 1: - for (int i = 0; i < count; i++) { - key.s_addr = keys[i]; - acc += (uintptr_t) fib4_lookup(RT_DEFAULT_FIB, key, 0, - NHR_NONE, 0); + if (rep && ((i & 0xf) == 0xf)) { + pos -= 0xf; + if (pos < 0) + pos += 0xf; } } nanouptime(&ts_post); @@ -553,22 +620,53 @@ rnd_lps(SYSCTL_HANDLER_ARGS) free(keys, M_TEMP); total_diff = (ts_post.tv_sec - ts_pre.tv_sec) * 1000000000 + - (ts_post.tv_nsec - ts_pre.tv_nsec) + (acc & 1); + (ts_post.tv_nsec - ts_pre.tv_nsec); lps = 1000000000ULL * count / total_diff; - printf("%d lookups in %zu nanoseconds, %lu.%06lu MLPS\n", - count, total_diff, lps / 1000000, lps % 1000000); + printf("%d lookups in %zu.%06zu milliseconds, %lu.%06lu MLPS\n", + count, total_diff / 1000000, total_diff % 1000000, + lps / 1000000, lps % 1000000); return (0); } -SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq, +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, independent lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd_ann, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_ANN, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "independent lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_SEQ, rnd_lps, "I", "Measure lookups per second, uniformly random keys, " "artificial dependencies between lookups"); -SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd, +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq_ann, CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, - 0, 1, rnd_lps, "I", - "Measure lookups per second, uniformly random keys, independent lookups"); + 0, LPS_SEQ | LPS_ANN, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "artificial dependencies between lookups"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_REP, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, independent lookups, " + "repeated keys"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_rnd_ann_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_ANN | LPS_REP, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "independent lookups, repeated keys"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_SEQ | LPS_REP, rnd_lps, "I", + "Measure lookups per second, uniformly random keys, " + "artificial dependencies between lookups, repeated keys"); +SYSCTL_PROC(_net_route_test, OID_AUTO, run_lps_seq_ann_rep, + CTLFLAG_VNET | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + 0, LPS_SEQ | LPS_ANN | LPS_REP, rnd_lps, "I", + "Measure lookups per second, random keys from announced address space, " + "artificial dependencies between lookups, repeated keys"); static int test_fib_lookup_modevent(module_t mod, int type, void *unused) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 12:50:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D5F44651454; Sun, 20 Jun 2021 12:50:05 +0000 (UTC) (envelope-from dchagin@heemeyer.club) Received: from heemeyer.club (heemeyer.club [IPv6:2001:19f0:6400:80a1:5054:ff:fe7a:a27d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7CDY5B9bz3G2S; Sun, 20 Jun 2021 12:50:05 +0000 (UTC) (envelope-from dchagin@heemeyer.club) Received: from heemeyer.club (localhost [127.0.0.1]) by heemeyer.club (8.16.1/8.16.1) with ESMTP id 15KCnv4T047767; Sun, 20 Jun 2021 15:49:57 +0300 (MSK) (envelope-from dchagin@heemeyer.club) Received: (from dchagin@localhost) by heemeyer.club (8.16.1/8.16.1/Submit) id 15KCnvM6047766; Sun, 20 Jun 2021 15:49:57 +0300 (MSK) (envelope-from dchagin) Date: Sun, 20 Jun 2021 15:49:57 +0300 From: Dmitry Chagin To: Dimitry Andric Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Message-ID: References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> X-Rspamd-Queue-Id: 4G7CDY5B9bz3G2S X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 12:50:05 -0000 On Sat, Jun 19, 2021 at 06:11:04PM +0000, Dimitry Andric wrote: > The branch main has been updated by dim: > > URL: https://cgit.FreeBSD.org/src/commit/?id=23408297fbf3089f0388a8873b02fa75ab3f5bb9 > > commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 > Merge: cac129e60300 e4bbddaec868 > Author: Dimitry Andric > AuthorDate: 2021-06-19 10:06:00 +0000 > Commit: Dimitry Andric > CommitDate: 2021-06-19 18:09:28 +0000 > > Merge llvm-project 12.0.1 rc2 > > This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and > openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. > > PR: 255570 > MFC after: 6 weeks > hi! with 11 clang kernel build time is about 60 sec, with 12.0.0 and 12.0.1 rc2 build time increased to 500 sec. From owner-dev-commits-src-all@freebsd.org Sun Jun 20 13:18:19 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C36AE651D81; Sun, 20 Jun 2021 13:18:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7Cs758Dvz3H1c; Sun, 20 Jun 2021 13:18:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 98BE520ED; Sun, 20 Jun 2021 13:18:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KDIJ1T039507; Sun, 20 Jun 2021 13:18:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KDIJF4039506; Sun, 20 Jun 2021 13:18:19 GMT (envelope-from git) Date: Sun, 20 Jun 2021 13:18:19 GMT Message-Id: <202106201318.15KDIJF4039506@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Martin Matuska Subject: git: d4b496996750 - stable/13 - zfs: merge openzfs/zfs@3de7aeb68 (zfs-2.1-release) into stable/13 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mm X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d4b4969967504aa53e67d431e6458ff9a4d10293 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 13:18:19 -0000 The branch stable/13 has been updated by mm: URL: https://cgit.FreeBSD.org/src/commit/?id=d4b4969967504aa53e67d431e6458ff9a4d10293 commit d4b4969967504aa53e67d431e6458ff9a4d10293 Merge: 09274116f4d9 3de7aeb68ac1 Author: Martin Matuska AuthorDate: 2021-06-20 13:16:16 +0000 Commit: Martin Matuska CommitDate: 2021-06-20 13:16:16 +0000 zfs: merge openzfs/zfs@3de7aeb68 (zfs-2.1-release) into stable/13 Notable upstream pull request merges: #12054 Avoid deadlock when removing L2ARC devices under I/O #12221 vdev_draid_min_asize() ignores reserved space Obtained from: OpenZFS OpenZFS commit: 3de7aeb68ac1cc1fedd99506671d9028ad1a3c20 .../etc/systemd/system/zfs-import-cache.service.in | 2 +- .../etc/systemd/system/zfs-import-scan.service.in | 2 +- sys/contrib/openzfs/module/os/linux/zfs/zfs_znode.c | 15 +++++++++++---- sys/contrib/openzfs/module/zfs/arc.c | 17 ++++++----------- sys/contrib/openzfs/module/zfs/vdev_draid.c | 3 ++- sys/contrib/openzfs/module/zfs/zio.c | 3 --- sys/contrib/openzfs/rpm/generic/zfs-dkms.spec.in | 7 +++++++ sys/contrib/openzfs/rpm/generic/zfs-kmod.spec.in | 7 +++++++ sys/contrib/openzfs/rpm/generic/zfs.spec.in | 5 +++++ .../tests/functional/cli_root/zfs_destroy/Makefile.am | 1 + sys/modules/zfs/zfs_config.h | 4 ++-- 11 files changed, 43 insertions(+), 23 deletions(-) diff --cc sys/modules/zfs/zfs_config.h index aaf35705dbc0,000000000000..344196bbede9 mode 100644,000000..100644 --- a/sys/modules/zfs/zfs_config.h +++ b/sys/modules/zfs/zfs_config.h @@@ -1,774 -1,0 +1,774 @@@ +/* + * $FreeBSD$ + */ + +/* zfs_config.h. Generated from zfs_config.h.in by configure. */ +/* zfs_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +/* #undef ENABLE_NLS */ + +/* bio_end_io_t wants 1 arg */ +/* #undef HAVE_1ARG_BIO_END_IO_T */ + +/* lookup_bdev() wants 1 arg */ +/* #undef HAVE_1ARG_LOOKUP_BDEV */ + +/* submit_bio() wants 1 arg */ +/* #undef HAVE_1ARG_SUBMIT_BIO */ + +/* bdi_setup_and_register() wants 2 args */ +/* #undef HAVE_2ARGS_BDI_SETUP_AND_REGISTER */ + +/* vfs_getattr wants 2 args */ +/* #undef HAVE_2ARGS_VFS_GETATTR */ + +/* zlib_deflate_workspacesize() wants 2 args */ +/* #undef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE */ + +/* bdi_setup_and_register() wants 3 args */ +/* #undef HAVE_3ARGS_BDI_SETUP_AND_REGISTER */ + +/* vfs_getattr wants 3 args */ +/* #undef HAVE_3ARGS_VFS_GETATTR */ + +/* vfs_getattr wants 4 args */ +/* #undef HAVE_4ARGS_VFS_GETATTR */ + +/* kernel has access_ok with 'type' parameter */ +/* #undef HAVE_ACCESS_OK_TYPE */ + +/* posix_acl has refcount_t */ +/* #undef HAVE_ACL_REFCOUNT */ + +/* Define if host toolchain supports AES */ +#define HAVE_AES 1 + +#ifdef __amd64__ +#ifndef RESCUE +/* Define if host toolchain supports AVX */ +#define HAVE_AVX 1 +#endif + +/* Define if host toolchain supports AVX2 */ +#define HAVE_AVX2 1 + +/* Define if host toolchain supports AVX512BW */ +#define HAVE_AVX512BW 1 + +/* Define if host toolchain supports AVX512CD */ +#define HAVE_AVX512CD 1 + +/* Define if host toolchain supports AVX512DQ */ +#define HAVE_AVX512DQ 1 + +/* Define if host toolchain supports AVX512ER */ +#define HAVE_AVX512ER 1 + +/* Define if host toolchain supports AVX512F */ +#define HAVE_AVX512F 1 + +/* Define if host toolchain supports AVX512IFMA */ +#define HAVE_AVX512IFMA 1 + +/* Define if host toolchain supports AVX512PF */ +#define HAVE_AVX512PF 1 + +/* Define if host toolchain supports AVX512VBMI */ +#define HAVE_AVX512VBMI 1 + +/* Define if host toolchain supports AVX512VL */ +#define HAVE_AVX512VL 1 +#endif + +/* bdev_check_media_change() exists */ +/* #undef HAVE_BDEV_CHECK_MEDIA_CHANGE */ + +/* bdev_whole() is available */ +/* #undef HAVE_BDEV_WHOLE */ + +/* bio->bi_opf is defined */ +/* #undef HAVE_BIO_BI_OPF */ + +/* bio->bi_status exists */ +/* #undef HAVE_BIO_BI_STATUS */ + +/* bio has bi_iter */ +/* #undef HAVE_BIO_BVEC_ITER */ + +/* bio_*_io_acct() available */ +/* #undef HAVE_BIO_IO_ACCT */ + +/* bio_set_dev() is available */ +/* #undef HAVE_BIO_SET_DEV */ + +/* bio_set_dev() GPL-only */ +/* #undef HAVE_BIO_SET_DEV_GPL_ONLY */ + +/* bio_set_op_attrs is available */ +/* #undef HAVE_BIO_SET_OP_ATTRS */ + +/* blkdev_reread_part() exists */ +/* #undef HAVE_BLKDEV_REREAD_PART */ + +/* blkg_tryget() is available */ +/* #undef HAVE_BLKG_TRYGET */ + +/* blkg_tryget() GPL-only */ +/* #undef HAVE_BLKG_TRYGET_GPL_ONLY */ + +/* blk_alloc_queue() expects request function */ +/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN */ + +/* blk_alloc_queue_rh() expects request function */ +/* #undef HAVE_BLK_ALLOC_QUEUE_REQUEST_FN_RH */ + +/* blk queue backing_dev_info is dynamic */ +/* #undef HAVE_BLK_QUEUE_BDI_DYNAMIC */ + +/* blk_queue_flag_clear() exists */ +/* #undef HAVE_BLK_QUEUE_FLAG_CLEAR */ + +/* blk_queue_flag_set() exists */ +/* #undef HAVE_BLK_QUEUE_FLAG_SET */ + +/* blk_queue_flush() is available */ +/* #undef HAVE_BLK_QUEUE_FLUSH */ + +/* blk_queue_flush() is GPL-only */ +/* #undef HAVE_BLK_QUEUE_FLUSH_GPL_ONLY */ + +/* blk_queue_secdiscard() is available */ +/* #undef HAVE_BLK_QUEUE_SECDISCARD */ + +/* blk_queue_secure_erase() is available */ +/* #undef HAVE_BLK_QUEUE_SECURE_ERASE */ + +/* blk_queue_write_cache() exists */ +/* #undef HAVE_BLK_QUEUE_WRITE_CACHE */ + +/* blk_queue_write_cache() is GPL-only */ +/* #undef HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY */ + +/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYCURRENT */ + +/* Define to 1 if you have the Mac OS X function + CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ +/* #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES */ + +/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */ + +/* check_disk_change() exists */ +/* #undef HAVE_CHECK_DISK_CHANGE */ + +/* clear_inode() is available */ +/* #undef HAVE_CLEAR_INODE */ + +/* dentry uses const struct dentry_operations */ +/* #undef HAVE_CONST_DENTRY_OPERATIONS */ + +/* copy_from_iter() is available */ +/* #undef HAVE_COPY_FROM_ITER */ + +/* copy_to_iter() is available */ +/* #undef HAVE_COPY_TO_ITER */ + +/* yes */ +/* #undef HAVE_CPU_HOTPLUG */ + +/* current_time() exists */ +/* #undef HAVE_CURRENT_TIME */ + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +/* #undef HAVE_DCGETTEXT */ + +/* DECLARE_EVENT_CLASS() is available */ +/* #undef HAVE_DECLARE_EVENT_CLASS */ + +/* lookup_bdev() wants dev_t arg */ +/* #undef HAVE_DEVT_LOOKUP_BDEV */ + +/* sops->dirty_inode() wants flags */ +/* #undef HAVE_DIRTY_INODE_WITH_FLAGS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* d_make_root() is available */ +/* #undef HAVE_D_MAKE_ROOT */ + +/* d_prune_aliases() is available */ +/* #undef HAVE_D_PRUNE_ALIASES */ + +/* dops->d_revalidate() operation takes nameidata */ +/* #undef HAVE_D_REVALIDATE_NAMEIDATA */ + +/* eops->encode_fh() wants child and parent inodes */ +/* #undef HAVE_ENCODE_FH_WITH_INODE */ + +/* sops->evict_inode() exists */ +/* #undef HAVE_EVICT_INODE */ + +/* fops->aio_fsync() exists */ +/* #undef HAVE_FILE_AIO_FSYNC */ + +/* file_dentry() is available */ +/* #undef HAVE_FILE_DENTRY */ + +/* file_inode() is available */ +/* #undef HAVE_FILE_INODE */ + +/* iops->follow_link() cookie */ +/* #undef HAVE_FOLLOW_LINK_COOKIE */ + +/* iops->follow_link() nameidata */ +/* #undef HAVE_FOLLOW_LINK_NAMEIDATA */ + +/* fops->fsync() with range */ +/* #undef HAVE_FSYNC_RANGE */ + +/* fops->fsync() without dentry */ +/* #undef HAVE_FSYNC_WITHOUT_DENTRY */ + +/* generic_*_io_acct() 3 arg available */ +/* #undef HAVE_GENERIC_IO_ACCT_3ARG */ + +/* generic_*_io_acct() 4 arg available */ +/* #undef HAVE_GENERIC_IO_ACCT_4ARG */ + +/* generic_readlink is global */ +/* #undef HAVE_GENERIC_READLINK */ + +/* generic_setxattr() exists */ +/* #undef HAVE_GENERIC_SETXATTR */ + +/* generic_write_checks() takes kiocb */ +/* #undef HAVE_GENERIC_WRITE_CHECKS_KIOCB */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +/* #undef HAVE_GETTEXT */ + +/* iops->get_link() cookie */ +/* #undef HAVE_GET_LINK_COOKIE */ + +/* iops->get_link() delayed */ +/* #undef HAVE_GET_LINK_DELAYED */ + +/* group_info->gid exists */ +/* #undef HAVE_GROUP_INFO_GID */ + +/* has_capability() is available */ +/* #undef HAVE_HAS_CAPABILITY */ + +/* Define if you have the iconv() function and it works. */ +#define HAVE_ICONV 1 + +/* yes */ +/* #undef HAVE_INODE_LOCK_SHARED */ + +/* inode_set_flags() exists */ +/* #undef HAVE_INODE_SET_FLAGS */ + +/* inode_set_iversion() exists */ +/* #undef HAVE_INODE_SET_IVERSION */ + +/* inode->i_*time's are timespec64 */ +/* #undef HAVE_INODE_TIMESPEC64_TIMES */ + +/* timestamp_truncate() exists */ +/* #undef HAVE_INODE_TIMESTAMP_TRUNCATE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* in_compat_syscall() is available */ +/* #undef HAVE_IN_COMPAT_SYSCALL */ + +/* iov_iter_advance() is available */ +/* #undef HAVE_IOV_ITER_ADVANCE */ + +/* iov_iter_count() is available */ +/* #undef HAVE_IOV_ITER_COUNT */ + +/* iov_iter_fault_in_readable() is available */ +/* #undef HAVE_IOV_ITER_FAULT_IN_READABLE */ + +/* iov_iter_init() is available */ +/* #undef HAVE_IOV_ITER_INIT */ + +/* iov_iter_init() is available */ +/* #undef HAVE_IOV_ITER_INIT_LEGACY */ + +/* iov_iter_revert() is available */ +/* #undef HAVE_IOV_ITER_REVERT */ + +/* iov_iter types are available */ +/* #undef HAVE_IOV_ITER_TYPES */ + +/* yes */ +/* #undef HAVE_IO_SCHEDULE_TIMEOUT */ + +/* Define to 1 if you have the `issetugid' function. */ +#define HAVE_ISSETUGID 1 + +/* kernel has kernel_fpu_* functions */ +/* #undef HAVE_KERNEL_FPU */ + +/* kernel has asm/fpu/api.h */ +/* #undef HAVE_KERNEL_FPU_API_HEADER */ + +/* kernel fpu internal */ +/* #undef HAVE_KERNEL_FPU_INTERNAL */ + +/* uncached_acl_sentinel() exists */ +/* #undef HAVE_KERNEL_GET_ACL_HANDLE_CACHE */ + +/* kernel does stack verification */ +/* #undef HAVE_KERNEL_OBJTOOL */ + +/* kernel has linux/objtool.h */ +/* #undef HAVE_KERNEL_OBJTOOL_HEADER */ + +/* kernel_read() take loff_t pointer */ +/* #undef HAVE_KERNEL_READ_PPOS */ + +/* timer_list.function gets a timer_list */ +/* #undef HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST */ + +/* struct timer_list has a flags member */ +/* #undef HAVE_KERNEL_TIMER_LIST_FLAGS */ + +/* timer_setup() is available */ +/* #undef HAVE_KERNEL_TIMER_SETUP */ + +/* kernel_write() take loff_t pointer */ +/* #undef HAVE_KERNEL_WRITE_PPOS */ + +/* kmem_cache_create_usercopy() exists */ +/* #undef HAVE_KMEM_CACHE_CREATE_USERCOPY */ + +/* kstrtoul() exists */ +/* #undef HAVE_KSTRTOUL */ + +/* ktime_get_coarse_real_ts64() exists */ +/* #undef HAVE_KTIME_GET_COARSE_REAL_TS64 */ + +/* ktime_get_raw_ts64() exists */ +/* #undef HAVE_KTIME_GET_RAW_TS64 */ + +/* kvmalloc exists */ +/* #undef HAVE_KVMALLOC */ + +/* kernel has large stacks */ +/* #undef HAVE_LARGE_STACKS */ + +/* Define if you have [aio] */ +/* #undef HAVE_LIBAIO */ + +/* Define if you have [blkid] */ +/* #undef HAVE_LIBBLKID */ + +/* Define if you have [crypto] */ +#define HAVE_LIBCRYPTO 1 + +/* Define if you have [tirpc] */ +/* #undef HAVE_LIBTIRPC */ + +/* Define if you have [udev] */ +/* #undef HAVE_LIBUDEV */ + +/* Define if you have [uuid] */ +/* #undef HAVE_LIBUUID */ + +/* lseek_execute() is available */ +/* #undef HAVE_LSEEK_EXECUTE */ + +/* makedev() is declared in sys/mkdev.h */ +/* #undef HAVE_MAKEDEV_IN_MKDEV */ + +/* makedev() is declared in sys/sysmacros.h */ +/* #undef HAVE_MAKEDEV_IN_SYSMACROS */ + +/* Noting that make_request_fn() returns blk_qc_t */ +/* #undef HAVE_MAKE_REQUEST_FN_RET_QC */ + +/* Noting that make_request_fn() returns void */ +/* #undef HAVE_MAKE_REQUEST_FN_RET_VOID */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* iops->create()/mkdir()/mknod() take umode_t */ +/* #undef HAVE_MKDIR_UMODE_T */ + +/* Define to 1 if you have the `mlockall' function. */ +#define HAVE_MLOCKALL 1 + +/* lookup_bdev() wants mode arg */ +/* #undef HAVE_MODE_LOOKUP_BDEV */ + +/* Define if host toolchain supports MOVBE */ +#define HAVE_MOVBE 1 + +/* new_sync_read()/new_sync_write() are available */ +/* #undef HAVE_NEW_SYNC_READ */ + +/* iops->getattr() takes a path */ +/* #undef HAVE_PATH_IOPS_GETATTR */ + +/* Define if host toolchain supports PCLMULQDQ */ +#define HAVE_PCLMULQDQ 1 + +/* percpu_counter_init() wants gfp_t */ +/* #undef HAVE_PERCPU_COUNTER_INIT_WITH_GFP */ + +/* posix_acl_chmod() exists */ +/* #undef HAVE_POSIX_ACL_CHMOD */ + +/* posix_acl_from_xattr() needs user_ns */ +/* #undef HAVE_POSIX_ACL_FROM_XATTR_USERNS */ + +/* posix_acl_release() is available */ +/* #undef HAVE_POSIX_ACL_RELEASE */ + +/* posix_acl_release() is GPL-only */ +/* #undef HAVE_POSIX_ACL_RELEASE_GPL_ONLY */ + +/* posix_acl_valid() wants user namespace */ +/* #undef HAVE_POSIX_ACL_VALID_WITH_NS */ + +/* proc_ops structure exists */ +/* #undef HAVE_PROC_OPS_STRUCT */ + +/* iops->put_link() cookie */ +/* #undef HAVE_PUT_LINK_COOKIE */ + +/* iops->put_link() delayed */ +/* #undef HAVE_PUT_LINK_DELAYED */ + +/* iops->put_link() nameidata */ +/* #undef HAVE_PUT_LINK_NAMEIDATA */ + +/* If available, contains the Python version number currently in use. */ +#define HAVE_PYTHON "3.7" + +/* qat is enabled and existed */ +/* #undef HAVE_QAT */ + +/* iops->rename() wants flags */ +/* #undef HAVE_RENAME_WANTS_FLAGS */ + +/* REQ_DISCARD is defined */ +/* #undef HAVE_REQ_DISCARD */ + +/* REQ_FLUSH is defined */ +/* #undef HAVE_REQ_FLUSH */ + +/* REQ_OP_DISCARD is defined */ +/* #undef HAVE_REQ_OP_DISCARD */ + +/* REQ_OP_FLUSH is defined */ +/* #undef HAVE_REQ_OP_FLUSH */ + +/* REQ_OP_SECURE_ERASE is defined */ +/* #undef HAVE_REQ_OP_SECURE_ERASE */ + +/* REQ_PREFLUSH is defined */ +/* #undef HAVE_REQ_PREFLUSH */ + +/* revalidate_disk() is available */ +/* #undef HAVE_REVALIDATE_DISK */ + +/* revalidate_disk_size() is available */ +/* #undef HAVE_REVALIDATE_DISK_SIZE */ + +/* struct rw_semaphore has member activity */ +/* #undef HAVE_RWSEM_ACTIVITY */ + +/* struct rw_semaphore has atomic_long_t member count */ +/* #undef HAVE_RWSEM_ATOMIC_LONG_COUNT */ + +/* linux/sched/signal.h exists */ +/* #undef HAVE_SCHED_SIGNAL_HEADER */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SECURITY_PAM_MODULES_H 1 + +/* setattr_prepare() is available */ +/* #undef HAVE_SETATTR_PREPARE */ + +/* iops->set_acl() exists */ +/* #undef HAVE_SET_ACL */ + +/* set_cached_acl() is usable */ +/* #undef HAVE_SET_CACHED_ACL_USABLE */ + +/* struct shrink_control exists */ +/* #undef HAVE_SHRINK_CONTROL_STRUCT */ + +/* new shrinker callback wants 2 args */ +/* #undef HAVE_SINGLE_SHRINKER_CALLBACK */ + +/* ->count_objects exists */ +/* #undef HAVE_SPLIT_SHRINKER_CALLBACK */ + +#if defined(__amd64__) || defined(__i386__) +/* Define if host toolchain supports SSE */ +#define HAVE_SSE 1 + +/* Define if host toolchain supports SSE2 */ +#define HAVE_SSE2 1 + +/* Define if host toolchain supports SSE3 */ +#define HAVE_SSE3 1 + +/* Define if host toolchain supports SSE4.1 */ +#define HAVE_SSE4_1 1 + +/* Define if host toolchain supports SSE4.2 */ +#define HAVE_SSE4_2 1 + +/* Define if host toolchain supports SSSE3 */ +#define HAVE_SSSE3 1 +#endif + +/* STACK_FRAME_NON_STANDARD is defined */ +/* #undef HAVE_STACK_FRAME_NON_STANDARD */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strlcat' function. */ +#define HAVE_STRLCAT 1 + +/* Define to 1 if you have the `strlcpy' function. */ +#define HAVE_STRLCPY 1 + +/* submit_bio is member of struct block_device_operations */ +/* #undef HAVE_SUBMIT_BIO_IN_BLOCK_DEVICE_OPERATIONS */ + +/* super_setup_bdi_name() exits */ +/* #undef HAVE_SUPER_SETUP_BDI_NAME */ + +/* super_block->s_user_ns exists */ +/* #undef HAVE_SUPER_USER_NS */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* i_op->tmpfile() exists */ +/* #undef HAVE_TMPFILE */ + +/* totalhigh_pages() exists */ +/* #undef HAVE_TOTALHIGH_PAGES */ + +/* kernel has totalram_pages() */ +/* #undef HAVE_TOTALRAM_PAGES_FUNC */ + +/* Define to 1 if you have the `udev_device_get_is_initialized' function. */ +/* #undef HAVE_UDEV_DEVICE_GET_IS_INITIALIZED */ + +/* kernel has __kernel_fpu_* functions */ +/* #undef HAVE_UNDERSCORE_KERNEL_FPU */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* iops->getattr() takes a vfsmount */ +/* #undef HAVE_VFSMOUNT_IOPS_GETATTR */ + +/* aops->direct_IO() uses iovec */ +/* #undef HAVE_VFS_DIRECT_IO_IOVEC */ + +/* aops->direct_IO() uses iov_iter without rw */ +/* #undef HAVE_VFS_DIRECT_IO_ITER */ + +/* aops->direct_IO() uses iov_iter with offset */ +/* #undef HAVE_VFS_DIRECT_IO_ITER_OFFSET */ + +/* aops->direct_IO() uses iov_iter with rw and offset */ +/* #undef HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET */ + +/* All required iov_iter interfaces are available */ +/* #undef HAVE_VFS_IOV_ITER */ + +/* fops->iterate() is available */ +/* #undef HAVE_VFS_ITERATE */ + +/* fops->iterate_shared() is available */ +/* #undef HAVE_VFS_ITERATE_SHARED */ + +/* fops->readdir() is available */ +/* #undef HAVE_VFS_READDIR */ + +/* fops->read/write_iter() are available */ +/* #undef HAVE_VFS_RW_ITERATE */ + +/* __vmalloc page flags exists */ +/* #undef HAVE_VMALLOC_PAGE_KERNEL */ + +/* yes */ +/* #undef HAVE_WAIT_ON_BIT_ACTION */ + +/* wait_queue_entry_t exists */ +/* #undef HAVE_WAIT_QUEUE_ENTRY_T */ + +/* wq_head->head and wq_entry->entry exist */ +/* #undef HAVE_WAIT_QUEUE_HEAD_ENTRY */ + +/* xattr_handler->get() wants dentry */ +/* #undef HAVE_XATTR_GET_DENTRY */ + +/* xattr_handler->get() wants both dentry and inode */ +/* #undef HAVE_XATTR_GET_DENTRY_INODE */ + +/* xattr_handler->get() wants xattr_handler */ +/* #undef HAVE_XATTR_GET_HANDLER */ + +/* xattr_handler has name */ +/* #undef HAVE_XATTR_HANDLER_NAME */ + +/* xattr_handler->list() wants dentry */ +/* #undef HAVE_XATTR_LIST_DENTRY */ + +/* xattr_handler->list() wants xattr_handler */ +/* #undef HAVE_XATTR_LIST_HANDLER */ + +/* xattr_handler->list() wants simple */ +/* #undef HAVE_XATTR_LIST_SIMPLE */ + +/* xattr_handler->set() wants dentry */ +/* #undef HAVE_XATTR_SET_DENTRY */ + +/* xattr_handler->set() wants both dentry and inode */ +/* #undef HAVE_XATTR_SET_DENTRY_INODE */ + +/* xattr_handler->set() wants xattr_handler */ +/* #undef HAVE_XATTR_SET_HANDLER */ + +/* Define if you have [z] */ +#define HAVE_ZLIB 1 + +/* __posix_acl_chmod() exists */ +/* #undef HAVE___POSIX_ACL_CHMOD */ + +/* kernel exports FPU functions */ +/* #undef KERNEL_EXPORTS_X86_FPU */ + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* make_request_fn() return type */ +/* #undef MAKE_REQUEST_FN_RET */ + +/* hardened module_param_call */ +/* #undef MODULE_PARAM_CALL_CONST */ + +/* struct shrink_control has nid */ +/* #undef SHRINK_CONTROL_HAS_NID */ + +/* Defined for legacy compatibility. */ +#define SPL_META_ALIAS ZFS_META_ALIAS + +/* Defined for legacy compatibility. */ +#define SPL_META_RELEASE ZFS_META_RELEASE + +/* Defined for legacy compatibility. */ +#define SPL_META_VERSION ZFS_META_VERSION + +/* True if ZFS is to be compiled for a FreeBSD system */ +#define SYSTEM_FREEBSD 1 + +/* True if ZFS is to be compiled for a Linux system */ +/* #undef SYSTEM_LINUX */ + +/* zfs debugging enabled */ +/* #undef ZFS_DEBUG */ + +/* /dev/zfs minor */ +/* #undef ZFS_DEVICE_MINOR */ + +/* enum node_stat_item contains NR_FILE_PAGES */ +/* #undef ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES */ + +/* enum node_stat_item contains NR_INACTIVE_ANON */ +/* #undef ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON */ + +/* enum node_stat_item contains NR_INACTIVE_FILE */ +/* #undef ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE */ + +/* enum zone_stat_item contains NR_FILE_PAGES */ +/* #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES */ + +/* enum zone_stat_item contains NR_INACTIVE_ANON */ +/* #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON */ + +/* enum zone_stat_item contains NR_INACTIVE_FILE */ +/* #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE */ + +/* global_node_page_state() exists */ +/* #undef ZFS_GLOBAL_NODE_PAGE_STATE */ + +/* global_zone_page_state() exists */ +/* #undef ZFS_GLOBAL_ZONE_PAGE_STATE */ + +/* Define to 1 if GPL-only symbols can be used */ +/* #undef ZFS_IS_GPL_COMPATIBLE */ + +/* Define the project alias string. */ - #define ZFS_META_ALIAS "zfs-2.1.0-FreeBSD_gc3b60eded" ++#define ZFS_META_ALIAS "zfs-2.1.0-FreeBSD_g3de7aeb68" + +/* Define the project author. */ +#define ZFS_META_AUTHOR "OpenZFS" + +/* Define the project release date. */ +/* #undef ZFS_META_DATA */ + +/* Define the maximum compatible kernel version. */ +#define ZFS_META_KVER_MAX "5.12" + +/* Define the minimum compatible kernel version. */ +#define ZFS_META_KVER_MIN "3.10" + +/* Define the project license. */ +#define ZFS_META_LICENSE "CDDL" + +/* Define the libtool library 'age' version information. */ +/* #undef ZFS_META_LT_AGE */ + +/* Define the libtool library 'current' version information. */ +/* #undef ZFS_META_LT_CURRENT */ + +/* Define the libtool library 'revision' version information. */ +/* #undef ZFS_META_LT_REVISION */ + +/* Define the project name. */ +#define ZFS_META_NAME "zfs" + +/* Define the project release. */ - #define ZFS_META_RELEASE "FreeBSD_gc3b60eded" ++#define ZFS_META_RELEASE "FreeBSD_g3de7aeb68" + +/* Define the project version. */ +#define ZFS_META_VERSION "2.1.0" + +/* count is located in percpu_ref.data */ +/* #undef ZFS_PERCPU_REF_COUNT_IN_DATA */ + From owner-dev-commits-src-all@freebsd.org Sun Jun 20 13:52:59 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D52A6652188; Sun, 20 Jun 2021 13:52:59 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7Dd73VWWz3MKb; Sun, 20 Jun 2021 13:52:59 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: by mail-wr1-x42a.google.com with SMTP id b3so6236838wrm.6; Sun, 20 Jun 2021 06:52:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=aPZWiKYY0JKYK6OnSe1Yy/dRKldMzd/JaVZZ6/REva4=; b=no8k6q7+Tt1Iqx/veS0E3fqepRRobFNA91Xx8E0WAFjGtBlhC4ooPUL4gnLT746OgN w8siboLjEcEiZYCkkK0IGGVurygtG93CP4fsUDfSQOpUldPoCCw8HZwHorNFGa536gaD QCuDclby24TZzwb6W11hbImwa8k5WkfIolf5rDChTG5yuvnOUBQJDNt+OTkaDLilhKAM y1k57LSl18/R9Cv4Bc/e0ltBSOjQ22+l3TzeQclwuheOV0VvM3irXnR0FGGqo5iOG43G vPrnDTsWY1B7UOl5oo+yhlW3b0ngbAqLFNv4JUMUqbCOKbPXT9og5SqcaQMvqckKh1b9 QF3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=aPZWiKYY0JKYK6OnSe1Yy/dRKldMzd/JaVZZ6/REva4=; b=ts124B0B5HPyKewUqhlRmVWzCBQQRYk0+lvW75HK8yxjbFu35Szcy+k/5Pr+g5hQqa 7A57F7cKj7sH6JuBflFcttEsRplIjGcbZrplwY9P41Xh7KTTOdovhVLZFYQIZSjq28B+ PbeE7IvtNuMBLVQC6RegvjXu+9h7h1Zwrzk5jeZV5Og0mIgUIhOsMg0pl2HNwm4boVL0 KO65ylb061KiN0KH7qA6ArIOpf4z4HynRmREsLbF+Q5bWktxui3JFnSUJ5sWrxu1fPrl VZwIZtB7XJCQMa8y0Sxw+omu79Y5wSbQ3yPcn/OeRvZLwFddeLcdZMDlhf+kAa6fepwe 6FSA== X-Gm-Message-State: AOAM530D3gy3FvT4PMgS8NjxfKBDaGNB0UgpWnCg9USaTdR4JLwmRGKs CRkO9nfo4EgfGCXtfUeDaYZaVs007tM= X-Google-Smtp-Source: ABdhPJwSGGATMeOx/5RgMn5yduo1SXIHiQoh5hPZLx1OnEvjcymUN8wLjbZM1xRurCYbihg2Iy+URA== X-Received: by 2002:a05:6000:180f:: with SMTP id m15mr23277115wrh.102.1624197177980; Sun, 20 Jun 2021 06:52:57 -0700 (PDT) Received: from ernst.home (pd9e2360f.dip0.t-ipconnect.de. [217.226.54.15]) by smtp.gmail.com with ESMTPSA id y4sm8644407wrw.71.2021.06.20.06.52.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Jun 2021 06:52:57 -0700 (PDT) Date: Sun, 20 Jun 2021 15:52:53 +0200 From: Gary Jennejohn To: Dmitry Chagin Cc: Dimitry Andric , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Message-ID: <20210620135253.68780177@ernst.home> In-Reply-To: References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> Reply-To: gljennjohn@gmail.com X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; amd64-portbld-freebsd14.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4G7Dd73VWWz3MKb X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 13:53:00 -0000 On Sun, 20 Jun 2021 15:49:57 +0300 Dmitry Chagin wrote: > On Sat, Jun 19, 2021 at 06:11:04PM +0000, Dimitry Andric wrote: > > The branch main has been updated by dim: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=23408297fbf3089f0388a8873b02fa75ab3f5bb9 > > > > commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 > > Merge: cac129e60300 e4bbddaec868 > > Author: Dimitry Andric > > AuthorDate: 2021-06-19 10:06:00 +0000 > > Commit: Dimitry Andric > > CommitDate: 2021-06-19 18:09:28 +0000 > > > > Merge llvm-project 12.0.1 rc2 > > > > This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and > > openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. > > > > PR: 255570 > > MFC after: 6 weeks > > > hi! with 11 clang kernel build time is about 60 sec, with 12.0.0 and > 12.0.1 rc2 build time increased to 500 sec. > On my system (Ryzen 5 1600 3200MHz) building my customized kernel takes only 25 seconds. Even building GENERIC-NODEBUG only takes 222 seconds. These were both clean builds, i.e. the target directory was empty when I started the build, so every file had to be newly compiled. -- Gary Jennejohn From owner-dev-commits-src-all@freebsd.org Sun Jun 20 13:58:16 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1DC05652493; Sun, 20 Jun 2021 13:58:16 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7DlC4m3yz3NjQ; Sun, 20 Jun 2021 13:58:15 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1624197488; bh=oP9uOHpDjv4rFyM8stE8n9eT/Ns3a7xreGaMDWiHULA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=UlUrwTnoBw3KFg/pt8CM0sjoMI5SSittSUq1XjbpeLxOCJ0G1OdtWgiwyer6TmNx7 eKUudwyX9vNbsk244iEA9X5Id6xZU/mOU7f+IFyhf2FtrSdhW8reThzBGZuXOca1Ec I9cOCqZrdHvB2p7c6tETp7Kl3o+0WWPpC6zS9P70= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from hermann.fritz.box ([78.55.226.148]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MLzFx-1ld1R83nhh-00Hv0e; Sun, 20 Jun 2021 15:58:08 +0200 Date: Sun, 20 Jun 2021 15:58:00 +0200 From: "Hartmann, O." To: Dimitry Andric Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Message-ID: <20210620155800.236bb4b8@hermann.fritz.box> In-Reply-To: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> Organization: walstatt.org MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/w64OtYwhJx9jmBGmB17fiWB"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:SdF/VkqXz6ztu3mD3RJC0YW4lAxb/4wA8SWiqOsK/BastpPrnpm bL2Xk9WJ6FdJGY07Lpq84Gmhq35vcsXryjqHZiTTjg4A3LQeiYTVbvtw1+oYJ6yC/KlRKZ2 gYm8kWC76sEgwM0k/jBX1cBFJVoOocecL8xm9tlZr0LbhRboT22MvAUmw6lE9yt3pWHARIa AjomqF5b1pcds7t+o8Eng== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:LjGYymkAJiE=:QBzSv8OVwuxOD5aGytURw/ Nlk1z4KIhuh5wX7P4yGQsPda/O5kE7CHrIArk5859+y5MPzO0E36NddHuH08Hw/sq4aIvleis iZB7H8iVrpsUU2RfPS/FcBc4cdOPZ/eWek8Cfdva8vIXKetao+14l67tHG7uJ+LYFLdKCINCb uMFldctNudbQIsTMnmlc9y/TstBQRlAtxyItQ2YYRVi+k9xlf8q40/rcm26N98PVMr+jAMDSa shxvajMlwKVaQyDazksscW8PA6utr0CD77rcj8bCedE32qzW2GJRjPo7JLMsSK0dWXjXY6Xnv RDCF7WkaM6OW3J4U0i9pLZ4lZc5OASSOGLJK3a0wC+jolYarh+qhHcEja+LJeqEurgLLunSDA ucHlKCFYOXGKN+8ziY3s6fnDzAXxAbjm3BmRfuo28NyMFOpfo/8j4vL3Bckzxxxin3TXBFkvk ygwS9XixD1kcDW33Yb8Wo4rUyLyA4u7W8ySWdZrt3Jp4pN4PA23Sh55QV+xSxL3I4p7fIwIxI jdOzM2ZxD/wue6DY8irugJtp8+/6pMCoqICFsfA8bXTjH2SgmPUN9B3pmawZo/xcSYRkI9KC/ 1Mozm/NxwVK2LdmkqPY6uXpIRGsjkv5ocGCZtddP07xINYkZCNd0cmrQgDKwCOH7SE2MDLDHR gscqgsU5El6GSHt7B+C7BdA8LrB46UFOq9QdxT/ckuWVcE9STyYjZOz7f5BmCDAHsZ4ZZtvw0 dOP3PoFbU8Kj1TzYnUYdp8rgixRRVqHRxmbaiauAy+i18GqBLFVZWVeRTOyU8iSES1R5tQ3lV /HsV2OZVekPgXakfVi4CJ66T9MJhkm/eFg5x1R72SzX+O6Y3uxlVDgfYb75raFnFCkzvfxN0r zdzMv7xjs3H5LaUEnEGF0U+H91NdgdxiDKT61O8nfsv0caiu8donzr3Ny/ZSbNi+y69CmoGom Stg6Vy9CXp+ZB/ZCngOYq/U0rwS3ff+mnYJQa3mTqAHQ3YwvPEF64NwuQHHhVLQQGnOiBoPlU XbmZZCtGDz7hv1gurzpDbtA8avqMh3A/V5XNOwui7VfWfUy2WjFeGCARbzOWwcfyM2F4Qz/DS qsOX1/NEQPqf/hhTlXgJ5zl+kLrB1+heeyQo+Tn8Lnviw1ywqBBMn9g2A== X-Rspamd-Queue-Id: 4G7DlC4m3yz3NjQ X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 13:58:16 -0000 --Sig_/w64OtYwhJx9jmBGmB17fiWB Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Sat, 19 Jun 2021 18:11:04 GMT Dimitry Andric wrote: > The branch main has been updated by dim: >=20 > URL: https://cgit.FreeBSD.org/src/commit/?id=3D23408297fbf3089f0388a8873b= 02fa75ab3f5bb9 >=20 > commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 > Merge: cac129e60300 e4bbddaec868 > Author: Dimitry Andric > AuthorDate: 2021-06-19 10:06:00 +0000 > Commit: Dimitry Andric > CommitDate: 2021-06-19 18:09:28 +0000 >=20 > Merge llvm-project 12.0.1 rc2 > =20 > This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb a= nd > openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. > =20 > PR: 255570 > MFC after: 6 weeks >=20 > ObsoleteFiles.inc | 291 +++++++++++ > .../clang/lib/CodeGen/CodeGenModule.cpp | 12 +- > .../clang/lib/Format/TokenAnnotator.cpp | 12 +- > .../clang/lib/Format/UnwrappedLineFormatter.cpp | 7 - > .../clang/lib/Format/UnwrappedLineParser.cpp | 89 +++- > .../clang/lib/Format/UnwrappedLineParser.h | 12 +- > .../clang/lib/Headers/ppc_wrappers/xmmintrin.h | 9 +- > .../llvm-project/clang/lib/Sema/SemaChecking.cpp | 5 +- > contrib/llvm-project/libcxx/include/memory | 32 +- > contrib/llvm-project/lld/ELF/SyntheticSections.cpp | 4 +- > contrib/llvm-project/lldb/docs/man/lldb.rst | 4 +- > contrib/llvm-project/lldb/tools/driver/Driver.cpp | 4 +- > contrib/llvm-project/llvm/include/llvm/ADT/Any.h | 7 +- > .../llvm/CodeGen/GlobalISel/LegalizerHelper.h | 1 + > .../llvm-project/llvm/include/llvm/IR/Constant.h | 4 + > .../llvm/lib/Analysis/ConstantFolding.cpp | 15 +- > .../llvm/lib/Analysis/InstructionSimplify.cpp | 8 +- > .../llvm/lib/Analysis/MemoryDependenceAnalysis.cpp | 4 +- > .../llvm/lib/Analysis/ScalarEvolution.cpp | 4 + > .../llvm/lib/Analysis/ValueTracking.cpp | 15 +- > .../llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 5 +- > .../lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 44 +- > .../llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 24 +- > .../lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp | 33 +- > .../llvm/lib/CodeGen/StackProtector.cpp | 24 +- > contrib/llvm-project/llvm/lib/IR/Constants.cpp | 12 + > .../llvm-project/llvm/lib/Support/CommandLine.cpp | 2 +- > .../lib/Target/AArch64/AArch64ISelLowering.cpp | 43 +- > .../AArch64/GISel/AArch64InstructionSelector.cpp | 2 +- > .../llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 22 +- > .../llvm/lib/Target/BPF/BPFMIPeephole.cpp | 3 + > .../llvm/lib/Target/BPF/BPFPreserveDIType.cpp | 9 + > .../llvm/lib/Target/BPF/BPFTargetMachine.cpp | 6 + > .../llvm/lib/Target/BPF/BPFTargetMachine.h | 2 + > .../llvm/lib/Target/BPF/BPFTargetTransformInfo.h | 61 +++ > contrib/llvm-project/llvm/lib/Target/BPF/BTF.def | 1 + > .../llvm-project/llvm/lib/Target/BPF/BTFDebug.cpp | 62 ++- > .../llvm-project/llvm/lib/Target/BPF/BTFDebug.h | 11 +- > .../llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp | 6 + > .../llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | 365 ++++++------- > .../llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 62 +++ > .../llvm/lib/Target/PowerPC/PPCISelLowering.h | 1 + > .../llvm/lib/Target/PowerPC/PPCRegisterInfo.td | 43 +- > .../lib/Target/PowerPC/PPCTargetTransformInfo.cpp | 21 + > .../lib/Target/PowerPC/PPCTargetTransformInfo.h | 3 + > .../lib/Target/RISCV/RISCVInstrInfoVPseudos.td | 20 +- > .../lib/Target/SystemZ/SystemZISelLowering.cpp | 5 +- > .../WebAssemblyLowerEmscriptenEHSjLj.cpp | 13 +- > .../llvm/lib/Target/X86/X86ISelLowering.cpp | 2 + > .../llvm/lib/Target/X86/X86InstrCompiler.td | 11 +- > .../Transforms/InstCombine/InstCombineAndOrXor.cpp | 17 +- > .../Transforms/InstCombine/InstCombineSelect.cpp | 5 +- > .../Transforms/InstCombine/InstCombineShifts.cpp | 58 ++- > .../llvm/lib/Transforms/Scalar/LoopRerollPass.cpp | 6 + > .../Transforms/Scalar/LowerConstantIntrinsics.cpp | 8 +- > .../llvm/lib/Transforms/Scalar/SCCP.cpp | 7 +- > .../llvm/lib/Transforms/Utils/InlineFunction.cpp | 106 ++-- > etc/mtree/BSD.debug.dist | 2 +- > etc/mtree/BSD.usr.dist | 2 +- > lib/clang/headers/Makefile | 2 +- > lib/clang/include/VCSVersion.inc | 8 +- > lib/clang/include/clang/Basic/Version.inc | 6 +- > lib/clang/include/clang/Config/config.h | 2 +- > lib/clang/include/lld/Common/Version.inc | 2 +- > lib/clang/include/llvm/Config/config.h | 4 +- > lib/clang/include/llvm/Config/llvm-config.h | 5 +- > lib/clang/include/llvm/Support/VCSRevision.h | 2 +- > lib/libclang_rt/compiler-rt-vars.mk | 2 +- > tools/build/mk/OptionalObsoleteFiles.inc | 578 ++++++++++-----= ------ > 69 files changed, 1480 insertions(+), 799 deletions(-) >=20 > diff --cc ObsoleteFiles.inc > index 468d967efdcc,000000000000..a2a423fafc9c > mode 100644,000000..100644 > --- a/ObsoleteFiles.inc > +++ b/ObsoleteFiles.inc > @@@ -1,15375 -1,0 +1,15666 @@@ > +# > +# $FreeBSD$ > +# > +# This file lists old files (OLD_FILES), libraries (OLD_LIBS) and > +# directories (OLD_DIRS) which should get removed at an update. Recently > +# removed entries first (with the date as a comment). Dynamic libraries= are > +# special cased (OLD_LIBS). Static libraries or the generic links to > +# the dynamic libraries (lib*.so) should (if you don't know why to make= an > +# exception, make this a "must") be viewed as normal files (OLD_FILES). > +# > +# In case of a complete directory hierarchy the sorting is in depth fir= st > +# order. > +# > +# Files that are installed or removed depending on some build option > +# are to be listed in /usr/src/tools/build/mk/OptionalObsoleteFiles.inc > +# instead of in this file. > +# > +# Before you commit changes to this file please check if any entries in > +# tools/build/mk/OptionalObsoleteFiles.inc can be removed. The following > +# command tells which files are listed more than once regardless of some > +# architecture specific conditionals, so you can not blindly trust the > +# output: > +# ( grep '+=3D' /usr/src/ObsoleteFiles.inc | sort -u ; \ > +# grep '+=3D' /usr/src/tools/build/mk/OptionalObsoleteFiles.inc | sort = -u) | \ > +# sort | uniq -d > +# > +# To find regular duplicates not dependent on optional components, you = can > +# also use something that will not give you false positives, e.g.: > +# for t in `make -V TARGETS universe`; do > +# __MAKE_CONF=3D/dev/null make -f Makefile.inc1 TARGET=3D$t \ > +# -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \ > +# xargs -n1 | sort | uniq -d; > +# done > +# > +# For optional components, you can use the following to see if some ent= ries > +# in OptionalObsoleteFiles.inc have been obsoleted by ObsoleteFiles.inc > +# for o in tools/build/options/WITH*; do > +# __MAKE_CONF=3D/dev/null make -f Makefile.inc1 -D${o##*/} \ > +# -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \ > +# xargs -n1 | sort | uniq -d; > +# done > + > ++# 20210619: new clang import which bumps version from 12.0.0 to 12.0.1. > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cuda_wrappers/algorithm > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cuda_wrappers/complex > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cuda_wrappers/new > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/cuda_wrappers > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/fuzzer/FuzzedDataProvider.h > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/fuzzer > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/__clang_openm= p_device_functions.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/cmath > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/complex > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/complex.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/complex_cmath= .h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/math.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers/new > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/openmp_wrappers > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/emmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/mm_malloc.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/mmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/pmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/smmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/tmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers/xmmintrin.h > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/ppc_wrappers > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/profile/InstrProfData.inc > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/profile > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/allocator_interface= .h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/asan_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/common_interface_de= fs.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/coverage_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/dfsan_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/hwasan_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/linux_syscall_hooks= .h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/lsan_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/msan_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/netbsd_syscall_hook= s.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/scudo_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/tsan_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/tsan_interface_atom= ic.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sanitizer/ubsan_interface.h > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/sanitizer > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xray/xray_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xray/xray_log_interface.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xray/xray_records.h > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include/xray > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_builtin_vars.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_cmath.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_complex_builtins= .h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_device_functions= .h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_intrinsics.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_libdevice_declar= es.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_math.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_math_forward_dec= lares.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_cuda_runtime_wrapper.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_hip_cmath.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_hip_libdevice_declare= s.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_hip_math.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__clang_hip_runtime_wrapper.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__stddef_max_align_t.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__wmmintrin_aes.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/__wmmintrin_pclmul.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/adxintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/altivec.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ammintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/amxintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm64intr.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_acle.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_bf16.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_cde.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_cmse.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_fp16.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_mve.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_neon.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/arm_sve.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/armintr.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx2intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512bf16intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512bitalgintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512bwintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512cdintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512dqintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512erintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512fintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512ifmaintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512ifmavlintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512pfintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vbmi2intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vbmiintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vbmivlintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlbf16intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlbitalgintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlbwintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlcdintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vldqintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlvbmi2intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlvnniintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vlvp2intersectintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vnniintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vp2intersectintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vpopcntdqintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avx512vpopcntdqvlintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avxintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/avxvnniintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/bmi2intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/bmiintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cet.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cetintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cldemoteintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/clflushoptintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/clwbintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/clzerointrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/cpuid.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/emmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/enqcmdintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/f16cintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/float.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/fma4intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/fmaintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/fxsrintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/gfniintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/hresetintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/htmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/htmxlintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ia32intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/immintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/inttypes.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/invpcidintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/iso646.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/keylockerintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/limits.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/lwpintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/lzcntintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/mm3dnow.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/mm_malloc.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/mmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/module.modulemap > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/movdirintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/msa.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/mwaitxintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/nmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/omp-tools.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/omp.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ompt.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/opencl-c-base.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/opencl-c.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/pconfigintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/pkuintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/pmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/popcntintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/prfchwintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/ptwriteintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/rdseedintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/rtmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/s390intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/serializeintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/sgxintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/shaintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/smmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stdalign.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stdarg.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stdatomic.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stdbool.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stddef.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stdint.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/stdnoreturn.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/tbmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/tgmath.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/tmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/tsxldtrkintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/uintrintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/unwind.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/vadefs.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/vaesintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/varargs.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/vecintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/vpclmulqdqintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/waitpkgintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/wasm_simd128.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/wbnoinvdintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/wmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/x86gprintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/x86intrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xmmintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xopintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xsavecintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xsaveintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xsaveoptintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xsavesintrin.h > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/include/xtestintrin.h > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/include > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-aarch64.= so > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-arm.so > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-armhf.so > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-i386.so > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-= aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-= arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-= armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-= i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-preinit-= x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan-x86_64.so > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-aarc= h64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-armh= f.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-i386= .a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_= 64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-aarc= h64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-armh= f.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-i386= .a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.cfi_diag-x86_= 64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.dd-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.dd-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer-aarch6= 4.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer-x86_64= .a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer_no_mai= n-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.fuzzer_no_mai= n-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan_cxx-aarc= h64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_= 64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-aarch= 64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-armhf= .a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-power= pc.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-power= pc64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-power= pc64le.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.profile-x86_6= 4.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.safestack-aar= ch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.safestack-i38= 6.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.safestack-x86= _64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-aarch64= .a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-= aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-= arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-= armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-= i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.stats_client-= x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan_cxx-aarc= h64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_= 64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal= -aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal= -arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal= -armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal= -i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_minimal= -x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one-i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-i386.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-aa= rch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-ar= m.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-ar= mhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-basic-x8= 6_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-aarc= h64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-armh= f.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-fdr-x86_= 64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profilin= g-aarch64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profilin= g-arm.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profilin= g-armhf.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-profilin= g-x86_64.a > ++OLD_FILES+=3Dusr/lib/clang/12.0.0/lib/freebsd/libclang_rt.xray-x86_64.a > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/lib/freebsd > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0/lib > ++OLD_DIRS+=3Dusr/lib/clang/12.0.0 > ++ > +# 20210616: Remove crypto_cursor_seg{base,len} > +OLD_FILES+=3Dusr/share/man/man9/crypto_cursor_segbase.9.gz > +OLD_FILES+=3Dusr/share/man/man9/crypto_cursor_seglen.9.gz > + > +# 20210618: rename of usr/share/certs/blacklisted > +OLD_FILES+=3Dusr/share/certs/blacklisted/AddTrust_External_Root.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/AddTrust_Low-Value_Services_Ro= ot.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Camerfirma_Chambers_of_Commerc= e_Root.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Camerfirma_Global_Chambersign_= Root.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Certum_Root_CA.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Chambers_of_Commerce_Root_-_20= 08.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/D-TRUST_Root_CA_3_2013.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/EC-ACC.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/EE_Certification_Centre_Root_C= A.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/GeoTrust_Global_CA.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/GeoTrust_Primary_Certification= _Authority_-_G2.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/GeoTrust_Primary_Certification= _Authority_-_G3.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/GeoTrust_Primary_Certification= _Authority.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/GeoTrust_Universal_CA_2.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/GeoTrust_Universal_CA.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Global_Chambersign_Root_-_2008= .pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/LuxTrust_Global_Root_2.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/OISTE_WISeKey_Global_Root_GA_C= A.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_= -_G2.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_= -_G3.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/SwissSign_Platinum_CA_-_G2.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Symantec_Class_1_Public_Primar= y_Certification_Authority_-_G4.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Symantec_Class_1_Public_Primar= y_Certification_Authority_-_G6.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Symantec_Class_2_Public_Primar= y_Certification_Authority_-_G4.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Symantec_Class_2_Public_Primar= y_Certification_Authority_-_G6.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Taiwan_GRCA.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G2.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/thawte_Primary_Root_CA_-_G3.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/thawte_Primary_Root_CA.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Trustis_FPS_Root_CA.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Verisign_Class_1_Public_Primar= y_Certification_Authority_-_G3.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Verisign_Class_2_Public_Primar= y_Certification_Authority_-_G3.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/Verisign_Class_3_Public_Primar= y_Certification_Authority_-_G3.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/VeriSign_Class_3_Public_Primar= y_Certification_Authority_-_G4.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/VeriSign_Class_3_Public_Primar= y_Certification_Authority_-_G5.pem > +OLD_FILES+=3Dusr/share/certs/blacklisted/VeriSign_Universal_Root_Certif= ication_Authority.pem > +OLD_DIRS+=3Dusr/share/certs/blacklisted > +# 20210613: new clang import which bumps version from 11.0.1 to 12.0.0. > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cuda_wrappers/algorithm > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cuda_wrappers/complex > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cuda_wrappers/new > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/cuda_wrappers > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/fuzzer/FuzzedDataProvider.h > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/fuzzer > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers/__clang_openm= p_device_functions.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers/cmath > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers/complex > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers/complex.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers/math.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers/new > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/openmp_wrappers > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/emmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/mm_malloc.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/mmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/pmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/smmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/tmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers/xmmintrin.h > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/ppc_wrappers > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/profile/InstrProfData.inc > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/profile > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/allocator_interface= .h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/asan_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/common_interface_de= fs.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/coverage_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/dfsan_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/hwasan_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/linux_syscall_hooks= .h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/lsan_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/msan_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/netbsd_syscall_hook= s.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/scudo_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/tsan_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/tsan_interface_atom= ic.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sanitizer/ubsan_interface.h > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/sanitizer > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xray/xray_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xray/xray_log_interface.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xray/xray_records.h > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include/xray > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_builtin_vars.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_cmath.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_complex_builtins= .h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_device_functions= .h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_intrinsics.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_libdevice_declar= es.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_math.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_math_forward_dec= lares.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_cuda_runtime_wrapper.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_hip_libdevice_declare= s.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_hip_math.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__clang_hip_runtime_wrapper.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__stddef_max_align_t.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__wmmintrin_aes.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/__wmmintrin_pclmul.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/adxintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/altivec.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ammintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/amxintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm64intr.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_acle.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_bf16.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_cde.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_cmse.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_fp16.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_mve.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_neon.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/arm_sve.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/armintr.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx2intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512bf16intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512bitalgintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512bwintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512cdintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512dqintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512erintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512fintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512ifmaintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512ifmavlintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512pfintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vbmi2intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vbmiintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vbmivlintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlbf16intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlbitalgintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlbwintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlcdintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vldqintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlvbmi2intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlvnniintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vlvp2intersectintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vnniintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vp2intersectintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vpopcntdqintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avx512vpopcntdqvlintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/avxintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/bmi2intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/bmiintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cet.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cetintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cldemoteintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/clflushoptintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/clwbintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/clzerointrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/cpuid.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/emmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/enqcmdintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/f16cintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/float.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/fma4intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/fmaintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/fxsrintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/gfniintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/htmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/htmxlintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ia32intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/immintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/inttypes.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/invpcidintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/iso646.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/limits.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/lwpintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/lzcntintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/mm3dnow.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/mm_malloc.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/mmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/module.modulemap > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/movdirintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/msa.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/mwaitxintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/nmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/omp-tools.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/omp.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ompt.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/opencl-c-base.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/opencl-c.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/pconfigintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/pkuintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/pmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/popcntintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/prfchwintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/ptwriteintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/rdseedintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/rtmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/s390intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/serializeintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/sgxintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/shaintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/smmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stdalign.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stdarg.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stdatomic.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stdbool.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stddef.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stdint.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/stdnoreturn.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/tbmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/tgmath.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/tmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/tsxldtrkintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/unwind.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/vadefs.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/vaesintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/varargs.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/vecintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/vpclmulqdqintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/waitpkgintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/wasm_simd128.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/wbnoinvdintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/wmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/x86intrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xmmintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xopintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xsavecintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xsaveintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xsaveoptintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xsavesintrin.h > +OLD_FILES+=3Dusr/lib/clang/11.0.1/include/xtestintrin.h > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/include > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-aarch64.= so > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-arm.so > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-armhf.so > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-i386.so > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-= aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-= arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-= armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-= i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-preinit-= x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan-x86_64.so > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-aarc= h64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-armh= f.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-i386= .a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_= 64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-aarc= h64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-armh= f.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-i386= .a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.cfi_diag-x86_= 64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.dd-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.dd-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer-aarch6= 4.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer-x86_64= .a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer_no_mai= n-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.fuzzer_no_mai= n-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan_cxx-aarc= h64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.msan_cxx-x86_= 64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-aarch= 64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-armhf= .a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-power= pc.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-power= pc64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-power= pc64le.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.profile-x86_6= 4.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.safestack-aar= ch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.safestack-i38= 6.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.safestack-x86= _64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-aarch64= .a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-= aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-= arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-= armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-= i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.stats_client-= x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan_cxx-aarc= h64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_= 64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal= -aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal= -arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal= -armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal= -i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_minimal= -x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one-i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-i386.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.ubsan_standal= one_cxx-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-aa= rch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-ar= m.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-ar= mhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-basic-x8= 6_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-aarc= h64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-armh= f.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-fdr-x86_= 64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profilin= g-aarch64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profilin= g-arm.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profilin= g-armhf.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-profilin= g-x86_64.a > +OLD_FILES+=3Dusr/lib/clang/11.0.1/lib/freebsd/libclang_rt.xray-x86_64.a > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/lib/freebsd > +OLD_DIRS+=3Dusr/lib/clang/11.0.1/lib > +OLD_DIRS+=3Dusr/lib/clang/11.0.1 > + > +# 20210613: Rename OpenZFS manual pages > +OLD_FILES+=3Dusr/share/man/man5/spl-module-parameters.5.gz > +OLD_FILES+=3Dusr/share/man/man5/zfs-events.5.gz > +OLD_FILES+=3Dusr/share/man/man5/zfs-module-parameters.5.gz > +OLD_FILES+=3Dusr/share/man/man8/zfsconcepts.8.gz > +OLD_FILES+=3Dusr/share/man/man8/zfsprops.8.gz > +OLD_FILES+=3Dusr/share/man/man5/zpool-features.5.gz > +OLD_FILES+=3Dusr/share/man/man8/zpoolconcepts.8.gz > +OLD_FILES+=3Dusr/share/man/man8/zpoolprops.8.gz > + > +# 20210611: Remove svn and svnlite > +OLD_FILES+=3Dusr/bin/svn > +OLD_FILES+=3Dusr/bin/svnadmin > +OLD_FILES+=3Dusr/bin/svnbench > +OLD_FILES+=3Dusr/bin/svndumpfilter > +OLD_FILES+=3Dusr/bin/svnfsfs > +OLD_FILES+=3Dusr/bin/svnlite > +OLD_FILES+=3Dusr/bin/svnliteadmin > +OLD_FILES+=3Dusr/bin/svnlitebench > +OLD_FILES+=3Dusr/bin/svnlitedumpfilter > +OLD_FILES+=3Dusr/bin/svnlitefsfs > +OLD_FILES+=3Dusr/bin/svnlitelook > +OLD_FILES+=3Dusr/bin/svnlitemucc > +OLD_FILES+=3Dusr/bin/svnliterdump > +OLD_FILES+=3Dusr/bin/svnliteserve > +OLD_FILES+=3Dusr/bin/svnlitesync > +OLD_FILES+=3Dusr/bin/svnliteversion > +OLD_FILES+=3Dusr/bin/svnlook > +OLD_FILES+=3Dusr/bin/svnmucc > +OLD_FILES+=3Dusr/bin/svnrdump > +OLD_FILES+=3Dusr/bin/svnserve > +OLD_FILES+=3Dusr/bin/svnsync > +OLD_FILES+=3Dusr/bin/svnversion > +OLD_FILES+=3Dusr/share/man/man1/svnlite.1.gz > + > +# 20210607: remove ancontrol(8) related programs > +OLD_FILES+=3Dusr/sbin/ancontrol > +OLD_FILES+=3Dusr/share/man/man8/ancontrol.8.gz > + > +# 20210607: remove an(4) > +OLD_FILES+=3Dusr/include/dev/an/if_aironet_ieee.h > +OLD_FILES+=3Dusr/include/dev/an/if_anreg.h > +OLD_FILES+=3Dusr/share/man/man4/an.4.gz > + > +# 20210426: remove unused libexec/rc.d/addswap > +OLD_FILES+=3Detc/rc.d/addswap > + > +# 20210413: Remove pfctlinput2 > +OLD_FILES+=3Dusr/share/man/man9/pfctlinput2.9.gz > + > +# 20210412: Remove kernel asymmetric crypto > +OLD_FILES+=3Dusr/share/man/man9/crypto_asym.9.gz > +OLD_FILES+=3Dusr/share/man/man9/crypto_kdispatch.9.gz > +OLD_FILES+=3Dusr/share/man/man9/crypto_kdone.9.gz > +OLD_FILES+=3Dusr/share/man/man9/crypto_kregister.9.gz > +OLD_FILES+=3Dusr/share/man/man9/CRYPTODEV_KPROCESS.9.gz > + > +# 20210410: remove unused libexec/rc.d/archdep > +OLD_FILES+=3Detc/rc.d/archdep > + > +# 20210408: remove tcp_hostcache.h > +OLD_FILES+=3Dusr/include/netinet/tcp_hostcache.h > + > +# 20210403: remove kgmon(8) > +OLD_FILES+=3Dusr/sbin/kgmon > +OLD_FILES+=3Dusr/share/man/man8/kgmon.8.gz > + > +# 20210401: remove bt(4) man page > +OLD_FILES+=3Dusr/share/man/man4/bt.4.gz > + > +# 20210322: retire mn(4) sync serial driver > +OLD_FILES+=3Dusr/share/man/man4/if_mn.4.gz > +OLD_FILES+=3Dusr/share/man/man4/mn.4.gz > + > +# 20210318: remove the terminfo database > +OLD_FILES+=3Dusr/share/terminfo/1/1178 > +OLD_FILES+=3Dusr/share/terminfo/1/1730-lm > +OLD_DIRS+=3Dusr/share/terminfo/1 > +OLD_FILES+=3Dusr/share/terminfo/2/2621 > +OLD_FILES+=3Dusr/share/terminfo/2/2621-wl > +OLD_FILES+=3Dusr/share/terminfo/2/2621A > +OLD_FILES+=3Dusr/share/terminfo/2/2621a > +OLD_DIRS+=3Dusr/share/terminfo/2/ > +OLD_FILES+=3Dusr/share/terminfo/3/386at > +OLD_FILES+=3Dusr/share/terminfo/3/3b1 > +OLD_DIRS+=3Dusr/share/terminfo/3/ > +OLD_FILES+=3Dusr/share/terminfo/4/4025ex > +OLD_FILES+=3Dusr/share/terminfo/4/4027ex > +OLD_FILES+=3Dusr/share/terminfo/4/4410-w > +OLD_DIRS+=3Dusr/share/terminfo/4/ > +OLD_FILES+=3Dusr/share/terminfo/5/5051 > +OLD_FILES+=3Dusr/share/terminfo/5/5410-w > +OLD_FILES+=3Dusr/share/terminfo/5/5620 > +OLD_FILES+=3Dusr/share/terminfo/5/5630-24 > +OLD_FILES+=3Dusr/share/terminfo/5/5630DMD-24 > +OLD_DIRS+=3Dusr/share/terminfo/5/ > +OLD_FILES+=3Dusr/share/terminfo/6/6053 > +OLD_FILES+=3Dusr/share/terminfo/6/6053-dg > +OLD_FILES+=3Dusr/share/terminfo/6/605x > +OLD_FILES+=3Dusr/share/terminfo/6/605x-dg > +OLD_FILES+=3Dusr/share/terminfo/6/630-lm > +OLD_FILES+=3Dusr/share/terminfo/6/630MTG-24 > +OLD_DIRS+=3Dusr/share/terminfo/6/ > +OLD_FILES+=3Dusr/share/terminfo/7/730MTG-24 > +OLD_FILES+=3Dusr/share/terminfo/7/730MTG-41 > +OLD_FILES+=3Dusr/share/terminfo/7/730MTG-41r > +OLD_FILES+=3Dusr/share/terminfo/7/730MTGr > +OLD_FILES+=3Dusr/share/terminfo/7/730MTGr-24 > +OLD_DIRS+=3Dusr/share/terminfo/7/ > +OLD_FILES+=3Dusr/share/terminfo/8/8510 > +OLD_DIRS+=3Dusr/share/terminfo/8/ > +OLD_FILES+=3Dusr/share/terminfo/9/955-hb > +OLD_FILES+=3Dusr/share/terminfo/9/955-w > +OLD_FILES+=3Dusr/share/terminfo/9/9term > +OLD_DIRS+=3Dusr/share/terminfo/9/ > +OLD_FILES+=3Dusr/share/terminfo/A/Apple_Terminal > +OLD_DIRS+=3Dusr/share/terminfo/A/ > +OLD_FILES+=3Dusr/share/terminfo/E/Eterm > +OLD_FILES+=3Dusr/share/terminfo/E/Eterm-256color > +OLD_FILES+=3Dusr/share/terminfo/E/Eterm-88color > +OLD_FILES+=3Dusr/share/terminfo/E/Eterm-color > +OLD_DIRS+=3Dusr/share/terminfo/E/ > +OLD_FILES+=3Dusr/share/terminfo/L/LFT-PC850 > +OLD_DIRS+=3Dusr/share/terminfo/L/ > +OLD_FILES+=3Dusr/share/terminfo/M/MtxOrb > +OLD_FILES+=3Dusr/share/terminfo/M/MtxOrb162 > +OLD_FILES+=3Dusr/share/terminfo/M/MtxOrb204 > +OLD_DIRS+=3Dusr/share/terminfo/M/ > +OLD_FILES+=3Dusr/share/terminfo/N/NCR260VT300WPP > +OLD_FILES+=3Dusr/share/terminfo/N/NCRVT100WPP > +OLD_DIRS+=3Dusr/share/terminfo/N/ > +OLD_FILES+=3Dusr/share/terminfo/P/P12 > +OLD_FILES+=3Dusr/share/terminfo/P/P12-M > +OLD_FILES+=3Dusr/share/terminfo/P/P12-M-W > +OLD_FILES+=3Dusr/share/terminfo/P/P12-W > +OLD_FILES+=3Dusr/share/terminfo/P/P14 > +OLD_FILES+=3Dusr/share/terminfo/P/P14-M > +OLD_FILES+=3Dusr/share/terminfo/P/P14-M-W > +OLD_FILES+=3Dusr/share/terminfo/P/P14-W > +OLD_FILES+=3Dusr/share/terminfo/P/P4 > +OLD_FILES+=3Dusr/share/terminfo/P/P5 > +OLD_FILES+=3Dusr/share/terminfo/P/P7 > +OLD_FILES+=3Dusr/share/terminfo/P/P8 > +OLD_FILES+=3Dusr/share/terminfo/P/P8-W > +OLD_FILES+=3Dusr/share/terminfo/P/P9 > +OLD_FILES+=3Dusr/share/terminfo/P/P9-8 > +OLD_FILES+=3Dusr/share/terminfo/P/P9-8-W > +OLD_FILES+=3Dusr/share/terminfo/P/P9-W > +OLD_DIRS+=3Dusr/share/terminfo/P/ > +OLD_FILES+=3Dusr/share/terminfo/Q/Q306-8-pc > +OLD_FILES+=3Dusr/share/terminfo/Q/Q310-vip-H > +OLD_FILES+=3Dusr/share/terminfo/Q/Q310-vip-H-am > +OLD_FILES+=3Dusr/share/terminfo/Q/Q310-vip-Hw > +OLD_FILES+=3Dusr/share/terminfo/Q/Q310-vip-w > +OLD_FILES+=3Dusr/share/terminfo/Q/Q310-vip-w-am > +OLD_DIRS+=3Dusr/share/terminfo/Q/ > +OLD_FILES+=3Dusr/share/terminfo/X/X-hpterm > +OLD_DIRS+=3Dusr/share/terminfo/X/ > +OLD_FILES+=3Dusr/share/terminfo/a/a210 > +OLD_FILES+=3Dusr/share/terminfo/a/a80 > +OLD_FILES+=3Dusr/share/terminfo/a/a980 > +OLD_FILES+=3Dusr/share/terminfo/a/aa4080 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa > +OLD_FILES+=3Dusr/share/terminfo/a/aaa+dec > +OLD_FILES+=3Dusr/share/terminfo/a/aaa+rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa+unk > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-18 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-18-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-20 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-22 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-24 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-24-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-26 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-28 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-rv-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-s > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-s-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-s-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-30-s-rv-ct > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-36 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-36-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-40 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-40-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-48 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-48-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-60 > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-60-dec-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-60-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-60-s > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-60-s-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-db > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-rv-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-rv-unk > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-s > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-s-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-s-rv > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-s-rv-ctxt > +OLD_FILES+=3Dusr/share/terminfo/a/aaa-unk > +OLD_FILES+=3Dusr/share/terminfo/a/aas1901 > +OLD_FILES+=3Dusr/share/terminfo/a/abm80 > +OLD_FILES+=3Dusr/share/terminfo/a/abm85 > +OLD_FILES+=3Dusr/share/terminfo/a/abm85e > +OLD_FILES+=3Dusr/share/terminfo/a/abm85h > +OLD_FILES+=3Dusr/share/terminfo/a/abm85h-old > +OLD_FILES+=3Dusr/share/terminfo/a/absolute > +OLD_FILES+=3Dusr/share/terminfo/a/act4 > +OLD_FILES+=3Dusr/share/terminfo/a/act5 > +OLD_FILES+=3Dusr/share/terminfo/a/addrinfo > +OLD_FILES+=3Dusr/share/terminfo/a/adds200 > +OLD_FILES+=3Dusr/share/terminfo/a/adds980 > +OLD_FILES+=3Dusr/share/terminfo/a/addsviewpoint > +OLD_FILES+=3Dusr/share/terminfo/a/addsvp60 > +OLD_FILES+=3Dusr/share/terminfo/a/adm+sgr > +OLD_FILES+=3Dusr/share/terminfo/a/adm1 > +OLD_FILES+=3Dusr/share/terminfo/a/adm11 > +OLD_FILES+=3Dusr/share/terminfo/a/adm1178 > +OLD_FILES+=3Dusr/share/terminfo/a/adm12 > +OLD_FILES+=3Dusr/share/terminfo/a/adm1a > +OLD_FILES+=3Dusr/share/terminfo/a/adm2 > +OLD_FILES+=3Dusr/share/terminfo/a/adm20 > +OLD_FILES+=3Dusr/share/terminfo/a/adm21 > +OLD_FILES+=3Dusr/share/terminfo/a/adm22 > +OLD_FILES+=3Dusr/share/terminfo/a/adm3 > +OLD_FILES+=3Dusr/share/terminfo/a/adm31 > +OLD_FILES+=3Dusr/share/terminfo/a/adm31-old > +OLD_FILES+=3Dusr/share/terminfo/a/adm36 > +OLD_FILES+=3Dusr/share/terminfo/a/adm3a > *** 27445 LINES SKIPPED *** > _______________________________________________ > dev-commits-src-main@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main > To unsubscribe, send any mail to "dev-commits-src-main-unsubscribe@freebs= d.org" running FreeBSD 14.0-CURRENT #13 main-n247423-7bd295750b1: Fri Jun 18 17:3= 2:58 CEST 2021 amd64, buildworld fails with the error /usr/src/contrib/llvm-project/clang/lib/Basic/SourceManager.cpp:1256:10: fa= tal error: 'emmintrin.h' file not found How can I fix this? Thanks in advance, oh --Sig_/w64OtYwhJx9jmBGmB17fiWB Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQSy8IBxAPDkqVBaTJ44N1ZZPba5RwUCYM9JaQAKCRA4N1ZZPba5 R8+yAP9zp4zZIX9V7+PYp3sIvDssW4P2X+wVUORZ9rZbyyPMRgEA5KwkoUG1SBlI 7bUIoLhJDHXwQmUj4HR7Xg5JA5OPPg8= =AYQO -----END PGP SIGNATURE----- --Sig_/w64OtYwhJx9jmBGmB17fiWB-- From owner-dev-commits-src-all@freebsd.org Sun Jun 20 16:18:31 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5CA2E65430A; Sun, 20 Jun 2021 16:18:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7Hry70H9z3qQ9; Sun, 20 Jun 2021 16:18:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1983A4C49; Sun, 20 Jun 2021 16:18:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KGINhc079741; Sun, 20 Jun 2021 16:18:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KGINOK079740; Sun, 20 Jun 2021 16:18:23 GMT (envelope-from git) Date: Sun, 20 Jun 2021 16:18:23 GMT Message-Id: <202106201618.15KGINOK079740@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mike Karels Subject: git: 13604fb0fd43 - main - genet: Fix potential crash during attach MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: karels X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 13604fb0fd43c85e6bb3a0ad6400a684f150bdea Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 16:18:31 -0000 The branch main has been updated by karels: URL: https://cgit.FreeBSD.org/src/commit/?id=13604fb0fd43c85e6bb3a0ad6400a684f150bdea commit 13604fb0fd43c85e6bb3a0ad6400a684f150bdea Author: Mike Karels AuthorDate: 2021-06-20 16:10:26 +0000 Commit: Mike Karels CommitDate: 2021-06-20 16:17:13 +0000 genet: Fix potential crash during attach As pointed out in the bug, the genet driver (RPi4 Ethernet) was attaching the interrupts before the data structures were fully initialized, causing a crash if an interrupt came in during the attach. Fix by reordering code blocks. PR: 256334 Reported by: < ghuckriede at blackberry.com > Reviewed by: < ghuckriede at blackberry.com > (informally) MFC after: 3 days --- sys/arm64/broadcom/genet/if_genet.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/sys/arm64/broadcom/genet/if_genet.c b/sys/arm64/broadcom/genet/if_genet.c index d0fe2b0d5e71..5d70c7075c3a 100644 --- a/sys/arm64/broadcom/genet/if_genet.c +++ b/sys/arm64/broadcom/genet/if_genet.c @@ -279,21 +279,6 @@ gen_attach(device_t dev) goto fail; } - /* Install interrupt handlers */ - error = bus_setup_intr(dev, sc->res[_RES_IRQ1], - INTR_TYPE_NET | INTR_MPSAFE, NULL, gen_intr, sc, &sc->ih); - if (error != 0) { - device_printf(dev, "cannot setup interrupt handler1\n"); - goto fail; - } - - error = bus_setup_intr(dev, sc->res[_RES_IRQ2], - INTR_TYPE_NET | INTR_MPSAFE, NULL, gen_intr2, sc, &sc->ih2); - if (error != 0) { - device_printf(dev, "cannot setup interrupt handler2\n"); - goto fail; - } - /* Setup ethernet interface */ sc->ifp = if_alloc(IFT_ETHER); if_setsoftc(sc->ifp, sc); @@ -310,6 +295,21 @@ gen_attach(device_t dev) IFCAP_HWCSUM_IPV6); if_setcapenable(sc->ifp, if_getcapabilities(sc->ifp)); + /* Install interrupt handlers */ + error = bus_setup_intr(dev, sc->res[_RES_IRQ1], + INTR_TYPE_NET | INTR_MPSAFE, NULL, gen_intr, sc, &sc->ih); + if (error != 0) { + device_printf(dev, "cannot setup interrupt handler1\n"); + goto fail; + } + + error = bus_setup_intr(dev, sc->res[_RES_IRQ2], + INTR_TYPE_NET | INTR_MPSAFE, NULL, gen_intr2, sc, &sc->ih2); + if (error != 0) { + device_printf(dev, "cannot setup interrupt handler2\n"); + goto fail; + } + /* Attach MII driver */ mii_flags = 0; switch (sc->phy_mode) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:03:00 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id DD7A365765E; Sun, 20 Jun 2021 19:03:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7MVr5jhsz4cmN; Sun, 20 Jun 2021 19:03:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AC3D26EFE; Sun, 20 Jun 2021 19:03:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KJ30vd007936; Sun, 20 Jun 2021 19:03:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KJ30fm007935; Sun, 20 Jun 2021 19:03:00 GMT (envelope-from git) Date: Sun, 20 Jun 2021 19:03:00 GMT Message-Id: <202106201903.15KJ30fm007935@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 7242b5c6d216 - stable/12 - stand: Fix __elfN(loadimage) return value MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 7242b5c6d2165f7c6141e5edc878f36f3ab43e40 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:03:00 -0000 The branch stable/12 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=7242b5c6d2165f7c6141e5edc878f36f3ab43e40 commit 7242b5c6d2165f7c6141e5edc878f36f3ab43e40 Author: Mark Johnston AuthorDate: 2021-06-06 20:40:25 +0000 Commit: Mark Johnston CommitDate: 2021-06-20 19:02:47 +0000 stand: Fix __elfN(loadimage) return value Caller functions expect __elfN(loadimage) to return a value of zero on failure and the file size on success. PR: 256390 Reviewed by: markj (cherry picked from commit 1ea87e2a70c31454a8696ab2979d13d21c5575d2) --- stand/common/load_elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/common/load_elf.c b/stand/common/load_elf.c index 7139dc8b7c32..e81bb49a93b5 100644 --- a/stand/common/load_elf.c +++ b/stand/common/load_elf.c @@ -875,7 +875,7 @@ nosyms: p_start = sym.st_value + ef->off; if (__elfN(lookup_symbol)(fp, ef, "__stop_set_modmetadata_set", &sym) != 0) - return ENOENT; + return 0; p_end = sym.st_value + ef->off; if (__elfN(parse_modmetadata)(fp, ef, p_start, p_end) == 0) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:03:05 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4A21C657B56; Sun, 20 Jun 2021 19:03:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7MVx0DWgz4d3Q; Sun, 20 Jun 2021 19:03:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E465A6D72; Sun, 20 Jun 2021 19:03:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KJ34tX008061; Sun, 20 Jun 2021 19:03:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KJ34cA008060; Sun, 20 Jun 2021 19:03:04 GMT (envelope-from git) Date: Sun, 20 Jun 2021 19:03:04 GMT Message-Id: <202106201903.15KJ34cA008060@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 765c6eb3953c - stable/13 - stand: Fix __elfN(loadimage) return value MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 765c6eb3953c0e9e95543bfb9e7352772ace030c Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:03:05 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=765c6eb3953c0e9e95543bfb9e7352772ace030c commit 765c6eb3953c0e9e95543bfb9e7352772ace030c Author: Mark Johnston AuthorDate: 2021-06-06 20:40:25 +0000 Commit: Mark Johnston CommitDate: 2021-06-20 19:00:54 +0000 stand: Fix __elfN(loadimage) return value Caller functions expect __elfN(loadimage) to return a value of zero on failure and the file size on success. PR: 256390 Reviewed by: markj (cherry picked from commit 1ea87e2a70c31454a8696ab2979d13d21c5575d2) --- stand/common/load_elf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/common/load_elf.c b/stand/common/load_elf.c index 8bb780ef34df..f1a9ff8e0c22 100644 --- a/stand/common/load_elf.c +++ b/stand/common/load_elf.c @@ -893,7 +893,7 @@ nosyms: p_start = sym.st_value + ef->off; if (__elfN(lookup_symbol)(ef, "__stop_set_modmetadata_set", &sym, STT_NOTYPE) != 0) - return ENOENT; + return 0; p_end = sym.st_value + ef->off; if (__elfN(parse_modmetadata)(fp, ef, p_start, p_end) == 0) From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:11:20 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 62599657E91; Sun, 20 Jun 2021 19:11:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7MhS2Fskz4dHf; Sun, 20 Jun 2021 19:11:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 361F07396; Sun, 20 Jun 2021 19:11:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KJBKeR017665; Sun, 20 Jun 2021 19:11:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KJBKXY017664; Sun, 20 Jun 2021 19:11:20 GMT (envelope-from git) Date: Sun, 20 Jun 2021 19:11:20 GMT Message-Id: <202106201911.15KJBKXY017664@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 5fb914cdc18a - stable/11 - cpucontrol: fix extended signature matching code to avoid fallthough MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 5fb914cdc18acf9070002af69832973a6472f7ac Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:11:20 -0000 The branch stable/11 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=5fb914cdc18acf9070002af69832973a6472f7ac commit 5fb914cdc18acf9070002af69832973a6472f7ac Author: Dan Nelson AuthorDate: 2021-06-14 19:28:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-20 19:11:18 +0000 cpucontrol: fix extended signature matching code to avoid fallthough PR: 256502 (cherry picked from commit 87799c5f85dc0aed7e53ca841504e3b2ffc88498) --- usr.sbin/cpucontrol/intel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/cpucontrol/intel.c b/usr.sbin/cpucontrol/intel.c index 8ad1908bd386..e9c9c6ab6f12 100644 --- a/usr.sbin/cpucontrol/intel.c +++ b/usr.sbin/cpucontrol/intel.c @@ -262,8 +262,8 @@ no_table: (flags & ext_table[i].cpu_flags) != 0) goto matched; } - } else - goto fail; + } + goto fail; matched: if (revision >= fw_header->revision) { From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:11:24 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2907F657AB8; Sun, 20 Jun 2021 19:11:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7MhX0XsBz4d75; Sun, 20 Jun 2021 19:11:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EA89C71BF; Sun, 20 Jun 2021 19:11:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KJBN40017786; Sun, 20 Jun 2021 19:11:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KJBNrL017785; Sun, 20 Jun 2021 19:11:23 GMT (envelope-from git) Date: Sun, 20 Jun 2021 19:11:23 GMT Message-Id: <202106201911.15KJBNrL017785@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: d8d0df35b353 - stable/12 - cpucontrol: fix extended signature matching code to avoid fallthough MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: d8d0df35b353f9f0ae507d40b699a689a06ac252 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:11:24 -0000 The branch stable/12 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d8d0df35b353f9f0ae507d40b699a689a06ac252 commit d8d0df35b353f9f0ae507d40b699a689a06ac252 Author: Dan Nelson AuthorDate: 2021-06-14 19:28:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-20 19:10:28 +0000 cpucontrol: fix extended signature matching code to avoid fallthough PR: 256502 (cherry picked from commit 87799c5f85dc0aed7e53ca841504e3b2ffc88498) --- usr.sbin/cpucontrol/intel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/cpucontrol/intel.c b/usr.sbin/cpucontrol/intel.c index dfe86f7185c6..f4700898d5eb 100644 --- a/usr.sbin/cpucontrol/intel.c +++ b/usr.sbin/cpucontrol/intel.c @@ -242,8 +242,8 @@ no_table: (flags & ext_table[i].cpu_flags) != 0) goto matched; } - } else - goto fail; + } + goto fail; matched: if (revision >= fw_header->revision) { From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:11:34 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8AEE9657EB0; Sun, 20 Jun 2021 19:11:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7Mhk3V7mz4dJ3; Sun, 20 Jun 2021 19:11:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5FD837231; Sun, 20 Jun 2021 19:11:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 15KJBYiF017919; Sun, 20 Jun 2021 19:11:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 15KJBYAj017918; Sun, 20 Jun 2021 19:11:34 GMT (envelope-from git) Date: Sun, 20 Jun 2021 19:11:34 GMT Message-Id: <202106201911.15KJBYAj017918@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 659f77766031 - stable/13 - cpucontrol: fix extended signature matching code to avoid fallthough MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 659f77766031145ff2af2fc56da210cfbb6d249f Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:11:34 -0000 The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=659f77766031145ff2af2fc56da210cfbb6d249f commit 659f77766031145ff2af2fc56da210cfbb6d249f Author: Dan Nelson AuthorDate: 2021-06-14 19:28:16 +0000 Commit: Mark Johnston CommitDate: 2021-06-20 19:10:21 +0000 cpucontrol: fix extended signature matching code to avoid fallthough PR: 256502 (cherry picked from commit 87799c5f85dc0aed7e53ca841504e3b2ffc88498) --- usr.sbin/cpucontrol/intel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/cpucontrol/intel.c b/usr.sbin/cpucontrol/intel.c index dfe86f7185c6..f4700898d5eb 100644 --- a/usr.sbin/cpucontrol/intel.c +++ b/usr.sbin/cpucontrol/intel.c @@ -242,8 +242,8 @@ no_table: (flags & ext_table[i].cpu_flags) != 0) goto matched; } - } else - goto fail; + } + goto fail; matched: if (revision >= fw_header->revision) { From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:46:48 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AA5E46585F8; Sun, 20 Jun 2021 19:46:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7NTN4NMyz4gLq; Sun, 20 Jun 2021 19:46:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [87.251.56.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "tensor.andric.com", Issuer "R3" (verified OK)) (Authenticated sender: dim) by smtp.freebsd.org (Postfix) with ESMTPSA id 59590262E2; Sun, 20 Jun 2021 19:46:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtpclient.apple (unknown [IPv6:2001:470:7a58:0:1417:3c1a:7c92:9a4a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 5D42549409; Sun, 20 Jun 2021 21:46:46 +0200 (CEST) From: Dimitry Andric Message-Id: <2A6DC940-653A-4B96-8103-DC3DE3F134AD@FreeBSD.org> Content-Type: multipart/signed; boundary="Apple-Mail=_2DFF35CE-9881-4F29-B7B2-1C564A557904"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.100.0.2.22\)) Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Date: Sun, 20 Jun 2021 21:46:32 +0200 In-Reply-To: Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org To: Dmitry Chagin References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> X-Mailer: Apple Mail (2.3654.100.0.2.22) X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:46:48 -0000 --Apple-Mail=_2DFF35CE-9881-4F29-B7B2-1C564A557904 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 20 Jun 2021, at 14:49, Dmitry Chagin wrote: >=20 > On Sat, Jun 19, 2021 at 06:11:04PM +0000, Dimitry Andric wrote: >> The branch main has been updated by dim: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D23408297fbf3089f0388a8873b02fa75= ab3f5bb9 >>=20 >> commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 >> Merge: cac129e60300 e4bbddaec868 >> Author: Dimitry Andric >> AuthorDate: 2021-06-19 10:06:00 +0000 >> Commit: Dimitry Andric >> CommitDate: 2021-06-19 18:09:28 +0000 >>=20 >> Merge llvm-project 12.0.1 rc2 >>=20 >> This updates llvm, clang, compiler-rt, libc++, libunwind, lld, = lldb and >> openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. >>=20 >> PR: 255570 >> MFC after: 6 weeks >>=20 > hi! with 11 clang kernel build time is about 60 sec, with 12.0.0 and > 12.0.1 rc2 build time increased to 500 sec. Did you previously have llvm/clang assertions turned off (via MK_LLVM_ASSERTIONS=3Dno)? I did a few measurements of "make -j32 buildkernel", on main-n247475-9d1cafb3049, with clang 11.0.1 and clang 12.0.1 (both with assertions turned off, and statically linked: clang 11.0.1 (n=3D5): real user sys 138.65 3145.23 285.25 129.00 3240.73 290.61 126.38 3244.03 284.76 128.90 3250.95 268.71 136.42 3250.73 267.93 clang 12.0.1 (n=3D5): real user sys 129.16 3306.13 291.84 128.18 3308.14 284.32 128.77 3301.35 281.90 141.37 3293.22 282.20 129.93 3304.08 284.47 $ ministat -A clang1101-real.txt clang1201-real.txt x clang1101-real.txt + clang1201-real.txt N Min Max Median Avg = Stddev x 5 126.38 138.65 129 131.87 = 5.3354662 + 5 128.18 141.37 129.16 131.482 = 5.5639707 No difference proven at 95.0% confidence $ ministat -A clang1101-user.txt clang1201-user.txt x clang1101-user.txt + clang1201-user.txt N Min Max Median Avg = Stddev x 5 3145.23 3250.95 3244.03 3226.334 = 45.550423 + 5 3293.22 3308.14 3304.08 3302.584 = 5.8070759 Difference at 95.0% confidence 76.25 +/- 47.3552 2.36336% +/- 1.50191% (Student's t, pooled s =3D 32.4697) Before I merged 12.0.1, I did the same sort of measurement, but for "make -j32 buildworld buildkernel" (with CROSS_TOOLCHAIN set so the bootstrap compiler isn't built), and this showed roughly similar results: $ ministat -A clang1101-real.txt clang1200-real.txt x clang1101-real.txt + clang1200-real.txt N Min Max Median Avg = Stddev x 5 1410.24 1461.04 1434.2 1435.296 = 18.210247 + 5 1461.54 1499.69 1462.07 1469.976 = 16.667199 Difference at 95.0% confidence 34.68 +/- 25.4583 2.41623% +/- 1.79718% (Student's t, pooled s =3D 17.4558) $ ministat -A clang1101-user.txt clang1200-user.txt x clang1101-user.txt + clang1200-user.txt N Min Max Median Avg = Stddev x 5 37495.09 37913.2 37750.64 37750.734 = 165.00886 + 5 38133.12 38396.77 38390.77 38324.132 = 113.63363 Difference at 95.0% confidence 573.398 +/- 206.617 1.51891% +/- 0.552972% (Student's t, pooled s =3D 141.67) So basically ~2% slower. It's would be a little tricky to find out if there is any particular upstream commit that might be responsible, as the difference is so small. I think I'll also compare the performance with assertions enabled, and MK_SHARED_TOOLCHAIN=3Dyes, which should be worse than the above, but = still comparable between 11.0 and 12.0. -Dimitry --Apple-Mail=_2DFF35CE-9881-4F29-B7B2-1C564A557904 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCYM+bGAAKCRCwXqMKLiCW owb9AJ9ZMH0vbbpWf99kjyKqBk+F/m0jDQCg8n9AFM9ADGmFuTXkFR7Bamrc7Dw= =yc3r -----END PGP SIGNATURE----- --Apple-Mail=_2DFF35CE-9881-4F29-B7B2-1C564A557904-- From owner-dev-commits-src-all@freebsd.org Sun Jun 20 19:56:50 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 595FA658758; Sun, 20 Jun 2021 19:56:50 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7Nhy1nqVz4gwV; Sun, 20 Jun 2021 19:56:50 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [IPv6:2001:470:7a58:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "tensor.andric.com", Issuer "R3" (verified OK)) (Authenticated sender: dim) by smtp.freebsd.org (Postfix) with ESMTPSA id 0D5AA262E7; Sun, 20 Jun 2021 19:56:50 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtpclient.apple (unknown [IPv6:2001:470:7a58:0:1417:3c1a:7c92:9a4a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 5B1714940B; Sun, 20 Jun 2021 21:56:47 +0200 (CEST) From: Dimitry Andric Message-Id: <3960850F-E446-45F1-A79B-F31D832F20BA@FreeBSD.org> Content-Type: multipart/signed; boundary="Apple-Mail=_D336F0B1-F92E-4668-B6A9-122532DAF209"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.100.0.2.22\)) Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Date: Sun, 20 Jun 2021 21:56:40 +0200 In-Reply-To: <20210620155800.236bb4b8@hermann.fritz.box> Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: "Hartmann, O." References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> <20210620155800.236bb4b8@hermann.fritz.box> X-Mailer: Apple Mail (2.3654.100.0.2.22) X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 19:56:50 -0000 --Apple-Mail=_D336F0B1-F92E-4668-B6A9-122532DAF209 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 20 Jun 2021, at 15:58, Hartmann, O. wrote: >=20 > On Sat, 19 Jun 2021 18:11:04 GMT > Dimitry Andric wrote: >=20 >> The branch main has been updated by dim: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D23408297fbf3089f0388a8873b02fa75= ab3f5bb9 >>=20 >> commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 >> Merge: cac129e60300 e4bbddaec868 >> Author: Dimitry Andric >> AuthorDate: 2021-06-19 10:06:00 +0000 >> Commit: Dimitry Andric >> CommitDate: 2021-06-19 18:09:28 +0000 >>=20 >> Merge llvm-project 12.0.1 rc2 >>=20 >> This updates llvm, clang, compiler-rt, libc++, libunwind, lld, = lldb and >> openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. ... > running FreeBSD 14.0-CURRENT #13 main-n247423-7bd295750b1: Fri Jun 18 = 17:32:58 CEST 2021 > amd64, buildworld fails with the error >=20 > = /usr/src/contrib/llvm-project/clang/lib/Basic/SourceManager.cpp:1256:10: = fatal error: > 'emmintrin.h' file not found >=20 > How can I fix this? I have never been able to figure out why some people encounter this, except that they seem to have manually deleted files from their base system, thereby effectively destroying their toolchain. Normally these intrinsics headers are in /usr/lib/clang/X.Y.Z/include, and you have to explicity rm -rf this directory to make them disappear. Or maybe, if you install the base system via pkg, you can uninstall the toolchain package? In both cases, you'll have to find a backup of that directory, and restore it. Or reinstall it from the installation media. With pkg-base, you might be able to reinstall the toolchain package (if it exists). -Dimitry --Apple-Mail=_D336F0B1-F92E-4668-B6A9-122532DAF209 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCYM+deAAKCRCwXqMKLiCW o2alAKDCsyqePviQCXUtwfGQbpftaqzHYQCfWKV7UG9Yeud7kcPi7c1Io68Gwbw= =CjzI -----END PGP SIGNATURE----- --Apple-Mail=_D336F0B1-F92E-4668-B6A9-122532DAF209-- From owner-dev-commits-src-all@freebsd.org Sun Jun 20 20:55:03 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9ACD4659BBE; Sun, 20 Jun 2021 20:55:03 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7Q072BK3z4lPg; Sun, 20 Jun 2021 20:55:02 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1624222501; bh=zuxEC41yImuGY+rQHwMMA8Evc3aUu1SHHQTaeiIkJok=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=PSUMzMUjyLmlbB7CeuvqqKnpSqWSl5tOXk0GTYoaGxlzWvgVVqZ4lQLbbtB3zXPg7 5HDrO6IX7SnQkqftg8T0FMcBzQL2s+8vBMdDZiEQ0DBwU+DjUawUeFQrody0Iasq/6 Q5wVxNFNLgWwjRG9RTxKg44U9CFQa5mMPZ3A6l5o= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from hermann.fritz.box ([78.55.226.148]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N3se2-1lCyI90ARk-00zn44; Sun, 20 Jun 2021 22:55:01 +0200 Date: Sun, 20 Jun 2021 22:53:50 +0200 From: "Hartmann, O." To: Dimitry Andric Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Message-ID: <20210620225350.06d559a8@hermann.fritz.box> In-Reply-To: <3960850F-E446-45F1-A79B-F31D832F20BA@FreeBSD.org> References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> <20210620155800.236bb4b8@hermann.fritz.box> <3960850F-E446-45F1-A79B-F31D832F20BA@FreeBSD.org> Organization: walstatt.org MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/T.8cBIoLbtVCh5/H4xqFwKF"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:FIgrgEzDAUKHtwIXNoKPNH2j2OoIQtuojygqg2mgQn8OlYMRcIj INNZ5Fe/ZGeG9aUO4p5KEOjwwZ37xGGAheLz2uLyeP7kG/11MhIizPy+MIFxlA9ufVyu9Lm 9KyEr4arwkzyKcCqqi2MhZ64YuRXO0OH+6E04xo8kUyj8ZxH9XFu20Ij/GON1A5cX/2R906 p6fVfwDLbvqcEcB8vTnVw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:LQcbVkzHvd4=:biQhgewRA/E80W0BgR0ygB INOs/Lbp8jLyNI3jTpVLcPkM1mOiFsZIC6mQKaZjs+2MM1JIGNOl51SS8KkyQxsuCqHCFo9w1 pGpDFlzmgadsLlIWMyghjS/d7WKy4SjSOl2GO4GJpjO3knr+2OK2HtB5DEqjsb6+BWwZskibc Zik93A1T9Cn3VoJcAc0YtP3vp8ngdC6Re3AnWf4v+OxpI3xPdIIcnA98ioHSGZgnLZ+FdEsKl bi2Uwwt6ihH6twwlBoS/4zOzYdPq95OCEbT+Ghecu2j8/W8v1mzyJp9+6tTrRmvKBvoUYx7Bk 5U/P9YLAcRhR7DqWt25dG3tfl0hCC6xBwNe3fRSCW05JK+8o2GRkOXZ30Z0o1rzeVADYys5PR maIRdux7lmBB2gg0kUcY0f6pwtWIFJodNjiObme3VExQ92wquXNyrOKTO3e5BAqswcW7DBh4J DbZokZsUDAeLx7H0OQLS5baZ4jDI7C21tPZVXMCGojEVIHLU6ZK+3Jp2iLqKTUdBWohb+Cpz5 5Kj6G0nq5kjul6RLpopHUSPmCIfoR96Ym15sx1Wc21bbf/vBhkJ/kxLXL2v0cnCVBafAQJthI 6tpANSsf3iEmTURT8HcY5usGXNwzJW2u3n/3laTcV1AO45VllzaJqc10ABlkxhznHrbQbQFS9 DRtKO212gc1duHQdlNRfwGQrb7e0XdATDQmje6FXnHZahYDB4BHk3bNbgsr4/VAZ5j20/QAt4 feofU2R/lZYDSXtzZFUjmhWViXG7OOu1KaTEjgdD8hRZCvEdK+HCU7jO+T+WKf6TnAQJyqBAj 55sS5nU8e9g9J7Gwk8DzZ14XDZhpfogUJkUYPK1GI+Z5rFeCGI5w8U2nfyBURas47XrnEq1Wa tud0qeuZRZhlr2mAJgq39BTBmn4asKrh4LmUfmBXyXV7tmrs5iacSD82+qH9WRSFKTR04gde7 iz10eupKmFJKl/oHUM6QOG5L4GDLfSZxLb8QUG0fy2Upp7GVD3rym3/O9H2fOS8KjRH8vptD8 0MqaG4u158ambFRTH6oxO9tfLu1PaPEU5COUSSLw3VobFRXXMKbJZ/VbFoFAo7scdyBiwAwAF IQ56/RDi5cuzpWh4pI4JfGP0foiOj1eUHH50YpohzCF4xhVeKtqHfnUyA== X-Rspamd-Queue-Id: 4G7Q072BK3z4lPg X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 20:55:03 -0000 --Sig_/T.8cBIoLbtVCh5/H4xqFwKF Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Sun, 20 Jun 2021 21:56:40 +0200 Dimitry Andric wrote: > On 20 Jun 2021, at 15:58, Hartmann, O. wrote: > >=20 > > On Sat, 19 Jun 2021 18:11:04 GMT > > Dimitry Andric wrote: > > =20 > >> The branch main has been updated by dim: > >>=20 > >> URL: https://cgit.FreeBSD.org/src/commit/?id=3D23408297fbf3089f0388a88= 73b02fa75ab3f5bb9 > >>=20 > >> commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 > >> Merge: cac129e60300 e4bbddaec868 > >> Author: Dimitry Andric > >> AuthorDate: 2021-06-19 10:06:00 +0000 > >> Commit: Dimitry Andric > >> CommitDate: 2021-06-19 18:09:28 +0000 > >>=20 > >> Merge llvm-project 12.0.1 rc2 > >>=20 > >> This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb= and > >> openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. =20 > ... > > running FreeBSD 14.0-CURRENT #13 main-n247423-7bd295750b1: Fri Jun 18 = 17:32:58 CEST > > 2021 amd64, buildworld fails with the error > >=20 > > /usr/src/contrib/llvm-project/clang/lib/Basic/SourceManager.cpp:1256:10= : fatal error: > > 'emmintrin.h' file not found > >=20 > > How can I fix this? =20 >=20 > I have never been able to figure out why some people encounter this, > except that they seem to have manually deleted files from their base > system, thereby effectively destroying their toolchain. I think in my case it is very simple - first of all: thanks for the explana= tion, the folder "/usr/lib/clang/" is empty and that is the result of "make delete-ol= d". The running system as shown above has llvm 12.0.0 and I forgot to run "make= delete-old" days ago when FreeBSD 14-CURRENT moved towards 12.0.0. Obviously, there was= anlther move towards 12.0.1 today or yesterday, I pulled the sources and did a rebuild o= f the whole system - and issued then make delete-old. That renders the system unusabel.= Desperate and not with the full understanding what happened before your mail, I also made= a "make cleanworld" to "rebuild/rescue" the system - with the result reported here.= Havoc. >=20 > Normally these intrinsics headers are in /usr/lib/clang/X.Y.Z/include, > and you have to explicity rm -rf this directory to make them disappear. > Or maybe, if you install the base system via pkg, you can uninstall the > toolchain package? >=20 > In both cases, you'll have to find a backup of that directory, and > restore it. Or reinstall it from the installation media. With pkg-base, > you might be able to reinstall the toolchain package (if it exists). I have neither of that handy (data only, not the system). oh >=20 > -Dimitry >=20 --Sig_/T.8cBIoLbtVCh5/H4xqFwKF Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQSy8IBxAPDkqVBaTJ44N1ZZPba5RwUCYM+q3gAKCRA4N1ZZPba5 R4e0AP41+Buklip0/qb+DDJwkzNJ8O2oz/Zzw9VSg7QCekskLQD/f6ccATBWmG1w Al9hO/Q3tlA5MT2KcHRXJiAEf5vlfgE= =KF4a -----END PGP SIGNATURE----- --Sig_/T.8cBIoLbtVCh5/H4xqFwKF-- From owner-dev-commits-src-all@freebsd.org Sun Jun 20 21:07:55 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 657E065A198; Sun, 20 Jun 2021 21:07:55 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7QGz23nQz4spn; Sun, 20 Jun 2021 21:07:55 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [87.251.56.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "tensor.andric.com", Issuer "R3" (verified OK)) (Authenticated sender: dim) by smtp.freebsd.org (Postfix) with ESMTPSA id 1106026E4F; Sun, 20 Jun 2021 21:07:55 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtpclient.apple (unknown [IPv6:2001:470:7a58:0:1417:3c1a:7c92:9a4a]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 8415649516; Sun, 20 Jun 2021 23:07:53 +0200 (CEST) From: Dimitry Andric Message-Id: <4980855F-B22C-46C8-B833-D3D0AC664B81@FreeBSD.org> Content-Type: multipart/signed; boundary="Apple-Mail=_4CC23B8B-4695-4B88-A958-22814A2403FD"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.100.0.2.22\)) Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Date: Sun, 20 Jun 2021 23:07:41 +0200 In-Reply-To: <20210620225350.06d559a8@hermann.fritz.box> Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" To: "Hartmann, O." References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> <20210620155800.236bb4b8@hermann.fritz.box> <3960850F-E446-45F1-A79B-F31D832F20BA@FreeBSD.org> <20210620225350.06d559a8@hermann.fritz.box> X-Mailer: Apple Mail (2.3654.100.0.2.22) X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 21:07:55 -0000 --Apple-Mail=_4CC23B8B-4695-4B88-A958-22814A2403FD Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 20 Jun 2021, at 22:53, Hartmann, O. wrote: >=20 > On Sun, 20 Jun 2021 21:56:40 +0200 > Dimitry Andric wrote: >=20 >> On 20 Jun 2021, at 15:58, Hartmann, O. = wrote: >>>=20 >>> On Sat, 19 Jun 2021 18:11:04 GMT >>> Dimitry Andric wrote: >>>=20 >>>> The branch main has been updated by dim: >>>>=20 >>>> URL: = https://cgit.FreeBSD.org/src/commit/?id=3D23408297fbf3089f0388a8873b02fa75= ab3f5bb9 >>>>=20 >>>> commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 >>>> Merge: cac129e60300 e4bbddaec868 >>>> Author: Dimitry Andric >>>> AuthorDate: 2021-06-19 10:06:00 +0000 >>>> Commit: Dimitry Andric >>>> CommitDate: 2021-06-19 18:09:28 +0000 >>>>=20 >>>> Merge llvm-project 12.0.1 rc2 >>>>=20 >>>> This updates llvm, clang, compiler-rt, libc++, libunwind, lld, = lldb and >>>> openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. >> ... >>> running FreeBSD 14.0-CURRENT #13 main-n247423-7bd295750b1: Fri Jun = 18 17:32:58 CEST >>> 2021 amd64, buildworld fails with the error >>>=20 >>> = /usr/src/contrib/llvm-project/clang/lib/Basic/SourceManager.cpp:1256:10: = fatal error: >>> 'emmintrin.h' file not found >>>=20 >>> How can I fix this? >>=20 >> I have never been able to figure out why some people encounter this, >> except that they seem to have manually deleted files from their base >> system, thereby effectively destroying their toolchain. >=20 > I think in my case it is very simple - first of all: thanks for the = explanation, the > folder "/usr/lib/clang/" is empty and that is the result of "make = delete-old". >=20 > The running system as shown above has llvm 12.0.0 and I forgot to run = "make delete-old" > days ago when FreeBSD 14-CURRENT moved towards 12.0.0. Obviously, = there was anlther move > towards 12.0.1 today or yesterday, I pulled the sources and did a = rebuild of the whole > system - and issued then make delete-old. That renders the system = unusabel. Ah yes, at least it is now clear that was the problem. Always run "make delete-old" *after* installworld, etcupdate and so on, as the very last step. Or even better, run "make check-old" and use the list of files and directories it outputs, so you can optionally make a backup of those first. I can remember instances of ports not starting up anymore, because they were still linked to some old system library that had been cleaned up... -Dimitry --Apple-Mail=_4CC23B8B-4695-4B88-A958-22814A2403FD Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCYM+uHQAKCRCwXqMKLiCW o05uAKCtIbhTogyyf1JCAbvKhfIlmrbvFACdGWK2qbSNI9MWb/xRuRYqTkBLfFQ= =32gh -----END PGP SIGNATURE----- --Apple-Mail=_4CC23B8B-4695-4B88-A958-22814A2403FD-- From owner-dev-commits-src-all@freebsd.org Sun Jun 20 21:18:13 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B771665A06A; Sun, 20 Jun 2021 21:18:13 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4G7QVr6z72z4tv0; Sun, 20 Jun 2021 21:18:12 +0000 (UTC) (envelope-from o.hartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1624223885; bh=AIKS6KdqGeoFgNtTz9+PRDbeTnzh1UJvbmRY/twYF68=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=ZvgqvbFMmWLIALcwtaK18GoDsPb29h2fe2DeexI0Uo0RKvhfcZ5plE/uQFAR1+kBG GQC1OC7J6PWsNsvwLYlfF8QLYULkOigufzkyiHpMRfNA1pb8En3eu5vDCn97RYBSvQ hJJd4xm1UxH+VpFDj1eefCNfQtvCFPb8Rd0MJVnA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from hermann.fritz.box ([78.55.226.148]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MpUUm-1lVbNp10ma-00pvNd; Sun, 20 Jun 2021 23:18:05 +0200 Date: Sun, 20 Jun 2021 23:18:04 +0200 From: "Hartmann, O." To: Dimitry Andric Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Subject: Re: git: 23408297fbf3 - main - Merge llvm-project 12.0.1 rc2 Message-ID: <20210620231804.3fdb719f@hermann.fritz.box> In-Reply-To: <4980855F-B22C-46C8-B833-D3D0AC664B81@FreeBSD.org> References: <202106191811.15JIB4nu002236@gitrepo.freebsd.org> <20210620155800.236bb4b8@hermann.fritz.box> <3960850F-E446-45F1-A79B-F31D832F20BA@FreeBSD.org> <20210620225350.06d559a8@hermann.fritz.box> <4980855F-B22C-46C8-B833-D3D0AC664B81@FreeBSD.org> Organization: walstatt.org MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/+uXGWkKkimjxlZLAOnXHS2R"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Provags-ID: V03:K1:yycQg62i9M12nV5C8GbwWGTfIrD/qTKmqNy3BcULUsS77o1dacX KUpy2Z7MR4voyWcoSHQ9/RdPvMmz7Zs9S7qKADu3W0FQPe0nt0PT4QHofM9A0OKOJyn6VX2 r5myLwk32/5Wu4hbHtf3uCfp8bbHfi4qgjNDFdcftD0HYw+fAIkcnSYTIQGkUXQmVOI62Mg WoaZYKiLTdcThNe62vFeg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:pS2iQepjt30=:hXq4N4PxiO65duKwnAswEH 2dBvpA88cGYVfy9Dgz40DVD/TQg23U8hC020/t19QAcRovTr3CfNDg5tl+n/38iVz8t8y4UlN Yw/KqyxoYAVg6egYo5edxj60ZJNupPXNFItFjN+k2d9GE6id4aZfucLPkG5G34w0LGeMN8UOs QAFumFmmqEuIFFBCfAp9FMB2+bsPyynCDscgIv3hfOWKJOlOtTrT5PUUaUHIgzxAoHDdIFj+z bPofPocMc8MbrcH6ylD23HS4Aw/BE+oCyL7BX1oya4lwlIZ5SpQdm6EQfL3WMFmEP5VHAyHOB jJogpUVu/taRfBdgkN5XLVlfbixUblVPZ2nuev1thZtVSyWSHYABoNhN5I68tN86fQN8fJ5w8 fR0fP2fHscG+f86bUAAGK7k2nG9sm1rU9HioRm3/xq2oQNFb300saBlilxjr4Fi5E8+K9iZ3k VC2SOl284DGf9/MstwL7HO0jB1wpAGP5LAsclSpnuCVh3tnZH+caprICgyZLUztk8N33bYM53 gTLAcuD4sAlMoupMuoRlgu3dEW0UpOZg0HzhLApP3/JfqpkIFcILsNbK1JHBbXHnIDQaL+lYW ZTW4+vfCo8XDh3WONlE68/u4B2QtRmAXbvCnzTL4tanh9phfbKTTWrhyc+6sOvrlWSSRJqjPO ryE/Fmjhh6sBBO0nc/qwKsS/T3xuH6LyqeeUipPCI5eDnv6N/8ioFr+V/OkpaBhOZx4M3Bpbm aTILLsGq/HY3ZgbyqRelxTjM7aat2EkhfmL12sRXCCljfq2HSPyZnX2wwSxY/RQy6rMs4YCPs S/Hqcy3IrHxyP+TIPxjvLOpCP7V4u91YI3ZGcSEhXrqclcyT77Uf0HrjgLFZSi63d2rTHFnVB Xpdc3Npi+40MHIRsHjT37Hdcrbj7Hdb/FpavWt94bhmDVZayhREFHHP5ymHjThB8ryqXWTcHi wYYWLGxkysqdPbgwANP4PpLrnRdoANkzT2iRw19VCav2nfctqPX9KFzwLyYkUvjqVRgybvBYy ES34P4QdXjp4zj8tx3RiAtQogco4ZD40sKsuB1VLJSvO0AdIO1RVBN4uzG9LUdX1oJAONf5+s 851oiAaFUeO6BZ8D9IisSfl3tFkbk05iQdPN/FwS0HfRIWjbcklzuPxZw== X-Rspamd-Queue-Id: 4G7QVr6z72z4tv0 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Jun 2021 21:18:13 -0000 --Sig_/+uXGWkKkimjxlZLAOnXHS2R Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Sun, 20 Jun 2021 23:07:41 +0200 Dimitry Andric wrote: > On 20 Jun 2021, at 22:53, Hartmann, O. wrote: > >=20 > > On Sun, 20 Jun 2021 21:56:40 +0200 > > Dimitry Andric wrote: > > =20 > >> On 20 Jun 2021, at 15:58, Hartmann, O. wrote= : =20 > >>>=20 > >>> On Sat, 19 Jun 2021 18:11:04 GMT > >>> Dimitry Andric wrote: > >>> =20 > >>>> The branch main has been updated by dim: > >>>>=20 > >>>> URL: > >>>> https://cgit.FreeBSD.org/src/commit/?id=3D23408297fbf3089f0388a8873b= 02fa75ab3f5bb9 > >>>>=20 > >>>> commit 23408297fbf3089f0388a8873b02fa75ab3f5bb9 > >>>> Merge: cac129e60300 e4bbddaec868 > >>>> Author: Dimitry Andric > >>>> AuthorDate: 2021-06-19 10:06:00 +0000 > >>>> Commit: Dimitry Andric > >>>> CommitDate: 2021-06-19 18:09:28 +0000 > >>>>=20 > >>>> Merge llvm-project 12.0.1 rc2 > >>>>=20 > >>>> This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lld= b and > >>>> openmp to llvmorg-12.0.1-rc2-0-ge7dac564cd0e, a.k.a. 12.0.1 rc2. = =20 > >> ... =20 > >>> running FreeBSD 14.0-CURRENT #13 main-n247423-7bd295750b1: Fri Jun 1= 8 17:32:58 CEST > >>> 2021 amd64, buildworld fails with the error > >>>=20 > >>> /usr/src/contrib/llvm-project/clang/lib/Basic/SourceManager.cpp:1256:= 10: fatal > >>> error: 'emmintrin.h' file not found > >>>=20 > >>> How can I fix this? =20 > >>=20 > >> I have never been able to figure out why some people encounter this, > >> except that they seem to have manually deleted files from their base > >> system, thereby effectively destroying their toolchain. =20 > >=20 > > I think in my case it is very simple - first of all: thanks for the exp= lanation, the > > folder "/usr/lib/clang/" is empty and that is the result of "make delet= e-old". > >=20 > > The running system as shown above has llvm 12.0.0 and I forgot to run "= make > > delete-old" days ago when FreeBSD 14-CURRENT moved towards 12.0.0. Obvi= ously, there > > was anlther move towards 12.0.1 today or yesterday, I pulled the source= s and did a > > rebuild of the whole system - and issued then make delete-old. That ren= ders the > > system unusabel. =20 >=20 > Ah yes, at least it is now clear that was the problem. Always run > "make delete-old" *after* installworld, etcupdate and so on, as the very > last step. >=20 > Or even better, run "make check-old" and use the list of files and > directories it outputs, so you can optionally make a backup of those > first. I can remember instances of ports not starting up anymore, > because they were still linked to some old system library that had been > cleaned up... >=20 > -Dimitry >=20 Now I try to find in which package the content of /usr/lib/clang might resi= de in one of the pkg-base tarballs one could find here: https://alpha.pkgbase.live/current/FreeBSD:14:amd64/latest/ to extract the part missing in the hope I can fire up buildworld again. I tried the usual suspects like those packages with "lib" or "compiler" in = the name, without success :-( Kind regards, oh --Sig_/+uXGWkKkimjxlZLAOnXHS2R Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQSy8IBxAPDkqVBaTJ44N1ZZPba5RwUCYM+wjAAKCRA4N1ZZPba5 RyRgAQCDSUWleayTwlk4ioNEt4NgpMc/tf264l/+mo6Jug5W/wD9ECwm5WU2vpi7 rYYhv9+WJX2+J9ag52CFCSJeXBJv4go= =+weq -----END PGP SIGNATURE----- --Sig_/+uXGWkKkimjxlZLAOnXHS2R--