From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:09: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 1DE2D672F57; Mon, 4 Oct 2021 01:09: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 4HN2gC04drz4sPT; Mon, 4 Oct 2021 01:09: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 D28A17E57; Mon, 4 Oct 2021 01:09: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 19419QHs094452; Mon, 4 Oct 2021 01:09:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19419Qwd094451; Mon, 4 Oct 2021 01:09:26 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:09:26 GMT Message-Id: <202110040109.19419Qwd094451@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: fe830ad79a74 - stable/13 - mge(4): Mark sysctls and callout MP-safe. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fe830ad79a74b8b64584c5a43427a2932e46ef52 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, 04 Oct 2021 01:09:27 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=fe830ad79a74b8b64584c5a43427a2932e46ef52 commit fe830ad79a74b8b64584c5a43427a2932e46ef52 Author: Alexander Motin AuthorDate: 2021-09-03 16:13:56 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:09:24 +0000 mge(4): Mark sysctls and callout MP-safe. MFC after: 1 month (cherry picked from commit 6b2ff27cb952048527ba13023a8354112fe1d410) --- sys/dev/mge/if_mge.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/mge/if_mge.c b/sys/dev/mge/if_mge.c index 16deb330c06c..c43163afe3a7 100644 --- a/sys/dev/mge/if_mge.c +++ b/sys/dev/mge/if_mge.c @@ -883,7 +883,7 @@ mge_attach(device_t dev) mge_get_mac_address(sc, hwaddr); ether_ifattach(ifp, hwaddr); - callout_init(&sc->wd_callout, 0); + callout_init(&sc->wd_callout, 1); /* Attach PHY(s) */ if (sc->phy_attached) { @@ -2147,10 +2147,10 @@ mge_add_sysctls(struct mge_softc *sc) children = SYSCTL_CHILDREN(tree); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rx_time", - CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, MGE_IC_RX, + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, MGE_IC_RX, mge_sysctl_ic, "I", "IC RX time threshold"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "tx_time", - CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, MGE_IC_TX, + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, MGE_IC_TX, mge_sysctl_ic, "I", "IC TX time threshold"); } From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:10: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 A95D5672B65; Mon, 4 Oct 2021 01:10: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 4HN2gw4S52z4sCp; Mon, 4 Oct 2021 01:10: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 6E90A1059D; Mon, 4 Oct 2021 01:10: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 1941A4DK096732; Mon, 4 Oct 2021 01:10:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941A4Pu096729; Mon, 4 Oct 2021 01:10:04 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:10:04 GMT Message-Id: <202110040110.1941A4Pu096729@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: d2f4b7bc1c78 - stable/13 - bxe(4): Mark sysctls and callout MP-safe. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d2f4b7bc1c78872e1f6df0f61b52713866c3ef99 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, 04 Oct 2021 01:10:04 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=d2f4b7bc1c78872e1f6df0f61b52713866c3ef99 commit d2f4b7bc1c78872e1f6df0f61b52713866c3ef99 Author: Alexander Motin AuthorDate: 2021-09-03 16:25:32 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:10:02 +0000 bxe(4): Mark sysctls and callout MP-safe. MFC after: 1 month (cherry picked from commit 4081c895e5ce28d3b0e672055271c8d7cc31cc1f) --- sys/dev/bxe/bxe.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c index bf6904b26b55..920a5a9bcbcb 100644 --- a/sys/dev/bxe/bxe.c +++ b/sys/dev/bxe/bxe.c @@ -16088,19 +16088,19 @@ bxe_add_sysctls(struct bxe_softc *sc) "rx processing budget"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "pause_param", - CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0, bxe_sysctl_pauseparam, "IU", "need pause frames- DEF:0/TX:1/RX:2/BOTH:3/AUTO:4/AUTOTX:5/AUTORX:6/AUTORXTX:7/NONE:8"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "state", - CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0, bxe_sysctl_state, "IU", "dump driver state"); for (i = 0; i < BXE_NUM_ETH_STATS; i++) { SYSCTL_ADD_PROC(ctx, children, OID_AUTO, bxe_eth_stats_arr[i].string, - CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, i, + CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, i, bxe_sysctl_eth_stat, "LU", bxe_eth_stats_arr[i].string); } @@ -16120,7 +16120,7 @@ bxe_add_sysctls(struct bxe_softc *sc) q_stat = ((i << 16) | j); SYSCTL_ADD_PROC(ctx, queue_children, OID_AUTO, bxe_eth_q_stats_arr[j].string, - CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, q_stat, + CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, q_stat, bxe_sysctl_eth_q_stat, "LU", bxe_eth_q_stats_arr[j].string); } } @@ -16245,7 +16245,7 @@ bxe_attach(device_t dev) bxe_init_mutexes(sc); /* prepare the periodic callout */ - callout_init(&sc->periodic_callout, 0); + callout_init(&sc->periodic_callout, 1); /* prepare the chip taskqueue */ sc->chip_tq_flags = CHIP_TQ_NONE; From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:10: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 C9500673224; Mon, 4 Oct 2021 01:10: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 4HN2hj5N6Rz4s2n; Mon, 4 Oct 2021 01:10:45 +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 9858A1035C; Mon, 4 Oct 2021 01:10: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 1941AjmJ003055; Mon, 4 Oct 2021 01:10:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941Ajqp003054; Mon, 4 Oct 2021 01:10:45 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:10:45 GMT Message-Id: <202110040110.1941Ajqp003054@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 50570c64798d - stable/13 - bnxt(4): Mark sysctls MP-safe. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 50570c64798da79ce59abb86dcc38bf910128bbc 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, 04 Oct 2021 01:10:45 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=50570c64798da79ce59abb86dcc38bf910128bbc commit 50570c64798da79ce59abb86dcc38bf910128bbc Author: Alexander Motin AuthorDate: 2021-09-03 17:51:08 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:10:43 +0000 bnxt(4): Mark sysctls MP-safe. MFC after: 1 month (cherry picked from commit 9895a2073f98be927041f5a73d0d3ff5e8844bfb) --- sys/dev/bnxt/bnxt_sysctl.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/sys/dev/bnxt/bnxt_sysctl.c b/sys/dev/bnxt/bnxt_sysctl.c index 49147ae9926e..ef624d487953 100644 --- a/sys/dev/bnxt/bnxt_sysctl.c +++ b/sys/dev/bnxt/bnxt_sysctl.c @@ -861,11 +861,11 @@ bnxt_create_ver_sysctls(struct bnxt_softc *softc) bnxt_chip_type[MAX_CHIP_TYPE] : bnxt_chip_type[vi->chip_type], 0, "RoCE firmware name"); SYSCTL_ADD_PROC(&vi->ver_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "package_ver", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, + "package_ver", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE, softc, 0, bnxt_package_ver_sysctl, "A", "currently installed package version"); SYSCTL_ADD_PROC(&vi->ver_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "hwrm_min_ver", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, + "hwrm_min_ver", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_hwrm_min_ver_sysctl, "A", "minimum hwrm API vesion to support"); @@ -1205,47 +1205,47 @@ bnxt_create_config_sysctls_pre(struct bnxt_softc *softc) children = SYSCTL_CHILDREN(device_get_sysctl_tree(softc->dev)); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rss_key", - CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_rss_key_sysctl, "A", "RSS key"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rss_type", - CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_rss_type_sysctl, "A", "RSS type bits"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "rx_stall", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_rx_stall_sysctl, "I", "buffer rx packets in hardware until the host posts new buffers"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "vlan_strip", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_vlan_strip_sysctl, "I", "strip VLAN tag in the RX path"); SYSCTL_ADD_STRING(ctx, children, OID_AUTO, "if_name", CTLFLAG_RD, iflib_get_ifp(softc->ctx)->if_xname, 0, "interface name"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_rx_usecs", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_rx_usecs, "I", "interrupt coalescing Rx Usecs"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_rx_frames", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_rx_frames, "I", "interrupt coalescing Rx Frames"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_rx_usecs_irq", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_rx_usecs_irq, "I", "interrupt coalescing Rx Usecs IRQ"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_rx_frames_irq", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_rx_frames_irq, "I", "interrupt coalescing Rx Frames IRQ"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_tx_usecs", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_tx_usecs, "I", "interrupt coalescing Tx Usces"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_tx_frames", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_tx_frames, "I", "interrupt coalescing Tx Frames"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_tx_usecs_irq", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_tx_usecs_irq, "I", "interrupt coalescing Tx Usecs IRQ"); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "intr_coal_tx_frames_irq", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_set_coal_tx_frames_irq, "I", "interrupt coalescing Tx Frames IRQ"); @@ -1322,15 +1322,15 @@ bnxt_create_pause_fc_sysctls(struct bnxt_softc *softc) return ENOMEM; SYSCTL_ADD_PROC(&softc->flow_ctrl_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "tx", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + "tx", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_flow_ctrl_tx, "A", "Enable or Disable Tx Flow Ctrl: 0 / 1"); SYSCTL_ADD_PROC(&softc->flow_ctrl_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "rx", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + "rx", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_flow_ctrl_rx, "A", "Enable or Disable Tx Flow Ctrl: 0 / 1"); SYSCTL_ADD_PROC(&softc->flow_ctrl_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "autoneg", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, + "autoneg", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_flow_ctrl_autoneg, "A", "Enable or Disable Autoneg Flow Ctrl: 0 / 1"); @@ -1346,29 +1346,29 @@ bnxt_create_hw_lro_sysctls(struct bnxt_softc *softc) return ENOMEM; SYSCTL_ADD_PROC(&softc->hw_lro_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "enable", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, + "enable", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_hw_lro_enable_disable, "A", "Enable or Disable HW LRO: 0 / 1"); SYSCTL_ADD_PROC(&softc->hw_lro_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "gro_mode", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, + "gro_mode", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_hw_lro_set_mode, "A", "Set mode: 1 = GRO mode, 0 = RSC mode"); SYSCTL_ADD_PROC(&softc->hw_lro_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "max_agg_segs", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, + "max_agg_segs", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_hw_lro_set_max_agg_segs, "A", "Set Max Agg Seg Value (unit is Log2): " "0 (= 1 seg) / 1 (= 2 segs) / ... / 31 (= 2^31 segs)"); SYSCTL_ADD_PROC(&softc->hw_lro_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "max_aggs", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, + "max_aggs", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_hw_lro_set_max_aggs, "A", "Set Max Aggs Value (unit is Log2): " "0 (= 1 agg) / 1 (= 2 aggs) / ... / 7 (= 2^7 segs)"); SYSCTL_ADD_PROC(&softc->hw_lro_ctx, SYSCTL_CHILDREN(oid), OID_AUTO, - "min_agg_len", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, + "min_agg_len", CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_hw_lro_set_min_agg_len, "A", "Min Agg Len: 1 to 9000"); @@ -1410,7 +1410,7 @@ bnxt_create_config_sysctls_post(struct bnxt_softc *softc) children = SYSCTL_CHILDREN(device_get_sysctl_tree(softc->dev)); SYSCTL_ADD_PROC(ctx, children, OID_AUTO, "vlan_only", - CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, softc, 0, + CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE, softc, 0, bnxt_vlan_only_sysctl, "I", "require vlan tag on received packets when vlan is enabled"); From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:12: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 E2F6B67323D; Mon, 4 Oct 2021 01:12: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 4HN2k860Gyz4shQ; Mon, 4 Oct 2021 01:12: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 AEF8C10730; Mon, 4 Oct 2021 01:12: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 1941C0j9007246; Mon, 4 Oct 2021 01:12:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941C0KG007245; Mon, 4 Oct 2021 01:12:00 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:12:00 GMT Message-Id: <202110040112.1941C0KG007245@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 03d748e92447 - stable/13 - vt(4): Mark callouts MP-safe. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 03d748e9244708b33c822b30422c0c3b5319640e 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, 04 Oct 2021 01:12:01 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=03d748e9244708b33c822b30422c0c3b5319640e commit 03d748e9244708b33c822b30422c0c3b5319640e Author: Alexander Motin AuthorDate: 2021-09-03 19:42:46 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:11:59 +0000 vt(4): Mark callouts MP-safe. The code explicitly takes Giant when it accesses keyboard, and I see no reason to take it globally by callout(9). MFC after: 1 month (cherry picked from commit da69c6752674e29eb5d8f82161ca7bc6d1866051) --- sys/dev/vt/vt_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c index e4a8288962c4..d4baa65f06c9 100644 --- a/sys/dev/vt/vt_core.c +++ b/sys/dev/vt/vt_core.c @@ -2890,7 +2890,7 @@ vt_allocate_window(struct vt_device *vd, unsigned int window) terminal_set_winsize(tm, &wsz); vd->vd_windows[window] = vw; - callout_init(&vw->vw_proc_dead_timer, 0); + callout_init(&vw->vw_proc_dead_timer, 1); return (vw); } @@ -2914,7 +2914,7 @@ vt_upgrade(struct vt_device *vd) vw = vt_allocate_window(vd, i); } if (!(vw->vw_flags & VWF_READY)) { - callout_init(&vw->vw_proc_dead_timer, 0); + callout_init(&vw->vw_proc_dead_timer, 1); terminal_maketty(vw->vw_terminal, "v%r", VT_UNIT(vw)); vw->vw_flags |= VWF_READY; if (vw->vw_flags & VWF_CONSOLE) { From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:13: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 BF644673258; Mon, 4 Oct 2021 01:13: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 4HN2lp531Rz4tDX; Mon, 4 Oct 2021 01:13: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 8A6CA1091A; Mon, 4 Oct 2021 01:13: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 1941DQBW007451; Mon, 4 Oct 2021 01:13:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941DQ9K007450; Mon, 4 Oct 2021 01:13:26 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:13:26 GMT Message-Id: <202110040113.1941DQ9K007450@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 36e67f5badbd - stable/13 - pcib(4): Switch from callout to timeout_task. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 36e67f5badbd834ff7ea2cf039e003d3aac3efc3 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, 04 Oct 2021 01:13:26 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=36e67f5badbd834ff7ea2cf039e003d3aac3efc3 commit 36e67f5badbd834ff7ea2cf039e003d3aac3efc3 Author: Alexander Motin AuthorDate: 2021-09-03 19:00:21 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:13:24 +0000 pcib(4): Switch from callout to timeout_task. This allows to avoid blocking on Giant in callout context, moving to already existing dedicated taskqueue_pci_hp thread. MFC after: 1 month (cherry picked from commit fa3b03d378546b74582613431bab537d3488d81f) --- sys/dev/pci/pci_pci.c | 77 ++++++++++++++++++++++++---------------------- sys/dev/pci/pcib_private.h | 9 +++--- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c index 33e277ed01ae..2b86f2f50e11 100644 --- a/sys/dev/pci/pci_pci.c +++ b/sys/dev/pci/pci_pci.c @@ -77,9 +77,9 @@ static int pcib_ari_enabled(device_t pcib); static void pcib_ari_decode_rid(device_t pcib, uint16_t rid, int *bus, int *slot, int *func); #ifdef PCI_HP -static void pcib_pcie_ab_timeout(void *arg); -static void pcib_pcie_cc_timeout(void *arg); -static void pcib_pcie_dll_timeout(void *arg); +static void pcib_pcie_ab_timeout(void *arg, int pending); +static void pcib_pcie_cc_timeout(void *arg, int pending); +static void pcib_pcie_dll_timeout(void *arg, int pending); #endif static int pcib_request_feature_default(device_t pcib, device_t dev, enum pci_feature feature); @@ -1027,8 +1027,8 @@ pcib_pcie_hotplug_command(struct pcib_softc *sc, uint16_t val, uint16_t mask) (ctl & new) & PCIEM_SLOT_CTL_CCIE) { sc->flags |= PCIB_HOTPLUG_CMD_PENDING; if (!cold) - callout_reset(&sc->pcie_cc_timer, hz, - pcib_pcie_cc_timeout, sc); + taskqueue_enqueue_timeout(taskqueue_pci_hp, + &sc->pcie_cc_task, hz); } } @@ -1043,7 +1043,7 @@ pcib_pcie_hotplug_command_completed(struct pcib_softc *sc) device_printf(dev, "Command Completed\n"); if (!(sc->flags & PCIB_HOTPLUG_CMD_PENDING)) return; - callout_stop(&sc->pcie_cc_timer); + taskqueue_cancel_timeout(taskqueue_pci_hp, &sc->pcie_cc_task, NULL); sc->flags &= ~PCIB_HOTPLUG_CMD_PENDING; wakeup(sc); } @@ -1156,10 +1156,11 @@ pcib_pcie_hotplug_update(struct pcib_softc *sc, uint16_t val, uint16_t mask, device_printf(sc->dev, "Data Link Layer inactive\n"); else - callout_reset(&sc->pcie_dll_timer, hz, - pcib_pcie_dll_timeout, sc); + taskqueue_enqueue_timeout(taskqueue_pci_hp, + &sc->pcie_dll_task, hz); } else if (sc->pcie_link_sta & PCIEM_LINK_STA_DL_ACTIVE) - callout_stop(&sc->pcie_dll_timer); + taskqueue_cancel_timeout(taskqueue_pci_hp, &sc->pcie_dll_task, + NULL); pcib_pcie_hotplug_command(sc, val, mask); @@ -1198,14 +1199,15 @@ pcib_pcie_intr_hotplug(void *arg) device_printf(dev, "Attention Button Pressed: Detach Cancelled\n"); sc->flags &= ~PCIB_DETACH_PENDING; - callout_stop(&sc->pcie_ab_timer); + taskqueue_cancel_timeout(taskqueue_pci_hp, + &sc->pcie_ab_task, NULL); } else if (old_slot_sta & PCIEM_SLOT_STA_PDS) { /* Only initiate detach sequence if device present. */ device_printf(dev, "Attention Button Pressed: Detaching in 5 seconds\n"); sc->flags |= PCIB_DETACH_PENDING; - callout_reset(&sc->pcie_ab_timer, 5 * hz, - pcib_pcie_ab_timeout, sc); + taskqueue_enqueue_timeout(taskqueue_pci_hp, + &sc->pcie_ab_task, 5 * hz); } } if (sc->pcie_slot_sta & PCIEM_SLOT_STA_PFD) @@ -1257,29 +1259,27 @@ pcib_pcie_hotplug_task(void *context, int pending) } static void -pcib_pcie_ab_timeout(void *arg) +pcib_pcie_ab_timeout(void *arg, int pending) { - struct pcib_softc *sc; + struct pcib_softc *sc = arg; - sc = arg; - PCIB_HP_LOCK_ASSERT(sc); + PCIB_HP_LOCK(sc); if (sc->flags & PCIB_DETACH_PENDING) { sc->flags |= PCIB_DETACHING; sc->flags &= ~PCIB_DETACH_PENDING; pcib_pcie_hotplug_update(sc, 0, 0, true); } + PCIB_HP_UNLOCK(sc); } static void -pcib_pcie_cc_timeout(void *arg) +pcib_pcie_cc_timeout(void *arg, int pending) { - struct pcib_softc *sc; - device_t dev; + struct pcib_softc *sc = arg; + device_t dev = sc->dev; uint16_t sta; - sc = arg; - dev = sc->dev; - PCIB_HP_LOCK_ASSERT(sc); + PCIB_HP_LOCK(sc); sta = pcie_read_config(dev, PCIER_SLOT_STA, 2); if (!(sta & PCIEM_SLOT_STA_CC)) { device_printf(dev, "HotPlug Command Timed Out\n"); @@ -1289,18 +1289,17 @@ pcib_pcie_cc_timeout(void *arg) "Missed HotPlug interrupt waiting for Command Completion\n"); pcib_pcie_intr_hotplug(sc); } + PCIB_HP_UNLOCK(sc); } static void -pcib_pcie_dll_timeout(void *arg) +pcib_pcie_dll_timeout(void *arg, int pending) { - struct pcib_softc *sc; - device_t dev; + struct pcib_softc *sc = arg; + device_t dev = sc->dev; uint16_t sta; - sc = arg; - dev = sc->dev; - PCIB_HP_LOCK_ASSERT(sc); + PCIB_HP_LOCK(sc); sta = pcie_read_config(dev, PCIER_LINK_STA, 2); if (!(sta & PCIEM_LINK_STA_DL_ACTIVE)) { device_printf(dev, @@ -1312,6 +1311,7 @@ pcib_pcie_dll_timeout(void *arg) "Missed HotPlug interrupt waiting for DLL Active\n"); pcib_pcie_intr_hotplug(sc); } + PCIB_HP_UNLOCK(sc); } static int @@ -1390,10 +1390,13 @@ pcib_setup_hotplug(struct pcib_softc *sc) uint16_t mask, val; dev = sc->dev; - callout_init(&sc->pcie_ab_timer, 0); - callout_init(&sc->pcie_cc_timer, 0); - callout_init(&sc->pcie_dll_timer, 0); TASK_INIT(&sc->pcie_hp_task, 0, pcib_pcie_hotplug_task, sc); + TIMEOUT_TASK_INIT(taskqueue_pci_hp, &sc->pcie_ab_task, 0, + pcib_pcie_ab_timeout, sc); + TIMEOUT_TASK_INIT(taskqueue_pci_hp, &sc->pcie_cc_task, 0, + pcib_pcie_cc_timeout, sc); + TIMEOUT_TASK_INIT(taskqueue_pci_hp, &sc->pcie_dll_task, 0, + pcib_pcie_dll_timeout, sc); sc->pcie_hp_lock = &Giant; /* Allocate IRQ. */ @@ -1438,12 +1441,14 @@ pcib_detach_hotplug(struct pcib_softc *sc) /* Disable the card in the slot and force it to detach. */ if (sc->flags & PCIB_DETACH_PENDING) { sc->flags &= ~PCIB_DETACH_PENDING; - callout_stop(&sc->pcie_ab_timer); + taskqueue_cancel_timeout(taskqueue_pci_hp, &sc->pcie_ab_task, + NULL); } sc->flags |= PCIB_DETACHING; if (sc->flags & PCIB_HOTPLUG_CMD_PENDING) { - callout_stop(&sc->pcie_cc_timer); + taskqueue_cancel_timeout(taskqueue_pci_hp, &sc->pcie_cc_task, + NULL); tsleep(sc, 0, "hpcmd", hz); sc->flags &= ~PCIB_HOTPLUG_CMD_PENDING; } @@ -1466,9 +1471,9 @@ pcib_detach_hotplug(struct pcib_softc *sc) if (error) return (error); taskqueue_drain(taskqueue_pci_hp, &sc->pcie_hp_task); - callout_drain(&sc->pcie_ab_timer); - callout_drain(&sc->pcie_cc_timer); - callout_drain(&sc->pcie_dll_timer); + taskqueue_drain_timeout(taskqueue_pci_hp, &sc->pcie_ab_task); + taskqueue_drain_timeout(taskqueue_pci_hp, &sc->pcie_cc_task); + taskqueue_drain_timeout(taskqueue_pci_hp, &sc->pcie_dll_task); return (0); } #endif diff --git a/sys/dev/pci/pcib_private.h b/sys/dev/pci/pcib_private.h index 8be7b2123174..af0b70a7add3 100644 --- a/sys/dev/pci/pcib_private.h +++ b/sys/dev/pci/pcib_private.h @@ -35,8 +35,7 @@ #ifndef __PCIB_PRIVATE_H__ #define __PCIB_PRIVATE_H__ -#include -#include +#include #ifdef NEW_PCIB /* @@ -138,9 +137,9 @@ struct pcib_softc struct resource *pcie_irq; void *pcie_ihand; struct task pcie_hp_task; - struct callout pcie_ab_timer; - struct callout pcie_cc_timer; - struct callout pcie_dll_timer; + struct timeout_task pcie_ab_task; + struct timeout_task pcie_cc_task; + struct timeout_task pcie_dll_task; struct mtx *pcie_hp_lock; }; From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:14: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 A7CB16734B6; Mon, 4 Oct 2021 01:14: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 4HN2n04Ny4z4t6n; Mon, 4 Oct 2021 01:14: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 774C810996; Mon, 4 Oct 2021 01:14: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 1941ESVv007642; Mon, 4 Oct 2021 01:14:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941ESCS007641; Mon, 4 Oct 2021 01:14:28 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:14:28 GMT Message-Id: <202110040114.1941ESCS007641@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: b7fde5e82bd5 - stable/13 - ioat(4): Remove Giant from ioat_test enable/disable. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b7fde5e82bd54242d4f8c1801ab6487711e7532b 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, 04 Oct 2021 01:14:28 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=b7fde5e82bd54242d4f8c1801ab6487711e7532b commit b7fde5e82bd54242d4f8c1801ab6487711e7532b Author: Alexander Motin AuthorDate: 2021-09-04 19:53:28 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:14:25 +0000 ioat(4): Remove Giant from ioat_test enable/disable. MFC after: 1 month (cherry picked from commit 71bf3900b7827643830dfd9aa1db81bc2926eadb) --- sys/dev/ioat/ioat.c | 25 +++++++++++++++++++++++-- sys/dev/ioat/ioat_test.c | 26 ++++++++++++-------------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/sys/dev/ioat/ioat.c b/sys/dev/ioat/ioat.c index 45a6c273822d..2badfedb7488 100644 --- a/sys/dev/ioat/ioat.c +++ b/sys/dev/ioat/ioat.c @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #define BUS_SPACE_MAXADDR_46BIT MIN(BUS_SPACE_MAXADDR, 0x3FFFFFFFFFFFULL) #endif +static int ioat_modevent(module_t mod, int type, void *data); static int ioat_probe(device_t device); static int ioat_attach(device_t device); static int ioat_detach(device_t device); @@ -147,7 +148,7 @@ static driver_t ioat_pci_driver = { }; static devclass_t ioat_devclass; -DRIVER_MODULE(ioat, pci, ioat_pci_driver, ioat_devclass, 0, 0); +DRIVER_MODULE(ioat, pci, ioat_pci_driver, ioat_devclass, ioat_modevent, NULL); MODULE_VERSION(ioat, 1); /* @@ -248,6 +249,27 @@ MODULE_PNP_INFO("W32:vendor/device;D:#", pci, ioat, pci_ids, /* * OS <-> Driver linkage functions */ +static int +ioat_modevent(module_t mod __unused, int type, void *data __unused) +{ + switch(type) { + case MOD_LOAD: + break; + + case MOD_UNLOAD: + ioat_test_detach(); + break; + + case MOD_SHUTDOWN: + break; + + default: + return (EOPNOTSUPP); + } + + return (0); +} + static int ioat_probe(device_t device) { @@ -362,7 +384,6 @@ ioat_detach(device_t device) ioat_channel_index--; mtx_unlock(&ioat_list_mtx); - ioat_test_detach(); taskqueue_drain(taskqueue_thread, &ioat->reset_task); mtx_lock(&ioat->submit_lock); diff --git a/sys/dev/ioat/ioat_test.c b/sys/dev/ioat/ioat_test.c index 0bd6a3377bea..3a42ba5fb54c 100644 --- a/sys/dev/ioat/ioat_test.c +++ b/sys/dev/ioat/ioat_test.c @@ -550,17 +550,21 @@ static struct cdevsw ioat_cdevsw = { static int enable_ioat_test(bool enable) { - - mtx_assert(&Giant, MA_OWNED); + struct make_dev_args devargs; + int error = 0; if (enable && g_ioat_cdev == NULL) { - g_ioat_cdev = make_dev(&ioat_cdevsw, 0, UID_ROOT, GID_WHEEL, - 0600, "ioat_test"); + make_dev_args_init(&devargs); + devargs.mda_devsw = &ioat_cdevsw; + devargs.mda_uid = UID_ROOT; + devargs.mda_gid = GID_WHEEL; + devargs.mda_mode = 0600; + error = make_dev_s(&devargs, &g_ioat_cdev, "ioat_test"); } else if (!enable && g_ioat_cdev != NULL) { destroy_dev(g_ioat_cdev); g_ioat_cdev = NULL; } - return (0); + return (error); } static int @@ -573,11 +577,10 @@ sysctl_enable_ioat_test(SYSCTL_HANDLER_ARGS) if (error != 0 || req->newptr == NULL) return (error); - enable_ioat_test(enabled); - return (0); + return (enable_ioat_test(enabled)); } SYSCTL_PROC(_hw_ioat, OID_AUTO, enable_ioat_test, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, 0, 0, + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, sysctl_enable_ioat_test, "I", "Non-zero: Enable the /dev/ioat_test device"); @@ -587,11 +590,8 @@ ioat_test_attach(void) char *val; val = kern_getenv("hw.ioat.enable_ioat_test"); - if (val != NULL && strcmp(val, "0") != 0) { - mtx_lock(&Giant); + if (val != NULL && strcmp(val, "0") != 0) enable_ioat_test(true); - mtx_unlock(&Giant); - } freeenv(val); } @@ -599,9 +599,7 @@ void ioat_test_detach(void) { - mtx_lock(&Giant); enable_ioat_test(false); - mtx_unlock(&Giant); } static void From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:15: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 66B45673887; Mon, 4 Oct 2021 01:15: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 4HN2nj28wVz4tC1; Mon, 4 Oct 2021 01:15: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 2A95C10A10; Mon, 4 Oct 2021 01:15: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 1941F571007820; Mon, 4 Oct 2021 01:15:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941F54A007819; Mon, 4 Oct 2021 01:15:05 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:15:05 GMT Message-Id: <202110040115.1941F54A007819@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: c15b8196ba6f - stable/13 - Re-implement virtual console (constty). MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c15b8196ba6f22908d75fdf2fece76e1c20ec80e 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, 04 Oct 2021 01:15:05 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=c15b8196ba6f22908d75fdf2fece76e1c20ec80e commit c15b8196ba6f22908d75fdf2fece76e1c20ec80e Author: Alexander Motin AuthorDate: 2021-09-04 02:18:51 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:15:02 +0000 Re-implement virtual console (constty). Protect conscallout with tty lock instead of Giant. In addition to Giant removal it also closes race on console unset. Introduce additional lock to protect against concurrent console sets. Remove consbuf free on console unset as unsafe, making impossible to change buffer size after first allocation. Instead increase default buffer size from 8KB to 64KB and processing rate from 5Hz to 10-15Hz to make the output more smooth. MFC after: 1 month (cherry picked from commit bd6085c6ae28fb1cc81cca325656332fbd2cebd8) --- sys/kern/kern_cons.c | 105 +++++++++++++++++++++++++++------------------------ sys/kern/tty.c | 24 +++--------- sys/sys/cons.h | 4 +- 3 files changed, 62 insertions(+), 71 deletions(-) diff --git a/sys/kern/kern_cons.c b/sys/kern/kern_cons.c index 5f4bf63bed0f..780fce00387d 100644 --- a/sys/kern/kern_cons.c +++ b/sys/kern/kern_cons.c @@ -105,8 +105,10 @@ static u_char console_pausing; /* pause after each line during probe */ static const char console_pausestr[] = ""; struct tty *constty; /* pointer to console "window" tty */ +static struct mtx constty_mtx; /* Mutex for constty assignment. */ +MTX_SYSINIT(constty_mtx, &constty_mtx, "constty_mtx", MTX_DEF); static struct mtx cnputs_mtx; /* Mutex for cnputs(). */ -static int use_cnputs_mtx = 0; /* != 0 if cnputs_mtx locking reqd. */ +MTX_SYSINIT(cnputs_mtx, &cnputs_mtx, "cnputs_mtx", MTX_SPIN | MTX_NOWITNESS); static void constty_timeout(void *arg); @@ -538,8 +540,8 @@ cnputsn(const char *p, size_t n) size_t i; int unlock_reqd = 0; - if (use_cnputs_mtx) { - /* + if (mtx_initialized(&cnputs_mtx)) { + /* * NOTE: Debug prints and/or witness printouts in * console driver clients can cause the "cnputs_mtx" * mutex to recurse. Simply return if that happens. @@ -563,49 +565,72 @@ cnputs(const char *p) cnputsn(p, strlen(p)); } -static int consmsgbuf_size = 8192; -SYSCTL_INT(_kern, OID_AUTO, consmsgbuf_size, CTLFLAG_RW, &consmsgbuf_size, 0, - "Console tty buffer size"); +static unsigned int consmsgbuf_size = 65536; +SYSCTL_UINT(_kern, OID_AUTO, consmsgbuf_size, CTLFLAG_RWTUN, &consmsgbuf_size, + 0, "Console tty buffer size"); /* * Redirect console output to a tty. */ -void +int constty_set(struct tty *tp) { - int size; + int size = consmsgbuf_size; + void *buf = NULL; + + tty_assert_locked(tp); + if (constty == tp) + return (0); + if (constty != NULL) + return (EBUSY); - KASSERT(tp != NULL, ("constty_set: NULL tp")); if (consbuf == NULL) { - size = consmsgbuf_size; - consbuf = malloc(size, M_TTYCONS, M_WAITOK); - msgbuf_init(&consmsgbuf, consbuf, size); - callout_init(&conscallout, 0); + tty_unlock(tp); + buf = malloc(size, M_TTYCONS, M_WAITOK); + tty_lock(tp); } + mtx_lock(&constty_mtx); + if (constty != NULL) { + mtx_unlock(&constty_mtx); + free(buf, M_TTYCONS); + return (EBUSY); + } + if (consbuf == NULL) { + consbuf = buf; + msgbuf_init(&consmsgbuf, buf, size); + } else + free(buf, M_TTYCONS); constty = tp; - constty_timeout(NULL); + mtx_unlock(&constty_mtx); + + callout_init_mtx(&conscallout, tty_getlock(tp), 0); + constty_timeout(tp); + return (0); } /* * Disable console redirection to a tty. */ -void -constty_clear(void) +int +constty_clear(struct tty *tp) { int c; - constty = NULL; - if (consbuf == NULL) - return; + tty_assert_locked(tp); + if (constty != tp) + return (ENXIO); callout_stop(&conscallout); + mtx_lock(&constty_mtx); + constty = NULL; + mtx_unlock(&constty_mtx); while ((c = msgbuf_getchar(&consmsgbuf)) != -1) cnputc(c); - free(consbuf, M_TTYCONS); - consbuf = NULL; + /* We never free consbuf because it can still be in use. */ + return (0); } /* Times per second to check for pending console tty messages. */ -static int constty_wakeups_per_second = 5; +static int constty_wakeups_per_second = 15; SYSCTL_INT(_kern, OID_AUTO, constty_wakeups_per_second, CTLFLAG_RW, &constty_wakeups_per_second, 0, "Times per second to check for pending console tty messages"); @@ -613,40 +638,20 @@ SYSCTL_INT(_kern, OID_AUTO, constty_wakeups_per_second, CTLFLAG_RW, static void constty_timeout(void *arg) { + struct tty *tp = arg; int c; - if (constty != NULL) { - tty_lock(constty); - while ((c = msgbuf_getchar(&consmsgbuf)) != -1) { - if (tty_putchar(constty, c) < 0) { - tty_unlock(constty); - constty = NULL; - break; - } + tty_assert_locked(tp); + while ((c = msgbuf_getchar(&consmsgbuf)) != -1) { + if (tty_putchar(tp, c) < 0) { + constty_clear(tp); + return; } - - if (constty != NULL) - tty_unlock(constty); - } - if (constty != NULL) { - callout_reset(&conscallout, hz / constty_wakeups_per_second, - constty_timeout, NULL); - } else { - /* Deallocate the constty buffer memory. */ - constty_clear(); } + callout_reset_sbt(&conscallout, SBT_1S / constty_wakeups_per_second, + 0, constty_timeout, tp, C_PREL(1)); } -static void -cn_drvinit(void *unused) -{ - - mtx_init(&cnputs_mtx, "cnputs_mtx", NULL, MTX_SPIN | MTX_NOWITNESS); - use_cnputs_mtx = 1; -} - -SYSINIT(cndev, SI_SUB_DRIVERS, SI_ORDER_MIDDLE, cn_drvinit, NULL); - /* * Sysbeep(), if we have hardware for it */ diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 8700eb8f9ef1..8dfe5e93780f 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -241,8 +241,7 @@ ttydev_leave(struct tty *tp) tp->t_flags |= TF_OPENCLOSE; /* Remove console TTY. */ - if (constty == tp) - constty_clear(); + constty_clear(tp); /* Drain any output. */ if (!tty_gone(tp)) @@ -1920,24 +1919,11 @@ tty_generic_ioctl(struct tty *tp, u_long cmd, void *data, int fflag, error = priv_check(td, PRIV_TTY_CONSOLE); if (error) return (error); - - /* - * XXX: constty should really need to be locked! - * XXX: allow disconnected constty's to be stolen! - */ - - if (constty == tp) - return (0); - if (constty != NULL) - return (EBUSY); - - tty_unlock(tp); - constty_set(tp); - tty_lock(tp); - } else if (constty == tp) { - constty_clear(); + error = constty_set(tp); + } else { + error = constty_clear(tp); } - return (0); + return (error); case TIOCGWINSZ: /* Obtain window size. */ *(struct winsize*)data = tp->t_winsize; diff --git a/sys/sys/cons.h b/sys/sys/cons.h index 779f365f6e99..ad73b258df6d 100644 --- a/sys/sys/cons.h +++ b/sys/sys/cons.h @@ -139,8 +139,8 @@ void cnputc(int); void cnputs(const char *); void cnputsn(const char *, size_t); int cnunavailable(void); -void constty_set(struct tty *tp); -void constty_clear(void); +int constty_set(struct tty *tp); +int constty_clear(struct tty *tp); /* sc(4) / vt(4) coexistence shim */ #define VTY_SC 0x01 From owner-dev-commits-src-all@freebsd.org Mon Oct 4 01:15: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 901EE67372B; Mon, 4 Oct 2021 01:15: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 4HN2nk3ksMz4t75; Mon, 4 Oct 2021 01:15: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 56CCF10A8D; Mon, 4 Oct 2021 01:15: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 1941F6Xs007851; Mon, 4 Oct 2021 01:15:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941F6O1007850; Mon, 4 Oct 2021 01:15:06 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:15:06 GMT Message-Id: <202110040115.1941F6O1007850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: e6e348e49c0a - stable/13 - Unify console output. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e6e348e49c0af43b2aa28db7084912015ccb4172 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, 04 Oct 2021 01:15:06 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=e6e348e49c0af43b2aa28db7084912015ccb4172 commit e6e348e49c0af43b2aa28db7084912015ccb4172 Author: Alexander Motin AuthorDate: 2021-09-04 03:13:42 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:15:03 +0000 Unify console output. Without this change when virtual console enabled depending on buffer presence and state different parts of output go to different consoles. MFC after: 1 month (cherry picked from commit a264594d4ff19fd13f7c39a56c8d131296db480d) --- sys/kern/subr_prf.c | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c index bbe95653919f..1106587ebbe7 100644 --- a/sys/kern/subr_prf.c +++ b/sys/kern/subr_prf.c @@ -118,6 +118,7 @@ extern int log_open; static void msglogchar(int c, int pri); static void msglogstr(char *str, int pri, int filter_cr); +static void prf_putbuf(char *bufr, int flags, int pri); static void putchar(int ch, void *arg); static char *ksprintn(char *nbuf, uintmax_t num, int base, int *len, int upper); static void snprintf_func(int ch, void *arg); @@ -296,13 +297,8 @@ _vprintf(int level, int flags, const char *fmt, va_list ap) #ifdef PRINTF_BUFR_SIZE /* Write any buffered console/log output: */ - if (*pca.p_bufr != '\0') { - if (pca.flags & TOLOG) - msglogstr(pca.p_bufr, level, /*filter_cr*/1); - - if (pca.flags & TOCONS) - cnputs(pca.p_bufr); - } + if (*pca.p_bufr != '\0') + prf_putbuf(pca.p_bufr, flags, level); #endif TSEXIT(); @@ -423,6 +419,22 @@ vprintf(const char *fmt, va_list ap) return (retval); } +static void +prf_putchar(int c, int flags, int pri) +{ + + if (flags & TOLOG) + msglogchar(c, pri); + + if (flags & TOCONS) { + if ((!KERNEL_PANICKED()) && (constty != NULL)) + msgbuf_addchar(&consmsgbuf, c); + + if ((constty == NULL) || always_console_output) + cnputc(c); + } +} + static void prf_putbuf(char *bufr, int flags, int pri) { @@ -435,7 +447,7 @@ prf_putbuf(char *bufr, int flags, int pri) msgbuf_addstr(&consmsgbuf, -1, bufr, /*filter_cr*/ 0); - if ((constty == NULL) ||(always_console_output)) + if ((constty == NULL) || always_console_output) cnputs(bufr); } } @@ -445,12 +457,7 @@ putbuf(int c, struct putchar_arg *ap) { /* Check if no console output buffer was provided. */ if (ap->p_bufr == NULL) { - /* Output direct to the console. */ - if (ap->flags & TOCONS) - cnputc(c); - - if (ap->flags & TOLOG) - msglogchar(c, ap->pri); + prf_putchar(c, ap->flags, ap->pri); } else { /* Buffer the character: */ *ap->p_next++ = c; From owner-dev-commits-src-all@freebsd.org Mon Oct 4 03:36: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 D275F675910; Mon, 4 Oct 2021 03:36: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 4HN5wv5Lkvz3H5q; Mon, 4 Oct 2021 03:36: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 975B612719; Mon, 4 Oct 2021 03:36: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 1943aVlw095008; Mon, 4 Oct 2021 03:36:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1943aVcN095007; Mon, 4 Oct 2021 03:36:31 GMT (envelope-from git) Date: Mon, 4 Oct 2021 03:36:31 GMT Message-Id: <202110040336.1943aVcN095007@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Toomas Soome Subject: git: c39bfe47139b - stable/13 - vt: call driver's postswitch when panicking on ttyv0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tsoome X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c39bfe47139bac99e5519c22ccde42b2660b6500 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, 04 Oct 2021 03:36:31 -0000 The branch stable/13 has been updated by tsoome: URL: https://cgit.FreeBSD.org/src/commit/?id=c39bfe47139bac99e5519c22ccde42b2660b6500 commit c39bfe47139bac99e5519c22ccde42b2660b6500 Author: Greg V AuthorDate: 2021-04-24 11:53:34 +0000 Commit: Toomas Soome CommitDate: 2021-10-03 21:46:49 +0000 vt: call driver's postswitch when panicking on ttyv0 In vt_kms, the postswitch callback restores fbdev mode when panicking or entering the debugger. This ensures that even when a graphical applicatino was running on the first tty, simple framebuffer mode would be restored and the panic would be visible instead of the frozen GUI. But vt wouldn't call the postswitch callback when we're already on the first tty, so running a GUI on it would prevent you from reading any panics. Reviewed by: tsoome Differential Revision: https://reviews.freebsd.org/D29961 (cherry picked from commit c937a405bdce2fd12c534446a8cc9e5548dd27eb) --- sys/dev/vt/vt_core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c index d4baa65f06c9..884050f4f0c5 100644 --- a/sys/dev/vt/vt_core.c +++ b/sys/dev/vt/vt_core.c @@ -595,7 +595,13 @@ vt_window_switch(struct vt_window *vw) VT_LOCK(vd); if (curvw == vw) { - /* Nothing to do. */ + /* + * Nothing to do, except ensure the driver has the opportunity to + * switch to console mode when panicking, making sure the panic + * is readable (even when a GUI was using ttyv0). + */ + if ((kdb_active || panicstr) && vd->vd_driver->vd_postswitch) + vd->vd_driver->vd_postswitch(vd); VT_UNLOCK(vd); return (0); } From owner-dev-commits-src-all@freebsd.org Mon Oct 4 07:24: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 733196786C9; Mon, 4 Oct 2021 07:24:54 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [88.99.82.50]) (using TLSv1.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 4HNC0Q20FWz3nhm; Mon, 4 Oct 2021 07:24:54 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2020.home.selasky.org (unknown [178.17.145.105]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 3ED7226052B; Mon, 4 Oct 2021 09:24:52 +0200 (CEST) Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Shawn Webb , Eric van Gyzen Cc: Mateusz Piotrowski <0mp@freebsd.org>, "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" , Christos Margiolis References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <8D7B0F4D-D996-4AE5-85DC-FB74B8D7510F@vangyzen.net> <20211003230814.pqfaioaqu2yvileg@mutt-hbsd> From: Hans Petter Selasky Message-ID: <825619dc-7486-9d6f-2648-f041cba85dc8@selasky.org> Date: Mon, 4 Oct 2021 09:24:40 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <20211003230814.pqfaioaqu2yvileg@mutt-hbsd> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4HNC0Q20FWz3nhm 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: Mon, 04 Oct 2021 07:24:54 -0000 On 10/4/21 1:08 AM, Shawn Webb wrote: > On Sun, Oct 03, 2021 at 05:46:04PM -0500, Eric van Gyzen wrote: >> >>> On Oct 3, 2021, at 11:03 AM, Mateusz Piotrowski <0mp@freebsd.org> wrote: >>> >>> Perhaps we could change the name of the new mixer to, e.g., newmixer. >> >> I realize that suggestion was just a quick example, but please don’t call anything “new,†because it isn’t new for long. ;) > > My bikeshed is now painted with a color called "Freshmixer". What's > your bikeshed called? ;-) > > (This is meant in jest.) > Hi, Feel free to move this discussion to freebsd-multimedia@freebsd.org . --HPS From owner-dev-commits-src-all@freebsd.org Mon Oct 4 08:06: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 788A2679463; Mon, 4 Oct 2021 08:06: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 4HNCwh2mSWz3rK6; Mon, 4 Oct 2021 08:06: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 3BAA815A7E; Mon, 4 Oct 2021 08:06: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 19486iwM054591; Mon, 4 Oct 2021 08:06:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19486iBG054590; Mon, 4 Oct 2021 08:06:44 GMT (envelope-from git) Date: Mon, 4 Oct 2021 08:06:44 GMT Message-Id: <202110040806.19486iBG054590@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: 662087dfd066 - main - vendor/bc: update to upstream version 5.0.2 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: 662087dfd0668dee82ed20d00ced662aa3595059 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, 04 Oct 2021 08:06:44 -0000 The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=662087dfd0668dee82ed20d00ced662aa3595059 commit 662087dfd0668dee82ed20d00ced662aa3595059 Author: Stefan Eßer AuthorDate: 2021-09-19 12:41:20 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 07:37:19 +0000 vendor/bc: update to upstream version 5.0.2 (cherry picked from commit a60ef1802a36f2f2a5611564191440ea1c1e2f17) --- contrib/bc/NEWS.md | 30 ++++++++++++++++++++++++++++++ contrib/bc/include/status.h | 4 ++++ contrib/bc/include/vector.h | 4 ++-- contrib/bc/include/version.h | 2 +- contrib/bc/src/vector.c | 2 +- contrib/bc/tests/all.sh | 3 +++ contrib/bc/tests/bc/timeconst.sh | 6 ++++-- contrib/bc/tests/dc/errors/33.txt | Bin 329 -> 323 bytes contrib/bc/tests/errors.sh | 26 +++----------------------- contrib/bc/tests/history.py | 15 +++++---------- contrib/bc/tests/other.sh | 14 ++++++++------ contrib/bc/tests/read.sh | 4 +++- contrib/bc/tests/script.sh | 4 +++- contrib/bc/tests/stdin.sh | 4 +++- contrib/bc/tests/test.sh | 4 +++- 15 files changed, 73 insertions(+), 49 deletions(-) diff --git a/contrib/bc/NEWS.md b/contrib/bc/NEWS.md index 3b1477cafb26..f35d593b807a 100644 --- a/contrib/bc/NEWS.md +++ b/contrib/bc/NEWS.md @@ -1,5 +1,35 @@ # News +## 5.0.2 + +This is a production release with one fix for a flaky test. If you have not +experienced problems with the test suite, you do ***NOT*** need to upgrade. + +The test was one that tested whether `bc` fails gracefully when it can't +allocate memory. Unfortunately, there are cases when Linux and FreeBSD lie and +pretend to allocate the memory. + +The reason they do this is because a lot of programs don't use all of the memory +they allocate, so those OS's usually get away with it. + +However, this `bc` uses all of the memory it allocates (at least at page +granularity), so when it tries to use the memory, FreeBSD and Linux kill it. + +This only happens sometimes, however. Other times (on my machine), they do, in +fact, refuse the request. + +So I changed the test to not test for that because I think the graceful failure +code won't really change much. + +## 5.0.1 + +This is a production release with two fixes: + +* Fix for the build on Mac OSX. +* Fix for the build on Android. + +Users that do not use those platforms do ***NOT*** need to update. + ## 5.0.0 This is a major production release with several changes: diff --git a/contrib/bc/include/status.h b/contrib/bc/include/status.h index 781248ad4020..662f2b89c04d 100644 --- a/contrib/bc/include/status.h +++ b/contrib/bc/include/status.h @@ -53,6 +53,10 @@ #define DC_ENABLED (1) #endif // DC_ENABLED +#ifndef BC_ENABLE_LIBRARY +#define BC_ENABLE_LIBRARY (0) +#endif // BC_ENABLE_LIBRARY + // This is error checking for fuzz builds. #if BC_ENABLE_AFL #ifndef __AFL_HAVE_MANUAL_CONTROL diff --git a/contrib/bc/include/vector.h b/contrib/bc/include/vector.h index 8f7cbbcc2b50..c35d22c9eff7 100644 --- a/contrib/bc/include/vector.h +++ b/contrib/bc/include/vector.h @@ -441,7 +441,7 @@ void bc_slabvec_print(BcVec *v, const char *func); * contain @a s. * @param s The source string. */ -#define strcpy(d, l, s) strcpy(d, s) +#define bc_strcpy(d, l, s) strcpy(d, s) #else // _WIN32 @@ -452,7 +452,7 @@ void bc_slabvec_print(BcVec *v, const char *func); * contain @a s. * @param s The source string. */ -#define strcpy(d, l, s) strcpy_s(d, l, s) +#define bc_strcpy(d, l, s) strcpy_s(d, l, s) #endif // _WIN32 diff --git a/contrib/bc/include/version.h b/contrib/bc/include/version.h index 5127c28e2b4a..071b123cccf1 100644 --- a/contrib/bc/include/version.h +++ b/contrib/bc/include/version.h @@ -37,6 +37,6 @@ #define BC_VERSION_H /// The current version. -#define VERSION 5.0.0 +#define VERSION 5.0.2 #endif // BC_VERSION_H diff --git a/contrib/bc/src/vector.c b/contrib/bc/src/vector.c index 1cd90f729956..ebc2e76ca8c8 100644 --- a/contrib/bc/src/vector.c +++ b/contrib/bc/src/vector.c @@ -461,7 +461,7 @@ static char* bc_slab_add(BcSlab *s, const char *str, size_t len) { ptr = (char*) (s->s + s->len); - strcpy(ptr, len, str); + bc_strcpy(ptr, len, str); s->len += len; diff --git a/contrib/bc/tests/all.sh b/contrib/bc/tests/all.sh index 04afdb391d0e..a4a9c8bc8936 100755 --- a/contrib/bc/tests/all.sh +++ b/contrib/bc/tests/all.sh @@ -129,6 +129,9 @@ sh "$testdir/errors.sh" "$d" "$exe" "$@" # Other tests. sh "$testdir/other.sh" "$d" "$extra" "$exe" "$@" +# History tests. +sh "$testdir/history.sh" "$d" -a + printf '\nAll %s tests passed.\n' "$d" printf '\n%s\n' "$stars" diff --git a/contrib/bc/tests/bc/timeconst.sh b/contrib/bc/tests/bc/timeconst.sh index 5c5ec3806ab8..45e10c77bdf4 100755 --- a/contrib/bc/tests/bc/timeconst.sh +++ b/contrib/bc/tests/bc/timeconst.sh @@ -32,6 +32,8 @@ script="$0" testdir=$(dirname "$script") +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir/..} + # Gets the timeconst script, which could be a command-line argument. if [ "$#" -gt 0 ]; then timeconst="$1" @@ -49,8 +51,8 @@ else fi # -out1="$testdir/bc_outputs/bc_timeconst.txt" -out2="$testdir/bc_outputs/bc_timeconst_results.txt" +out1="$outputdir/bc_outputs/bc_timeconst.txt" +out2="$outputdir/bc_outputs/bc_timeconst_results.txt" outdir=$(dirname "$out1") diff --git a/contrib/bc/tests/dc/errors/33.txt b/contrib/bc/tests/dc/errors/33.txt index 524b548e6f4d..7d01c535c665 100644 Binary files a/contrib/bc/tests/dc/errors/33.txt and b/contrib/bc/tests/dc/errors/33.txt differ diff --git a/contrib/bc/tests/errors.sh b/contrib/bc/tests/errors.sh index d6c120aab4e7..c8c82cfe356f 100755 --- a/contrib/bc/tests/errors.sh +++ b/contrib/bc/tests/errors.sh @@ -34,6 +34,8 @@ testdir=$(dirname "$script") . "$testdir/../scripts/functions.sh" +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir} + # Command-line processing. if [ "$#" -eq 0 ]; then printf 'usage: %s dir [exec args...]\n' "$script" @@ -56,7 +58,7 @@ unset BC_LINE_LENGTH unset DC_ENV_ARGS unset DC_LINE_LENGTH -out="$testdir/${d}_outputs/errors_results.txt" +out="$outputdir/${d}_outputs/errors_results.txt" outdir=$(dirname "$out") # Make sure the directory exists. @@ -146,33 +148,11 @@ for testfile in $testdir/$d/*errors.txt; do done -# I need to skip a test here on FreeBSD. -os=$(uname) - -# The list of files we need to skip. -skip_files=" -33.txt -" - # Test all the files in the errors directory. While the loop above does one test # for every line, this does one test per file, but it runs the file through # stdin and as a file on the command-line. for testfile in $testdir/$d/errors/*.txt; do - # If we are on FreeBSD... - if [ "$os" = "FreeBSD" ] && [ "$d" = "dc" ]; then - - b=$(basename "$testfile") - - # If the file is one of the skip files... - if [ -z "${skip_files##*$b*}" ]; then - - printf 'On FreeBSD; skipping %s...\n' "$testfile" - continue - - fi - fi - printf 'Running %s error file %s...' "$d" "$testfile" printf '%s\n' "$halt" | "$exe" "$@" $opts "$testfile" 2> "$out" > /dev/null diff --git a/contrib/bc/tests/history.py b/contrib/bc/tests/history.py index ae25c7cf2854..fff531652b1b 100755 --- a/contrib/bc/tests/history.py +++ b/contrib/bc/tests/history.py @@ -41,6 +41,11 @@ except ImportError: script = sys.argv[0] testdir = os.path.dirname(script) +if "BC_TEST_OUTPUT_DIR" in os.environ: + outputdir = os.environ["BC_TEST_OUTPUT_DIR"] +else: + outputdir = testdir + prompt = ">>> " # This array is for escaping characters that are necessary to escape when @@ -67,16 +72,6 @@ utf8_stress_strs = [ ] -def spawn(exe, args, env, encoding=None, codec_errors='strict'): - if do_test: - f = open(testdir + "/" + exedir + "_outputs/history_test.txt", "wb") - return pexpect.popen_spawn.PopenSpawn([ exe ] + args, env=env, - encoding=encoding, codec_errors=codec_errors, stderr=f) - else: - return pexpect.spawn(exe, args, env=env, encoding=encoding, - codec_errors=codec_errors) - - # Check that the child output the expected line. If history is false, then # the output should change. def check_line(child, expected, prompt=">>> ", history=True): diff --git a/contrib/bc/tests/other.sh b/contrib/bc/tests/other.sh index 0a856f4a6e22..4a26582457e3 100755 --- a/contrib/bc/tests/other.sh +++ b/contrib/bc/tests/other.sh @@ -34,6 +34,8 @@ testdir=$(dirname "$script") . "$testdir/../scripts/functions.sh" +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir} + # Command-line processing. if [ "$#" -ge 2 ]; then @@ -135,8 +137,8 @@ if [ "$d" = "bc" ]; then unset BC_ENV_ARGS - redefine_res="$testdir/bc_outputs/redefine.txt" - redefine_out="$testdir/bc_outputs/redefine_results.txt" + redefine_res="$outputdir/bc_outputs/redefine.txt" + redefine_out="$outputdir/bc_outputs/redefine_results.txt" outdir=$(dirname "$easter_out") @@ -201,8 +203,8 @@ else printf 'Running dc Easter script...' - easter_res="$testdir/dc_outputs/easter.txt" - easter_out="$testdir/dc_outputs/easter_results.txt" + easter_res="$outputdir/dc_outputs/easter.txt" + easter_out="$outputdir/dc_outputs/easter_results.txt" outdir=$(dirname "$easter_out") @@ -222,8 +224,8 @@ else fi -out1="$testdir/../.log_$d.txt" -out2="$testdir/../.log_${d}_test.txt" +out1="$outputdir/${d}_outputs/${d}_other.txt" +out2="$outputdir/${d}_outputs/${d}_other_test.txt" printf 'Running %s line length tests...' "$d" diff --git a/contrib/bc/tests/read.sh b/contrib/bc/tests/read.sh index 1186a19c99bd..a1915eb271ac 100755 --- a/contrib/bc/tests/read.sh +++ b/contrib/bc/tests/read.sh @@ -34,6 +34,8 @@ testdir=$(dirname "$script") . "$testdir/../scripts/functions.sh" +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir} + # Command-line processing. if [ "$#" -lt 1 ]; then printf 'usage: %s dir [exe [args...]]\n' "$0" @@ -58,7 +60,7 @@ name="$testdir/$d/read.txt" results="$testdir/$d/read_results.txt" errors="$testdir/$d/read_errors.txt" -out="$testdir/${d}_outputs/read_results.txt" +out="$outputdir/${d}_outputs/read_results.txt" outdir=$(dirname "$out") # Make sure the directory exists. diff --git a/contrib/bc/tests/script.sh b/contrib/bc/tests/script.sh index f8fdd67ee137..162437af8f22 100755 --- a/contrib/bc/tests/script.sh +++ b/contrib/bc/tests/script.sh @@ -35,6 +35,8 @@ testdir=$(dirname "${script}") . "$testdir/../scripts/functions.sh" +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir} + # Command-line processing. if [ "$#" -lt 2 ]; then printf 'usage: %s dir script [run_extra_tests] [run_stack_tests] [generate_tests] [time_tests] [exec args...]\n' "$script" @@ -126,7 +128,7 @@ if [ "$run_stack_tests" -eq 0 ]; then fi -out="$testdir/${d}_outputs/${name}_script_results.txt" +out="$outputdir/${d}_outputs/${name}_script_results.txt" outdir=$(dirname "$out") # Make sure the directory exists. diff --git a/contrib/bc/tests/stdin.sh b/contrib/bc/tests/stdin.sh index 56bd1aae227b..c9e02253c30a 100755 --- a/contrib/bc/tests/stdin.sh +++ b/contrib/bc/tests/stdin.sh @@ -35,6 +35,8 @@ testdir=$(dirname "$script") . "$testdir/../scripts/functions.sh" +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir} + # Command-line processing. if [ "$#" -lt 1 ]; then printf 'usage: %s dir [exe [args...]]\n' "$0" @@ -55,7 +57,7 @@ else exe="$testdir/../bin/$d" fi -out="$testdir/${d}_outputs/stdin_results.txt" +out="$outputdir/${d}_outputs/stdin_results.txt" outdir=$(dirname "$out") # Make sure the directory exists. diff --git a/contrib/bc/tests/test.sh b/contrib/bc/tests/test.sh index ec7f6ba920c9..9d557a715dc0 100755 --- a/contrib/bc/tests/test.sh +++ b/contrib/bc/tests/test.sh @@ -35,6 +35,8 @@ testdir=$(dirname "$script") . "$testdir/../scripts/functions.sh" +outputdir=${BC_TEST_OUTPUT_DIR:-$testdir} + # Command-line processing. if [ "$#" -lt 2 ]; then printf 'usage: %s dir test [generate_tests] [time_tests] [exe [args...]]\n' "$0" @@ -74,7 +76,7 @@ else exe="$testdir/../bin/$d" fi -out="$testdir/${d}_outputs/${t}_results.txt" +out="$outputdir/${d}_outputs/${t}_results.txt" outdir=$(dirname "$out") # Make sure the directory exists. From owner-dev-commits-src-all@freebsd.org Mon Oct 4 08:06: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 8E204679464; Mon, 4 Oct 2021 08:06: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 4HNCwj3WGVz3rZy; Mon, 4 Oct 2021 08:06:45 +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 59C1815D28; Mon, 4 Oct 2021 08:06: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 19486jeT054619; Mon, 4 Oct 2021 08:06:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19486jVT054618; Mon, 4 Oct 2021 08:06:45 GMT (envelope-from git) Date: Mon, 4 Oct 2021 08:06:45 GMT Message-Id: <202110040806.19486jVT054618@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: ea31d1a5c490 - main - contrib/bc: remove files ommitted from the release 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: ea31d1a5c490193348e0b71fdda6d08a2c80a2eb 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, 04 Oct 2021 08:06:45 -0000 The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=ea31d1a5c490193348e0b71fdda6d08a2c80a2eb commit ea31d1a5c490193348e0b71fdda6d08a2c80a2eb Author: Stefan Eßer AuthorDate: 2021-10-04 07:41:06 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 07:41:06 +0000 contrib/bc: remove files ommitted from the release A number of files have been removed from the release distribution of this bc implementation. They were mostly relevant for pre release testing and benchmarking to identify regressions. The Markdown sources of the man pages are only relevant for combinations of build options not used in FreeBSD and need non-default conversion tools (available as ports in FreeBSD). All the omitted files can be found in the upstream git repository, and they are fetched when building this software as a port. But they have never been used in the FreeBSD base system. --- contrib/bc/benchmarks/bc/add.bc | 21 - contrib/bc/benchmarks/bc/arrays.bc | 34 - contrib/bc/benchmarks/bc/arrays_and_constants.bc | 35 - contrib/bc/benchmarks/bc/bitfuncs.bc | 18 - contrib/bc/benchmarks/bc/constants.bc | 41 - contrib/bc/benchmarks/bc/divide.bc | 26 - contrib/bc/benchmarks/bc/functions.bc | 34 - contrib/bc/benchmarks/bc/irand_long.bc | 9 - contrib/bc/benchmarks/bc/irand_short.bc | 5 - contrib/bc/benchmarks/bc/lib.bc | 7 - contrib/bc/benchmarks/bc/multiply.bc | 23 - contrib/bc/benchmarks/bc/postfix_incdec.bc | 7 - contrib/bc/benchmarks/bc/power.bc | 2 - contrib/bc/benchmarks/bc/strings.bc | 36 - contrib/bc/benchmarks/bc/subtract.bc | 22 - contrib/bc/benchmarks/dc/modexp.dc | 42 - contrib/bc/manuals/development.md | 4950 ---------------------- contrib/bc/manuals/release.md | 72 - contrib/bc/scripts/afl.py | 245 -- contrib/bc/scripts/alloc.sh | 84 - contrib/bc/scripts/benchmark.sh | 159 - contrib/bc/scripts/bitgen.c | 101 - contrib/bc/scripts/fuzz_prep.sh | 81 - contrib/bc/scripts/manpage.sh | 175 - contrib/bc/scripts/ministat.c | 670 --- contrib/bc/scripts/package.sh | 173 - contrib/bc/scripts/radamsa.sh | 133 - contrib/bc/scripts/radamsa.txt | 17 - contrib/bc/scripts/randmath.py | 421 -- contrib/bc/scripts/release.sh | 779 ---- contrib/bc/scripts/release_settings.txt | 16 - contrib/bc/scripts/test_settings.sh | 77 - contrib/bc/scripts/test_settings.txt | 93 - contrib/bc/tests/fuzzing/bc_afl.yaml | 125 - contrib/bc/tests/fuzzing/bc_afl_continue.yaml | 122 - contrib/bc/tests/fuzzing/bc_inputs1/strings.txt | 14 - contrib/bc/tests/fuzzing/dc_inputs/stack_len.txt | 1 - 37 files changed, 8870 deletions(-) diff --git a/contrib/bc/benchmarks/bc/add.bc b/contrib/bc/benchmarks/bc/add.bc deleted file mode 100644 index 90a83e4758d9..000000000000 --- a/contrib/bc/benchmarks/bc/add.bc +++ /dev/null @@ -1,21 +0,0 @@ -#! /usr/bin/bc -lq - -print "scale = 20\n" -print "x = 1234567890 / scale\n" -print "len = length(x) + 1 + scale\n" -print "len *= 2\n" - -scale = 20 -x = 1234567890 / scale -len = length(x) + 1 + scale -len *= 2 - -for (i = 0; i <= len; ++i) { - print "a[", i, "] = x * (10^", i, ")\n" -} - -for (i = 1; i <= 10000; ++i) { - for (j = 0; j < len; ++j) { - print "v = a[", i, "] + a[", j, "]\n" - } -} diff --git a/contrib/bc/benchmarks/bc/arrays.bc b/contrib/bc/benchmarks/bc/arrays.bc deleted file mode 100644 index e3c463187d78..000000000000 --- a/contrib/bc/benchmarks/bc/arrays.bc +++ /dev/null @@ -1,34 +0,0 @@ -#! /usr/bin/bc -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * 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 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. -# - -max = 1000000 - -for (i = 0; i < max; ++i) { - print "a", i, "[0] = ", i, "\n" -} diff --git a/contrib/bc/benchmarks/bc/arrays_and_constants.bc b/contrib/bc/benchmarks/bc/arrays_and_constants.bc deleted file mode 100644 index 93c5594bec20..000000000000 --- a/contrib/bc/benchmarks/bc/arrays_and_constants.bc +++ /dev/null @@ -1,35 +0,0 @@ -#! /usr/bin/bc -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * 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 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. -# - -max = 1000000 - -for (i = 0; i < max; ++i) { - print "b", i, "[100] = ", i, "\n" -} - diff --git a/contrib/bc/benchmarks/bc/bitfuncs.bc b/contrib/bc/benchmarks/bc/bitfuncs.bc deleted file mode 100644 index 1c2a6529d04b..000000000000 --- a/contrib/bc/benchmarks/bc/bitfuncs.bc +++ /dev/null @@ -1,18 +0,0 @@ -#! /usr/bin/bc -lq - -scale = 0 -max = 10000 - -print "scale = 0\n" - -for (i = 0; i < max; ++i) { - - a = rand() - b = rand() - - print "band(", a, ", ", b, ")\n" - print "bor(", a, ", ", b, ")\n" - print "bxor(", a, ", ", b, ")\n" - print "blshift(", a, ", ", b % 32, ")\n" - print "brshift(", a, ", ", b % 32, ")\n" -} diff --git a/contrib/bc/benchmarks/bc/constants.bc b/contrib/bc/benchmarks/bc/constants.bc deleted file mode 100644 index 1f7b92d47566..000000000000 --- a/contrib/bc/benchmarks/bc/constants.bc +++ /dev/null @@ -1,41 +0,0 @@ -#! /usr/bin/bc -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * 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 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. -# - -max = 1000 -max2 = 1000 - -for (i = 0; i < max; ++i) { - - print "c = ", i, "\n" - print "e = 0.", i, "\n" - - for (j = 0; j < max2; ++j) { - print "d = ", i, ".", j, "\n" - } -} diff --git a/contrib/bc/benchmarks/bc/divide.bc b/contrib/bc/benchmarks/bc/divide.bc deleted file mode 100644 index 227794badbcb..000000000000 --- a/contrib/bc/benchmarks/bc/divide.bc +++ /dev/null @@ -1,26 +0,0 @@ -#! /usr/bin/bc -lq - -print "scale = 20\n" -print "x = 1234567890 * 10^(-scale)\n" -print "len = 1 + 2 * scale\n" -print "scale += 10\n" - -scale = 20 -x = 1234567890 * 10^(-scale) -len = 1 + 2 * scale - -scale += 10 - -for (i = 0; i <= len; ++i) { - print "a[", i, "] = x * (10^", i, ")\n" -} - -for (i = 1; i <= 10000; ++i) { - for (j = 0; j < len; ++j) { - print "v = a[0] / a[", j, "]\n" - print "v = a[", i, "] / a[", j, "]\n" - print "v = (a[0] * ", i, ") / a[", j, "]\n" - print "v = a[0] / (a[", j, "] * ", i, ")\n" - print "v = (a[0] * ", i, ") / (a[", j, "] * ", i, ")\n" - } -} diff --git a/contrib/bc/benchmarks/bc/functions.bc b/contrib/bc/benchmarks/bc/functions.bc deleted file mode 100644 index dc6ae8d6edc5..000000000000 --- a/contrib/bc/benchmarks/bc/functions.bc +++ /dev/null @@ -1,34 +0,0 @@ -#! /usr/bin/bc -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * 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 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. -# - -max = 1000000 - -for (i = 0; i < max; ++i) { - print "define etsna", i, "(n) {\n\tn\n}\n" -} diff --git a/contrib/bc/benchmarks/bc/irand_long.bc b/contrib/bc/benchmarks/bc/irand_long.bc deleted file mode 100644 index 9274f8953b60..000000000000 --- a/contrib/bc/benchmarks/bc/irand_long.bc +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/bc -lq - -start = 2^256 -end = start + 10000000 - -for (i = start; i < end; ++i) { - print "irand(", i, ")\n" -} - diff --git a/contrib/bc/benchmarks/bc/irand_short.bc b/contrib/bc/benchmarks/bc/irand_short.bc deleted file mode 100644 index 16ae863f2e2b..000000000000 --- a/contrib/bc/benchmarks/bc/irand_short.bc +++ /dev/null @@ -1,5 +0,0 @@ -#! /usr/bin/bc -lq - -for (i = 2; i < 10000000; ++i) { - print "irand(", i, ")\n" -} diff --git a/contrib/bc/benchmarks/bc/lib.bc b/contrib/bc/benchmarks/bc/lib.bc deleted file mode 100644 index 87b5f9168458..000000000000 --- a/contrib/bc/benchmarks/bc/lib.bc +++ /dev/null @@ -1,7 +0,0 @@ -#! /usr/bin/bc -lq - -print "for (i = 100; i < 1000; ++i) {\n" -print " v = pi(i)\n" -print " v = e(v)\n" -print " v = l(v)\n" -print "}\n" diff --git a/contrib/bc/benchmarks/bc/multiply.bc b/contrib/bc/benchmarks/bc/multiply.bc deleted file mode 100644 index d4ed08e055c8..000000000000 --- a/contrib/bc/benchmarks/bc/multiply.bc +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/bin/bc -lq - -print "scale = 20\n" -print "x = 1234567890 / scale\n" -print "len = length(x) + 1 + scale\n" - -scale = 20 -x = 1234567890 / scale -len = length(x) + 1 + scale - -for (i = 0; i <= len; ++i) { - print "a[", i, "] = x * (10^", i, ")\n" -} - -for (i = 1; i <= 10000; ++i) { - for (j = 0; j < len; ++j) { - print "v = a[0] * a[", j, "]\n" - print "v = a[", i, "] * a[", j, "]\n" - print "v = (a[0] * ", i, ") * a[", j, "]\n" - print "v = a[0] * (a[", j, "] * ", i, ")\n" - print "v = (a[0] * ", i, ") * (a[", j, "] * ", i, ")\n" - } -} diff --git a/contrib/bc/benchmarks/bc/postfix_incdec.bc b/contrib/bc/benchmarks/bc/postfix_incdec.bc deleted file mode 100644 index 922a065a8172..000000000000 --- a/contrib/bc/benchmarks/bc/postfix_incdec.bc +++ /dev/null @@ -1,7 +0,0 @@ -#! /usr/bin/bc -lq - -max = 1000000 - -for (i = 0; i < max; ++i) { - print "i++\ni--\n" -} diff --git a/contrib/bc/benchmarks/bc/power.bc b/contrib/bc/benchmarks/bc/power.bc deleted file mode 100644 index b067aa732d10..000000000000 --- a/contrib/bc/benchmarks/bc/power.bc +++ /dev/null @@ -1,2 +0,0 @@ -#! /usr/bin/bc -lq - diff --git a/contrib/bc/benchmarks/bc/strings.bc b/contrib/bc/benchmarks/bc/strings.bc deleted file mode 100644 index 13cf200cdb89..000000000000 --- a/contrib/bc/benchmarks/bc/strings.bc +++ /dev/null @@ -1,36 +0,0 @@ -#! /usr/bin/bc -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * 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 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. -# - -max = 1000000 - -print "\qasotehnuasnotehustnaoheusntaoheustnaoheusntaoehunsatoheuastoehuaosnetuhaosetnuhaosentuahoesntuahoeuhstoeunhatoehusanotehusatnoheus\q\n" - -for (i = 0; i < max; ++i) { - print "\qabc", i, " = ", i, "\\n\q\n" -} diff --git a/contrib/bc/benchmarks/bc/subtract.bc b/contrib/bc/benchmarks/bc/subtract.bc deleted file mode 100644 index b88bd60e935c..000000000000 --- a/contrib/bc/benchmarks/bc/subtract.bc +++ /dev/null @@ -1,22 +0,0 @@ -#! /usr/bin/bc -lq - -print "scale = 20\n" -print "x = 1234567890 / scale\n" -print "len = length(x) + 1 + scale\n" -print "len *= 2\n" - -scale = 20 -x = 1234567890 / scale -len = length(x) + 1 + scale -len *= 2 - -for (i = 0; i <= len; ++i) { - print "a[", i, "] = x * (10^", i, ")\n" -} - -for (i = 1; i <= 10000; ++i) { - for (j = 0; j < len; ++j) { - print "v = a[", i, "] - a[", j, "]\n" - } -} - diff --git a/contrib/bc/benchmarks/dc/modexp.dc b/contrib/bc/benchmarks/dc/modexp.dc deleted file mode 100644 index 48f304cb92da..000000000000 --- a/contrib/bc/benchmarks/dc/modexp.dc +++ /dev/null @@ -1,42 +0,0 @@ -#! /usr/bin/dc -# -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2018-2021 Gavin D. Howard and contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * 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 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. - -[ ]ss -[|]so -100sm 0si -[ - li1+si 0sj - [ - lj1+sj 0sk - [ - lk1+sk lin lsn ljn lsn lkn lsn lon 10P lk lm !scale)scale=l - t=irand(t)/t - scale=s - return t -} -define ifbrand(i,b,p){return irand(abs(i)$)+fbrand(b,p)} -``` - -This allows me to use `bc` as part of my `bash` prompt. - -## Code Style - -The code style for `bc` is...weird, and that comes from historical accident. - -In [History][23], I mentioned how I got my `bc` in [toybox][16]. Well, in order -to do that, my `bc` originally had toybox style. Eventually, I changed to using -tabs, and assuming they were 4 spaces wide, but other than that, I basically -kept the same style, with some exceptions that are more or less dependent on my -taste. - -The code style is as follows: - -* Tabs are 4 spaces. -* Tabs are used at the beginning of lines for indent. -* Spaces are used for alignment. -* Lines are limited to 80 characters, period. -* Pointer asterisk (`*`) goes with the variable (on the right), not the type, - unless it is for a pointer type returned from a function. -* The opening brace is put on the same line as the header for the function, - loop, or `if` statement. -* Unless the header is more than one line, in which case the opening brace is - put on its own line. -* If the opening brace is put on its own line, there is no blank line after it. -* If the opening brace is *not* put on its own line, there *is* a blank line - after it, *unless* the block is only one or two lines long. -* Code lines are grouped into what I call "paragraphs." Basically, lines that - seem like they should go together are grouped together. This one comes down - to judgment. -* Bodies of `if` statements, `else` statements, and loops that are one line - long are put on the same line as the statement, unless the header is more than - one line long, and/or, the header and body cannot fit into 80 characters with - a space inbetween them. -* If single-line bodies are on a separate line from their headers, and the - headers are only a single line, then no braces are used. -* However, braces are *always* used if they contain another `if` statement or - loop. -* Loops with empty bodies are ended with a semicolon. -* Expressions that return a boolean value are surrounded by paretheses. -* Macro backslashes are aligned as far to the left as possible. -* Binary operators have spaces on both sides. -* If a line with binary operators overflows 80 characters, a newline is inserted - *after* binary operators. -* Function modifiers and return types are on the same line as the function name. -* With one exception, `goto`'s are only used to jump to the end of a function - for cleanup. -* All structs, enums, and unions are `typedef`'ed. -* All constant data is in one file: [`src/data.c`][131], but the corresponding - `extern` declarations are in the appropriate header file. -* All local variables are declared at the beginning of the scope where they - appear. They may be initialized at that point, if it does not invoke UB or - otherwise cause bugs. -* All precondition `assert()`'s (see [Asserts][135]) come *after* local variable - declarations. -* Besides short `if` statements and loops, there should *never* be more than one - statement per line. - -### ClangFormat - -I attempted three times to use [ClangFormat][24] to impose a standard, -machine-useful style on `bc`. All three failed. Otherwise, the style in this -repo would be more consistent. - -## Repo Structure - -Functions are documented with Doxygen-style doc comments. Functions that appear -in headers are documented in the headers, while static functions are documented -where they are defined. - -### `bcl.sln` - -A Visual Studio solution file for [`bcl`][156]. This, along with -[`bcl.vcxproj`][63] and [`bcl.vcxproj.filters`][64] is what makes it possible to -build [`bcl`][156] on Windows. - -### `bcl.vcxproj` - -A Visual Studio project file for [`bcl`][156]. This, along with [`bcl.sln`][65] -and [`bcl.vcxproj.filters`][64] is what makes it possible to build [`bcl`][156] -on Windows. - -### `bcl.vcxproj.filters` - -A Visual Studio filters file for [`bcl`][156]. This, along with [`bcl.sln`][65] -and [`bcl.vcxproj`][63] is what makes it possible to build [`bcl`][156] on -Windows. - -### `bc.sln` - -A Visual Studio solution file for `bc`. This, along with [`bc.vcxproj`][66] -and [`bc.vcxproj.filters`][67] is what makes it possible to build `bc` on -Windows. - -### `bc.vcxproj` - -A Visual Studio project file for `bc`. This, along with [`bc.sln`][68] and -[`bc.vcxproj.filters`][67] is what makes it possible to build `bc` on Windows. - -### `bc.vcxproj.filters` - -A Visual Studio filters file for `bc`. This, along with [`bc.sln`][68] and -[`bc.vcxproj`][66] is what makes it possible to build `bc` on Windows. - -### `configure` - -A symlink to [`configure.sh`][69]. - -### `configure.sh` - -This is the script to configure `bc` and [`bcl`][156] for building. - -This `bc` has a custom build system. The reason for this is because of -[*portability*][136]. - -If `bc` used an outside build system, that build system would be an external -dependency. Thus, I had to write a build system for `bc` that used nothing but -C99 and POSIX utilities. - -One of those utilities is POSIX `sh`, which technically implements a -Turing-complete programming language. It's a terrible one, but it works. - *** 8168 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Mon Oct 4 08:06: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 38DA167968A; Mon, 4 Oct 2021 08:06: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 4HNCwk5RFRz3rXk; Mon, 4 Oct 2021 08:06: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 8169115D29; Mon, 4 Oct 2021 08:06: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 19486k3t054647; Mon, 4 Oct 2021 08:06:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19486kaW054646; Mon, 4 Oct 2021 08:06:46 GMT (envelope-from git) Date: Mon, 4 Oct 2021 08:06:46 GMT Message-Id: <202110040806.19486kaW054646@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: f774652b0e83 - main - contrib/bc: temporarily disconnect the tests for 5.0.2 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: f774652b0e837be415abd20935eae3466ea34a20 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, 04 Oct 2021 08:06:47 -0000 The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=f774652b0e837be415abd20935eae3466ea34a20 commit f774652b0e837be415abd20935eae3466ea34a20 Author: Stefan Eßer AuthorDate: 2021-10-04 07:50:44 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 07:50:44 +0000 contrib/bc: temporarily disconnect the tests for 5.0.2 The tests that come with version 5.0.2 have been extended to cover the line editing functions. It has been found that these tests generate false negative results in FreeBSD, most likely due to an issue in the pexpect functionality used. These history tests are skipped on systems that do not have python and py-pexpect installed (and thus are unlikely to cause CI test failures), but in order to not cause irritating failures on systems were these packages are in fact installed, I temporarily disconnect them. I had planned to skip this version due to the issue with the history tests, but some committer has asked me to go ahead since the currently used version 5.0.0 contains a macro name that collides with a project he is working on. No MFC of this version is planned. A version 5.0.3 is expected to be released soon, and that version will allow to reconnect the tests and will be MFCed. --- usr.bin/gh-bc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/gh-bc/Makefile b/usr.bin/gh-bc/Makefile index e5f68b704d79..e6e2f45aca73 100644 --- a/usr.bin/gh-bc/Makefile +++ b/usr.bin/gh-bc/Makefile @@ -67,8 +67,8 @@ MAN_SRC_DC= dc/A.1 CFLAGS+= -flto .endif -HAS_TESTS= -SUBDIR.${MK_TESTS}+= tests +#HAS_TESTS= +#SUBDIR.${MK_TESTS}+= tests .for catalog in ${CATALOGS} NLS+= ${catalog:C/.*://} From owner-dev-commits-src-all@freebsd.org Mon Oct 4 08:48: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 3A00767A0C9; Mon, 4 Oct 2021 08:48:10 +0000 (UTC) (envelope-from mpp302@gmail.com) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 4HNDrV0ys1z3tg5; Mon, 4 Oct 2021 08:48:10 +0000 (UTC) (envelope-from mpp302@gmail.com) Received: by mail-wr1-f53.google.com with SMTP id u18so29421492wrg.5; Mon, 04 Oct 2021 01:48:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:to:cc:references:from:subject:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=ACTCrNmOCq4OAUif+f58vHyqAoPit73czFSS2fbaBcc=; b=I4b9ujbH0LGxuPmlwORDPP2vmVTHzoGBtdeqWQHa3f7cds7Crl5faWhRyBQo69+n7O zJVrb0luvfXq1EFOoVWxW41rWVbmRRJEt004nJnADvAIGb49WTTaNyNuQ7x1Hu7RiMmS /eM28kGl52TnYV5NgcpnrtBGshRfY8AiX0U2xVbBk8ur56GPDrWqlgjzHzPBFQ/iOr3C EH5IG0o6Vho3vV5LOUTlMDdi+O89cdIQwBiL4ASE6p2wVoO7PsaoDDIHuw+VdI84xuTU JAaBc2mxefGuEnwyt3ybVrVJqkFsAKjo0VYgCvw+i3ZoWSiL38O84U6AN2lM6m8ORBjU BE7A== X-Gm-Message-State: AOAM5315ygwyVO/cQGew+hqOXKGiD6EN7H/EoljXh4lEMBEjnfHu8D8K 3gJ3dt6eOTi0YsJpy9b8eDAX4eFeJgs= X-Google-Smtp-Source: ABdhPJyfyH9adiSqNLXCbKbkcC6U4m1vBiHbda5xuUyeOgnNx4CDYgvqkhNDEq+0ZRwfxvAojpmsWg== X-Received: by 2002:adf:c6c5:: with SMTP id c5mr294799wrh.46.1633337283139; Mon, 04 Oct 2021 01:48:03 -0700 (PDT) Received: from [192.168.0.15] (ip5f5bd4ef.dynamic.kabel-deutschland.de. [95.91.212.239]) by smtp.gmail.com with ESMTPSA id 20sm16232569wme.46.2021.10.04.01.48.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 04 Oct 2021 01:48:02 -0700 (PDT) To: Hans Petter Selasky , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Christos Margiolis References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> From: Mateusz Piotrowski <0mp@FreeBSD.org> Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. Message-ID: Date: Mon, 4 Oct 2021 10:48:03 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Content-Language: en-US X-Rspamd-Queue-Id: 4HNDrV0ys1z3tg5 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: Mon, 04 Oct 2021 08:48:10 -0000 Hi Hans, On 03/10/2021 21:08, Hans Petter Selasky wrote: > On 10/3/21 6:03 PM, Mateusz Piotrowski wrote: >> On 22/09/2021 20:03, Hans Petter Selasky wrote: >>> The branch main has been updated by hselasky: >>> >>> URL: https://cgit.FreeBSD.org/src/commit/?id=3D903873ce15600fc02a0ea4= 2cbf888cff232b411d >>> >>> commit 903873ce15600fc02a0ea42cbf888cff232b411d >>> Author:=C2=A0=C2=A0=C2=A0=C2=A0 Hans Petter Selasky >>> AuthorDate: 2021-09-22 13:42:51 +0000 >>> Commit:=C2=A0=C2=A0=C2=A0=C2=A0 Hans Petter Selasky >>> CommitDate: 2021-09-22 17:43:56 +0000 >>> >>> =C2=A0=C2=A0=C2=A0=C2=A0 Implement and use new mixer(3) library for F= reeBSD. >>> =C2=A0=C2=A0=C2=A0=C2=A0 Wiki article: https://wiki.freebsd.org/Summe= rOfCode2021Projects/SoundMixerImprovements >>> =C2=A0=C2=A0=C2=A0=C2=A0 This project was part of Google Summer of Co= de 2021. >> >> This may be a bit late to discuss but the new mixer has a completely d= ifferent >> set of options and command-line arguments. In addition to that, >> the output of the command is different. >> >> Shouldn't we keep supporting the previous way of interacting with mixe= r? >> I know that people are scripting mixer and its output in production >> in order to control soundcards. Are there any good reasons to keep the= new >> mixer(8) as it is now while keeping the old name? Perhaps we could cha= nge >> the name of the new mixer to, e.g., newmixer. Users are going to have = to >> rewrite their scripts for mixer(8) anyway for 14.0. >> > > It depends what level of compatibility you need. > > If you have a script parsing mixer output, then it needs to be binary c= ompatible so to speak. That=20 > means some new features like "mute" won't work. Hmm, I agree that mute and volume controls in the new CLI interface are v= ery consistent. However, in=20 case of the old CLI interface, the mute functionality could also be added= without a problem (at=20 least by looking at the manual pages, the "mute" command could look like = this: "mixer mute vol"). My=20 point is that I feel that the CLI interface should be backwards-compatibl= e in this case. > > Would it help to make a port, like "oldmixer", under "audio" ? That's a good idea. I've committed the "old" mixer to the ports tree:=20 https://cgit.freebsd.org/ports/commit/?id=3De9a0efe4509b8dbdef0b4e4b5b94a= bf0aebd78a9. However, I feel that it is a solution to a problem that could have been a= voided. The mixer=20 improvements should have been introduced in a way that users do not have = to do anything to keep=20 their scripts working. At the moment, it does not really matter if a user= has to install an=20 additional port or patch their scripts. In the end, it's extra work and p= otential bugs. On the other hand, from what I understand so far, mixer(8) needed a redes= ign. Also, usually people=20 don't script mixer(8) too heavily so the changes in the interface are goi= ng to be only a minor=20 annoyance when FreeBSD 14.0 is released. An entry in the release notes an= d the availability of the=20 old mixer in the ports tree should be enough. Best, Mateusz Piotrowski From owner-dev-commits-src-all@freebsd.org Mon Oct 4 09:02: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 F317B67A367; Mon, 4 Oct 2021 09:02: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 4HNF9B68PCz3vXS; Mon, 4 Oct 2021 09:02: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 B31DA1684A; Mon, 4 Oct 2021 09:02: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 19492cn6034564; Mon, 4 Oct 2021 09:02:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19492cb5034563; Mon, 4 Oct 2021 09:02:38 GMT (envelope-from git) Date: Mon, 4 Oct 2021 09:02:38 GMT Message-Id: <202110040902.19492cb5034563@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Hans Petter Selasky Subject: git: 8bc5971be1ec - main - UPDATING: Update notes about new mixer(8) utility. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: hselasky X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8bc5971be1ece76284b2cdb0addf051afc14044a 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, 04 Oct 2021 09:02:39 -0000 The branch main has been updated by hselasky: URL: https://cgit.FreeBSD.org/src/commit/?id=8bc5971be1ece76284b2cdb0addf051afc14044a commit 8bc5971be1ece76284b2cdb0addf051afc14044a Author: Hans Petter Selasky AuthorDate: 2021-10-04 09:00:56 +0000 Commit: Hans Petter Selasky CommitDate: 2021-10-04 09:01:47 +0000 UPDATING: Update notes about new mixer(8) utility. Differential Revision: https://reviews.freebsd.org/D31636 Sponsored by: NVIDIA Networking --- UPDATING | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UPDATING b/UPDATING index 34f2a1ee145b..2f432124233a 100644 --- a/UPDATING +++ b/UPDATING @@ -36,7 +36,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 14.x IS SLOW: 20210922: As of commit 903873ce1560, the mixer(8) utility has got a slightly new syntax. Please refer to the mixer(8) manual page for more - information. + information. The old mixer utility can be installed from ports: + audio/freebsd-13-mixer 20210911: As of commit 55089ef4f8bb, the global variable nfs_maxcopyrange has From owner-dev-commits-src-all@freebsd.org Mon Oct 4 09:13: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 B56D567AC08; Mon, 4 Oct 2021 09:13:21 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [IPv6:2a01:4f8:c17:6c4b::2]) (using TLSv1.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 4HNFPY3tsNz3vyc; Mon, 4 Oct 2021 09:13:21 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2020.home.selasky.org (unknown [178.17.145.105]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 40FA12600DF; Mon, 4 Oct 2021 11:13:19 +0200 (CEST) Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Mateusz Piotrowski <0mp@FreeBSD.org>, src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Christos Margiolis References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> From: Hans Petter Selasky Message-ID: Date: Mon, 4 Oct 2021 11:13:07 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4HNFPY3tsNz3vyc 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: Mon, 04 Oct 2021 09:13:21 -0000 Hi Mateusz, On 10/4/21 10:48 AM, Mateusz Piotrowski wrote: > Hi Hans, > > On 03/10/2021 21:08, Hans Petter Selasky wrote: >> On 10/3/21 6:03 PM, Mateusz Piotrowski wrote: >>> On 22/09/2021 20:03, Hans Petter Selasky wrote: >>>> The branch main has been updated by hselasky: >>>> >>>> URL: >>>> https://cgit.FreeBSD.org/src/commit/?id=903873ce15600fc02a0ea42cbf888cff232b411d >>>> >>>> >>>> commit 903873ce15600fc02a0ea42cbf888cff232b411d >>>> Author:     Hans Petter Selasky >>>> AuthorDate: 2021-09-22 13:42:51 +0000 >>>> Commit:     Hans Petter Selasky >>>> CommitDate: 2021-09-22 17:43:56 +0000 >>>> >>>>      Implement and use new mixer(3) library for FreeBSD. >>>>      Wiki article: >>>> https://wiki.freebsd.org/SummerOfCode2021Projects/SoundMixerImprovements >>>> >>>>      This project was part of Google Summer of Code 2021. >>> >>> This may be a bit late to discuss but the new mixer has a completely >>> different >>> set of options and command-line arguments. In addition to that, >>> the output of the command is different. >>> >>> Shouldn't we keep supporting the previous way of interacting with mixer? >>> I know that people are scripting mixer and its output in production >>> in order to control soundcards. Are there any good reasons to keep >>> the new >>> mixer(8) as it is now while keeping the old name? Perhaps we could >>> change >>> the name of the new mixer to, e.g., newmixer. Users are going to have to >>> rewrite their scripts for mixer(8) anyway for 14.0. >>> >> >> It depends what level of compatibility you need. >> >> If you have a script parsing mixer output, then it needs to be binary >> compatible so to speak. That means some new features like "mute" won't >> work. > Hmm, I agree that mute and volume controls in the new CLI interface are > very consistent. However, in case of the old CLI interface, the mute > functionality could also be added without a problem (at least by looking > at the manual pages, the "mute" command could look like this: "mixer > mute vol"). My point is that I feel that the CLI interface should be > backwards-compatible in this case. >> >> Would it help to make a port, like "oldmixer", under "audio" ? > > That's a good idea. I've committed the "old" mixer to the ports tree: > https://cgit.freebsd.org/ports/commit/?id=e9a0efe4509b8dbdef0b4e4b5b94abf0aebd78a9. > > > However, I feel that it is a solution to a problem that could have been > avoided. The mixer improvements should have been introduced in a way > that users do not have to do anything to keep their scripts working. At > the moment, it does not really matter if a user has to install an > additional port or patch their scripts. In the end, it's extra work and > potential bugs. I agree we should avoid breakage. On the other hand only having one API to use is better for the long run. Look at USB for example. We support multiple different USB APIs. Plain file descriptor based ugen, USB FS IOCTLs, libusb v0.1, libusb v1.0 and BSD's libusb v2.0. It makes everyone happy at least :-) Similarly there has been new evdev APIs for X.org and Wayland, and having to choose among old and new APIs is confusing for the end-user. With regards to mixer(8) it looks like we now have a maintainer, Christos. Feel free to correct me if I'm wrong. > On the other hand, from what I understand so far, mixer(8) needed a > redesign. Also, usually people don't script mixer(8) too heavily so the > changes in the interface are going to be only a minor annoyance when > FreeBSD 14.0 is released. An entry in the release notes and the > availability of the old mixer in the ports tree should be enough. > Thanks for making that port. I've now updated the notes in UPDATING to mention it: https://cgit.freebsd.org/src/commit/?id=8bc5971be1ece76284b2cdb0addf051afc14044a --HPS From owner-dev-commits-src-all@freebsd.org Mon Oct 4 09:40: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 4D7C567B229; Mon, 4 Oct 2021 09:40: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 4HNG181Vnnz4SLw; Mon, 4 Oct 2021 09:40: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 1390916E76; Mon, 4 Oct 2021 09:40: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 1949eiW8082652; Mon, 4 Oct 2021 09:40:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1949eiEa082651; Mon, 4 Oct 2021 09:40:44 GMT (envelope-from git) Date: Mon, 4 Oct 2021 09:40:44 GMT Message-Id: <202110040940.1949eiEa082651@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 396851c20aeb - main - ncurses: split libtinfo from libncurses MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 396851c20aebdfada7c108bef5695c6a372e75b1 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, 04 Oct 2021 09:40:44 -0000 The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=396851c20aebdfada7c108bef5695c6a372e75b1 commit 396851c20aebdfada7c108bef5695c6a372e75b1 Author: Baptiste Daroussin AuthorDate: 2021-09-23 01:49:51 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-04 09:38:21 +0000 ncurses: split libtinfo from libncurses many external program expects libncurses to not be provided as a single library. Instead of fixing all ports, distribute ncurses the way upstream distributes it Turn libncursesw.so into a ldscript which will link automatically as needed to libtinfow so so this change is seamless at compile time. Differential Revision: https://reviews.freebsd.org/D32098 --- lib/ncurses/Makefile | 6 +- lib/ncurses/config.mk | 5 +- lib/ncurses/ncurses/Makefile | 1001 +----------------------- lib/ncurses/ncurses/libncursesw.ldscript | 1 + lib/ncurses/tinfo/Makefile | 1066 ++++++++++++++++++++++++++ lib/ncurses/tinfo/Makefile.depend | 18 + lib/ncurses/{ncurses => tinfo}/ncurses_cfg.h | 0 lib/ncurses/tinfo/pathnames.h | 36 + share/mk/bsd.libnames.mk | 2 +- share/mk/src.libnames.mk | 5 +- 10 files changed, 1151 insertions(+), 989 deletions(-) diff --git a/lib/ncurses/Makefile b/lib/ncurses/Makefile index be8697fbc609..da3791d01703 100644 --- a/lib/ncurses/Makefile +++ b/lib/ncurses/Makefile @@ -1,11 +1,11 @@ # $FreeBSD$ -SUBDIR= ncurses form menu panel +SUBDIR= tinfo ncurses form menu panel SUBDIR_PARALLEL= -.for subdir in ${SUBDIR:Nncurses*} -SUBDIR_DEPEND_${subdir}= ncurses +.for subdir in ${SUBDIR:Ntinfo*} +SUBDIR_DEPEND_${subdir}= tinfo .endfor .include diff --git a/lib/ncurses/config.mk b/lib/ncurses/config.mk index 0ca0e4547ba8..c322cbeaa681 100644 --- a/lib/ncurses/config.mk +++ b/lib/ncurses/config.mk @@ -11,14 +11,14 @@ CFLAGS+= -D_XOPEN_SOURCE_EXTENDED NCURSES_CFG_H= ${.CURDIR}/ncurses_cfg.h CFLAGS+= -I. -CFLAGS+= -I${.CURDIR:H}/ncurses +CFLAGS+= -I${.CURDIR:H}/tinfo # for ${NCURSES_CFG_H} CFLAGS+= -I${.CURDIR:H}/ncurses CFLAGS+= -I${NCURSES_DIR}/include CFLAGS+= -I${NCURSES_DIR}/ncurses -CFLAGS+= -I${.OBJDIR:H}/ncurses/ +CFLAGS+= -I${.OBJDIR:H}/tinfo/ CFLAGS+= -Wall @@ -28,6 +28,7 @@ CFLAGS+= -DHAVE_CONFIG_H # everyone needs this .PATH: ${NCURSES_DIR}/include +.PATH: ${.OBJDIR:H}/tinfo/ # tools and directories AWK?= awk diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile index 5a1fab7003a6..35b123a22292 100644 --- a/lib/ncurses/ncurses/Makefile +++ b/lib/ncurses/ncurses/Makefile @@ -12,85 +12,16 @@ SHLIB_MAJOR= 9 NO_LINT= -NCURSES_MAJOR!= egrep 'NCURSES_MAJOR[ ]*=' ${NCURSES_DIR}/dist.mk | sed -e 's%^[^0-9]*%%' -NCURSES_MINOR!= egrep 'NCURSES_MINOR[ ]*=' ${NCURSES_DIR}/dist.mk | sed -e 's%^[^0-9]*%%' -NCURSES_PATCH!= egrep 'NCURSES_PATCH[ ]*=' ${NCURSES_DIR}/dist.mk | sed -e 's%^[^0-9]*%%' - -# From autoconf (!) -NCURSES_CH_T= cchar_t -NCURSES_OK_WCHAR_T= 1 -NEED_WCHAR_H= 1 -NCURSES_EXT_COLORS= 1 -NCURSES_EXT_FUNCS= 1 -NCURSES_CONST= const -NCURSES_INLINE= inline -NCURSES_LIBUTF8= 0 -NCURSES_MBSTATE_T= 0 -NCURSES_MOUSE_VERSION= 2 -NCURSES_INTEROP_FUNCS= 1 -NCURSES_OPAQUE= 0 -NCURSES_OPAQUE= 0 -NCURSES_OPAQUE_FORM= 0 -NCURSES_OPAQUE_MENU= 0 -NCURSES_OPAQUE_PANEL= 0 -NCURSES_OSPEED= short -NCURSES_SBOOL= char -NCURSES_SIZE_T= short -NCURSES_TPARM_VARARGS= 1 -NCURSES_WCHAR_T= 0 -NCURSES_WINT_T= 0 -NCURSES_XNAMES= 1 -NCURSES_WCWIDTH_GRAPHICS= 1 -NCURSES_WATTR_MACROS= 1 -NCURSES_TPARM_ARG= intptr_t -NCURSES_SP_FUNCS= 1 -BROKEN_LINKER= 0 -BUILTIN_BOOL= 1 -ENABLE_LP64= 1 -ENABLE_OPAQUE= NCURSES_OPAQUE -ENABLE_REENTRANT= 0 -HAVE_TCGETATTR= 1 -HAVE_TERMIOS_H= 1 -HAVE_TERMIO_H= 0 -HAVE_VSSCANF= 1 -HAVE_STDINT_H= 1 -HEADER_STDBOOL= 1 -# XXX amd64 1L and int -ONEUL= 1U -TYPEOF_CHTYPE= uint32_t -TYPEOF_MMASK_T= uint32_t -TYPE_OF_BOOL= unsigned char -USE_BIG_STRINGS= 1 -USE_CXX_BOOL= defined(__cplusplus) - GENSRCS= \ - codes.c \ expanded.c \ - fallback.c \ - lib_gen.c \ - lib_keyname.c \ - names.c \ - unctrl.c + lib_gen.c -GENHDRS= \ - curses.h \ - hashsize.h \ - init_keytry.h \ - ncurses_def.h \ - nomacros.h \ - parametrized.h \ - term.h \ - termcap.h \ - unctrl.h - -SRCS= ${GENHDRS} ${GENSRCS} +SRCS= ${GENSRCS} .PATH: ${NCURSES_DIR}/ncurses/base SRCS+= \ - define_key.c \ - key_defined.c \ - keybound.c \ - keyok.c \ + new_pair.c \ + lib_dft_fgbg.c \ legacy_coding.c \ lib_addch.c \ lib_addstr.c \ @@ -106,12 +37,10 @@ SRCS+= \ lib_colorset.c \ lib_delch.c \ lib_delwin.c \ - lib_dft_fgbg.c \ lib_echo.c \ lib_endwin.c \ lib_erase.c \ lib_flash.c \ - lib_freeall.c \ lib_getch.c \ lib_getstr.c \ lib_hline.c \ @@ -132,6 +61,7 @@ SRCS+= \ lib_nl.c \ lib_overlay.c \ lib_pad.c \ + lib_print.c \ lib_printw.c \ lib_redrawln.c \ lib_refresh.c \ @@ -162,72 +92,29 @@ SRCS+= \ lib_wattron.c \ lib_winch.c \ lib_window.c \ - new_pair.c \ nc_panel.c \ resizeterm.c \ safe_sprintf.c \ - tries.c \ - version.c \ vsscanf.c \ - wresize.c + wresize.c \ + lib_freeall.c \ .PATH: ${NCURSES_DIR}/ncurses/tinfo SRCS+= \ - access.c \ - add_tries.c \ - alloc_entry.c \ - alloc_ttype.c \ - captoinfo.c \ - comp_captab.c \ - comp_error.c \ - comp_expand.c \ - comp_hash.c \ - comp_parse.c \ - comp_scan.c \ - comp_userdefs.c \ - db_iterator.c \ - doalloc.c \ - entries.c \ - free_ttype.c \ - getenv_num.c \ - hashed_db.c \ - home_terminfo.c \ - init_keytry.c \ - lib_acs.c \ - lib_baudrate.c \ - lib_cur_term.c \ - lib_data.c \ - lib_has_cap.c \ - lib_kernel.c \ - lib_longname.c \ - lib_napms.c \ - lib_options.c \ - lib_print.c \ - lib_raw.c \ - lib_setup.c \ - lib_termcap.c \ - lib_termname.c \ - lib_tgoto.c \ - lib_ti.c \ - lib_tparm.c \ - lib_tputs.c \ - lib_ttyflags.c \ - name_match.c \ - obsolete.c \ - parse_entry.c \ - read_entry.c \ - read_termcap.c \ - strings.c \ - trim_sgr0.c \ - write_entry.c + use_screen.c \ + use_window.c +.PATH: ${NCURSES_DIR}/ncurses/trace +SRCS+= \ + varargs.c + +# DONE .PATH: ${NCURSES_DIR}/ncurses/tty SRCS+= \ hardscroll.c \ hashmap.c \ lib_mvcur.c \ lib_tstp.c \ - lib_twait.c \ lib_vidattr.c \ tty_update.c @@ -254,893 +141,43 @@ SRCS+= \ lib_wacs.c \ lib_wunctrl.c -.PATH: ${NCURSES_DIR}/ncurses/trace -SRCS+= \ - lib_trace.c \ - visbuf.c - # Currently unused, for debugging libncurses itself. DBGSRCS= \ - lib_traceatr.c \ - lib_tracebits.c \ - lib_tracechr.c \ - lib_tracedmp.c \ - lib_tracemse.c \ - trace_buf.c \ - trace_tries.c \ - trace_xnames.c \ varargs.c -CLEANFILES= ${GENSRCS} ${GENHDRS} keys.list make_hash term.h.new \ - make_keys MKterm.h.awk comp_captab.c curses.head - -CFLAGS+= -DTERMIOS - -# Installed -HEADERS= curses.h term.h termcap.h unctrl.h -SRCHDRS= ncurses_dll.h -CLEANFILES+= ncurses_dll.h - -INCS= ${HEADERS} ${SRCHDRS} -INCSLINKS= curses.h ${INCLUDEDIR}/ncurses.h +CLEANFILES= ${GENSRCS} .if ${MK_INSTALLLIB} != "no" SYMLINKS+= libncursesw.a ${LIBDIR}/libcursesw.a -SYMLINKS+= libncursesw.a ${LIBDIR}/libtermcapw.a -SYMLINKS+= libncursesw.a ${LIBDIR}/libtermlibw.a -SYMLINKS+= libncursesw.a ${LIBDIR}/libtinfow.a # backward compat SYMLINKS+= libncursesw.a ${LIBDIR}/libncurses.a SYMLINKS+= libncursesw.a ${LIBDIR}/libcurses.a -SYMLINKS+= libncursesw.a ${LIBDIR}/libtermcap.a -SYMLINKS+= libncursesw.a ${LIBDIR}/libtermlib.a -SYMLINKS+= libncursesw.a ${LIBDIR}/libtinfo.a .endif .if !defined(NO_PIC) # no need for major at all, it's an ld-time redirection only SYMLINKS+= libncursesw.so ${LIBDIR}/libcursesw.so -SYMLINKS+= libncursesw.so ${LIBDIR}/libtermcapw.so -SYMLINKS+= libncursesw.so ${LIBDIR}/libtermlibw.so -SYMLINKS+= libncursesw.so ${LIBDIR}/libtinfow.so # backward compat SYMLINKS+= libncursesw.so ${LIBDIR}/libncurses.so SYMLINKS+= libncursesw.so ${LIBDIR}/libcurses.so -SYMLINKS+= libncursesw.so ${LIBDIR}/libtermcap.so -SYMLINKS+= libncursesw.so ${LIBDIR}/libtermlib.so -SYMLINKS+= libncursesw.so ${LIBDIR}/libtinfo.so .endif .if ${MK_PROFILE} != "no" SYMLINKS+= libncursesw_p.a ${LIBDIR}/libcursesw_p.a -SYMLINKS+= libncursesw_p.a ${LIBDIR}/libtermcapw_p.a -SYMLINKS+= libncursesw_p.a ${LIBDIR}/libtermlibw_p.a -SYMLINKS+= libncursesw_p.a ${LIBDIR}/libtinfow_p.a # backward compat SYMLINKS+= libncursesw_p.a ${LIBDIR}/libncurses_p.a SYMLINKS+= libncursesw_p.a ${LIBDIR}/libcurses_p.a -SYMLINKS+= libncursesw_p.a ${LIBDIR}/libtermcap_p.a -SYMLINKS+= libncursesw_p.a ${LIBDIR}/libtermlib_p.a -SYMLINKS+= libncursesw_p.a ${LIBDIR}/libtinfo_p.a .endif -DOCSDIR= ${SHAREDIR}/doc/ncurses -DOCS= ncurses-intro.html hackguide.html +LIBADD+= tinfow +SHLIB_LDSCRIPT= libncursesw.ldscript -.if ${MK_HTML} != "no" -.PATH: ${NCURSES_DIR}/doc/html -FILESGROUPS= DOCS -.endif - -# Generated source -.ORDER: names.c codes.c - -names.c: MKnames.awk - ${AWK} -f ${NCURSES_DIR}/ncurses/tinfo/MKnames.awk bigstrings=${USE_BIG_STRINGS} ${NCURSES_DIR}/include/Caps > names.c - -codes.c: MKcodes.awk - ${AWK} -f ${NCURSES_DIR}/ncurses/tinfo/MKcodes.awk bigstrings=${USE_BIG_STRINGS} ${NCURSES_DIR}/include/Caps > codes.c +libncurses.ldscript: + @${ECHO} "INPUT(${SHLIB_NAME} AS NEEDED(-ltinfow))" >$@ lib_gen.c: MKlib_gen.sh curses.h ncurses_dll.h LC_ALL=C sh ${NCURSES_DIR}/ncurses/base/MKlib_gen.sh "${CPP:N${CCACHE_BIN}} ${CFLAGS}" \ "${AWK}" generated < curses.h >$@ -lib_keyname.c: keys.list MKkeyname.awk - ${AWK} -f ${NCURSES_DIR}/ncurses/base/MKkeyname.awk bigstrings=${USE_BIG_STRINGS} keys.list > lib_keyname.c - -unctrl.c: MKunctrl.awk - echo | ${AWK} -f ${NCURSES_DIR}/ncurses/base/MKunctrl.awk bigstrings=${USE_BIG_STRINGS} > unctrl.c - -comp_captab.c: MKcaptab.sh MKcaptab.awk Caps Caps-ncurses make_hash - env PATH=${BTOOLSPATH:U.}:${PATH} sh ${NCURSES_DIR}/ncurses/tinfo/MKcaptab.sh "${AWK}" \ - ${USE_BIG_STRINGS} ${NCURSES_DIR}/ncurses/tinfo/MKcaptab.awk \ - ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses > comp_captab.c - expanded.c: MKexpanded.sh sh ${NCURSES_DIR}/ncurses/tty/MKexpanded.sh "${CC:N${CCACHE_BIN}} -E" ${CFLAGS} >expanded.c -fallback.c: MKfallback.sh - sh ${NCURSES_DIR}/ncurses/tinfo/MKfallback.sh "" "" "" > ${.TARGET}.tmp && \ - mv -f ${.TARGET}.tmp ${.TARGET} - -comp_userdefs.c: MKuserdefs.sh Caps Caps-ncurses make_hash - env PATH=${BTOOLSPATH:U.}:${PATH} sh ${NCURSES_DIR}/ncurses/tinfo/MKuserdefs.sh "${AWK}" \ - ${USE_BIG_STRINGS} ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses > ${.TARGET} - -# Generated headers -nomacros.h: MKlib_gen.sh curses.h - LC_ALL=C sh ${NCURSES_DIR}/ncurses/base/MKlib_gen.sh "${CC:N${CCACHE_BIN}} -E ${CFLAGS}" \ - "${AWK}" generated < curses.h | fgrep undef > $@ - -init_keytry.h: keys.list make_keys - ${BTOOLSPATH:U.}/make_keys keys.list > init_keytry.h - -hashsize.h: MKhashsize.sh Caps Caps-ncurses - sh ${NCURSES_DIR}/include/MKhashsize.sh ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses > $@ - -parametrized.h: MKparametrized.sh Caps Caps-ncurses - AWK=${AWK} sh ${NCURSES_DIR}/include/MKparametrized.sh \ - ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses > $@ - -term.h: MKterm.h.awk edit_cfg.sh Caps Caps-ncurses - ${AWK} -f MKterm.h.awk ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses > $@.new - sh ${NCURSES_DIR}/include/edit_cfg.sh ${NCURSES_CFG_H} $@.new - mv -f $@.new $@ - -curses.h: curses.head MKkey_defs.sh Caps Caps-ncurses - cat curses.head > $@.new - AWK=${AWK} _POSIX2_VERSION=199209 sh ${NCURSES_DIR}/include/MKkey_defs.sh \ - ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses >> $@.new - cat ${NCURSES_DIR}/include/curses.wide >> $@.new - cat ${NCURSES_DIR}/include/curses.tail >> $@.new - mv -f $@.new $@ - -# Generated intermediate files -keys.list: MKkeys_list.sh Caps Caps-ncurses - AWK=${AWK} sh ${NCURSES_DIR}/ncurses/tinfo/MKkeys_list.sh \ - ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/include/Caps-ncurses | LC_ALL=C sort > keys.list - -# Build tools -DEPENDOBJS+= make_hash make_keys -build-tools: make_hash make_keys - -make_keys: make_keys.c names.c ncurses_def.h ${HEADERS} ${BUILD_TOOLS_META} - ${CC:N${CCACHE_BIN}} -o $@ ${CFLAGS} ${NCURSES_DIR}/ncurses/tinfo/make_keys.c - -make_hash: make_hash.c hashsize.h ncurses_def.h ${HEADERS} ${BUILD_TOOLS_META} - ${CC:N${CCACHE_BIN}} -o $@ ${CFLAGS} -DMAIN_PROGRAM \ - ${NCURSES_DIR}/ncurses/tinfo/make_hash.c - -# ./configure generated -MKterm.h.awk: MKterm.h.awk.in - sed <${NCURSES_DIR}/include/MKterm.h.awk.in >$@ \ - -e "/@BROKEN_LINKER@/s%%${BROKEN_LINKER}%" \ - -e "s%@NCURSES_USE_DATABASE@%1%g" \ - -e "s%@NCURSES_USE_TERMCAP@%1%g" \ - -e "/@NCURSES_MAJOR@/s%%${NCURSES_MAJOR}%" \ - -e "/@NCURSES_MINOR@/s%%${NCURSES_MINOR}%" \ - -e "/@NCURSES_CONST@/s%%${NCURSES_CONST}%" \ - -e "/@NCURSES_TPARM_VARARGS@/s%%${NCURSES_TPARM_VARARGS}%" \ - -e "/@NCURSES_SBOOL@/s%%${NCURSES_SBOOL}%" \ - -e "/@NCURSES_XNAMES@/s%%${NCURSES_XNAMES}%" \ - -e "/@NCURSES_EXT_COLORS@/s%%${NCURSES_EXT_COLORS}%" \ - -e "/@HAVE_TERMIOS_H@/s%%${HAVE_TERMIOS_H}%" \ - -e "/@HAVE_TERMIO_H@/s%%${HAVE_TERMIO_H}%" \ - -e "/@HAVE_TCGETATTR@/s%%${HAVE_TCGETATTR}%" \ - -e "s%@cf_cv_enable_reentrant@%${ENABLE_REENTRANT}%g" \ - -e "s%@NCURSES_SP_FUNCS@%1%" \ - -e "s%@NCURSES_PATCH@%${NCURSES_PATCH}%" - -termcap.h: termcap.h.in - sed <${NCURSES_DIR}/include/termcap.h.in >$@ \ - -e "/@NCURSES_MAJOR@/s%%${NCURSES_MAJOR}%" \ - -e "/@NCURSES_MINOR@/s%%${NCURSES_MINOR}%" \ - -e "/@NCURSES_CONST@/s%%${NCURSES_CONST}%" \ - -e "/@NCURSES_OSPEED@/s%%${NCURSES_OSPEED}%" - -ncurses_dll.h: ncurses_dll.h.in - sed <${NCURSES_DIR}/include/ncurses_dll.h.in >$@ \ - -e "s%@NCURSES_WRAP_PREFIX@%_nc_%g" - -curses.head: curses.h.in - sed <${NCURSES_DIR}/include/curses.h.in >$@ \ - -e "/@BROKEN_LINKER@/s%%${BROKEN_LINKER}%" \ - -e "/@HAVE_VSSCANF@/s%%${HAVE_VSSCANF}%" \ - -e "/@HAVE_STDINT_H@/s%%${HAVE_STDINT_H}%" \ - -e "/@NCURSES_CH_T@/s%%${NCURSES_CH_T}%" \ - -e "/@NCURSES_CONST@/s%%${NCURSES_CONST}%" \ - -e "/@NCURSES_EXT_COLORS@/s%%${NCURSES_EXT_COLORS}%" \ - -e "/@NCURSES_EXT_FUNCS@/s%%${NCURSES_EXT_FUNCS}%" \ - -e "/@NCURSES_INLINE@/s%%${NCURSES_INLINE}%" \ - -e "/@NCURSES_LIBUTF8@/s%%${NCURSES_LIBUTF8}%" \ - -e "/@NCURSES_MAJOR@/s%%${NCURSES_MAJOR}%" \ - -e "/@NCURSES_MBSTATE_T@/s%%${NCURSES_MBSTATE_T}%" \ - -e "/@NCURSES_MINOR@/s%%${NCURSES_MINOR}%" \ - -e "/@NCURSES_MOUSE_VERSION@/s%%${NCURSES_MOUSE_VERSION}%" \ - -e "/@NCURSES_OK_WCHAR_T@/s%%${NCURSES_OK_WCHAR_T}%" \ - -e "/@NCURSES_OPAQUE@/s%%${NCURSES_OPAQUE}%" \ - -e "/@NCURSES_OPAQUE_FORM@/s%%${NCURSES_OPAQUE_FORM}%" \ - -e "/@NCURSES_OPAQUE_MENU@/s%%${NCURSES_OPAQUE_MENU}%" \ - -e "/@NCURSES_OPAQUE_PANEL@/s%%${NCURSES_OPAQUE_PANEL}%" \ - -e "/@NCURSES_PATCH@/s%%${NCURSES_PATCH}%" \ - -e "/@NCURSES_SIZE_T@/s%%${NCURSES_SIZE_T}%" \ - -e "/@NCURSES_TPARM_VARARGS@/s%%${NCURSES_TPARM_VARARGS}%" \ - -e "/@NCURSES_WATTR_MACROS@/s%%${NCURSES_WATTR_MACROS}%"\ - -e "/@NCURSES_WCHAR_T@/s%%${NCURSES_WCHAR_T}%" \ - -e "/@NCURSES_WCHAR_T@/s%%${NCURSES_WCHAR_T}%" \ - -e "/@NCURSES_WCWIDTH_GRAPHICS@/s%%${NCURSES_WCWIDTH_GRAPHICS}%g" \ - -e "/@NCURSES_WINT_T@/s%%${NCURSES_WINT_T}%" \ - -e "/@NCURSES_INTEROP_FUNCS@/s%%${NCURSES_INTEROP_FUNCS}%g" \ - -e "/@NCURSES_TPARM_ARG@/s%%${NCURSES_TPARM_ARG}%g" \ - -e "/@NCURSES_SP_FUNCS@/s%%${NCURSES_SP_FUNCS}%g" \ - -e "/@NEED_WCHAR_H@/s%%${NEED_WCHAR_H}%" \ - -e "/@USE_CXX_BOOL@/s%%${USE_CXX_BOOL}%" \ - -e "/@GENERATED_EXT_FUNCS@/s%%generated%g" \ - -e "s%@NCURSES_CCHARW_MAX@%5%g" \ - -e "s%@cf_cv_1UL@%${ONEUL}%g" \ - -e "s%@cf_cv_builtin_bool@%${BUILTIN_BOOL}%g" \ - -e "s%@cf_cv_enable_lp64@%${ENABLE_LP64}%g" \ - -e "s%@cf_cv_enable_opaque@%${ENABLE_OPAQUE}%g" \ - -e "s%@cf_cv_enable_reentrant@%${ENABLE_REENTRANT}%g" \ - -e "s%@cf_cv_header_stdbool_h@%${HEADER_STDBOOL}%g" \ - -e "s%@cf_cv_type_of_bool@%${TYPE_OF_BOOL}%g" \ - -e "s%@cf_cv_typeof_chtype@%${TYPEOF_CHTYPE}%g" \ - -e "s%@cf_cv_typeof_mmask_t@%${TYPEOF_MMASK_T}%g" \ - -e "s/ _WCHAR_T/ __wchar_t/g" \ - -e "s/ _WINT_T/ __wint_t/g" - -unctrl.h: unctrl.h.in - sed <${NCURSES_DIR}/include/$@.in >$@ \ - -e "s%@NCURSES_SP_FUNCS@%${NCURSES_SP_FUNCS}%g" \ - -e "/@NCURSES_MAJOR@/s%%${NCURSES_MAJOR}%" \ - -e "/@NCURSES_MINOR@/s%%${NCURSES_MINOR}%" - -# MAN page gunk -terminfo.5: MKterminfo.sh terminfo.head Caps - sh ${NCURSES_DIR}/man/MKterminfo.sh ${NCURSES_DIR}/man/terminfo.head \ - ${NCURSES_DIR}/include/Caps ${NCURSES_DIR}/man/terminfo.tail >$@ - -CLEANFILES+= terminfo.5 - -.PATH: ${NCURSES_DIR}/man -MAN= \ - curs_addch.3 \ - curs_addchstr.3 \ - curs_addstr.3 \ - curs_attr.3 \ - curs_beep.3 \ - curs_bkgd.3 \ - curs_bkgrnd.3 \ - curs_border.3 \ - curs_border_set.3 \ - curs_clear.3 \ - curs_color.3 \ - curs_delch.3 \ - curs_deleteln.3 \ - curs_extend.3 \ - curs_getcchar.3 \ - curs_getch.3 \ - curs_getstr.3 \ - curs_getyx.3 \ - curs_inch.3 \ - curs_inchstr.3 \ - curs_initscr.3 \ - curs_inopts.3 \ - curs_insch.3 \ - curs_insstr.3 \ - curs_instr.3 \ - curs_inwstr.3 \ - curs_kernel.3 \ - curs_legacy.3 \ - curs_memleaks.3 \ - curs_mouse.3 \ - curs_move.3 \ - curs_opaque.3 \ - curs_outopts.3 \ - curs_overlay.3 \ - curs_pad.3 \ - curs_print.3 \ - curs_refresh.3 \ - curs_scr_dump.3 \ - curs_scroll.3 \ - curs_slk.3 \ - curs_sp_funcs.3 \ - curs_termattrs.3 \ - curs_termcap.3 \ - curs_terminfo.3 \ - curs_threads.3 \ - curs_touch.3 \ - curs_trace.3 \ - curs_util.3 \ - curs_variables.3 \ - curs_window.3 \ - default_colors.3 \ - define_key.3 \ - key_defined.3 \ - keybound.3 \ - keyok.3 \ - legacy_coding.3 \ - ncurses.3 \ - new_pair.3 \ - resizeterm.3 \ - term_variables.3 \ - wresize.3 - -MAN+= \ - curs_add_wch.3 \ - curs_add_wchstr.3 \ - curs_addwstr.3 \ - curs_get_wch.3 \ - curs_get_wstr.3 \ - curs_in_wch.3 \ - curs_in_wchstr.3 \ - curs_ins_wch.3 \ - curs_ins_wstr.3 \ - curs_printw.3 \ - curs_scanw.3 - -MAN+= term.5 terminfo.5 scr_dump.5 user_caps.5 -MAN+= term.7 - -CLEANFILES+= ${MAN:M*.3} - -MLINKS= ncurses.3 curses.3 \ - curs_addch.3 addch.3 \ - curs_addch.3 echochar.3 \ - curs_addch.3 mvaddch.3 \ - curs_addch.3 mvwaddch.3 \ - curs_addch.3 waddch.3 \ - curs_addch.3 wechochar.3 \ - curs_addchstr.3 addchnstr.3 \ - curs_addchstr.3 addchstr.3 \ - curs_addchstr.3 mvaddchnstr.3 \ - curs_addchstr.3 mvaddchstr.3 \ - curs_addchstr.3 mvwaddchnstr.3 \ - curs_addchstr.3 mvwaddchstr.3 \ - curs_addchstr.3 waddchnstr.3 \ - curs_addchstr.3 waddchstr.3 \ - curs_addstr.3 addnstr.3 \ - curs_addstr.3 addstr.3 \ - curs_addstr.3 mvaddnstr.3 \ - curs_addstr.3 mvaddstr.3 \ - curs_addstr.3 mvwaddnstr.3 \ - curs_addstr.3 mvwaddstr.3 \ - curs_addstr.3 waddnstr.3 \ - curs_addstr.3 waddstr.3 \ - curs_attr.3 PAIR_NUMBER.3 \ - curs_attr.3 attr_get.3 \ - curs_attr.3 attr_off.3 \ - curs_attr.3 attr_on.3 \ - curs_attr.3 attr_set.3 \ - curs_attr.3 attroff.3 \ - curs_attr.3 attron.3 \ - curs_attr.3 attrset.3 \ - curs_attr.3 chgat.3 \ - curs_attr.3 color_set.3 \ - curs_attr.3 mvchgat.3 \ - curs_attr.3 mvwchgat.3 \ - curs_attr.3 standend.3 \ - curs_attr.3 standout.3 \ - curs_attr.3 wattr_get.3 \ - curs_attr.3 wattr_off.3 \ - curs_attr.3 wattr_on.3 \ - curs_attr.3 wattr_set.3 \ - curs_attr.3 wattroff.3 \ - curs_attr.3 wattron.3 \ - curs_attr.3 wattrset.3 \ - curs_attr.3 wchgat.3 \ - curs_attr.3 wcolor_set.3 \ - curs_attr.3 wstandend.3 \ - curs_attr.3 wstandout.3 \ - curs_beep.3 beep.3 \ - curs_beep.3 flash.3 \ - curs_bkgd.3 bkgd.3 \ - curs_bkgd.3 bkgdset.3 \ - curs_bkgd.3 getbkgd.3 \ - curs_bkgd.3 wbkgd.3 \ - curs_bkgd.3 wbkgdset.3 \ - curs_bkgrnd.3 bkgrnd.3 \ - curs_bkgrnd.3 bkgrndset.3 \ - curs_bkgrnd.3 getbkgrnd.3 \ - curs_bkgrnd.3 wbkgrnd.3 \ - curs_bkgrnd.3 wbkgrndset.3 \ - curs_bkgrnd.3 wgetbkgrnd.3 \ - curs_border.3 border.3 \ - curs_border.3 box.3 \ - curs_border.3 hline.3 \ - curs_border.3 mvhline.3 \ - curs_border.3 mvvline.3 \ - curs_border.3 mvwhline.3 \ - curs_border.3 mvwvline.3 \ - curs_border.3 vline.3 \ - curs_border.3 wborder.3 \ - curs_border.3 whline.3 \ - curs_border.3 wvline.3 \ - curs_border_set.3 border_set.3 \ - curs_border_set.3 box_set.3 \ - curs_border_set.3 hline_set.3 \ - curs_border_set.3 mvhline_set.3 \ - curs_border_set.3 mvvline_set.3 \ - curs_border_set.3 mvwhline_set.3 \ - curs_border_set.3 mvwvline_set.3 \ - curs_border_set.3 vline_set.3 \ - curs_border_set.3 wborder_set.3 \ - curs_border_set.3 whline_set.3 \ - curs_border_set.3 wvline_set.3 \ - curs_clear.3 clear.3 \ - curs_clear.3 clrtobot.3 \ - curs_clear.3 clrtoeol.3 \ - curs_clear.3 erase.3 \ - curs_clear.3 wclear.3 \ - curs_clear.3 wclrtobot.3 \ - curs_clear.3 wclrtoeol.3 \ - curs_clear.3 werase.3 \ - curs_color.3 COLOR_PAIR.3 \ - curs_color.3 can_change_color.3 \ - curs_color.3 color_content.3 \ - curs_color.3 has_colors.3 \ - curs_color.3 init_color.3 \ - curs_color.3 init_pair.3 \ - curs_color.3 pair_content.3 \ - curs_color.3 start_color.3 \ - curs_delch.3 delch.3 \ - curs_delch.3 mvdelch.3 \ - curs_delch.3 mvwdelch.3 \ - curs_delch.3 wdelch.3 \ - curs_deleteln.3 deleteln.3 \ - curs_deleteln.3 insdelln.3 \ - curs_deleteln.3 insertln.3 \ - curs_deleteln.3 wdeleteln.3 \ - curs_deleteln.3 winsdelln.3 \ - curs_deleteln.3 winsertln.3 \ - curs_extend.3 curses_version.3 \ - curs_extend.3 use_extended_names.3 \ - curs_getcchar.3 getcchar.3 \ - curs_getcchar.3 setcchar.3 \ - curs_getch.3 getch.3 \ - curs_getch.3 has_key.3 \ - curs_getch.3 mvgetch.3 \ - curs_getch.3 mvwgetch.3 \ - curs_getch.3 ungetch.3 \ - curs_getch.3 wgetch.3 \ - curs_getstr.3 getnstr.3 \ - curs_getstr.3 getstr.3 \ - curs_getstr.3 mvgetnstr.3 \ - curs_getstr.3 mvgetstr.3 \ - curs_getstr.3 mvwgetnstr.3 \ - curs_getstr.3 mvwgetstr.3 \ - curs_getstr.3 wgetnstr.3 \ - curs_getstr.3 wgetstr.3 \ - curs_getyx.3 getbegyx.3 \ - curs_getyx.3 getmaxyx.3 \ - curs_getyx.3 getparyx.3 \ - curs_getyx.3 getyx.3 \ - curs_inch.3 inch.3 \ - curs_inch.3 mvinch.3 \ - curs_inch.3 mvwinch.3 \ - curs_inch.3 winch.3 \ - curs_inchstr.3 inchnstr.3 \ - curs_inchstr.3 inchstr.3 \ - curs_inchstr.3 mvinchnstr.3 \ - curs_inchstr.3 mvinchstr.3 \ - curs_inchstr.3 mvwinchnstr.3 \ - curs_inchstr.3 mvwinchstr.3 \ - curs_inchstr.3 winchnstr.3 \ - curs_inchstr.3 winchstr.3 \ - curs_initscr.3 delscreen.3 \ - curs_initscr.3 endwin.3 \ - curs_initscr.3 initscr.3 \ - curs_initscr.3 isendwin.3 \ - curs_initscr.3 newterm.3 \ - curs_initscr.3 set_term.3 \ - curs_inopts.3 cbreak.3 \ - curs_inopts.3 echo.3 \ - curs_inopts.3 halfdelay.3 \ - curs_inopts.3 intrflush.3 \ - curs_inopts.3 keypad.3 \ - curs_inopts.3 meta.3 \ - curs_inopts.3 nocbreak.3 \ - curs_inopts.3 nodelay.3 \ - curs_inopts.3 noecho.3 \ - curs_inopts.3 noqiflush.3 \ - curs_inopts.3 noraw.3 \ - curs_inopts.3 notimeout.3 \ - curs_inopts.3 qiflush.3 \ - curs_inopts.3 raw.3 \ - curs_inopts.3 timeout.3 \ - curs_inopts.3 typeahead.3 \ - curs_inopts.3 wtimeout.3 \ - curs_insch.3 insch.3 \ - curs_insch.3 mvinsch.3 \ - curs_insch.3 mvwinsch.3 \ - curs_insch.3 winsch.3 \ - curs_insstr.3 insnstr.3 \ - curs_insstr.3 insstr.3 \ - curs_insstr.3 mvinsnstr.3 \ - curs_insstr.3 mvinsstr.3 \ - curs_insstr.3 mvwinsnstr.3 \ - curs_insstr.3 mvwinsstr.3 \ - curs_insstr.3 winsnstr.3 \ - curs_insstr.3 winsstr.3 \ - curs_instr.3 innstr.3 \ - curs_instr.3 instr.3 \ - curs_instr.3 mvinnstr.3 \ - curs_instr.3 mvinstr.3 \ - curs_instr.3 mvwinnstr.3 \ - curs_instr.3 mvwinstr.3 \ - curs_instr.3 winnstr.3 \ - curs_instr.3 winstr.3 \ - curs_kernel.3 curs_set.3 \ - curs_kernel.3 def_prog_mode.3 \ - curs_kernel.3 def_shell_mode.3 \ - curs_kernel.3 getsyx.3 \ - curs_kernel.3 napms.3 \ - curs_kernel.3 reset_prog_mode.3 \ - curs_kernel.3 reset_shell_mode.3 \ - curs_kernel.3 resetty.3 \ - curs_kernel.3 ripoffline.3 \ - curs_kernel.3 savetty.3 \ - curs_kernel.3 setsyx.3 \ - curs_legacy.3 getbegx.3 \ - curs_legacy.3 getbegy.3 \ - curs_legacy.3 getcurx.3 \ - curs_legacy.3 getcury.3 \ - curs_legacy.3 getmaxx.3 \ - curs_legacy.3 getmaxy.3 \ - curs_legacy.3 getparx.3 \ - curs_legacy.3 getpary.3 \ - curs_memleaks.3 _nc_free_and_exit.3 \ - curs_memleaks.3 _nc_freeall.3 \ - curs_mouse.3 getmouse.3 \ - curs_mouse.3 mouse_trafo.3 \ - curs_mouse.3 mouseinterval.3 \ - curs_mouse.3 mousemask.3 \ - curs_mouse.3 ungetmouse.3 \ - curs_mouse.3 wenclose.3 \ - curs_mouse.3 wmouse_trafo.3 \ - curs_move.3 move.3 \ - curs_move.3 wmove.3 \ - curs_opaque.3 is_cleared.3 \ - curs_opaque.3 is_idcok.3 \ - curs_opaque.3 is_idlok.3 \ - curs_opaque.3 is_immedok.3 \ - curs_opaque.3 is_keypad.3 \ - curs_opaque.3 is_leaveok.3 \ - curs_opaque.3 is_nodelay.3 \ - curs_opaque.3 is_notimeout.3 \ - curs_opaque.3 is_scrollok.3 \ - curs_opaque.3 is_syncok.3 \ - curs_opaque.3 is_timeout.3 \ - curs_opaque.3 wgetparent.3 \ - curs_opaque.3 wgetscrreg.3 \ - curs_outopts.3 clearok.3 \ - curs_outopts.3 idcok.3 \ - curs_outopts.3 idlok.3 \ - curs_outopts.3 immedok.3 \ - curs_outopts.3 leaveok.3 \ - curs_outopts.3 nl.3 \ - curs_outopts.3 nonl.3 \ - curs_outopts.3 scrollok.3 \ - curs_outopts.3 setscrreg.3 \ - curs_outopts.3 wsetscrreg.3 \ - curs_overlay.3 copywin.3 \ - curs_overlay.3 overlay.3 \ - curs_overlay.3 overwrite.3 \ - curs_pad.3 newpad.3 \ - curs_pad.3 pecho_wchar.3 \ - curs_pad.3 pechochar.3 \ - curs_pad.3 pnoutrefresh.3 \ - curs_pad.3 prefresh.3 \ - curs_pad.3 subpad.3 \ - curs_print.3 mcprint.3 \ - curs_refresh.3 doupdate.3 \ - curs_refresh.3 redrawwin.3 \ - curs_refresh.3 refresh.3 \ - curs_refresh.3 wnoutrefresh.3 \ - curs_refresh.3 wredrawln.3 \ - curs_refresh.3 wrefresh.3 \ - curs_scr_dump.3 scr_dump.3 \ - curs_scr_dump.3 scr_init.3 \ - curs_scr_dump.3 scr_restore.3 \ - curs_scr_dump.3 scr_set.3 \ - curs_scroll.3 scrl.3 \ - curs_scroll.3 scroll.3 \ - curs_scroll.3 wscrl.3 \ - curs_slk.3 slk_attr.3 \ - curs_slk.3 slk_attr_off.3 \ - curs_slk.3 slk_attr_on.3 \ - curs_slk.3 slk_attr_set.3 \ - curs_slk.3 slk_attroff.3 \ - curs_slk.3 slk_attron.3 \ - curs_slk.3 slk_attrset.3 \ - curs_slk.3 slk_clear.3 \ - curs_slk.3 slk_color.3 \ - curs_slk.3 slk_init.3 \ - curs_slk.3 slk_label.3 \ - curs_slk.3 slk_noutrefresh.3 \ - curs_slk.3 slk_refresh.3 \ - curs_slk.3 slk_restore.3 \ - curs_slk.3 slk_set.3 \ - curs_slk.3 slk_touch.3 \ - curs_sp_funcs.3 sp_funcs.3 \ - curs_sp_funcs.3 assume_default_colors_sp.3 \ - curs_sp_funcs.3 baudrate_sp.3 \ - curs_sp_funcs.3 beep_sp.3 \ - curs_sp_funcs.3 can_change_color_sp.3 \ - curs_sp_funcs.3 cbreak_sp.3 \ - curs_sp_funcs.3 ceiling_panel.3 \ - curs_sp_funcs.3 color_content_sp.3 \ - curs_sp_funcs.3 curs_set_sp.3 \ - curs_sp_funcs.3 def_prog_mode_sp.3 \ - curs_sp_funcs.3 def_shell_mode_sp.3 \ - curs_sp_funcs.3 define_key_sp.3 \ - curs_sp_funcs.3 del_curterm_sp.3 \ - curs_sp_funcs.3 delay_output_sp.3 \ - curs_sp_funcs.3 doupdate_sp.3 \ - curs_sp_funcs.3 echo_sp.3 \ - curs_sp_funcs.3 endwin_sp.3 \ - curs_sp_funcs.3 erasechar_sp.3 \ - curs_sp_funcs.3 filter_sp.3 \ - curs_sp_funcs.3 flash_sp.3 \ - curs_sp_funcs.3 flushinp_sp.3 \ - curs_sp_funcs.3 get_escdelay_sp.3 \ - curs_sp_funcs.3 getmouse_sp.3 \ - curs_sp_funcs.3 getwin_sp.3 \ - curs_sp_funcs.3 ground_panel.3 \ - curs_sp_funcs.3 halfdelay_sp.3 \ - curs_sp_funcs.3 has_colors_sp.3 \ - curs_sp_funcs.3 has_ic_sp.3 \ - curs_sp_funcs.3 has_il_sp.3 \ - curs_sp_funcs.3 has_key_sp.3 \ - curs_sp_funcs.3 has_mouse_sp.3 \ - curs_sp_funcs.3 init_color_sp.3 \ - curs_sp_funcs.3 init_pair_sp.3 \ - curs_sp_funcs.3 intrflush_sp.3 \ - curs_sp_funcs.3 is_term_resized_sp.3 \ - curs_sp_funcs.3 isendwin_sp.3 \ - curs_sp_funcs.3 key_defined_sp.3 \ - curs_sp_funcs.3 keybound_sp.3 \ - curs_sp_funcs.3 keyname_sp.3 \ - curs_sp_funcs.3 keyok_sp.3 \ - curs_sp_funcs.3 killchar_sp.3 \ - curs_sp_funcs.3 mcprint_sp.3 \ - curs_sp_funcs.3 mouseinterval_sp.3 \ - curs_sp_funcs.3 mousemask_sp.3 \ - curs_sp_funcs.3 mvcur_sp.3 \ - curs_sp_funcs.3 napms_sp.3 \ - curs_sp_funcs.3 new_form_sp.3 \ - curs_sp_funcs.3 new_menu_sp.3 \ - curs_sp_funcs.3 new_prescr.3 \ - curs_sp_funcs.3 newpad_sp.3 \ - curs_sp_funcs.3 newterm_sp.3 \ - curs_sp_funcs.3 newwin_sp.3 \ - curs_sp_funcs.3 nl_sp.3 \ - curs_sp_funcs.3 nocbreak_sp.3 \ - curs_sp_funcs.3 noecho_sp.3 \ - curs_sp_funcs.3 nofilter_sp.3 \ - curs_sp_funcs.3 nonl_sp.3 \ - curs_sp_funcs.3 noqiflush_sp.3 \ - curs_sp_funcs.3 noraw_sp.3 \ - curs_sp_funcs.3 pair_content_sp.3 \ - curs_sp_funcs.3 putp_sp.3 \ - curs_sp_funcs.3 qiflush_sp.3 \ - curs_sp_funcs.3 raw_sp.3 \ - curs_sp_funcs.3 reset_prog_mode_sp.3 \ - curs_sp_funcs.3 reset_shell_mode_sp.3 \ - curs_sp_funcs.3 resetty_sp.3 \ - curs_sp_funcs.3 resize_term_sp.3 \ - curs_sp_funcs.3 resizeterm_sp.3 \ - curs_sp_funcs.3 restartterm_sp.3 \ - curs_sp_funcs.3 ripoffline_sp.3 \ - curs_sp_funcs.3 savetty_sp.3 \ - curs_sp_funcs.3 scr_init_sp.3 \ - curs_sp_funcs.3 scr_restore_sp.3 \ - curs_sp_funcs.3 scr_set_sp.3 \ - curs_sp_funcs.3 set_curterm_sp.3 \ - curs_sp_funcs.3 set_escdelay_sp.3 \ - curs_sp_funcs.3 set_tabsize_sp.3 \ - curs_sp_funcs.3 slk_attr_set_sp.3 \ - curs_sp_funcs.3 slk_attr_sp.3 \ - curs_sp_funcs.3 slk_attroff_sp.3 \ - curs_sp_funcs.3 slk_attron_sp.3 \ - curs_sp_funcs.3 slk_attrset_sp.3 \ - curs_sp_funcs.3 slk_clear_sp.3 \ - curs_sp_funcs.3 slk_color_sp.3 \ - curs_sp_funcs.3 slk_init_sp.3 \ - curs_sp_funcs.3 slk_label_sp.3 \ - curs_sp_funcs.3 slk_noutrefresh_sp.3 \ - curs_sp_funcs.3 slk_refresh_sp.3 \ - curs_sp_funcs.3 slk_restore_sp.3 \ - curs_sp_funcs.3 slk_set_sp.3 \ - curs_sp_funcs.3 slk_touch_sp.3 \ - curs_sp_funcs.3 start_color_sp.3 \ - curs_sp_funcs.3 term_attrs_sp.3 \ - curs_sp_funcs.3 termattrs_sp.3 \ *** 1389 LINES SKIPPED *** From owner-dev-commits-src-all@freebsd.org Mon Oct 4 09:40: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 6B82F67B430; Mon, 4 Oct 2021 09:40: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 4HNG192XnCz4SG0; Mon, 4 Oct 2021 09:40:45 +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 385BA16EEC; Mon, 4 Oct 2021 09:40: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 1949ejna082676; Mon, 4 Oct 2021 09:40:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1949ejjk082675; Mon, 4 Oct 2021 09:40:45 GMT (envelope-from git) Date: Mon, 4 Oct 2021 09:40:45 GMT Message-Id: <202110040940.1949ejjk082675@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: cbc83e378a7e - main - ncurses: chase dependency changes in the source tree MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cbc83e378a7ee8f8aea9811906a2786a8f3bdeb3 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, 04 Oct 2021 09:40:45 -0000 The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=cbc83e378a7ee8f8aea9811906a2786a8f3bdeb3 commit cbc83e378a7ee8f8aea9811906a2786a8f3bdeb3 Author: Baptiste Daroussin AuthorDate: 2021-09-23 01:52:46 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-04 09:38:24 +0000 ncurses: chase dependency changes in the source tree Differential Revision: https://reviews.freebsd.org/D32098 --- Makefile.inc1 | 5 +++-- gnu/lib/libdialog/Makefile | 2 +- gnu/usr.bin/dialog/Makefile | 2 +- lib/libdpv/Makefile | 2 +- lib/libedit/Makefile | 2 +- libexec/telnetd/Makefile | 2 +- sbin/ipf/ipfstat/Makefile | 2 +- share/mk/src.libnames.mk | 6 +++--- tools/tools/ath/athratestats/Makefile | 2 +- tools/tools/net80211/stumbler/Makefile | 2 +- usr.bin/clang/lld/Makefile | 2 +- usr.bin/clang/lldb-server/Makefile | 1 + usr.bin/clang/lldb/Makefile | 3 ++- usr.bin/clang/llvm.prog.mk | 2 +- usr.bin/ee/Makefile | 2 +- usr.bin/grdc/Makefile | 2 +- usr.bin/less/Makefile | 2 +- usr.bin/msgs/Makefile | 2 +- usr.bin/ncal/Makefile | 2 +- usr.bin/ncurses/Makefile | 6 +++--- usr.bin/systat/Makefile | 2 +- usr.bin/tabs/Makefile | 2 +- usr.bin/talk/Makefile | 2 +- usr.bin/telnet/Makefile | 2 +- usr.bin/top/Makefile | 2 +- usr.bin/ul/Makefile | 2 +- usr.bin/vi/Makefile | 2 +- usr.sbin/gstat/Makefile | 2 +- usr.sbin/pmc/Makefile | 2 +- usr.sbin/pmcstat/Makefile | 2 +- usr.sbin/tzsetup/Makefile | 2 +- usr.sbin/watch/Makefile | 2 +- 32 files changed, 39 insertions(+), 36 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index ff5911edc384..6dcfa6a17d3d 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -2576,7 +2576,7 @@ _bt_clean= ${CLEANDIR} bin/sh \ ${LOCAL_TOOL_DIRS} \ ${_jevents} \ - lib/ncurses/ncurses \ + lib/ncurses/tinfo \ ${_rescue} \ ${_share} \ usr.bin/awk \ @@ -2933,6 +2933,7 @@ _prebuild_libs= ${_kerberos5_lib_libasn1} \ lib/libkiconv lib/libkvm lib/liblzma lib/libmd lib/libnv \ lib/libzstd \ ${_lib_casper} \ + lib/ncurses/tinfo \ lib/ncurses/ncurses \ lib/libopie lib/libpam/libpam lib/libthr \ ${_lib_libradius} lib/libsbuf lib/libtacplus \ @@ -2954,7 +2955,7 @@ _prebuild_libs= ${_kerberos5_lib_libasn1} \ .if ${MK_DIALOG} != "no" _prebuild_libs+= gnu/lib/libdialog -gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncurses__L +gnu/lib/libdialog__L: lib/msun__L lib/ncurses/tinfo__L lib/ncurses/ncurses__L .endif .if ${MK_GOOGLETEST} != "no" diff --git a/gnu/lib/libdialog/Makefile b/gnu/lib/libdialog/Makefile index b97e4df9373a..6de2460c62a5 100644 --- a/gnu/lib/libdialog/Makefile +++ b/gnu/lib/libdialog/Makefile @@ -13,7 +13,7 @@ SRCS= argv.c arrows.c buildlist.c buttons.c calendar.c checklist.c \ INCS= dialog.h dlg_colors.h dlg_config.h dlg_keys.h MAN= dialog.3 -LIBADD= ncursesw m +LIBADD= tinfow ncursesw m CFLAGS+= -I${.CURDIR} -I${DIALOG} -D_XOPEN_SOURCE_EXTENDED .PATH: ${DIALOG} diff --git a/gnu/usr.bin/dialog/Makefile b/gnu/usr.bin/dialog/Makefile index 71496f774830..bb50dc46cea8 100644 --- a/gnu/usr.bin/dialog/Makefile +++ b/gnu/usr.bin/dialog/Makefile @@ -3,7 +3,7 @@ DIALOG= ${SRCTOP}/contrib/dialog PROG= dialog -LIBADD= dialog ncursesw m +LIBADD= dialog tinfow ncursesw m CFLAGS+= -I${.CURDIR} -I${DIALOG} .PATH: ${DIALOG} diff --git a/lib/libdpv/Makefile b/lib/libdpv/Makefile index be28debc70bc..5b432602ff7b 100644 --- a/lib/libdpv/Makefile +++ b/lib/libdpv/Makefile @@ -7,7 +7,7 @@ INCS= dpv.h MAN= dpv.3 MLINKS= dpv.3 dpv_free.3 -LIBADD= dialog figpar util ncursesw +LIBADD= dialog figpar util tinfow ncursesw SRCS= dialog_util.c dialogrc.c dprompt.c dpv.c status.c util.c diff --git a/lib/libedit/Makefile b/lib/libedit/Makefile index e549ac15c000..28014feafab7 100644 --- a/lib/libedit/Makefile +++ b/lib/libedit/Makefile @@ -13,7 +13,7 @@ SHLIBDIR?= /lib WARNS?= 3 LIB= edit -LIBADD= ncursesw +LIBADD= tinfow SRCS= chared.c chartype.c common.c el.c eln.c emacs.c filecomplete.c \ hist.c history.c historyn.c keymacro.c literal.c map.c \ diff --git a/libexec/telnetd/Makefile b/libexec/telnetd/Makefile index 15dc0af01f0b..09136d360a71 100644 --- a/libexec/telnetd/Makefile +++ b/libexec/telnetd/Makefile @@ -29,7 +29,7 @@ CFLAGS+= -DINET6 CFLAGS+= -I${TELNETDIR} CFLAGS+= -I${TELNETDIR}/telnet -LIBADD= telnet util ncursesw +LIBADD= telnet util tinfow .if ${MK_OPENSSL} != "no" SRCS+= authenc.c diff --git a/sbin/ipf/ipfstat/Makefile b/sbin/ipf/ipfstat/Makefile index 4714f2c0394e..80c2e89a2c88 100644 --- a/sbin/ipf/ipfstat/Makefile +++ b/sbin/ipf/ipfstat/Makefile @@ -6,6 +6,6 @@ PACKAGE= ipf PROG= ipfstat SRCS= ipfstat.c MAN= ipfstat.8 -LIBADD+= ncursesw +LIBADD+= tinfow ncursesw .include diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk index 77f32c8cecb1..e014e12cb3c9 100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -274,7 +274,7 @@ _DP_ssh= crypto crypt z .if ${MK_LDNS} != "no" _DP_ssh+= ldns .endif -_DP_edit= ncursesw +_DP_edit= tinfow .if ${MK_OPENSSL} != "no" _DP_bsnmp= crypto .endif @@ -324,8 +324,8 @@ _DP_fetch= md .endif _DP_execinfo= elf _DP_dwarf= elf -_DP_dpv= dialog figpar util ncursesw -_DP_dialog= ncursesw m +_DP_dpv= dialog figpar util tinfow ncursesw +_DP_dialog= tinfow ncursesw m _DP_cuse= pthread _DP_atf_cxx= atf_c _DP_gtest= pthread regex diff --git a/tools/tools/ath/athratestats/Makefile b/tools/tools/ath/athratestats/Makefile index ccf04ebd8da0..c924370a31e7 100644 --- a/tools/tools/ath/athratestats/Makefile +++ b/tools/tools/ath/athratestats/Makefile @@ -7,7 +7,7 @@ PROG= athratestats SRCS= main.c opt_ah.h ah_osdep.h -LIBADD+= ncursesw +LIBADD+= tinfow ncursesw CLEANFILES+= opt_ah.h ah_osdep.h diff --git a/tools/tools/net80211/stumbler/Makefile b/tools/tools/net80211/stumbler/Makefile index e840be7446ce..614fc6064cb8 100644 --- a/tools/tools/net80211/stumbler/Makefile +++ b/tools/tools/net80211/stumbler/Makefile @@ -2,7 +2,7 @@ PROG= stumbler BINDIR= /usr/local/bin -LIBADD= pcap ncursesw +LIBADD= pcap tinfow ncursesw CFLAGS=-g MAN= diff --git a/usr.bin/clang/lld/Makefile b/usr.bin/clang/lld/Makefile index 8e95ccc07f04..7e6743133835 100644 --- a/usr.bin/clang/lld/Makefile +++ b/usr.bin/clang/lld/Makefile @@ -104,7 +104,7 @@ CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/} .if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING) LIBADD+= execinfo -LIBADD+= ncursesw +LIBADD+= tinfow .endif LIBADD+= pthread LIBADD+= z diff --git a/usr.bin/clang/lldb-server/Makefile b/usr.bin/clang/lldb-server/Makefile index 28e0c4ce7260..56aa4e565ffb 100644 --- a/usr.bin/clang/lldb-server/Makefile +++ b/usr.bin/clang/lldb-server/Makefile @@ -41,6 +41,7 @@ TGHDRS+= ${INCFILE} DPSRCS+= ${TGHDRS} CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/} +LIBADD+= tinfow LIBADD+= edit LIBADD+= execinfo LIBADD+= lua diff --git a/usr.bin/clang/lldb/Makefile b/usr.bin/clang/lldb/Makefile index c309559b06e7..8a2c247688aa 100644 --- a/usr.bin/clang/lldb/Makefile +++ b/usr.bin/clang/lldb/Makefile @@ -34,12 +34,13 @@ TGHDRS+= ${INCFILE} DPSRCS+= ${TGHDRS} CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/} +LIBADD= tinfow LIBADD+= edit LIBADD+= execinfo LIBADD+= lua LIBADD+= lzma LIBADD+= ncursesw -LIBADD+= panel +LIBADD+= panelw LIBADD+= pthread LIBADD+= z diff --git a/usr.bin/clang/llvm.prog.mk b/usr.bin/clang/llvm.prog.mk index 56698c4138d3..3a708805d3ea 100644 --- a/usr.bin/clang/llvm.prog.mk +++ b/usr.bin/clang/llvm.prog.mk @@ -24,7 +24,7 @@ PACKAGE= clang .if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING) LIBADD+= execinfo -LIBADD+= ncursesw +LIBADD+= tinfow .endif LIBADD+= pthread diff --git a/usr.bin/ee/Makefile b/usr.bin/ee/Makefile index c30a510a510c..d18c58191222 100644 --- a/usr.bin/ee/Makefile +++ b/usr.bin/ee/Makefile @@ -9,7 +9,7 @@ PACKAGE=ee PROG= ee LINKS= ${BINDIR}/ee ${BINDIR}/ree ${BINDIR}/ee ${BINDIR}/edit MLINKS= ee.1 ree.1 ee.1 edit.1 -LIBADD= ncursesw +LIBADD= tinfow ncursesw WARNS?= 2 diff --git a/usr.bin/grdc/Makefile b/usr.bin/grdc/Makefile index d12277df8466..4ea181508b45 100644 --- a/usr.bin/grdc/Makefile +++ b/usr.bin/grdc/Makefile @@ -2,6 +2,6 @@ PROG= grdc MAN= grdc.6 -LIBADD= ncursesw +LIBADD= tinfow ncursesw .include diff --git a/usr.bin/less/Makefile b/usr.bin/less/Makefile index 08c5249598f9..630750c3e117 100644 --- a/usr.bin/less/Makefile +++ b/usr.bin/less/Makefile @@ -9,7 +9,7 @@ SRCS= main.c screen.c brac.c ch.c charset.c cmdbuf.c command.c cvt.c \ signal.c tags.c ttyin.c version.c xbuf.c SCRIPTS=lesspipe.sh zless.sh SCRIPTSNAME_lesspipe.sh=lesspipe.sh -LIBADD= ncursesw +LIBADD= tinfow LINKS= ${BINDIR}/less ${BINDIR}/more \ ${BINDIR}/zless ${BINDIR}/bzless \ ${BINDIR}/zless ${BINDIR}/xzless \ diff --git a/usr.bin/msgs/Makefile b/usr.bin/msgs/Makefile index 3af95c31ea0d..7dbf9ff149be 100644 --- a/usr.bin/msgs/Makefile +++ b/usr.bin/msgs/Makefile @@ -3,6 +3,6 @@ PROG= msgs -LIBADD= ncursesw +LIBADD= tinfow .include diff --git a/usr.bin/ncal/Makefile b/usr.bin/ncal/Makefile index 8cfd9b1c62e0..e6bcf4232b8a 100644 --- a/usr.bin/ncal/Makefile +++ b/usr.bin/ncal/Makefile @@ -4,7 +4,7 @@ PROG= ncal -LIBADD= calendar ncursesw +LIBADD= calendar tinfow LINKS= ${BINDIR}/ncal ${BINDIR}/cal MLINKS= ncal.1 cal.1 diff --git a/usr.bin/ncurses/Makefile b/usr.bin/ncurses/Makefile index cd8344aa1a97..33e8794aa0e5 100644 --- a/usr.bin/ncurses/Makefile +++ b/usr.bin/ncurses/Makefile @@ -15,10 +15,10 @@ SRCS.clear= clear.c clear_cmd.c tty_settings.c SRCS.tset= tset.c tty_settings.c transform.c reset_cmd.c CFLAGS+= -I${NCURSES_DIR}/progs \ -I${NCURSES_DIR}/include \ - -I${SRCTOP}/lib/ncurses/ncurses \ - -I${OBJTOP}/lib/ncurses/ncurses \ + -I${SRCTOP}/lib/ncurses/tinfo \ + -I${OBJTOP}/lib/ncurses/tinfo \ -I${.CURDIR} -LIBADD= ncursesw +LIBADD= tinfow CLEANFILES= termsort.c termsort.c: MKtermsort.sh diff --git a/usr.bin/systat/Makefile b/usr.bin/systat/Makefile index ca3f7ed72ce4..01cd36877101 100644 --- a/usr.bin/systat/Makefile +++ b/usr.bin/systat/Makefile @@ -16,6 +16,6 @@ CFLAGS+= -DINET6 WARNS?= 1 -LIBADD= ncursesw m devstat kvm util +LIBADD= tinfow ncursesw m devstat kvm util .include diff --git a/usr.bin/tabs/Makefile b/usr.bin/tabs/Makefile index f8c085bfbe80..a67780a2a365 100644 --- a/usr.bin/tabs/Makefile +++ b/usr.bin/tabs/Makefile @@ -2,6 +2,6 @@ PROG= tabs -LIBADD= ncursesw +LIBADD= tinfow .include diff --git a/usr.bin/talk/Makefile b/usr.bin/talk/Makefile index f595be8839c4..ba5692c4196b 100644 --- a/usr.bin/talk/Makefile +++ b/usr.bin/talk/Makefile @@ -5,6 +5,6 @@ PROG= talk SRCS= ctl.c ctl_transact.c display.c get_addrs.c get_iface.c get_names.c \ init_disp.c invite.c io.c look_up.c msgs.c talk.c -LIBADD= ncursesw +LIBADD= tinfow ncursesw .include diff --git a/usr.bin/telnet/Makefile b/usr.bin/telnet/Makefile index 33c8b9cba193..91b88f592b66 100644 --- a/usr.bin/telnet/Makefile +++ b/usr.bin/telnet/Makefile @@ -21,7 +21,7 @@ CFLAGS+= -DINET6 WARNS?= 2 -LIBADD= telnet ncursesw +LIBADD= telnet tinfow CFLAGS+= -DIPSEC LIBADD+= ipsec diff --git a/usr.bin/top/Makefile b/usr.bin/top/Makefile index d11b91273b50..c4a3aca3dd62 100644 --- a/usr.bin/top/Makefile +++ b/usr.bin/top/Makefile @@ -7,5 +7,5 @@ SRCS= commands.c display.c machine.c screen.c top.c \ username.c utils.c MAN= top.1 -LIBADD= ncursesw m kvm jail util sbuf +LIBADD= tinfow m kvm jail util sbuf .include diff --git a/usr.bin/ul/Makefile b/usr.bin/ul/Makefile index 817f07ba14cb..9418dee7529d 100644 --- a/usr.bin/ul/Makefile +++ b/usr.bin/ul/Makefile @@ -3,6 +3,6 @@ PROG= ul -LIBADD= ncursesw +LIBADD= tinfow .include diff --git a/usr.bin/vi/Makefile b/usr.bin/vi/Makefile index 5769a34c6d2e..4449982f118c 100644 --- a/usr.bin/vi/Makefile +++ b/usr.bin/vi/Makefile @@ -35,7 +35,7 @@ MLINKS+=vi.1 nex.1 vi.1 nview.1 vi.1 nvi.1 CFLAGS+=-I${.CURDIR} -I${SRCDIR} -I${SRCDIR}/regex \ -I${.CURDIR}/ex -LIBADD= util ncursesw +LIBADD= util tinfow ncursesw .if ${MK_ICONV} == "yes" && !defined(RESCUE) CFLAGS+= -DUSE_ICONV -DICONV_TRADITIONAL diff --git a/usr.sbin/gstat/Makefile b/usr.sbin/gstat/Makefile index 1c71f2285622..fcf90fa3b130 100644 --- a/usr.sbin/gstat/Makefile +++ b/usr.sbin/gstat/Makefile @@ -2,6 +2,6 @@ PROG= gstat MAN= gstat.8 -LIBADD= devstat geom edit ncursesw +LIBADD= devstat geom edit tinfow ncursesw .include diff --git a/usr.sbin/pmc/Makefile b/usr.sbin/pmc/Makefile index b67641de9f62..8f026f131a8b 100644 --- a/usr.sbin/pmc/Makefile +++ b/usr.sbin/pmc/Makefile @@ -14,7 +14,7 @@ CFLAGS+= -I${SRCTOP}/lib/libpmcstat # Does not link when built position-independent. MK_PIE=no -LIBADD= kvm pmc m ncursesw pmcstat elf +LIBADD= pmc m pmcstat elf SRCS= pmc.c pmc_util.c cmd_pmc_stat.c \ cmd_pmc_list.c cmd_pmc_filter.cc \ diff --git a/usr.sbin/pmcstat/Makefile b/usr.sbin/pmcstat/Makefile index fa3c8948a7f9..5d938677306c 100644 --- a/usr.sbin/pmcstat/Makefile +++ b/usr.sbin/pmcstat/Makefile @@ -6,7 +6,7 @@ PROG_CXX= pmcstat MAN= pmcstat.8 CFLAGS+= -I${SRCTOP}/lib/libpmcstat -LIBADD= kvm pmc m ncursesw pmcstat elf +LIBADD= kvm pmc m tinfow ncursesw pmcstat elf SRCS= pmcstat.c pmcstat.h pmcstat_log.c \ pmcpl_callgraph.c pmcpl_gprof.c pmcpl_annotate.c \ diff --git a/usr.sbin/tzsetup/Makefile b/usr.sbin/tzsetup/Makefile index e3d7526838a1..7274b7680ca9 100644 --- a/usr.sbin/tzsetup/Makefile +++ b/usr.sbin/tzsetup/Makefile @@ -10,7 +10,7 @@ CFLAGS+= -I. .if ${MK_DIALOG} != no && !defined(BOOTSTRAPPING) WARNS?= 3 CFLAGS+= -I${SRCTOP}/contrib/dialog -DHAVE_DIALOG -LIBADD= dialog ncursesw +LIBADD= dialog tinfow .endif .include diff --git a/usr.sbin/watch/Makefile b/usr.sbin/watch/Makefile index 981aec0a4749..215ff61e9004 100644 --- a/usr.sbin/watch/Makefile +++ b/usr.sbin/watch/Makefile @@ -5,6 +5,6 @@ MAN= watch.8 WARNS?= 2 -LIBADD= ncursesw +LIBADD= tinfow .include From owner-dev-commits-src-all@freebsd.org Mon Oct 4 09:40: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 A8D8667B395; Mon, 4 Oct 2021 09:40: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 4HNG1B3rFRz4S9Z; Mon, 4 Oct 2021 09:40: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 5EFB217096; Mon, 4 Oct 2021 09:40: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 1949ekmL082700; Mon, 4 Oct 2021 09:40:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1949ekFK082699; Mon, 4 Oct 2021 09:40:46 GMT (envelope-from git) Date: Mon, 4 Oct 2021 09:40:46 GMT Message-Id: <202110040940.1949ekFK082699@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 19deec3b30ca - main - bsdinstall: reduce overlinking MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 19deec3b30ca6add3ef3f7414e163c72d8f5b966 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, 04 Oct 2021 09:40:46 -0000 The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=19deec3b30ca6add3ef3f7414e163c72d8f5b966 commit 19deec3b30ca6add3ef3f7414e163c72d8f5b966 Author: Baptiste Daroussin AuthorDate: 2021-09-23 02:08:08 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-04 09:38:27 +0000 bsdinstall: reduce overlinking both distextract and distfetch does not directly use ncurses, or figpart, drop their direct link to those libs --- usr.sbin/bsdinstall/distextract/Makefile | 2 +- usr.sbin/bsdinstall/distfetch/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/bsdinstall/distextract/Makefile b/usr.sbin/bsdinstall/distextract/Makefile index 908a60c6594a..2b7180e28ea0 100644 --- a/usr.sbin/bsdinstall/distextract/Makefile +++ b/usr.sbin/bsdinstall/distextract/Makefile @@ -2,7 +2,7 @@ BINDIR= ${LIBEXECDIR}/bsdinstall PROG= distextract -LIBADD= archive dpv figpar ncursesw dialog m +LIBADD= archive dpv dialog m MAN= diff --git a/usr.sbin/bsdinstall/distfetch/Makefile b/usr.sbin/bsdinstall/distfetch/Makefile index 044b83a8a1a0..70ecb381d485 100644 --- a/usr.sbin/bsdinstall/distfetch/Makefile +++ b/usr.sbin/bsdinstall/distfetch/Makefile @@ -2,7 +2,7 @@ BINDIR= ${LIBEXECDIR}/bsdinstall PROG= distfetch -LIBADD= fetch ncursesw dialog m +LIBADD= fetch dialog m MAN= From owner-dev-commits-src-all@freebsd.org Mon Oct 4 09:40: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 89B6C67B23C; Mon, 4 Oct 2021 09:40: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 4HNG1C6hH3z4SJW; Mon, 4 Oct 2021 09:40: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 8D4AF16EEE; Mon, 4 Oct 2021 09:40: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 1949elUJ082728; Mon, 4 Oct 2021 09:40:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1949elkn082727; Mon, 4 Oct 2021 09:40:47 GMT (envelope-from git) Date: Mon, 4 Oct 2021 09:40:47 GMT Message-Id: <202110040940.1949elkn082727@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 16f1ee11e657 - main - ncurses: document in UPDATING and bump _FreeBSD_version MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0 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, 04 Oct 2021 09:40:48 -0000 The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0 commit 16f1ee11e6574d7f8d8a9dc6ebc9be3036ff9fd0 Author: Baptiste Daroussin AuthorDate: 2021-10-04 09:36:47 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-04 09:38:29 +0000 ncurses: document in UPDATING and bump _FreeBSD_version --- UPDATING | 6 ++++++ sys/sys/param.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/UPDATING b/UPDATING index 2f432124233a..6184d2df8a8d 100644 --- a/UPDATING +++ b/UPDATING @@ -27,6 +27,12 @@ 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".) +20211004: + Ncurses distribution has been split between libtinfow and libncurses + with libncurses.so becoming a linker (ld) script to seamlessly link + to libtinfow as needed. Bump _FreeBSD_version to 1400035 to reflect + this change. + 20210923: As of commit 8160a0f62be6, the dummynet module no longer depends on the ipfw module. Dummynet can now be used by pf as well as ipfw. As such diff --git a/sys/sys/param.h b/sys/sys/param.h index 234111e5d53c..899ae1793b28 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 1400034 +#define __FreeBSD_version 1400035 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-dev-commits-src-all@freebsd.org Mon Oct 4 10: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 ACF7E67BE81; Mon, 4 Oct 2021 10:17:40 +0000 (UTC) (envelope-from christos@margiolis.net) Received: from christos (mail.margiolis.net [95.179.159.8]) by mx1.freebsd.org (Postfix) with ESMTP id 4HNGqm13zbz4Vm6; Mon, 4 Oct 2021 10:17:39 +0000 (UTC) (envelope-from christos@margiolis.net) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=default; bh=5mx4KMfqDpM2 KFSb+snvPE5bzdEvPjzcPZPC9a8bWMw=; h=in-reply-to:references:subject:cc: to:from:date; d=margiolis.net; b=DsUg9hmFm/H5A18EhMIuUw3OBcU2AE4XsxSM5 wyoHbFhbgFRYBH0tkjQq7ItueLBoheWB79JuTQcKE4irOwrlLWP/nHSDfoKkYSmCyPGpJh aT91jum7hry8iXxU6NFtCKdlRnyqAuvpJ4dry/fgIJ1s+g02sBES/e0veUWxr6VM= Received: from pleb (athedsl-4393259.home.otenet.gr [79.130.121.27]) by christos (OpenSMTPD) with ESMTPSA id 4b0ffeff (TLSv1.3:AEAD-AES256-GCM-SHA384:256:NO); Mon, 4 Oct 2021 10:17:31 +0000 (UTC) Date: Mon, 4 Oct 2021 13:17:26 +0300 From: Christos Margiolis To: Mateusz Piotrowski <0mp@FreeBSD.org>, src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Hans Petter Selasky Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. Message-ID: <20211004101726.wraje5ol5vwbhjcv@pleb> References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 4HNGqm13zbz4Vm6 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: Mon, 04 Oct 2021 10:17:40 -0000 On Mon, Oct 04, 2021 at 10:48:03AM +0200, Mateusz Piotrowski wrote: > Hmm, I agree that mute and volume controls in the new CLI interface are very > consistent. However, in case of the old CLI interface, the mute > functionality could also be added without a problem (at least by looking at > the manual pages, the "mute" command could look like this: "mixer mute > vol"). My point is that I feel that the CLI interface should be > backwards-compatible in this case. I think the new interface is more readable and extensible than the old one, and, as you mentioned, mixer(8) did need an upgrade, so it might be better to have it changed from now on and keep the old version as a port, than to keep working on an -- in my opinion -- obsolete interface and code. > > Would it help to make a port, like "oldmixer", under "audio" ? > > That's a good idea. I've committed the "old" mixer to the ports tree: https://cgit.freebsd.org/ports/commit/?id=e9a0efe4509b8dbdef0b4e4b5b94abf0aebd78a9. Yeap, that's a good idea indeed. -- Christos From owner-dev-commits-src-all@freebsd.org Mon Oct 4 10:32:41 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 4168B67C1EE; Mon, 4 Oct 2021 10:32:41 +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 4HNH951HfYz4X4V; Mon, 4 Oct 2021 10:32:41 +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 0CC0A17B2B; Mon, 4 Oct 2021 10:32:41 +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 194AWeQI054080; Mon, 4 Oct 2021 10:32:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194AWe3o054079; Mon, 4 Oct 2021 10:32:40 GMT (envelope-from git) Date: Mon, 4 Oct 2021 10:32:40 GMT Message-Id: <202110041032.194AWe3o054079@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 27803b54db20 - main - ncurses: fix path where to find curses.h at bootstrap MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 27803b54db209aad2037d5e300c4494b2bfb5193 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, 04 Oct 2021 10:32:41 -0000 The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=27803b54db209aad2037d5e300c4494b2bfb5193 commit 27803b54db209aad2037d5e300c4494b2bfb5193 Author: Baptiste Daroussin AuthorDate: 2021-10-04 10:31:23 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-04 10:31:23 +0000 ncurses: fix path where to find curses.h at bootstrap after the split, curses.h is now generated by tinfo Makefile, but still used for a file generated in ncurses lib. Adjust the path to make sure curses.h is always found --- lib/ncurses/ncurses/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile index 35b123a22292..d2ba1007b54a 100644 --- a/lib/ncurses/ncurses/Makefile +++ b/lib/ncurses/ncurses/Makefile @@ -173,9 +173,9 @@ SHLIB_LDSCRIPT= libncursesw.ldscript libncurses.ldscript: @${ECHO} "INPUT(${SHLIB_NAME} AS NEEDED(-ltinfow))" >$@ -lib_gen.c: MKlib_gen.sh curses.h ncurses_dll.h +lib_gen.c: MKlib_gen.sh ${.OBJDIR:H}/tinfo/curses.h ncurses_dll.h LC_ALL=C sh ${NCURSES_DIR}/ncurses/base/MKlib_gen.sh "${CPP:N${CCACHE_BIN}} ${CFLAGS}" \ - "${AWK}" generated < curses.h >$@ + "${AWK}" generated < ${.OBJDIR:H}/tinfo/curses.h >$@ expanded.c: MKexpanded.sh sh ${NCURSES_DIR}/ncurses/tty/MKexpanded.sh "${CC:N${CCACHE_BIN}} -E" ${CFLAGS} >expanded.c From owner-dev-commits-src-all@freebsd.org Mon Oct 4 11:16: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 7521D67C867; Mon, 4 Oct 2021 11:16:36 +0000 (UTC) (envelope-from mpp302@gmail.com) Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 4HNJ7m2dBBz4b22; Mon, 4 Oct 2021 11:16:36 +0000 (UTC) (envelope-from mpp302@gmail.com) Received: by mail-ed1-f51.google.com with SMTP id g10so4150978edj.1; Mon, 04 Oct 2021 04:16:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=mful3i2lc4t14gSWcl36M0VHHhkirJVI3Z461vmjXv0=; b=CI5zfwPtKbTtI8fo2vUkcdxaqlmV08dq7/MJ95tjNBXmZFQ8MHSWMY7wcStT8cxmlE Yx+pyHxUqf1dDAAGL19QX4CRzJxibvJdxQIHTMQlWPIrVZIGF1ZnW3h7zrxSf8TafuSg Xs395qJOBXfv+zZLDaniQsO1cVFi6Zo93XY7sMJo24fRGFAkjvHOuF77Hh0H5CvO3MI2 IOL04T9HdSejhxknV471xwLNlbHotZMPfZsnLMAQrtC2YEclRTYOMYlnTHPFTEKKUEOd 94pYL90LMD3BCZlCCxtzs8IyzkyzKJ97Or59czvO4nQTasvIUOWSMeFAl5wzomQ+Y8sC /oyQ== X-Gm-Message-State: AOAM532NH98CnOQOJeEqdUf3U3nbuiXJrfNv8GLUe+X2FkhFENtG4e/C ayrGWNPRuyTkf3dDgmKuH6gpXT2wOb0= X-Google-Smtp-Source: ABdhPJwXvmU40mhpJ740lFFP7oQtL96BkgYXKrLTGzafYA5VpNj5rBNrtbOa0O85y6N3ON18CI46Ig== X-Received: by 2002:a17:906:d04d:: with SMTP id bo13mr16365636ejb.351.1633346195263; Mon, 04 Oct 2021 04:16:35 -0700 (PDT) Received: from [192.168.0.15] (ip5f5bd4ef.dynamic.kabel-deutschland.de. [95.91.212.239]) by smtp.gmail.com with ESMTPSA id jl12sm6200710ejc.120.2021.10.04.04.16.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 04 Oct 2021 04:16:34 -0700 (PDT) Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Hans Petter Selasky , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Christos Margiolis References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> From: Mateusz Piotrowski <0mp@FreeBSD.org> Message-ID: <817b2388-b599-9f8a-98c2-1f2410c88105@FreeBSD.org> Date: Mon, 4 Oct 2021 13:16:34 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Rspamd-Queue-Id: 4HNJ7m2dBBz4b22 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: Mon, 04 Oct 2021 11:16:36 -0000 On 04/10/2021 11:13, Hans Petter Selasky wrote: > Thanks for making that port. I've now updated the notes in UPDATING to mention it: > > https://cgit.freebsd.org/src/commit/?id=8bc5971be1ece76284b2cdb0addf051afc14044a Thanks! From owner-dev-commits-src-all@freebsd.org Mon Oct 4 12:16: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 D674467D91C; Mon, 4 Oct 2021 12:16: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 4HNKTM5jYMz4gwX; Mon, 4 Oct 2021 12:16: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 A0B5118F53; Mon, 4 Oct 2021 12:16: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 194CGtLn088019; Mon, 4 Oct 2021 12:16:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194CGtn3088018; Mon, 4 Oct 2021 12:16:55 GMT (envelope-from git) Date: Mon, 4 Oct 2021 12:16:55 GMT Message-Id: <202110041216.194CGtn3088018@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: cc46927f8a2b - main - ncurses: fix libcompat (lib32 for example) building MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cc46927f8a2be7d6a6ed7adc76237f258a5a7e22 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, 04 Oct 2021 12:16:55 -0000 The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=cc46927f8a2be7d6a6ed7adc76237f258a5a7e22 commit cc46927f8a2be7d6a6ed7adc76237f258a5a7e22 Author: Baptiste Daroussin AuthorDate: 2021-10-04 12:16:32 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-04 12:16:32 +0000 ncurses: fix libcompat (lib32 for example) building --- Makefile.libcompat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.libcompat b/Makefile.libcompat index b376ebaa65f4..eb2b12b6c7d2 100644 --- a/Makefile.libcompat +++ b/Makefile.libcompat @@ -45,7 +45,7 @@ _LC_LIBDIRS.${MK_KERBEROS:tl}+= kerberos5/lib _LC_INCDIRS= \ include \ - lib/ncurses/ncurses \ + lib/ncurses/tinfo \ ${_LC_LIBDIRS.yes} .if ${MK_FILE} != "no" @@ -94,7 +94,7 @@ build${libcompat}: .PHONY DIRPRFX=${_dir}/ ${_t} .endfor .endfor -.for _dir in lib/ncurses/ncurses ${_libmagic} ${_jevents} +.for _dir in lib/ncurses/tinfo ${_libmagic} ${_jevents} .for _t in ${_obj} build-tools ${_+_}cd ${.CURDIR}/${_dir}; \ WORLDTMP=${WORLDTMP} \ From owner-dev-commits-src-all@freebsd.org Mon Oct 4 12:21: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 D5E9E67D940; Mon, 4 Oct 2021 12:21: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 4HNKZv5m51z4hVr; Mon, 4 Oct 2021 12:21: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 A65F518F63; Mon, 4 Oct 2021 12:21: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 194CLh5v000729; Mon, 4 Oct 2021 12:21:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194CLhR9000728; Mon, 4 Oct 2021 12:21:43 GMT (envelope-from git) Date: Mon, 4 Oct 2021 12:21:43 GMT Message-Id: <202110041221.194CLhR9000728@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: 507a22be3850 - main - Add the missing license to gic_if.m 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: 507a22be3850da1f2afc753abcf3372659249c31 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, 04 Oct 2021 12:21:43 -0000 The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=507a22be3850da1f2afc753abcf3372659249c31 commit 507a22be3850da1f2afc753abcf3372659249c31 Author: Andrew Turner AuthorDate: 2021-10-04 10:22:19 +0000 Commit: Andrew Turner CommitDate: 2021-10-04 12:21:21 +0000 Add the missing license to gic_if.m Sponsored by: The FreeBSD Foundation --- sys/arm/arm/gic_if.m | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/sys/arm/arm/gic_if.m b/sys/arm/arm/gic_if.m index b9bef7db1a80..ba722c3b1250 100644 --- a/sys/arm/arm/gic_if.m +++ b/sys/arm/arm/gic_if.m @@ -1,3 +1,33 @@ +#- +# Copyright (c) 2021 The FreeBSD Foundation +# +# This software was developed by Andrew Turner 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 +# 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. +# +# $FreeBSD$ +# + INTERFACE gic; From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:13: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 D5DD467E2E6; Mon, 4 Oct 2021 13:13: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 4HNLkP5TFJz4mDl; Mon, 4 Oct 2021 13:13: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 9BB7F19E67; Mon, 4 Oct 2021 13:13: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 194DDHfX068351; Mon, 4 Oct 2021 13:13:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DDH9O068350; Mon, 4 Oct 2021 13:13:17 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:13:17 GMT Message-Id: <202110041313.194DDH9O068350@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: ffcdbc35a64e - stable/13 - ipfilter: Avoid a null if-then-else blocks 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/stable/13 X-Git-Reftype: branch X-Git-Commit: ffcdbc35a64e3550d8a45609bf3237c2549badfc 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, 04 Oct 2021 13:13:17 -0000 The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=ffcdbc35a64e3550d8a45609bf3237c2549badfc commit ffcdbc35a64e3550d8a45609bf3237c2549badfc Author: Cy Schubert AuthorDate: 2021-09-22 04:58:08 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:56:58 +0000 ipfilter: Avoid a null if-then-else blocks When WITHOUT_INET6 is selected we generate a null if-then-else blocks due to incorrect placment of #if statments. Move the #if statements reducing unnecessary runtime comparisons WITHOUT_INET6. (cherry picked from commit 73db3b64f167972db3ee3f780cecb439b09492b1) --- sys/contrib/ipfilter/netinet/ip_ftp_pxy.c | 18 +++++++----------- sys/contrib/ipfilter/netinet/ip_proxy.c | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c index 5d8f9f1f51f7..c4ee0ef593df 100644 --- a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c +++ b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c @@ -510,11 +510,10 @@ ipf_p_ftp_addport(softf, fin, ip, nat, ftp, dlen, nport, inc) fi.fin_src6 = nat->nat_ndst6; fi.fin_dst6 = nat->nat_nsrc6; - if (nat->nat_v[0] == 6) { #ifndef USE_INET6 + if (nat->nat_v[0] == 6) return APR_INC(inc); #endif - } /* * Add skeleton NAT entry for connection which will come back the @@ -582,15 +581,14 @@ ipf_p_ftp_addport(softf, fin, ip, nat, ftp, dlen, nport, inc) flags = SI_W_SPORT|NAT_SLAVE|IPN_TCP; MUTEX_ENTER(&softn->ipf_nat_new); - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) nat2 = ipf_nat6_add(&fi, ipn, &ftp->ftp_pendnat, flags, direction); + else #endif - } else { nat2 = ipf_nat_add(&fi, ipn, &ftp->ftp_pendnat, flags, direction); - } MUTEX_EXIT(&softn->ipf_nat_new); if (nat2 == NULL) { @@ -950,13 +948,12 @@ ipf_p_ftp_pasvreply(softf, fin, ip, nat, ftp, port, newmsg, s) MUTEX_EXIT(&nat2->nat_lock); fi.fin_ifp = NULL; if (nat->nat_dir == NAT_INBOUND) { - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) fi.fin_dst6 = nat->nat_ndst6; + else #endif - } else { fi.fin_daddr = nat->nat_ndstaddr; - } } if (ipf_state_add(softc, &fi, (ipstate_t **)&ftp->ftp_pendstate, SI_W_SPORT) != 0) @@ -979,15 +976,14 @@ ipf_p_ftp_pasvreply(softf, fin, ip, nat, ftp, port, newmsg, s) if (inc != 0) { fin->fin_plen += inc; fin->fin_dlen += inc; - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) { ip6 = (ip6_t *)fin->fin_ip; u_short len = ntohs(ip6->ip6_plen) + inc; ip6->ip6_plen = htons(len); + } else #endif - } else { ip->ip_len = htons(fin->fin_plen); - } } return APR_INC(inc); diff --git a/sys/contrib/ipfilter/netinet/ip_proxy.c b/sys/contrib/ipfilter/netinet/ip_proxy.c index 87051b6e6839..4399a9cde8e4 100644 --- a/sys/contrib/ipfilter/netinet/ip_proxy.c +++ b/sys/contrib/ipfilter/netinet/ip_proxy.c @@ -1354,8 +1354,8 @@ ipf_proxy_rule_rev(nat) if (ipn->in_v[0] == 4) { ipn->in_snip = ntohl(nat->nat_odstaddr); ipn->in_dnip = ntohl(nat->nat_nsrcaddr); - } else { #ifdef USE_INET6 + } else { ipn->in_snip6 = nat->nat_odst6; ipn->in_dnip6 = nat->nat_nsrc6; #endif From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:13: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 EF8C067E62B; Mon, 4 Oct 2021 13:13: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 4HNLkQ6HgQz4m8t; Mon, 4 Oct 2021 13:13: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 B966019EB2; Mon, 4 Oct 2021 13:13: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 194DDIf4068375; Mon, 4 Oct 2021 13:13:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DDIP4068374; Mon, 4 Oct 2021 13:13:18 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:13:18 GMT Message-Id: <202110041313.194DDIP4068374@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 2fc27a1ceb41 - stable/13 - ipfilter: Locking sysctls here is not required 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 2fc27a1ceb416da0eb5c21927a678130c6e23f3c 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, 04 Oct 2021 13:13:19 -0000 The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=2fc27a1ceb416da0eb5c21927a678130c6e23f3c commit 2fc27a1ceb416da0eb5c21927a678130c6e23f3c Author: Cy Schubert AuthorDate: 2021-09-24 18:18:42 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:56:58 +0000 ipfilter: Locking sysctls here is not required Locking of data structures touched by sysctls is more finely locked in ipflter therefore higher level locks are redundant. (cherry picked from commit 1605eaa6d23ea5161b5ab8461e83ab32a591a4fc) --- sys/contrib/ipfilter/netinet/mlfk_ipl.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/contrib/ipfilter/netinet/mlfk_ipl.c b/sys/contrib/ipfilter/netinet/mlfk_ipl.c index 6e49ef77b486..57b6ce541be9 100644 --- a/sys/contrib/ipfilter/netinet/mlfk_ipl.c +++ b/sys/contrib/ipfilter/netinet/mlfk_ipl.c @@ -343,7 +343,6 @@ sysctl_ipf_int ( SYSCTL_HANDLER_ARGS ) { int error = 0; - WRITE_ENTER(&V_ipfmain.ipf_mutex); if (arg1) error = SYSCTL_OUT(req, arg1, sizeof(int)); else @@ -362,7 +361,6 @@ sysctl_ipf_int ( SYSCTL_HANDLER_ARGS ) } sysctl_error: - RWLOCK_EXIT(&V_ipfmain.ipf_mutex); return (error); } From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:13: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 6A12967E805; Mon, 4 Oct 2021 13:13: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 4HNLkS0YzGz4m1m; Mon, 4 Oct 2021 13:13: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 E896419F98; Mon, 4 Oct 2021 13:13: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 194DDJQq068399; Mon, 4 Oct 2021 13:13:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DDJSp068398; Mon, 4 Oct 2021 13:13:19 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:13:19 GMT Message-Id: <202110041313.194DDJSp068398@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 889c5c50d8d8 - stable/13 - ipfilter: Correct a comment 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 889c5c50d8d84fd30553b6165f7feff5c29520f7 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, 04 Oct 2021 13:13:20 -0000 The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=889c5c50d8d84fd30553b6165f7feff5c29520f7 commit 889c5c50d8d84fd30553b6165f7feff5c29520f7 Author: Cy Schubert AuthorDate: 2021-09-25 06:41:22 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:56:58 +0000 ipfilter: Correct a comment Correct a comment's grammar and while at it clarify its meaining. (cherry picked from commit aa6cfcc820b438cec58fbe0af408d4457f8daf9d) --- sys/contrib/ipfilter/netinet/ip_proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/ipfilter/netinet/ip_proxy.c b/sys/contrib/ipfilter/netinet/ip_proxy.c index 4399a9cde8e4..a1a9379b95a6 100644 --- a/sys/contrib/ipfilter/netinet/ip_proxy.c +++ b/sys/contrib/ipfilter/netinet/ip_proxy.c @@ -1060,7 +1060,7 @@ ipf_proxy_check(fin, nat) /* pr(I) - protocol number for proxy */ /* name(I) - proxy name */ /* */ -/* Search for an proxy by the protocol it is being used with and its name. */ +/* Search for a proxy by the protocol being used and by its name. */ /* ------------------------------------------------------------------------ */ aproxy_t * ipf_proxy_lookup(arg, pr, name) From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:13: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 6680767E360; Mon, 4 Oct 2021 13:13: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 4HNLkT12Rxz4lvS; Mon, 4 Oct 2021 13:13: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 041DC1A0F5; Mon, 4 Oct 2021 13:13:21 +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 194DDKOx068423; Mon, 4 Oct 2021 13:13:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DDKXG068422; Mon, 4 Oct 2021 13:13:20 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:13:20 GMT Message-Id: <202110041313.194DDKXG068422@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: e81cf0e1bb3a - stable/13 - ipfilter: Print the correct TCP sequence index number 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/stable/13 X-Git-Reftype: branch X-Git-Commit: e81cf0e1bb3a94c80bd326dd93147c1ce88a6d12 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, 04 Oct 2021 13:13:21 -0000 The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=e81cf0e1bb3a94c80bd326dd93147c1ce88a6d12 commit e81cf0e1bb3a94c80bd326dd93147c1ce88a6d12 Author: Cy Schubert AuthorDate: 2021-09-25 00:00:20 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:56:58 +0000 ipfilter: Print the correct TCP sequence index number TCP sequence numbers in the FTP proxy are maintained in a two dimensional array. The debug message prints the same seq[N] for both. Fix that. (cherry picked from commit df38343e71304169ebca0e4c4fa24b339982d7be) --- sys/contrib/ipfilter/netinet/ip_ftp_pxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c index c4ee0ef593df..f4b40f3601d9 100644 --- a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c +++ b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c @@ -1415,7 +1415,7 @@ ipf_p_ftp_process(softf, fin, nat, ftp, rv) printf("%s:seq[0](%u) + (%d) != (%u)\n", "ipf_p_ftp_process", t->ftps_seq[0], ackoff, thack); - printf("%s:seq[0](%u) + (%d) != (%u)\n", + printf("%s:seq[1](%u) + (%d) != (%u)\n", "ipf_p_ftp_process", t->ftps_seq[1], ackoff, thack); } From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:13: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 7515367E7F3; Mon, 4 Oct 2021 13:13: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 4HNLkV2cRgz4mBF; Mon, 4 Oct 2021 13:13: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 3531619EB3; Mon, 4 Oct 2021 13:13: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 194DDMdn068454; Mon, 4 Oct 2021 13:13:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DDMcP068453; Mon, 4 Oct 2021 13:13:22 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:13:22 GMT Message-Id: <202110041313.194DDMcP068453@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: c0b03251095d - stable/13 - Disable stack gap for ntpd during build. 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/stable/13 X-Git-Reftype: branch X-Git-Commit: c0b03251095d38e9635d0f82e3a401d29fa4d891 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, 04 Oct 2021 13:13:22 -0000 The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=c0b03251095d38e9635d0f82e3a401d29fa4d891 commit c0b03251095d38e9635d0f82e3a401d29fa4d891 Author: Marcin Wojtas AuthorDate: 2021-05-21 09:29:22 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 13:12:03 +0000 Disable stack gap for ntpd during build. When starting, ntpd calls setrlimit(2) to limit maximum size of its stack. The stack limit chosen by ntpd is 200K, so when stack gap is enabled, the stack gap is larger than this limit, which results in ntpd crashing. Submitted by: Dawid Gorecki Reviewed by: cy, imp Obtained from: Semihalf Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D29553 (cherry picked from commit af949c590bd8a00a5973b5875d7e0fa6832ea64a) --- usr.sbin/ntp/ntpd/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/usr.sbin/ntp/ntpd/Makefile b/usr.sbin/ntp/ntpd/Makefile index 2d8a8b9d2a2d..b9c3a05547d4 100644 --- a/usr.sbin/ntp/ntpd/Makefile +++ b/usr.sbin/ntp/ntpd/Makefile @@ -56,4 +56,7 @@ CLEANFILES+= .version version.c version.c: sh -e ${.CURDIR:H}/scripts/mkver ntpd +afterbuild: + ${ELFCTL} -e +noaslrstkgap ${PROG} + .include From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:15: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 6435367EA2C; Mon, 4 Oct 2021 13:15: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 4HNLn52PRhz4mPK; Mon, 4 Oct 2021 13:15: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 31A7119F9A; Mon, 4 Oct 2021 13:15: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 194DFbaj068742; Mon, 4 Oct 2021 13:15:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DFb3H068741; Mon, 4 Oct 2021 13:15:37 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:15:37 GMT Message-Id: <202110041315.194DFb3H068741@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 931fb0359e2b - stable/12 - ipfilter: Avoid a null if-then-else blocks 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/stable/12 X-Git-Reftype: branch X-Git-Commit: 931fb0359e2b643a76a40b90883a1ba1d3cac3cd 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, 04 Oct 2021 13:15:37 -0000 The branch stable/12 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=931fb0359e2b643a76a40b90883a1ba1d3cac3cd commit 931fb0359e2b643a76a40b90883a1ba1d3cac3cd Author: Cy Schubert AuthorDate: 2021-09-22 04:58:08 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:59:31 +0000 ipfilter: Avoid a null if-then-else blocks When WITHOUT_INET6 is selected we generate a null if-then-else blocks due to incorrect placment of #if statments. Move the #if statements reducing unnecessary runtime comparisons WITHOUT_INET6. (cherry picked from commit 73db3b64f167972db3ee3f780cecb439b09492b1) --- sys/contrib/ipfilter/netinet/ip_ftp_pxy.c | 18 +++++++----------- sys/contrib/ipfilter/netinet/ip_proxy.c | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c index 5d8f9f1f51f7..c4ee0ef593df 100644 --- a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c +++ b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c @@ -510,11 +510,10 @@ ipf_p_ftp_addport(softf, fin, ip, nat, ftp, dlen, nport, inc) fi.fin_src6 = nat->nat_ndst6; fi.fin_dst6 = nat->nat_nsrc6; - if (nat->nat_v[0] == 6) { #ifndef USE_INET6 + if (nat->nat_v[0] == 6) return APR_INC(inc); #endif - } /* * Add skeleton NAT entry for connection which will come back the @@ -582,15 +581,14 @@ ipf_p_ftp_addport(softf, fin, ip, nat, ftp, dlen, nport, inc) flags = SI_W_SPORT|NAT_SLAVE|IPN_TCP; MUTEX_ENTER(&softn->ipf_nat_new); - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) nat2 = ipf_nat6_add(&fi, ipn, &ftp->ftp_pendnat, flags, direction); + else #endif - } else { nat2 = ipf_nat_add(&fi, ipn, &ftp->ftp_pendnat, flags, direction); - } MUTEX_EXIT(&softn->ipf_nat_new); if (nat2 == NULL) { @@ -950,13 +948,12 @@ ipf_p_ftp_pasvreply(softf, fin, ip, nat, ftp, port, newmsg, s) MUTEX_EXIT(&nat2->nat_lock); fi.fin_ifp = NULL; if (nat->nat_dir == NAT_INBOUND) { - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) fi.fin_dst6 = nat->nat_ndst6; + else #endif - } else { fi.fin_daddr = nat->nat_ndstaddr; - } } if (ipf_state_add(softc, &fi, (ipstate_t **)&ftp->ftp_pendstate, SI_W_SPORT) != 0) @@ -979,15 +976,14 @@ ipf_p_ftp_pasvreply(softf, fin, ip, nat, ftp, port, newmsg, s) if (inc != 0) { fin->fin_plen += inc; fin->fin_dlen += inc; - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) { ip6 = (ip6_t *)fin->fin_ip; u_short len = ntohs(ip6->ip6_plen) + inc; ip6->ip6_plen = htons(len); + } else #endif - } else { ip->ip_len = htons(fin->fin_plen); - } } return APR_INC(inc); diff --git a/sys/contrib/ipfilter/netinet/ip_proxy.c b/sys/contrib/ipfilter/netinet/ip_proxy.c index 87051b6e6839..4399a9cde8e4 100644 --- a/sys/contrib/ipfilter/netinet/ip_proxy.c +++ b/sys/contrib/ipfilter/netinet/ip_proxy.c @@ -1354,8 +1354,8 @@ ipf_proxy_rule_rev(nat) if (ipn->in_v[0] == 4) { ipn->in_snip = ntohl(nat->nat_odstaddr); ipn->in_dnip = ntohl(nat->nat_nsrcaddr); - } else { #ifdef USE_INET6 + } else { ipn->in_snip6 = nat->nat_odst6; ipn->in_dnip6 = nat->nat_nsrc6; #endif From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:15: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 8C0CE67E925; Mon, 4 Oct 2021 13:15: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 4HNLn63NgHz4mLt; Mon, 4 Oct 2021 13:15: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 5455019AE3; Mon, 4 Oct 2021 13:15: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 194DFc25068766; Mon, 4 Oct 2021 13:15:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DFcwS068765; Mon, 4 Oct 2021 13:15:38 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:15:38 GMT Message-Id: <202110041315.194DFcwS068765@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: e7d5cb8b1d59 - stable/12 - ipfilter: Correct a comment 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/stable/12 X-Git-Reftype: branch X-Git-Commit: e7d5cb8b1d5944be338ee8d22cb52813f5e0707d 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, 04 Oct 2021 13:15:38 -0000 The branch stable/12 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=e7d5cb8b1d5944be338ee8d22cb52813f5e0707d commit e7d5cb8b1d5944be338ee8d22cb52813f5e0707d Author: Cy Schubert AuthorDate: 2021-09-25 06:41:22 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:59:31 +0000 ipfilter: Correct a comment Correct a comment's grammar and while at it clarify its meaining. (cherry picked from commit aa6cfcc820b438cec58fbe0af408d4457f8daf9d) --- sys/contrib/ipfilter/netinet/ip_proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/ipfilter/netinet/ip_proxy.c b/sys/contrib/ipfilter/netinet/ip_proxy.c index 4399a9cde8e4..a1a9379b95a6 100644 --- a/sys/contrib/ipfilter/netinet/ip_proxy.c +++ b/sys/contrib/ipfilter/netinet/ip_proxy.c @@ -1060,7 +1060,7 @@ ipf_proxy_check(fin, nat) /* pr(I) - protocol number for proxy */ /* name(I) - proxy name */ /* */ -/* Search for an proxy by the protocol it is being used with and its name. */ +/* Search for a proxy by the protocol being used and by its name. */ /* ------------------------------------------------------------------------ */ aproxy_t * ipf_proxy_lookup(arg, pr, name) From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:15: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 E72D667EA2D; Mon, 4 Oct 2021 13:15: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 4HNLn763cVz4mM4; Mon, 4 Oct 2021 13:15: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 86F2E19F9B; Mon, 4 Oct 2021 13:15: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 194DFdcg068790; Mon, 4 Oct 2021 13:15:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DFdYV068789; Mon, 4 Oct 2021 13:15:39 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:15:39 GMT Message-Id: <202110041315.194DFdYV068789@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 2c0fcd0ae01a - stable/12 - ipfilter: Print the correct TCP sequence index number 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/stable/12 X-Git-Reftype: branch X-Git-Commit: 2c0fcd0ae01a1896c60d9dab173fe7538f9befd8 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, 04 Oct 2021 13:15:40 -0000 The branch stable/12 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=2c0fcd0ae01a1896c60d9dab173fe7538f9befd8 commit 2c0fcd0ae01a1896c60d9dab173fe7538f9befd8 Author: Cy Schubert AuthorDate: 2021-09-25 00:00:20 +0000 Commit: Cy Schubert CommitDate: 2021-10-04 03:59:31 +0000 ipfilter: Print the correct TCP sequence index number TCP sequence numbers in the FTP proxy are maintained in a two dimensional array. The debug message prints the same seq[N] for both. Fix that. (cherry picked from commit df38343e71304169ebca0e4c4fa24b339982d7be) --- sys/contrib/ipfilter/netinet/ip_ftp_pxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c index c4ee0ef593df..f4b40f3601d9 100644 --- a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c +++ b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c @@ -1415,7 +1415,7 @@ ipf_p_ftp_process(softf, fin, nat, ftp, rv) printf("%s:seq[0](%u) + (%d) != (%u)\n", "ipf_p_ftp_process", t->ftps_seq[0], ackoff, thack); - printf("%s:seq[0](%u) + (%d) != (%u)\n", + printf("%s:seq[1](%u) + (%d) != (%u)\n", "ipf_p_ftp_process", t->ftps_seq[1], ackoff, thack); } From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:18: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 1302E67ED06; Mon, 4 Oct 2021 13:18: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 4HNLrv011Qz4mjN; Mon, 4 Oct 2021 13:18: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 D120B19AE5; Mon, 4 Oct 2021 13:18: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 194DIs4N069143; Mon, 4 Oct 2021 13:18:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DIsYv069142; Mon, 4 Oct 2021 13:18:54 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:18:54 GMT Message-Id: <202110041318.194DIsYv069142@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 370a229ea9c6 - stable/11 - ipfilter: Avoid a null if-then-else blocks 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/stable/11 X-Git-Reftype: branch X-Git-Commit: 370a229ea9c647806f85e18e3a514612d9ae773f 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, 04 Oct 2021 13:18:55 -0000 The branch stable/11 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=370a229ea9c647806f85e18e3a514612d9ae773f commit 370a229ea9c647806f85e18e3a514612d9ae773f Author: Cy Schubert AuthorDate: 2021-09-22 04:58:08 +0000 Commit: Cy Schubert CommitDate: 2021-10-01 16:12:51 +0000 ipfilter: Avoid a null if-then-else blocks When WITHOUT_INET6 is selected we generate a null if-then-else blocks due to incorrect placment of #if statments. Move the #if statements reducing unnecessary runtime comparisons WITHOUT_INET6. (cherry picked from commit 73db3b64f167972db3ee3f780cecb439b09492b1) --- sys/contrib/ipfilter/netinet/ip_ftp_pxy.c | 18 +++++++----------- sys/contrib/ipfilter/netinet/ip_proxy.c | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c index 5d8f9f1f51f7..c4ee0ef593df 100644 --- a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c +++ b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c @@ -510,11 +510,10 @@ ipf_p_ftp_addport(softf, fin, ip, nat, ftp, dlen, nport, inc) fi.fin_src6 = nat->nat_ndst6; fi.fin_dst6 = nat->nat_nsrc6; - if (nat->nat_v[0] == 6) { #ifndef USE_INET6 + if (nat->nat_v[0] == 6) return APR_INC(inc); #endif - } /* * Add skeleton NAT entry for connection which will come back the @@ -582,15 +581,14 @@ ipf_p_ftp_addport(softf, fin, ip, nat, ftp, dlen, nport, inc) flags = SI_W_SPORT|NAT_SLAVE|IPN_TCP; MUTEX_ENTER(&softn->ipf_nat_new); - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) nat2 = ipf_nat6_add(&fi, ipn, &ftp->ftp_pendnat, flags, direction); + else #endif - } else { nat2 = ipf_nat_add(&fi, ipn, &ftp->ftp_pendnat, flags, direction); - } MUTEX_EXIT(&softn->ipf_nat_new); if (nat2 == NULL) { @@ -950,13 +948,12 @@ ipf_p_ftp_pasvreply(softf, fin, ip, nat, ftp, port, newmsg, s) MUTEX_EXIT(&nat2->nat_lock); fi.fin_ifp = NULL; if (nat->nat_dir == NAT_INBOUND) { - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) fi.fin_dst6 = nat->nat_ndst6; + else #endif - } else { fi.fin_daddr = nat->nat_ndstaddr; - } } if (ipf_state_add(softc, &fi, (ipstate_t **)&ftp->ftp_pendstate, SI_W_SPORT) != 0) @@ -979,15 +976,14 @@ ipf_p_ftp_pasvreply(softf, fin, ip, nat, ftp, port, newmsg, s) if (inc != 0) { fin->fin_plen += inc; fin->fin_dlen += inc; - if (nat->nat_v[0] == 6) { #ifdef USE_INET6 + if (nat->nat_v[0] == 6) { ip6 = (ip6_t *)fin->fin_ip; u_short len = ntohs(ip6->ip6_plen) + inc; ip6->ip6_plen = htons(len); + } else #endif - } else { ip->ip_len = htons(fin->fin_plen); - } } return APR_INC(inc); diff --git a/sys/contrib/ipfilter/netinet/ip_proxy.c b/sys/contrib/ipfilter/netinet/ip_proxy.c index 87051b6e6839..4399a9cde8e4 100644 --- a/sys/contrib/ipfilter/netinet/ip_proxy.c +++ b/sys/contrib/ipfilter/netinet/ip_proxy.c @@ -1354,8 +1354,8 @@ ipf_proxy_rule_rev(nat) if (ipn->in_v[0] == 4) { ipn->in_snip = ntohl(nat->nat_odstaddr); ipn->in_dnip = ntohl(nat->nat_nsrcaddr); - } else { #ifdef USE_INET6 + } else { ipn->in_snip6 = nat->nat_odst6; ipn->in_dnip6 = nat->nat_nsrc6; #endif From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:18: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 3BFAF67EC37; Mon, 4 Oct 2021 13:18: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 4HNLrw0sxDz4mjQ; Mon, 4 Oct 2021 13:18: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 E1A2319AE6; Mon, 4 Oct 2021 13:18: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 194DItPQ069169; Mon, 4 Oct 2021 13:18:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DIttL069168; Mon, 4 Oct 2021 13:18:55 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:18:55 GMT Message-Id: <202110041318.194DIttL069168@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 0b72f4c82af8 - stable/11 - ipfilter: Correct a comment 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/stable/11 X-Git-Reftype: branch X-Git-Commit: 0b72f4c82af8fe86cfc1034a16661430430f6f42 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, 04 Oct 2021 13:18:56 -0000 The branch stable/11 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=0b72f4c82af8fe86cfc1034a16661430430f6f42 commit 0b72f4c82af8fe86cfc1034a16661430430f6f42 Author: Cy Schubert AuthorDate: 2021-09-25 06:41:22 +0000 Commit: Cy Schubert CommitDate: 2021-10-01 16:12:51 +0000 ipfilter: Correct a comment Correct a comment's grammar and while at it clarify its meaining. (cherry picked from commit aa6cfcc820b438cec58fbe0af408d4457f8daf9d) --- sys/contrib/ipfilter/netinet/ip_proxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/ipfilter/netinet/ip_proxy.c b/sys/contrib/ipfilter/netinet/ip_proxy.c index 4399a9cde8e4..a1a9379b95a6 100644 --- a/sys/contrib/ipfilter/netinet/ip_proxy.c +++ b/sys/contrib/ipfilter/netinet/ip_proxy.c @@ -1060,7 +1060,7 @@ ipf_proxy_check(fin, nat) /* pr(I) - protocol number for proxy */ /* name(I) - proxy name */ /* */ -/* Search for an proxy by the protocol it is being used with and its name. */ +/* Search for a proxy by the protocol being used and by its name. */ /* ------------------------------------------------------------------------ */ aproxy_t * ipf_proxy_lookup(arg, pr, name) From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13:18: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 AF01267EC44; Mon, 4 Oct 2021 13:18: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 4HNLrx2tgVz4mg9; Mon, 4 Oct 2021 13:18: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 1D9B61A0F8; Mon, 4 Oct 2021 13:18: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 194DIuRB069193; Mon, 4 Oct 2021 13:18:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194DIum1069192; Mon, 4 Oct 2021 13:18:56 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:18:56 GMT Message-Id: <202110041318.194DIum1069192@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 4f2d5aa364c4 - stable/11 - ipfilter: Print the correct TCP sequence index number 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/stable/11 X-Git-Reftype: branch X-Git-Commit: 4f2d5aa364c4e45727760f767be62ec4d81fdef7 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, 04 Oct 2021 13:18:57 -0000 The branch stable/11 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=4f2d5aa364c4e45727760f767be62ec4d81fdef7 commit 4f2d5aa364c4e45727760f767be62ec4d81fdef7 Author: Cy Schubert AuthorDate: 2021-09-25 00:00:20 +0000 Commit: Cy Schubert CommitDate: 2021-10-01 16:12:51 +0000 ipfilter: Print the correct TCP sequence index number TCP sequence numbers in the FTP proxy are maintained in a two dimensional array. The debug message prints the same seq[N] for both. Fix that. (cherry picked from commit df38343e71304169ebca0e4c4fa24b339982d7be) --- sys/contrib/ipfilter/netinet/ip_ftp_pxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c index c4ee0ef593df..f4b40f3601d9 100644 --- a/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c +++ b/sys/contrib/ipfilter/netinet/ip_ftp_pxy.c @@ -1415,7 +1415,7 @@ ipf_p_ftp_process(softf, fin, nat, ftp, rv) printf("%s:seq[0](%u) + (%d) != (%u)\n", "ipf_p_ftp_process", t->ftps_seq[0], ackoff, thack); - printf("%s:seq[0](%u) + (%d) != (%u)\n", + printf("%s:seq[1](%u) + (%d) != (%u)\n", "ipf_p_ftp_process", t->ftps_seq[1], ackoff, thack); } From owner-dev-commits-src-all@freebsd.org Mon Oct 4 13: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 784F867F8B3; Mon, 4 Oct 2021 13: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 4HNMfN2pm8z4pWR; Mon, 4 Oct 2021 13: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 41E831A754; Mon, 4 Oct 2021 13: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 194DsqIm021507; Mon, 4 Oct 2021 13: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 194DsqgS021506; Mon, 4 Oct 2021 13:54:52 GMT (envelope-from git) Date: Mon, 4 Oct 2021 13:54:52 GMT Message-Id: <202110041354.194DsqgS021506@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: David Bright Subject: git: 52e1406947b4 - stable/13 - ntb_hw_intel: fix xeon NTB gen3 bar disable logic MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dab X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 52e1406947b4002156cbf90ddd5d07ec6f7dd390 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, 04 Oct 2021 13:54:52 -0000 The branch stable/13 has been updated by dab: URL: https://cgit.FreeBSD.org/src/commit/?id=52e1406947b4002156cbf90ddd5d07ec6f7dd390 commit 52e1406947b4002156cbf90ddd5d07ec6f7dd390 Author: David Bright AuthorDate: 2021-09-27 13:18:46 +0000 Commit: David Bright CommitDate: 2021-10-04 13:53:26 +0000 ntb_hw_intel: fix xeon NTB gen3 bar disable logic In NTB gen3 driver, it was supposed to disable NTB bar access by default, but due to incorrect register access method, the bar disable logic does not work as expected. Those registers should be modified through NTB bar0 rather than PCI configuration space. Besides, we'd better to protect ourselves from a bad buddy node so ingress disable logic should be implemented together. Submitted by: Austin Zhang (austin.zhang@dell.com) Sponsored by: Dell EMC (cherry picked from commit e3cf7ebc1d36d068f1d1a83ea73ce2eed547e3cb) --- sys/dev/ntb/ntb_hw/ntb_hw_intel.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/sys/dev/ntb/ntb_hw/ntb_hw_intel.c b/sys/dev/ntb/ntb_hw/ntb_hw_intel.c index 716bca8c27ce..2535f7a23290 100644 --- a/sys/dev/ntb/ntb_hw/ntb_hw_intel.c +++ b/sys/dev/ntb/ntb_hw/ntb_hw_intel.c @@ -2163,15 +2163,21 @@ xeon_gen3_setup_b2b_mw(struct ntb_softc *ntb) intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR2XBASE, 0); /* - * If the value in EMBAR1LIMIT is set equal to the value in EMBAR1, - * the memory window for EMBAR1 is disabled. - * Note: It is needed to avoid malacious access. + * If the value in IMBAR1XLIMIT is set equal to the value in IMBAR1XBASE, + * the local memory window exposure from EMBAR1 is disabled. + * Note: It is needed to avoid malicious access. */ - reg = pci_read_config(ntb->device, XEON_GEN3_EXT_REG_BAR1BASE, 8); - intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR1XLIMIT, reg); + intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR1XLIMIT, 0); + intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR2XLIMIT, 0); - reg = pci_read_config(ntb->device, XEON_GEN3_EXT_REG_BAR2BASE, 8); - intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR2XLIMIT, reg); + /* Config outgoing translation limits (whole bar size windows) */ + reg = intel_ntb_reg_read(8, XEON_GEN3_REG_EMBAR1XBASE); + reg += ntb->bar_info[NTB_B2B_BAR_1].size; + intel_ntb_reg_write(8, XEON_GEN3_REG_EMBAR1XLIMIT, reg); + + reg = intel_ntb_reg_read(8, XEON_GEN3_REG_EMBAR2XBASE); + reg += ntb->bar_info[NTB_B2B_BAR_2].size; + intel_ntb_reg_write(8, XEON_GEN3_REG_EMBAR2XLIMIT, reg); return (0); } @@ -3226,7 +3232,10 @@ intel_ntb_mw_set_trans(device_t dev, unsigned idx, bus_addr_t addr, size_t size) limit = 0; if (bar_is_64bit(ntb, bar_num)) { - base = intel_ntb_reg_read(8, base_reg) & BAR_HIGH_MASK; + if (ntb->type == NTB_XEON_GEN3) + base = addr; + else + base = intel_ntb_reg_read(8, base_reg) & BAR_HIGH_MASK; if (limit_reg != 0 && size != mw_size) limit = base + size; @@ -3249,18 +3258,6 @@ intel_ntb_mw_set_trans(device_t dev, unsigned idx, bus_addr_t addr, size_t size) intel_ntb_reg_write(8, xlat_reg, 0); return (EIO); } - - if (ntb->type == NTB_XEON_GEN3) { - limit = base + size; - - /* set EMBAR1/2XLIMIT */ - if (!idx) - intel_ntb_reg_write(8, - XEON_GEN3_REG_EMBAR1XLIMIT, limit); - else - intel_ntb_reg_write(8, - XEON_GEN3_REG_EMBAR2XLIMIT, limit); - } } else { /* Configure 32-bit (split) BAR MW */ if (ntb->type == NTB_XEON_GEN3) From owner-dev-commits-src-all@freebsd.org Mon Oct 4 14:06: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 1F18567FD82; Mon, 4 Oct 2021 14:06: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 4HNMw30S0hz4q9Q; Mon, 4 Oct 2021 14:06: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 DFBAF1AA83; Mon, 4 Oct 2021 14:06: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 194E6g97035560; Mon, 4 Oct 2021 14:06:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194E6gco035559; Mon, 4 Oct 2021 14:06:42 GMT (envelope-from git) Date: Mon, 4 Oct 2021 14:06:42 GMT Message-Id: <202110041406.194E6gco035559@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: David Bright Subject: git: 50c20d90f97f - stable/12 - ntb_hw_intel: fix xeon NTB gen3 bar disable logic MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dab X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 50c20d90f97f7fe417ac111aebebe99aa8c943a6 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, 04 Oct 2021 14:06:43 -0000 The branch stable/12 has been updated by dab: URL: https://cgit.FreeBSD.org/src/commit/?id=50c20d90f97f7fe417ac111aebebe99aa8c943a6 commit 50c20d90f97f7fe417ac111aebebe99aa8c943a6 Author: David Bright AuthorDate: 2021-09-27 13:18:46 +0000 Commit: David Bright CommitDate: 2021-10-04 14:05:38 +0000 ntb_hw_intel: fix xeon NTB gen3 bar disable logic In NTB gen3 driver, it was supposed to disable NTB bar access by default, but due to incorrect register access method, the bar disable logic does not work as expected. Those registers should be modified through NTB bar0 rather than PCI configuration space. Besides, we'd better to protect ourselves from a bad buddy node so ingress disable logic should be implemented together. Submitted by: Austin Zhang (austin.zhang@dell.com) Sponsored by: Dell EMC (cherry picked from commit e3cf7ebc1d36d068f1d1a83ea73ce2eed547e3cb) --- sys/dev/ntb/ntb_hw/ntb_hw_intel.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/sys/dev/ntb/ntb_hw/ntb_hw_intel.c b/sys/dev/ntb/ntb_hw/ntb_hw_intel.c index c72dfaf3e35a..3ce67ee62b25 100644 --- a/sys/dev/ntb/ntb_hw/ntb_hw_intel.c +++ b/sys/dev/ntb/ntb_hw/ntb_hw_intel.c @@ -2160,15 +2160,21 @@ xeon_gen3_setup_b2b_mw(struct ntb_softc *ntb) intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR2XBASE, 0); /* - * If the value in EMBAR1LIMIT is set equal to the value in EMBAR1, - * the memory window for EMBAR1 is disabled. - * Note: It is needed to avoid malacious access. + * If the value in IMBAR1XLIMIT is set equal to the value in IMBAR1XBASE, + * the local memory window exposure from EMBAR1 is disabled. + * Note: It is needed to avoid malicious access. */ - reg = pci_read_config(ntb->device, XEON_GEN3_EXT_REG_BAR1BASE, 8); - intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR1XLIMIT, reg); + intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR1XLIMIT, 0); + intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR2XLIMIT, 0); - reg = pci_read_config(ntb->device, XEON_GEN3_EXT_REG_BAR2BASE, 8); - intel_ntb_reg_write(8, XEON_GEN3_REG_IMBAR2XLIMIT, reg); + /* Config outgoing translation limits (whole bar size windows) */ + reg = intel_ntb_reg_read(8, XEON_GEN3_REG_EMBAR1XBASE); + reg += ntb->bar_info[NTB_B2B_BAR_1].size; + intel_ntb_reg_write(8, XEON_GEN3_REG_EMBAR1XLIMIT, reg); + + reg = intel_ntb_reg_read(8, XEON_GEN3_REG_EMBAR2XBASE); + reg += ntb->bar_info[NTB_B2B_BAR_2].size; + intel_ntb_reg_write(8, XEON_GEN3_REG_EMBAR2XLIMIT, reg); return (0); } @@ -3219,7 +3225,10 @@ intel_ntb_mw_set_trans(device_t dev, unsigned idx, bus_addr_t addr, size_t size) limit = 0; if (bar_is_64bit(ntb, bar_num)) { - base = intel_ntb_reg_read(8, base_reg) & BAR_HIGH_MASK; + if (ntb->type == NTB_XEON_GEN3) + base = addr; + else + base = intel_ntb_reg_read(8, base_reg) & BAR_HIGH_MASK; if (limit_reg != 0 && size != mw_size) limit = base + size; @@ -3242,18 +3251,6 @@ intel_ntb_mw_set_trans(device_t dev, unsigned idx, bus_addr_t addr, size_t size) intel_ntb_reg_write(8, xlat_reg, 0); return (EIO); } - - if (ntb->type == NTB_XEON_GEN3) { - limit = base + size; - - /* set EMBAR1/2XLIMIT */ - if (!idx) - intel_ntb_reg_write(8, - XEON_GEN3_REG_EMBAR1XLIMIT, limit); - else - intel_ntb_reg_write(8, - XEON_GEN3_REG_EMBAR2XLIMIT, limit); - } } else { /* Configure 32-bit (split) BAR MW */ if (ntb->type == NTB_XEON_GEN3) From owner-dev-commits-src-all@freebsd.org Mon Oct 4 14:12: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 004BD67FE0F; Mon, 4 Oct 2021 14:12: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 4HNN2W6fbgz4qZq; Mon, 4 Oct 2021 14:12: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 C43141AAA1; Mon, 4 Oct 2021 14:12: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 194ECJ2N048886; Mon, 4 Oct 2021 14:12:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194ECJjS048885; Mon, 4 Oct 2021 14:12:19 GMT (envelope-from git) Date: Mon, 4 Oct 2021 14:12:19 GMT Message-Id: <202110041412.194ECJjS048885@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mitchell Horne Subject: git: 8e43767b3180 - stable/13 - rman: fix overflow in rman_reserve_resource_bound() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 8e43767b3180907d657e0a0292892ac528316a53 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, 04 Oct 2021 14:12:20 -0000 The branch stable/13 has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=8e43767b3180907d657e0a0292892ac528316a53 commit 8e43767b3180907d657e0a0292892ac528316a53 Author: Elliott Mitchell AuthorDate: 2021-09-27 17:13:19 +0000 Commit: Mitchell Horne CommitDate: 2021-10-04 14:11:06 +0000 rman: fix overflow in rman_reserve_resource_bound() If the default range of [0, ~0] is given, then (~0 - 0) + 1 == 0. This in turn will cause any allocation of non-zero size to fail. Zero-sized allocations are prohibited, so add a KASSERT to this effect. History indicates it is part of the original rman code. This bug may in fact be older than some contributors. Reviewed by: mhorne MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30280 (cherry picked from commit bcddaadbef5850ed9f040836d3f25ff57138ae28) --- sys/kern/subr_rman.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/subr_rman.c b/sys/kern/subr_rman.c index a76dbf020ee3..07d056c52845 100644 --- a/sys/kern/subr_rman.c +++ b/sys/kern/subr_rman.c @@ -449,6 +449,8 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end, "length %#jx, flags %x, device %s\n", rm->rm_descr, start, end, count, flags, dev == NULL ? "" : device_get_nameunit(dev))); + KASSERT(count != 0, ("%s: attempted to allocate an empty range", + __func__)); KASSERT((flags & RF_FIRSTSHARE) == 0, ("invalid flags %#x", flags)); new_rflags = (flags & ~RF_FIRSTSHARE) | RF_ALLOCATED; @@ -524,7 +526,7 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end, DPRINTF(("truncated region: [%#jx, %#jx]; size %#jx (requested %#jx)\n", rstart, rend, (rend - rstart + 1), count)); - if ((rend - rstart + 1) >= count) { + if ((rend - rstart) >= (count - 1)) { DPRINTF(("candidate region: [%#jx, %#jx], size %#jx\n", rstart, rend, (rend - rstart + 1))); if ((s->r_end - s->r_start + 1) == count) { From owner-dev-commits-src-all@freebsd.org Mon Oct 4 14:12: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 A273067FE8B; Mon, 4 Oct 2021 14:12: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 4HNN2Y1rk6z4qpt; Mon, 4 Oct 2021 14:12: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 EFBCB1A8CF; Mon, 4 Oct 2021 14:12: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 194ECKG8048916; Mon, 4 Oct 2021 14:12:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194ECKo0048915; Mon, 4 Oct 2021 14:12:20 GMT (envelope-from git) Date: Mon, 4 Oct 2021 14:12:20 GMT Message-Id: <202110041412.194ECKo0048915@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mitchell Horne Subject: git: 68628f462093 - stable/13 - boot(9): update to match reality MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 68628f46209356895110411777ac387329e1ed20 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, 04 Oct 2021 14:12:21 -0000 The branch stable/13 has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=68628f46209356895110411777ac387329e1ed20 commit 68628f46209356895110411777ac387329e1ed20 Author: Mitchell Horne AuthorDate: 2021-09-28 14:36:09 +0000 Commit: Mitchell Horne CommitDate: 2021-10-04 14:11:06 +0000 boot(9): update to match reality This function was renamed to kern_reboot() in 2010, but the man page has failed to keep in sync. Bring it up to date on the rename, add the shutdown hooks to the synopsis, and document the (obvious) fact that kern_reboot() does not return. Fix an outdated reference to the old name in kern_reboot(), and leave a reference to the man page so future readers might find it before any large changes. Reviewed by: imp, markj MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32085 (cherry picked from commit 800e74955d4e5f90e7258956ba42228350f71049) --- ObsoleteFiles.inc | 3 +++ share/man/man9/Makefile | 2 +- share/man/man9/{boot.9 => kern_reboot.9} | 26 ++++++++++++++++++-------- sys/kern/kern_shutdown.c | 5 +++-- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 843bc0326a41..a721f5596031 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -36,6 +36,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20210923: rename boot(9) to kern_reboot(9) +OLD_FILES+=usr/share/man/man9/boot.9.gz + # 20210810: remove Pentium-related man pages and references OLD_FILES+=usr/share/man/man3/pmc.p4.3.gz OLD_FILES+=usr/share/man/man3/pmc.p5.3.gz diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 43bf82426a73..ae5efa65bd0b 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -15,7 +15,6 @@ MAN= accept_filter.9 \ bhnd_erom.9 \ bios.9 \ bitset.9 \ - boot.9 \ bpf.9 \ buf.9 \ buf_ring.9 \ @@ -188,6 +187,7 @@ MAN= accept_filter.9 \ intro.9 \ ithread.9 \ KASSERT.9 \ + kern_reboot.9 \ kern_testfrwk.9 \ kernacc.9 \ kernel_mount.9 \ diff --git a/share/man/man9/boot.9 b/share/man/man9/kern_reboot.9 similarity index 85% rename from share/man/man9/boot.9 rename to share/man/man9/kern_reboot.9 index cbd0099e4e18..587d4ab114db 100644 --- a/share/man/man9/boot.9 +++ b/share/man/man9/kern_reboot.9 @@ -34,21 +34,25 @@ .\" .\" $FreeBSD$ .\" -.Dd February 14, 1997 -.Dt BOOT 9 +.Dd Sept 23, 2021 +.Dt KERN_REBOOT 9 .Os .Sh NAME -.Nm boot +.Nm kern_reboot .Nd halt or reboot the system .Sh SYNOPSIS .In sys/types.h .In sys/systm.h .In sys/reboot.h .Ft void -.Fn boot "int howto" +.Fn kern_reboot "int howto" +.In sys/eventhandler.h +.Fn EVENTHANDLER_REGISTER "shutdown_pre_sync" "shutdown_fn" "private" "priority" +.Fn EVENTHANDLER_REGISTER "shutdown_post_sync" "shutdown_fn" "private" "priority" +.Fn EVENTHANDLER_REGISTER "shutdown_final" "shutdown_fn" "private" "priority" .Sh DESCRIPTION The -.Fn boot +.Fn kern_reboot function handles final system shutdown, and either halts or reboots the system. The exact action to be taken is determined by the flags passed in @@ -56,12 +60,12 @@ The exact action to be taken is determined by the flags passed in and by whether or not the system has finished autoconfiguration. .Pp If the system has finished autoconfiguration, -.Fn boot +.Fn kern_reboot does the following: .Bl -enum -offset indent .It If this is the first invocation of -.Fn boot +.Fn kern_reboot and the .Dv RB_NOSYNC flag is not set in @@ -93,8 +97,14 @@ Otherwise, reboots the system. .El .Pp If the system has not finished autoconfiguration, -.Fn boot +.Fn kern_reboot runs any shutdown hooks previously registered, prints a message, and halts the system. +.Sh RETURN VALUES +The +.Fn kern_reboot +function does not return. .Sh SEE ALSO +.Xr reboot 2 +.Xr EVENTHANDLER 9 .Xr vfs_unmountall 9 diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c index fb2a69401801..eb2d41fedd42 100644 --- a/sys/kern/kern_shutdown.c +++ b/sys/kern/kern_shutdown.c @@ -421,7 +421,8 @@ doadump(boolean_t textdump) } /* - * Shutdown the system cleanly to prepare for reboot, halt, or power off. + * kern_reboot(9): Shut down the system cleanly to prepare for reboot, halt, or + * power off. */ void kern_reboot(int howto) @@ -450,7 +451,7 @@ kern_reboot(int howto) sched_bind(curthread, CPU_FIRST()); thread_unlock(curthread); KASSERT(PCPU_GET(cpuid) == CPU_FIRST(), - ("boot: not running on cpu 0")); + ("%s: not running on cpu 0", __func__)); } #endif /* We're in the process of rebooting. */ From owner-dev-commits-src-all@freebsd.org Mon Oct 4 14:18: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 9D9266A809C; Mon, 4 Oct 2021 14:18: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 4HNN9N3sXsz4qpF; Mon, 4 Oct 2021 14:18: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 64C6C1A8D6; Mon, 4 Oct 2021 14:18: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 194EIG7H049437; Mon, 4 Oct 2021 14:18:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194EIGfr049436; Mon, 4 Oct 2021 14:18:16 GMT (envelope-from git) Date: Mon, 4 Oct 2021 14:18:16 GMT Message-Id: <202110041418.194EIGfr049436@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mitchell Horne Subject: git: a3acb379bdea - stable/12 - rman: fix overflow in rman_reserve_resource_bound() MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: a3acb379bdea033ce08b4800cbb5a9c46a673ce1 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, 04 Oct 2021 14:18:16 -0000 The branch stable/12 has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=a3acb379bdea033ce08b4800cbb5a9c46a673ce1 commit a3acb379bdea033ce08b4800cbb5a9c46a673ce1 Author: Elliott Mitchell AuthorDate: 2021-09-27 17:13:19 +0000 Commit: Mitchell Horne CommitDate: 2021-10-04 14:15:19 +0000 rman: fix overflow in rman_reserve_resource_bound() If the default range of [0, ~0] is given, then (~0 - 0) + 1 == 0. This in turn will cause any allocation of non-zero size to fail. Zero-sized allocations are prohibited, so add a KASSERT to this effect. History indicates it is part of the original rman code. This bug may in fact be older than some contributors. Reviewed by: mhorne MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D30280 (cherry picked from commit bcddaadbef5850ed9f040836d3f25ff57138ae28) --- sys/kern/subr_rman.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/subr_rman.c b/sys/kern/subr_rman.c index 98614b85e32b..4af718695159 100644 --- a/sys/kern/subr_rman.c +++ b/sys/kern/subr_rman.c @@ -449,6 +449,8 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end, "length %#jx, flags %x, device %s\n", rm->rm_descr, start, end, count, flags, dev == NULL ? "" : device_get_nameunit(dev))); + KASSERT(count != 0, ("%s: attempted to allocate an empty range", + __func__)); KASSERT((flags & RF_FIRSTSHARE) == 0, ("invalid flags %#x", flags)); new_rflags = (flags & ~RF_FIRSTSHARE) | RF_ALLOCATED; @@ -524,7 +526,7 @@ rman_reserve_resource_bound(struct rman *rm, rman_res_t start, rman_res_t end, DPRINTF(("truncated region: [%#jx, %#jx]; size %#jx (requested %#jx)\n", rstart, rend, (rend - rstart + 1), count)); - if ((rend - rstart + 1) >= count) { + if ((rend - rstart) >= (count - 1)) { DPRINTF(("candidate region: [%#jx, %#jx], size %#jx\n", rstart, rend, (rend - rstart + 1))); if ((s->r_end - s->r_start + 1) == count) { From owner-dev-commits-src-all@freebsd.org Mon Oct 4 14:18: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 E48C66A8024; Mon, 4 Oct 2021 14:18: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 4HNN9P5TYRz4qVZ; Mon, 4 Oct 2021 14:18: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 83F6C1AB21; Mon, 4 Oct 2021 14:18: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 194EIHHC049461; Mon, 4 Oct 2021 14:18:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194EIHqk049460; Mon, 4 Oct 2021 14:18:17 GMT (envelope-from git) Date: Mon, 4 Oct 2021 14:18:17 GMT Message-Id: <202110041418.194EIHqk049460@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mitchell Horne Subject: git: 26337c10f060 - stable/12 - boot(9): update to match reality MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 26337c10f060e6a25b1708d421056d28a5b608b0 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, 04 Oct 2021 14:18:18 -0000 The branch stable/12 has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=26337c10f060e6a25b1708d421056d28a5b608b0 commit 26337c10f060e6a25b1708d421056d28a5b608b0 Author: Mitchell Horne AuthorDate: 2021-09-28 14:36:09 +0000 Commit: Mitchell Horne CommitDate: 2021-10-04 14:17:05 +0000 boot(9): update to match reality This function was renamed to kern_reboot() in 2010, but the man page has failed to keep in sync. Bring it up to date on the rename, add the shutdown hooks to the synopsis, and document the (obvious) fact that kern_reboot() does not return. Fix an outdated reference to the old name in kern_reboot(), and leave a reference to the man page so future readers might find it before any large changes. Reviewed by: imp, markj MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32085 (cherry picked from commit 800e74955d4e5f90e7258956ba42228350f71049) --- ObsoleteFiles.inc | 3 +++ share/man/man9/Makefile | 2 +- share/man/man9/{boot.9 => kern_reboot.9} | 26 ++++++++++++++++++-------- sys/kern/kern_shutdown.c | 5 +++-- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 3c505f9610f4..14c313c55377 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20210923: rename boot(9) to kern_reboot(9) +OLD_FILES+=usr/share/man/man9/boot.9.gz + # 20201004: logo files renamed to type-agnostic gfx-*.lua OLD_FILES+=boot/lua/logo-beastie.lua OLD_FILES+=boot/lua/logo-beastiebw.lua diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 60ee6ea5aa1a..4068181e6327 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -16,7 +16,6 @@ MAN= accept_filter.9 \ bhnd_erom.9 \ bios.9 \ bitset.9 \ - boot.9 \ bpf.9 \ buf.9 \ buf_ring.9 \ @@ -178,6 +177,7 @@ MAN= accept_filter.9 \ intro.9 \ ithread.9 \ KASSERT.9 \ + kern_reboot.9 \ kern_testfrwk.9 \ kernacc.9 \ kernel_mount.9 \ diff --git a/share/man/man9/boot.9 b/share/man/man9/kern_reboot.9 similarity index 85% rename from share/man/man9/boot.9 rename to share/man/man9/kern_reboot.9 index cbd0099e4e18..587d4ab114db 100644 --- a/share/man/man9/boot.9 +++ b/share/man/man9/kern_reboot.9 @@ -34,21 +34,25 @@ .\" .\" $FreeBSD$ .\" -.Dd February 14, 1997 -.Dt BOOT 9 +.Dd Sept 23, 2021 +.Dt KERN_REBOOT 9 .Os .Sh NAME -.Nm boot +.Nm kern_reboot .Nd halt or reboot the system .Sh SYNOPSIS .In sys/types.h .In sys/systm.h .In sys/reboot.h .Ft void -.Fn boot "int howto" +.Fn kern_reboot "int howto" +.In sys/eventhandler.h +.Fn EVENTHANDLER_REGISTER "shutdown_pre_sync" "shutdown_fn" "private" "priority" +.Fn EVENTHANDLER_REGISTER "shutdown_post_sync" "shutdown_fn" "private" "priority" +.Fn EVENTHANDLER_REGISTER "shutdown_final" "shutdown_fn" "private" "priority" .Sh DESCRIPTION The -.Fn boot +.Fn kern_reboot function handles final system shutdown, and either halts or reboots the system. The exact action to be taken is determined by the flags passed in @@ -56,12 +60,12 @@ The exact action to be taken is determined by the flags passed in and by whether or not the system has finished autoconfiguration. .Pp If the system has finished autoconfiguration, -.Fn boot +.Fn kern_reboot does the following: .Bl -enum -offset indent .It If this is the first invocation of -.Fn boot +.Fn kern_reboot and the .Dv RB_NOSYNC flag is not set in @@ -93,8 +97,14 @@ Otherwise, reboots the system. .El .Pp If the system has not finished autoconfiguration, -.Fn boot +.Fn kern_reboot runs any shutdown hooks previously registered, prints a message, and halts the system. +.Sh RETURN VALUES +The +.Fn kern_reboot +function does not return. .Sh SEE ALSO +.Xr reboot 2 +.Xr EVENTHANDLER 9 .Xr vfs_unmountall 9 diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c index b8183afec745..969280513e40 100644 --- a/sys/kern/kern_shutdown.c +++ b/sys/kern/kern_shutdown.c @@ -386,7 +386,8 @@ doadump(boolean_t textdump) } /* - * Shutdown the system cleanly to prepare for reboot, halt, or power off. + * kern_reboot(9): Shut down the system cleanly to prepare for reboot, halt, or + * power off. */ void kern_reboot(int howto) @@ -415,7 +416,7 @@ kern_reboot(int howto) sched_bind(curthread, CPU_FIRST()); thread_unlock(curthread); KASSERT(PCPU_GET(cpuid) == CPU_FIRST(), - ("boot: not running on cpu 0")); + ("%s: not running on cpu 0", __func__)); } #endif /* We're in the process of rebooting. */ From nobody Mon Oct 4 16:28:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 140928D0AAF; Mon, 4 Oct 2021 16:28: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 4HNR3k01Xdz3MQT; Mon, 4 Oct 2021 16:28: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 D4D301C5C0; Mon, 4 Oct 2021 16:28: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 194GSXPu022957; Mon, 4 Oct 2021 16:28:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194GSXPQ022956; Mon, 4 Oct 2021 16:28:33 GMT (envelope-from git) Date: Mon, 4 Oct 2021 16:28:33 GMT Message-Id: <202110041628.194GSXPQ022956@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: 105fd928b0b5 - main - libctf: Improve check for duplicate SOU definitions in ctf_add_type() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 105fd928b0b5b35ab529e5f6914788dc49582901 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=105fd928b0b5b35ab529e5f6914788dc49582901 commit 105fd928b0b5b35ab529e5f6914788dc49582901 Author: Mark Johnston AuthorDate: 2021-10-04 16:28:22 +0000 Commit: Mark Johnston CommitDate: 2021-10-04 16:28:22 +0000 libctf: Improve check for duplicate SOU definitions in ctf_add_type() When copying a struct or union from one CTF container to another, ctf_add_type() checks whether it matches an existing type in the destination container. It does so by looking for a type with the same name and kind as the new type, and if one exists, it iterates over all members of the source type and checks whether a member with matching name and offset exists in the matched destination type. This can produce false positives, for example because member types are not compared, but this is not expected to arise in practice. If the match fails, ctf_add_type() returns an error. The procedure used for member comparison breaks down in the face of anonymous struct and union members. ctf_member_iter() visits each member in the source definition and looks up the corresponding member in the desination definition by name using ctf_member_info(), but this function will descend into anonymous members and thus fail to match. Fix the problem by introducing a custom comparison routine which does not assume member names are unique. This should also be faster for types with many members; in the previous scheme, membcmp() would perform a linear scan of the desination type's members to perform a lookup by name. The new routine steps through the members of both types in a single loop. PR: 258763 MFC after: 2 weeks Sponsored by: The FreeBSD Foundation --- cddl/contrib/opensolaris/common/ctf/ctf_create.c | 100 +++++++++++++++++------ 1 file changed, 73 insertions(+), 27 deletions(-) diff --git a/cddl/contrib/opensolaris/common/ctf/ctf_create.c b/cddl/contrib/opensolaris/common/ctf/ctf_create.c index ae4cc7f31176..3a080e71baa0 100644 --- a/cddl/contrib/opensolaris/common/ctf/ctf_create.c +++ b/cddl/contrib/opensolaris/common/ctf/ctf_create.c @@ -1196,17 +1196,6 @@ enumadd(const char *name, int value, void *arg) name, value) == CTF_ERR); } -/*ARGSUSED*/ -static int -membcmp(const char *name, ctf_id_t type, ulong_t offset, void *arg) -{ - ctf_bundle_t *ctb = arg; - ctf_membinfo_t ctm; - - return (ctf_member_info(ctb->ctb_file, ctb->ctb_type, - name, &ctm) == CTF_ERR || ctm.ctm_offset != offset); -} - static int membadd(const char *name, ctf_id_t type, ulong_t offset, void *arg) { @@ -1240,6 +1229,71 @@ membadd(const char *name, ctf_id_t type, ulong_t offset, void *arg) return (0); } +static long +soucmp(ctf_file_t *src_fp, ctf_id_t src_type, ctf_file_t *dst_fp, + ctf_id_t dst_type) +{ + const struct ctf_type *src_tp, *dst_tp; + const char *src_name, *dst_name; + ssize_t src_sz, dst_sz, src_inc, dst_inc; + uint_t kind, n; + + if ((src_type = ctf_type_resolve(src_fp, src_type)) == CTF_ERR) + return (CTF_ERR); + if ((dst_type = ctf_type_resolve(dst_fp, dst_type)) == CTF_ERR) + return (CTF_ERR); + + if ((src_tp = ctf_lookup_by_id(&src_fp, src_type)) == NULL) + return (CTF_ERR); + if ((dst_tp = ctf_lookup_by_id(&dst_fp, dst_type)) == NULL) + return (CTF_ERR); + + if ((kind = LCTF_INFO_KIND(src_fp, src_tp->ctt_info)) != + LCTF_INFO_KIND(dst_fp, dst_tp->ctt_info)) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + if (kind != CTF_K_STRUCT && kind != CTF_K_UNION) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + if ((n = LCTF_INFO_VLEN(src_fp, src_tp->ctt_info)) != + LCTF_INFO_VLEN(dst_fp, dst_tp->ctt_info)) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + + (void) ctf_get_ctt_size(src_fp, src_tp, &src_sz, &src_inc); + (void) ctf_get_ctt_size(dst_fp, dst_tp, &dst_sz, &dst_inc); + if (src_sz != dst_sz || src_inc != dst_inc) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + + if (src_sz < CTF_LSTRUCT_THRESH) { + const ctf_member_t *src_mp, *dst_mp; + + src_mp = (const ctf_member_t *)((uintptr_t)src_tp + src_inc); + dst_mp = (const ctf_member_t *)((uintptr_t)dst_tp + dst_inc); + for (; n != 0; n--, src_mp++, dst_mp++) { + if (src_mp->ctm_offset != dst_mp->ctm_offset) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + src_name = ctf_strptr(src_fp, src_mp->ctm_name); + dst_name = ctf_strptr(dst_fp, dst_mp->ctm_name); + if (strcmp(src_name, dst_name) != 0) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + } + } else { + const ctf_lmember_t *src_mp, *dst_mp; + + src_mp = (const ctf_lmember_t *)((uintptr_t)src_tp + src_inc); + dst_mp = (const ctf_lmember_t *)((uintptr_t)dst_tp + dst_inc); + for (; n != 0; n--, src_mp++, dst_mp++) { + if (src_mp->ctlm_offsethi != dst_mp->ctlm_offsethi || + src_mp->ctlm_offsetlo != dst_mp->ctlm_offsetlo) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + src_name = ctf_strptr(src_fp, src_mp->ctlm_name); + dst_name = ctf_strptr(dst_fp, dst_mp->ctlm_name); + if (strcmp(src_name, dst_name) != 0) + return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); + } + } + + return (0); +} + /* * The ctf_add_type routine is used to copy a type from a source CTF container * to a dynamic destination container. This routine operates recursively by @@ -1460,23 +1514,15 @@ ctf_add_type(ctf_file_t *dst_fp, ctf_file_t *src_fp, ctf_id_t src_type) ctf_dmdef_t *dmd; int errs = 0; - /* - * Technically to match a struct or union we need to check both - * ways (src members vs. dst, dst members vs. src) but we make - * this more optimal by only checking src vs. dst and comparing - * the total size of the structure (which we must do anyway) - * which covers the possibility of dst members not in src. - * This optimization can be defeated for unions, but is so - * pathological as to render it irrelevant for our purposes. - */ if (dst_type != CTF_ERR && dst_kind != CTF_K_FORWARD) { - if (ctf_type_size(src_fp, src_type) != - ctf_type_size(dst_fp, dst_type)) - return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); - - if (ctf_member_iter(src_fp, src_type, membcmp, &dst)) - return (ctf_set_errno(dst_fp, ECTF_CONFLICT)); - + /* + * Compare the sizes and fields of the two types. + * The field comparisons only check the names and + * offsets, so this is not perfect but is good enough + * for scenarios that we care about. + */ + if (soucmp(src_fp, src_type, dst_fp, dst_type) != 0) + return (CTF_ERR); /* errno is set for us */ break; } From nobody Mon Oct 4 16:28:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 84E3E8D07F8; Mon, 4 Oct 2021 16:28: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 4HNR3l245Wz3MLQ; Mon, 4 Oct 2021 16:28: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 244571C738; Mon, 4 Oct 2021 16:28: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 194GSYnE022981; Mon, 4 Oct 2021 16:28:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194GSYE3022980; Mon, 4 Oct 2021 16:28:34 GMT (envelope-from git) Date: Mon, 4 Oct 2021 16:28:34 GMT Message-Id: <202110041628.194GSYE3022980@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: 69f7649b7148 - main - gmultipath tests: Re-enable the failloop test in CI List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 69f7649b7148f9e1e331da8f4a9748c55a2b6ce3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=69f7649b7148f9e1e331da8f4a9748c55a2b6ce3 commit 69f7649b7148f9e1e331da8f4a9748c55a2b6ce3 Author: Mark Johnston AuthorDate: 2021-10-04 16:24:29 +0000 Commit: Mark Johnston CommitDate: 2021-10-04 16:28:27 +0000 gmultipath tests: Re-enable the failloop test in CI PR: 258763 MFC after: 2 weeks Sponsored by: The FreeBSD Foundation --- tests/sys/geom/class/multipath/failloop.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/sys/geom/class/multipath/failloop.sh b/tests/sys/geom/class/multipath/failloop.sh index 48006d6b10da..0f0202bb8b01 100755 --- a/tests/sys/geom/class/multipath/failloop.sh +++ b/tests/sys/geom/class/multipath/failloop.sh @@ -36,10 +36,6 @@ failloop_head() } failloop_body() { - if [ "$(atf_config_get ci false)" = "true" ]; then - atf_skip "https://bugs.freebsd.org/258763" - fi - sysctl -n kern.geom.notaste > kern.geom.notaste.txt load_gnop load_gmultipath From nobody Mon Oct 4 16:32:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DEE0A8D278C; Mon, 4 Oct 2021 16:32:25 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4HNR883Wykz3P8M; Mon, 4 Oct 2021 16:32:24 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.86 (FreeBSD)) (envelope-from ) id 1mXQsx-00006d-Fh; Mon, 04 Oct 2021 19:32:15 +0300 Date: Mon, 4 Oct 2021 19:32:15 +0300 From: Slawa Olhovchenkov To: Emmanuel Vadot Cc: Warner Losh , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 79a100e28e3c - main - bluetooth: complete removal of ng_h4 Message-ID: <20211004163215.GB80160@zxy.spb.ru> References: <202109300200.18U20EZD084710@gitrepo.freebsd.org> <20210930111120.e038ca0a2a3c770f4778fa84@bidouilliste.com> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210930111120.e038ca0a2a3c770f4778fa84@bidouilliste.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-Rspamd-Queue-Id: 4HNR883Wykz3P8M X-Spamd-Bar: / Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of slw@zxy.spb.ru has no SPF policy when checking 195.70.199.98) smtp.mailfrom=slw@zxy.spb.ru X-Spamd-Result: default: False [-0.26 / 15.00]; MID_RHS_MATCH_FROM(0.00)[]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; NEURAL_SPAM_SHORT(0.84)[0.844]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[zxy.spb.ru]; AUTH_NA(1.00)[]; RCPT_COUNT_FIVE(0.00)[5]; TO_MATCH_ENVRCPT_SOME(0.00)[]; R_SPF_NA(0.00)[no SPF record]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; R_DKIM_NA(0.00)[]; ASN(0.00)[asn:5495, ipnet:195.70.192.0/19, country:RU]; MIME_TRACE(0.00)[0:+]; MAILMAN_DEST(0.00)[dev-commits-src-all,dev-commits-src-main]; RCVD_COUNT_TWO(0.00)[2] X-ThisMailContainsUnwantedMimeParts: N On Thu, Sep 30, 2021 at 11:11:20AM +0200, Emmanuel Vadot wrote: > On Thu, 30 Sep 2021 02:00:14 GMT > Warner Losh wrote: > > > The branch main has been updated by imp: > > > > URL: https://cgit.FreeBSD.org/src/commit/?id=79a100e28e3c814773bb4c1826cfa25fbe31140e > > > > commit 79a100e28e3c814773bb4c1826cfa25fbe31140e > > Author: Warner Losh > > AuthorDate: 2021-09-05 18:41:16 +0000 > > Commit: Warner Losh > > CommitDate: 2021-09-30 02:00:02 +0000 > > > > bluetooth: complete removal of ng_h4 > > > > The ng_h4 module was disconnected 13 years ago when the tty later was > > locked by Ed. It completely fails to compile, and has a number of false > > positives for Giant use. Remove it for lack of interest. Bluetooth has > > largely (completely?) moved on from bluetooth over UART transport. > > > > OK'd by: emax > > Sponsored by: Netflix > > Differential Revision: https://reviews.freebsd.org/D31846 > > Every BT+WIFI combo chip used in SBC uses uart for bluetooth. > I have no idea if it uses this or need something else as I've never > looked. > But anyway, if it fails to compile now I'm fine with removing it, if > someone wants to add support for bluetooth to SBC they could always > revive this code. Yes, removed code like UART Transport Layer, need for communicate w/ RPi4 BT module, for example. From nobody Mon Oct 4 16:52:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 43AF08D507D; Mon, 4 Oct 2021 16:52: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 4HNRbV1GgTz3RHq; Mon, 4 Oct 2021 16:52: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 014BF1C9F8; Mon, 4 Oct 2021 16:52: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 194Gqbfo061655; Mon, 4 Oct 2021 16:52:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194Gqb7T061654; Mon, 4 Oct 2021 16:52:37 GMT (envelope-from git) Date: Mon, 4 Oct 2021 16:52:37 GMT Message-Id: <202110041652.194Gqb7T061654@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: d6dffbae9662 - main - lastcomm/sa: Remove sparc64 tests, they aren't needed. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: d6dffbae96621a6fbc804c5f31dff6648e0a122c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=d6dffbae96621a6fbc804c5f31dff6648e0a122c commit d6dffbae96621a6fbc804c5f31dff6648e0a122c Author: Warner Losh AuthorDate: 2021-10-04 16:38:37 +0000 Commit: Warner Losh CommitDate: 2021-10-04 16:51:15 +0000 lastcomm/sa: Remove sparc64 tests, they aren't needed. These tests will run only on a sparc64 system, and so never run anymore. Sponsored by: Netflix --- usr.bin/lastcomm/tests/Makefile | 6 +---- usr.bin/lastcomm/tests/v1-sparc64-acct.in | Bin 1568 -> 0 bytes usr.bin/lastcomm/tests/v1-sparc64.out | 28 ----------------------- usr.bin/lastcomm/tests/v2-sparc64-acct.in | Bin 2592 -> 0 bytes usr.bin/lastcomm/tests/v2-sparc64.out | 36 ------------------------------ usr.sbin/sa/tests/Makefile | 10 +-------- usr.sbin/sa/tests/v1-sparc64-sav.in | Bin 16384 -> 0 bytes usr.sbin/sa/tests/v1-sparc64-sav.out | 5 ----- usr.sbin/sa/tests/v1-sparc64-u.out | 28 ----------------------- usr.sbin/sa/tests/v1-sparc64-usr.in | Bin 16384 -> 0 bytes usr.sbin/sa/tests/v1-sparc64-usr.out | 1 - usr.sbin/sa/tests/v2-sparc64-sav.in | Bin 16384 -> 0 bytes usr.sbin/sa/tests/v2-sparc64-u.out | 36 ------------------------------ usr.sbin/sa/tests/v2-sparc64-usr.in | Bin 16384 -> 0 bytes 14 files changed, 2 insertions(+), 148 deletions(-) diff --git a/usr.bin/lastcomm/tests/Makefile b/usr.bin/lastcomm/tests/Makefile index 9a38743c903b..db6aec3b69fa 100644 --- a/usr.bin/lastcomm/tests/Makefile +++ b/usr.bin/lastcomm/tests/Makefile @@ -3,19 +3,15 @@ PACKAGE= tests TAP_TESTS_SH= legacy_test -TEST_METADATA.legacy_test+= allowed_architectures="amd64 i386 sparc64" +TEST_METADATA.legacy_test+= allowed_architectures="amd64 i386" ${PACKAGE}FILES+= v1-amd64-acct.in ${PACKAGE}FILES+= v1-amd64.out ${PACKAGE}FILES+= v1-i386-acct.in ${PACKAGE}FILES+= v1-i386.out -${PACKAGE}FILES+= v1-sparc64-acct.in -${PACKAGE}FILES+= v1-sparc64.out ${PACKAGE}FILES+= v2-amd64-acct.in ${PACKAGE}FILES+= v2-amd64.out ${PACKAGE}FILES+= v2-i386-acct.in ${PACKAGE}FILES+= v2-i386.out -${PACKAGE}FILES+= v2-sparc64-acct.in -${PACKAGE}FILES+= v2-sparc64.out .include diff --git a/usr.bin/lastcomm/tests/v1-sparc64-acct.in b/usr.bin/lastcomm/tests/v1-sparc64-acct.in deleted file mode 100644 index 00f05b423fc5..000000000000 Binary files a/usr.bin/lastcomm/tests/v1-sparc64-acct.in and /dev/null differ diff --git a/usr.bin/lastcomm/tests/v1-sparc64.out b/usr.bin/lastcomm/tests/v1-sparc64.out deleted file mode 100644 index d33ae719fb53..000000000000 --- a/usr.bin/lastcomm/tests/v1-sparc64.out +++ /dev/null @@ -1,28 +0,0 @@ -core -FDX root 0.000 secs 0.000 us 0.000 sy 0.031 es Wed May 16 12:16 -core -DX root 0.031 secs 0.000 us 0.031 sy 0.047 es Wed May 16 12:16 -cc - root 0.016 secs 0.000 us 0.016 sy 0.859 es Wed May 16 12:16 -ld - root 0.094 secs 0.047 us 0.047 sy 0.266 es Wed May 16 12:16 -as - root 0.016 secs 0.000 us 0.016 sy 0.094 es Wed May 16 12:16 -cc1 - root 0.094 secs 0.047 us 0.047 sy 0.375 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 0.047 es Wed May 16 12:16 -1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16 -ln - root 0.016 secs 0.000 us 0.016 sy 0.016 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 0.047 es Wed May 16 12:16 -1234567890123456 - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16 -ln - root 0.016 secs 0.000 us 0.016 sy 0.016 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 0.047 es Wed May 16 12:16 -123456789012345 - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16 -ln - root 0.000 secs 0.000 us 0.000 sy 0.016 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 1.703 es Wed May 16 12:16 -diff - root 1.641 secs 1.344 us 0.297 sy 1.672 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 0.625 es Wed May 16 12:16 -dd - root 0.562 secs 0.000 us 0.562 sy 0.594 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 3.047 es Wed May 16 12:16 -sleep - root 0.000 secs 0.000 us 0.000 sy 3.016 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 17.219 es Wed May 16 12:16 -find - root 5.516 secs 0.562 us 4.953 sy 17.188 es Wed May 16 12:16 -time - root 0.016 secs 0.000 us 0.016 sy 30.031 es Wed May 16 12:15 -egrep - root 29.750 secs 29.688 us 0.062 sy 30.000 es Wed May 16 12:15 -time - root 0.016 secs 0.000 us 0.016 sy 1.688 es Wed May 16 12:15 -awk - root 1.609 secs 1.594 us 0.016 sy 1.641 es Wed May 16 12:15 -accton - root 0.016 secs 0.000 us 0.016 sy 0.031 es Wed May 16 12:15 diff --git a/usr.bin/lastcomm/tests/v2-sparc64-acct.in b/usr.bin/lastcomm/tests/v2-sparc64-acct.in deleted file mode 100644 index 26df19e8b5e6..000000000000 Binary files a/usr.bin/lastcomm/tests/v2-sparc64-acct.in and /dev/null differ diff --git a/usr.bin/lastcomm/tests/v2-sparc64.out b/usr.bin/lastcomm/tests/v2-sparc64.out deleted file mode 100644 index f693e8efd9ff..000000000000 --- a/usr.bin/lastcomm/tests/v2-sparc64.out +++ /dev/null @@ -1,36 +0,0 @@ -core -FDX root 0.010 secs 0.000 us 0.010 sy 0.042 es Sat May 19 09:17 -core -DX root 0.037 secs 0.001 us 0.036 sy 0.055 es Sat May 19 09:17 -cc - root 0.033 secs 0.002 us 0.031 sy 1.012 es Sat May 19 09:17 -ld - root 0.186 secs 0.115 us 0.071 sy 0.361 es Sat May 19 09:17 -as - root 0.030 secs 0.005 us 0.025 sy 0.126 es Sat May 19 09:17 -cc1 - root 0.105 secs 0.048 us 0.057 sy 0.417 es Sat May 19 09:17 -time - root 0.029 secs 0.001 us 0.028 sy 0.047 es Sat May 19 09:17 -1234567890123456 - root 0.017 secs 0.003 us 0.014 sy 0.019 es Sat May 19 09:17 -ln - root 0.019 secs 0.003 us 0.016 sy 0.020 es Sat May 19 09:17 -time - root 0.029 secs 0.003 us 0.025 sy 0.047 es Sat May 19 09:17 -1234567890123456 - root 0.017 secs 0.002 us 0.015 sy 0.019 es Sat May 19 09:17 -ln - root 0.019 secs 0.004 us 0.015 sy 0.020 es Sat May 19 09:17 -time - root 0.029 secs 0.004 us 0.025 sy 0.053 es Sat May 19 09:17 -123456789012345 - root 0.018 secs 0.001 us 0.016 sy 0.025 es Sat May 19 09:17 -ln - root 0.020 secs 0.001 us 0.019 sy 0.020 es Sat May 19 09:17 -time - root 0.029 secs 0.003 us 0.026 sy 1.702 es Sat May 19 09:17 -diff - root 1.636 secs 1.337 us 0.299 sy 1.674 es Sat May 19 09:17 -time - root 0.027 secs 0.002 us 0.026 sy 0.634 es Sat May 19 09:17 -dd - root 0.588 secs 0.017 us 0.571 sy 0.605 es Sat May 19 09:17 -time - root 0.028 secs 0.001 us 0.027 sy 3.049 es Sat May 19 09:17 -sleep - root 0.018 secs 0.002 us 0.016 sy 3.021 es Sat May 19 09:17 -time - root 0.029 secs 0.002 us 0.027 sy 17.970 es Sat May 19 09:17 -find - root 5.703 secs 0.555 us 5.148 sy 17.942 es Sat May 19 09:17 -time - root 0.029 secs 0.005 us 0.024 sy 27.162 es Sat May 19 09:16 -egrep - root 26.715 secs 26.632 us 0.082 sy 27.133 es Sat May 19 09:16 -logger - root 0.023 secs 0.005 us 0.018 sy 60.808 es Sat May 19 09:15 -sh -F root 0.008 secs 0.000 us 0.008 sy 60.815 es Sat May 19 09:15 -fsck - root 0.055 secs 0.008 us 0.047 sy 60.806 es Sat May 19 09:15 -fsck_ufs - root 0.028 secs 0.005 us 0.022 sy 0.140 es Sat May 19 09:16 -fsck_ufs - root 0.028 secs 0.006 us 0.022 sy 0.123 es Sat May 19 09:16 -fsck_ufs - root 0.028 secs 0.004 us 0.024 sy 0.058 es Sat May 19 09:16 -fsck_ufs - root 0.032 secs 0.004 us 0.028 sy 0.326 es Sat May 19 09:16 -sleep - root 0.019 secs 0.001 us 0.018 sy 60.085 es Sat May 19 09:15 -time - root 0.029 secs 0.005 us 0.025 sy 1.701 es Sat May 19 09:16 -awk - root 1.644 secs 1.617 us 0.028 sy 1.657 es Sat May 19 09:16 -accton - root 0.019 secs 0.003 us 0.016 sy 0.027 es Sat May 19 09:16 diff --git a/usr.sbin/sa/tests/Makefile b/usr.sbin/sa/tests/Makefile index 06fcd38a2769..ed2318417842 100644 --- a/usr.sbin/sa/tests/Makefile +++ b/usr.sbin/sa/tests/Makefile @@ -3,7 +3,7 @@ PACKAGE= tests TAP_TESTS_SH= legacy_test -TEST_METADATA.legacy_test+= allowed_architectures="amd64 i386 sparc64" +TEST_METADATA.legacy_test+= allowed_architectures="amd64 i386" ${PACKAGE}FILES+= v1-amd64-sav.in ${PACKAGE}FILES+= v1-amd64-sav.out @@ -15,19 +15,11 @@ ${PACKAGE}FILES+= v1-i386-sav.out ${PACKAGE}FILES+= v1-i386-u.out ${PACKAGE}FILES+= v1-i386-usr.in ${PACKAGE}FILES+= v1-i386-usr.out -${PACKAGE}FILES+= v1-sparc64-sav.in -${PACKAGE}FILES+= v1-sparc64-sav.out -${PACKAGE}FILES+= v1-sparc64-u.out -${PACKAGE}FILES+= v1-sparc64-usr.in -${PACKAGE}FILES+= v1-sparc64-usr.out ${PACKAGE}FILES+= v2-amd64-sav.in ${PACKAGE}FILES+= v2-amd64-u.out ${PACKAGE}FILES+= v2-amd64-usr.in ${PACKAGE}FILES+= v2-i386-sav.in ${PACKAGE}FILES+= v2-i386-u.out ${PACKAGE}FILES+= v2-i386-usr.in -${PACKAGE}FILES+= v2-sparc64-sav.in -${PACKAGE}FILES+= v2-sparc64-u.out -${PACKAGE}FILES+= v2-sparc64-usr.in .include diff --git a/usr.sbin/sa/tests/v1-sparc64-sav.in b/usr.sbin/sa/tests/v1-sparc64-sav.in deleted file mode 100644 index d6911cf946bd..000000000000 Binary files a/usr.sbin/sa/tests/v1-sparc64-sav.in and /dev/null differ diff --git a/usr.sbin/sa/tests/v1-sparc64-sav.out b/usr.sbin/sa/tests/v1-sparc64-sav.out deleted file mode 100644 index 1905420793e4..000000000000 --- a/usr.sbin/sa/tests/v1-sparc64-sav.out +++ /dev/null @@ -1,5 +0,0 @@ - 28 1.839re 0.66cp 161avio 252k - 14 0.930re 0.66cp 322avio 197k ***other - 9 0.908re 0.00cp 0avio 10190k time - 3 0.001re 0.00cp 0avio 16256k ln - 2 0.001re 0.00cp 0avio 27900k 1234567890123456 diff --git a/usr.sbin/sa/tests/v1-sparc64-u.out b/usr.sbin/sa/tests/v1-sparc64-u.out deleted file mode 100644 index d0ecb51b9de7..000000000000 --- a/usr.sbin/sa/tests/v1-sparc64-u.out +++ /dev/null @@ -1,28 +0,0 @@ - 0 0.016 cpu 162k mem 0 io accton - 0 1.609 cpu 273k mem 0 io awk - 0 0.016 cpu 174k mem 0 io time - 0 29.750 cpu 233k mem 26 io egrep - 0 0.016 cpu 161k mem 0 io time - 0 5.516 cpu 184k mem 4437 io find - 0 0.016 cpu 156k mem 0 io time - 0 0.000 cpu 136k mem 0 io sleep - 0 0.016 cpu 152k mem 0 io time - 0 0.562 cpu 161k mem 16 io dd - 0 0.016 cpu 156k mem 0 io time - 0 1.641 cpu 193k mem 0 io diff - 0 0.016 cpu 156k mem 0 io time - 0 0.000 cpu 169k mem 0 io ln - 0 0.000 cpu 144k mem 0 io 123456789012345 - 0 0.016 cpu 166k mem 0 io time - 0 0.016 cpu 170k mem 0 io ln - 0 0.000 cpu 144k mem 0 io 1234567890123456 - 0 0.016 cpu 156k mem 0 io time - 0 0.016 cpu 169k mem 0 io ln - 0 0.000 cpu 135k mem 0 io 1234567890123456 - 0 0.016 cpu 156k mem 0 io time - 0 0.094 cpu 3462k mem 2 io cc1 - 0 0.016 cpu 1047k mem 1 io as - 0 0.094 cpu 1118k mem 10 io ld - 0 0.016 cpu 361k mem 5 io cc - 0 0.031 cpu 165k mem 7 io core - 0 0.000 cpu 112k mem 4 io core* diff --git a/usr.sbin/sa/tests/v1-sparc64-usr.in b/usr.sbin/sa/tests/v1-sparc64-usr.in deleted file mode 100644 index 08d795b90dd4..000000000000 Binary files a/usr.sbin/sa/tests/v1-sparc64-usr.in and /dev/null differ diff --git a/usr.sbin/sa/tests/v1-sparc64-usr.out b/usr.sbin/sa/tests/v1-sparc64-usr.out deleted file mode 100644 index cab001f1b531..000000000000 --- a/usr.sbin/sa/tests/v1-sparc64-usr.out +++ /dev/null @@ -1 +0,0 @@ -root 28 0.66cpu 4508tio 9971k*sec diff --git a/usr.sbin/sa/tests/v2-sparc64-sav.in b/usr.sbin/sa/tests/v2-sparc64-sav.in deleted file mode 100644 index b6d836a59e06..000000000000 Binary files a/usr.sbin/sa/tests/v2-sparc64-sav.in and /dev/null differ diff --git a/usr.sbin/sa/tests/v2-sparc64-u.out b/usr.sbin/sa/tests/v2-sparc64-u.out deleted file mode 100644 index 9339238ef449..000000000000 --- a/usr.sbin/sa/tests/v2-sparc64-u.out +++ /dev/null @@ -1,36 +0,0 @@ - 0 0.019 cpu 163k mem 0 io accton - 0 1.644 cpu 272k mem 0 io awk - 0 0.029 cpu 175k mem 0 io time - 0 0.019 cpu 163k mem 0 io sleep - 0 0.032 cpu 214k mem 35 io fsck_ufs - 0 0.028 cpu 213k mem 10 io fsck_ufs - 0 0.028 cpu 189k mem 8 io fsck_ufs - 0 0.028 cpu 196k mem 7 io fsck_ufs - 0 0.055 cpu 168k mem 0 io fsck - 0 0.008 cpu 204k mem 0 io sh* - 0 0.023 cpu 179k mem 0 io logger - 0 26.715 cpu 233k mem 25 io egrep - 0 0.029 cpu 162k mem 0 io time - 0 5.703 cpu 184k mem 4444 io find - 0 0.029 cpu 166k mem 0 io time - 0 0.018 cpu 136k mem 0 io sleep - 0 0.028 cpu 157k mem 0 io time - 0 0.588 cpu 160k mem 16 io dd - 0 0.027 cpu 162k mem 0 io time - 0 1.636 cpu 193k mem 0 io diff - 0 0.029 cpu 172k mem 0 io time - 0 0.020 cpu 170k mem 0 io ln - 0 0.018 cpu 135k mem 0 io 123456789012345 - 0 0.029 cpu 167k mem 0 io time - 0 0.019 cpu 163k mem 0 io ln - 0 0.017 cpu 135k mem 0 io 1234567890123456 - 0 0.029 cpu 157k mem 0 io time - 0 0.019 cpu 163k mem 0 io ln - 0 0.017 cpu 135k mem 0 io 1234567890123456 - 0 0.029 cpu 162k mem 0 io time - 0 0.105 cpu 3358k mem 2 io cc1 - 0 0.030 cpu 996k mem 1 io as - 0 0.186 cpu 1114k mem 11 io ld - 0 0.033 cpu 386k mem 6 io cc - 0 0.037 cpu 158k mem 12 io core - 0 0.010 cpu 129k mem 7 io core* diff --git a/usr.sbin/sa/tests/v2-sparc64-usr.in b/usr.sbin/sa/tests/v2-sparc64-usr.in deleted file mode 100644 index 01a1bdc04333..000000000000 Binary files a/usr.sbin/sa/tests/v2-sparc64-usr.in and /dev/null differ From nobody Mon Oct 4 17:46:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BF19D10FD17E; Mon, 4 Oct 2021 17:46: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 4HNSpC4FXRz3pgZ; Mon, 4 Oct 2021 17:46: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 6449C1D07B; Mon, 4 Oct 2021 17:46: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 194Hkxrt029860; Mon, 4 Oct 2021 17:46:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194Hkxrn029859; Mon, 4 Oct 2021 17:46:59 GMT (envelope-from git) Date: Mon, 4 Oct 2021 17:46:59 GMT Message-Id: <202110041746.194Hkxrn029859@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: David Bright Subject: git: d18c9a919795 - main - RPCBIND: skip ipv6 link local when request is not from link local address List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dab X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d18c9a91979543adc182c7b28819691b64fda388 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by dab: URL: https://cgit.FreeBSD.org/src/commit/?id=d18c9a91979543adc182c7b28819691b64fda388 commit d18c9a91979543adc182c7b28819691b64fda388 Author: David Bright AuthorDate: 2021-10-04 15:43:41 +0000 Commit: David Bright CommitDate: 2021-10-04 17:45:26 +0000 RPCBIND: skip ipv6 link local when request is not from link local address RPCINFO on macOS behaves different compared to other linux clients and doesn't provide request address in rpcb structure of the RPCBPROC_GETADDRLIST call which doesn't seem to be forbidden. In this case RPCBIND uses RPC call's source address and picks a closest corresponding local address. If there are no addresses in the same subnet as the source address, return of RPCBIND may vary depending on the order of addresses returned in getifaddrs. If a link local precedes global address it may be returned even if the request comes from neither a link local nor from link local in a different scope, which will prevent services like nfs from working in tpc6 scenario on macOS clients. Issue can be seen only on FreeBSD rpcbind port due to changes in workflow of addrmerge call. Submitted by: Dmitry Ovsyannikov (Dmitry.Ovsyannikov@dell.com) Reviewers: dab Differential Revision: https://reviews.freebsd.org/D31491 Sponsored by: Dell EMC MFC to: stable/12, stable/13 MFC after: 1 week --- usr.sbin/rpcbind/tests/addrmerge_test.c | 34 +++++++++++++++++++++++++++++++++ usr.sbin/rpcbind/util.c | 12 +++++++----- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/usr.sbin/rpcbind/tests/addrmerge_test.c b/usr.sbin/rpcbind/tests/addrmerge_test.c index e1600f1a4837..a29dc30fdde8 100644 --- a/usr.sbin/rpcbind/tests/addrmerge_test.c +++ b/usr.sbin/rpcbind/tests/addrmerge_test.c @@ -257,6 +257,22 @@ mock_tun0(void) IFF_UP | IFF_RUNNING | IFF_POINTOPOINT | IFF_MULTICAST, 0, false); } +static void +mock_mlxen0(void) +{ + mock_ifaddr4("mlxen0", "192.0.3.1", "255.255.255.128", "192.0.3.127", + IFF_UP | IFF_BROADCAST | IFF_RUNNING | IFF_SIMPLEX | IFF_MULTICAST, + false); + /* Setting link local address before ipv6 address*/ + mock_ifaddr6("mlxen0", "fe80::4", "ffff:ffff:ffff:ffff::", + "fe80::ffff:ffff:ffff:ffff", + IFF_UP | IFF_BROADCAST | IFF_RUNNING | IFF_SIMPLEX | IFF_MULTICAST, + 3, false); + mock_ifaddr6("mlxen0", "2001:db8::7", "ffff:ffff:ffff:ffff::", + "2001:db8::ffff:ffff:ffff:ffff", + IFF_UP | IFF_BROADCAST | IFF_RUNNING | IFF_SIMPLEX | IFF_MULTICAST, + 0, false); +} /* Stub rpcbind functions */ int @@ -835,6 +851,23 @@ ATF_TC_BODY(addrmerge_recvdstaddr6_rev, tc) ATF_CHECK_STREQ("2001:db8::2.3.46", maddr); free(maddr); } + +ATF_TC_WITHOUT_HEAD(addrmerge_ipv6_other_subnet); +ATF_TC_BODY(addrmerge_ipv6_other_subnet, tc) +{ + char *maddr; + + /* getifaddrs will return link local before normal ipv6 */ + mock_lo0(); + mock_mlxen0(); + + maddr = do_addrmerge6("2001:db8:1::1.3.46"); + + /* We must return the closest ipv6 address*/ + ATF_REQUIRE(maddr != NULL); + ATF_CHECK_STREQ("2001:db8::7.3.46", maddr); + free(maddr); +} #endif /* INET6 */ @@ -864,6 +897,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, addrmerge_ipv6_linklocal_rev); ATF_TP_ADD_TC(tp, addrmerge_recvdstaddr6); ATF_TP_ADD_TC(tp, addrmerge_recvdstaddr6_rev); + ATF_TP_ADD_TC(tp, addrmerge_ipv6_other_subnet); #endif return (atf_no_error()); diff --git a/usr.sbin/rpcbind/util.c b/usr.sbin/rpcbind/util.c index 455578b657fb..e497e9227690 100644 --- a/usr.sbin/rpcbind/util.c +++ b/usr.sbin/rpcbind/util.c @@ -229,17 +229,19 @@ addrmerge(struct netbuf *caller, const char *serv_uaddr, const char *clnt_uaddr, * a link-local address then use the scope id to see * which one. */ - if (IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(ifsa)) && - IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(caller_sa)) && - IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(hint_sa))) { - if (SA2SIN6(ifsa)->sin6_scope_id == - SA2SIN6(caller_sa)->sin6_scope_id) { + if (IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(ifsa))) { + if (IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(caller_sa)) && + IN6_IS_ADDR_LINKLOCAL(&SA2SIN6ADDR(hint_sa)) && + (SA2SIN6(ifsa)->sin6_scope_id == + SA2SIN6(caller_sa)->sin6_scope_id)) { const int goodness = 3; if (bestif_goodness < goodness) { bestif = ifap; bestif_goodness = goodness; } + } else { + continue; } } } From nobody Mon Oct 4 19:26:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2C43C12D2301 for ; Mon, 4 Oct 2021 19:26: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 4HNW0j00yhz4XQc; Mon, 4 Oct 2021 19: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 C7B6F1EE39; Mon, 4 Oct 2021 19:26: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 194JQCTa063425; Mon, 4 Oct 2021 19:26:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194JQCb0063424; Mon, 4 Oct 2021 19:26:12 GMT (envelope-from git) Date: Mon, 4 Oct 2021 19:26:12 GMT Message-Id: <202110041926.194JQCb0063424@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: =?utf-8?Q?Stefan E=C3=9Fer?= Subject: git: a60ef1802a36..5d58a5157172 - vendor/bc - vendor branch updated List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/vendor/bc X-Git-Reftype: branch X-Git-Commit: 5d58a51571721190681c50d4bd3a1f45e6282d72 X-Git-Oldrev: a60ef1802a36f2f2a5611564191440ea1c1e2f17 X-Git-Newrev: 5d58a51571721190681c50d4bd3a1f45e6282d72 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch vendor/bc has been updated by se: URL: https://cgit.FreeBSD.org/src/log/?id=a60ef1802a36..5d58a5157172 5d58a5157172 vendor/bc: update to version 5.1.0 From nobody Mon Oct 4 19:26:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2DDFB12D222B for ; Mon, 4 Oct 2021 19:26: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 4HNW0j0LWpz4XWb; Mon, 4 Oct 2021 19: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 DE2B01EE3A; Mon, 4 Oct 2021 19:26: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 194JQCcW063453; Mon, 4 Oct 2021 19:26:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194JQCmj063452; Mon, 4 Oct 2021 19:26:12 GMT (envelope-from git) Date: Mon, 4 Oct 2021 19:26:12 GMT Message-Id: <202110041926.194JQCmj063452@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: =?utf-8?Q?Stefan E=C3=9Fer?= Subject: git: 5126fee68773 - Create tag vendor/bc/5.1.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/tags/vendor/bc/5.1.0 X-Git-Reftype: annotated tag X-Git-Commit: 5126fee68773fc19594243afca152cb2b09d652a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The annotated tag vendor/bc/5.1.0 has been created by se: URL: https://cgit.FreeBSD.org/src/tag/?h=vendor/bc/5.1.0 tag vendor/bc/5.1.0 Tagger: Stefan Eßer TaggerDate: 2021-10-04 19:25:26 +0000 vendor/bc: tag version 5.1.0 commit 5d58a51571721190681c50d4bd3a1f45e6282d72 Author: Stefan Eßer AuthorDate: 2021-10-04 19:22:35 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 19:22:35 +0000 vendor/bc: update to version 5.1.0 This version adds options and functions that allow to print numbers in the open interval (-1 .. 1) with or without a leading 0 digit. Additionally, an option has been added to prevent line wrap and allows to print arbitrarily long results on a single line. From nobody Mon Oct 4 20:15:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 69E6F12D7EC1; Mon, 4 Oct 2021 20:15: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 4HNX552Dh4z4fCy; Mon, 4 Oct 2021 20:15: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 2C7931F4E3; Mon, 4 Oct 2021 20:15: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 194KF5ir032048; Mon, 4 Oct 2021 20:15:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194KF5ld032047; Mon, 4 Oct 2021 20:15:05 GMT (envelope-from git) Date: Mon, 4 Oct 2021 20:15:05 GMT Message-Id: <202110042015.194KF5ld032047@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: d6c323eda215 - main - Remove files that were checked in with wrong .gitattributes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: d6c323eda215d05091f56d02a8274eb50c244a6f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=d6c323eda215d05091f56d02a8274eb50c244a6f commit d6c323eda215d05091f56d02a8274eb50c244a6f Author: Stefan Eßer AuthorDate: 2021-07-28 13:31:57 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 20:10:32 +0000 Remove files that were checked in with wrong .gitattributes These files will be added back in updated form, but are only relevant for the Windows platform, anyway. --- contrib/bc/bc.vcxproj | 278 ----------------------------------------- contrib/bc/bc.vcxproj.filters | 182 --------------------------- contrib/bc/bcl.vcxproj | 161 ------------------------ contrib/bc/bcl.vcxproj.filters | 96 -------------- 4 files changed, 717 deletions(-) diff --git a/contrib/bc/bc.vcxproj b/contrib/bc/bc.vcxproj deleted file mode 100644 index 8d4f34a2a0e6..000000000000 --- a/contrib/bc/bc.vcxproj +++ /dev/null @@ -1,278 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - {D5086CFE-052C-4742-B005-E05DB983BBA2} - Win32Proj - - - - Application - true - v142 - - - Application - false - v142 - - - Application - true - v142 - - - Application - false - v142 - - - - - - - - - - - - - - - - - - - - - Building strgen - CL /Fo:$(Configuration)\$(Platform)\$(ProjectName)\ /Fe:$(Configuration)\$(Platform)\$(ProjectName)\strgen.exe gen\strgen.c - gen\strgen.c - $(Configuration)\$(Platform)\$(ProjectName)\strgen.exe - - - Generating $(Configuration)\$(Platform)\$(ProjectName)/lib.c - START $(Configuration)\$(Platform)\$(ProjectName)/strgen gen\lib.bc $(Configuration)\$(Platform)\$(ProjectName)/lib.c bc_lib bc_lib_name BC_ENABLED 1 - $(Configuration)\$(Platform)\$(ProjectName)\strgen.exe;gen\lib.bc - $(Configuration)\$(Platform)\$(ProjectName)\lib.c - - - Generating $(Configuration)\$(Platform)\$(ProjectName)/lib2.c - START $(Configuration)\$(Platform)\$(ProjectName)/strgen gen\lib2.bc $(Configuration)\$(Platform)\$(ProjectName)/lib2.c bc_lib2 bc_lib2_name BC_ENABLED 1 - $(Configuration)\$(Platform)\$(ProjectName)\strgen.exe;gen\lib2.bc - $(Configuration)\$(Platform)\$(ProjectName)\lib2.c - - - Generating $(Configuration)\$(Platform)\$(ProjectName)/bc_help.c - START $(Configuration)\$(Platform)\$(ProjectName)/strgen gen\bc_help.txt $(Configuration)\$(Platform)\$(ProjectName)\bc_help.c bc_help "" BC_ENABLED - $(Configuration)\$(Platform)\$(ProjectName)\strgen.exe;gen\bc_help.txt - $(Configuration)\$(Platform)\$(ProjectName)\bc_help.c - - - Generating $(Configuration)\$(Platform)\$(ProjectName)/dc_help.c - START $(Configuration)\$(Platform)\$(ProjectName)/strgen gen\dc_help.txt $(Configuration)\$(Platform)\$(ProjectName)\dc_help.c dc_help "" DC_ENABLED - $(Configuration)\$(Platform)\$(ProjectName)\strgen.exe;gen\dc_help.txt - $(Configuration)\$(Platform)\$(ProjectName)\dc_help.c - - - - ClCompile - - - - true - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - false - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - false - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=1;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=N;BC_DEFAULT_BANNER=1;BC_DEFAULT_SIGINT_RESET=0;DC_DEFAULT_SIGINT_RESET=0;BC_DEFAULT_TTY_MODE=1;DC_DEFAULT_TTY_MODE=1;BC_DEFAULT_PROMPT=1;DC_DEFAULT_PROMPT=1 - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - false - /W3 %(AdditionalOptions) - - - MachineX86 - DebugFastLink - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - - - copy /b "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=1;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=N;BC_DEFAULT_BANNER=1;BC_DEFAULT_SIGINT_RESET=0;DC_DEFAULT_SIGINT_RESET=0;BC_DEFAULT_TTY_MODE=1;DC_DEFAULT_TTY_MODE=1;BC_DEFAULT_PROMPT=1;DC_DEFAULT_PROMPT=1 - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDLL - Level3 - ProgramDatabase - MaxSpeed - false - /W3 %(AdditionalOptions) - - - MachineX86 - false - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - true - true - - - copy /b "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=1;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=N;BC_DEFAULT_BANNER=1;BC_DEFAULT_SIGINT_RESET=0;DC_DEFAULT_SIGINT_RESET=0;BC_DEFAULT_TTY_MODE=1;DC_DEFAULT_TTY_MODE=1;BC_DEFAULT_PROMPT=1;DC_DEFAULT_PROMPT=1 - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - false - /W3 %(AdditionalOptions) - - - MachineX64 - true - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - - - copy /b "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=1;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=N;BC_DEFAULT_BANNER=1;BC_DEFAULT_SIGINT_RESET=0;DC_DEFAULT_SIGINT_RESET=0;BC_DEFAULT_TTY_MODE=1;DC_DEFAULT_TTY_MODE=1;BC_DEFAULT_PROMPT=1;DC_DEFAULT_PROMPT=1 - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDLL - Level3 - ProgramDatabase - MaxSpeed - false - /W3 %(AdditionalOptions) - Default - - - MachineX64 - DebugFastLink - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - - - copy /b "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/contrib/bc/bc.vcxproj.filters b/contrib/bc/bc.vcxproj.filters deleted file mode 100644 index 141ecb808d08..000000000000 --- a/contrib/bc/bc.vcxproj.filters +++ /dev/null @@ -1,182 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - - - - - - - - - - - Resource Files - - - Resource Files - - - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/contrib/bc/bcl.vcxproj b/contrib/bc/bcl.vcxproj deleted file mode 100644 index c1031045e34a..000000000000 --- a/contrib/bc/bcl.vcxproj +++ /dev/null @@ -1,161 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - {D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E} - Win32Proj - 10.0 - - - - StaticLibrary - true - v142 - - - StaticLibrary - false - v142 - - - StaticLibrary - true - v142 - - - StaticLibrary - false - v142 - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(Platform)\$(ProjectName)\ - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - $(SolutionDir)\include - - - MachineX86 - true - Windows - - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - MultiThreadedDLL - Level3 - ProgramDatabase - $(SolutionDir)\include - - - MachineX86 - true - Windows - true - true - - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - $(SolutionDir)\include - - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - $(SolutionDir)\include - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/contrib/bc/bcl.vcxproj.filters b/contrib/bc/bcl.vcxproj.filters deleted file mode 100644 index f75e0331cc88..000000000000 --- a/contrib/bc/bcl.vcxproj.filters +++ /dev/null @@ -1,96 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - \ No newline at end of file From nobody Mon Oct 4 20:15:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8A67B12D7F46; Mon, 4 Oct 2021 20:15: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 4HNX56309sz4f07; Mon, 4 Oct 2021 20:15: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 47CA81F454; Mon, 4 Oct 2021 20:15: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 194KF6Ee032076; Mon, 4 Oct 2021 20:15:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194KF6pt032075; Mon, 4 Oct 2021 20:15:06 GMT (envelope-from git) Date: Mon, 4 Oct 2021 20:15:06 GMT Message-Id: <202110042015.194KF6pt032075@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: ded0d3d486eb - main - Add back Windows only VCXProj files List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: ded0d3d486eba766f613070de0ed12029a9a3816 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=ded0d3d486eba766f613070de0ed12029a9a3816 commit ded0d3d486eba766f613070de0ed12029a9a3816 Author: Stefan Eßer AuthorDate: 2021-07-28 13:35:16 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 20:10:52 +0000 Add back Windows only VCXProj files --- bc.vcxproj | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++ bc.vcxproj.filters | 182 ++++++++++++++++++++++++++++++++++ bcl.vcxproj | 161 ++++++++++++++++++++++++++++++ bcl.vcxproj.filters | 96 ++++++++++++++++++ 4 files changed, 717 insertions(+) diff --git a/bc.vcxproj b/bc.vcxproj new file mode 100644 index 000000000000..2dbbd558618f --- /dev/null +++ b/bc.vcxproj @@ -0,0 +1,278 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + {D5086CFE-052C-4742-B005-E05DB983BBA2} + Win32Proj + + + + Application + true + v142 + + + Application + false + v142 + + + Application + true + v142 + + + Application + false + v142 + + + + + + + + + + + + + + + + + + + + + Building strgen + CL /Fo:$(Configuration)\$(ProjectName)\ /Fe:$(Configuration)\$(ProjectName)\strgen.exe gen\strgen.c + gen\strgen.c + $(Configuration)\$(ProjectName)\strgen.exe + + + Generating $(Configuration)\$(ProjectName)/lib.c + START $(Configuration)\$(ProjectName)/strgen gen\lib.bc $(Configuration)\$(ProjectName)/lib.c bc_lib bc_lib_name BC_ENABLED 1 + $(Configuration)\$(ProjectName)\strgen.exe;gen\lib.bc + $(Configuration)\$(ProjectName)\lib.c + + + Generating $(Configuration)\$(ProjectName)/lib2.c + START $(Configuration)\$(ProjectName)/strgen gen\lib2.bc $(Configuration)\$(ProjectName)/lib2.c bc_lib2 bc_lib2_name BC_ENABLED 1 + $(Configuration)\$(ProjectName)\strgen.exe;gen\lib2.bc + $(Configuration)\$(ProjectName)\lib2.c + + + Generating $(Configuration)\$(ProjectName)/bc_help.c + START $(Configuration)\$(ProjectName)/strgen gen\bc_help.txt $(Configuration)\$(ProjectName)\bc_help.c bc_help "" BC_ENABLED + $(Configuration)\$(ProjectName)\strgen.exe;gen\bc_help.txt + $(Configuration)\$(ProjectName)\bc_help.c + + + Generating $(Configuration)\$(ProjectName)/dc_help.c + START $(Configuration)\$(ProjectName)/strgen gen\dc_help.txt $(Configuration)\$(ProjectName)\dc_help.c dc_help "" DC_ENABLED + $(Configuration)\$(ProjectName)\strgen.exe;gen\dc_help.txt + $(Configuration)\$(ProjectName)\dc_help.c + + + + ClCompile + + + + true + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + false + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + true + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + false + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + false + /W3 %(AdditionalOptions) + + + MachineX86 + true + Console + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) + + + copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" + + + Copying bc to dc... + + + + + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + MultiThreadedDLL + Level3 + ProgramDatabase + MaxSpeed + false + /W3 %(AdditionalOptions) + + + MachineX86 + false + Console + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) + true + true + + + copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" + + + Copying bc to dc... + + + + + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + false + /W3 %(AdditionalOptions) + + + MachineX64 + true + Console + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) + + + copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" + + + Copying bc to dc... + + + + + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN + $(SolutionDir)\include;%(AdditionalIncludeDirectories) + MultiThreadedDLL + Level3 + ProgramDatabase + MaxSpeed + false + /W3 %(AdditionalOptions) + Default + + + MachineX64 + false + Console + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) + + + copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" + + + Copying bc to dc... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bc.vcxproj.filters b/bc.vcxproj.filters new file mode 100644 index 000000000000..141ecb808d08 --- /dev/null +++ b/bc.vcxproj.filters @@ -0,0 +1,182 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + + + + + + + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + + Resource Files + + + \ No newline at end of file diff --git a/bcl.vcxproj b/bcl.vcxproj new file mode 100644 index 000000000000..3b79c8b9ef64 --- /dev/null +++ b/bcl.vcxproj @@ -0,0 +1,161 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + {D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E} + Win32Proj + 10.0 + + + + StaticLibrary + true + v142 + + + StaticLibrary + false + v142 + + + StaticLibrary + true + v142 + + + StaticLibrary + false + v142 + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + true + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + true + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + true + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + $(SolutionDir)\$(Configuration)\$(ProjectName)\ + + + + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 + MultiThreadedDebugDLL + Level3 + ProgramDatabase + Disabled + $(SolutionDir)\include + + + MachineX86 + true + Windows + + + + + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 + MultiThreadedDLL + Level3 + ProgramDatabase + $(SolutionDir)\include + + + MachineX86 + true + Windows + true + true + + + + + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 + $(SolutionDir)\include + + + + + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 + $(SolutionDir)\include + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bcl.vcxproj.filters b/bcl.vcxproj.filters new file mode 100644 index 000000000000..f75e0331cc88 --- /dev/null +++ b/bcl.vcxproj.filters @@ -0,0 +1,96 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file From nobody Mon Oct 4 20:15:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D458F10F80BD; Mon, 4 Oct 2021 20:15: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 4HNX574kLMz4f7L; Mon, 4 Oct 2021 20:15: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 6D7B31F5D6; Mon, 4 Oct 2021 20:15: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 194KF7s0032104; Mon, 4 Oct 2021 20:15:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194KF7Rf032103; Mon, 4 Oct 2021 20:15:07 GMT (envelope-from git) Date: Mon, 4 Oct 2021 20:15:07 GMT Message-Id: <202110042015.194KF7Rf032103@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: b8d895faf47a - main - contrib/bc: re-enable tests after the import of version 5.1.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: b8d895faf47afb8f3b31055e2ec2db8d0df5db23 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=b8d895faf47afb8f3b31055e2ec2db8d0df5db23 commit b8d895faf47afb8f3b31055e2ec2db8d0df5db23 Author: Stefan Eßer AuthorDate: 2021-10-04 19:43:52 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 20:14:27 +0000 contrib/bc: re-enable tests after the import of version 5.1.0 The tests have been fixed to not write any data outside of the temporary work directory provided by the test framework. MFC after: 3 days --- usr.bin/gh-bc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.bin/gh-bc/Makefile b/usr.bin/gh-bc/Makefile index e6e2f45aca73..e5f68b704d79 100644 --- a/usr.bin/gh-bc/Makefile +++ b/usr.bin/gh-bc/Makefile @@ -67,8 +67,8 @@ MAN_SRC_DC= dc/A.1 CFLAGS+= -flto .endif -#HAS_TESTS= -#SUBDIR.${MK_TESTS}+= tests +HAS_TESTS= +SUBDIR.${MK_TESTS}+= tests .for catalog in ${CATALOGS} NLS+= ${catalog:C/.*://} From nobody Mon Oct 4 20:26:43 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B9C4910FA297; Mon, 4 Oct 2021 20:26: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 4HNXLW4tncz4glV; Mon, 4 Oct 2021 20:26: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 8831F1F93E; Mon, 4 Oct 2021 20:26: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 194KQhaZ045329; Mon, 4 Oct 2021 20:26:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194KQhPQ045328; Mon, 4 Oct 2021 20:26:43 GMT (envelope-from git) Date: Mon, 4 Oct 2021 20:26:43 GMT Message-Id: <202110042026.194KQhPQ045328@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: d43fa8ef534a - main - contrib/bc: merge version 5.1.0 from vendor branch List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: d43fa8ef534ac87a16843d45264f56cf11e0fcbc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=d43fa8ef534ac87a16843d45264f56cf11e0fcbc commit d43fa8ef534ac87a16843d45264f56cf11e0fcbc Merge: b8d895faf47a 5d58a5157172 Author: Stefan Eßer AuthorDate: 2021-10-04 20:25:24 +0000 Commit: Stefan Eßer CommitDate: 2021-10-04 20:25:24 +0000 contrib/bc: merge version 5.1.0 from vendor branch This version adds options and functions that allow to print numbers in the open interval (-1 .. 1) with or without a leading 0 digit. Additionally, an option has been added to prevent line wrap and allows to print arbitrarily long results on a single line. Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72' contrib/bc/Makefile.in | 18 +- contrib/bc/NEWS.md | 18 ++ contrib/bc/bcl.sln | 31 --- contrib/bc/configure.sh | 102 +++++-- contrib/bc/gen/bc_help.txt | 10 +- contrib/bc/gen/dc_help.txt | 10 +- contrib/bc/gen/lib2.bc | 36 +++ contrib/bc/include/bc.h | 6 +- contrib/bc/include/bcl.h | 5 +- contrib/bc/include/history.h | 6 +- contrib/bc/include/lang.h | 13 + contrib/bc/include/lex.h | 13 + contrib/bc/include/program.h | 16 ++ contrib/bc/include/version.h | 2 +- contrib/bc/include/vm.h | 19 +- contrib/bc/manuals/bc/A.1 | 89 +++++- contrib/bc/manuals/bc/A.1.md | 68 ++++- contrib/bc/manuals/bc/E.1 | 45 ++++ contrib/bc/manuals/bc/E.1.md | 30 +++ contrib/bc/manuals/bc/EH.1 | 45 ++++ contrib/bc/manuals/bc/EH.1.md | 30 +++ contrib/bc/manuals/bc/EHN.1 | 45 ++++ contrib/bc/manuals/bc/EHN.1.md | 30 +++ contrib/bc/manuals/bc/EN.1 | 45 ++++ contrib/bc/manuals/bc/EN.1.md | 30 +++ contrib/bc/manuals/bc/H.1 | 89 +++++- contrib/bc/manuals/bc/H.1.md | 68 ++++- contrib/bc/manuals/bc/HN.1 | 89 +++++- contrib/bc/manuals/bc/HN.1.md | 68 ++++- contrib/bc/manuals/bc/N.1 | 89 +++++- contrib/bc/manuals/bc/N.1.md | 68 ++++- contrib/bc/manuals/bcl.3 | 29 +- contrib/bc/manuals/bcl.3.md | 26 +- contrib/bc/manuals/build.md | 2 +- contrib/bc/manuals/dc/A.1 | 45 ++++ contrib/bc/manuals/dc/A.1.md | 40 +++ contrib/bc/manuals/dc/E.1 | 45 ++++ contrib/bc/manuals/dc/E.1.md | 40 +++ contrib/bc/manuals/dc/EH.1 | 45 ++++ contrib/bc/manuals/dc/EH.1.md | 40 +++ contrib/bc/manuals/dc/EHN.1 | 45 ++++ contrib/bc/manuals/dc/EHN.1.md | 40 +++ contrib/bc/manuals/dc/EN.1 | 45 ++++ contrib/bc/manuals/dc/EN.1.md | 40 +++ contrib/bc/manuals/dc/H.1 | 45 ++++ contrib/bc/manuals/dc/H.1.md | 40 +++ contrib/bc/manuals/dc/HN.1 | 45 ++++ contrib/bc/manuals/dc/HN.1.md | 40 +++ contrib/bc/manuals/dc/N.1 | 45 ++++ contrib/bc/manuals/dc/N.1.md | 40 +++ contrib/bc/scripts/functions.sh | 8 +- contrib/bc/src/args.c | 14 +- contrib/bc/src/bc_parse.c | 16 +- contrib/bc/src/data.c | 18 +- contrib/bc/src/dc_lex.c | 13 + contrib/bc/src/history.c | 53 +++- contrib/bc/src/library.c | 8 + contrib/bc/src/num.c | 18 +- contrib/bc/src/program.c | 40 +++ contrib/bc/src/read.c | 20 +- contrib/bc/src/vm.c | 14 +- contrib/bc/tests/all.sh | 101 ++++++- contrib/bc/tests/bc/all.txt | 1 + contrib/bc/tests/bc/leadingzero.txt | 12 + contrib/bc/tests/bc/leadingzero_results.txt | 12 + contrib/bc/tests/bc/scripts/globals.bc | 4 + contrib/bc/tests/bcl.c | 98 +++++++ contrib/bc/tests/dc/errors.txt | 3 + contrib/bc/tests/error.sh | 99 +++++++ contrib/bc/tests/errors.sh | 25 -- contrib/bc/tests/extra_required.txt | 1 + contrib/bc/tests/history.py | 405 ++++++++++++++++------------ contrib/bc/tests/history.sh | 30 ++- contrib/bc/tests/other.sh | 42 ++- contrib/bc/tests/scripts.sh | 51 +++- contrib/bc/{ => vs}/bc.sln | 22 +- contrib/bc/vs/bc.vcxproj | 297 ++++++++++++++++++++ contrib/bc/vs/bc.vcxproj.filters | 173 ++++++++++++ contrib/bc/vs/bcl.sln | 37 +++ contrib/bc/vs/bcl.vcxproj | 259 ++++++++++++++++++ contrib/bc/vs/bcl.vcxproj.filters | 90 +++++++ contrib/bc/vs/bin/some.txt | 0 contrib/bc/vs/tests/some.txt | 0 contrib/bc/vs/tests/tests_bc.bat | 104 +++++++ contrib/bc/vs/tests/tests_dc.bat | 61 +++++ 85 files changed, 3751 insertions(+), 368 deletions(-) diff --cc contrib/bc/tests/bc/leadingzero.txt index 000000000000,77c7dcd08ef9..77c7dcd08ef9 mode 000000,100644..100644 --- a/contrib/bc/tests/bc/leadingzero.txt +++ b/contrib/bc/tests/bc/leadingzero.txt diff --cc contrib/bc/tests/bc/leadingzero_results.txt index 000000000000,4b542860a773..4b542860a773 mode 000000,100644..100644 --- a/contrib/bc/tests/bc/leadingzero_results.txt +++ b/contrib/bc/tests/bc/leadingzero_results.txt diff --cc contrib/bc/tests/error.sh index 000000000000,c76dcdf113dd..c76dcdf113dd mode 000000,100755..100755 --- a/contrib/bc/tests/error.sh +++ b/contrib/bc/tests/error.sh diff --cc contrib/bc/vs/bc.vcxproj index 000000000000,19b53d66a405..19b53d66a405 mode 000000,100644..100644 --- a/contrib/bc/vs/bc.vcxproj +++ b/contrib/bc/vs/bc.vcxproj diff --cc contrib/bc/vs/bc.vcxproj.filters index 000000000000,f26387253f27..f26387253f27 mode 000000,100644..100644 --- a/contrib/bc/vs/bc.vcxproj.filters +++ b/contrib/bc/vs/bc.vcxproj.filters diff --cc contrib/bc/vs/bcl.sln index 000000000000,bc6d37a72360..bc6d37a72360 mode 000000,100644..100644 --- a/contrib/bc/vs/bcl.sln +++ b/contrib/bc/vs/bcl.sln diff --cc contrib/bc/vs/bcl.vcxproj index 000000000000,a8de10e9f10b..a8de10e9f10b mode 000000,100644..100644 --- a/contrib/bc/vs/bcl.vcxproj +++ b/contrib/bc/vs/bcl.vcxproj diff --cc contrib/bc/vs/bcl.vcxproj.filters index 000000000000,b62d1899e2bf..b62d1899e2bf mode 000000,100644..100644 --- a/contrib/bc/vs/bcl.vcxproj.filters +++ b/contrib/bc/vs/bcl.vcxproj.filters diff --cc contrib/bc/vs/bin/some.txt index 000000000000,000000000000..e69de29bb2d1 new file mode 100644 --- /dev/null +++ b/contrib/bc/vs/bin/some.txt diff --cc contrib/bc/vs/tests/some.txt index 000000000000,000000000000..e69de29bb2d1 new file mode 100644 --- /dev/null +++ b/contrib/bc/vs/tests/some.txt diff --cc contrib/bc/vs/tests/tests_bc.bat index 000000000000,5fbd4e35fc3a..5fbd4e35fc3a mode 000000,100644..100644 --- a/contrib/bc/vs/tests/tests_bc.bat +++ b/contrib/bc/vs/tests/tests_bc.bat diff --cc contrib/bc/vs/tests/tests_dc.bat index 000000000000,36c97daa4e11..36c97daa4e11 mode 000000,100644..100644 --- a/contrib/bc/vs/tests/tests_dc.bat +++ b/contrib/bc/vs/tests/tests_dc.bat From nobody Mon Oct 4 22:18:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 26FBC12D542A; Mon, 4 Oct 2021 22:18: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 4HNZpx0Rklz4r1W; Mon, 4 Oct 2021 22:18: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 DED5D20E63; Mon, 4 Oct 2021 22:18: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 194MI0Nk093983; Mon, 4 Oct 2021 22:18:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 194MI0he093982; Mon, 4 Oct 2021 22:18:00 GMT (envelope-from git) Date: Mon, 4 Oct 2021 22:18:00 GMT Message-Id: <202110042218.194MI0he093982@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: f0a08fa9f532 - main - geom_label: Add more validation for NTFS volume tasting List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f0a08fa9f532a58f5d7a4814d6eb7ddd49f368da Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f0a08fa9f532a58f5d7a4814d6eb7ddd49f368da commit f0a08fa9f532a58f5d7a4814d6eb7ddd49f368da Author: Mark Johnston AuthorDate: 2021-10-04 21:48:44 +0000 Commit: Mark Johnston CommitDate: 2021-10-04 22:15:06 +0000 geom_label: Add more validation for NTFS volume tasting - Ensure that the computed MFT record size isn't negative or larger than maxphys before trying to read $Volume. - Guard against truncated records in volume metadata. - Ensure that the record length is large enough to contain the volume name. - Verify that the (UTF-16-encoded) volume name's length is a multiple of two. PR: 258833, 258914 MFC after: 2 weeks Sponsored by: The FreeBSD Foundation --- sys/geom/label/g_label_ntfs.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/sys/geom/label/g_label_ntfs.c b/sys/geom/label/g_label_ntfs.c index f78d4d28b967..888096164b09 100644 --- a/sys/geom/label/g_label_ntfs.c +++ b/sys/geom/label/g_label_ntfs.c @@ -99,7 +99,8 @@ g_label_ntfs_taste(struct g_consumer *cp, char *label, size_t size) struct ntfs_filerec *fr; struct ntfs_attr *atr; off_t voloff; - char *filerecp, *ap; + size_t recoff; + char *filerecp; int8_t mftrecsz; char vnchar; int recsize, j; @@ -119,8 +120,9 @@ g_label_ntfs_taste(struct g_consumer *cp, char *label, size_t size) goto done; mftrecsz = bf->bf_mftrecsz; - recsize = (mftrecsz > 0) ? (mftrecsz * bf->bf_bps * bf->bf_spc) : (1 << -mftrecsz); - if (recsize == 0 || recsize % pp->sectorsize != 0) + recsize = (mftrecsz > 0) ? (mftrecsz * bf->bf_bps * bf->bf_spc) : + (1 << -mftrecsz); + if (recsize <= 0 || recsize > maxphys || recsize % pp->sectorsize != 0) goto done; voloff = bf->bf_mftcn * bf->bf_spc * bf->bf_bps + @@ -132,24 +134,33 @@ g_label_ntfs_taste(struct g_consumer *cp, char *label, size_t size) if (filerecp == NULL) goto done; fr = (struct ntfs_filerec *)filerecp; - if (fr->fr_hdrmagic != NTFS_FILEMAGIC) goto done; - for (ap = filerecp + fr->fr_attroff; - atr = (struct ntfs_attr *)ap, atr->a_type != -1; - ap += atr->reclen) { + for (recoff = fr->fr_attroff; + recoff <= recsize - 2 * sizeof(uint32_t); + recoff += atr->reclen) { + atr = (struct ntfs_attr *)(filerecp + recoff); + if (atr->a_type == -1) + break; + if (atr->reclen < sizeof(*atr)) + break; + if (recsize - recoff < atr->reclen) + break; if (atr->a_type == NTFS_A_VOLUMENAME) { - if(atr->a_datalen >= size *2){ - label[0] = 0; - goto done; - } + if (atr->a_dataoff > atr->reclen || + atr->a_datalen > atr->reclen - atr->a_dataoff) + break; + /* - *UNICODE to ASCII. + * UNICODE to ASCII. * Should we need to use iconv(9)? */ + if (atr->a_datalen >= size * 2 || + atr->a_datalen % 2 != 0) + break; for (j = 0; j < atr->a_datalen; j++) { - vnchar = *(ap + atr->a_dataoff + j); + vnchar = ((char *)atr)[atr->a_dataoff + j]; if (j & 1) { if (vnchar) { label[0] = 0; From nobody Mon Oct 4 23:02:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DC12512D8B4E; Mon, 4 Oct 2021 23:02:20 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) (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 4HNbp45ZlTz4sy7; Mon, 4 Oct 2021 23:02:20 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: by mail-qt1-x836.google.com with SMTP id j13so17518939qtq.6; Mon, 04 Oct 2021 16:02:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=Xa8PegGFWTCsOnnbelzaulZXrvWDJQRXjhD9ZvZd3gA=; b=i4nD4HhJqhJPO3pYv2g7P3kJUzIDYJKkNlUhMGcJya1O/6zODXgXmOt48UlJwOycPZ PsIGooEcvRjCyBsduofVUN2PnhRx8+EcLFEBQ7I8RihST5jmq4pGz2EDdCANgjtroMS6 uKh3NEfe7QLif0gaxMDG4wa+S+IRYTlmqS6x5eeTcr58WrnAup5mOxhJHAFzO14wsGiM YwA6NV+6CYueBPvA3W9WEdWSMl9B3QaytF9zHn0McSPEwalmIFpyKtAjXArpVj2r3P/b AacAupsbpJy4cM9v847Ui5Srt5Pn4nIGVRQCqafX/xW+5sRYZK9y2GU6oIE392rtxe/m /ZtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to; bh=Xa8PegGFWTCsOnnbelzaulZXrvWDJQRXjhD9ZvZd3gA=; b=rSVdrxMFUlorDjrrxzAuhfOuAhDj4yNbueVWPEIJ2ZPzYlfJ5c3hoCdGsZDEhFfxHb hHjofSxNQ4GZlxTWIoK3/ov4ls//Hc0Ls1mD3JeKwmjfVVEX9cHuPY/WApFKL0wdYy47 Ysc4g8TZF2NA1JQjVIu6+R8K30eQppnDcH5DyGqxF5hA8HDVz/SQYSOF83SQoCcBoK8x qvUdKQKqaEBccCTnzUa23g+pZ89FKKWkEO7lNeBN8f5S/Vq9Z+S+bCYH40/0+3Fl49ri siThaVpTa5o5DM3VQu8vI6Xpj2pKXkhMjLtIPfSmKaUM6JEZV0mS+x3NZeRyshLDIK3V pELg== X-Gm-Message-State: AOAM530UjxsaYzSJgzKVPlipHHrCBxUR6xQM252YaH4kgeC5M5VKACtX B5CYaUOVosOI1Cm1MxVbtXcTvbO6wlpyZw== X-Google-Smtp-Source: ABdhPJxSz6S3fY/PRgc/Tbj81BOOIN+9QMWpdFOMkKAVfuJykca8a7UUION6KbPlupJcU8IJzJ0GNA== X-Received: by 2002:ac8:7212:: with SMTP id a18mr15581809qtp.103.1633388540039; Mon, 04 Oct 2021 16:02:20 -0700 (PDT) Received: from nuc ([142.126.175.192]) by smtp.gmail.com with ESMTPSA id v3sm8505592qkd.20.2021.10.04.16.02.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Oct 2021 16:02:19 -0700 (PDT) Sender: Mark Johnston Date: Mon, 4 Oct 2021 19:02:21 -0400 From: Mark Johnston To: Stefan =?iso-8859-1?Q?E=DFer?= Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: ded0d3d486eb - main - Add back Windows only VCXProj files Message-ID: References: <202110042015.194KF6pt032075@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <202110042015.194KF6pt032075@gitrepo.freebsd.org> X-Rspamd-Queue-Id: 4HNbp45ZlTz4sy7 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Mon, Oct 04, 2021 at 08:15:06PM +0000, Stefan Eßer wrote: > The branch main has been updated by se: > > URL: https://cgit.FreeBSD.org/src/commit/?id=ded0d3d486eba766f613070de0ed12029a9a3816 > > commit ded0d3d486eba766f613070de0ed12029a9a3816 > Author: Stefan Eßer > AuthorDate: 2021-07-28 13:35:16 +0000 > Commit: Stefan Eßer > CommitDate: 2021-10-04 20:10:52 +0000 > > Add back Windows only VCXProj files > --- > bc.vcxproj | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > bc.vcxproj.filters | 182 ++++++++++++++++++++++++++++++++++ > bcl.vcxproj | 161 ++++++++++++++++++++++++++++++ > bcl.vcxproj.filters | 96 ++++++++++++++++++ > 4 files changed, 717 insertions(+) Presumably these should instead have been added under contrib/bc? From nobody Mon Oct 4 23:10:35 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3BA5A12DA0D2 for ; Mon, 4 Oct 2021 23:10:44 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 4HNbzm10gcz4tln for ; Mon, 4 Oct 2021 23:10:44 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: by mail-wr1-f51.google.com with SMTP id r18so6348879wrg.6 for ; Mon, 04 Oct 2021 16:10:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=Arv/fVSanRuUFfa1WWNQtBM8Xv/l2itmJ2NnoGtcJIA=; b=L7LwagWqFeZqOYT0fpkZ5Qa8zJA1+RNG2rs6GFs2ross5T4la7lJ0+cbXVNFDvTeUy wFmsEvETkf0H1gAqV5RnDpM4OTvb/qzIQ6mUNHsyr3PE1BQytpfwyBW4TLcPSuPJRXg4 4zg1GhyW1IF/JmPLibAZzEz1xBy8W4Vnvb4I0Js9NGc/gD9R6iKyMB2BrumZCUvLQF63 gA+g8EssFUUF+egnAFJ6QDJJwn81TvMV4X6TbqUI3/OYFOxJbPdqY1qW9xug2/N7w7AC 6MZqmq/t88WbXVwxi0X/4p1zXoFWa9GOi/AbarfCXeoImRMVyuH3BvPGr7EIC5wqP/yr CweA== X-Gm-Message-State: AOAM530EcW0PWzQwQtrlBwznyhg1bmbdxPdV7qNO+5ekVJ26AMZ7saar G3mQjYa1PFNON1IWD5od6z+Fdg== X-Google-Smtp-Source: ABdhPJwtYLLa9SqNpxTKOSBvhuK1p7/26OsWgeWceL+NND2vk0d93Tkh8nYN3inZZvHSly/adJ4mAg== X-Received: by 2002:adf:a454:: with SMTP id e20mr12360306wra.310.1633389037198; Mon, 04 Oct 2021 16:10:37 -0700 (PDT) Received: from smtpclient.apple (global-5-143.nat-2.net.cam.ac.uk. [131.111.5.143]) by smtp.gmail.com with ESMTPSA id j1sm5272670wrb.56.2021.10.04.16.10.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Oct 2021 16:10:36 -0700 (PDT) Content-Type: text/plain; charset=utf-8 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\)) Subject: Re: git: ded0d3d486eb - main - Add back Windows only VCXProj files From: Jessica Clarke In-Reply-To: Date: Tue, 5 Oct 2021 00:10:35 +0100 Cc: =?utf-8?Q?Stefan_E=C3=9Fer?= , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <202110042015.194KF6pt032075@gitrepo.freebsd.org> To: Mark Johnston X-Mailer: Apple Mail (2.3654.120.0.1.13) X-Rspamd-Queue-Id: 4HNbzm10gcz4tln X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On 5 Oct 2021, at 00:02, Mark Johnston wrote: >=20 > On Mon, Oct 04, 2021 at 08:15:06PM +0000, Stefan E=C3=9Fer wrote: >> The branch main has been updated by se: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3Dded0d3d486eba766f613070de0ed1202= 9a9a3816 >>=20 >> commit ded0d3d486eba766f613070de0ed12029a9a3816 >> Author: Stefan E=C3=9Fer >> AuthorDate: 2021-07-28 13:35:16 +0000 >> Commit: Stefan E=C3=9Fer >> CommitDate: 2021-10-04 20:10:52 +0000 >>=20 >> Add back Windows only VCXProj files >> --- >> bc.vcxproj | 278 = ++++++++++++++++++++++++++++++++++++++++++++++++++++ >> bc.vcxproj.filters | 182 ++++++++++++++++++++++++++++++++++ >> bcl.vcxproj | 161 ++++++++++++++++++++++++++++++ >> bcl.vcxproj.filters | 96 ++++++++++++++++++ >> 4 files changed, 717 insertions(+) >=20 > Presumably these should instead have been added under contrib/bc? I think they were meant to go into the root of the vendor branch, given the last import in the branch also lost them, not just the subtree merge (and then presumably merged into contrib/bc). Jess From nobody Tue Oct 5 02:28:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E008717E5B0D; Tue, 5 Oct 2021 02:28: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 4HNhN45pYDz3Cw6; Tue, 5 Oct 2021 02:28: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 A75B62484F; Tue, 5 Oct 2021 02:28: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 1952Sawo026559; Tue, 5 Oct 2021 02:28:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1952SaAw026558; Tue, 5 Oct 2021 02:28:36 GMT (envelope-from git) Date: Tue, 5 Oct 2021 02:28:36 GMT Message-Id: <202110050228.1952SaAw026558@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: b3fb4c60c50c - stable/13 - sched_ule(4): Fix interactive threads stealing. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b3fb4c60c50c217e64069e6fd3f1d2bb3915b43a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=b3fb4c60c50c217e64069e6fd3f1d2bb3915b43a commit b3fb4c60c50c217e64069e6fd3f1d2bb3915b43a Author: Alexander Motin AuthorDate: 2021-09-21 19:56:49 +0000 Commit: Alexander Motin CommitDate: 2021-10-05 02:28:33 +0000 sched_ule(4): Fix interactive threads stealing. In scenarios when first thread in the queue can migrate to specified CPU, but later ones can't runq_steal_from() incorrectly returned NULL. MFC after: 2 weeks (cherry picked from commit bd84094a51c4648a7c97ececdaccfb30bc832096) --- sys/kern/sched_ule.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c index 60f92a16f2e9..53d5a59a3605 100644 --- a/sys/kern/sched_ule.c +++ b/sys/kern/sched_ule.c @@ -1110,10 +1110,12 @@ again: continue; rqh = &rq->rq_queues[bit + (i << RQB_L2BPW)]; TAILQ_FOREACH(td, rqh, td_runq) { - if (first && THREAD_CAN_MIGRATE(td) && - THREAD_CAN_SCHED(td, cpu)) - return (td); - first = td; + if (first) { + if (THREAD_CAN_MIGRATE(td) && + THREAD_CAN_SCHED(td, cpu)) + return (td); + } else + first = td; } } } From nobody Tue Oct 5 02:29:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AB65B17E5F0E; Tue, 5 Oct 2021 02:29: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 4HNhNX4KRSz3DSm; Tue, 5 Oct 2021 02:29: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 76494245BE; Tue, 5 Oct 2021 02:29: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 1952T032026698; Tue, 5 Oct 2021 02:29:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1952T0b1026697; Tue, 5 Oct 2021 02:29:00 GMT (envelope-from git) Date: Tue, 5 Oct 2021 02:29:00 GMT Message-Id: <202110050229.1952T0b1026697@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 06ff5c4c600a - stable/12 - sched_ule(4): Fix interactive threads stealing. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 06ff5c4c600a28c8c317aea3ca6c669bb8c50cf7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=06ff5c4c600a28c8c317aea3ca6c669bb8c50cf7 commit 06ff5c4c600a28c8c317aea3ca6c669bb8c50cf7 Author: Alexander Motin AuthorDate: 2021-09-21 19:56:49 +0000 Commit: Alexander Motin CommitDate: 2021-10-05 02:28:58 +0000 sched_ule(4): Fix interactive threads stealing. In scenarios when first thread in the queue can migrate to specified CPU, but later ones can't runq_steal_from() incorrectly returned NULL. MFC after: 2 weeks (cherry picked from commit bd84094a51c4648a7c97ececdaccfb30bc832096) --- sys/kern/sched_ule.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c index 50f037076f46..20835a0b2c5f 100644 --- a/sys/kern/sched_ule.c +++ b/sys/kern/sched_ule.c @@ -1127,10 +1127,12 @@ again: continue; rqh = &rq->rq_queues[bit + (i << RQB_L2BPW)]; TAILQ_FOREACH(td, rqh, td_runq) { - if (first && THREAD_CAN_MIGRATE(td) && - THREAD_CAN_SCHED(td, cpu)) - return (td); - first = td; + if (first) { + if (THREAD_CAN_MIGRATE(td) && + THREAD_CAN_SCHED(td, cpu)) + return (td); + } else + first = td; } } } From nobody Tue Oct 5 03:40:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0E47112D160F; Tue, 5 Oct 2021 03:40: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 4HNjyl71BZz3K4q; Tue, 5 Oct 2021 03:40: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 CD622256AF; Tue, 5 Oct 2021 03:40: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 1953eFgk026770; Tue, 5 Oct 2021 03:40:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1953eFf9026764; Tue, 5 Oct 2021 03:40:15 GMT (envelope-from git) Date: Tue, 5 Oct 2021 03:40:15 GMT Message-Id: <202110050340.1953eFf9026764@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: 9f3b6cdbe87c - main - pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 9f3b6cdbe87cf92d4099f3f5ff8eff3030a8076b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=9f3b6cdbe87cf92d4099f3f5ff8eff3030a8076b commit 9f3b6cdbe87cf92d4099f3f5ff8eff3030a8076b Author: Konstantin Belousov AuthorDate: 2021-10-01 00:40:19 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-05 03:39:52 +0000 pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D32243 --- share/man/man3/pthread_barrierattr.3 | 8 ++++++-- share/man/man3/pthread_condattr.3 | 8 ++++++-- share/man/man3/pthread_mutexattr.3 | 16 ++++++++++++---- share/man/man3/pthread_rwlockattr_getpshared.3 | 4 +++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/share/man/man3/pthread_barrierattr.3 b/share/man/man3/pthread_barrierattr.3 index 74c3c4f63335..3836186ef4fd 100644 --- a/share/man/man3/pthread_barrierattr.3 +++ b/share/man/man3/pthread_barrierattr.3 @@ -38,11 +38,15 @@ .Ft int .Fn pthread_barrierattr_destroy "pthread_barrierattr_t *attr" .Ft int -.Fn pthread_barrierattr_getpshared "const pthread_barrierattr_t *restrict attr" "int *restrict pshared" +.Fo pthread_barrierattr_getpshared +.Fa "const pthread_barrierattr_t *restrict attr" "int *restrict pshared" +.Fc .Ft int .Fn pthread_barrierattr_init "pthread_barrierattr_t *attr" .Ft int -.Fn pthread_barrierattr_setpshared "pthread_barrierattr_t *attr" "int pshared" +.Fo pthread_barrierattr_setpshared +.Fa "pthread_barrierattr_t *attr" "int pshared" +.Fc .Sh DESCRIPTION The .Fn pthread_barrierattr_init diff --git a/share/man/man3/pthread_condattr.3 b/share/man/man3/pthread_condattr.3 index dfabc6f10f37..b2f14c5452d0 100644 --- a/share/man/man3/pthread_condattr.3 +++ b/share/man/man3/pthread_condattr.3 @@ -46,11 +46,15 @@ .Ft int .Fn pthread_condattr_destroy "pthread_condattr_t *attr" .Ft int -.Fn pthread_condattr_getclock "pthread_condattr_t * restrict attr" "clockid_t * restrict clock_id" +.Fo pthread_condattr_getclock +.Fa "pthread_condattr_t * restrict attr" "clockid_t * restrict clock_id" +.Fc .Ft int .Fn pthread_condattr_setclock "pthread_condattr_t *attr" "clockid_t clock_id" .Ft int -.Fn pthread_condattr_getpshared "pthread_condattr_t * restrict attr" "int * restrict pshared" +.Fo pthread_condattr_getpshared +.Fa "pthread_condattr_t * restrict attr" "int * restrict pshared" +.Fc .Ft int .Fn pthread_condattr_setpshared "pthread_condattr_t *attr" "int pshared" .Sh DESCRIPTION diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 61773a4e2eb3..1afde4302457 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -50,13 +50,19 @@ .Ft int .Fn pthread_mutexattr_destroy "pthread_mutexattr_t *attr" .Ft int -.Fn pthread_mutexattr_setprioceiling "pthread_mutexattr_t *attr" "int prioceiling" +.Fo pthread_mutexattr_setprioceiling +.Fa "pthread_mutexattr_t *attr" "int prioceiling" +.Fc .Ft int -.Fn pthread_mutexattr_getprioceiling "const pthread_mutexattr_t *attr" "int *prioceiling" +.Fo pthread_mutexattr_getprioceiling +.Fa "const pthread_mutexattr_t *attr" "int *prioceiling" +.Fc .Ft int .Fn pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol" .Ft int -.Fn pthread_mutexattr_getprotocol "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" +.Fo pthread_mutexattr_getprotocol +.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" +.Fc .Ft int .Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" .Ft int @@ -64,7 +70,9 @@ .Ft int .Fn pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type" .Ft int -.Fn pthread_mutexattr_gettype "const pthread_mutexattr_t *restrict attr" "int *restrict type" +.Fo pthread_mutexattr_gettype +.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict type" +.Fc .Sh DESCRIPTION Mutex attributes are used to specify parameters to .Fn pthread_mutex_init . diff --git a/share/man/man3/pthread_rwlockattr_getpshared.3 b/share/man/man3/pthread_rwlockattr_getpshared.3 index 63ef52409392..8e65be3ce391 100644 --- a/share/man/man3/pthread_rwlockattr_getpshared.3 +++ b/share/man/man3/pthread_rwlockattr_getpshared.3 @@ -35,7 +35,9 @@ .Sh SYNOPSIS .In pthread.h .Ft int -.Fn pthread_rwlockattr_getpshared "const pthread_rwlockattr_t *restrict attr" "int *restrict pshared" +.Fo pthread_rwlockattr_getpshared +.Fa "const pthread_rwlockattr_t *restrict attr" "int *restrict pshared" +.Fc .Sh DESCRIPTION The .Fn pthread_rwlockattr_getpshared From nobody Tue Oct 5 03:40:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C309A12D13BA; Tue, 5 Oct 2021 03:40: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 4HNjyn1BmHz3K0n; Tue, 5 Oct 2021 03:40: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 DB04C254DC; Tue, 5 Oct 2021 03:40: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 1953eG9G027280; Tue, 5 Oct 2021 03:40:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1953eGX3027278; Tue, 5 Oct 2021 03:40:16 GMT (envelope-from git) Date: Tue, 5 Oct 2021 03:40:16 GMT Message-Id: <202110050340.1953eGX3027278@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: 0a6e5fc29b43 - main - pthread_mutexattr(3): document pthread_mutexattr_set/getpshared List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 0a6e5fc29b43778bd004f7754c730e41a9ce2675 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0a6e5fc29b43778bd004f7754c730e41a9ce2675 commit 0a6e5fc29b43778bd004f7754c730e41a9ce2675 Author: Konstantin Belousov AuthorDate: 2021-10-01 00:46:16 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-05 03:39:52 +0000 pthread_mutexattr(3): document pthread_mutexattr_set/getpshared Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D32243 --- share/man/man3/pthread_mutexattr.3 | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 1afde4302457..41f386804151 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -26,7 +26,7 @@ .\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd August 17, 2018 +.Dd October 1, 2021 .Dt PTHREAD_MUTEXATTR 3 .Os .Sh NAME @@ -36,6 +36,8 @@ .Nm pthread_mutexattr_getprioceiling , .Nm pthread_mutexattr_setprotocol , .Nm pthread_mutexattr_getprotocol , +.Nm pthread_mutexattr_setpshared , +.Nm pthread_mutexattr_getpshared , .Nm pthread_mutexattr_setrobust , .Nm pthread_mutexattr_getrobust , .Nm pthread_mutexattr_settype , @@ -64,6 +66,14 @@ .Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" .Fc .Ft int +.Fo pthread_mutexattr_setpshared +.Fa "pthread_mutexattr_t *attr" "int shared" +.Fc +.Ft int +.Fo pthread_mutexattr_getpshared +.Fa "const pthread_mutexattr_t *attr" "int *shared" +.Fc +.Ft int .Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" .Ft int .Fn pthread_mutexattr_getrobust "pthread_mutexattr_t *attr" "int *robust" @@ -161,6 +171,26 @@ Invalid value for .El .Pp The +.Fn pthread_mutexattr_setpshared +function will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Invalid value for +.Fa attr , +or invalid value for +.Fa shared . +.El +.Pp +The +.Fn pthread_mutexattr_getpshared +function will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Invalid value for +.Fa attr . +.El +.Pp +The .Fn pthread_mutexattr_settype function will fail if: .Bl -tag -width Er @@ -214,6 +244,8 @@ The .Fn pthread_mutexattr_getprioceiling , .Fn pthread_mutexattr_setprotocol , .Fn pthread_mutexattr_getprotocol , +.Fn pthread_mutexattr_setpshared , +.Fn pthread_mutexattr_getpshared , .Fn pthread_mutexattr_settype , and .Fn pthread_mutexattr_gettype From nobody Tue Oct 5 03:40:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BF8F612D161F; Tue, 5 Oct 2021 03:40: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 4HNjyp30NJz3K0w; Tue, 5 Oct 2021 03:40: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 E74C325885; Tue, 5 Oct 2021 03:40: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 1953eHWv027804; Tue, 5 Oct 2021 03:40:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1953eHqR027798; Tue, 5 Oct 2021 03:40:17 GMT (envelope-from git) Date: Tue, 5 Oct 2021 03:40:17 GMT Message-Id: <202110050340.1953eHqR027798@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: 6bda192013fc - main - pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 6bda192013fc8e6c994098fe262f2a74f424cb57 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=6bda192013fc8e6c994098fe262f2a74f424cb57 commit 6bda192013fc8e6c994098fe262f2a74f424cb57 Author: Konstantin Belousov AuthorDate: 2021-10-01 00:53:44 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-05 03:39:52 +0000 pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D32243 --- share/man/man3/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile index ea82f04c7825..7312870a17dc 100644 --- a/share/man/man3/Makefile +++ b/share/man/man3/Makefile @@ -481,11 +481,13 @@ PTHREAD_MLINKS+=pthread_multi_np.3 pthread_single_np.3 PTHREAD_MLINKS+=pthread_mutexattr.3 pthread_mutexattr_destroy.3 \ pthread_mutexattr.3 pthread_mutexattr_getprioceiling.3 \ pthread_mutexattr.3 pthread_mutexattr_getprotocol.3 \ + pthread_mutexattr.3 pthread_mutexattr_getpshared.3 \ pthread_mutexattr.3 pthread_mutexattr_getrobust.3 \ pthread_mutexattr.3 pthread_mutexattr_gettype.3 \ pthread_mutexattr.3 pthread_mutexattr_init.3 \ pthread_mutexattr.3 pthread_mutexattr_setprioceiling.3 \ pthread_mutexattr.3 pthread_mutexattr_setprotocol.3 \ + pthread_mutexattr.3 pthread_mutexattr_setpshared.3 \ pthread_mutexattr.3 pthread_mutexattr_setrobust.3 \ pthread_mutexattr.3 pthread_mutexattr_settype.3 PTHREAD_MLINKS+=pthread_mutexattr_getkind_np.3 pthread_mutexattr_setkind_np.3 From nobody Tue Oct 5 03:40:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8A63012D1458; Tue, 5 Oct 2021 03:40: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 4HNjyq49w9z3KRh; Tue, 5 Oct 2021 03:40: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 1552E25809; Tue, 5 Oct 2021 03:40: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 1953eII9028339; Tue, 5 Oct 2021 03:40:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1953eIrM028336; Tue, 5 Oct 2021 03:40:18 GMT (envelope-from git) Date: Tue, 5 Oct 2021 03:40:18 GMT Message-Id: <202110050340.1953eIrM028336@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: f5b9747075a9 - main - libthr(3): explain some internals of the locks implementation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f5b9747075a9b489226e2a911f8a1597f4b9d072 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f5b9747075a9b489226e2a911f8a1597f4b9d072 commit f5b9747075a9b489226e2a911f8a1597f4b9d072 Author: Konstantin Belousov AuthorDate: 2021-10-01 01:17:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-05 03:39:53 +0000 libthr(3): explain some internals of the locks implementation Describe internal allocations, mention problems with the use of global malloc(3) and the reasons for internal allocator existence. Document shared objects implementation and describe shortcomings of the chosen approach, as well as the rationale why it was done that way. Reviewed by: markj Discussed with: jilles Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D32243 --- lib/libthr/libthr.3 | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/lib/libthr/libthr.3 b/lib/libthr/libthr.3 index 2b41187cdb7c..3018a6f20b86 100644 --- a/lib/libthr/libthr.3 +++ b/lib/libthr/libthr.3 @@ -1,5 +1,5 @@ .\" Copyright (c) 2005 Robert N. M. Watson -.\" Copyright (c) 2014,2015 The FreeBSD Foundation, Inc. +.\" Copyright (c) 2014,2015,2021 The FreeBSD Foundation, Inc. .\" All rights reserved. .\" .\" Part of this documentation was written by @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 5, 2020 +.Dd October 1, 2021 .Dt LIBTHR 3 .Os .Sh NAME @@ -259,6 +259,65 @@ the critical section. This should be taken into account when interpreting .Xr ktrace 1 logs. +.Sh PROCESS-SHARED SYNCHRONIZATION OBJECTS +In the +.Li libthr +implementation, +user-visible types for all synchronization objects (e.g. pthread_mutex_t) +are pointers to internal structures, allocated either by the corresponding +.Fn pthread__init +method call, or implicitly on first use when a static initializer +was specified. +The initial implementation of process-private locking object used this +model with internal allocation, and the addition of process-shared objects +was done in a way that did not break the application binary interface. +.Pp +For process-private objects, the internal structure is allocated using +either +.Xr malloc 3 +or, for +.Xr pthread_mutex_init 3 , +an internal memory allocator implemented in +.Nm . +The internal allocator for mutexes is used to avoid bootstrap issues +with many +.Xr malloc 3 +implementations which need working mutexes to function. +The same allocator is used for thread-specific data, see +.Xr pthread_setspecific 3 , +for the same reason. +.Pp +For process-shared objects, the internal structure is created by first +allocating a shared memory segment using +.Xr _umtx_op 2 +operation +.Dv UMTX_OP_SHM , +and then mapping it into process address space with +.Xr mmap 2 +with the +.Dv MAP_SHARED +flag. +The POSIX standard requires that: +.Bd -literal +only the process-shared synchronization object itself can be used for +performing synchronization. It need not be referenced at the address +used to initialize it (that is, another mapping of the same object can +be used). +.Ed +.Pp +With the +.Fx +implementation, process-shared objects require initialization +in each process that use them. +In particular, if you map the shared memory containing the user portion of +a process-shared object already initialized in different process, locking +functions do not work on it. +.Pp +Another broken case is a forked child creating the object in memory shared +with the parent, which cannot be used from parent. +Note that processes should not use non-async-signal safe functions after +.Xr fork 2 +anyway. .Sh SEE ALSO .Xr ktrace 1 , .Xr ld-elf.so.1 1 , From nobody Tue Oct 5 03:40:20 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AE9DD12D1631; Tue, 5 Oct 2021 03:40: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 4HNjyr5Llfz3KNF; Tue, 5 Oct 2021 03:40: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 27FF125886; Tue, 5 Oct 2021 03:40: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 1953eKFK028836; Tue, 5 Oct 2021 03:40:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1953eKSN028830; Tue, 5 Oct 2021 03:40:20 GMT (envelope-from git) Date: Tue, 5 Oct 2021 03:40:20 GMT Message-Id: <202110050340.1953eKSN028830@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: be6116fdfc4d - main - pthread_mutexattr(3): document each pthread_mutexattr_set/get* function List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: be6116fdfc4d292b77b3df7d4dda029d26a73d65 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=be6116fdfc4d292b77b3df7d4dda029d26a73d65 commit be6116fdfc4d292b77b3df7d4dda029d26a73d65 Author: Konstantin Belousov AuthorDate: 2021-10-01 01:39:39 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-05 03:39:53 +0000 pthread_mutexattr(3): document each pthread_mutexattr_set/get* function The descriptions may be more elaborated of course, but this is a good step at starting providing any useful information in our man page, at all. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D32243 --- share/man/man3/pthread_mutexattr.3 | 90 +++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 41f386804151..2a2c5c8d133e 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -1,6 +1,11 @@ .\" Copyright (C) 2000 Jason Evans . +.\" Copyright (c) 2021 The FreeBSD Foundation, Inc. .\" All rights reserved. .\" +.\" Part of this documentation was written by +.\" Konstantin Belousov 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 .\" are met: @@ -102,8 +107,89 @@ function destroys .Fa attr . .Pp The -.Fn pthread_mutexattr_set* -functions set the attribute that corresponds to each function name. +.Fn pthread_mutexattr_setprioceiling +function sets the priority ceiling for the mutex, used +by threads executed under the +.Dv PTHREAD_PRIO_PROTECT +protocol. +.Pp +The +.Fn pthread_mutexattr_setprotocol +function specifies the protocol to be followed in utilizing mutexes. +The +.Fa protocol +argument can take one of the following values: +.Bl -tag -width PTHREAD_PRIO_PROTECT +.It PTHREAD_PRIO_NONE +Priority and scheduling of the thread owning this mutex is not +affected by its mutex ownership. +.It PTHREAD_PRIO_INHERIT +Request priority-inheritance protocol, where the thread owning the mutex +is executed at the highest priority among priorities of all threads waiting +on any mutex owned by this thread. +.It PTHREAD_PRIO_PROTECT +Request priority-inheritance protocol, where the thread owning the mutex +is executed at highest priority among priorities or priority ceilings of +all threads waiting on any mutex owned by this thread. +.El +.Pp +The +.Fn pthread_mutexattr_setrobust +function specifies robustness attribute of the mutex. +Possible values for the +.Fa robust +argument are +.Bl -tag -width PTHREAD_MUTEX_STALLED +.It PTHREAD_MUTEX_STALLED +No special actions are taken if the thread owning the mutex is terminated +without unlocking the mutex lock. +This can lead to deadlocks if no other thread can unlock the mutex. +This is the default value. +.It PTHREAD_MUTEX_ROBUST +If the process containing the owning thread of a robust mutex, or owning +thread, terminates while holding the mutex lock, the next thread that +acquires the mutex is notified about the termination +by the return value +.Ev EOWNERDEAD +from the locking function. +Then, either +.Xr pthread_mutex_consistent 3 +can be used to repair the mutex lock state, or +.Xr pthread_mutex_unlock 3 +can unlock the mutex lock but also put it an unusable state, +where all further attempts to acquire it result in the +.Ev ENOTRECOVERABLE +error. +.El +.Pp +The +.Fn pthread_mutexattr_settype +function sets the type of the mutex. +The type affects the behavior of calls which lock and unlock the mutex. +The possible values for the +.Fa type +argument are +.Bl -tag -width PTHREAD_MUTEX_ERRORCHECK +.It PTHREAD_MUTEX_NORMAL +Both recursive locking, and unlocking when the lock is not owned by the current +thread, cause an error to be returned from the corresponding functions. +This matches +.Dv PTHREAD_MUTEX_ERRORCHECK +but somewhat contradicts the behavior mandated by POSIX. +.It PTHREAD_MUTEX_ERRORCHECK +Both recursive locking, and unlocking when the lock is not owned by the current +thread, cause an error returned from the corresponding functions. +.It PTHREAD_MUTEX_RECURSIVE +Recursive locking is allowed. +Attempt to unlock when current thread is not an owner of the lock causes +an error to be returned. +.It PTHREAD_MUTEX_DEFAULT +The +.Fx +implementation maps this type to +.Dv PTHREAD_MUTEX_ERRORCHECK +type. +.El .Pp The .Fn pthread_mutexattr_get* From nobody Tue Oct 5 04:23:20 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 452D812D6BBF; Tue, 5 Oct 2021 04:23: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 4HNkwT1YHWz3Psd; Tue, 5 Oct 2021 04:23: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 15019260CA; Tue, 5 Oct 2021 04:23:21 +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 1954NKcX087851; Tue, 5 Oct 2021 04: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 1954NKmZ087850; Tue, 5 Oct 2021 04:23:20 GMT (envelope-from git) Date: Tue, 5 Oct 2021 04:23:20 GMT Message-Id: <202110050423.1954NKmZ087850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Wojciech Macek Subject: git: 3ac5012e52ee - main - sdhci: Fix crash caused by M_WAITOK in sdhci dumps List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wma X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3ac5012e52ee3d9abf9c18e1302d8c6851858fd2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by wma: URL: https://cgit.FreeBSD.org/src/commit/?id=3ac5012e52ee3d9abf9c18e1302d8c6851858fd2 commit 3ac5012e52ee3d9abf9c18e1302d8c6851858fd2 Author: Bartlomiej Grzesik AuthorDate: 2021-10-05 04:22:32 +0000 Commit: Wojciech Macek CommitDate: 2021-10-05 04:22:32 +0000 sdhci: Fix crash caused by M_WAITOK in sdhci dumps In some contexts it is illegal to wait for memory allocation, causing kernel panic. By default sbuf_new passes M_WAITOK to malloc, which caused crashes when sdhci_dumpcaps or sdhci_dumpregs was callend in non sutiable context. Add SBUF_NOWAIT flag to sbuf_new to fix this. Obtained from: Semihalf Differential revision: https://reviews.freebsd.org/D32075 --- sys/dev/sdhci/sdhci.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/dev/sdhci/sdhci.c b/sys/dev/sdhci/sdhci.c index 7806a08a1572..4a59a73a7e26 100644 --- a/sys/dev/sdhci/sdhci.c +++ b/sys/dev/sdhci/sdhci.c @@ -264,7 +264,11 @@ sdhci_dumpregs(struct sdhci_slot *slot) { struct sbuf s; - sbuf_new(&s, NULL, 1024, SBUF_AUTOEXTEND); + if (sbuf_new(&s, NULL, 1024, SBUF_NOWAIT | SBUF_AUTOEXTEND) == NULL) { + slot_printf(slot, "sdhci_dumpregs: Failed to allocate memory for sbuf\n"); + return; + } + sbuf_set_drain(&s, &sbuf_printf_drain, NULL); sdhci_dumpregs_buf(slot, &s); sbuf_finish(&s); @@ -340,7 +344,11 @@ sdhci_dumpcaps(struct sdhci_slot *slot) { struct sbuf s; - sbuf_new(&s, NULL, 1024, SBUF_AUTOEXTEND); + if (sbuf_new(&s, NULL, 1024, SBUF_NOWAIT | SBUF_AUTOEXTEND) == NULL) { + slot_printf(slot, "sdhci_dumpcaps: Failed to allocate memory for sbuf\n"); + return; + } + sbuf_set_drain(&s, &sbuf_printf_drain, NULL); sdhci_dumpcaps_buf(slot, &s); sbuf_finish(&s); From nobody Tue Oct 5 07:44:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 150FA17E25FC; Tue, 5 Oct 2021 07:44: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 4HNqNz6zp0z3wVZ; Tue, 5 Oct 2021 07:44: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 D00279D3; Tue, 5 Oct 2021 07:44: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 1957ipXN054292; Tue, 5 Oct 2021 07:44:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1957ipfh054291; Tue, 5 Oct 2021 07:44:51 GMT (envelope-from git) Date: Tue, 5 Oct 2021 07:44:51 GMT Message-Id: <202110050744.1957ipfh054291@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: f902ca97bdbc - main - Revert erroneous commit ded0d3d486eba List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f902ca97bdbceccf62b4b02b0321af91ea398925 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=f902ca97bdbceccf62b4b02b0321af91ea398925 commit f902ca97bdbceccf62b4b02b0321af91ea398925 Author: Stefan Eßer AuthorDate: 2021-10-05 07:41:46 +0000 Commit: Stefan Eßer CommitDate: 2021-10-05 07:41:46 +0000 Revert erroneous commit ded0d3d486eba These files came from a prior commit to contrib/bc and seem to have been placed in the top of the source tree by a failed git rebase. Reported by: markj --- bc.vcxproj | 278 ---------------------------------------------------- bc.vcxproj.filters | 182 ---------------------------------- bcl.vcxproj | 161 ------------------------------ bcl.vcxproj.filters | 96 ------------------ 4 files changed, 717 deletions(-) diff --git a/bc.vcxproj b/bc.vcxproj deleted file mode 100644 index 2dbbd558618f..000000000000 --- a/bc.vcxproj +++ /dev/null @@ -1,278 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - {D5086CFE-052C-4742-B005-E05DB983BBA2} - Win32Proj - - - - Application - true - v142 - - - Application - false - v142 - - - Application - true - v142 - - - Application - false - v142 - - - - - - - - - - - - - - - - - - - - - Building strgen - CL /Fo:$(Configuration)\$(ProjectName)\ /Fe:$(Configuration)\$(ProjectName)\strgen.exe gen\strgen.c - gen\strgen.c - $(Configuration)\$(ProjectName)\strgen.exe - - - Generating $(Configuration)\$(ProjectName)/lib.c - START $(Configuration)\$(ProjectName)/strgen gen\lib.bc $(Configuration)\$(ProjectName)/lib.c bc_lib bc_lib_name BC_ENABLED 1 - $(Configuration)\$(ProjectName)\strgen.exe;gen\lib.bc - $(Configuration)\$(ProjectName)\lib.c - - - Generating $(Configuration)\$(ProjectName)/lib2.c - START $(Configuration)\$(ProjectName)/strgen gen\lib2.bc $(Configuration)\$(ProjectName)/lib2.c bc_lib2 bc_lib2_name BC_ENABLED 1 - $(Configuration)\$(ProjectName)\strgen.exe;gen\lib2.bc - $(Configuration)\$(ProjectName)\lib2.c - - - Generating $(Configuration)\$(ProjectName)/bc_help.c - START $(Configuration)\$(ProjectName)/strgen gen\bc_help.txt $(Configuration)\$(ProjectName)\bc_help.c bc_help "" BC_ENABLED - $(Configuration)\$(ProjectName)\strgen.exe;gen\bc_help.txt - $(Configuration)\$(ProjectName)\bc_help.c - - - Generating $(Configuration)\$(ProjectName)/dc_help.c - START $(Configuration)\$(ProjectName)/strgen gen\dc_help.txt $(Configuration)\$(ProjectName)\dc_help.c dc_help "" DC_ENABLED - $(Configuration)\$(ProjectName)\strgen.exe;gen\dc_help.txt - $(Configuration)\$(ProjectName)\dc_help.c - - - - ClCompile - - - - true - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - false - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - false - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - false - /W3 %(AdditionalOptions) - - - MachineX86 - true - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - - - copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDLL - Level3 - ProgramDatabase - MaxSpeed - false - /W3 %(AdditionalOptions) - - - MachineX86 - false - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - true - true - - - copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - false - /W3 %(AdditionalOptions) - - - MachineX64 - true - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - - - copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=1;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=0;EXECSUFFIX=.exe;BUILD_TYPE=HN - $(SolutionDir)\include;%(AdditionalIncludeDirectories) - MultiThreadedDLL - Level3 - ProgramDatabase - MaxSpeed - false - /W3 %(AdditionalOptions) - Default - - - MachineX64 - false - Console - kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;bcrypt.lib;ucrt.lib;%(AdditionalDependencies) - - - copy /b "$(SolutionDir)\$(Configuration)\$(ProjectName)\bc.exe" "$(SolutionDir)\$(Configuration)\$(ProjectName)\dc.exe" - - - Copying bc to dc... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bc.vcxproj.filters b/bc.vcxproj.filters deleted file mode 100644 index 141ecb808d08..000000000000 --- a/bc.vcxproj.filters +++ /dev/null @@ -1,182 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - - - - - - - - - - - Resource Files - - - Resource Files - - - - - Resource Files - - - Resource Files - - - \ No newline at end of file diff --git a/bcl.vcxproj b/bcl.vcxproj deleted file mode 100644 index 3b79c8b9ef64..000000000000 --- a/bcl.vcxproj +++ /dev/null @@ -1,161 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - {D2CC3DCF-7919-4DEF-839D-E9B897EC3E8E} - Win32Proj - 10.0 - - - - StaticLibrary - true - v142 - - - StaticLibrary - false - v142 - - - StaticLibrary - true - v142 - - - StaticLibrary - false - v142 - - - - - - - - - - - - - - - - - - - - - true - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - true - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - $(SolutionDir)\$(Configuration)\$(ProjectName)\ - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - MultiThreadedDebugDLL - Level3 - ProgramDatabase - Disabled - $(SolutionDir)\include - - - MachineX86 - true - Windows - - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - MultiThreadedDLL - Level3 - ProgramDatabase - $(SolutionDir)\include - - - MachineX86 - true - Windows - true - true - - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - $(SolutionDir)\include - - - - - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions);BC_ENABLED=1;DC_ENABLED=1;BC_ENABLE_EXTRA_MATH=1;BC_ENABLE_HISTORY=0;BC_ENABLE_NLS=0;BC_ENABLE_PROMPT=0;BC_DEBUG_CODE=0;BC_ENABLE_LIBRARY=1 - $(SolutionDir)\include - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bcl.vcxproj.filters b/bcl.vcxproj.filters deleted file mode 100644 index f75e0331cc88..000000000000 --- a/bcl.vcxproj.filters +++ /dev/null @@ -1,96 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - \ No newline at end of file From nobody Tue Oct 5 07:48:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 47E0417E33E1; Tue, 5 Oct 2021 07:48:31 +0000 (UTC) (envelope-from se@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 4HNqTC1Dhzz4RVx; Tue, 5 Oct 2021 07:48:31 +0000 (UTC) (envelope-from se@freebsd.org) Received: from [IPV6:2003:cd:5f26:fa00:c8f9:33a0:8499:2078] (p200300cd5f26fa00c8f933a084992078.dip0.t-ipconnect.de [IPv6:2003:cd:5f26:fa00:c8f9:33a0:8499:2078]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: se/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 48B212DE90; Tue, 5 Oct 2021 07:48:30 +0000 (UTC) (envelope-from se@freebsd.org) Message-ID: Date: Tue, 5 Oct 2021 09:48:26 +0200 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 Subject: Re: git: ded0d3d486eb - main - Add back Windows only VCXProj files Content-Language: en-US To: Jessica Clarke , Mark Johnston Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202110042015.194KF6pt032075@gitrepo.freebsd.org> From: Stefan Esser In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------07HR1lYFMLHAqGQ445BAcwWM" X-ThisMailContainsUnwantedMimeParts: N This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------07HR1lYFMLHAqGQ445BAcwWM Content-Type: multipart/mixed; boundary="------------2HbEKl1G50neiEd9rJpdlGNN"; protected-headers="v1" From: Stefan Esser To: Jessica Clarke , Mark Johnston Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Message-ID: Subject: Re: git: ded0d3d486eb - main - Add back Windows only VCXProj files References: <202110042015.194KF6pt032075@gitrepo.freebsd.org> In-Reply-To: --------------2HbEKl1G50neiEd9rJpdlGNN Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Am 05.10.21 um 01:10 schrieb Jessica Clarke: > On 5 Oct 2021, at 00:02, Mark Johnston wrote: >> >> On Mon, Oct 04, 2021 at 08:15:06PM +0000, Stefan E=C3=9Fer wrote: >>> The branch main has been updated by se: >>> >>> URL: https://cgit.FreeBSD.org/src/commit/?id=3Dded0d3d486eba766f61307= 0de0ed12029a9a3816 >>> >>> commit ded0d3d486eba766f613070de0ed12029a9a3816 >>> Author: Stefan E=C3=9Fer >>> AuthorDate: 2021-07-28 13:35:16 +0000 >>> Commit: Stefan E=C3=9Fer >>> CommitDate: 2021-10-04 20:10:52 +0000 >>> >>> Add back Windows only VCXProj files >>> --- >>> bc.vcxproj | 278 +++++++++++++++++++++++++++++++++++++++++++= +++++++++ >>> bc.vcxproj.filters | 182 ++++++++++++++++++++++++++++++++++ >>> bcl.vcxproj | 161 ++++++++++++++++++++++++++++++ >>> bcl.vcxproj.filters | 96 ++++++++++++++++++ >>> 4 files changed, 717 insertions(+) >> >> Presumably these should instead have been added under contrib/bc? No - they should not have been there. I did not notice that they were put into the root of the source tree, I definitely did not put them there. I performed a diff -r to verify the contents of contrib/bc matched vendor/bc - but had not assumed or noticed that there appeared files outside my work directory. (And I did not add them to the commit. I used "git add -A ." in contrib/bc and had not thought about the possibility that files outside that directory could become part of the commit.) I'm still fighting a lot with git and although I understand its concepts and data structures often do not get the results I wanted to achieve. > I think they were meant to go into the root of the vendor branch, given= > the last import in the branch also lost them, not just the subtree > merge (and then presumably merged into contrib/bc). I have no idea how this old issue resurfaced during this commit. There was an issue with the CR-LF line separators used in these files and .gitattributes missing in the initial commit, since I had not been aware of the special handling of those files. This has been corrected in the repository, but during this commit a rebase was performed and somehow two old commits survived into the commit of the MFV of bc-5.1.0 to contrib/bc (where these files actually have been moved into a "vs" sub-directory with modified contents). It seems that git did resurrect those files not in contrib/bc but in /usr/src for reasons that I do not understand. It seems that git somehow replayed the old commit (see the AuthorDate from July) but at a made up place ... I'll delete these files and I hope they'll not show up in any further commit I do in this area. I'll take more care to check the (long) list of files that are part of the MFV. Thanks for notifying me and sorry for messing up the repository with that commit. Regards, STefan --------------2HbEKl1G50neiEd9rJpdlGNN-- --------------07HR1lYFMLHAqGQ445BAcwWM Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsB5BAABCAAjFiEEo3HqZZwL7MgrcVMTR+u171r99UQFAmFcA0oFAwAAAAAACgkQR+u171r99UTS QAf/brri2p5Zx2eI5EasZTIY5iKFI0TDKfL8RF1siVG1XKPNqh/bWyU1KZqHQLVy/zAHWl171rwn 7RPQFiL5ZizNnYKlp+DykAm8G/iF7xSttyo/1cAdq+cZ5kJ+kc8c8jMUuOnUZ8scVMTfJSEfSWkS ej48iOHmr4RUlFuitfqpNQKe2xXpk3cf1FdZLCRGsyCJTJW0IyDFzE6g68f0+eTMBsNfW6+rRo4w U9nxWEjK6nWgoqf1oOTK13cU22qIN5vJXZue459tEgzb6CudRJ3zl1f6n1n100seqQMiaD92ZnSN UxOy+AWNLiMFEIaB7b9c7ewfCbDjbMVqFcrvyZCZUQ== =xoLJ -----END PGP SIGNATURE----- --------------07HR1lYFMLHAqGQ445BAcwWM-- From nobody Tue Oct 5 08:51:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C4B9312D269E; Tue, 5 Oct 2021 08:51: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 4HNrsZ4Km3z4ZDP; Tue, 5 Oct 2021 08:51: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 515A018CA; Tue, 5 Oct 2021 08:51: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 1958pEDR043506; Tue, 5 Oct 2021 08:51:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1958pEYw043505; Tue, 5 Oct 2021 08:51:14 GMT (envelope-from git) Date: Tue, 5 Oct 2021 08:51:14 GMT Message-Id: <202110050851.1958pEYw043505@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Hans Petter Selasky Subject: git: 5a7de2b42caf - main - mlx4en(4): Fix wrong mbuf cluster size in mlx4_en_debugnet_init() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: hselasky X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5a7de2b42caf6241e87b417a0521e9ab303989d7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by hselasky: URL: https://cgit.FreeBSD.org/src/commit/?id=5a7de2b42caf6241e87b417a0521e9ab303989d7 commit 5a7de2b42caf6241e87b417a0521e9ab303989d7 Author: Hans Petter Selasky AuthorDate: 2021-10-05 08:46:56 +0000 Commit: Hans Petter Selasky CommitDate: 2021-10-05 08:48:30 +0000 mlx4en(4): Fix wrong mbuf cluster size in mlx4_en_debugnet_init() This fixes an "invalid cluster size" panic when debugnet is activated. panic() m_getzone() debugnet_mbuf_reinit() debugnet_any_ifnet_update() ifhwioctl() ifioctl() Submitted by: ae@ PR: 258923 MFC after: 1 week Sponsored by: NVIDIA Networking --- sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c b/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c index eec620f5b90e..672affcce623 100644 --- a/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c +++ b/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c @@ -2904,7 +2904,7 @@ mlx4_en_debugnet_init(struct ifnet *dev, int *nrxr, int *ncl, int *clsize) mutex_lock(&priv->mdev->state_lock); *nrxr = priv->rx_ring_num; *ncl = DEBUGNET_MAX_IN_FLIGHT; - *clsize = priv->rx_mb_size; + *clsize = MCLBYTES; mutex_unlock(&priv->mdev->state_lock); } From nobody Tue Oct 5 09:44:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4102712D934E; Tue, 5 Oct 2021 09:44:41 +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 4HNt3D4WTfz4hJC; Tue, 5 Oct 2021 09:44: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 772CB216E; Tue, 5 Oct 2021 09:44: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 1959ieLx016374; Tue, 5 Oct 2021 09:44:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1959ieFk016373; Tue, 5 Oct 2021 09:44:40 GMT (envelope-from git) Date: Tue, 5 Oct 2021 09:44:40 GMT Message-Id: <202110050944.1959ieFk016373@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: ae4fb190fd4a - main - netstat: split ipsec and ipsec6 statistics in libxo List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ae4fb190fd4a21649c4562fc6cd81bba4da222a4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=ae4fb190fd4a21649c4562fc6cd81bba4da222a4 commit ae4fb190fd4a21649c4562fc6cd81bba4da222a4 Author: Mateusz Guzik AuthorDate: 2021-10-05 09:42:58 +0000 Commit: Mateusz Guzik CommitDate: 2021-10-05 09:42:58 +0000 netstat: split ipsec and ipsec6 statistics in libxo In particular fixes --libxo json PR: 254673 Reported by: j.vandeville@gmail.com Sponsored by: Rubicon Communications, LLC ("Netgate") --- usr.bin/netstat/ipsec.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/usr.bin/netstat/ipsec.c b/usr.bin/netstat/ipsec.c index e57d7f4905b5..029dd64f3b35 100644 --- a/usr.bin/netstat/ipsec.c +++ b/usr.bin/netstat/ipsec.c @@ -154,12 +154,10 @@ static struct val2str ipsec_compnames[] = { { -1, NULL }, }; -static void print_ipsecstats(const struct ipsecstat *ipsecstat); - static void -print_ipsecstats(const struct ipsecstat *ipsecstat) +print_ipsecstats(const char *tag, const struct ipsecstat *ipsecstat) { - xo_open_container("ipsec-statistics"); + xo_open_container(tag); #define p(f, m) if (ipsecstat->f || sflag <= 1) \ xo_emit(m, (uintmax_t)ipsecstat->f, plural(ipsecstat->f)) @@ -194,27 +192,30 @@ print_ipsecstats(const struct ipsecstat *ipsecstat) "{N:/mbuf%s inserted during makespace}\n"); #undef p2 #undef p - xo_close_container("ipsec-statistics"); + xo_close_container(tag); } void ipsec_stats(u_long off, const char *name, int af1 __unused, int proto __unused) { struct ipsecstat ipsecstat; + const char *tag; if (strcmp(name, "ipsec6") == 0) { if (fetch_stats("net.inet6.ipsec6.ipsecstats", off,&ipsecstat, sizeof(ipsecstat), kread_counters) != 0) return; + tag = "ipsec6-statistics"; } else { if (fetch_stats("net.inet.ipsec.ipsecstats", off, &ipsecstat, sizeof(ipsecstat), kread_counters) != 0) return; + tag = "ipsec-statistics"; } xo_emit("{T:/%s}:\n", name); - print_ipsecstats(&ipsecstat); + print_ipsecstats(tag, &ipsecstat); } From nobody Tue Oct 5 10:17:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5FCB812DC769; Tue, 5 Oct 2021 10:17: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 4HNtmd2GhVz4lKN; Tue, 5 Oct 2021 10:17: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 2DB9B2D56; Tue, 5 Oct 2021 10:17: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 195AH5Qx056627; Tue, 5 Oct 2021 10:17:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195AH5HE056626; Tue, 5 Oct 2021 10:17:05 GMT (envelope-from git) Date: Tue, 5 Oct 2021 10:17:05 GMT Message-Id: <202110051017.195AH5HE056626@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: 0eb2dcd32ea6 - main - mlx5_en: fix use of CALLOUT_DIRECT List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 0eb2dcd32ea6fb59661d709872e02ea6b3e7b9e2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0eb2dcd32ea6fb59661d709872e02ea6b3e7b9e2 commit 0eb2dcd32ea6fb59661d709872e02ea6b3e7b9e2 Author: Konstantin Belousov AuthorDate: 2021-09-08 15:37:20 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-05 10:07:36 +0000 mlx5_en: fix use of CALLOUT_DIRECT Reported by: markj Reviewed by: hselasky Sponsored by: NVIDIA Networking MFC after: 1 week --- sys/dev/mlx5/mlx5_en/mlx5_en_main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c index 9d8854528d4a..bf8c3c52a343 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c @@ -1126,10 +1126,10 @@ mlx5e_reset_calibration_callout(struct mlx5e_priv *priv) if (priv->clbr_done == 0) mlx5e_calibration_callout(priv); else - callout_reset_curcpu(&priv->tstmp_clbr, (priv->clbr_done < + callout_reset_sbt_curcpu(&priv->tstmp_clbr, (priv->clbr_done < mlx5e_calibration_duration ? mlx5e_fast_calibration : - mlx5e_normal_calibration) * hz, mlx5e_calibration_callout, - priv); + mlx5e_normal_calibration) * SBT_1S, 0, + mlx5e_calibration_callout, priv, C_DIRECT_EXEC); } static uint64_t @@ -4614,7 +4614,7 @@ mlx5e_create_ifp(struct mlx5_core_dev *mdev) OID_AUTO, "rx_clbr_done", CTLFLAG_RD, &priv->clbr_done, 0, "RX timestamps calibration state"); - callout_init(&priv->tstmp_clbr, CALLOUT_DIRECT); + callout_init(&priv->tstmp_clbr, 1); mlx5e_reset_calibration_callout(priv); pa.pa_version = PFIL_VERSION; From nobody Tue Oct 5 10:36:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8640412DFA50 for ; Tue, 5 Oct 2021 10:43:52 +0000 (UTC) (envelope-from maria.stoller@datasalesprospect.com) Received: from datasalesprospect.com (usermta5.datasalesprospect.com [188.165.1.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4HNvMW259Gz4nfM for ; Tue, 5 Oct 2021 10:43:51 +0000 (UTC) (envelope-from maria.stoller@datasalesprospect.com) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=default; d=datasalesprospect.com; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; i=maria.stoller@datasalesprospect.com; bh=RAZbdShOf4M21GmO1VvHYfpKH7M=; b=hQN5J5I/kywLbMqyNGFSyGbBr7JdThLS3R2qJTk4ev4CZFD9XtFWWautxSWhUZ+MVKDHd9sNwH8B 9bF4Bj9nyVdzliSsmAOoKAO+nKWbqbzkKP3GWvoWsxKdGyxg4w0K//Osi6CmodRE+tuisG4cfJJ3 NSilCQwwQy2Lu6kJayI= DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=default; d=datasalesprospect.com; b=bFr8E+uT1zODcNLBZDObat7gRvSnun6oez9gwLK9rM0gQdS+K+H/hmO9YkM4B8TdVgflp5arDw/W TbAf+VWyZ3uCrWDK1lp/FBhpvZ2apY6qWu+3qskh+oPULUfaQaXu2k9QA0lIs1xfOOg4vqDuS+65 Rtw5AbINILQeWKbj/SM=; To: Subject: B2B Contact Info Date: Tue, 5 Oct 2021 06:36:38 -0400 Message-ID: <135101d7b9d5$ddfc6fc0$99f54f40$@datasalesprospect.com> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_1352_01D7B9B4.56ED67D0" Thread-Index: Ade508MfLfGxWv4gRA2aejczflakoA== Content-Language: en-us X-Rspamd-Queue-Id: 4HNvMW259Gz4nfM X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=datasalesprospect.com header.s=default header.b="hQN5J5I/"; dmarc=pass (policy=reject) header.from=datasalesprospect.com; spf=pass (mx1.freebsd.org: domain of maria.stoller@datasalesprospect.com designates 188.165.1.215 as permitted sender) smtp.mailfrom=maria.stoller@datasalesprospect.com X-Spamd-Result: default: False [-4.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[datasalesprospect.com:s=default]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:188.165.1.215]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; TO_DN_NONE(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCPT_COUNT_ONE(0.00)[1]; DKIM_TRACE(0.00)[datasalesprospect.com:+]; DMARC_POLICY_ALLOW(-0.50)[datasalesprospect.com,reject]; NEURAL_HAM_SHORT(-1.00)[-0.999]; RCVD_COUNT_ZERO(0.00)[0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:16276, ipnet:188.165.0.0/16, country:FR]; MID_RHS_MATCH_FROM(0.00)[] Reply-To: maria.stoller@datasalesprospect.com From: Maria Stoller via dev-commits-src-all X-Original-From: Maria Stoller X-ThisMailContainsUnwantedMimeParts: N This is a multipart message in MIME format. ------=_NextPart_000_1352_01D7B9B4.56ED67D0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, I hope you're having a good day. Respecting your time I will keep this extremely brief We are Business Listed Building Company. Our reach is global covering almost all Industries with every job title. Our services also include appending and cleansing for your old/existing databases. Find Your Ideal Customers from Our Top Selling Contact Lists. . Manufacturing Industry . Healthcare Industry . Hospitality Industry . Pharmaceuticals Industry . Finance Industry . Construction Industry . Food and Beverages Industry . Metals & Mining Industry . Retail Industry . Transportation Industry and many more. Unless you are swamped with back orders, our lists could help you expand your customer base. If you would be interested, I will be happy to send you more details together that you could actually use and base a decision on. For this you would need to share your targeted audiences' criteria with me as per the following parameters: * Target Industry: ___________? * Target Title: ________________? * Target Geography: ______________? * You could add Employee and/or Revenue size filters too. If you are willing to try us out, please fill in your target audiences' criteria above and one of our Business Development Team will be in touch with you shortly with the promised details. Hope I hear from you. Warm Regards, Maria Stoller Marketing Executive If you're not interested in this mailing list please Replay as "Leave Out" in subject line. ------=_NextPart_000_1352_01D7B9B4.56ED67D0-- From nobody Tue Oct 5 12:17:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7192B17E744D; Tue, 5 Oct 2021 12:17: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 4HNxRM2jSyz4vs3; Tue, 5 Oct 2021 12:17: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 3D6704720; Tue, 5 Oct 2021 12:17: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 195CHJ55016686; Tue, 5 Oct 2021 12:17:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195CHJ4s016685; Tue, 5 Oct 2021 12:17:19 GMT (envelope-from git) Date: Tue, 5 Oct 2021 12:17:19 GMT Message-Id: <202110051217.195CHJ4s016685@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: cee9a741b261 - main - cesa: remove unused CESA_SESSIONS macro List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cee9a741b261aaced00c1e9e2de3f0fa283f27af Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=cee9a741b261aaced00c1e9e2de3f0fa283f27af commit cee9a741b261aaced00c1e9e2de3f0fa283f27af Author: Mateusz Guzik AuthorDate: 2021-10-05 12:12:03 +0000 Commit: Mateusz Guzik CommitDate: 2021-10-05 12:17:10 +0000 cesa: remove unused CESA_SESSIONS macro Unused since 1b0909d51a8aa8b5 ("OpenCrypto: Convert sessions to opaque handles instead of integers") Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/dev/cesa/cesa.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/sys/dev/cesa/cesa.h b/sys/dev/cesa/cesa.h index 449f4ecce5b2..9387c87e9615 100644 --- a/sys/dev/cesa/cesa.h +++ b/sys/dev/cesa/cesa.h @@ -31,9 +31,6 @@ #ifndef _DEV_CESA_H_ #define _DEV_CESA_H_ -/* Maximum number of allocated sessions */ -#define CESA_SESSIONS 64 - /* Maximum number of queued requests */ #define CESA_REQUESTS 256 From nobody Tue Oct 5 17:45:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 84DE812D4828 for ; Tue, 5 Oct 2021 17:45: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 4HP4jb3KWGz3QqM; Tue, 5 Oct 2021 17:45: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 5208110FC3; Tue, 5 Oct 2021 17:45: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 195Hj7i3054540; Tue, 5 Oct 2021 17:45:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195Hj7Ci054539; Tue, 5 Oct 2021 17:45:07 GMT (envelope-from git) Date: Tue, 5 Oct 2021 17:45:07 GMT Message-Id: <202110051745.195Hj7Ci054539@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: Muhammad Moinur Rahman Subject: git: f46bdbbf910a - internal/admin - Safekeep src bit of jch@ List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bofh X-Git-Repository: src X-Git-Refname: refs/internal/admin X-Git-Reftype: branch X-Git-Commit: f46bdbbf910a88709407e70f4dbd0d8d37fbd33d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch internal/admin has been updated by bofh (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=f46bdbbf910a88709407e70f4dbd0d8d37fbd33d commit f46bdbbf910a88709407e70f4dbd0d8d37fbd33d Author: Muhammad Moinur Rahman AuthorDate: 2021-10-05 17:43:38 +0000 Commit: Muhammad Moinur Rahman CommitDate: 2021-10-05 17:43:38 +0000 Safekeep src bit of jch@ Approved by: core --- access | 1 - 1 file changed, 1 deletion(-) diff --git a/access b/access index 841474374034..47474db33492 100644 --- a/access +++ b/access @@ -92,7 +92,6 @@ jah jamie jasone jceel -jch jchandra jeff jhb From nobody Tue Oct 5 13:08:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 89BD317EB86C; Tue, 5 Oct 2021 13:08: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 4HNyZK3XTdz3F5P; Tue, 5 Oct 2021 13:08: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 59DAE4F45; Tue, 5 Oct 2021 13:08: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 195D8PWC083223; Tue, 5 Oct 2021 13:08:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195D8PwP083222; Tue, 5 Oct 2021 13:08:25 GMT (envelope-from git) Date: Tue, 5 Oct 2021 13:08:25 GMT Message-Id: <202110051308.195D8PwP083222@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: b3b15d9256cb - main - cam: Add doxygen for cam_sim_free List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: b3b15d9256cbba94d509d1c8b1c5b2379f03fd26 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=b3b15d9256cbba94d509d1c8b1c5b2379f03fd26 commit b3b15d9256cbba94d509d1c8b1c5b2379f03fd26 Author: Warner Losh AuthorDate: 2021-10-05 13:07:17 +0000 Commit: Warner Losh CommitDate: 2021-10-05 13:07:47 +0000 cam: Add doxygen for cam_sim_free Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D32303 --- sys/cam/cam_sim.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sys/cam/cam_sim.c b/sys/cam/cam_sim.c index e7a7348d0c44..abf65965fc8e 100644 --- a/sys/cam/cam_sim.c +++ b/sys/cam/cam_sim.c @@ -127,6 +127,19 @@ cam_sim_alloc(sim_action_func sim_action, sim_poll_func sim_poll, return (sim); } +/** + * @brief frees up the sim + * + * Frees up the CAM @c sim and optionally the devq. If a mutex is associated + * with the sim, it must be locked on entry. It will remain locked on + * return. + * + * This function will wait for all outstanding reference to the sim to clear + * before returning. + * + * @param sim The sim to free + * @param free_devq Free the devq associated with the sim at creation. + */ void cam_sim_free(struct cam_sim *sim, int free_devq) { From nobody Tue Oct 5 18:47:42 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0130617EB994; Tue, 5 Oct 2021 18:47: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 4HP65q2mLzz4gxs; Tue, 5 Oct 2021 18:47: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 1020C11D39; Tue, 5 Oct 2021 18:47: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 195Ilg3s034231; Tue, 5 Oct 2021 18:47:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195IlgUf034230; Tue, 5 Oct 2021 18:47:42 GMT (envelope-from git) Date: Tue, 5 Oct 2021 18:47:42 GMT Message-Id: <202110051847.195IlgUf034230@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 7835b2cb4a1a - main - sbuf(9): Microoptimize sbuf_put_byte() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7835b2cb4a1ae57f403739a2f1076ec7188f18c9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=7835b2cb4a1ae57f403739a2f1076ec7188f18c9 commit 7835b2cb4a1ae57f403739a2f1076ec7188f18c9 Author: Alexander Motin AuthorDate: 2021-10-05 18:42:47 +0000 Commit: Alexander Motin CommitDate: 2021-10-05 18:47:38 +0000 sbuf(9): Microoptimize sbuf_put_byte() This function is actively used by sbuf_vprintf(), so this simple inlining in half reduces time of kern.geom.confxml generation. MFC after: 2 weeks Sponsored by: iXsystem, Inc. --- sys/kern/subr_sbuf.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_sbuf.c b/sys/kern/subr_sbuf.c index b7f135e81206..6c533f36c82e 100644 --- a/sys/kern/subr_sbuf.c +++ b/sys/kern/subr_sbuf.c @@ -480,7 +480,26 @@ static void sbuf_put_byte(struct sbuf *s, char c) { - sbuf_put_bytes(s, &c, 1); + assert_sbuf_integrity(s); + assert_sbuf_state(s, 0); + + if (__predict_false(s->s_error != 0)) + return; + if (__predict_false(SBUF_FREESPACE(s) <= 0)) { + /* + * If there is a drain, use it, otherwise extend the + * buffer. + */ + if (s->s_drain_func != NULL) + (void)sbuf_drain(s); + else if (sbuf_extend(s, 1) < 0) + s->s_error = ENOMEM; + if (s->s_error != 0) + return; + } + s->s_buf[s->s_len++] = c; + if (SBUF_ISSECTION(s)) + s->s_sect_len++; } /* @@ -623,7 +642,7 @@ static void sbuf_putc_func(int c, void *arg) { - if (c != '\0') + if (__predict_true(c != '\0')) sbuf_put_byte(arg, c); } From nobody Tue Oct 5 18:57:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1BBBA17ED1DE; Tue, 5 Oct 2021 18:58: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 4HP6Kh0Km1z4jkm; Tue, 5 Oct 2021 18:58: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 DFA1312020; Tue, 5 Oct 2021 18:57: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 195IvxW5048535; Tue, 5 Oct 2021 18:57:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195IvxuP048534; Tue, 5 Oct 2021 18:57:59 GMT (envelope-from git) Date: Tue, 5 Oct 2021 18:57:59 GMT Message-Id: <202110051857.195IvxuP048534@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: 9130e0ace0bb - stable/13 - mgb: sync with version in main List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 9130e0ace0bb3e6cd1ad052b8a69ecbf37eb2b62 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=9130e0ace0bb3e6cd1ad052b8a69ecbf37eb2b62 commit 9130e0ace0bb3e6cd1ad052b8a69ecbf37eb2b62 Author: Ed Maste AuthorDate: 2021-08-13 20:57:04 +0000 Commit: Ed Maste CommitDate: 2021-10-05 18:57:21 +0000 mgb: sync with version in main This is a combination of 7 commits. mgb: update Microchip URLs Sponsored by: The FreeBSD Foundation (cherry picked from commit 6b25b4a73fbe56e15d094895b4c7acdb424ee80d) mgb: enable multicast in mgb_init Receive Filtering Engine (RFE) configuration is not yet implemented, and mgb intended to enable all broadcast, multicast, and unicast. However, MGB_RFE_ALLOW_MULTICAST was missed (MGB_RFE_ALLOW_UNICAST was included twice). MFC after: 1 week Fixes: 8890ab7758b8 ("Introduce if_mgb driver...") Sponsored by: The FreeBSD Foundation (cherry picked from commit ecac5c2928eead57c05ee7d376ff58de0a575d49) mgb: Do not KASSERT on error in mgb_init There's not much we can do if mii_mediachg() fails, but KASSERT is not appropriate. MFC after: 1 week Fixes: 8890ab7758b8 ("Introduce if_mgb driver...") Sponsored by: The FreeBSD Foundation (cherry picked from commit 8b889b8953828fe22e5de68647a35610dd87ff8f) mgb: Staticize devclass and iflib structs (as is typical) MFC after: 1 week Fixes: 8890ab7758b8 ("Introduce if_mgb driver...") Sponsored by: The FreeBSD Foundation (cherry picked from commit c83ae596f3c2ce8c4ef2bacfb63100aaf8d48bb7) mgb: Apply some style(9) Add parens around return values, rewrap lines MFC after: 1 week Fixes: 8890ab7758b8 ("Introduce if_mgb driver...") Sponsored by: The FreeBSD Foundation (cherry picked from commit 820da5820e60f538d3598d8cb226f51a01bdf01c) mgb: Fix DEBUG (and LINT) build Sponsored by: The FreeBSD Foundation (cherry picked from commit 5f07d7fe408bbca5c2f6755c363128107916c08d) mgb: Fix nop admin interrupt handling Previously mgb_admin_intr printed a diagnostic message if no interrupt status bits were set, but it's not valid to call device_printf() from a filter. Just drop the message as it has no user-facing value. Also return FILTER_STRAY in this case - there is nothing further for the driver to do. Reviewed by: kbowling MFC after: 1 week Fixes: 8890ab7758b8 ("Introduce if_mgb driver...") Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32231 (cherry picked from commit 1ad2d87778970582854082bcedd2df0394fd4933) --- sys/dev/mgb/if_mgb.c | 106 +++++++++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 59 deletions(-) diff --git a/sys/dev/mgb/if_mgb.c b/sys/dev/mgb/if_mgb.c index 3f7a9d1a9dbb..6d94f96c09db 100644 --- a/sys/dev/mgb/if_mgb.c +++ b/sys/dev/mgb/if_mgb.c @@ -34,9 +34,9 @@ __FBSDID("$FreeBSD$"); * Microchip LAN7430/LAN7431 PCIe to Gigabit Ethernet Controller driver. * * Product information: - * LAN7430 https://www.microchip.com/wwwproducts/en/LAN7430 + * LAN7430 https://www.microchip.com/en-us/product/LAN7430 * - Integrated IEEE 802.3 compliant PHY - * LAN7431 https://www.microchip.com/wwwproducts/en/LAN7431 + * LAN7431 https://www.microchip.com/en-us/product/LAN7431 * - RGMII Interface * * This driver uses the iflib interface and the default 'ukphy' PHY driver. @@ -206,7 +206,7 @@ static driver_t mgb_driver = { "mgb", mgb_methods, sizeof(struct mgb_softc) }; -devclass_t mgb_devclass; +static devclass_t mgb_devclass; DRIVER_MODULE(mgb, pci, mgb_driver, mgb_devclass, NULL, NULL); IFLIB_PNP_INFO(pci, mgb, mgb_vendor_info_array); MODULE_VERSION(mgb, 1); @@ -270,7 +270,7 @@ static driver_t mgb_iflib_driver = { "mgb", mgb_iflib_methods, sizeof(struct mgb_softc) }; -struct if_txrx mgb_txrx = { +static struct if_txrx mgb_txrx = { .ift_txd_encap = mgb_isc_txd_encap, .ift_txd_flush = mgb_isc_txd_flush, .ift_txd_credits_update = mgb_isc_txd_credits_update, @@ -282,7 +282,7 @@ struct if_txrx mgb_txrx = { .ift_legacy_intr = mgb_legacy_intr }; -struct if_shared_ctx mgb_sctx_init = { +static struct if_shared_ctx mgb_sctx_init = { .isc_magic = IFLIB_MAGIC, .isc_q_align = PAGE_SIZE, @@ -397,8 +397,7 @@ mgb_attach_pre(if_ctx_t ctx) goto fail; } - switch (pci_get_device(sc->dev)) - { + switch (pci_get_device(sc->dev)) { case MGB_LAN7430_DEVICE_ID: phyaddr = 1; break; @@ -556,7 +555,7 @@ mgb_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int ntxqs, rdata->head_wb = (uint32_t *) vaddrs[q * ntxqs + 1]; rdata->head_wb_bus_addr = paddrs[q * ntxqs + 1]; } - return 0; + return (0); } static int @@ -580,7 +579,7 @@ mgb_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int nrxqs, rdata->head_wb = (uint32_t *) vaddrs[q * nrxqs + 1]; rdata->head_wb_bus_addr = paddrs[q * nrxqs + 1]; } - return 0; + return (0); } static void @@ -611,11 +610,14 @@ mgb_init(if_ctx_t ctx) CSR_CLEAR_REG(sc, MGB_RFE_CTL, MGB_RFE_ALLOW_PERFECT_FILTER); CSR_UPDATE_REG(sc, MGB_RFE_CTL, MGB_RFE_ALLOW_BROADCAST | - MGB_RFE_ALLOW_UNICAST | + MGB_RFE_ALLOW_MULTICAST | MGB_RFE_ALLOW_UNICAST); error = mii_mediachg(miid); - KASSERT(!error, ("mii_mediachg returned: %d", error)); + /* Not much we can do if this fails. */ + if (error) + device_printf(sc->dev, "%s: mii_mediachg returned %d", __func__, + error); } #ifdef DEBUG @@ -691,7 +693,6 @@ mgb_dump_some_stats(struct mgb_softc *sc) i, sc->tx_ring_data.ring[i].addr.high, i, sc->tx_ring_data.ring[i].sts); device_printf(sc->dev, "==== DUMP_TX_DMA_RAM ====\n"); - int i; CSR_WRITE_REG(sc, 0x24, 0xF); // DP_SEL & TX_RAM_0 for (i = 0; i < 128; i++) { CSR_WRITE_REG(sc, 0x2C, i); // DP_ADDR @@ -778,25 +779,15 @@ mgb_admin_intr(void *xsc) intr_en = CSR_READ_REG(sc, MGB_INTR_ENBL_SET); intr_sts &= intr_en; - /* - * NOTE: Debugging printfs here - * will likely cause interrupt test failure. - */ - /* TODO: shouldn't continue if suspended */ if ((intr_sts & MGB_INTR_STS_ANY) == 0) - { - device_printf(sc->dev, "non-mgb interrupt triggered.\n"); - return (FILTER_SCHEDULE_THREAD); - } - if ((intr_sts & MGB_INTR_STS_TEST) != 0) - { + return (FILTER_STRAY); + if ((intr_sts & MGB_INTR_STS_TEST) != 0) { sc->isr_test_flag = true; CSR_WRITE_REG(sc, MGB_INTR_STS, MGB_INTR_STS_TEST); return (FILTER_HANDLED); } - if ((intr_sts & MGB_INTR_STS_RX_ANY) != 0) - { + if ((intr_sts & MGB_INTR_STS_RX_ANY) != 0) { for (qidx = 0; qidx < scctx->isc_nrxqsets; qidx++) { if ((intr_sts & MGB_INTR_STS_RX(qidx))){ iflib_rx_intr_deferred(sc->ctx, qidx); @@ -805,8 +796,7 @@ mgb_admin_intr(void *xsc) return (FILTER_HANDLED); } /* XXX: TX interrupts should not occur */ - if ((intr_sts & MGB_INTR_STS_TX_ANY) != 0) - { + if ((intr_sts & MGB_INTR_STS_TX_ANY) != 0) { for (qidx = 0; qidx < scctx->isc_ntxqsets; qidx++) { if ((intr_sts & MGB_INTR_STS_RX(qidx))) { /* clear the interrupt sts and run handler */ @@ -957,7 +947,7 @@ mgb_intr_test(struct mgb_softc *sc) MGB_INTR_STS_ANY | MGB_INTR_STS_TEST); CSR_WRITE_REG(sc, MGB_INTR_SET, MGB_INTR_STS_TEST); if (sc->isr_test_flag) - return true; + return (true); for (i = 0; i < MGB_TIMEOUT; i++) { DELAY(10); if (sc->isr_test_flag) @@ -965,7 +955,7 @@ mgb_intr_test(struct mgb_softc *sc) } CSR_WRITE_REG(sc, MGB_INTR_ENBL_CLR, MGB_INTR_STS_TEST); CSR_WRITE_REG(sc, MGB_INTR_STS, MGB_INTR_STS_TEST); - return sc->isr_test_flag; + return (sc->isr_test_flag); } static int @@ -1052,7 +1042,7 @@ mgb_isc_txd_credits_update(void *xsc, uint16_t txqid, bool clear) while (*(rdata->head_wb) != rdata->last_head) { if (!clear) - return 1; + return (1); txd = &rdata->ring[rdata->last_head]; memset(txd, 0, sizeof(struct mgb_ring_desc)); @@ -1077,8 +1067,7 @@ mgb_isc_rxd_available(void *xsc, uint16_t rxqid, qidx_t idx, qidx_t budget) rdata = &sc->rx_ring_data; scctx = iflib_get_softc_ctx(sc->ctx); - for (; idx != *(rdata->head_wb); - idx = MGB_NEXT_RING_IDX(idx)) { + for (; idx != *(rdata->head_wb); idx = MGB_NEXT_RING_IDX(idx)) { avail++; /* XXX: Could verify desc is device owned here */ if (avail == budget) @@ -1113,21 +1102,21 @@ mgb_isc_rxd_pkt_get(void *xsc, if_rxd_info_t ri) device_printf(sc->dev, "Tried to read descriptor ... " "found that it's owned by the driver\n"); - return EINVAL; + return (EINVAL); } if ((rxd.ctl & MGB_RX_DESC_CTL_FS) == 0) { device_printf(sc->dev, "Tried to read descriptor ... " "found that FS is not set.\n"); device_printf(sc->dev, "Tried to read descriptor ... that it FS is not set.\n"); - return EINVAL; + return (EINVAL); } /* XXX: Multi-packet support */ if ((rxd.ctl & MGB_RX_DESC_CTL_LS) == 0) { device_printf(sc->dev, "Tried to read descriptor ... " "found that LS is not set. (Multi-buffer packets not yet supported)\n"); - return EINVAL; + return (EINVAL); } ri->iri_frags[0].irf_flid = 0; ri->iri_frags[0].irf_idx = rdata->last_head; @@ -1209,10 +1198,10 @@ mgb_test_bar(struct mgb_softc *sc) rev = id_rev & 0xFFFF; if (dev_id == MGB_LAN7430_DEVICE_ID || dev_id == MGB_LAN7431_DEVICE_ID) { - return 0; + return (0); } else { device_printf(sc->dev, "ID check failed.\n"); - return ENXIO; + return (ENXIO); } } @@ -1226,7 +1215,7 @@ mgb_alloc_regs(struct mgb_softc *sc) sc->regs = bus_alloc_resource_any(sc->dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); if (sc->regs == NULL) - return ENXIO; + return (ENXIO); return (0); } @@ -1241,7 +1230,7 @@ mgb_release_regs(struct mgb_softc *sc) rman_get_rid(sc->regs), sc->regs); sc->regs = NULL; pci_disable_busmaster(sc->dev); - return error; + return (error); } static int @@ -1261,7 +1250,7 @@ mgb_dma_init(struct mgb_softc *sc) goto fail; fail: - return error; + return (error); } static int @@ -1391,7 +1380,7 @@ mgb_dma_tx_ring_init(struct mgb_softc *sc, int channel) DMAC_START))) device_printf(sc->dev, "Failed to start TX DMAC.\n"); fail: - return error; + return (error); } static int @@ -1415,7 +1404,7 @@ mgb_dmac_control(struct mgb_softc *sc, int start, int channel, */ error = mgb_dmac_control(sc, start, channel, DMAC_STOP); if (error != 0) - return error; + return (error); CSR_WRITE_REG(sc, MGB_DMAC_CMD, MGB_DMAC_CMD_START(start, channel)); break; @@ -1428,7 +1417,7 @@ mgb_dmac_control(struct mgb_softc *sc, int start, int channel, MGB_DMAC_CMD_START(start, channel)); break; } - return error; + return (error); } static int @@ -1439,13 +1428,13 @@ mgb_fct_control(struct mgb_softc *sc, int reg, int channel, switch (cmd) { case FCT_RESET: CSR_WRITE_REG(sc, reg, MGB_FCT_RESET(channel)); - return mgb_wait_for_bits(sc, reg, 0, MGB_FCT_RESET(channel)); + return (mgb_wait_for_bits(sc, reg, 0, MGB_FCT_RESET(channel))); case FCT_ENABLE: CSR_WRITE_REG(sc, reg, MGB_FCT_ENBL(channel)); return (0); case FCT_DISABLE: CSR_WRITE_REG(sc, reg, MGB_FCT_DSBL(channel)); - return mgb_wait_for_bits(sc, reg, 0, MGB_FCT_ENBL(channel)); + return (mgb_wait_for_bits(sc, reg, 0, MGB_FCT_ENBL(channel))); } } @@ -1484,7 +1473,7 @@ mgb_hw_init(struct mgb_softc *sc) goto fail; fail: - return error; + return (error); } static int @@ -1507,7 +1496,7 @@ mgb_mac_init(struct mgb_softc *sc) CSR_UPDATE_REG(sc, MGB_MAC_TX, MGB_MAC_ENBL); CSR_UPDATE_REG(sc, MGB_MAC_RX, MGB_MAC_ENBL); - return MGB_STS_OK; + return (MGB_STS_OK); } static int @@ -1517,7 +1506,7 @@ mgb_phy_reset(struct mgb_softc *sc) CSR_UPDATE_BYTE(sc, MGB_PMT_CTL, MGB_PHY_RESET); if (mgb_wait_for_bits(sc, MGB_PMT_CTL, 0, MGB_PHY_RESET) == MGB_STS_TIMEOUT) - return MGB_STS_TIMEOUT; + return (MGB_STS_TIMEOUT); return (mgb_wait_for_bits(sc, MGB_PMT_CTL, MGB_PHY_READY, 0)); } @@ -1542,12 +1531,11 @@ mgb_wait_for_bits(struct mgb_softc *sc, int reg, int set_bits, int clear_bits) */ DELAY(100); val = CSR_READ_REG(sc, reg); - if ((val & set_bits) == set_bits && - (val & clear_bits) == 0) - return MGB_STS_OK; + if ((val & set_bits) == set_bits && (val & clear_bits) == 0) + return (MGB_STS_OK); } while (i++ < MGB_TIMEOUT); - return MGB_STS_TIMEOUT; + return (MGB_STS_TIMEOUT); } static void @@ -1568,14 +1556,14 @@ mgb_miibus_readreg(device_t dev, int phy, int reg) if (mgb_wait_for_bits(sc, MGB_MII_ACCESS, 0, MGB_MII_BUSY) == MGB_STS_TIMEOUT) - return EIO; + return (EIO); mii_access = (phy & MGB_MII_PHY_ADDR_MASK) << MGB_MII_PHY_ADDR_SHIFT; mii_access |= (reg & MGB_MII_REG_ADDR_MASK) << MGB_MII_REG_ADDR_SHIFT; mii_access |= MGB_MII_BUSY | MGB_MII_READ; CSR_WRITE_REG(sc, MGB_MII_ACCESS, mii_access); if (mgb_wait_for_bits(sc, MGB_MII_ACCESS, 0, MGB_MII_BUSY) == MGB_STS_TIMEOUT) - return EIO; + return (EIO); return (CSR_READ_2_BYTES(sc, MGB_MII_DATA)); } @@ -1587,9 +1575,9 @@ mgb_miibus_writereg(device_t dev, int phy, int reg, int data) sc = iflib_get_softc(device_get_softc(dev)); - if (mgb_wait_for_bits(sc, MGB_MII_ACCESS, - 0, MGB_MII_BUSY) == MGB_STS_TIMEOUT) - return EIO; + if (mgb_wait_for_bits(sc, MGB_MII_ACCESS, 0, MGB_MII_BUSY) == + MGB_STS_TIMEOUT) + return (EIO); mii_access = (phy & MGB_MII_PHY_ADDR_MASK) << MGB_MII_PHY_ADDR_SHIFT; mii_access |= (reg & MGB_MII_REG_ADDR_MASK) << MGB_MII_REG_ADDR_SHIFT; mii_access |= MGB_MII_BUSY | MGB_MII_WRITE; @@ -1597,8 +1585,8 @@ mgb_miibus_writereg(device_t dev, int phy, int reg, int data) CSR_WRITE_REG(sc, MGB_MII_ACCESS, mii_access); if (mgb_wait_for_bits(sc, MGB_MII_ACCESS, 0, MGB_MII_BUSY) == MGB_STS_TIMEOUT) - return EIO; - return 0; + return (EIO); + return (0); } /* XXX: May need to lock these up */ From nobody Tue Oct 5 19:04:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5CC1117EE3E3; Tue, 5 Oct 2021 19:04: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 4HP6Sl28KCz4l8F; Tue, 5 Oct 2021 19:04: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 2B233121D3; Tue, 5 Oct 2021 19:04: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 195J47P4062168; Tue, 5 Oct 2021 19:04:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195J479l062167; Tue, 5 Oct 2021 19:04:07 GMT (envelope-from git) Date: Tue, 5 Oct 2021 19:04:07 GMT Message-Id: <202110051904.195J479l062167@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 8f9be1eed11c - main - cam(4): Improve XPT_DEV_MATCH List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8f9be1eed11c27c66386c3d72cd6c6aef597fa0d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=8f9be1eed11c27c66386c3d72cd6c6aef597fa0d commit 8f9be1eed11c27c66386c3d72cd6c6aef597fa0d Author: Alexander Motin AuthorDate: 2021-10-05 18:54:03 +0000 Commit: Alexander Motin CommitDate: 2021-10-05 18:54:03 +0000 cam(4): Improve XPT_DEV_MATCH Remove *_MATCH_NONE enums, making no sense and so never used. Make *_MATCH_ANY enums 0 (no any match flags set), previously used by *_MATCH_NONE. Bump CAM_VERSION to 0x1a reflecting those changes and add compat shims. When traversing through buses and devices do not descend if we can already see that requested pattern does not match the bus or device. It allows to save significant amount of time on system with thousands of disks when doing limited searches. Reviewed by: imp MFC after: 2 weeks Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D32304 --- sys/cam/cam_ccb.h | 11 +++----- sys/cam/cam_compat.c | 50 ++++++++++++++++++++++++++++++++-- sys/cam/cam_compat.h | 7 +++++ sys/cam/cam_xpt.c | 76 +++++++++++++--------------------------------------- 4 files changed, 78 insertions(+), 66 deletions(-) diff --git a/sys/cam/cam_ccb.h b/sys/cam/cam_ccb.h index 5b5e24904996..1ae310d399b7 100644 --- a/sys/cam/cam_ccb.h +++ b/sys/cam/cam_ccb.h @@ -422,13 +422,12 @@ struct ccb_getdevlist { }; typedef enum { - PERIPH_MATCH_NONE = 0x000, + PERIPH_MATCH_ANY = 0x000, PERIPH_MATCH_PATH = 0x001, PERIPH_MATCH_TARGET = 0x002, PERIPH_MATCH_LUN = 0x004, PERIPH_MATCH_NAME = 0x008, PERIPH_MATCH_UNIT = 0x010, - PERIPH_MATCH_ANY = 0x01f } periph_pattern_flags; struct periph_match_pattern { @@ -441,13 +440,12 @@ struct periph_match_pattern { }; typedef enum { - DEV_MATCH_NONE = 0x000, + DEV_MATCH_ANY = 0x000, DEV_MATCH_PATH = 0x001, DEV_MATCH_TARGET = 0x002, DEV_MATCH_LUN = 0x004, DEV_MATCH_INQUIRY = 0x008, DEV_MATCH_DEVID = 0x010, - DEV_MATCH_ANY = 0x00f } dev_pattern_flags; struct device_id_match_pattern { @@ -467,12 +465,11 @@ struct device_match_pattern { }; typedef enum { - BUS_MATCH_NONE = 0x000, + BUS_MATCH_ANY = 0x000, BUS_MATCH_PATH = 0x001, BUS_MATCH_NAME = 0x002, BUS_MATCH_UNIT = 0x004, BUS_MATCH_BUS_ID = 0x008, - BUS_MATCH_ANY = 0x00f } bus_pattern_flags; struct bus_match_pattern { @@ -594,7 +591,7 @@ struct ccb_dev_match { /* * Definitions for the path inquiry CCB fields. */ -#define CAM_VERSION 0x19 /* Hex value for current version */ +#define CAM_VERSION 0x1a /* Hex value for current version */ typedef enum { PI_MDP_ABLE = 0x80, /* Supports MDP message */ diff --git a/sys/cam/cam_compat.c b/sys/cam/cam_compat.c index 4c89072fa389..6893402a3d9c 100644 --- a/sys/cam/cam_compat.c +++ b/sys/cam/cam_compat.c @@ -58,6 +58,8 @@ static int cam_compat_handle_0x17(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td, d_ioctl_t *cbfnp); static int cam_compat_handle_0x18(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td, d_ioctl_t *cbfnp); +static int cam_compat_handle_0x19(struct cdev *dev, u_long cmd, caddr_t addr, + int flag, struct thread *td, d_ioctl_t *cbfnp); static int cam_compat_translate_dev_match_0x18(union ccb *ccb); int @@ -108,6 +110,22 @@ cam_compat_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, cmd = CAMGETPASSTHRU; error = cam_compat_handle_0x18(dev, cmd, addr, flag, td, cbfnp); break; + case CAMIOCOMMAND_0x19: + cmd = CAMIOCOMMAND; + error = cam_compat_handle_0x19(dev, cmd, addr, flag, td, cbfnp); + break; + case CAMGETPASSTHRU_0x19: + cmd = CAMGETPASSTHRU; + error = cam_compat_handle_0x19(dev, cmd, addr, flag, td, cbfnp); + break; + case CAMIOQUEUE_0x19: + cmd = CAMIOQUEUE; + error = cam_compat_handle_0x19(dev, cmd, addr, flag, td, cbfnp); + break; + case CAMIOGET_0x19: + cmd = CAMIOGET; + error = cam_compat_handle_0x19(dev, cmd, addr, flag, td, cbfnp); + break; default: error = ENOTTY; } @@ -170,7 +188,7 @@ cam_compat_handle_0x17(struct cdev *dev, u_long cmd, caddr_t addr, int flag, bcopy(ccbb17, ccbb, CAM_0X17_DATA_LEN); } - error = (cbfnp)(dev, cmd, (caddr_t)ccb, flag, td); + error = cam_compat_handle_0x19(dev, cmd, (caddr_t)ccb, flag, td, cbfnp); hdr17->pinfo = hdr->pinfo; hdr17->xpt_links = hdr->xpt_links; @@ -310,7 +328,7 @@ cam_compat_handle_0x18(struct cdev *dev, u_long cmd, caddr_t addr, int flag, bcopy(ccbb18, ccbb, CAM_0X18_DATA_LEN); } - error = (cbfnp)(dev, cmd, (caddr_t)ccb, flag, td); + error = cam_compat_handle_0x19(dev, cmd, (caddr_t)ccb, flag, td, cbfnp); hdr18->pinfo = hdr->pinfo; hdr18->xpt_links = hdr->xpt_links; @@ -420,3 +438,31 @@ cam_compat_translate_dev_match_0x18(union ccb *ccb) return (0); } + +static int +cam_compat_handle_0x19(struct cdev *dev, u_long cmd, caddr_t addr, int flag, + struct thread *td, d_ioctl_t *cbfnp) +{ + union ccb *ccb = (union ccb *)addr; + struct cam_periph_map_info mapinfo; + + if (cmd == CAMIOCOMMAND && ccb->ccb_h.func_code == XPT_DEV_MATCH) { + bzero(&mapinfo, sizeof(mapinfo)); + cam_periph_mapmem(ccb, &mapinfo, maxphys); + for (int i = 0; i < ccb->cdm.num_patterns; i++) { + struct dev_match_pattern *p = &ccb->cdm.patterns[i]; + + if (p->type == DEV_MATCH_BUS && + p->pattern.bus_pattern.flags == 0x00f) + p->pattern.bus_pattern.flags = BUS_MATCH_ANY; + if (p->type == DEV_MATCH_DEVICE && + p->pattern.device_pattern.flags == 0x00f) + p->pattern.device_pattern.flags = DEV_MATCH_ANY; + if (p->type == DEV_MATCH_PERIPH && + p->pattern.periph_pattern.flags == 0x01f) + p->pattern.periph_pattern.flags = PERIPH_MATCH_ANY; + } + cam_periph_unmapmem(ccb, &mapinfo); + } + return ((cbfnp)(dev, cmd, addr, flag, td)); +} diff --git a/sys/cam/cam_compat.h b/sys/cam/cam_compat.h index dd728d86839e..9a1996d230ce 100644 --- a/sys/cam/cam_compat.h +++ b/sys/cam/cam_compat.h @@ -220,5 +220,12 @@ struct dev_match_result_0x18 { #define CAMIOCOMMAND_0x18 _IOC(IOC_INOUT, CAM_VERSION_0x18, 2, CAM_0X18_LEN) #define CAMGETPASSTHRU_0x18 _IOC(IOC_INOUT, CAM_VERSION_0x18, 3, CAM_0X18_LEN) +/* Version 0x19 compatibility */ +#define CAM_VERSION_0x19 0x19 +#define CAMIOCOMMAND_0x19 _IOWR(CAM_VERSION_0x19, 2, union ccb) +#define CAMGETPASSTHRU_0x19 _IOWR(CAM_VERSION_0x19, 3, union ccb) +#define CAMIOQUEUE_0x19 _IO(CAM_VERSION_0x19, 4) +#define CAMIOGET_0x19 _IO(CAM_VERSION_0x19, 5) + #endif #endif diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c index e228f0967f0e..d9ecabefe044 100644 --- a/sys/cam/cam_xpt.c +++ b/sys/cam/cam_xpt.c @@ -1386,6 +1386,8 @@ xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, for (i = 0; i < num_patterns; i++) { struct bus_match_pattern *cur_pattern; + struct device_match_pattern *dp = &patterns[i].pattern.device_pattern; + struct periph_match_pattern *pp = &patterns[i].pattern.periph_pattern; /* * If the pattern in question isn't for a bus node, we @@ -1394,6 +1396,14 @@ xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, * tree, since the user wants to match against lower-level * EDT elements. */ + if (patterns[i].type == DEV_MATCH_DEVICE && + (dp->flags & DEV_MATCH_PATH) != 0 && + dp->path_id != bus->path_id) + continue; + if (patterns[i].type == DEV_MATCH_PERIPH && + (pp->flags & PERIPH_MATCH_PATH) != 0 && + pp->path_id != bus->path_id) + continue; if (patterns[i].type != DEV_MATCH_BUS) { if ((retval & DM_RET_ACTION_MASK) == DM_RET_NONE) retval |= DM_RET_DESCEND; @@ -1402,28 +1412,6 @@ xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, cur_pattern = &patterns[i].pattern.bus_pattern; - /* - * If they want to match any bus node, we give them any - * device node. - */ - if (cur_pattern->flags == BUS_MATCH_ANY) { - /* set the copy flag */ - retval |= DM_RET_COPY; - - /* - * If we've already decided on an action, go ahead - * and return. - */ - if ((retval & DM_RET_ACTION_MASK) != DM_RET_NONE) - return(retval); - } - - /* - * Not sure why someone would do this... - */ - if (cur_pattern->flags == BUS_MATCH_NONE) - continue; - if (((cur_pattern->flags & BUS_MATCH_PATH) != 0) && (cur_pattern->path_id != bus->path_id)) continue; @@ -1499,11 +1487,20 @@ xptdevicematch(struct dev_match_pattern *patterns, u_int num_patterns, for (i = 0; i < num_patterns; i++) { struct device_match_pattern *cur_pattern; struct scsi_vpd_device_id *device_id_page; + struct periph_match_pattern *pp = &patterns[i].pattern.periph_pattern; /* * If the pattern in question isn't for a device node, we * aren't interested. */ + if (patterns[i].type == DEV_MATCH_PERIPH && + (pp->flags & PERIPH_MATCH_TARGET) != 0 && + pp->target_id != device->target->target_id) + continue; + if (patterns[i].type == DEV_MATCH_PERIPH && + (pp->flags & PERIPH_MATCH_LUN) != 0 && + pp->target_lun != device->lun_id) + continue; if (patterns[i].type != DEV_MATCH_DEVICE) { if ((patterns[i].type == DEV_MATCH_PERIPH) && ((retval & DM_RET_ACTION_MASK) == DM_RET_NONE)) @@ -1518,19 +1515,6 @@ xptdevicematch(struct dev_match_pattern *patterns, u_int num_patterns, == (DEV_MATCH_INQUIRY|DEV_MATCH_DEVID)) return(DM_RET_ERROR); - /* - * If they want to match any device node, we give them any - * device node. - */ - if (cur_pattern->flags == DEV_MATCH_ANY) - goto copy_dev_node; - - /* - * Not sure why someone would do this... - */ - if (cur_pattern->flags == DEV_MATCH_NONE) - continue; - if (((cur_pattern->flags & DEV_MATCH_PATH) != 0) && (cur_pattern->path_id != device->target->bus->path_id)) continue; @@ -1560,7 +1544,6 @@ xptdevicematch(struct dev_match_pattern *patterns, u_int num_patterns, cur_pattern->data.devid_pat.id_len) != 0)) continue; -copy_dev_node: /* * If we get to this point, the user definitely wants * information on this device. So tell the caller to copy @@ -1635,27 +1618,6 @@ xptperiphmatch(struct dev_match_pattern *patterns, u_int num_patterns, cur_pattern = &patterns[i].pattern.periph_pattern; - /* - * If they want to match on anything, then we will do so. - */ - if (cur_pattern->flags == PERIPH_MATCH_ANY) { - /* set the copy flag */ - retval |= DM_RET_COPY; - - /* - * We've already set the return action to stop, - * since there are no nodes below peripherals in - * the tree. - */ - return(retval); - } - - /* - * Not sure why someone would do this... - */ - if (cur_pattern->flags == PERIPH_MATCH_NONE) - continue; - if (((cur_pattern->flags & PERIPH_MATCH_PATH) != 0) && (cur_pattern->path_id != periph->path->bus->path_id)) continue; From nobody Tue Oct 5 19:04:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 44E3F17EE173; Tue, 5 Oct 2021 19:04: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 4HP6Sm4nM9z4l6D; Tue, 5 Oct 2021 19:04: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 6CF94121D4; Tue, 5 Oct 2021 19:04: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 195J48P1062192; Tue, 5 Oct 2021 19:04:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195J48iO062191; Tue, 5 Oct 2021 19:04:08 GMT (envelope-from git) Date: Tue, 5 Oct 2021 19:04:08 GMT Message-Id: <202110051904.195J48iO062191@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 730ea72c706e - main - cam(4): Limit search for disks in SES enclosure by single bus List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 730ea72c706ef8e025616772cfd86fd89ed3d42e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=730ea72c706ef8e025616772cfd86fd89ed3d42e commit 730ea72c706ef8e025616772cfd86fd89ed3d42e Author: Alexander Motin AuthorDate: 2021-10-05 19:01:16 +0000 Commit: Alexander Motin CommitDate: 2021-10-05 19:01:16 +0000 cam(4): Limit search for disks in SES enclosure by single bus At least for SAS that we only support now disks are typically connected to the same bus as the enclosure. Limiting the search scope makes it much faster on systems with multiple buses and thousands of disks. Reviewed by: imp MFC after: 2 weeks Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D32305 --- sys/cam/scsi/scsi_enc_ses.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c index f4f1c4a23516..39d99fd23eb9 100644 --- a/sys/cam/scsi/scsi_enc_ses.c +++ b/sys/cam/scsi/scsi_enc_ses.c @@ -374,6 +374,10 @@ typedef struct ses_softc { ses_control_reqlist_t ses_pending_requests; } ses_softc_t; +static int ses_search_globally = 0; +SYSCTL_INT(_kern_cam_enc, OID_AUTO, search_globally, CTLFLAG_RWTUN, + &ses_search_globally, 0, "Search for disks on other buses"); + /** * \brief Reset a SES iterator to just before the first element * in the configuration. @@ -890,6 +894,10 @@ ses_path_iter_devid_callback(enc_softc_t *enc, enc_element_t *elem, + devid->length; memcpy(device_pattern->data.devid_pat.id, devid, device_pattern->data.devid_pat.id_len); + if (!ses_search_globally) { + device_pattern->flags |= DEV_MATCH_PATH; + device_pattern->path_id = xpt_path_path_id(enc->periph->path); + } memset(&cdm, 0, sizeof(cdm)); if (xpt_create_path(&cdm.ccb_h.path, /*periph*/NULL, From nobody Tue Oct 5 19:14:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3DE839F010A; Tue, 5 Oct 2021 19:14:34 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (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 4HP6hp1DG5z4mrx; Tue, 5 Oct 2021 19:14:34 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-oi1-f171.google.com with SMTP id w190so671527oif.5; Tue, 05 Oct 2021 12:14:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=wKi+L1BNfZfv6c1tgHDHQ4wzU6rZvQgHb+lN31FoKU8=; b=b/fZcNauPpsJ7VzF7BXC35Xz8tRiHORPiVKaGaxid9F9sZbFic9DD56/nz73rA8zEy 4wfuBELApwpFBuHKup4l/aRmYULG7WZ/z5Js1jeEyw55ZAd/lVgOuicxRxbxvnetIiE1 zc2lResxSiumOjHi6sZkUsT0GDWz24StnNUwFj8knP6pmSl3zY2UF+NmG+qbDR7tkxbA 9CdZTJuANS7n41w4CIU5d/90JyZvKJSw3U24zKIbr8EE/2fQusK+ylc7AP99hITYQ2sa NfFPxZ85v6QICDG7mr/d0Nyoed+ju23yjWP59cZ/DxLrj7CvP0sGeDUKMuolTE7Z/h5o hkZg== X-Gm-Message-State: AOAM531WI9lYXGPxGNMMAk9dWXruioHBUgfXnc9UziT/s6cwzCLLtl2j 3co8sDWj2b6/Lh0aQdd0pwCAiGKznTSj54xri0A7F1Bl X-Google-Smtp-Source: ABdhPJwVghseK9Wpn6/qemrX/dVThzOrqR7PGaW9R/HlExfFeNuHO1XjIzdXtfmAIDhQ+VRmPQ6jRvX1+xI542KEheA= X-Received: by 2002:aca:1b09:: with SMTP id b9mr3972399oib.55.1633461267075; Tue, 05 Oct 2021 12:14:27 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110051904.195J48iO062191@gitrepo.freebsd.org> In-Reply-To: <202110051904.195J48iO062191@gitrepo.freebsd.org> From: Alan Somers Date: Tue, 5 Oct 2021 13:14:16 -0600 Message-ID: Subject: Re: git: 730ea72c706e - main - cam(4): Limit search for disks in SES enclosure by single bus To: Alexander Motin Cc: src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HP6hp1DG5z4mrx X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Tue, Oct 5, 2021 at 1:04 PM Alexander Motin wrote: > > The branch main has been updated by mav: > > URL: https://cgit.FreeBSD.org/src/commit/?id=730ea72c706ef8e025616772cfd86fd89ed3d42e > > commit 730ea72c706ef8e025616772cfd86fd89ed3d42e > Author: Alexander Motin > AuthorDate: 2021-10-05 19:01:16 +0000 > Commit: Alexander Motin > CommitDate: 2021-10-05 19:01:16 +0000 > > cam(4): Limit search for disks in SES enclosure by single bus > > At least for SAS that we only support now disks are typically > connected to the same bus as the enclosure. Limiting the search > scope makes it much faster on systems with multiple buses and > thousands of disks. > > Reviewed by: imp > MFC after: 2 weeks > Sponsored by: iXsystems, Inc. > Differential Revision: https://reviews.freebsd.org/D32305 > --- > sys/cam/scsi/scsi_enc_ses.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c Sounds juicy. Do you have any benchmarks? From nobody Tue Oct 5 19:41:55 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EA09F9F3C3D; Tue, 5 Oct 2021 19:41:58 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com [IPv6:2607:f8b0:4864:20::736]) (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 4HP7JQ63NNz4r4v; Tue, 5 Oct 2021 19:41:58 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: by mail-qk1-x736.google.com with SMTP id 72so128594qkk.7; Tue, 05 Oct 2021 12:41:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=WKMj1o76IXKbQG5vUYLB/+XdG85qh/hv+Q2dEK1yJUg=; b=ofuogPir++tjKblTCclIXHAMlm8sWfl6M+WbFzoqlVz5cNcK49mwcuC1NB8Qs0tbC7 bxSfXPostSUQrQaAj1IxBigWdVPnqtIiVRq4R/0UwCPAWhLEsUiCEpjop8aKdc5XD1wl LnxMRYECikinWobSKaX2/siwR+UU0a1WJxKoijNcjY+1A8uvQSL8poG++17/UmBegRIE fSJzDFPvqD/N1vTglNX7S0+YuasgVdqLL51UCvHdxk/KFjAVEuJxrrrGTyiJlU+FaOKW HjWUOleT8s39FZHb6og9+/3IW2lzXkJL46wujEVtYrp6f7+gNx2xw6FmvSzg0qsVKkhB +/mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=WKMj1o76IXKbQG5vUYLB/+XdG85qh/hv+Q2dEK1yJUg=; b=2fKjisUr810KskAnJRXzBcpF6Y/FQ/AJNQriJPxEjh7nzlxqycrV5byGq6Cbid4ImN qhO86pq0dKyE6Px6s+BM3WRv4ms9ssXVedrNvKpXAtOU8ru+vAleyCqM735RQKnOxdMx fj3TuxlMUq/ET26qjgWdg9mx6YVfV1ktSsWdeUP8+BhWHncYArPPtW3q1WhcllsH8pGE Y9FLFGOGS09l++8IvAVPMbulfPc7RDnojpXrLp6MaSa9gdQUSbuej8eEqQnC71UW8Qtb /ljM5PdZ0xo/sFgo3NO9vt9gFwHh6GJVSigmM2nZYRYANl83lQKsi59/1GL4SbWmayfL idiA== X-Gm-Message-State: AOAM533Ag70gi/rxR5Aoq6hx4iWrF6r4uTC7irNqctIglqU7O5fcl+jB rEvK3s33HigX1UXv96KcbWZvYhLbFGA= X-Google-Smtp-Source: ABdhPJzp2beuFT1qRZvN0Uun2h5OUhJ1pNEDgIfScdgvtsuz9SVyCxiPVMsV2OWZuOLa4c/0sdweyA== X-Received: by 2002:a37:2d46:: with SMTP id t67mr16033818qkh.84.1633462917975; Tue, 05 Oct 2021 12:41:57 -0700 (PDT) Received: from mavoffice.ixsystems.com ([38.32.73.2]) by smtp.gmail.com with ESMTPSA id b18sm934725qtq.62.2021.10.05.12.41.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Oct 2021 12:41:56 -0700 (PDT) Sender: Alexander Motin Subject: Re: git: 730ea72c706e - main - cam(4): Limit search for disks in SES enclosure by single bus To: Alan Somers Cc: src-committers , dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202110051904.195J48iO062191@gitrepo.freebsd.org> From: Alexander Motin Message-ID: Date: Tue, 5 Oct 2021 15:41:55 -0400 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4HP7JQ63NNz4r4v X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On 05.10.2021 15:14, Alan Somers wrote: > On Tue, Oct 5, 2021 at 1:04 PM Alexander Motin wrote: >> >> The branch main has been updated by mav: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=730ea72c706ef8e025616772cfd86fd89ed3d42e >> >> commit 730ea72c706ef8e025616772cfd86fd89ed3d42e >> Author: Alexander Motin >> AuthorDate: 2021-10-05 19:01:16 +0000 >> Commit: Alexander Motin >> CommitDate: 2021-10-05 19:01:16 +0000 >> >> cam(4): Limit search for disks in SES enclosure by single bus >> >> At least for SAS that we only support now disks are typically >> connected to the same bus as the enclosure. Limiting the search >> scope makes it much faster on systems with multiple buses and >> thousands of disks. >> >> Reviewed by: imp >> MFC after: 2 weeks >> Sponsored by: iXsystems, Inc. >> Differential Revision: https://reviews.freebsd.org/D32305 >> --- >> sys/cam/scsi/scsi_enc_ses.c | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c > > > Sounds juicy. Do you have any benchmarks? I don't think we've benchmarked that system with payload yet, if that is what you mean, polishing usability. But I don't think there can be too much interesting, since big speeds don't require so many HDDs these days, but much smaller number of SSDs instead. This particular system is about capacity -- ~20PiB raw on 1248 disks in one ZFS pool. :) -- Alexander Motin From nobody Tue Oct 5 19:48:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 064329F5DF5; Tue, 5 Oct 2021 19:48:39 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (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 4HP7S66SyFz4sFp; Tue, 5 Oct 2021 19:48:38 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-oi1-f171.google.com with SMTP id a3so792010oid.6; Tue, 05 Oct 2021 12:48:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9dLaoF7wO7yb0F5ctYjRn2FuWRqUaXfiU3GRRWIA/Bc=; b=nOjXgOe+OO0g+u+phsRB+fn2gq8ZpAgFtuL4WF1eUU4BbVJW248avu3Ytl76VPmib4 ekAQok/9AT68Eem5YPSDRJ6S/U2BsRKnmWZIWnnegFfWLS1ClIoJZWeQ4+72tbV7gEKA bdsmpFUiPoprSM/dfEE5CHnAYYZnEiRCaJKPa8s8uEN71hyWmO1uimG/40Z3qFbHtIqI jvXhMVpj7nHDnzxT7kHTIGMhsG85JP1fsk36TonHIYW6JbYPNbk/1KXl9QbsJVvDSKdw SxbZNHmlOaNgbtnLZYoKLfLhLNv61fL4TseaZ+R+EnCuskSk7kZVi8hQ+rKObh/rUPrL EsXg== X-Gm-Message-State: AOAM531E7auDQScJ+iCeFKsWx0gItPOHaix+7GlVY/yI7k2slOvYTAA6 GsW3TxIBmg8FLDgiHQ2kHvxAWNuSADNDmA1Jqj8bz35h X-Google-Smtp-Source: ABdhPJzCpBIUYYUJJTsyJ4WfpfLwNQpQZMiESG5JOC1GD4evyEvUkwXuCF5f30HA/06cdWt0CxZRqFpBxcYN5uO7aIc= X-Received: by 2002:a54:4e94:: with SMTP id c20mr4012418oiy.57.1633463318145; Tue, 05 Oct 2021 12:48:38 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110051904.195J48iO062191@gitrepo.freebsd.org> In-Reply-To: From: Alan Somers Date: Tue, 5 Oct 2021 13:48:27 -0600 Message-ID: Subject: Re: git: 730ea72c706e - main - cam(4): Limit search for disks in SES enclosure by single bus To: Alexander Motin Cc: src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HP7S66SyFz4sFp X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Tue, Oct 5, 2021 at 1:41 PM Alexander Motin wrote: > > On 05.10.2021 15:14, Alan Somers wrote: > > On Tue, Oct 5, 2021 at 1:04 PM Alexander Motin wrote: > >> > >> The branch main has been updated by mav: > >> > >> URL: https://cgit.FreeBSD.org/src/commit/?id=730ea72c706ef8e025616772cfd86fd89ed3d42e > >> > >> commit 730ea72c706ef8e025616772cfd86fd89ed3d42e > >> Author: Alexander Motin > >> AuthorDate: 2021-10-05 19:01:16 +0000 > >> Commit: Alexander Motin > >> CommitDate: 2021-10-05 19:01:16 +0000 > >> > >> cam(4): Limit search for disks in SES enclosure by single bus > >> > >> At least for SAS that we only support now disks are typically > >> connected to the same bus as the enclosure. Limiting the search > >> scope makes it much faster on systems with multiple buses and > >> thousands of disks. > >> > >> Reviewed by: imp > >> MFC after: 2 weeks > >> Sponsored by: iXsystems, Inc. > >> Differential Revision: https://reviews.freebsd.org/D32305 > >> --- > >> sys/cam/scsi/scsi_enc_ses.c | 8 ++++++++ > >> 1 file changed, 8 insertions(+) > >> > >> diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c > > > > > > Sounds juicy. Do you have any benchmarks? > > I don't think we've benchmarked that system with payload yet, if that is > what you mean, polishing usability. But I don't think there can be too > much interesting, since big speeds don't require so many HDDs these > days, but much smaller number of SSDs instead. This particular system > is about capacity -- ~20PiB raw on 1248 disks in one ZFS pool. :) > > -- > Alexander Motin 1248 disks? That's huge. But I'm not asking about throughput. Your commit message said "much faster". What operation is "much faster"? Enumerating disks at startup? That would be useful. -Alan From nobody Tue Oct 5 19:54:58 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 770149F6F09; Tue, 5 Oct 2021 19:55:00 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-qt1-x82f.google.com (mail-qt1-x82f.google.com [IPv6:2607:f8b0:4864:20::82f]) (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 4HP7bS2ghYz4t9p; Tue, 5 Oct 2021 19:55:00 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: by mail-qt1-x82f.google.com with SMTP id a13so243984qtw.10; Tue, 05 Oct 2021 12:55:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=jWUvMJrec6y9v/FlMG7eOxxsUlORFgk9UScwaVnTwKo=; b=ci8rdLxCPrbdmip43AYthI9zKZsujxKJytS3/gUBhiqMG0TuLn/TvPYHpSCAY7G7LM zCGBgjuvupQ6SgTQ4SZ5dyo3ANMzS5YPpWy3Lke1wxb4gJvD4vBPFwedmu0XdIDzbM9K odmmg+s4jYbiMWf4ilrFxxZ/jge31uIAqFmtx4ViwOnXAmuW53IRC7LA7m8I/SEL4c2z 85K4artOwEu98oLmJUuYhvQ2I+avY95LyOkB5ZWtnS8+v6EdVwb4LU0Vw0GEfQSb3H3x 9g0UjshuNQqYJO7TgOMXwKgdDRG7CqfqAGJRByDlQ4jO3mjSyeTlO+I5wgy8kvnqzM+U Q/JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=jWUvMJrec6y9v/FlMG7eOxxsUlORFgk9UScwaVnTwKo=; b=aTnzTvFgDztFF1h5PcAKUEPZvppYeID3MLqwSlxbxiKMNbYE6afXD9+xGgndwcyN3W oqbtkY+EJpextzdY6crsON+rWpgRf1pLDj+y0wVDP4PfbIoEIQGMBoCh5QyIhElG+2BX 93wOoI3aeMlYAf4ViEIzHIu2/8g/biFoYfnmfV93yL4jYSS3iIUq+C8DPuwsdWHEspD1 riULIFmtPcbY5wNxhdDSLVQUWTb0g+YBWfBNogR2KCz7Dkg6QECry+0qjxr1vKdQOLHo Q5KNfCQY9VIf/XgbjBlDk+rYdocdFVaaUop0lN9KQDPZJk4gOCfT5c8YopAT416teIoo LtEg== X-Gm-Message-State: AOAM531dRb+nzcggDLdHiIjejA7U+WB5C2GhO78vtaz2/EIK2y61Kr5v rLA1VZvWa8pG/o6Fdvj4yf5Fr4sjVyg= X-Google-Smtp-Source: ABdhPJyMpWkNkgz5aCtfgWoJjlr1NtUwLEmzlXu5MuWrHqPavTzmGqnNzT3DTWpZx5tL+1ItVCqdxg== X-Received: by 2002:ac8:c9:: with SMTP id d9mr8841641qtg.189.1633463699565; Tue, 05 Oct 2021 12:54:59 -0700 (PDT) Received: from mavoffice.ixsystems.com ([38.32.73.2]) by smtp.gmail.com with ESMTPSA id k10sm10213395qkk.124.2021.10.05.12.54.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Oct 2021 12:54:58 -0700 (PDT) Sender: Alexander Motin Subject: Re: git: 730ea72c706e - main - cam(4): Limit search for disks in SES enclosure by single bus To: Alan Somers Cc: src-committers , dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org References: <202110051904.195J48iO062191@gitrepo.freebsd.org> From: Alexander Motin Message-ID: <99fe068a-356c-7d58-8c70-6ecdf504ab25@FreeBSD.org> Date: Tue, 5 Oct 2021 15:54:58 -0400 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4HP7bS2ghYz4t9p X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On 05.10.2021 15:48, Alan Somers wrote: > On Tue, Oct 5, 2021 at 1:41 PM Alexander Motin wrote: >> >> On 05.10.2021 15:14, Alan Somers wrote: >>> On Tue, Oct 5, 2021 at 1:04 PM Alexander Motin wrote: >>>> >>>> The branch main has been updated by mav: >>>> >>>> URL: https://cgit.FreeBSD.org/src/commit/?id=730ea72c706ef8e025616772cfd86fd89ed3d42e >>>> >>>> commit 730ea72c706ef8e025616772cfd86fd89ed3d42e >>>> Author: Alexander Motin >>>> AuthorDate: 2021-10-05 19:01:16 +0000 >>>> Commit: Alexander Motin >>>> CommitDate: 2021-10-05 19:01:16 +0000 >>>> >>>> cam(4): Limit search for disks in SES enclosure by single bus >>>> >>>> At least for SAS that we only support now disks are typically >>>> connected to the same bus as the enclosure. Limiting the search >>>> scope makes it much faster on systems with multiple buses and >>>> thousands of disks. >>>> >>>> Reviewed by: imp >>>> MFC after: 2 weeks >>>> Sponsored by: iXsystems, Inc. >>>> Differential Revision: https://reviews.freebsd.org/D32305 >>>> --- >>>> sys/cam/scsi/scsi_enc_ses.c | 8 ++++++++ >>>> 1 file changed, 8 insertions(+) >>>> >>>> diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c >>> >>> >>> Sounds juicy. Do you have any benchmarks? >> >> I don't think we've benchmarked that system with payload yet, if that is >> what you mean, polishing usability. But I don't think there can be too >> much interesting, since big speeds don't require so many HDDs these >> days, but much smaller number of SSDs instead. This particular system >> is about capacity -- ~20PiB raw on 1248 disks in one ZFS pool. :) > > 1248 disks? That's huge. But I'm not asking about throughput. Your > commit message said "much faster". What operation is "much faster"? > Enumerating disks at startup? That would be useful. I don't think you notice the difference on startup, too many other things going on, but during idle it reduces periodic CPU load spikes by enc_daemon processes by several times, proportionally to the number of HBAs/buses. More annoyance than a real problem though. -- Alexander Motin From nobody Tue Oct 5 20:00:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AB5F512B92E2; Tue, 5 Oct 2021 20:01:12 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-ot1-f51.google.com (mail-ot1-f51.google.com [209.85.210.51]) (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 4HP7kc4Jtyz3Cbg; Tue, 5 Oct 2021 20:01:12 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-ot1-f51.google.com with SMTP id j11-20020a9d190b000000b00546fac94456so330515ota.6; Tue, 05 Oct 2021 13:01:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cxAckdlNsHic/jQpN1vA8gkWikty3hOcJFuf5S8euqI=; b=FMH476O1aPv3Lip3GZrcpL8bgplMeP84f7hQ8G9QUfn0FKUmff2KkmoV5G/jBe637o 4qxIwO2UXowyuTPIMpGk1vxbky8muP6vxauylkkURk3Y1m+glv4tZhT1ZXblMhbK+T9C Ga0O6V+MrmIXW8h2LWmyp3UoXORxvBrG12BChzuSOgZNDnewGJk1Gbo5lHAv6bwPfcoD xE7YicK2nXRmWhSQFdnLTcGwQqGWmmo1KslJTgDauJmtJi7ZYdepHcjzo/KmVJz1PpSY Q1D93g9b2My6iq3eksudvIazM1PDpw7o5VT1Yzl82aNvYolM6xhLzCD+Hlhz50HovYMs xEoA== X-Gm-Message-State: AOAM530suzyTzYnTIR3ha3e4tDtWmODyk4V48b9Hcffktr0b69XGgQJA FjBq7H6dYwVtpNMvAhC/DSfsPu23U6lpgJxVMdAoLSS3 X-Google-Smtp-Source: ABdhPJxRVL5XWHYlrfYP+HUd4uHJ3FETW50cvVVe+dRbOrq3jvPlERn0Qqfs8fHae9+EIlNZYCmq/RVwjn+VLLic4ko= X-Received: by 2002:a05:6830:44ab:: with SMTP id r43mr1133740otv.371.1633464065709; Tue, 05 Oct 2021 13:01:05 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110051904.195J48iO062191@gitrepo.freebsd.org> <99fe068a-356c-7d58-8c70-6ecdf504ab25@FreeBSD.org> In-Reply-To: <99fe068a-356c-7d58-8c70-6ecdf504ab25@FreeBSD.org> From: Alan Somers Date: Tue, 5 Oct 2021 14:00:54 -0600 Message-ID: Subject: Re: git: 730ea72c706e - main - cam(4): Limit search for disks in SES enclosure by single bus To: Alexander Motin Cc: src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HP7kc4Jtyz3Cbg X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Tue, Oct 5, 2021 at 1:55 PM Alexander Motin wrote: > > On 05.10.2021 15:48, Alan Somers wrote: > > On Tue, Oct 5, 2021 at 1:41 PM Alexander Motin wrote: > >> > >> On 05.10.2021 15:14, Alan Somers wrote: > >>> On Tue, Oct 5, 2021 at 1:04 PM Alexander Motin wrote: > >>>> > >>>> The branch main has been updated by mav: > >>>> > >>>> URL: https://cgit.FreeBSD.org/src/commit/?id=730ea72c706ef8e025616772cfd86fd89ed3d42e > >>>> > >>>> commit 730ea72c706ef8e025616772cfd86fd89ed3d42e > >>>> Author: Alexander Motin > >>>> AuthorDate: 2021-10-05 19:01:16 +0000 > >>>> Commit: Alexander Motin > >>>> CommitDate: 2021-10-05 19:01:16 +0000 > >>>> > >>>> cam(4): Limit search for disks in SES enclosure by single bus > >>>> > >>>> At least for SAS that we only support now disks are typically > >>>> connected to the same bus as the enclosure. Limiting the search > >>>> scope makes it much faster on systems with multiple buses and > >>>> thousands of disks. > >>>> > >>>> Reviewed by: imp > >>>> MFC after: 2 weeks > >>>> Sponsored by: iXsystems, Inc. > >>>> Differential Revision: https://reviews.freebsd.org/D32305 > >>>> --- > >>>> sys/cam/scsi/scsi_enc_ses.c | 8 ++++++++ > >>>> 1 file changed, 8 insertions(+) > >>>> > >>>> diff --git a/sys/cam/scsi/scsi_enc_ses.c b/sys/cam/scsi/scsi_enc_ses.c > >>> > >>> > >>> Sounds juicy. Do you have any benchmarks? > >> > >> I don't think we've benchmarked that system with payload yet, if that is > >> what you mean, polishing usability. But I don't think there can be too > >> much interesting, since big speeds don't require so many HDDs these > >> days, but much smaller number of SSDs instead. This particular system > >> is about capacity -- ~20PiB raw on 1248 disks in one ZFS pool. :) > > > > 1248 disks? That's huge. But I'm not asking about throughput. Your > > commit message said "much faster". What operation is "much faster"? > > Enumerating disks at startup? That would be useful. > > I don't think you notice the difference on startup, too many other > things going on, but during idle it reduces periodic CPU load spikes by > enc_daemon processes by several times, proportionally to the number of > HBAs/buses. More annoyance than a real problem though. > > -- > Alexander Motin Yeah, I've noticed those occasional enc_daemon spikes. I was never sure what it was doing. Thanks for the fix! I'm looking forward to 13.1 a little bit more now. From nobody Tue Oct 5 21:17:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 586BC12D4BBB; Tue, 5 Oct 2021 21:17:41 +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 4HP9Qs1vzVz3Q8N; Tue, 5 Oct 2021 21:17:41 +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 1E08313DDB; Tue, 5 Oct 2021 21:17:41 +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 195LHfAA037008; Tue, 5 Oct 2021 21:17:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195LHf0c037006; Tue, 5 Oct 2021 21:17:41 GMT (envelope-from git) Date: Tue, 5 Oct 2021 21:17:41 GMT Message-Id: <202110052117.195LHf0c037006@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 70ffa69e1bc7 - main - Remove obsolete amd(8) rc.conf configuration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 70ffa69e1bc7d6acbe061315743b1407b7d722d8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=70ffa69e1bc7d6acbe061315743b1407b7d722d8 commit 70ffa69e1bc7d6acbe061315743b1407b7d722d8 Author: Tom Hukins AuthorDate: 2021-10-05 14:34:52 +0000 Commit: Ed Maste CommitDate: 2021-10-05 21:16:58 +0000 Remove obsolete amd(8) rc.conf configuration The script that used these was removed in 13f7dbe822d5f along with amd itself. Fixes: 13f7dbe822d5 ("retire amd(8)") MFC after: 1 week Pull Request: https://github.com/freebsd/freebsd-src/pull/548 --- libexec/rc/rc.conf | 4 ---- share/man/man5/rc.conf.5 | 36 +----------------------------------- 2 files changed, 1 insertion(+), 39 deletions(-) diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf index b392dae9ae6c..6f4a3a1eb3f3 100644 --- a/libexec/rc/rc.conf +++ b/libexec/rc/rc.conf @@ -356,10 +356,6 @@ ftpd_program="/usr/libexec/ftpd" # Path to ftpd, if you want a different one. ftpd_flags="" # Additional flags to stand-alone ftpd. ### Network daemon (NFS): All need rpcbind_enable="YES" ### -amd_enable="NO" # Run amd service with $amd_flags (or NO). -amd_program="/usr/sbin/amd" # path to amd, if you want a different one. -amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" -amd_map_program="NO" # Can be set to "ypcat -k amd.master" autofs_enable="NO" # Run autofs daemons. automount_flags="" # Flags to automount(8) (if autofs enabled). automountd_flags="" # Flags to automountd(8) (if autofs enabled). diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 index b9d22a789c3a..6cff3f12954a 100644 --- a/share/man/man5/rc.conf.5 +++ b/share/man/man5/rc.conf.5 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 10, 2021 +.Dd October 5, 2021 .Dt RC.CONF 5 .Os .Sh NAME @@ -2352,39 +2352,6 @@ If is set to .Dq Li YES , these are the flags to pass to it. -.It Va amd_enable -.Pq Vt bool -If set to -.Dq Li YES , -run the -.Xr amd 8 -daemon at boot time. -.It Va amd_flags -.Pq Vt str -If -.Va amd_enable -is set to -.Dq Li YES , -these are the flags to pass to it. -See the -.Xr amd 8 -manpage for more information. -.It Va amd_map_program -.Pq Vt str -If set, -the specified program is run to get the list of -.Xr amd 8 -maps. -For example, if the -.Xr amd 8 -maps are stored in NIS, one can set this to -run -.Xr ypcat 1 -to get a list of -.Xr amd 8 -maps from the -.Pa amd.master -NIS map. .It Va update_motd .Pq Vt bool If set to @@ -4665,7 +4632,6 @@ it will be made permanently active. .Xr security 7 , .Xr tuning 7 , .Xr accton 8 , -.Xr amd 8 , .Xr apm 8 , .Xr bsdinstall 8 , .Xr bthidd 8 , From nobody Tue Oct 5 21:56:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id F36A112DAEBB; Tue, 5 Oct 2021 21:56: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 4HPBHJ5swlz3mQn; Tue, 5 Oct 2021 21:56: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 A692C14914; Tue, 5 Oct 2021 21:56: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 195LuCks089333; Tue, 5 Oct 2021 21:56:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195LuChF089332; Tue, 5 Oct 2021 21:56:12 GMT (envelope-from git) Date: Tue, 5 Oct 2021 21:56:12 GMT Message-Id: <202110052156.195LuChF089332@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: 680d70b59e03 - main - sysdecode_enum.3: Fix a typo: SIGBTRAP -> SIGTRAP. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 680d70b59e0379ded0cc94e3772bc47be2163c7f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=680d70b59e0379ded0cc94e3772bc47be2163c7f commit 680d70b59e0379ded0cc94e3772bc47be2163c7f Author: John Baldwin AuthorDate: 2021-10-05 21:55:18 +0000 Commit: John Baldwin CommitDate: 2021-10-05 21:55:18 +0000 sysdecode_enum.3: Fix a typo: SIGBTRAP -> SIGTRAP. MFC after: 3 days Sponsored by: DARPA --- lib/libsysdecode/sysdecode_enum.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libsysdecode/sysdecode_enum.3 b/lib/libsysdecode/sysdecode_enum.3 index 1db625f40ff0..722d82f27f29 100644 --- a/lib/libsysdecode/sysdecode_enum.3 +++ b/lib/libsysdecode/sysdecode_enum.3 @@ -225,7 +225,7 @@ object associated with an instance of signal: .It Fn sysdecode_sigfpe_code Ta Dv SIGFPE .It Fn sysdecode_sigill_code Ta Dv SIGILL .It Fn sysdecode_sigsegv_code Ta Dv SIGSEGV -.It Fn sysdecode_sigtrap_code Ta Dv SIGBTRAP +.It Fn sysdecode_sigtrap_code Ta Dv SIGTRAP .El .Pp Other functions decode the values described below: From nobody Tue Oct 5 22:16:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EF66212DD159; Tue, 5 Oct 2021 22:16: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 4HPBlB5RzWz3nr6; Tue, 5 Oct 2021 22:16: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 98EA814D96; Tue, 5 Oct 2021 22:16: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 195MGsk7016771; Tue, 5 Oct 2021 22:16:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 195MGsBr016770; Tue, 5 Oct 2021 22:16:54 GMT (envelope-from git) Date: Tue, 5 Oct 2021 22:16:54 GMT Message-Id: <202110052216.195MGsBr016770@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: 0ab6ecd1dda7 - stable/13 - wpa: Fix EAP/PEAP MSCHAPv2 authentication SIGSEGV List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0ab6ecd1dda7b6194b7aa09f70f9c6a7049708e4 Auto-Submitted: auto-generated X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=0ab6ecd1dda7b6194b7aa09f70f9c6a7049708e4 commit 0ab6ecd1dda7b6194b7aa09f70f9c6a7049708e4 Author: Cy Schubert AuthorDate: 2021-10-05 21:54:06 +0000 Commit: Cy Schubert CommitDate: 2021-10-05 22:12:38 +0000 wpa: Fix EAP/PEAP MSCHAPv2 authentication SIGSEGV 25ecdc7d52770caf1c9b44b5ec11f468f6b636f3 (MFCed by 13f32ff71eeb7213bb9f34bdfa88c7ccecf451bc) introduced a link error causing a SIGSEGV when using EAP/PEAP MSCHAPv2 authentication. It was subsequently addressed by c1d255d3ffdbe447de3ab875bf4e7d7accc5bfc5, discovered by build time link errors not experienced during testing of 25ecdc7d52770caf1c9b44b5ec11f468f6b636f3. This commit MFCs a portion of c1d255d3ffdbe447de3ab875bf4e7d7accc5bfc5 addressing only the SIGSEGV. The rest of c1d255d3ffdbe447de3ab875bf4e7d7accc5bfc5 will be MFCed in November 2021. This is a direct commit to stable/13. PR: 258527 Reported by: Marek Zarychta Tested by: Marek Zarychta --- usr.sbin/wpa/Makefile.crypto | 1 + usr.sbin/wpa/Makefile.inc | 5 +++-- usr.sbin/wpa/hostapd/Makefile | 2 -- usr.sbin/wpa/src/ap/Makefile | 9 +-------- usr.sbin/wpa/src/common/Makefile | 1 + usr.sbin/wpa/src/rsn_supp/Makefile | 4 ---- 6 files changed, 6 insertions(+), 16 deletions(-) diff --git a/usr.sbin/wpa/Makefile.crypto b/usr.sbin/wpa/Makefile.crypto index a65ee29e0ebe..2046c32d76ac 100644 --- a/usr.sbin/wpa/Makefile.crypto +++ b/usr.sbin/wpa/Makefile.crypto @@ -3,6 +3,7 @@ .if ${MK_OPENSSL} != "no" LIBADD+= ssl crypto CFLAGS+= -DCONFIG_SHA256 +CFLAGS+= -DCONFIG_ECC .else CFLAGS+=-DCONFIG_CRYPTO_INTERNAL CONFIG_INTERNAL_AES=y diff --git a/usr.sbin/wpa/Makefile.inc b/usr.sbin/wpa/Makefile.inc index ef94c7b312a9..49c7344e8957 100644 --- a/usr.sbin/wpa/Makefile.inc +++ b/usr.sbin/wpa/Makefile.inc @@ -40,8 +40,6 @@ CFLAGS+=-DCONFIG_IEEE80211AC CFLAGS+=-DCONFIG_IEEE80211N CFLAGS+=-DCONFIG_IEEE80211R CFLAGS+=-DCONFIG_IEEE80211W -CFLAGS+=-DCONFIG_IEEE80211AX -CFLAGS+=-DNEED_AP_MLME CFLAGS+=-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\" CFLAGS+=-DCONFIG_DEBUG_SYSLOG CFLAGS+=-DCONFIG_WPS @@ -54,9 +52,12 @@ CFLAGS+=-DCONFIG_GAS CFLAGS+=-DCONFIG_PEERKEY CFLAGS+=-DCONFIG_PRIVSEP CFLAGS+=-DCONFIG_SMARTCARD +CFLAGS+=-DCONFIG_TDLS CFLAGS+=-DCONFIG_TERMINATE_ONLASTIF CFLAGS+=-DCONFIG_TLS=openssl CFLAGS+=-DCONFIG_MATCH_IFACE +CFLAGS+=-DCONFIG_PASN +CFLAGS+=-DCONFIG_PTKSA_CACHE CFLAGS+=-DEAP_SERVER CFLAGS+=-DEAP_SERVER_GTC CFLAGS+=-DEAP_SERVER_IDENTITY diff --git a/usr.sbin/wpa/hostapd/Makefile b/usr.sbin/wpa/hostapd/Makefile index 1ae4481a863e..ce3b7d82fd69 100644 --- a/usr.sbin/wpa/hostapd/Makefile +++ b/usr.sbin/wpa/hostapd/Makefile @@ -26,8 +26,6 @@ FILES= hostapd.conf hostapd.eap_user hostapd.wpa_psk CFLAGS+=-I${.CURDIR:H}/wpa_supplicant \ -I${WPA_DISTDIR}/src/eap_peer \ - -DCONFIG_MBO \ - -DCONFIG_RSN_PREAUTH \ -DHOSTAPD .if ${MK_INET6} != "no" CFLAGS+= -DCONFIG_IPV6 diff --git a/usr.sbin/wpa/src/ap/Makefile b/usr.sbin/wpa/src/ap/Makefile index 77caf1ed8efe..b6d53b0d5dbb 100644 --- a/usr.sbin/wpa/src/ap/Makefile +++ b/usr.sbin/wpa/src/ap/Makefile @@ -12,7 +12,6 @@ INTERNALLIB= SRCS= accounting.c \ ap_config.c \ ap_drv_ops.c \ - ap_list.c \ ap_mlme.c \ authsrv.c \ beacon.c \ @@ -24,15 +23,11 @@ SRCS= accounting.c \ gas_serv.c \ hostapd.c \ hs20.c \ - hw_features.c \ - ieee802_11.c \ ieee802_11_auth.c \ - ieee802_11_he.c \ ieee802_11_ht.c \ ieee802_11_shared.c \ ieee802_11_vht.c \ ieee802_1x.c \ - mbo_ap.c \ neighbor_db.c \ pmksa_cache_auth.c \ preauth_auth.c \ @@ -49,9 +44,7 @@ SRCS= accounting.c \ wpa_auth_ie.c \ wps_hostapd.c -CFLAGS+=-DCONFIG_MBO \ - -DCONFIG_RSN_PREAUTH \ - -DHOSTAPD +CFLAGS+=-DHOSTAPD # We are only interested in includes at this point. Not libraries. LIBADD= diff --git a/usr.sbin/wpa/src/common/Makefile b/usr.sbin/wpa/src/common/Makefile index b415b926c207..99c4c04fb7fe 100644 --- a/usr.sbin/wpa/src/common/Makefile +++ b/usr.sbin/wpa/src/common/Makefile @@ -11,6 +11,7 @@ INTERNALLIB= SRCS= cli.c \ ctrl_iface_common.c \ + dragonfly.c \ gas.c \ hw_features_common.c \ ieee802_11_common.c \ diff --git a/usr.sbin/wpa/src/rsn_supp/Makefile b/usr.sbin/wpa/src/rsn_supp/Makefile index 4d952c2204c4..3ffa1e524890 100644 --- a/usr.sbin/wpa/src/rsn_supp/Makefile +++ b/usr.sbin/wpa/src/rsn_supp/Makefile @@ -16,10 +16,6 @@ SRCS= pmksa_cache.c \ wpa.c \ wpa_ie.c -CFLAGS+=-DCONFIG_TDLS \ - -DCONFIG_WNM \ - -DIEEE8021X_EAPOL - # We are only interested in includes at this point. Not libraries. LIBADD= From nobody Tue Oct 5 22:18:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D0ACE12DD653; Tue, 5 Oct 2021 22: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 4HPBmg5Zdzz3pch; Tue, 5 Oct 2021 22: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 A13D414967; Tue, 5 Oct 2021 22: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 195MIB4u016977; Tue, 5 Oct 2021 22: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 195MIBYH016976; Tue, 5 Oct 2021 22:18:11 GMT (envelope-from git) Date: Tue, 5 Oct 2021 22:18:11 GMT Message-Id: <202110052218.195MIBYH016976@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cy Schubert Subject: git: ad0311b6956f - stable/12 - wpa: Fix EAP/PEAP MSCHAPv2 authentication SIGSEGV List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: ad0311b6956f66835c24bd5a7e735aaa6b8c8852 Auto-Submitted: auto-generated X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by cy: URL: https://cgit.FreeBSD.org/src/commit/?id=ad0311b6956f66835c24bd5a7e735aaa6b8c8852 commit ad0311b6956f66835c24bd5a7e735aaa6b8c8852 Author: Cy Schubert AuthorDate: 2021-10-05 22:09:06 +0000 Commit: Cy Schubert CommitDate: 2021-10-05 22:09:06 +0000 wpa: Fix EAP/PEAP MSCHAPv2 authentication SIGSEGV 25ecdc7d52770caf1c9b44b5ec11f468f6b636f3 (MFCed by 5654815fd3604e024eefdcb34904d3a7c883e8c5) introduced a link error causing a SIGSEGV when using EAP/PEAP MSCHAPv2 authentication. It was subsequently addressed by c1d255d3ffdbe447de3ab875bf4e7d7accc5bfc5, discovered by build time link errors not experienced during testing of 25ecdc7d52770caf1c9b44b5ec11f468f6b636f3. This commit MFCs a portion of c1d255d3ffdbe447de3ab875bf4e7d7accc5bfc5 addressing only the SIGSEGV. The rest of c1d255d3ffdbe447de3ab875bf4e7d7accc5bfc5 will be MFCed in November 2021. This is a direct commit to stable/12. PR: 258527 Reported by: Marek Zarychta Tested by: Marek Zarychta --- usr.sbin/wpa/Makefile.crypto | 1 + usr.sbin/wpa/Makefile.inc | 5 +++-- usr.sbin/wpa/hostapd/Makefile | 2 -- usr.sbin/wpa/src/ap/Makefile | 9 +-------- usr.sbin/wpa/src/common/Makefile | 1 + usr.sbin/wpa/src/rsn_supp/Makefile | 4 ---- 6 files changed, 6 insertions(+), 16 deletions(-) diff --git a/usr.sbin/wpa/Makefile.crypto b/usr.sbin/wpa/Makefile.crypto index d513e52a9acc..580f572148b8 100644 --- a/usr.sbin/wpa/Makefile.crypto +++ b/usr.sbin/wpa/Makefile.crypto @@ -3,6 +3,7 @@ .if ${MK_OPENSSL} != "no" && !defined(RELEASE_CRUNCH) LIBADD+= ssl crypto CFLAGS+= -DCONFIG_SHA256 +CFLAGS+= -DCONFIG_ECC .else CFLAGS+=-DCONFIG_CRYPTO_INTERNAL CONFIG_INTERNAL_AES=y diff --git a/usr.sbin/wpa/Makefile.inc b/usr.sbin/wpa/Makefile.inc index 461fd21924c8..a6d54812f5f9 100644 --- a/usr.sbin/wpa/Makefile.inc +++ b/usr.sbin/wpa/Makefile.inc @@ -38,8 +38,6 @@ CFLAGS+=-DCONFIG_IEEE80211AC CFLAGS+=-DCONFIG_IEEE80211N CFLAGS+=-DCONFIG_IEEE80211R CFLAGS+=-DCONFIG_IEEE80211W -CFLAGS+=-DCONFIG_IEEE80211AX -CFLAGS+=-DNEED_AP_MLME CFLAGS+=-DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\" CFLAGS+=-DCONFIG_DEBUG_SYSLOG CFLAGS+=-DCONFIG_WPS @@ -52,9 +50,12 @@ CFLAGS+=-DCONFIG_GAS CFLAGS+=-DCONFIG_PEERKEY CFLAGS+=-DCONFIG_PRIVSEP CFLAGS+=-DCONFIG_SMARTCARD +CFLAGS+=-DCONFIG_TDLS CFLAGS+=-DCONFIG_TERMINATE_ONLASTIF CFLAGS+=-DCONFIG_TLS=openssl CFLAGS+=-DCONFIG_MATCH_IFACE +CFLAGS+=-DCONFIG_PASN +CFLAGS+=-DCONFIG_PTKSA_CACHE CFLAGS+=-DEAP_SERVER CFLAGS+=-DEAP_SERVER_GTC CFLAGS+=-DEAP_SERVER_IDENTITY diff --git a/usr.sbin/wpa/hostapd/Makefile b/usr.sbin/wpa/hostapd/Makefile index 57b218c99e14..6cc84630c3d5 100644 --- a/usr.sbin/wpa/hostapd/Makefile +++ b/usr.sbin/wpa/hostapd/Makefile @@ -25,8 +25,6 @@ FILES= hostapd.conf hostapd.eap_user hostapd.wpa_psk CFLAGS+=-I${.CURDIR:H}/wpa_supplicant \ -I${WPA_DISTDIR}/src/eap_peer \ - -DCONFIG_MBO \ - -DCONFIG_RSN_PREAUTH \ -DHOSTAPD .if ${MK_INET6} != "no" CFLAGS+= -DCONFIG_IPV6 diff --git a/usr.sbin/wpa/src/ap/Makefile b/usr.sbin/wpa/src/ap/Makefile index 77caf1ed8efe..b6d53b0d5dbb 100644 --- a/usr.sbin/wpa/src/ap/Makefile +++ b/usr.sbin/wpa/src/ap/Makefile @@ -12,7 +12,6 @@ INTERNALLIB= SRCS= accounting.c \ ap_config.c \ ap_drv_ops.c \ - ap_list.c \ ap_mlme.c \ authsrv.c \ beacon.c \ @@ -24,15 +23,11 @@ SRCS= accounting.c \ gas_serv.c \ hostapd.c \ hs20.c \ - hw_features.c \ - ieee802_11.c \ ieee802_11_auth.c \ - ieee802_11_he.c \ ieee802_11_ht.c \ ieee802_11_shared.c \ ieee802_11_vht.c \ ieee802_1x.c \ - mbo_ap.c \ neighbor_db.c \ pmksa_cache_auth.c \ preauth_auth.c \ @@ -49,9 +44,7 @@ SRCS= accounting.c \ wpa_auth_ie.c \ wps_hostapd.c -CFLAGS+=-DCONFIG_MBO \ - -DCONFIG_RSN_PREAUTH \ - -DHOSTAPD +CFLAGS+=-DHOSTAPD # We are only interested in includes at this point. Not libraries. LIBADD= diff --git a/usr.sbin/wpa/src/common/Makefile b/usr.sbin/wpa/src/common/Makefile index b415b926c207..99c4c04fb7fe 100644 --- a/usr.sbin/wpa/src/common/Makefile +++ b/usr.sbin/wpa/src/common/Makefile @@ -11,6 +11,7 @@ INTERNALLIB= SRCS= cli.c \ ctrl_iface_common.c \ + dragonfly.c \ gas.c \ hw_features_common.c \ ieee802_11_common.c \ diff --git a/usr.sbin/wpa/src/rsn_supp/Makefile b/usr.sbin/wpa/src/rsn_supp/Makefile index 4d952c2204c4..3ffa1e524890 100644 --- a/usr.sbin/wpa/src/rsn_supp/Makefile +++ b/usr.sbin/wpa/src/rsn_supp/Makefile @@ -16,10 +16,6 @@ SRCS= pmksa_cache.c \ wpa.c \ wpa_ie.c -CFLAGS+=-DCONFIG_TDLS \ - -DCONFIG_WNM \ - -DIEEE8021X_EAPOL - # We are only interested in includes at this point. Not libraries. LIBADD= From nobody Wed Oct 6 00:27:56 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8DB6A12BA50D; Wed, 6 Oct 2021 00:27: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 4HPFfN3bR7z4VMk; Wed, 6 Oct 2021 00:27: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 5AF54167AD; Wed, 6 Oct 2021 00:27: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 1960RulA089363; Wed, 6 Oct 2021 00:27:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1960Rucv089362; Wed, 6 Oct 2021 00:27:56 GMT (envelope-from git) Date: Wed, 6 Oct 2021 00:27:56 GMT Message-Id: <202110060027.1960Rucv089362@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 7102ec5226e5 - main - unifdef.1: Fix typo on "input" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 7102ec5226e5eb410f817a90a54843410a32420d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=7102ec5226e5eb410f817a90a54843410a32420d commit 7102ec5226e5eb410f817a90a54843410a32420d Author: Elyes HAOUAS AuthorDate: 2021-10-05 18:58:51 +0000 Commit: Ed Maste CommitDate: 2021-10-06 00:27:16 +0000 unifdef.1: Fix typo on "input" Pull request: https://github.com/freebsd/freebsd-src/pull/549 Signed-off-by: Elyes HAOUAS --- usr.bin/unifdef/unifdef.1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/unifdef/unifdef.1 b/usr.bin/unifdef/unifdef.1 index 2bbefc0a2947..31a823268215 100644 --- a/usr.bin/unifdef/unifdef.1 +++ b/usr.bin/unifdef/unifdef.1 @@ -406,7 +406,7 @@ You must use the or .Fl M options if there are multiple input files. -You can specify inut from stdin or output to stdout with +You can specify input from stdin or output to stdout with .Ql - . .Pp The From nobody Wed Oct 6 02:54:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 53E9312D7662; Wed, 6 Oct 2021 02:54: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 4HPJvW1vtZz4gKT; Wed, 6 Oct 2021 02:54: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 20B931852A; Wed, 6 Oct 2021 02:54: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 1962sVZF087611; Wed, 6 Oct 2021 02:54:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1962sVbe087610; Wed, 6 Oct 2021 02:54:31 GMT (envelope-from git) Date: Wed, 6 Oct 2021 02:54:31 GMT Message-Id: <202110060254.1962sVbe087610@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: f8d3368b4346 - main - apic: initialize lapic_paddr statically List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f8d3368b4346237deeaaaa91308ce78f8e2ea820 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f8d3368b4346237deeaaaa91308ce78f8e2ea820 commit f8d3368b4346237deeaaaa91308ce78f8e2ea820 Author: Konstantin Belousov AuthorDate: 2021-10-05 13:19:56 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 02:52:56 +0000 apic: initialize lapic_paddr statically The default value for LAPIC registers page physical address is usually right. Having this value available early makes pmap_force_invalidate_cache_range(), used on non-self-snoop machines, avoid flushing LAPIC range for early calls. Reviewed by: alc, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32318 --- sys/x86/x86/local_apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 04de3ae47461..2cd2e0c23e11 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -195,7 +195,7 @@ static u_int32_t lapic_timer_divisors[] = { extern inthand_t IDTVEC(rsvd_pti), IDTVEC(rsvd); volatile char *lapic_map; -vm_paddr_t lapic_paddr; +vm_paddr_t lapic_paddr = DEFAULT_APIC_BASE; int x2apic_mode; int lapic_eoi_suppression; static int lapic_timer_tsc_deadline; From nobody Wed Oct 6 02:54:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A089912D799F; Wed, 6 Oct 2021 02:54: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 4HPJvX3xTRz4gY8; Wed, 6 Oct 2021 02:54: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 4EAB3185A2; Wed, 6 Oct 2021 02:54: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 1962sWpK087635; Wed, 6 Oct 2021 02:54:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1962sWgn087634; Wed, 6 Oct 2021 02:54:32 GMT (envelope-from git) Date: Wed, 6 Oct 2021 02:54:32 GMT Message-Id: <202110060254.1962sWgn087634@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: 33c17670afdb - main - amd64: add pmap_page_set_memattr_noflush() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 33c17670afdb008097858d2fff8d4c4a47d68158 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=33c17670afdb008097858d2fff8d4c4a47d68158 commit 33c17670afdb008097858d2fff8d4c4a47d68158 Author: Konstantin Belousov AuthorDate: 2021-10-05 14:12:05 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 02:53:12 +0000 amd64: add pmap_page_set_memattr_noflush() Similar to pmap_page_set_memattr() by setting MD page cache attribute to the argument. Unlike pmap_page_set_memattr(), does not flush cache for the direct mapping of the page. Reviewed by: alc, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32318 --- sys/amd64/amd64/pmap.c | 17 +++++++++++++++++ sys/amd64/include/pmap.h | 1 + 2 files changed, 18 insertions(+) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index aae35c5d7e07..f1ddbe548c0f 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -9379,6 +9379,23 @@ pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma) panic("memory attribute change on the direct map failed"); } +void +pmap_page_set_memattr_noflush(vm_page_t m, vm_memattr_t ma) +{ + int error; + + m->md.pat_mode = ma; + + if ((m->flags & PG_FICTITIOUS) != 0) + return; + PMAP_LOCK(kernel_pmap); + error = pmap_change_props_locked(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), + PAGE_SIZE, PROT_NONE, m->md.pat_mode, 0); + PMAP_UNLOCK(kernel_pmap); + if (error != 0) + panic("memory attribute change on the direct map failed"); +} + /* * Changes the specified virtual address range's memory type to that given by * the parameter "mode". The specified virtual address range must be diff --git a/sys/amd64/include/pmap.h b/sys/amd64/include/pmap.h index b65668b60023..bd6a8c006813 100644 --- a/sys/amd64/include/pmap.h +++ b/sys/amd64/include/pmap.h @@ -499,6 +499,7 @@ void *pmap_mapdev_pciecfg(vm_paddr_t pa, vm_size_t size); bool pmap_not_in_di(void); boolean_t pmap_page_is_mapped(vm_page_t m); void pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma); +void pmap_page_set_memattr_noflush(vm_page_t m, vm_memattr_t ma); void pmap_pinit_pml4(vm_page_t); void pmap_pinit_pml5(vm_page_t); bool pmap_ps_enabled(pmap_t pmap); From nobody Wed Oct 6 02:54:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EC51712D7968; Wed, 6 Oct 2021 02:54: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 4HPJvY4jFvz4gVq; Wed, 6 Oct 2021 02:54: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 7099F188AB; Wed, 6 Oct 2021 02:54: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 1962sXfh087661; Wed, 6 Oct 2021 02:54:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1962sXka087660; Wed, 6 Oct 2021 02:54:33 GMT (envelope-from git) Date: Wed, 6 Oct 2021 02:54:33 GMT Message-Id: <202110060254.1962sXka087660@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: ce21d4bff1bc - main - amd64 efirt: do not flush cache for runtime pages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: ce21d4bff1bc7e562471eeab6fb012b35029bf50 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=ce21d4bff1bc7e562471eeab6fb012b35029bf50 commit ce21d4bff1bc7e562471eeab6fb012b35029bf50 Author: Konstantin Belousov AuthorDate: 2021-10-05 14:14:11 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 02:53:20 +0000 amd64 efirt: do not flush cache for runtime pages We actually do not know is it safe or not to flush cache for random BAR/register page existing in the system. It is well-known that for instance LAPICs cannot tolerate cache flush. As report indicates, there are more such devices. This issue typically affects AMD machines which do not report self-snoop, causing real CLFLUSH invocation on the mapped pages. Intels do self-snoop, so this change should be nop for them, and unsafe devices, if any, are already ignored. Reported and tested by: manu Reviewed by: alc, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32318 --- sys/amd64/amd64/efirt_machdep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/amd64/efirt_machdep.c b/sys/amd64/amd64/efirt_machdep.c index 6fb64816385e..6fffd113f868 100644 --- a/sys/amd64/amd64/efirt_machdep.c +++ b/sys/amd64/amd64/efirt_machdep.c @@ -254,7 +254,7 @@ efi_create_1t1_map(struct efi_md *map, int ndesc, int descsz) 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); + pmap_page_set_memattr_noflush(m, mode); } } VM_OBJECT_WUNLOCK(obj_1t1_pt); From nobody Wed Oct 6 03:39:35 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B23F212DE4C7; Wed, 6 Oct 2021 03:39: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 4HPKvW4dl2z4nrH; Wed, 6 Oct 2021 03:39: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 800B3190AB; Wed, 6 Oct 2021 03:39: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 1963dZbx043169; Wed, 6 Oct 2021 03:39:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1963dZn1043168; Wed, 6 Oct 2021 03:39:35 GMT (envelope-from git) Date: Wed, 6 Oct 2021 03:39:35 GMT Message-Id: <202110060339.1963dZn1043168@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: 8d3cd7767a2e - main - Fix mistakes in link(2) and shm_open(2) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 8d3cd7767a2ea1816c31e1dbe7957253e723e559 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8d3cd7767a2ea1816c31e1dbe7957253e723e559 commit 8d3cd7767a2ea1816c31e1dbe7957253e723e559 Author: Konstantin Belousov AuthorDate: 2021-10-06 03:38:26 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 03:38:26 +0000 Fix mistakes in link(2) and shm_open(2) PR: 258957 Submitted by: sigsys@gmail.com MFC after: 1 week --- lib/libc/sys/link.2 | 4 ++-- lib/libc/sys/shm_open.2 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libc/sys/link.2 b/lib/libc/sys/link.2 index 37225f9571d0..ab686266cd21 100644 --- a/lib/libc/sys/link.2 +++ b/lib/libc/sys/link.2 @@ -126,9 +126,9 @@ flag in the manual page. .It Dv AT_EMPTY_PATH If the -.Fa path2 +.Fa name1 argument is an empty string, link the file referenced by the descriptor -.Fa fd2 . +.Fa fd1 . The operation requires that the calling process has the .Dv PRIV_VFS_FHOPEN privilege, effectively being executed with effective user diff --git a/lib/libc/sys/shm_open.2 b/lib/libc/sys/shm_open.2 index edf5440d44c4..4c03288b6bbe 100644 --- a/lib/libc/sys/shm_open.2 +++ b/lib/libc/sys/shm_open.2 @@ -369,7 +369,7 @@ does not begin with a slash character. .It Bq Er ENOENT .Dv O_CREAT -is specified and the named shared memory object does not exist. +is not specified and the named shared memory object does not exist. .It Bq Er EEXIST .Dv O_CREAT and From nobody Wed Oct 6 04:25:45 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4D0D717E450D; Wed, 6 Oct 2021 04:25: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 4HPLwn1hdHz4tn8; Wed, 6 Oct 2021 04:25:45 +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 1A2E119B2D; Wed, 6 Oct 2021 04:25: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 1964Pj1Q009086; Wed, 6 Oct 2021 04:25:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1964PjAT009085; Wed, 6 Oct 2021 04:25:45 GMT (envelope-from git) Date: Wed, 6 Oct 2021 04:25:45 GMT Message-Id: <202110060425.1964PjAT009085@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 7f4bb501768b - main - login: use sizeof(audit_cond) consistently, NFC List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7f4bb501768b9b3f856f91fbc8b9c80a2a4aaa04 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7f4bb501768b9b3f856f91fbc8b9c80a2a4aaa04 commit 7f4bb501768b9b3f856f91fbc8b9c80a2a4aaa04 Author: Kyle Evans AuthorDate: 2021-10-06 04:24:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 04:25:29 +0000 login: use sizeof(audit_cond) consistently, NFC The other three instances were already converted to use audit_cond, this one was just changed from sizeof(long) -> sizeof(int). --- usr.bin/login/login_audit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/login/login_audit.c b/usr.bin/login/login_audit.c index a45adb7b9e71..91aa4336c659 100644 --- a/usr.bin/login/login_audit.c +++ b/usr.bin/login/login_audit.c @@ -180,7 +180,7 @@ audit_logout(void) int au_cond; /* If we are not auditing, don't cut an audit record; just return. */ - if (auditon(A_GETCOND, &au_cond, sizeof(int)) < 0) { + if (auditon(A_GETCOND, &au_cond, sizeof(au_cond)) < 0) { if (errno == ENOSYS) return; errx(1, "could not determine audit condition"); From nobody Wed Oct 6 06:21:45 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D4BC412BE0E1; Wed, 6 Oct 2021 06:21: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 4HPPVd5jPDz3Jhb; Wed, 6 Oct 2021 06:21:45 +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 A3E3B1AFE7; Wed, 6 Oct 2021 06:21: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 1966LjNA065147; Wed, 6 Oct 2021 06:21:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966LjgW065146; Wed, 6 Oct 2021 06:21:45 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:21:45 GMT Message-Id: <202110060621.1966LjgW065146@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: badbe6a4a817 - stable/13 - netvsc: Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: badbe6a4a8171ee07c6c364849134f464e9c9276 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=badbe6a4a8171ee07c6c364849134f464e9c9276 commit badbe6a4a8171ee07c6c364849134f464e9c9276 Author: Gordon Bergling AuthorDate: 2021-10-02 08:42:18 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:19:58 +0000 netvsc: Fix a typo in a comment - s/prefered/preferred/ (cherry picked from commit 9ebd651b58502f0572a7832d088f53f7a2ad00a5) --- sys/dev/hyperv/netvsc/hn_rndis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/hyperv/netvsc/hn_rndis.c b/sys/dev/hyperv/netvsc/hn_rndis.c index 794a82cf3957..108950aa3f9b 100644 --- a/sys/dev/hyperv/netvsc/hn_rndis.c +++ b/sys/dev/hyperv/netvsc/hn_rndis.c @@ -493,7 +493,7 @@ hn_rndis_query_rsscaps(struct hn_softc *sc, int *rxr_cnt0) /* * NOTE: - * Toeplitz is at the lowest bit, and it is prefered; so ffs(), + * Toeplitz is at the lowest bit, and it is preferred; so ffs(), * instead of fls(), is used here. */ hash_fnidx = ffs(caps.ndis_caps & NDIS_RSS_CAP_HASHFUNC_MASK); From nobody Wed Oct 6 06:21:46 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 16C5512BE0EA; Wed, 6 Oct 2021 06:21: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 4HPPVf6t9xz3Jsj; Wed, 6 Oct 2021 06:21: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 C90381B585; Wed, 6 Oct 2021 06:21: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 1966LkeP065178; Wed, 6 Oct 2021 06:21:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966LkE4065177; Wed, 6 Oct 2021 06:21:46 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:21:46 GMT Message-Id: <202110060621.1966LkE4065177@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: d58ccf3ba4f1 - stable/13 - evdev: Fix a typo in a commit List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d58ccf3ba4f15f0cf0be4dc073c6a8f728b2d136 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=d58ccf3ba4f15f0cf0be4dc073c6a8f728b2d136 commit d58ccf3ba4f15f0cf0be4dc073c6a8f728b2d136 Author: Gordon Bergling AuthorDate: 2021-10-02 08:43:41 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:20:20 +0000 evdev: Fix a typo in a commit - s/prefered/preferred/ (cherry picked from commit efd8749fe5cccb6c3d6b5f3c3515bf89ad306bcc) --- sys/dev/evdev/evdev.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/evdev/evdev.h b/sys/dev/evdev/evdev.h index dde9bba9b1e2..71cadc0dcef3 100644 --- a/sys/dev/evdev/evdev.h +++ b/sys/dev/evdev/evdev.h @@ -49,7 +49,7 @@ typedef void (evdev_keycode_t)(struct evdev_dev *, * Keyboard and mouse events recipient mask. * evdev_rcpt_mask variable should be respected by keyboard and mouse drivers * that are able to send events through both evdev and sysmouse/kbdmux - * interfaces so user can choose prefered one to not receive one event twice. + * interfaces so user can choose preferred one to not receive one event twice. */ #define EVDEV_RCPT_SYSMOUSE (1<<0) #define EVDEV_RCPT_KBDMUX (1<<1) From nobody Wed Oct 6 06:21:47 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0EC5412BE2A8; Wed, 6 Oct 2021 06:21: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 4HPPVh2MCJz3JxJ; Wed, 6 Oct 2021 06:21: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 E75F91B252; Wed, 6 Oct 2021 06:21: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 1966LlqD065203; Wed, 6 Oct 2021 06:21:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966LlTS065202; Wed, 6 Oct 2021 06:21:47 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:21:47 GMT Message-Id: <202110060621.1966LlTS065202@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: d00fdb973639 - stable/13 - vnic: Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d00fdb973639dbdede1435746226147ddb4dc518 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=d00fdb973639dbdede1435746226147ddb4dc518 commit d00fdb973639dbdede1435746226147ddb4dc518 Author: Gordon Bergling AuthorDate: 2021-10-02 08:47:21 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:20:41 +0000 vnic: Fix a typo in a comment - s/setings/settings/ (cherry picked from commit fafb1c574d43b8c3acb510d925f599fee461c039) --- sys/dev/vnic/thunder_mdio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/vnic/thunder_mdio.c b/sys/dev/vnic/thunder_mdio.c index 92a4fcdabc0e..1a1e7df169ba 100644 --- a/sys/dev/vnic/thunder_mdio.c +++ b/sys/dev/vnic/thunder_mdio.c @@ -207,7 +207,7 @@ thunder_mdio_set_mode(struct thunder_mdio_softc *sc, smi_clk |= SMI_CLK_MODE; /* Enable sending 32 bit preable on SMI transactions */ smi_clk |= SMI_CLK_PREAMBLE; - /* Saved setings */ + /* Saved settings */ mdio_reg_write(sc, SMI_CLK, smi_clk); sc->mode = mode; } From nobody Wed Oct 6 06:21:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B056D12BE511; Wed, 6 Oct 2021 06:21: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 4HPPVj1cFxz3Jhr; Wed, 6 Oct 2021 06:21: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 169911B177; Wed, 6 Oct 2021 06:21: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 1966Lm2C065227; Wed, 6 Oct 2021 06:21:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966LmxO065226; Wed, 6 Oct 2021 06:21:48 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:21:48 GMT Message-Id: <202110060621.1966LmxO065226@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 717200690020 - stable/13 - smsc(4): Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 717200690020654c4b525a352ba728c4ccf0e924 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=717200690020654c4b525a352ba728c4ccf0e924 commit 717200690020654c4b525a352ba728c4ccf0e924 Author: Gordon Bergling AuthorDate: 2021-10-02 08:45:58 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:21:05 +0000 smsc(4): Fix a typo in a comment - s/setings/settings/ (cherry picked from commit 9599d8141f79aa721e47d7fd91e7b9bcfef3a7d5) --- sys/dev/usb/net/if_smsc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/usb/net/if_smsc.c b/sys/dev/usb/net/if_smsc.c index 85cc955b9fbf..33a90259b464 100644 --- a/sys/dev/usb/net/if_smsc.c +++ b/sys/dev/usb/net/if_smsc.c @@ -1411,7 +1411,7 @@ smsc_chip_init(struct smsc_softc *sc) reg_val &= ~SMSC_HW_CFG_RXDOFF; reg_val |= (ETHER_ALIGN << 9) & SMSC_HW_CFG_RXDOFF; - /* The following setings are used for 'turbo mode', a.k.a multiple frames + /* The following settings are used for 'turbo mode', a.k.a multiple frames * per Rx transaction (again info taken form Linux driver). */ if (smsc_rx_packet_batching) From nobody Wed Oct 6 06:21:50 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E9CA712BE61B; Wed, 6 Oct 2021 06:21: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 4HPPVl0NNzz3Jhy; Wed, 6 Oct 2021 06:21: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 3E4901B587; Wed, 6 Oct 2021 06:21: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 1966Lof5065251; Wed, 6 Oct 2021 06:21:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966Loh0065250; Wed, 6 Oct 2021 06:21:50 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:21:50 GMT Message-Id: <202110060621.1966Loh0065250@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 3637d2a1835e - stable/13 - cam: Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 3637d2a1835eb4764e7c07758b4ce998285ca8fb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=3637d2a1835eb4764e7c07758b4ce998285ca8fb commit 3637d2a1835eb4764e7c07758b4ce998285ca8fb Author: Gordon Bergling AuthorDate: 2021-10-02 08:48:43 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:21:29 +0000 cam: Fix a typo in a comment - s/perorming/performing/ (cherry picked from commit 15c5f657a0107c7c1a3c954252a9ac6bb80f2535) --- sys/cam/ctl/ctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c index 8ad8bcec434b..980328c1551f 100644 --- a/sys/cam/ctl/ctl.c +++ b/sys/cam/ctl/ctl.c @@ -8552,7 +8552,7 @@ done: /* * This routine is for handling a message from the other SC pertaining to * persistent reserve out. All the error checking will have been done - * so only perorming the action need be done here to keep the two + * so only performing the action need be done here to keep the two * in sync. */ static void From nobody Wed Oct 6 06:23:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5B60012D010F; Wed, 6 Oct 2021 06: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 4HPPXq4tybz3M0r; Wed, 6 Oct 2021 06:23: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 4B9A91B516; Wed, 6 Oct 2021 06:23: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 1966NdnV070240; Wed, 6 Oct 2021 06:23:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966NdiX070239; Wed, 6 Oct 2021 06:23:39 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:23:39 GMT Message-Id: <202110060623.1966NdiX070239@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: aa42680be788 - stable/12 - netvsc: Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: aa42680be7883ffb02e17abaccc225b8f6faf57f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=aa42680be7883ffb02e17abaccc225b8f6faf57f commit aa42680be7883ffb02e17abaccc225b8f6faf57f Author: Gordon Bergling AuthorDate: 2021-10-02 08:42:18 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:22:12 +0000 netvsc: Fix a typo in a comment - s/prefered/preferred/ (cherry picked from commit 9ebd651b58502f0572a7832d088f53f7a2ad00a5) --- sys/dev/hyperv/netvsc/hn_rndis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/hyperv/netvsc/hn_rndis.c b/sys/dev/hyperv/netvsc/hn_rndis.c index 794a82cf3957..108950aa3f9b 100644 --- a/sys/dev/hyperv/netvsc/hn_rndis.c +++ b/sys/dev/hyperv/netvsc/hn_rndis.c @@ -493,7 +493,7 @@ hn_rndis_query_rsscaps(struct hn_softc *sc, int *rxr_cnt0) /* * NOTE: - * Toeplitz is at the lowest bit, and it is prefered; so ffs(), + * Toeplitz is at the lowest bit, and it is preferred; so ffs(), * instead of fls(), is used here. */ hash_fnidx = ffs(caps.ndis_caps & NDIS_RSS_CAP_HASHFUNC_MASK); From nobody Wed Oct 6 06:23:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0F05912D0024; Wed, 6 Oct 2021 06:23:41 +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 4HPPXr55FPz3Lxm; Wed, 6 Oct 2021 06: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 592E11B596; Wed, 6 Oct 2021 06: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 1966Ne7Y070265; Wed, 6 Oct 2021 06: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 1966NenF070264; Wed, 6 Oct 2021 06:23:40 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:23:40 GMT Message-Id: <202110060623.1966NenF070264@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 4999f16e5ae4 - stable/12 - evdev: Fix a typo in a commit List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4999f16e5ae43c8b65829f4d660e7460943acdad Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=4999f16e5ae43c8b65829f4d660e7460943acdad commit 4999f16e5ae43c8b65829f4d660e7460943acdad Author: Gordon Bergling AuthorDate: 2021-10-02 08:43:41 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:22:35 +0000 evdev: Fix a typo in a commit - s/prefered/preferred/ (cherry picked from commit efd8749fe5cccb6c3d6b5f3c3515bf89ad306bcc) --- sys/dev/evdev/evdev.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/evdev/evdev.h b/sys/dev/evdev/evdev.h index b897a465b338..1945497f5be9 100644 --- a/sys/dev/evdev/evdev.h +++ b/sys/dev/evdev/evdev.h @@ -48,7 +48,7 @@ typedef void (evdev_keycode_t)(struct evdev_dev *, * Keyboard and mouse events recipient mask. * evdev_rcpt_mask variable should be respected by keyboard and mouse drivers * that are able to send events through both evdev and sysmouse/kbdmux - * interfaces so user can choose prefered one to not receive one event twice. + * interfaces so user can choose preferred one to not receive one event twice. */ #define EVDEV_RCPT_SYSMOUSE (1<<0) #define EVDEV_RCPT_KBDMUX (1<<1) From nobody Wed Oct 6 06:23:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0917712BFF5B; Wed, 6 Oct 2021 06:23: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 4HPPXs5PBMz3Lxx; Wed, 6 Oct 2021 06:23:41 +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 85C9B1AFFD; Wed, 6 Oct 2021 06:23:41 +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 1966Nfva070289; Wed, 6 Oct 2021 06:23:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966Nfid070288; Wed, 6 Oct 2021 06:23:41 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:23:41 GMT Message-Id: <202110060623.1966Nfid070288@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 5a3a8be94a2e - stable/12 - vnic: Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 5a3a8be94a2e24f004a455faddb44403af38fba0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=5a3a8be94a2e24f004a455faddb44403af38fba0 commit 5a3a8be94a2e24f004a455faddb44403af38fba0 Author: Gordon Bergling AuthorDate: 2021-10-02 08:47:21 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:22:59 +0000 vnic: Fix a typo in a comment - s/setings/settings/ (cherry picked from commit fafb1c574d43b8c3acb510d925f599fee461c039) --- sys/dev/vnic/thunder_mdio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/vnic/thunder_mdio.c b/sys/dev/vnic/thunder_mdio.c index 3a4fc9cb809b..c3bd560b52c1 100644 --- a/sys/dev/vnic/thunder_mdio.c +++ b/sys/dev/vnic/thunder_mdio.c @@ -208,7 +208,7 @@ thunder_mdio_set_mode(struct thunder_mdio_softc *sc, smi_clk |= SMI_CLK_MODE; /* Enable sending 32 bit preable on SMI transactions */ smi_clk |= SMI_CLK_PREAMBLE; - /* Saved setings */ + /* Saved settings */ mdio_reg_write(sc, SMI_CLK, smi_clk); sc->mode = mode; } From nobody Wed Oct 6 06:24:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8BAF412D1197; Wed, 6 Oct 2021 06:24: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 4HPPZF2Vlqz3N6C; Wed, 6 Oct 2021 06:24: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 A59F71B4BE; Wed, 6 Oct 2021 06:24: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 1966Oqcg070500; Wed, 6 Oct 2021 06:24:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1966OqaX070499; Wed, 6 Oct 2021 06:24:52 GMT (envelope-from git) Date: Wed, 6 Oct 2021 06:24:52 GMT Message-Id: <202110060624.1966OqaX070499@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 53939dd23fdb - stable/12 - cam: Fix a typo in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 53939dd23fdbe987f829f0f9549bf3f59158a923 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=53939dd23fdbe987f829f0f9549bf3f59158a923 commit 53939dd23fdbe987f829f0f9549bf3f59158a923 Author: Gordon Bergling AuthorDate: 2021-10-02 08:48:43 +0000 Commit: Gordon Bergling CommitDate: 2021-10-06 06:24:37 +0000 cam: Fix a typo in a comment - s/perorming/performing/ (cherry picked from commit 15c5f657a0107c7c1a3c954252a9ac6bb80f2535) --- sys/cam/ctl/ctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/ctl/ctl.c b/sys/cam/ctl/ctl.c index 46f044814d3a..020724d033e0 100644 --- a/sys/cam/ctl/ctl.c +++ b/sys/cam/ctl/ctl.c @@ -8563,7 +8563,7 @@ done: /* * This routine is for handling a message from the other SC pertaining to * persistent reserve out. All the error checking will have been done - * so only perorming the action need be done here to keep the two + * so only performing the action need be done here to keep the two * in sync. */ static void From nobody Wed Oct 6 07:00:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C72DD12D4634; Wed, 6 Oct 2021 07:00: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 4HPQLt5ClZz3Qck; Wed, 6 Oct 2021 07:00: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 92E1E1B92B; Wed, 6 Oct 2021 07:00: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 1967064Q014291; Wed, 6 Oct 2021 07:00:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196706Mn014288; Wed, 6 Oct 2021 07:00:06 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:00:06 GMT Message-Id: <202110060700.196706Mn014288@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 40f9f2279c0f - stable/13 - kern: random: drop read_rate and associated functionality List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 40f9f2279c0fd6f9e1829f786eea3d49e45c9f32 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=40f9f2279c0fd6f9e1829f786eea3d49e45c9f32 commit 40f9f2279c0fd6f9e1829f786eea3d49e45c9f32 Author: Kyle Evans AuthorDate: 2021-09-20 04:59:09 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 06:41:18 +0000 kern: random: drop read_rate and associated functionality Refer to discussion in PR 230808 for a less incomplete discussion, but the gist of this change is that we currently collect orders of magnitude more entropy than we need. The excess comes from bytes being read out of /dev/*random. The default rate at which we collect entropy without the read_rate increase is already more than we need to recover from a compromise of an internal state. For stable/13, the read_rate_increment symbol remains as a stub to avoid breaking loadable random modules. (cherry picked from commit 6895cade9421238abf541f24fb9327ebd19e94ff) --- sys/dev/random/random_harvestq.c | 13 +++---------- sys/dev/random/randomdev.c | 2 -- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/sys/dev/random/random_harvestq.c b/sys/dev/random/random_harvestq.c index 6838cf23fb2e..1c0ba0774687 100644 --- a/sys/dev/random/random_harvestq.c +++ b/sys/dev/random/random_harvestq.c @@ -75,8 +75,6 @@ __FBSDID("$FreeBSD$"); static void random_kthread(void); static void random_sources_feed(void); -static u_int read_rate; - /* * Random must initialize much earlier than epoch, but we can initialize the * epoch code before SMP starts. Prior to SMP, we can safely bypass @@ -231,7 +229,7 @@ random_sources_feed(void) uint32_t entropy[HARVESTSIZE]; struct epoch_tracker et; struct random_sources *rrs; - u_int i, n, local_read_rate; + u_int i, n; bool rse_warm; rse_warm = epoch_inited; @@ -240,15 +238,10 @@ random_sources_feed(void) * Step over all of live entropy sources, and feed their output * to the system-wide RNG. */ - local_read_rate = atomic_readandclear_32(&read_rate); - /* Perform at least one read per round */ - local_read_rate = MAX(local_read_rate, 1); - /* But not exceeding RANDOM_KEYSIZE_WORDS */ - local_read_rate = MIN(local_read_rate, RANDOM_KEYSIZE_WORDS); if (rse_warm) epoch_enter_preempt(rs_epoch, &et); CK_LIST_FOREACH(rrs, &source_list, rrs_entries) { - for (i = 0; i < p_random_alg_context->ra_poolcount*local_read_rate; i++) { + for (i = 0; i < p_random_alg_context->ra_poolcount; i++) { n = rrs->rrs_source->rs_read(entropy, sizeof(entropy)); KASSERT((n <= sizeof(entropy)), ("%s: rs_read returned too much data (%u > %zu)", __func__, n, sizeof(entropy))); /* @@ -276,7 +269,7 @@ void read_rate_increment(u_int chunk) { - atomic_add_32(&read_rate, chunk); + /* Stubbed to maintain KBI; removed in FreeBSD 14.0. */ } /* ARGSUSED */ diff --git a/sys/dev/random/randomdev.c b/sys/dev/random/randomdev.c index 114246415aa6..4b032cd3feb9 100644 --- a/sys/dev/random/randomdev.c +++ b/sys/dev/random/randomdev.c @@ -187,7 +187,6 @@ int if (error != 0) return (error); - read_rate_increment(howmany(uio->uio_resid + 1, sizeof(uint32_t))); total_read = 0; /* Easy to deal with the trivial 0 byte case. */ @@ -286,7 +285,6 @@ void (void)randomdev_wait_until_seeded(SEEDWAIT_UNINTERRUPTIBLE); } - read_rate_increment(roundup2(len, sizeof(uint32_t))); p_random_alg_context->ra_read(random_buf, len); } From nobody Wed Oct 6 07:00:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EFA6712D43EA; Wed, 6 Oct 2021 07:00: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 4HPQLv65ySz3QVG; Wed, 6 Oct 2021 07:00: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 AEC191B9C7; Wed, 6 Oct 2021 07:00: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 1967071g014504; Wed, 6 Oct 2021 07:00:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196707Dv014501; Wed, 6 Oct 2021 07:00:07 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:00:07 GMT Message-Id: <202110060700.196707Dv014501@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 06248c821580 - stable/13 - kern: random: collect ~16x less from fast-entropy sources List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 06248c82158019f30a18494e7ce91ac5f9524452 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=06248c82158019f30a18494e7ce91ac5f9524452 commit 06248c82158019f30a18494e7ce91ac5f9524452 Author: Kyle Evans AuthorDate: 2021-09-20 05:46:21 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 06:44:07 +0000 kern: random: collect ~16x less from fast-entropy sources Previously, we were collecting at a base rate of: 64 bits x 32 pools x 10 Hz = 2.5 kB/s This change drops it to closer to 64-ish bits per pool per second, to work a little better with entropy providers in virtualized environments without compromising the security goals of Fortuna. (cherry picked from commit 5e79bba562bc303eed669dbd0d391b6c6a9c289b) --- sys/dev/random/random_harvestq.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/sys/dev/random/random_harvestq.c b/sys/dev/random/random_harvestq.c index 1c0ba0774687..563ff73a3d38 100644 --- a/sys/dev/random/random_harvestq.c +++ b/sys/dev/random/random_harvestq.c @@ -72,6 +72,13 @@ __FBSDID("$FreeBSD$"); #define _RANDOM_HARVEST_UMA_OFF (1u << RANDOM_UMA) #endif +/* + * Note that random_sources_feed() will also use this to try and split up + * entropy into a subset of pools per iteration with the goal of feeding + * HARVESTSIZE into every pool at least once per second. + */ +#define RANDOM_KTHREAD_HZ 10 + static void random_kthread(void); static void random_sources_feed(void); @@ -199,7 +206,8 @@ random_kthread(void) } } /* XXX: FIX!! This is a *great* place to pass hardware/live entropy to random(9) */ - tsleep_sbt(&harvest_context.hc_kthread_proc, 0, "-", SBT_1S/10, 0, C_PREL(1)); + tsleep_sbt(&harvest_context.hc_kthread_proc, 0, "-", + SBT_1S/RANDOM_KTHREAD_HZ, 0, C_PREL(1)); } random_kthread_control = -1; wakeup(&harvest_context.hc_kthread_proc); @@ -229,11 +237,23 @@ random_sources_feed(void) uint32_t entropy[HARVESTSIZE]; struct epoch_tracker et; struct random_sources *rrs; - u_int i, n; + u_int i, n, npools; bool rse_warm; rse_warm = epoch_inited; + /* + * Evenly-ish distribute pool population across the second based on how + * frequently random_kthread iterates. + * + * For Fortuna, the math currently works out as such: + * + * 64 bits * 4 pools = 256 bits per iteration + * 256 bits * 10 Hz = 2560 bits per second, 320 B/s + * + */ + npools = howmany(p_random_alg_context->ra_poolcount, RANDOM_KTHREAD_HZ); + /* * Step over all of live entropy sources, and feed their output * to the system-wide RNG. @@ -241,7 +261,7 @@ random_sources_feed(void) if (rse_warm) epoch_enter_preempt(rs_epoch, &et); CK_LIST_FOREACH(rrs, &source_list, rrs_entries) { - for (i = 0; i < p_random_alg_context->ra_poolcount; i++) { + for (i = 0; i < npools; i++) { n = rrs->rrs_source->rs_read(entropy, sizeof(entropy)); KASSERT((n <= sizeof(entropy)), ("%s: rs_read returned too much data (%u > %zu)", __func__, n, sizeof(entropy))); /* From nobody Wed Oct 6 07:04:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 92B0712D5840; Wed, 6 Oct 2021 07:04: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 4HPQS53Z5nz3hWH; Wed, 6 Oct 2021 07:04: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 559B91BC4D; Wed, 6 Oct 2021 07:04: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 19674b5p024444; Wed, 6 Oct 2021 07:04:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19674biZ024443; Wed, 6 Oct 2021 07:04:37 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:04:37 GMT Message-Id: <202110060704.19674biZ024443@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 121740e18515 - stable/13 - kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIME List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 121740e18515f56f54931c3d0dbbca620175c2a8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=121740e18515f56f54931c3d0dbbca620175c2a8 commit 121740e18515f56f54931c3d0dbbca620175c2a8 Author: Kyle Evans AuthorDate: 2021-09-29 19:55:59 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:03:53 +0000 kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIME NOTE_ABSTIME values are converted to values relative to boottime in filt_timervalidate(), and negative values are currently rejected. We don't reject times in the past in general, so clamp this up to 0 as needed such that the timer fires immediately rather than imposing what looks like an arbitrary restriction. Another possible scenario is that the system clock had to be adjusted by ~minutes or ~hours and we have less than that in terms of uptime, making a reasonable short-timeout suddenly invalid. Firing it is still a valid choice in this scenario so that applications can at least expect a consistent behavior. (cherry picked from commit 9c999a259f00b35f0467acd351fea9157ed7e1e4) (cherry picked from commit 2f4dbe279f6b5eb87ec493d96f6943ffdb603ba0) --- sys/kern/kern_event.c | 12 +++- tests/sys/kqueue/libkqueue/timer.c | 114 +++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index 91895d341184..2e9773ab5701 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -798,13 +798,13 @@ filt_timervalidate(struct knote *kn, sbintime_t *to) return (EINVAL); *to = timer2sbintime(kn->kn_sdata, kn->kn_sfflags); + if (*to < 0) + return (EINVAL); if ((kn->kn_sfflags & NOTE_ABSTIME) != 0) { getboottimebin(&bt); sbt = bttosbt(bt); - *to -= sbt; + *to = MAX(0, *to - sbt); } - if (*to < 0) - return (EINVAL); return (0); } @@ -815,9 +815,15 @@ filt_timerattach(struct knote *kn) sbintime_t to; int error; + to = -1; error = filt_timervalidate(kn, &to); if (error != 0) return (error); + KASSERT(to > 0 || (kn->kn_flags & EV_ONESHOT) != 0 || + (kn->kn_sfflags & NOTE_ABSTIME) != 0, + ("%s: periodic timer has a calculated zero timeout", __func__)); + KASSERT(to >= 0, + ("%s: timer has a calculated negative timeout", __func__)); if (atomic_fetchadd_int(&kq_ncallouts, 1) + 1 > kq_calloutmax) { atomic_subtract_int(&kq_ncallouts, 1); diff --git a/tests/sys/kqueue/libkqueue/timer.c b/tests/sys/kqueue/libkqueue/timer.c index cb22887be276..330c22c62bc5 100644 --- a/tests/sys/kqueue/libkqueue/timer.c +++ b/tests/sys/kqueue/libkqueue/timer.c @@ -247,6 +247,117 @@ test_abstime(void) success(); } +static void +test_abstime_epoch(void) +{ + const char *test_id = "kevent(EVFILT_TIMER (EPOCH), NOTE_ABSTIME)"; + struct kevent kev; + + test_begin(test_id); + + test_no_kevents(); + + EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD, NOTE_ABSTIME, 0, + NULL); + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + /* Retrieve the event */ + kev.flags = EV_ADD; + kev.data = 1; + kev.fflags = 0; + kevent_cmp(&kev, kevent_get(kqfd)); + + /* Delete the event */ + kev.flags = EV_DELETE; + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + success(); +} + +static void +test_abstime_preboot(void) +{ + const char *test_id = "kevent(EVFILT_TIMER (PREBOOT), EV_ONESHOT, NOTE_ABSTIME)"; + struct kevent kev; + struct timespec btp; + uint64_t end, start, stop; + + test_begin(test_id); + + test_no_kevents(); + + /* + * We'll expire it at just before system boot (roughly) with the hope that + * we'll get an ~immediate expiration, just as we do for any value specified + * between system boot and now. + */ + start = now(); + if (clock_gettime(CLOCK_BOOTTIME, &btp) != 0) + err(1, "%s", test_id); + + end = start - SEC_TO_US(btp.tv_sec + 1); + EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD | EV_ONESHOT, + NOTE_ABSTIME | NOTE_USECONDS, end, NULL); + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + /* Retrieve the event */ + kev.flags = EV_ADD | EV_ONESHOT; + kev.data = 1; + kev.fflags = 0; + kevent_cmp(&kev, kevent_get(kqfd)); + + stop = now(); + if (stop < end) + err(1, "too early %jd %jd", (intmax_t)stop, (intmax_t)end); + /* Check if the event occurs again */ + sleep(3); + test_no_kevents(); + + success(); +} + +static void +test_abstime_postboot(void) +{ + const char *test_id = "kevent(EVFILT_TIMER (POSTBOOT), EV_ONESHOT, NOTE_ABSTIME)"; + struct kevent kev; + uint64_t end, start, stop; + const int timeout_sec = 1; + + test_begin(test_id); + + test_no_kevents(); + + /* + * Set a timer for 1 second ago, it should fire immediately rather than + * being rejected. + */ + start = now(); + end = start - SEC_TO_US(timeout_sec); + EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD | EV_ONESHOT, + NOTE_ABSTIME | NOTE_USECONDS, end, NULL); + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + /* Retrieve the event */ + kev.flags = EV_ADD | EV_ONESHOT; + kev.data = 1; + kev.fflags = 0; + kevent_cmp(&kev, kevent_get(kqfd)); + + stop = now(); + if (stop < end) + err(1, "too early %jd %jd", (intmax_t)stop, (intmax_t)end); + /* Check if the event occurs again */ + sleep(3); + test_no_kevents(); + + success(); +} + static void test_update(void) { @@ -517,6 +628,9 @@ test_evfilt_timer(void) test_oneshot(); test_periodic(); test_abstime(); + test_abstime_epoch(); + test_abstime_preboot(); + test_abstime_postboot(); test_update(); test_update_equal(); test_update_expired(); From nobody Wed Oct 6 07:04:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 10B3D12D5759; Wed, 6 Oct 2021 07:04: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 4HPQS65GFmz3h87; Wed, 6 Oct 2021 07:04: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 791E61BC4F; Wed, 6 Oct 2021 07:04: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 19674crt024469; Wed, 6 Oct 2021 07:04:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19674cdg024468; Wed, 6 Oct 2021 07:04:38 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:04:38 GMT Message-Id: <202110060704.19674cdg024468@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: b7e90b290ab5 - stable/13 - kqueue: document how timers with low/past timeouts are handled List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b7e90b290ab511dbbf1f1598e49092aaa73599e6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=b7e90b290ab511dbbf1f1598e49092aaa73599e6 commit b7e90b290ab511dbbf1f1598e49092aaa73599e6 Author: Kyle Evans AuthorDate: 2021-09-30 18:19:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:04:00 +0000 kqueue: document how timers with low/past timeouts are handled (cherry picked from commit 4b5554cebb66020f59dc869b835aebbd66e4bb8c) --- lib/libc/sys/kqueue.2 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/libc/sys/kqueue.2 b/lib/libc/sys/kqueue.2 index ed737c626ef8..ffcddc00303f 100644 --- a/lib/libc/sys/kqueue.2 +++ b/lib/libc/sys/kqueue.2 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 7, 2021 +.Dd October 6, 2021 .Dt KQUEUE 2 .Os .Sh NAME @@ -584,6 +584,12 @@ On return, .Va fflags contains the events which triggered the filter. .Pp +Periodic timers with a specified timeout of 0 will be silently adjusted to +timeout after 1 of the time units specified by the requested precision in +.Va fflags . +If an absolute time is specified that has already passed, then it is treated as +if the current time were specified and the event will fire as soon as possible. +.Pp If an existing timer is re-added, the existing timer will be effectively canceled (throwing away any undelivered record of previous timer expiration) and re-started using the new parameters contained in From nobody Wed Oct 6 07:07:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EA26D12D703B; Wed, 6 Oct 2021 07:07: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 4HPQWQ3C7zz3jcT; Wed, 6 Oct 2021 07:07: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 16B7E1BC51; Wed, 6 Oct 2021 07:07: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 19677TMg025191; Wed, 6 Oct 2021 07:07:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19677TIX025190; Wed, 6 Oct 2021 07:07:29 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:07:29 GMT Message-Id: <202110060707.19677TIX025190@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f9765c9c1acb - stable/12 - kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIME List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f9765c9c1acbd42c074841c96c0e84d32ad1b1a1 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f9765c9c1acbd42c074841c96c0e84d32ad1b1a1 commit f9765c9c1acbd42c074841c96c0e84d32ad1b1a1 Author: Kyle Evans AuthorDate: 2021-09-29 19:55:59 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:07:07 +0000 kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIME NOTE_ABSTIME values are converted to values relative to boottime in filt_timervalidate(), and negative values are currently rejected. We don't reject times in the past in general, so clamp this up to 0 as needed such that the timer fires immediately rather than imposing what looks like an arbitrary restriction. Another possible scenario is that the system clock had to be adjusted by ~minutes or ~hours and we have less than that in terms of uptime, making a reasonable short-timeout suddenly invalid. Firing it is still a valid choice in this scenario so that applications can at least expect a consistent behavior. (cherry picked from commit 9c999a259f00b35f0467acd351fea9157ed7e1e4) (cherry picked from commit 2f4dbe279f6b5eb87ec493d96f6943ffdb603ba0) --- sys/kern/kern_event.c | 12 +++- tests/sys/kqueue/libkqueue/timer.c | 114 +++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index af611281ee68..d6f4516a265c 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -721,13 +721,13 @@ filt_timervalidate(struct knote *kn, sbintime_t *to) return (EINVAL); *to = timer2sbintime(kn->kn_sdata, kn->kn_sfflags); + if (*to < 0) + return (EINVAL); if ((kn->kn_sfflags & NOTE_ABSTIME) != 0) { getboottimebin(&bt); sbt = bttosbt(bt); - *to -= sbt; + *to = MAX(0, *to - sbt); } - if (*to < 0) - return (EINVAL); return (0); } @@ -739,9 +739,15 @@ filt_timerattach(struct knote *kn) unsigned int ncallouts; int error; + to = -1; error = filt_timervalidate(kn, &to); if (error != 0) return (error); + KASSERT(to > 0 || (kn->kn_flags & EV_ONESHOT) != 0 || + (kn->kn_sfflags & NOTE_ABSTIME) != 0, + ("%s: periodic timer has a calculated zero timeout", __func__)); + KASSERT(to >= 0, + ("%s: timer has a calculated negative timeout", __func__)); do { ncallouts = kq_ncallouts; diff --git a/tests/sys/kqueue/libkqueue/timer.c b/tests/sys/kqueue/libkqueue/timer.c index 1861030d697a..81ab364b796c 100644 --- a/tests/sys/kqueue/libkqueue/timer.c +++ b/tests/sys/kqueue/libkqueue/timer.c @@ -247,6 +247,117 @@ test_abstime(void) success(); } +static void +test_abstime_epoch(void) +{ + const char *test_id = "kevent(EVFILT_TIMER (EPOCH), NOTE_ABSTIME)"; + struct kevent kev; + + test_begin(test_id); + + test_no_kevents(); + + EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD, NOTE_ABSTIME, 0, + NULL); + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + /* Retrieve the event */ + kev.flags = EV_ADD; + kev.data = 1; + kev.fflags = 0; + kevent_cmp(&kev, kevent_get(kqfd)); + + /* Delete the event */ + kev.flags = EV_DELETE; + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + success(); +} + +static void +test_abstime_preboot(void) +{ + const char *test_id = "kevent(EVFILT_TIMER (PREBOOT), EV_ONESHOT, NOTE_ABSTIME)"; + struct kevent kev; + struct timespec btp; + uint64_t end, start, stop; + + test_begin(test_id); + + test_no_kevents(); + + /* + * We'll expire it at just before system boot (roughly) with the hope that + * we'll get an ~immediate expiration, just as we do for any value specified + * between system boot and now. + */ + start = now(); + if (clock_gettime(CLOCK_BOOTTIME, &btp) != 0) + err(1, "%s", test_id); + + end = start - SEC_TO_US(btp.tv_sec + 1); + EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD | EV_ONESHOT, + NOTE_ABSTIME | NOTE_USECONDS, end, NULL); + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + /* Retrieve the event */ + kev.flags = EV_ADD | EV_ONESHOT; + kev.data = 1; + kev.fflags = 0; + kevent_cmp(&kev, kevent_get(kqfd)); + + stop = now(); + if (stop < end) + err(1, "too early %jd %jd", (intmax_t)stop, (intmax_t)end); + /* Check if the event occurs again */ + sleep(3); + test_no_kevents(); + + success(); +} + +static void +test_abstime_postboot(void) +{ + const char *test_id = "kevent(EVFILT_TIMER (POSTBOOT), EV_ONESHOT, NOTE_ABSTIME)"; + struct kevent kev; + uint64_t end, start, stop; + const int timeout_sec = 1; + + test_begin(test_id); + + test_no_kevents(); + + /* + * Set a timer for 1 second ago, it should fire immediately rather than + * being rejected. + */ + start = now(); + end = start - SEC_TO_US(timeout_sec); + EV_SET(&kev, vnode_fd, EVFILT_TIMER, EV_ADD | EV_ONESHOT, + NOTE_ABSTIME | NOTE_USECONDS, end, NULL); + if (kevent(kqfd, &kev, 1, NULL, 0, NULL) < 0) + err(1, "%s", test_id); + + /* Retrieve the event */ + kev.flags = EV_ADD | EV_ONESHOT; + kev.data = 1; + kev.fflags = 0; + kevent_cmp(&kev, kevent_get(kqfd)); + + stop = now(); + if (stop < end) + err(1, "too early %jd %jd", (intmax_t)stop, (intmax_t)end); + /* Check if the event occurs again */ + sleep(3); + test_no_kevents(); + + success(); +} + static void test_update(void) { @@ -517,6 +628,9 @@ test_evfilt_timer() test_oneshot(); test_periodic(); test_abstime(); + test_abstime_epoch(); + test_abstime_preboot(); + test_abstime_postboot(); test_update(); test_update_equal(); test_update_expired(); From nobody Wed Oct 6 07:07:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8D6F612D6FCC; Wed, 6 Oct 2021 07:07: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 4HPQWR2SQfz3jZG; Wed, 6 Oct 2021 07:07: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 3129E1BE21; Wed, 6 Oct 2021 07:07: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 19677VsA025215; Wed, 6 Oct 2021 07:07:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19677VwB025214; Wed, 6 Oct 2021 07:07:31 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:07:31 GMT Message-Id: <202110060707.19677VwB025214@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 0646c56e244e - stable/12 - kqueue: document how timers with low/past timeouts are handled List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 0646c56e244ea51006c252cb91c2577290dba74e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=0646c56e244ea51006c252cb91c2577290dba74e commit 0646c56e244ea51006c252cb91c2577290dba74e Author: Kyle Evans AuthorDate: 2021-09-30 18:19:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:07:16 +0000 kqueue: document how timers with low/past timeouts are handled (cherry picked from commit 4b5554cebb66020f59dc869b835aebbd66e4bb8c) --- lib/libc/sys/kqueue.2 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/libc/sys/kqueue.2 b/lib/libc/sys/kqueue.2 index 95fc86d01a83..620b8e31a61d 100644 --- a/lib/libc/sys/kqueue.2 +++ b/lib/libc/sys/kqueue.2 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 1, 2020 +.Dd October 6, 2021 .Dt KQUEUE 2 .Os .Sh NAME @@ -563,6 +563,12 @@ On return, .Va fflags contains the events which triggered the filter. .Pp +Periodic timers with a specified timeout of 0 will be silently adjusted to +timeout after 1 of the time units specified by the requested precision in +.Va fflags . +If an absolute time is specified that has already passed, then it is treated as +if the current time were specified and the event will fire as soon as possible. +.Pp If an existing timer is re-added, the existing timer will be effectively canceled (throwing away any undelivered record of previous timer expiration) and re-started using the new parameters contained in From nobody Wed Oct 6 07:11:50 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2922512D8238; Wed, 6 Oct 2021 07:11: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 4HPQcR0kPJz3khW; Wed, 6 Oct 2021 07:11: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 ED0551BE39; Wed, 6 Oct 2021 07:11: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 1967Bo0l037133; Wed, 6 Oct 2021 07:11:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967BoHG037132; Wed, 6 Oct 2021 07:11:50 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:11:50 GMT Message-Id: <202110060711.1967BoHG037132@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 7610a6b150c9 - stable/13 - modules: acpi_video: need opt_evdev.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7610a6b150c9c19be5d5956c4a1d6fc504ab32de Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7610a6b150c9c19be5d5956c4a1d6fc504ab32de commit 7610a6b150c9c19be5d5956c4a1d6fc504ab32de Author: Kyle Evans AuthorDate: 2021-09-30 04:04:00 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:09:58 +0000 modules: acpi_video: need opt_evdev.h This fixes the standalone build. (cherry picked from commit 58ca99d11648f0b1749a4b29f534e87b0d88b83a) --- sys/modules/acpi/acpi_video/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/modules/acpi/acpi_video/Makefile b/sys/modules/acpi/acpi_video/Makefile index 803598144a9a..d2556c8a56dc 100644 --- a/sys/modules/acpi/acpi_video/Makefile +++ b/sys/modules/acpi/acpi_video/Makefile @@ -4,6 +4,6 @@ KMOD= acpi_video SRCS= acpi_video.c -SRCS+= opt_acpi.h acpi_if.h bus_if.h device_if.h +SRCS+= opt_acpi.h opt_evdev.h acpi_if.h bus_if.h device_if.h .include From nobody Wed Oct 6 07:11:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7FF5E12D842E; Wed, 6 Oct 2021 07:11: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 4HPQcS2BVCz3kff; Wed, 6 Oct 2021 07:11: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 1F8991BC6D; Wed, 6 Oct 2021 07:11: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 1967BquM037162; Wed, 6 Oct 2021 07:11:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967Bq9j037161; Wed, 6 Oct 2021 07:11:52 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:11:52 GMT Message-Id: <202110060711.1967Bq9j037161@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 38e0682c8c23 - stable/13 - modules: netflow: need opt_inet.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 38e0682c8c23f02d6fa2bd77fdee94902e7ca25e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=38e0682c8c23f02d6fa2bd77fdee94902e7ca25e commit 38e0682c8c23f02d6fa2bd77fdee94902e7ca25e Author: Kyle Evans AuthorDate: 2021-09-30 04:04:18 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:10:20 +0000 modules: netflow: need opt_inet.h This fixes the standalone build. (cherry picked from commit 6caae81d93e2a14fa42cb831506c3a60c25d9791) --- sys/modules/netgraph/netflow/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/modules/netgraph/netflow/Makefile b/sys/modules/netgraph/netflow/Makefile index 365c99b3ddbe..35e8e6db7f36 100644 --- a/sys/modules/netgraph/netflow/Makefile +++ b/sys/modules/netgraph/netflow/Makefile @@ -6,6 +6,6 @@ .PATH: ${SRCTOP}/sys/netgraph/netflow KMOD= ng_netflow -SRCS= ng_netflow.c netflow.c netflow_v9.c opt_inet6.h opt_route.h +SRCS= ng_netflow.c netflow.c netflow_v9.c opt_inet.h opt_inet6.h opt_route.h .include From nobody Wed Oct 6 07:11:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B294E12D81D8; Wed, 6 Oct 2021 07:11: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 4HPQcT3YFcz3l3t; Wed, 6 Oct 2021 07:11: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 4801A1BC6F; Wed, 6 Oct 2021 07:11: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 1967Brob037191; Wed, 6 Oct 2021 07:11:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967BrRF037190; Wed, 6 Oct 2021 07:11:53 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:11:53 GMT Message-Id: <202110060711.1967BrRF037190@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: bd4ee4ead167 - stable/13 - modules: iichid: needs opt_acpi.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: bd4ee4ead167259a784f0fb76c58e6c2f1fc53bd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=bd4ee4ead167259a784f0fb76c58e6c2f1fc53bd commit bd4ee4ead167259a784f0fb76c58e6c2f1fc53bd Author: Kyle Evans AuthorDate: 2021-09-30 03:47:15 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:10:54 +0000 modules: iichid: needs opt_acpi.h This fixes the standalone build. (cherry picked from commit 335c4f8edb3a02ea101b0f833c22182594e63c9e) --- sys/modules/i2c/iichid/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/modules/i2c/iichid/Makefile b/sys/modules/i2c/iichid/Makefile index 36cdb3127088..a6affe1d76fc 100644 --- a/sys/modules/i2c/iichid/Makefile +++ b/sys/modules/i2c/iichid/Makefile @@ -3,6 +3,7 @@ .PATH: ${SRCTOP}/sys/dev/iicbus KMOD = iichid SRCS = iichid.c -SRCS += acpi_if.h bus_if.h device_if.h hid_if.h iicbus_if.h opt_hid.h +SRCS += acpi_if.h bus_if.h device_if.h hid_if.h iicbus_if.h +SRCS += opt_acpi.h opt_hid.h .include From nobody Wed Oct 6 07:13:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CF47B12D9912; Wed, 6 Oct 2021 07:13: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 4HPQfV5P0yz3mJR; Wed, 6 Oct 2021 07:13: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 999D01BE48; Wed, 6 Oct 2021 07:13: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 1967DcVj038297; Wed, 6 Oct 2021 07:13:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967DcrP038296; Wed, 6 Oct 2021 07:13:38 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:13:38 GMT Message-Id: <202110060713.1967DcrP038296@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 44175ec8ce4d - stable/13 - jail(3lua): add a jail.list() method List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 44175ec8ce4dd3ce76b3bd08eeb51b12edb7d5e3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=44175ec8ce4dd3ce76b3bd08eeb51b12edb7d5e3 commit 44175ec8ce4dd3ce76b3bd08eeb51b12edb7d5e3 Author: Kyle Evans AuthorDate: 2020-10-13 02:11:14 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:13:23 +0000 jail(3lua): add a jail.list() method This is implemented as an iterator, reusing parts of the earlier logic to populate jailparams from a passed in table. The user may request any number of parameters to pull in while we're searching, but we'll force jid and name to appear at a minimum. (cherry picked from commit 6a7647eccd3ef35189c63a61b0ec8865fd559839) --- lib/flua/libjail/jail.3lua | 47 ++++++ lib/flua/libjail/lua_jail.c | 322 +++++++++++++++++++++++++++++++++++----- share/examples/flua/libjail.lua | 55 ++++++- 3 files changed, 385 insertions(+), 39 deletions(-) diff --git a/lib/flua/libjail/jail.3lua b/lib/flua/libjail/jail.3lua index fb54b94844f5..aa1e0ec49616 100644 --- a/lib/flua/libjail/jail.3lua +++ b/lib/flua/libjail/jail.3lua @@ -32,6 +32,7 @@ .Sh NAME .Nm getid , .Nm getname , +.Nm list , .Nm allparams , .Nm getparams , .Nm setparams , @@ -50,6 +51,7 @@ local jail = require('jail') .It Dv jid, err = jail.getid(name) .It Dv name, err = jail.getname(jid) .It Dv params, err = jail.allparams() +.It Dv iter, jail_obj = jail.list([params]) .It Dv jid, res = jail.getparams(jid|name, params [, flags ] ) .It Dv jid, err = jail.setparams(jid|name, params, flags ) .It Dv jail.CREATE @@ -79,6 +81,21 @@ is the name of a jail or a jid in the form of a string. Get the name of a jail as a string for the given .Fa jid .Pq an integer . +.It Dv iter, jail_obj = jail.list([params]) +Returns an iterator over running jails on the system. +.Dv params +is a list of parameters to fetch for each jail as we iterate. +.Dv jid +and +.Dv name +will always be returned, and may be omitted from +.Dv params . +Additionally, +.Dv params +may be omitted or an empty table, but not nil. +.Pp +See +.Sx EXAMPLES . .It Dv params, err = jail.allparams() Get a list of all supported parameter names .Pq as strings . @@ -167,6 +184,10 @@ function returns a jail identifier integer and a table of jail parameters with parameter name strings as keys and strings for values on success, or .Dv nil and an error message string if an error occurred. +.Pp +The +.Fn list +function returns an iterator over the list of running jails. .Sh EXAMPLES Set the hostname of jail .Dq foo @@ -193,6 +214,32 @@ if not jid then end print(res["host.hostname"]) .Ed +.Pp +Iterate over jails on the system: +.Bd -literal -offset indent +local jail = require('jail') + +-- Recommended: just loop over it +for jparams in jail.list() do + print(jparams["jid"] .. " = " .. jparams["name"]) +end + +-- Request path and hostname, too +for jparams in jail.list({"path", "host.hostname"}) do + print(jparams["host.hostname"] .. " mounted at " .. jparams["path"]) +end + +-- Raw iteration protocol +local iter, jail_obj = jail.list() + +-- Request the first params +local jparams = jail_obj:next() +while jparams do + print(jparams["jid"] .. " = " .. jparams["name"]) + -- Subsequent calls may return nil + jparams = jail_obj:next() +end +.Ed .Sh SEE ALSO .Xr jail 2 , .Xr jail 3 , diff --git a/lib/flua/libjail/lua_jail.c b/lib/flua/libjail/lua_jail.c index b66c60b43bc8..7bb0e13cceea 100644 --- a/lib/flua/libjail/lua_jail.c +++ b/lib/flua/libjail/lua_jail.c @@ -2,6 +2,7 @@ * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020, Ryan Moeller + * Copyright (c) 2020, Kyle Evans * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -34,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -41,8 +43,222 @@ __FBSDID("$FreeBSD$"); #include #include +#define JAIL_METATABLE "jail iterator metatable" + +/* + * Taken from RhodiumToad's lspawn implementation, let static analyzers make + * better decisions about the behavior after we raise an error. + */ +#if defined(LUA_VERSION_NUM) && defined(LUA_API) +LUA_API int (lua_error) (lua_State *L) __dead2; +#endif +#if defined(LUA_ERRFILE) && defined(LUALIB_API) +LUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg) __dead2; +LUALIB_API int (luaL_typeerror) (lua_State *L, int arg, const char *tname) __dead2; +LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...) __dead2; +#endif + int luaopen_jail(lua_State *); +typedef bool (*getparam_filter)(const char *, void *); + +static void getparam_table(lua_State *L, int paramindex, + struct jailparam *params, size_t paramoff, size_t *params_countp, + getparam_filter keyfilt, void *udata); + +struct l_jail_iter { + struct jailparam *params; + size_t params_count; + int jid; +}; + +static bool +l_jail_filter(const char *param_name, void *data __unused) +{ + + /* + * Allowing lastjid will mess up our iteration over all jails on the + * system, as this is a special paramter that indicates where the search + * starts from. We'll always add jid and name, so just silently remove + * these. + */ + return (strcmp(param_name, "lastjid") != 0 && + strcmp(param_name, "jid") != 0 && + strcmp(param_name, "name") != 0); +} + +static int +l_jail_iter_next(lua_State *L) +{ + struct l_jail_iter *iter, **iterp; + struct jailparam *jp; + int serrno; + + iterp = (struct l_jail_iter **)luaL_checkudata(L, 1, JAIL_METATABLE); + iter = *iterp; + luaL_argcheck(L, iter != NULL, 1, "closed jail iterator"); + + jp = iter->params; + /* Populate lastjid; we must keep it in params[0] for our sake. */ + if (jailparam_import_raw(&jp[0], &iter->jid, sizeof(iter->jid))) { + jailparam_free(jp, iter->params_count); + free(jp); + free(iter); + *iterp = NULL; + return (luaL_error(L, "jailparam_import_raw: %s", jail_errmsg)); + } + + /* The list of requested params was populated back in l_list(). */ + iter->jid = jailparam_get(jp, iter->params_count, 0); + if (iter->jid == -1) { + /* + * We probably got an ENOENT to signify the end of the jail + * listing, but just in case we didn't; stash it off and start + * cleaning up. We'll handle non-ENOENT errors later. + */ + serrno = errno; + jailparam_free(jp, iter->params_count); + free(iter->params); + free(iter); + *iterp = NULL; + if (serrno != ENOENT) + return (luaL_error(L, "jailparam_get: %s", + strerror(serrno))); + return (0); + } + + /* + * Finally, we'll fill in the return table with whatever parameters the + * user requested, in addition to the ones we forced with exception to + * lastjid. + */ + lua_newtable(L); + for (size_t i = 0; i < iter->params_count; ++i) { + char *value; + + jp = &iter->params[i]; + if (strcmp(jp->jp_name, "lastjid") == 0) + continue; + value = jailparam_export(jp); + lua_pushstring(L, value); + lua_setfield(L, -2, jp->jp_name); + free(value); + } + + return (1); +} + +static int +l_jail_iter_close(lua_State *L) +{ + struct l_jail_iter *iter, **iterp; + + /* + * Since we're using this as the __gc method as well, there's a good + * chance that it's already been cleaned up by iterating to the end of + * the list. + */ + iterp = (struct l_jail_iter **)lua_touserdata(L, 1); + iter = *iterp; + if (iter == NULL) + return (0); + + jailparam_free(iter->params, iter->params_count); + free(iter->params); + free(iter); + *iterp = NULL; + return (0); +} + +static int +l_list(lua_State *L) +{ + struct l_jail_iter *iter; + int nargs; + + nargs = lua_gettop(L); + if (nargs >= 1) + luaL_checktype(L, 1, LUA_TTABLE); + + iter = malloc(sizeof(*iter)); + if (iter == NULL) + return (luaL_error(L, "malloc: %s", strerror(errno))); + + /* + * lastjid, jid, name + length of the table. This may be too much if + * we have duplicated one of those fixed parameters. + */ + iter->params_count = 3 + (nargs != 0 ? lua_rawlen(L, 1) : 0); + iter->params = malloc(iter->params_count * sizeof(*iter->params)); + if (iter->params == NULL) { + free(iter); + return (luaL_error(L, "malloc params: %s", strerror(errno))); + } + + /* The :next() method will populate lastjid before jail_getparam(). */ + if (jailparam_init(&iter->params[0], "lastjid") == -1) { + free(iter->params); + free(iter); + return (luaL_error(L, "jailparam_init: %s", jail_errmsg)); + } + /* These two will get populated by jail_getparam(). */ + if (jailparam_init(&iter->params[1], "jid") == -1) { + jailparam_free(iter->params, 1); + free(iter->params); + free(iter); + return (luaL_error(L, "jailparam_init: %s", + jail_errmsg)); + } + if (jailparam_init(&iter->params[2], "name") == -1) { + jailparam_free(iter->params, 2); + free(iter->params); + free(iter); + return (luaL_error(L, "jailparam_init: %s", + jail_errmsg)); + } + + /* + * We only need to process additional arguments if we were given any. + * That is, we don't descend into getparam_table if we're passed nothing + * or an empty table. + */ + iter->jid = 0; + if (iter->params_count != 3) + getparam_table(L, 1, iter->params, 2, &iter->params_count, + l_jail_filter, NULL); + + /* + * Part of the iterator magic. We give it an iterator function with a + * metatable defining next() and close() that can be used for manual + * iteration. iter->jid is how we track which jail we last iterated, to + * be supplied as "lastjid". + */ + lua_pushcfunction(L, l_jail_iter_next); + *(struct l_jail_iter **)lua_newuserdata(L, + sizeof(struct l_jail_iter **)) = iter; + luaL_getmetatable(L, JAIL_METATABLE); + lua_setmetatable(L, -2); + return (2); +} + +static void +register_jail_metatable(lua_State *L) +{ + luaL_newmetatable(L, JAIL_METATABLE); + lua_newtable(L); + lua_pushcfunction(L, l_jail_iter_next); + lua_setfield(L, -2, "next"); + lua_pushcfunction(L, l_jail_iter_close); + lua_setfield(L, -2, "close"); + + lua_setfield(L, -2, "__index"); + + lua_pushcfunction(L, l_jail_iter_close); + lua_setfield(L, -2, "__gc"); + + lua_pop(L, 1); +} + static int l_getid(lua_State *L) { @@ -100,12 +316,71 @@ l_allparams(lua_State *L) return (1); } +static void +getparam_table(lua_State *L, int paramindex, struct jailparam *params, + size_t params_off, size_t *params_countp, getparam_filter keyfilt, + void *udata) +{ + size_t params_count; + int skipped; + + params_count = *params_countp; + skipped = 0; + for (size_t i = 1 + params_off; i < params_count; ++i) { + const char *param_name; + + lua_rawgeti(L, -1, i - params_off); + param_name = lua_tostring(L, -1); + if (param_name == NULL) { + jailparam_free(params, i - skipped); + free(params); + luaL_argerror(L, paramindex, + "param names must be strings"); + } + lua_pop(L, 1); + if (keyfilt != NULL && !keyfilt(param_name, udata)) { + ++skipped; + continue; + } + if (jailparam_init(¶ms[i - skipped], param_name) == -1) { + jailparam_free(params, i - skipped); + free(params); + luaL_error(L, "jailparam_init: %s", jail_errmsg); + } + } + *params_countp -= skipped; +} + +struct getparams_filter_args { + int filter_type; +}; + +static bool +l_getparams_filter(const char *param_name, void *udata) +{ + struct getparams_filter_args *gpa; + + gpa = udata; + + /* Skip name or jid, whichever was given. */ + if (gpa->filter_type == LUA_TSTRING) { + if (strcmp(param_name, "name") == 0) + return (false); + } else /* type == LUA_TNUMBER */ { + if (strcmp(param_name, "jid") == 0) + return (false); + } + + return (true); +} + static int l_getparams(lua_State *L) { const char *name; struct jailparam *params; - size_t params_count, skipped; + size_t params_count; + struct getparams_filter_args gpa; int flags, jid, type; type = lua_type(L, 1); @@ -154,40 +429,8 @@ l_getparams(lua_State *L) /* * Set the remaining param names being requested. */ - - skipped = 0; - for (size_t i = 1; i < params_count; ++i) { - const char *param_name; - - lua_rawgeti(L, -1, i); - param_name = lua_tostring(L, -1); - if (param_name == NULL) { - jailparam_free(params, i - skipped); - free(params); - return (luaL_argerror(L, 2, - "param names must be strings")); - } - lua_pop(L, 1); - /* Skip name or jid, whichever was given. */ - if (type == LUA_TSTRING) { - if (strcmp(param_name, "name") == 0) { - ++skipped; - continue; - } - } else /* type == LUA_TNUMBER */ { - if (strcmp(param_name, "jid") == 0) { - ++skipped; - continue; - } - } - if (jailparam_init(¶ms[i - skipped], param_name) == -1) { - jailparam_free(params, i - skipped); - free(params); - return (luaL_error(L, "jailparam_init: %s", - jail_errmsg)); - } - } - params_count -= skipped; + gpa.filter_type = type; + getparam_table(L, 2, params, 0, ¶ms_count, l_getparams_filter, &gpa); /* * Get the values and convert to a table. @@ -366,6 +609,13 @@ static const struct luaL_Reg l_jail[] = { * or nil, error (string) on error */ {"setparams", l_setparams}, + /** Get a list of jail parameters for running jails on the system. + * @param params optional list of parameter names (table of + * strings) + * @return iterator (function), jail_obj (object) with next and + * close methods + */ + {"list", l_list}, {NULL, NULL} }; @@ -385,5 +635,7 @@ luaopen_jail(lua_State *L) lua_pushinteger(L, JAIL_DYING); lua_setfield(L, -2, "DYING"); + register_jail_metatable(L); + return (1); } diff --git a/share/examples/flua/libjail.lua b/share/examples/flua/libjail.lua index 3ff878460d2f..1761f5c86b24 100644 --- a/share/examples/flua/libjail.lua +++ b/share/examples/flua/libjail.lua @@ -35,10 +35,23 @@ ucl = require("ucl") name = "demo" --- Create a persistent jail named "demo" with all other parameters default. -jid, err = jail.setparams(name, {persist = "true"}, jail.CREATE) -if not jid then - error(err) +local has_demo = false + +-- Make sure we don't have a demo jail to start with; "jid" and "name" are +-- always present. +for jparams in jail.list() do + if jparams["name"] == name then + has_demo = true + break + end +end + +if not has_demo then + -- Create a persistent jail named "demo" with all other parameters default. + jid, err = jail.setparams(name, {persist = "true"}, jail.CREATE) + if not jid then + error(err) + end end -- Get a list of all known jail parameter names. @@ -53,8 +66,42 @@ end -- Display the jail's parameters as a pretty-printed JSON object. print(ucl.to_json(res)) +-- Confirm that we still have it for now. +has_demo = false +for jparams in jail.list() do + if jparams["name"] == name then + has_demo = true + break + end +end + +if not has_demo then + print("demo does not exist") +end + -- Update the "persist" parameter to "false" to remove the jail. jid, err = jail.setparams(name, {persist = "false"}, jail.UPDATE) if not jid then error(err) end + +-- Verify that the jail is no longer on the system. +local is_persistent = false +has_demo = false +for jparams in jail.list({"persist"}) do + if jparams["name"] == name then + has_demo = true + jid = jparams["jid"] + is_persistent = jparams["persist"] ~= "false" + end +end + +-- In fact, it does remain until this process ends -- c'est la vie. +if has_demo then + io.write("demo still exists, jid " .. jid .. ", ") + if is_persistent then + io.write("persistent\n") + else + io.write("not persistent\n") + end +end From nobody Wed Oct 6 07:13:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 83FD812D9918; Wed, 6 Oct 2021 07:13: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 4HPQfW6Xjrz3mLt; Wed, 6 Oct 2021 07:13: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 BD4851BC7B; Wed, 6 Oct 2021 07:13: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 1967Ddi4038321; Wed, 6 Oct 2021 07:13:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967DdKa038320; Wed, 6 Oct 2021 07:13:39 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:13:39 GMT Message-Id: <202110060713.1967DdKa038320@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 188c088fe351 - stable/13 - jail(3lua): add jail.attach()/jail.remove() methods List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 188c088fe3510eea080f69a8db447fb9d21b2b73 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=188c088fe3510eea080f69a8db447fb9d21b2b73 commit 188c088fe3510eea080f69a8db447fb9d21b2b73 Author: Kyle Evans AuthorDate: 2020-10-23 17:52:31 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:13:27 +0000 jail(3lua): add jail.attach()/jail.remove() methods These aren't a part of or use libjail(3), but rather are direct syscalls. Still, they seem like good additions, allowing us to attach to already-running jails. (cherry picked from commit a6499c56ab6ca54f01dca44b7e34a0fc6a680e90) --- lib/flua/libjail/jail.3lua | 22 ++++++++++++++ lib/flua/libjail/lua_jail.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/lib/flua/libjail/jail.3lua b/lib/flua/libjail/jail.3lua index aa1e0ec49616..a0cb7ae1381e 100644 --- a/lib/flua/libjail/jail.3lua +++ b/lib/flua/libjail/jail.3lua @@ -30,11 +30,13 @@ .Dt JAIL 3lua .Os .Sh NAME +.Nm attach , .Nm getid , .Nm getname , .Nm list , .Nm allparams , .Nm getparams , +.Nm remove , .Nm setparams , .Nm CREATE , .Nm UPDATE , @@ -48,11 +50,13 @@ local jail = require('jail') .Ed .Pp .Bl -tag -width XXXX -compact +.It Dv ok, err = jail.attach(jid|name) .It Dv jid, err = jail.getid(name) .It Dv name, err = jail.getname(jid) .It Dv params, err = jail.allparams() .It Dv iter, jail_obj = jail.list([params]) .It Dv jid, res = jail.getparams(jid|name, params [, flags ] ) +.It Dv ok, err = jail.remove(jid|name) .It Dv jid, err = jail.setparams(jid|name, params, flags ) .It Dv jail.CREATE .It Dv jail.UPDATE @@ -71,6 +75,11 @@ and .Xr jail_set 2 system calls. .Bl -tag -width XXXX +.It Dv ok, err = jail.attach(jid|name) +Attach to the given jail, identified by an integer +.Fa jid +or the +.Fa name . .It Dv jid, err = jail.getid(name) Get the jail identifier .Pq jid @@ -114,6 +123,11 @@ See the list of flags below. Only the .Dv DYING flag is valid to set. +.It Dv ok, err = jail.remove(jid|name) +Remove the given jail, identified by an integer +.Fa jid +or the +.Fa name . .It Dv jid, err = jail.setparams(jid|name, params [, flags ] ) Set parameters for a given jail. This is used to create, update, attach to, or destroy a jail. @@ -188,6 +202,14 @@ and an error message string if an error occurred. The .Fn list function returns an iterator over the list of running jails. +.Pp +The +.Fn attach +and +.Fn remove +functions return true on success, or +.Dv nil +and an error message string if an error occurred. .Sh EXAMPLES Set the hostname of jail .Dq foo diff --git a/lib/flua/libjail/lua_jail.c b/lib/flua/libjail/lua_jail.c index 7bb0e13cceea..025694bf1181 100644 --- a/lib/flua/libjail/lua_jail.c +++ b/lib/flua/libjail/lua_jail.c @@ -575,6 +575,68 @@ l_setparams(lua_State *L) return (1); } +static int +l_attach(lua_State *L) +{ + int jid, type; + + type = lua_type(L, 1); + luaL_argcheck(L, type == LUA_TSTRING || type == LUA_TNUMBER, 1, + "expected a jail name (string) or id (integer)"); + + if (lua_isstring(L, 1)) { + /* Resolve it to a jid. */ + jid = jail_getid(lua_tostring(L, 1)); + if (jid == -1) { + lua_pushnil(L); + lua_pushstring(L, jail_errmsg); + return (2); + } + } else { + jid = lua_tointeger(L, 1); + } + + if (jail_attach(jid) == -1) { + lua_pushnil(L); + lua_pushstring(L, strerror(errno)); + return (2); + } + + lua_pushboolean(L, 1); + return (1); +} + +static int +l_remove(lua_State *L) +{ + int jid, type; + + type = lua_type(L, 1); + luaL_argcheck(L, type == LUA_TSTRING || type == LUA_TNUMBER, 1, + "expected a jail name (string) or id (integer)"); + + if (lua_isstring(L, 1)) { + /* Resolve it to a jid. */ + jid = jail_getid(lua_tostring(L, 1)); + if (jid == -1) { + lua_pushnil(L); + lua_pushstring(L, jail_errmsg); + return (2); + } + } else { + jid = lua_tointeger(L, 1); + } + + if (jail_remove(jid) == -1) { + lua_pushnil(L); + lua_pushstring(L, strerror(errno)); + return (2); + } + + lua_pushboolean(L, 1); + return (1); +} + static const struct luaL_Reg l_jail[] = { /** Get id of a jail by name. * @param name jail name (string) @@ -616,6 +678,18 @@ static const struct luaL_Reg l_jail[] = { * close methods */ {"list", l_list}, + /** Attach to a running jail. + * @param jail jail name (string) or id (integer) + * @return true (boolean) + * or nil, error (string) on error + */ + {"attach", l_attach}, + /** Remove a running jail. + * @param jail jail name (string) or id (integer) + * @return true (boolean) + * or nil, error (string) on error + */ + {"remove", l_remove}, {NULL, NULL} }; From nobody Wed Oct 6 07:14:57 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CBD2B12DA6C3; Wed, 6 Oct 2021 07:14: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 4HPQh15MCyz3nBk; Wed, 6 Oct 2021 07:14: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 9711E1C032; Wed, 6 Oct 2021 07:14: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 1967Ev6U038674; Wed, 6 Oct 2021 07:14:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967EvOK038673; Wed, 6 Oct 2021 07:14:57 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:14:57 GMT Message-Id: <202110060714.1967EvOK038673@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: d330c24cc061 - stable/13 - bootp: remove the USE_BFUNCS knob List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d330c24cc061f87decc678d4d471a61088d730b3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d330c24cc061f87decc678d4d471a61088d730b3 commit d330c24cc061f87decc678d4d471a61088d730b3 Author: Kyle Evans AuthorDate: 2021-09-30 03:01:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:14:39 +0000 bootp: remove the USE_BFUNCS knob We'd likely be better served by converting these to the equivalent mem* calls, but just kill the knob for now. The b* macros being defined get in the way of _FORTIFY_SOURCE. (cherry picked from commit cfb9be506285cd65120f9686d532130a3757ce56) --- libexec/bootpd/bootpd.c | 8 -------- libexec/bootpd/bootpgw/bootpgw.c | 8 -------- libexec/bootpd/dovend.c | 9 --------- libexec/bootpd/dumptab.c | 9 +-------- libexec/bootpd/hash.c | 9 +-------- libexec/bootpd/hwaddr.c | 8 -------- libexec/bootpd/lookup.c | 7 +------ libexec/bootpd/readfile.c | 8 -------- libexec/bootpd/tools/bootpef/bootpef.c | 8 -------- libexec/bootpd/tools/bootptest/bootptest.h | 8 -------- 10 files changed, 3 insertions(+), 79 deletions(-) diff --git a/libexec/bootpd/bootpd.c b/libexec/bootpd/bootpd.c index 86e4f56ab61a..42f1cd8c5912 100644 --- a/libexec/bootpd/bootpd.c +++ b/libexec/bootpd/bootpd.c @@ -73,14 +73,6 @@ __FBSDID("$FreeBSD$"); # include /* for O_RDONLY, etc */ #endif -#ifndef USE_BFUNCS -# include -/* Yes, memcpy is OK here (no overlapped copies). */ -# define bcopy(a,b,c) memcpy(b,a,c) -# define bzero(p,l) memset(p,0,l) -# define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/bootpgw/bootpgw.c b/libexec/bootpd/bootpgw/bootpgw.c index 2e2df9e71a2a..3c128c03a9a6 100644 --- a/libexec/bootpd/bootpgw/bootpgw.c +++ b/libexec/bootpd/bootpgw/bootpgw.c @@ -66,14 +66,6 @@ __FBSDID("$FreeBSD$"); # include /* for O_RDONLY, etc */ #endif -#ifndef USE_BFUNCS -# include -/* Yes, memcpy is OK here (no overlapped copies). */ -# define bcopy(a,b,c) memcpy(b,a,c) -# define bzero(p,l) memset(p,0,l) -# define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "getif.h" #include "hwaddr.h" diff --git a/libexec/bootpd/dovend.c b/libexec/bootpd/dovend.c index cb0b4a0448c4..65543a2700c0 100644 --- a/libexec/bootpd/dovend.c +++ b/libexec/bootpd/dovend.c @@ -15,15 +15,6 @@ #include #include -#ifndef USE_BFUNCS -# include -/* Yes, memcpy is OK here (no overlapped copies). */ -# define bcopy(a,b,c) memcpy(b,a,c) -# define bzero(p,l) memset(p,0,l) -# define bcmp(a,b,c) memcmp(a,b,c) -# define index strchr -#endif - #include "bootp.h" #include "bootpd.h" #include "report.h" diff --git a/libexec/bootpd/dumptab.c b/libexec/bootpd/dumptab.c index 43e94ec4cef2..daab93f609a6 100644 --- a/libexec/bootpd/dumptab.c +++ b/libexec/bootpd/dumptab.c @@ -10,17 +10,10 @@ #include #include +#include #include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/hash.c b/libexec/bootpd/hash.c index 64f49d3b957d..1641a8a092cd 100644 --- a/libexec/bootpd/hash.c +++ b/libexec/bootpd/hash.c @@ -37,14 +37,7 @@ SOFTWARE. #include #include - -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif +#include #include "hash.h" diff --git a/libexec/bootpd/hwaddr.c b/libexec/bootpd/hwaddr.c index ff996157b911..293c75a6b3be 100644 --- a/libexec/bootpd/hwaddr.c +++ b/libexec/bootpd/hwaddr.c @@ -38,14 +38,6 @@ #endif #include -#ifndef USE_BFUNCS -/* Yes, memcpy is OK here (no overlapped copies). */ -#include -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #ifndef ATF_INUSE /* Not defined on some systems (i.e. Linux) */ #define ATF_INUSE 0 #endif diff --git a/libexec/bootpd/lookup.c b/libexec/bootpd/lookup.c index 54b3f62242f7..391a1d826d6e 100644 --- a/libexec/bootpd/lookup.c +++ b/libexec/bootpd/lookup.c @@ -17,14 +17,9 @@ extern int ether_hostton(); #endif #include +#include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#endif - #include "bootp.h" #include "lookup.h" #include "report.h" diff --git a/libexec/bootpd/readfile.c b/libexec/bootpd/readfile.c index 900d0377279f..c09639300310 100644 --- a/libexec/bootpd/readfile.c +++ b/libexec/bootpd/readfile.c @@ -46,14 +46,6 @@ SOFTWARE. #include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/tools/bootpef/bootpef.c b/libexec/bootpd/tools/bootpef/bootpef.c index 04089c87b560..7ed3786d892e 100644 --- a/libexec/bootpd/tools/bootpef/bootpef.c +++ b/libexec/bootpd/tools/bootpef/bootpef.c @@ -55,14 +55,6 @@ SOFTWARE. #include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/tools/bootptest/bootptest.h b/libexec/bootpd/tools/bootptest/bootptest.h index 2df35dea7ffc..2d9e451bddef 100644 --- a/libexec/bootpd/tools/bootptest/bootptest.h +++ b/libexec/bootpd/tools/bootptest/bootptest.h @@ -6,14 +6,6 @@ #define ESRC(p) (p) #define EDST(p) (p) -#ifndef USE_BFUNCS -/* Use mem/str functions */ -/* There are no overlapped copies, so memcpy is OK. */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - extern int vflag; /* verbose flag */ /* global pointers to beginning and end of current packet (during printing) */ From nobody Wed Oct 6 07:14:58 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4E42212DA70F; Wed, 6 Oct 2021 07:14: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 4HPQh30FzZz3n5g; Wed, 6 Oct 2021 07:14: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 C21D11BCF3; Wed, 6 Oct 2021 07:14: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 1967Ewib038698; Wed, 6 Oct 2021 07:14:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967EwYC038697; Wed, 6 Oct 2021 07:14:58 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:14:58 GMT Message-Id: <202110060714.1967EwYC038697@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a663c839fffa - stable/13 - libc: ssp: sprinkle around some __dead2 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a663c839fffa6450dced705a68633dd6fedb70cb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a663c839fffa6450dced705a68633dd6fedb70cb commit a663c839fffa6450dced705a68633dd6fedb70cb Author: Kyle Evans AuthorDate: 2021-09-29 21:48:20 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:14:42 +0000 libc: ssp: sprinkle around some __dead2 This is consistent with, e.g., NetBSD's implementation, which declares these as noreturn in ssp/ssp.h. (cherry picked from commit 5487294d79f9ebe72a847d0855adb4df85e0d66e) --- lib/libc/secure/stack_protector.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libc/secure/stack_protector.c b/lib/libc/secure/stack_protector.c index 15460278502d..7ddd6338ec55 100644 --- a/lib/libc/secure/stack_protector.c +++ b/lib/libc/secure/stack_protector.c @@ -64,9 +64,9 @@ extern int __sysctl(const int *name, u_int namelen, void *oldp, long __stack_chk_guard[8] = {0, 0, 0, 0, 0, 0, 0, 0}; static void __guard_setup(void) _GUARD_SETUP_CTOR_ATTR; -static void __fail(const char *); -void __stack_chk_fail(void); -void __chk_fail(void); +static void __fail(const char *) __dead2; +void __stack_chk_fail(void) __dead2; +void __chk_fail(void) __dead2; /*LINTED used*/ static void From nobody Wed Oct 6 07:14:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2A46412DA804; Wed, 6 Oct 2021 07:15: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 4HPQh40lk9z3nHM; Wed, 6 Oct 2021 07:15: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 E317A1BC7E; Wed, 6 Oct 2021 07:14: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 1967ExUk038722; Wed, 6 Oct 2021 07:14:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967ExWJ038721; Wed, 6 Oct 2021 07:14:59 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:14:59 GMT Message-Id: <202110060714.1967ExWJ038721@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 045612012ebf - stable/13 - tcp_wrappers: get rid of duplicate fgets declarations List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 045612012ebf91d63a09ef67771c93aed6f7bd84 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=045612012ebf91d63a09ef67771c93aed6f7bd84 commit 045612012ebf91d63a09ef67771c93aed6f7bd84 Author: Kyle Evans AuthorDate: 2021-09-30 04:21:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:14:43 +0000 tcp_wrappers: get rid of duplicate fgets declarations This is declared in stdio.h, no need for this one. (cherry picked from commit 4dbd8c72d3030b8f111fdac86ba45ff596595497) --- contrib/tcp_wrappers/hosts_access.c | 1 - contrib/tcp_wrappers/misc.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/contrib/tcp_wrappers/hosts_access.c b/contrib/tcp_wrappers/hosts_access.c index f5ab91bebc98..58998055b516 100644 --- a/contrib/tcp_wrappers/hosts_access.c +++ b/contrib/tcp_wrappers/hosts_access.c @@ -46,7 +46,6 @@ static char sccsid[] = "@(#) hosts_access.c 1.21 97/02/12 02:13:22"; #endif #include -extern char *fgets(); extern int errno; #ifndef INADDR_NONE diff --git a/contrib/tcp_wrappers/misc.c b/contrib/tcp_wrappers/misc.c index 8f04f870e1b4..258d7091adce 100644 --- a/contrib/tcp_wrappers/misc.c +++ b/contrib/tcp_wrappers/misc.c @@ -19,8 +19,6 @@ static char sccsic[] = "@(#) misc.c 1.2 96/02/11 17:01:29"; #include "tcpd.h" -extern char *fgets(); - #ifndef INADDR_NONE #define INADDR_NONE (-1) /* XXX should be 0xffffffff */ #endif From nobody Wed Oct 6 07:16:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 84CEB12DBBFF; Wed, 6 Oct 2021 07:16: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 4HPQjV32nnz3pf0; Wed, 6 Oct 2021 07:16: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 49A701C034; Wed, 6 Oct 2021 07:16: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 1967GEpj039069; Wed, 6 Oct 2021 07:16:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967GEjU039068; Wed, 6 Oct 2021 07:16:14 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:16:14 GMT Message-Id: <202110060716.1967GEjU039068@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a5f959ea48a0 - stable/12 - bootp: remove the USE_BFUNCS knob List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: a5f959ea48a0ae4b2e818246c6cb7140d69fe28c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a5f959ea48a0ae4b2e818246c6cb7140d69fe28c commit a5f959ea48a0ae4b2e818246c6cb7140d69fe28c Author: Kyle Evans AuthorDate: 2021-09-30 03:01:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:15:58 +0000 bootp: remove the USE_BFUNCS knob We'd likely be better served by converting these to the equivalent mem* calls, but just kill the knob for now. The b* macros being defined get in the way of _FORTIFY_SOURCE. (cherry picked from commit cfb9be506285cd65120f9686d532130a3757ce56) --- libexec/bootpd/bootpd.c | 8 -------- libexec/bootpd/bootpgw/bootpgw.c | 8 -------- libexec/bootpd/dovend.c | 9 --------- libexec/bootpd/dumptab.c | 9 +-------- libexec/bootpd/hash.c | 9 +-------- libexec/bootpd/hwaddr.c | 8 -------- libexec/bootpd/lookup.c | 7 +------ libexec/bootpd/readfile.c | 8 -------- libexec/bootpd/tools/bootpef/bootpef.c | 8 -------- libexec/bootpd/tools/bootptest/bootptest.h | 8 -------- 10 files changed, 3 insertions(+), 79 deletions(-) diff --git a/libexec/bootpd/bootpd.c b/libexec/bootpd/bootpd.c index 6787ea4ff3b3..6822f877ad51 100644 --- a/libexec/bootpd/bootpd.c +++ b/libexec/bootpd/bootpd.c @@ -73,14 +73,6 @@ __FBSDID("$FreeBSD$"); # include /* for O_RDONLY, etc */ #endif -#ifndef USE_BFUNCS -# include -/* Yes, memcpy is OK here (no overlapped copies). */ -# define bcopy(a,b,c) memcpy(b,a,c) -# define bzero(p,l) memset(p,0,l) -# define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/bootpgw/bootpgw.c b/libexec/bootpd/bootpgw/bootpgw.c index 2e2df9e71a2a..3c128c03a9a6 100644 --- a/libexec/bootpd/bootpgw/bootpgw.c +++ b/libexec/bootpd/bootpgw/bootpgw.c @@ -66,14 +66,6 @@ __FBSDID("$FreeBSD$"); # include /* for O_RDONLY, etc */ #endif -#ifndef USE_BFUNCS -# include -/* Yes, memcpy is OK here (no overlapped copies). */ -# define bcopy(a,b,c) memcpy(b,a,c) -# define bzero(p,l) memset(p,0,l) -# define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "getif.h" #include "hwaddr.h" diff --git a/libexec/bootpd/dovend.c b/libexec/bootpd/dovend.c index cb0b4a0448c4..65543a2700c0 100644 --- a/libexec/bootpd/dovend.c +++ b/libexec/bootpd/dovend.c @@ -15,15 +15,6 @@ #include #include -#ifndef USE_BFUNCS -# include -/* Yes, memcpy is OK here (no overlapped copies). */ -# define bcopy(a,b,c) memcpy(b,a,c) -# define bzero(p,l) memset(p,0,l) -# define bcmp(a,b,c) memcmp(a,b,c) -# define index strchr -#endif - #include "bootp.h" #include "bootpd.h" #include "report.h" diff --git a/libexec/bootpd/dumptab.c b/libexec/bootpd/dumptab.c index 43e94ec4cef2..daab93f609a6 100644 --- a/libexec/bootpd/dumptab.c +++ b/libexec/bootpd/dumptab.c @@ -10,17 +10,10 @@ #include #include +#include #include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/hash.c b/libexec/bootpd/hash.c index 64f49d3b957d..1641a8a092cd 100644 --- a/libexec/bootpd/hash.c +++ b/libexec/bootpd/hash.c @@ -37,14 +37,7 @@ SOFTWARE. #include #include - -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif +#include #include "hash.h" diff --git a/libexec/bootpd/hwaddr.c b/libexec/bootpd/hwaddr.c index ff996157b911..293c75a6b3be 100644 --- a/libexec/bootpd/hwaddr.c +++ b/libexec/bootpd/hwaddr.c @@ -38,14 +38,6 @@ #endif #include -#ifndef USE_BFUNCS -/* Yes, memcpy is OK here (no overlapped copies). */ -#include -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #ifndef ATF_INUSE /* Not defined on some systems (i.e. Linux) */ #define ATF_INUSE 0 #endif diff --git a/libexec/bootpd/lookup.c b/libexec/bootpd/lookup.c index 54b3f62242f7..391a1d826d6e 100644 --- a/libexec/bootpd/lookup.c +++ b/libexec/bootpd/lookup.c @@ -17,14 +17,9 @@ extern int ether_hostton(); #endif #include +#include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#endif - #include "bootp.h" #include "lookup.h" #include "report.h" diff --git a/libexec/bootpd/readfile.c b/libexec/bootpd/readfile.c index 900d0377279f..c09639300310 100644 --- a/libexec/bootpd/readfile.c +++ b/libexec/bootpd/readfile.c @@ -46,14 +46,6 @@ SOFTWARE. #include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/tools/bootpef/bootpef.c b/libexec/bootpd/tools/bootpef/bootpef.c index 04089c87b560..7ed3786d892e 100644 --- a/libexec/bootpd/tools/bootpef/bootpef.c +++ b/libexec/bootpd/tools/bootpef/bootpef.c @@ -55,14 +55,6 @@ SOFTWARE. #include #include -#ifndef USE_BFUNCS -#include -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - #include "bootp.h" #include "hash.h" #include "hwaddr.h" diff --git a/libexec/bootpd/tools/bootptest/bootptest.h b/libexec/bootpd/tools/bootptest/bootptest.h index 2df35dea7ffc..2d9e451bddef 100644 --- a/libexec/bootpd/tools/bootptest/bootptest.h +++ b/libexec/bootpd/tools/bootptest/bootptest.h @@ -6,14 +6,6 @@ #define ESRC(p) (p) #define EDST(p) (p) -#ifndef USE_BFUNCS -/* Use mem/str functions */ -/* There are no overlapped copies, so memcpy is OK. */ -#define bcopy(a,b,c) memcpy(b,a,c) -#define bzero(p,l) memset(p,0,l) -#define bcmp(a,b,c) memcmp(a,b,c) -#endif - extern int vflag; /* verbose flag */ /* global pointers to beginning and end of current packet (during printing) */ From nobody Wed Oct 6 07:16:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 193C212DBE9D; Wed, 6 Oct 2021 07:16: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 4HPQjX1dcfz3pYd; Wed, 6 Oct 2021 07:16: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 6DCC31C082; Wed, 6 Oct 2021 07:16: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 1967GFB0039093; Wed, 6 Oct 2021 07:16:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967GFse039092; Wed, 6 Oct 2021 07:16:15 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:16:15 GMT Message-Id: <202110060716.1967GFse039092@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 90a75a07ed46 - stable/12 - libc: ssp: sprinkle around some __dead2 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 90a75a07ed465acc7135125eeff3a06ebb2b281e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=90a75a07ed465acc7135125eeff3a06ebb2b281e commit 90a75a07ed465acc7135125eeff3a06ebb2b281e Author: Kyle Evans AuthorDate: 2021-09-29 21:48:20 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:16:02 +0000 libc: ssp: sprinkle around some __dead2 This is consistent with, e.g., NetBSD's implementation, which declares these as noreturn in ssp/ssp.h. (cherry picked from commit 5487294d79f9ebe72a847d0855adb4df85e0d66e) --- lib/libc/secure/stack_protector.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libc/secure/stack_protector.c b/lib/libc/secure/stack_protector.c index 15460278502d..7ddd6338ec55 100644 --- a/lib/libc/secure/stack_protector.c +++ b/lib/libc/secure/stack_protector.c @@ -64,9 +64,9 @@ extern int __sysctl(const int *name, u_int namelen, void *oldp, long __stack_chk_guard[8] = {0, 0, 0, 0, 0, 0, 0, 0}; static void __guard_setup(void) _GUARD_SETUP_CTOR_ATTR; -static void __fail(const char *); -void __stack_chk_fail(void); -void __chk_fail(void); +static void __fail(const char *) __dead2; +void __stack_chk_fail(void) __dead2; +void __chk_fail(void) __dead2; /*LINTED used*/ static void From nobody Wed Oct 6 07:16:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A824C12DBD32; Wed, 6 Oct 2021 07:16: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 4HPQjY1d3pz3pWk; Wed, 6 Oct 2021 07:16: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 9DAFA1BCF5; Wed, 6 Oct 2021 07:16: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 1967GGB8039117; Wed, 6 Oct 2021 07:16:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1967GGZp039116; Wed, 6 Oct 2021 07:16:16 GMT (envelope-from git) Date: Wed, 6 Oct 2021 07:16:16 GMT Message-Id: <202110060716.1967GGZp039116@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: bea8052067be - stable/12 - tcp_wrappers: get rid of duplicate fgets declarations List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: bea8052067be1ed2b63a75aa76a14b9d3f955868 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=bea8052067be1ed2b63a75aa76a14b9d3f955868 commit bea8052067be1ed2b63a75aa76a14b9d3f955868 Author: Kyle Evans AuthorDate: 2021-09-30 04:21:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 07:16:02 +0000 tcp_wrappers: get rid of duplicate fgets declarations This is declared in stdio.h, no need for this one. (cherry picked from commit 4dbd8c72d3030b8f111fdac86ba45ff596595497) --- contrib/tcp_wrappers/hosts_access.c | 1 - contrib/tcp_wrappers/misc.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/contrib/tcp_wrappers/hosts_access.c b/contrib/tcp_wrappers/hosts_access.c index f5ab91bebc98..58998055b516 100644 --- a/contrib/tcp_wrappers/hosts_access.c +++ b/contrib/tcp_wrappers/hosts_access.c @@ -46,7 +46,6 @@ static char sccsid[] = "@(#) hosts_access.c 1.21 97/02/12 02:13:22"; #endif #include -extern char *fgets(); extern int errno; #ifndef INADDR_NONE diff --git a/contrib/tcp_wrappers/misc.c b/contrib/tcp_wrappers/misc.c index 8f04f870e1b4..258d7091adce 100644 --- a/contrib/tcp_wrappers/misc.c +++ b/contrib/tcp_wrappers/misc.c @@ -19,8 +19,6 @@ static char sccsic[] = "@(#) misc.c 1.2 96/02/11 17:01:29"; #include "tcpd.h" -extern char *fgets(); - #ifndef INADDR_NONE #define INADDR_NONE (-1) /* XXX should be 0xffffffff */ #endif From nobody Wed Oct 6 08:47:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 65A4717E7057; Wed, 6 Oct 2021 08:47: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 4HPSkl2QRNz4Vts; Wed, 6 Oct 2021 08:47: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 2EB2B1D25E; Wed, 6 Oct 2021 08:47: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 1968lRLL060628; Wed, 6 Oct 2021 08:47:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lR0U060627; Wed, 6 Oct 2021 08:47:27 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:27 GMT Message-Id: <202110060847.1968lR0U060627@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: dc23abfdea97 - stable/13 - pf: implement adaptive mode List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: dc23abfdea971252ad4041a750167366d8aed0df Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=dc23abfdea971252ad4041a750167366d8aed0df commit dc23abfdea971252ad4041a750167366d8aed0df Author: Kristof Provost AuthorDate: 2021-07-24 11:59:34 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:53 +0000 pf: implement adaptive mode Use atomic counters to ensure that we correctly track the number of half open states and syncookie responses in-flight. This determines if we activate or deactivate syncookies in adaptive mode. MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32134 (cherry picked from commit bf8637181a2bb81206ff8c685f1632d07b8feb13) --- sys/net/pfvar.h | 5 ++++- sys/netpfil/pf/pf.c | 15 +++++++++++++ sys/netpfil/pf/pf_syncookies.c | 51 +++++++++++++++++++++++++++++++++++++----- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 1eee2ec36351..b8267e43c0c4 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1369,7 +1369,8 @@ struct pf_pdesc { enum pf_syncookies_mode { PF_SYNCOOKIES_NEVER = 0, PF_SYNCOOKIES_ALWAYS = 1, - PF_SYNCOOKIES_MODE_MAX = PF_SYNCOOKIES_ALWAYS + PF_SYNCOOKIES_ADAPTIVE = 2, + PF_SYNCOOKIES_MODE_MAX = PF_SYNCOOKIES_ADAPTIVE }; #ifdef _KERNEL @@ -1389,6 +1390,8 @@ struct pf_kstatus { bool keep_counters; enum pf_syncookies_mode syncookies_mode; bool syncookies_active; + uint64_t syncookies_inflight[2]; + uint32_t states_halfopen; }; #endif diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 20e775148b7a..90c856ce5fcf 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -493,6 +493,15 @@ pf_set_protostate(struct pf_kstate *s, int which, u_int8_t newstate) s->dst.state = newstate; if (which == PF_PEER_DST) return; + if (s->src.state == newstate) + return; + if (s->creatorid == V_pf_status.hostid && + s->key[PF_SK_STACK] != NULL && + s->key[PF_SK_STACK]->proto == IPPROTO_TCP && + !(TCPS_HAVEESTABLISHED(s->src.state) || + s->src.state == TCPS_CLOSED) && + (TCPS_HAVEESTABLISHED(newstate) || newstate == TCPS_CLOSED)) + atomic_add_32(&V_pf_status.states_halfopen, -1); s->src.state = newstate; } @@ -1924,6 +1933,11 @@ pf_unlink_state(struct pf_kstate *s, u_int flags) s->timeout = PFTM_UNLINKED; + /* Ensure we remove it from the list of halfopen states, if needed. */ + if (s->key[PF_SK_STACK] != NULL && + s->key[PF_SK_STACK]->proto == IPPROTO_TCP) + pf_set_protostate(s, PF_PEER_BOTH, TCPS_CLOSED); + PF_HASHROW_UNLOCK(ih); pf_detach_state(s); @@ -4014,6 +4028,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, pf_set_protostate(s, PF_PEER_SRC, TCPS_SYN_SENT); pf_set_protostate(s, PF_PEER_DST, TCPS_CLOSED); s->timeout = PFTM_TCP_FIRST_PACKET; + atomic_add_32(&V_pf_status.states_halfopen, 1); break; case IPPROTO_UDP: pf_set_protostate(s, PF_PEER_SRC, PFUDPS_SINGLE); diff --git a/sys/netpfil/pf/pf_syncookies.c b/sys/netpfil/pf/pf_syncookies.c index 4eabbb5e2744..11093b636777 100644 --- a/sys/netpfil/pf/pf_syncookies.c +++ b/sys/netpfil/pf/pf_syncookies.c @@ -106,6 +106,8 @@ struct pf_syncookie_status { struct callout keytimeout; uint8_t oddeven; uint8_t key[2][SIPHASH_KEY_LENGTH]; + uint32_t hiwat; /* absolute; # of states */ + uint32_t lowat; }; VNET_DEFINE_STATIC(struct pf_syncookie_status, pf_syncookie_status); #define V_pf_syncookie_status VNET(pf_syncookie_status) @@ -242,7 +244,24 @@ pf_synflood_check(struct pf_pdesc *pd) if (pd->pf_mtag && (pd->pf_mtag->tag & PF_TAG_SYNCOOKIE_RECREATED)) return (0); - return (V_pf_status.syncookies_mode); + if (V_pf_status.syncookies_mode != PF_SYNCOOKIES_ADAPTIVE) + return (V_pf_status.syncookies_mode); + + if (!V_pf_status.syncookies_active && + atomic_load_32(&V_pf_status.states_halfopen) > + V_pf_syncookie_status.hiwat) { + /* We'd want to 'pf_syncookie_newkey()' here, but that requires + * the rules write lock, which we can't get with the read lock + * held. */ + callout_reset(&V_pf_syncookie_status.keytimeout, 0, + pf_syncookie_rotate, curvnet); + V_pf_status.syncookies_active = true; + DPFPRINTF(LOG_WARNING, + ("synflood detected, enabling syncookies\n")); + // XXXTODO V_pf_status.lcounters[LCNT_SYNFLOODS]++; + } + + return (V_pf_status.syncookies_active); } void @@ -257,6 +276,9 @@ pf_syncookie_send(struct mbuf *m, int off, struct pf_pdesc *pd) iss, ntohl(pd->hdr.tcp.th_seq) + 1, TH_SYN|TH_ACK, 0, mss, 0, 1, 0); counter_u64_add(V_pf_status.lcounters[KLCNT_SYNCOOKIES_SENT], 1); + /* XXX Maybe only in adaptive mode? */ + atomic_add_64(&V_pf_status.syncookies_inflight[V_pf_syncookie_status.oddeven], + 1); } uint8_t @@ -272,11 +294,17 @@ pf_syncookie_validate(struct pf_pdesc *pd) ack = ntohl(pd->hdr.tcp.th_ack) - 1; cookie.cookie = (ack & 0xff) ^ (ack >> 24); + /* we don't know oddeven before setting the cookie (union) */ + if (atomic_load_64(&V_pf_status.syncookies_inflight[cookie.flags.oddeven]) + == 0) + return (0); + hash = pf_syncookie_mac(pd, cookie, seq); if ((ack & ~0xff) != (hash & ~0xff)) return (0); counter_u64_add(V_pf_status.lcounters[KLCNT_SYNCOOKIES_VALID], 1); + atomic_add_64(&V_pf_status.syncookies_inflight[cookie.flags.oddeven], -1); return (1); } @@ -290,13 +318,22 @@ pf_syncookie_rotate(void *arg) CURVNET_SET((struct vnet *)arg); /* do we want to disable syncookies? */ - if (V_pf_status.syncookies_active) { + if (V_pf_status.syncookies_active && + ((V_pf_status.syncookies_mode == PF_SYNCOOKIES_ADAPTIVE && + (atomic_load_32(&V_pf_status.states_halfopen) + + atomic_load_64(&V_pf_status.syncookies_inflight[0]) + + atomic_load_64(&V_pf_status.syncookies_inflight[1])) < + V_pf_syncookie_status.lowat) || + V_pf_status.syncookies_mode == PF_SYNCOOKIES_NEVER) + ) { V_pf_status.syncookies_active = false; - DPFPRINTF(PF_DEBUG_MISC, ("syncookies disabled")); + DPFPRINTF(PF_DEBUG_MISC, ("syncookies disabled\n")); } /* nothing in flight any more? delete keys and return */ - if (!V_pf_status.syncookies_active) { + if (!V_pf_status.syncookies_active && + atomic_load_64(&V_pf_status.syncookies_inflight[0]) == 0 && + atomic_load_64(&V_pf_status.syncookies_inflight[1]) == 0) { memset(V_pf_syncookie_status.key[0], 0, PF_SYNCOOKIE_SECRET_SIZE); memset(V_pf_syncookie_status.key[1], 0, @@ -305,8 +342,10 @@ pf_syncookie_rotate(void *arg) return; } + PF_RULES_WLOCK(); /* new key, including timeout */ pf_syncookie_newkey(); + PF_RULES_WUNLOCK(); CURVNET_RESTORE(); } @@ -316,11 +355,13 @@ pf_syncookie_newkey(void) { PF_RULES_WASSERT(); + MPASS(V_pf_syncookie_status.oddeven < 2); V_pf_syncookie_status.oddeven = (V_pf_syncookie_status.oddeven + 1) & 0x1; + atomic_store_64(&V_pf_status.syncookies_inflight[V_pf_syncookie_status.oddeven], 0); arc4random_buf(V_pf_syncookie_status.key[V_pf_syncookie_status.oddeven], PF_SYNCOOKIE_SECRET_SIZE); callout_reset(&V_pf_syncookie_status.keytimeout, - PF_SYNCOOKIE_SECRET_LIFETIME, pf_syncookie_rotate, curvnet); + PF_SYNCOOKIE_SECRET_LIFETIME * hz, pf_syncookie_rotate, curvnet); } /* From nobody Wed Oct 6 08:47:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 376A917E7282; Wed, 6 Oct 2021 08:47: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 4HPSkm15NCz4Vrg; Wed, 6 Oct 2021 08:47: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 066571D28C; Wed, 6 Oct 2021 08:47: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 1968lRhV060732; Wed, 6 Oct 2021 08:47:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lRsn060731; Wed, 6 Oct 2021 08:47:27 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:27 GMT Message-Id: <202110060847.1968lRsn060731@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: d23f5f76f56d - stable/12 - pf: implement adaptive mode List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: d23f5f76f56d986008c49c7e74bf78e9cad63aa7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=d23f5f76f56d986008c49c7e74bf78e9cad63aa7 commit d23f5f76f56d986008c49c7e74bf78e9cad63aa7 Author: Kristof Provost AuthorDate: 2021-07-24 11:59:34 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:57 +0000 pf: implement adaptive mode Use atomic counters to ensure that we correctly track the number of half open states and syncookie responses in-flight. This determines if we activate or deactivate syncookies in adaptive mode. MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32134 (cherry picked from commit bf8637181a2bb81206ff8c685f1632d07b8feb13) --- sys/net/pfvar.h | 5 ++++- sys/netpfil/pf/pf.c | 15 +++++++++++++ sys/netpfil/pf/pf_syncookies.c | 51 +++++++++++++++++++++++++++++++++++++----- 3 files changed, 65 insertions(+), 6 deletions(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 57d19c6c6018..5e2022ae8828 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1369,7 +1369,8 @@ struct pf_pdesc { enum pf_syncookies_mode { PF_SYNCOOKIES_NEVER = 0, PF_SYNCOOKIES_ALWAYS = 1, - PF_SYNCOOKIES_MODE_MAX = PF_SYNCOOKIES_ALWAYS + PF_SYNCOOKIES_ADAPTIVE = 2, + PF_SYNCOOKIES_MODE_MAX = PF_SYNCOOKIES_ADAPTIVE }; #ifdef _KERNEL @@ -1389,6 +1390,8 @@ struct pf_kstatus { bool keep_counters; enum pf_syncookies_mode syncookies_mode; bool syncookies_active; + uint64_t syncookies_inflight[2]; + uint32_t states_halfopen; }; #endif diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c index 2401dff57dff..dd4c49959a60 100644 --- a/sys/netpfil/pf/pf.c +++ b/sys/netpfil/pf/pf.c @@ -493,6 +493,15 @@ pf_set_protostate(struct pf_kstate *s, int which, u_int8_t newstate) s->dst.state = newstate; if (which == PF_PEER_DST) return; + if (s->src.state == newstate) + return; + if (s->creatorid == V_pf_status.hostid && + s->key[PF_SK_STACK] != NULL && + s->key[PF_SK_STACK]->proto == IPPROTO_TCP && + !(TCPS_HAVEESTABLISHED(s->src.state) || + s->src.state == TCPS_CLOSED) && + (TCPS_HAVEESTABLISHED(newstate) || newstate == TCPS_CLOSED)) + atomic_add_32(&V_pf_status.states_halfopen, -1); s->src.state = newstate; } @@ -1922,6 +1931,11 @@ pf_unlink_state(struct pf_kstate *s, u_int flags) s->timeout = PFTM_UNLINKED; + /* Ensure we remove it from the list of halfopen states, if needed. */ + if (s->key[PF_SK_STACK] != NULL && + s->key[PF_SK_STACK]->proto == IPPROTO_TCP) + pf_set_protostate(s, PF_PEER_BOTH, TCPS_CLOSED); + PF_HASHROW_UNLOCK(ih); pf_detach_state(s); @@ -4015,6 +4029,7 @@ pf_create_state(struct pf_krule *r, struct pf_krule *nr, struct pf_krule *a, pf_set_protostate(s, PF_PEER_SRC, TCPS_SYN_SENT); pf_set_protostate(s, PF_PEER_DST, TCPS_CLOSED); s->timeout = PFTM_TCP_FIRST_PACKET; + atomic_add_32(&V_pf_status.states_halfopen, 1); break; case IPPROTO_UDP: pf_set_protostate(s, PF_PEER_SRC, PFUDPS_SINGLE); diff --git a/sys/netpfil/pf/pf_syncookies.c b/sys/netpfil/pf/pf_syncookies.c index c019640d7cb5..d054b6823e74 100644 --- a/sys/netpfil/pf/pf_syncookies.c +++ b/sys/netpfil/pf/pf_syncookies.c @@ -106,6 +106,8 @@ struct pf_syncookie_status { struct callout keytimeout; uint8_t oddeven; uint8_t key[2][SIPHASH_KEY_LENGTH]; + uint32_t hiwat; /* absolute; # of states */ + uint32_t lowat; }; VNET_DEFINE_STATIC(struct pf_syncookie_status, pf_syncookie_status); #define V_pf_syncookie_status VNET(pf_syncookie_status) @@ -242,7 +244,24 @@ pf_synflood_check(struct pf_pdesc *pd) if (pd->pf_mtag && (pd->pf_mtag->tag & PF_TAG_SYNCOOKIE_RECREATED)) return (0); - return (V_pf_status.syncookies_mode); + if (V_pf_status.syncookies_mode != PF_SYNCOOKIES_ADAPTIVE) + return (V_pf_status.syncookies_mode); + + if (!V_pf_status.syncookies_active && + atomic_load_32(&V_pf_status.states_halfopen) > + V_pf_syncookie_status.hiwat) { + /* We'd want to 'pf_syncookie_newkey()' here, but that requires + * the rules write lock, which we can't get with the read lock + * held. */ + callout_reset(&V_pf_syncookie_status.keytimeout, 0, + pf_syncookie_rotate, curvnet); + V_pf_status.syncookies_active = true; + DPFPRINTF(LOG_WARNING, + ("synflood detected, enabling syncookies\n")); + // XXXTODO V_pf_status.lcounters[LCNT_SYNFLOODS]++; + } + + return (V_pf_status.syncookies_active); } void @@ -257,6 +276,9 @@ pf_syncookie_send(struct mbuf *m, int off, struct pf_pdesc *pd) iss, ntohl(pd->hdr.tcp.th_seq) + 1, TH_SYN|TH_ACK, 0, mss, 0, 1, 0); counter_u64_add(V_pf_status.lcounters[KLCNT_SYNCOOKIES_SENT], 1); + /* XXX Maybe only in adaptive mode? */ + atomic_add_64(&V_pf_status.syncookies_inflight[V_pf_syncookie_status.oddeven], + 1); } uint8_t @@ -272,11 +294,17 @@ pf_syncookie_validate(struct pf_pdesc *pd) ack = ntohl(pd->hdr.tcp.th_ack) - 1; cookie.cookie = (ack & 0xff) ^ (ack >> 24); + /* we don't know oddeven before setting the cookie (union) */ + if (atomic_load_64(&V_pf_status.syncookies_inflight[cookie.flags.oddeven]) + == 0) + return (0); + hash = pf_syncookie_mac(pd, cookie, seq); if ((ack & ~0xff) != (hash & ~0xff)) return (0); counter_u64_add(V_pf_status.lcounters[KLCNT_SYNCOOKIES_VALID], 1); + atomic_add_64(&V_pf_status.syncookies_inflight[cookie.flags.oddeven], -1); return (1); } @@ -290,13 +318,22 @@ pf_syncookie_rotate(void *arg) CURVNET_SET((struct vnet *)arg); /* do we want to disable syncookies? */ - if (V_pf_status.syncookies_active) { + if (V_pf_status.syncookies_active && + ((V_pf_status.syncookies_mode == PF_SYNCOOKIES_ADAPTIVE && + (atomic_load_32(&V_pf_status.states_halfopen) + + atomic_load_64(&V_pf_status.syncookies_inflight[0]) + + atomic_load_64(&V_pf_status.syncookies_inflight[1])) < + V_pf_syncookie_status.lowat) || + V_pf_status.syncookies_mode == PF_SYNCOOKIES_NEVER) + ) { V_pf_status.syncookies_active = false; - DPFPRINTF(PF_DEBUG_MISC, ("syncookies disabled")); + DPFPRINTF(PF_DEBUG_MISC, ("syncookies disabled\n")); } /* nothing in flight any more? delete keys and return */ - if (!V_pf_status.syncookies_active) { + if (!V_pf_status.syncookies_active && + atomic_load_64(&V_pf_status.syncookies_inflight[0]) == 0 && + atomic_load_64(&V_pf_status.syncookies_inflight[1]) == 0) { memset(V_pf_syncookie_status.key[0], 0, PF_SYNCOOKIE_SECRET_SIZE); memset(V_pf_syncookie_status.key[1], 0, @@ -305,8 +342,10 @@ pf_syncookie_rotate(void *arg) return; } + PF_RULES_WLOCK(); /* new key, including timeout */ pf_syncookie_newkey(); + PF_RULES_WUNLOCK(); CURVNET_RESTORE(); } @@ -316,11 +355,13 @@ pf_syncookie_newkey(void) { PF_RULES_WASSERT(); + MPASS(V_pf_syncookie_status.oddeven < 2); V_pf_syncookie_status.oddeven = (V_pf_syncookie_status.oddeven + 1) & 0x1; + atomic_store_64(&V_pf_status.syncookies_inflight[V_pf_syncookie_status.oddeven], 0); arc4random_buf(V_pf_syncookie_status.key[V_pf_syncookie_status.oddeven], PF_SYNCOOKIE_SECRET_SIZE); callout_reset(&V_pf_syncookie_status.keytimeout, - PF_SYNCOOKIE_SECRET_LIFETIME, pf_syncookie_rotate, curvnet); + PF_SYNCOOKIE_SECRET_LIFETIME * hz, pf_syncookie_rotate, curvnet); } /* From nobody Wed Oct 6 08:47:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D5CFA17E7155; Wed, 6 Oct 2021 08:47: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 4HPSkm3b5Wz4VxK; Wed, 6 Oct 2021 08:47: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 50B571CECF; Wed, 6 Oct 2021 08:47: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 1968lSWW060756; Wed, 6 Oct 2021 08:47:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lSeg060755; Wed, 6 Oct 2021 08:47:28 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:28 GMT Message-Id: <202110060847.1968lSeg060755@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: 66b6528015ab - stable/13 - pf: hook up adaptive mode configuration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 66b6528015ababc2bbab939c67be40c960366bc4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=66b6528015ababc2bbab939c67be40c960366bc4 commit 66b6528015ababc2bbab939c67be40c960366bc4 Author: Kristof Provost AuthorDate: 2021-07-24 12:23:59 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:53 +0000 pf: hook up adaptive mode configuration The kernel side of pf syncookie adaptive mode configuration. MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32135 (cherry picked from commit 955460d41e99031906841870e02063ffdf227f09) --- sys/netpfil/pf/pf_syncookies.c | 56 ++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/sys/netpfil/pf/pf_syncookies.c b/sys/netpfil/pf/pf_syncookies.c index 11093b636777..32b2bec6c3d6 100644 --- a/sys/netpfil/pf/pf_syncookies.c +++ b/sys/netpfil/pf/pf_syncookies.c @@ -85,6 +85,7 @@ #include #include +#include #define DPFPRINTF(n, x) if (V_pf_status.debug >= (n)) printf x @@ -147,7 +148,10 @@ pf_get_syncookies(struct pfioc_nv *nv) nvlist_add_bool(nvl, "enabled", V_pf_status.syncookies_mode != PF_SYNCOOKIES_NEVER); - nvlist_add_bool(nvl, "adaptive", false); + nvlist_add_bool(nvl, "adaptive", + V_pf_status.syncookies_mode == PF_SYNCOOKIES_ADAPTIVE); + nvlist_add_number(nvl, "highwater", V_pf_syncookie_status.hiwat); + nvlist_add_number(nvl, "lowwater", V_pf_syncookie_status.lowat); nvlpacked = nvlist_pack(nvl, &nv->len); if (nvlpacked == NULL) { @@ -174,6 +178,10 @@ pf_set_syncookies(struct pfioc_nv *nv) void *nvlpacked = NULL; int error; bool enabled, adaptive; + uint32_t hiwat, lowat; + uint8_t newmode; + +#define ERROUT(x) ERROUT_FUNCTION(errout, x) if (nv->len > pf_ioctl_maxcount) return (ENOMEM); @@ -183,38 +191,44 @@ pf_set_syncookies(struct pfioc_nv *nv) return (ENOMEM); error = copyin(nv->data, nvlpacked, nv->len); - if (error) { - free(nvlpacked, M_TEMP); - return (error); - } + if (error) + ERROUT(error); nvl = nvlist_unpack(nvlpacked, nv->len, 0); - if (nvl == NULL) { - free(nvlpacked, M_TEMP); - return (EBADMSG); - } + if (nvl == NULL) + ERROUT(EBADMSG); if (! nvlist_exists_bool(nvl, "enabled") - || ! nvlist_exists_bool(nvl, "adaptive")) { - nvlist_destroy(nvl); - free(nvlpacked, M_TEMP); - return (EBADMSG); - } + || ! nvlist_exists_bool(nvl, "adaptive")) + ERROUT(EBADMSG); enabled = nvlist_get_bool(nvl, "enabled"); adaptive = nvlist_get_bool(nvl, "adaptive"); + PFNV_CHK(pf_nvuint32_opt(nvl, "highwater", &hiwat, + V_pf_syncookie_status.hiwat)); + PFNV_CHK(pf_nvuint32_opt(nvl, "lowwater", &lowat, + V_pf_syncookie_status.lowat)); - if (adaptive) { - nvlist_destroy(nvl); - free(nvlpacked, M_TEMP); - return (ENOTSUP); - } + if (lowat >= hiwat) + ERROUT(EINVAL); + + newmode = PF_SYNCOOKIES_NEVER; + if (enabled) + newmode = adaptive ? PF_SYNCOOKIES_ADAPTIVE : PF_SYNCOOKIES_ALWAYS; PF_RULES_WLOCK(); - error = pf_syncookies_setmode(enabled ? - PF_SYNCOOKIES_ALWAYS : PF_SYNCOOKIES_NEVER); + error = pf_syncookies_setmode(newmode); + + V_pf_syncookie_status.lowat = lowat; + V_pf_syncookie_status.hiwat = hiwat; + PF_RULES_WUNLOCK(); +#undef ERROUT +errout: + nvlist_destroy(nvl); + free(nvlpacked, M_TEMP); + return (error); } From nobody Wed Oct 6 08:47:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1E9AB17E716C; Wed, 6 Oct 2021 08:47: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 4HPSkn6wGwz4VxY; Wed, 6 Oct 2021 08:47: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 3818E1CC57; Wed, 6 Oct 2021 08:47: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 1968lT5P060780; Wed, 6 Oct 2021 08:47:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lT2w060779; Wed, 6 Oct 2021 08:47:29 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:29 GMT Message-Id: <202110060847.1968lT2w060779@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: 8a443f829e10 - stable/12 - pf: hook up adaptive mode configuration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 8a443f829e10c7094c4180aceca18aa3f7ca9bde Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=8a443f829e10c7094c4180aceca18aa3f7ca9bde commit 8a443f829e10c7094c4180aceca18aa3f7ca9bde Author: Kristof Provost AuthorDate: 2021-07-24 12:23:59 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:58 +0000 pf: hook up adaptive mode configuration The kernel side of pf syncookie adaptive mode configuration. MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32135 (cherry picked from commit 955460d41e99031906841870e02063ffdf227f09) --- sys/netpfil/pf/pf_syncookies.c | 56 ++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/sys/netpfil/pf/pf_syncookies.c b/sys/netpfil/pf/pf_syncookies.c index d054b6823e74..8fdc96e31e98 100644 --- a/sys/netpfil/pf/pf_syncookies.c +++ b/sys/netpfil/pf/pf_syncookies.c @@ -85,6 +85,7 @@ #include #include +#include #define DPFPRINTF(n, x) if (V_pf_status.debug >= (n)) printf x @@ -147,7 +148,10 @@ pf_get_syncookies(struct pfioc_nv *nv) nvlist_add_bool(nvl, "enabled", V_pf_status.syncookies_mode != PF_SYNCOOKIES_NEVER); - nvlist_add_bool(nvl, "adaptive", false); + nvlist_add_bool(nvl, "adaptive", + V_pf_status.syncookies_mode == PF_SYNCOOKIES_ADAPTIVE); + nvlist_add_number(nvl, "highwater", V_pf_syncookie_status.hiwat); + nvlist_add_number(nvl, "lowwater", V_pf_syncookie_status.lowat); nvlpacked = nvlist_pack(nvl, &nv->len); if (nvlpacked == NULL) { @@ -174,6 +178,10 @@ pf_set_syncookies(struct pfioc_nv *nv) void *nvlpacked = NULL; int error; bool enabled, adaptive; + uint32_t hiwat, lowat; + uint8_t newmode; + +#define ERROUT(x) ERROUT_FUNCTION(errout, x) if (nv->len > pf_ioctl_maxcount) return (ENOMEM); @@ -183,38 +191,44 @@ pf_set_syncookies(struct pfioc_nv *nv) return (ENOMEM); error = copyin(nv->data, nvlpacked, nv->len); - if (error) { - free(nvlpacked, M_TEMP); - return (error); - } + if (error) + ERROUT(error); nvl = nvlist_unpack(nvlpacked, nv->len, 0); - if (nvl == NULL) { - free(nvlpacked, M_TEMP); - return (EBADMSG); - } + if (nvl == NULL) + ERROUT(EBADMSG); if (! nvlist_exists_bool(nvl, "enabled") - || ! nvlist_exists_bool(nvl, "adaptive")) { - nvlist_destroy(nvl); - free(nvlpacked, M_TEMP); - return (EBADMSG); - } + || ! nvlist_exists_bool(nvl, "adaptive")) + ERROUT(EBADMSG); enabled = nvlist_get_bool(nvl, "enabled"); adaptive = nvlist_get_bool(nvl, "adaptive"); + PFNV_CHK(pf_nvuint32_opt(nvl, "highwater", &hiwat, + V_pf_syncookie_status.hiwat)); + PFNV_CHK(pf_nvuint32_opt(nvl, "lowwater", &lowat, + V_pf_syncookie_status.lowat)); - if (adaptive) { - nvlist_destroy(nvl); - free(nvlpacked, M_TEMP); - return (ENOTSUP); - } + if (lowat >= hiwat) + ERROUT(EINVAL); + + newmode = PF_SYNCOOKIES_NEVER; + if (enabled) + newmode = adaptive ? PF_SYNCOOKIES_ADAPTIVE : PF_SYNCOOKIES_ALWAYS; PF_RULES_WLOCK(); - error = pf_syncookies_setmode(enabled ? - PF_SYNCOOKIES_ALWAYS : PF_SYNCOOKIES_NEVER); + error = pf_syncookies_setmode(newmode); + + V_pf_syncookie_status.lowat = lowat; + V_pf_syncookie_status.hiwat = hiwat; + PF_RULES_WUNLOCK(); +#undef ERROUT +errout: + nvlist_destroy(nvl); + free(nvlpacked, M_TEMP); + return (error); } From nobody Wed Oct 6 08:47:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8C7B417E7402; Wed, 6 Oct 2021 08:47: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 4HPSkp1pLWz4VxZ; Wed, 6 Oct 2021 08:47: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 78B241D028; Wed, 6 Oct 2021 08:47: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 1968lTnE060804; Wed, 6 Oct 2021 08:47:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lTlH060803; Wed, 6 Oct 2021 08:47:29 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:29 GMT Message-Id: <202110060847.1968lTlH060803@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: c5a340e86402 - stable/13 - pfctl: userspace adaptive syncookies configration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: c5a340e864028fcb35301275d38bafd39eb2fd26 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=c5a340e864028fcb35301275d38bafd39eb2fd26 commit c5a340e864028fcb35301275d38bafd39eb2fd26 Author: Kristof Provost AuthorDate: 2021-08-13 11:42:59 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:54 +0000 pfctl: userspace adaptive syncookies configration Hook up the userspace bits to configure syncookies in adaptive mode. MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32136 (cherry picked from commit 5062afff9de7e67da96e3f0dcb9d8bbd5a4e1c5b) --- lib/libpfctl/libpfctl.c | 55 ++++++++++++++++++++++++++++++++++++++++++----- lib/libpfctl/libpfctl.h | 6 +++++- sbin/pfctl/parse.y | 43 ++++++++++++++++++++++++++++++++++-- sbin/pfctl/pfctl.c | 51 ++++++++++++++++++++++++++++++++++++++++++- sbin/pfctl/pfctl_parser.c | 5 +++-- sbin/pfctl/pfctl_parser.h | 8 +++++++ sys/net/pfvar.h | 3 +++ 7 files changed, 160 insertions(+), 11 deletions(-) diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index 3d52502f9ba8..c2d57d8136ca 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -50,6 +50,12 @@ #include "libpfctl.h" +const char* PFCTL_SYNCOOKIES_MODE_NAMES[] = { + "never", + "always", + "adaptive" +}; + static int _pfctl_clear_states(int , const struct pfctl_kill *, unsigned int *, uint64_t); @@ -932,17 +938,40 @@ pfctl_kill_states(int dev, const struct pfctl_kill *kill, unsigned int *killed) return (_pfctl_clear_states(dev, kill, killed, DIOCKILLSTATESNV)); } +static int +pfctl_get_limit(int dev, const int index, u_int *limit) +{ + struct pfioc_limit pl; + + bzero(&pl, sizeof(pl)); + pl.index = index; + + if (ioctl(dev, DIOCGETLIMIT, &pl) == -1) + return (errno); + + *limit = pl.limit; + + return (0); +} + int pfctl_set_syncookies(int dev, const struct pfctl_syncookies *s) { struct pfioc_nv nv; nvlist_t *nvl; int ret; + u_int state_limit; + + ret = pfctl_get_limit(dev, PF_LIMIT_STATES, &state_limit); + if (ret != 0) + return (ret); nvl = nvlist_create(0); nvlist_add_bool(nvl, "enabled", s->mode != PFCTL_SYNCOOKIES_NEVER); - nvlist_add_bool(nvl, "adaptive", false); /* XXX TODO */ + nvlist_add_bool(nvl, "adaptive", s->mode == PFCTL_SYNCOOKIES_ADAPTIVE); + nvlist_add_number(nvl, "highwater", state_limit * s->highwater / 100); + nvlist_add_number(nvl, "lowwater", state_limit * s->lowwater / 100); nv.data = nvlist_pack(nvl, &nv.len); nv.size = nv.len; @@ -960,12 +989,18 @@ pfctl_get_syncookies(int dev, struct pfctl_syncookies *s) { struct pfioc_nv nv; nvlist_t *nvl; - bool enabled, adaptive; + int ret; + u_int state_limit; + bool enabled, adaptive; + + ret = pfctl_get_limit(dev, PF_LIMIT_STATES, &state_limit); + if (ret != 0) + return (ret); bzero(s, sizeof(*s)); - nv.data = malloc(128); - nv.len = nv.size = 128; + nv.data = malloc(256); + nv.len = nv.size = 256; if (ioctl(dev, DIOCGETSYNCOOKIES, &nv)) { free(nv.data); @@ -981,7 +1016,17 @@ pfctl_get_syncookies(int dev, struct pfctl_syncookies *s) enabled = nvlist_get_bool(nvl, "enabled"); adaptive = nvlist_get_bool(nvl, "adaptive"); - s->mode = enabled ? PFCTL_SYNCOOKIES_ALWAYS : PFCTL_SYNCOOKIES_NEVER; + if (enabled) { + if (adaptive) + s->mode = PFCTL_SYNCOOKIES_ADAPTIVE; + else + s->mode = PFCTL_SYNCOOKIES_ALWAYS; + } else { + s->mode = PFCTL_SYNCOOKIES_NEVER; + } + + s->highwater = nvlist_get_number(nvl, "highwater") * 100 / state_limit; + s->lowwater = nvlist_get_number(nvl, "lowwater") * 100 / state_limit; nvlist_destroy(nvl); diff --git a/lib/libpfctl/libpfctl.h b/lib/libpfctl/libpfctl.h index 70de7627f0a6..70c144772c02 100644 --- a/lib/libpfctl/libpfctl.h +++ b/lib/libpfctl/libpfctl.h @@ -273,11 +273,15 @@ struct pfctl_states { enum pfctl_syncookies_mode { PFCTL_SYNCOOKIES_NEVER, - PFCTL_SYNCOOKIES_ALWAYS + PFCTL_SYNCOOKIES_ALWAYS, + PFCTL_SYNCOOKIES_ADAPTIVE }; +extern const char* PFCTL_SYNCOOKIES_MODE_NAMES[]; struct pfctl_syncookies { enum pfctl_syncookies_mode mode; + uint8_t highwater; /* Percent */ + uint8_t lowwater; /* Percent */ }; struct pfctl_status* pfctl_get_status(int dev); diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y index dbfe299cf34f..b7b934e6c2ef 100644 --- a/sbin/pfctl/parse.y +++ b/sbin/pfctl/parse.y @@ -317,6 +317,7 @@ static struct codel_opts codel_opts; static struct node_hfsc_opts hfsc_opts; static struct node_fairq_opts fairq_opts; static struct node_state_opt *keep_state_defaults = NULL; +static struct pfctl_watermarks syncookie_opts; int disallow_table(struct node_host *, const char *); int disallow_urpf_failed(struct node_host *, const char *); @@ -442,6 +443,7 @@ typedef struct { struct node_hfsc_opts hfsc_opts; struct node_fairq_opts fairq_opts; struct codel_opts codel_opts; + struct pfctl_watermarks *watermarks; } v; int lineno; } YYSTYPE; @@ -527,6 +529,7 @@ int parseport(char *, struct range *r, int); %type pool_opts pool_opt pool_opts_l %type tagged %type rtable +%type syncookie_opts %% ruleset : /* empty */ @@ -725,14 +728,19 @@ option : SET OPTIMIZATION STRING { | SET KEEPCOUNTERS { pf->keep_counters = true; } - | SET SYNCOOKIES syncookie_val { - pf->syncookies = $3; + | SET SYNCOOKIES syncookie_val syncookie_opts { + if (pfctl_cfg_syncookies(pf, $3, $4)) { + yyerror("error setting syncookies"); + YYERROR; + } } ; syncookie_val : STRING { if (!strcmp($1, "never")) $$ = PFCTL_SYNCOOKIES_NEVER; + else if (!strcmp($1, "adaptive")) + $$ = PFCTL_SYNCOOKIES_ADAPTIVE; else if (!strcmp($1, "always")) $$ = PFCTL_SYNCOOKIES_ALWAYS; else { @@ -741,6 +749,37 @@ syncookie_val : STRING { } } ; +syncookie_opts : /* empty */ { $$ = NULL; } + | { + memset(&syncookie_opts, 0, sizeof(syncookie_opts)); + } '(' syncookie_opt_l ')' { $$ = &syncookie_opts; } + ; + +syncookie_opt_l : syncookie_opt_l comma syncookie_opt + | syncookie_opt + ; + +syncookie_opt : STRING STRING { + double val; + char *cp; + + val = strtod($2, &cp); + if (cp == NULL || strcmp(cp, "%")) + YYERROR; + if (val <= 0 || val > 100) { + yyerror("illegal percentage value"); + YYERROR; + } + if (!strcmp($1, "start")) { + syncookie_opts.hi = val; + } else if (!strcmp($1, "end")) { + syncookie_opts.lo = val; + } else { + yyerror("illegal syncookie option"); + YYERROR; + } + } + ; stringall : STRING { $$ = $1; } | ALL { diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 8f3698e398f6..d7bde0012e9b 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -1812,6 +1812,10 @@ pfctl_init_options(struct pfctl *pf) pf->limit[PF_LIMIT_TABLE_ENTRIES] = PFR_KENTRY_HIWAT; pf->debug = PF_DEBUG_URGENT; + + pf->syncookies = false; + pf->syncookieswat[0] = PF_SYNCOOKIES_LOWATPCT; + pf->syncookieswat[1] = PF_SYNCOOKIES_HIWATPCT; } int @@ -2069,7 +2073,9 @@ pfctl_load_syncookies(struct pfctl *pf, u_int8_t val) bzero(&cookies, sizeof(cookies)); - cookies.mode = val ? PFCTL_SYNCOOKIES_ALWAYS : PFCTL_SYNCOOKIES_NEVER; + cookies.mode = val; + cookies.lowwater = pf->syncookieswat[0]; + cookies.highwater = pf->syncookieswat[1]; if (pfctl_set_syncookies(dev, &cookies)) { warnx("DIOCSETSYNCOOKIES"); @@ -2078,6 +2084,49 @@ pfctl_load_syncookies(struct pfctl *pf, u_int8_t val) return (0); } +int +pfctl_cfg_syncookies(struct pfctl *pf, uint8_t val, struct pfctl_watermarks *w) +{ + if (val != PF_SYNCOOKIES_ADAPTIVE && w != NULL) { + warnx("syncookies start/end only apply to adaptive"); + return (1); + } + if (val == PF_SYNCOOKIES_ADAPTIVE && w != NULL) { + if (!w->hi) + w->hi = PF_SYNCOOKIES_HIWATPCT; + if (!w->lo) + w->lo = w->hi / 2; + if (w->lo >= w->hi) { + warnx("start must be higher than end"); + return (1); + } + pf->syncookieswat[0] = w->lo; + pf->syncookieswat[1] = w->hi; + pf->syncookieswat_set = 1; + } + + if (pf->opts & PF_OPT_VERBOSE) { + if (val == PF_SYNCOOKIES_NEVER) + printf("set syncookies never\n"); + else if (val == PF_SYNCOOKIES_ALWAYS) + printf("set syncookies always\n"); + else if (val == PF_SYNCOOKIES_ADAPTIVE) { + if (pf->syncookieswat_set) + printf("set syncookies adaptive (start %u%%, " + "end %u%%)\n", pf->syncookieswat[1], + pf->syncookieswat[0]); + else + printf("set syncookies adaptive\n"); + } else { /* cannot happen */ + warnx("king bula ate all syncookies"); + return (1); + } + } + + pf->syncookies = val; + return (0); +} + int pfctl_set_debug(struct pfctl *pf, char *d) { diff --git a/sbin/pfctl/pfctl_parser.c b/sbin/pfctl/pfctl_parser.c index 89c9bc349ca3..8d39b45eb9a5 100644 --- a/sbin/pfctl/pfctl_parser.c +++ b/sbin/pfctl/pfctl_parser.c @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -618,9 +619,9 @@ print_status(struct pfctl_status *s, struct pfctl_syncookies *cookies, int opts) } printf("Syncookies\n"); + assert(cookies->mode <= PFCTL_SYNCOOKIES_ADAPTIVE); printf(" %-25s %s\n", "mode", - cookies->mode == PFCTL_SYNCOOKIES_NEVER ? - "never" : "always"); + PFCTL_SYNCOOKIES_MODE_NAMES[cookies->mode]); } } diff --git a/sbin/pfctl/pfctl_parser.h b/sbin/pfctl/pfctl_parser.h index 12a66e1ae710..484830c61791 100644 --- a/sbin/pfctl/pfctl_parser.h +++ b/sbin/pfctl/pfctl_parser.h @@ -101,6 +101,8 @@ struct pfctl { char *ifname; bool keep_counters; u_int8_t syncookies; + u_int8_t syncookieswat[2]; /* lowat, highwat, in % */ + u_int8_t syncookieswat_set; u_int8_t timeout_set[PFTM_MAX]; u_int8_t limit_set[PF_LIMIT_MAX]; @@ -200,6 +202,11 @@ struct pfctl_altq { } meta; }; +struct pfctl_watermarks { + uint32_t hi; + uint32_t lo; +}; + #ifdef __FreeBSD__ /* * XXX @@ -270,6 +277,7 @@ int pfctl_set_logif(struct pfctl *, char *); int pfctl_set_hostid(struct pfctl *, u_int32_t); int pfctl_set_debug(struct pfctl *, char *); int pfctl_set_interface_flags(struct pfctl *, char *, int, int); +int pfctl_cfg_syncookies(struct pfctl *, uint8_t, struct pfctl_watermarks *); int parse_config(char *, struct pfctl *); int parse_flags(char *); diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index b8267e43c0c4..e142976c588e 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1373,6 +1373,9 @@ enum pf_syncookies_mode { PF_SYNCOOKIES_MODE_MAX = PF_SYNCOOKIES_ADAPTIVE }; +#define PF_SYNCOOKIES_HIWATPCT 25 +#define PF_SYNCOOKIES_LOWATPCT (PF_SYNCOOKIES_HIWATPCT / 2) + #ifdef _KERNEL struct pf_kstatus { counter_u64_t counters[PFRES_MAX]; /* reason for passing/dropping */ From nobody Wed Oct 6 08:47:30 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 43C2817E7315; Wed, 6 Oct 2021 08:47: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 4HPSkq3P6Bz4W0M; Wed, 6 Oct 2021 08:47: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 9C3131D30A; Wed, 6 Oct 2021 08:47: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 1968lUvl060852; Wed, 6 Oct 2021 08:47:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lUfd060851; Wed, 6 Oct 2021 08:47:30 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:30 GMT Message-Id: <202110060847.1968lUfd060851@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: 45a2a438f1f7 - stable/13 - pf.conf: document syncookies List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 45a2a438f1f7ab23fa4653773a75a054386c37df Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=45a2a438f1f7ab23fa4653773a75a054386c37df commit 45a2a438f1f7ab23fa4653773a75a054386c37df Author: Kristof Provost AuthorDate: 2021-08-14 08:42:03 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:54 +0000 pf.conf: document syncookies Reviewed by: bcr Obtained from: OpenBSD MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32137 (cherry picked from commit 20f015f08d66d0d953e49245cb95c81c118b9ee9) --- share/man/man5/pf.conf.5 | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5 index 7b97657d7d1c..32f51bc00e47 100644 --- a/share/man/man5/pf.conf.5 +++ b/share/man/man5/pf.conf.5 @@ -28,7 +28,7 @@ .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 19, 2021 +.Dd September 25, 2021 .Dt PF.CONF 5 .Os .Sh NAME @@ -539,6 +539,34 @@ For example: .Bd -literal -offset indent set state-policy if-bound .Ed +.It Ar set syncookies never | always | adaptive +When +.Cm syncookies +are active, pf will answer each incoming TCP SYN with a syncookie SYNACK, +without allocating any resources. +Upon reception of the client's ACK in response to the syncookie +SYNACK, pf will evaluate the ruleset and create state if the ruleset +permits it, complete the three way handshake with the target host and +continue the connection with synproxy in place. +This allows pf to be resilient against large synflood attacks which would +run the state table against its limits otherwise. +Due to the blind answers to every incoming SYN syncookies share the caveats of +synproxy, namely seemingly accepting connections that will be dropped later on. +.Pp +.Bl -tag -width adaptive -compact +.It Cm never +pf will never send syncookie SYNACKs (the default). +.It Cm always +pf will always send syncookie SYNACKs. +.It Cm adaptive +pf will enable syncookie mode when a given percentage of the state table +is used up by half-open TCP connections, as in, those that saw the initial +SYN but didn't finish the three way handshake. +The thresholds for entering and leaving syncookie mode can be specified using +.Bd -literal -offset indent +set syncookies adaptive (start 25%, end 12%) +.Ed +.El .It Ar set state-defaults The .Ar state-defaults From nobody Wed Oct 6 08:47:30 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B03A817E7419; Wed, 6 Oct 2021 08:47: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 4HPSkp6LgLz4VvG; Wed, 6 Oct 2021 08:47: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 54CE61CC58; Wed, 6 Oct 2021 08:47: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 1968lUSq060828; Wed, 6 Oct 2021 08:47:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lUUc060827; Wed, 6 Oct 2021 08:47:30 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:30 GMT Message-Id: <202110060847.1968lUUc060827@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: 7d6def07e03e - stable/12 - pfctl: userspace adaptive syncookies configration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 7d6def07e03e9e94f5c1f42f173e12c9c5effb2a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=7d6def07e03e9e94f5c1f42f173e12c9c5effb2a commit 7d6def07e03e9e94f5c1f42f173e12c9c5effb2a Author: Kristof Provost AuthorDate: 2021-08-13 11:42:59 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:58 +0000 pfctl: userspace adaptive syncookies configration Hook up the userspace bits to configure syncookies in adaptive mode. MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32136 (cherry picked from commit 5062afff9de7e67da96e3f0dcb9d8bbd5a4e1c5b) --- lib/libpfctl/libpfctl.c | 55 ++++++++++++++++++++++++++++++++++++++++++----- lib/libpfctl/libpfctl.h | 6 +++++- sbin/pfctl/parse.y | 43 ++++++++++++++++++++++++++++++++++-- sbin/pfctl/pfctl.c | 51 ++++++++++++++++++++++++++++++++++++++++++- sbin/pfctl/pfctl_parser.c | 5 +++-- sbin/pfctl/pfctl_parser.h | 8 +++++++ sys/net/pfvar.h | 3 +++ 7 files changed, 160 insertions(+), 11 deletions(-) diff --git a/lib/libpfctl/libpfctl.c b/lib/libpfctl/libpfctl.c index 3d52502f9ba8..c2d57d8136ca 100644 --- a/lib/libpfctl/libpfctl.c +++ b/lib/libpfctl/libpfctl.c @@ -50,6 +50,12 @@ #include "libpfctl.h" +const char* PFCTL_SYNCOOKIES_MODE_NAMES[] = { + "never", + "always", + "adaptive" +}; + static int _pfctl_clear_states(int , const struct pfctl_kill *, unsigned int *, uint64_t); @@ -932,17 +938,40 @@ pfctl_kill_states(int dev, const struct pfctl_kill *kill, unsigned int *killed) return (_pfctl_clear_states(dev, kill, killed, DIOCKILLSTATESNV)); } +static int +pfctl_get_limit(int dev, const int index, u_int *limit) +{ + struct pfioc_limit pl; + + bzero(&pl, sizeof(pl)); + pl.index = index; + + if (ioctl(dev, DIOCGETLIMIT, &pl) == -1) + return (errno); + + *limit = pl.limit; + + return (0); +} + int pfctl_set_syncookies(int dev, const struct pfctl_syncookies *s) { struct pfioc_nv nv; nvlist_t *nvl; int ret; + u_int state_limit; + + ret = pfctl_get_limit(dev, PF_LIMIT_STATES, &state_limit); + if (ret != 0) + return (ret); nvl = nvlist_create(0); nvlist_add_bool(nvl, "enabled", s->mode != PFCTL_SYNCOOKIES_NEVER); - nvlist_add_bool(nvl, "adaptive", false); /* XXX TODO */ + nvlist_add_bool(nvl, "adaptive", s->mode == PFCTL_SYNCOOKIES_ADAPTIVE); + nvlist_add_number(nvl, "highwater", state_limit * s->highwater / 100); + nvlist_add_number(nvl, "lowwater", state_limit * s->lowwater / 100); nv.data = nvlist_pack(nvl, &nv.len); nv.size = nv.len; @@ -960,12 +989,18 @@ pfctl_get_syncookies(int dev, struct pfctl_syncookies *s) { struct pfioc_nv nv; nvlist_t *nvl; - bool enabled, adaptive; + int ret; + u_int state_limit; + bool enabled, adaptive; + + ret = pfctl_get_limit(dev, PF_LIMIT_STATES, &state_limit); + if (ret != 0) + return (ret); bzero(s, sizeof(*s)); - nv.data = malloc(128); - nv.len = nv.size = 128; + nv.data = malloc(256); + nv.len = nv.size = 256; if (ioctl(dev, DIOCGETSYNCOOKIES, &nv)) { free(nv.data); @@ -981,7 +1016,17 @@ pfctl_get_syncookies(int dev, struct pfctl_syncookies *s) enabled = nvlist_get_bool(nvl, "enabled"); adaptive = nvlist_get_bool(nvl, "adaptive"); - s->mode = enabled ? PFCTL_SYNCOOKIES_ALWAYS : PFCTL_SYNCOOKIES_NEVER; + if (enabled) { + if (adaptive) + s->mode = PFCTL_SYNCOOKIES_ADAPTIVE; + else + s->mode = PFCTL_SYNCOOKIES_ALWAYS; + } else { + s->mode = PFCTL_SYNCOOKIES_NEVER; + } + + s->highwater = nvlist_get_number(nvl, "highwater") * 100 / state_limit; + s->lowwater = nvlist_get_number(nvl, "lowwater") * 100 / state_limit; nvlist_destroy(nvl); diff --git a/lib/libpfctl/libpfctl.h b/lib/libpfctl/libpfctl.h index 70de7627f0a6..70c144772c02 100644 --- a/lib/libpfctl/libpfctl.h +++ b/lib/libpfctl/libpfctl.h @@ -273,11 +273,15 @@ struct pfctl_states { enum pfctl_syncookies_mode { PFCTL_SYNCOOKIES_NEVER, - PFCTL_SYNCOOKIES_ALWAYS + PFCTL_SYNCOOKIES_ALWAYS, + PFCTL_SYNCOOKIES_ADAPTIVE }; +extern const char* PFCTL_SYNCOOKIES_MODE_NAMES[]; struct pfctl_syncookies { enum pfctl_syncookies_mode mode; + uint8_t highwater; /* Percent */ + uint8_t lowwater; /* Percent */ }; struct pfctl_status* pfctl_get_status(int dev); diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y index 0320cdc7ec00..2bfb1e651d65 100644 --- a/sbin/pfctl/parse.y +++ b/sbin/pfctl/parse.y @@ -317,6 +317,7 @@ static struct codel_opts codel_opts; static struct node_hfsc_opts hfsc_opts; static struct node_fairq_opts fairq_opts; static struct node_state_opt *keep_state_defaults = NULL; +static struct pfctl_watermarks syncookie_opts; int disallow_table(struct node_host *, const char *); int disallow_urpf_failed(struct node_host *, const char *); @@ -442,6 +443,7 @@ typedef struct { struct node_hfsc_opts hfsc_opts; struct node_fairq_opts fairq_opts; struct codel_opts codel_opts; + struct pfctl_watermarks *watermarks; } v; int lineno; } YYSTYPE; @@ -527,6 +529,7 @@ int parseport(char *, struct range *r, int); %type pool_opts pool_opt pool_opts_l %type tagged %type rtable +%type syncookie_opts %% ruleset : /* empty */ @@ -725,14 +728,19 @@ option : SET OPTIMIZATION STRING { | SET KEEPCOUNTERS { pf->keep_counters = true; } - | SET SYNCOOKIES syncookie_val { - pf->syncookies = $3; + | SET SYNCOOKIES syncookie_val syncookie_opts { + if (pfctl_cfg_syncookies(pf, $3, $4)) { + yyerror("error setting syncookies"); + YYERROR; + } } ; syncookie_val : STRING { if (!strcmp($1, "never")) $$ = PFCTL_SYNCOOKIES_NEVER; + else if (!strcmp($1, "adaptive")) + $$ = PFCTL_SYNCOOKIES_ADAPTIVE; else if (!strcmp($1, "always")) $$ = PFCTL_SYNCOOKIES_ALWAYS; else { @@ -741,6 +749,37 @@ syncookie_val : STRING { } } ; +syncookie_opts : /* empty */ { $$ = NULL; } + | { + memset(&syncookie_opts, 0, sizeof(syncookie_opts)); + } '(' syncookie_opt_l ')' { $$ = &syncookie_opts; } + ; + +syncookie_opt_l : syncookie_opt_l comma syncookie_opt + | syncookie_opt + ; + +syncookie_opt : STRING STRING { + double val; + char *cp; + + val = strtod($2, &cp); + if (cp == NULL || strcmp(cp, "%")) + YYERROR; + if (val <= 0 || val > 100) { + yyerror("illegal percentage value"); + YYERROR; + } + if (!strcmp($1, "start")) { + syncookie_opts.hi = val; + } else if (!strcmp($1, "end")) { + syncookie_opts.lo = val; + } else { + yyerror("illegal syncookie option"); + YYERROR; + } + } + ; stringall : STRING { $$ = $1; } | ALL { diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c index 8f3698e398f6..d7bde0012e9b 100644 --- a/sbin/pfctl/pfctl.c +++ b/sbin/pfctl/pfctl.c @@ -1812,6 +1812,10 @@ pfctl_init_options(struct pfctl *pf) pf->limit[PF_LIMIT_TABLE_ENTRIES] = PFR_KENTRY_HIWAT; pf->debug = PF_DEBUG_URGENT; + + pf->syncookies = false; + pf->syncookieswat[0] = PF_SYNCOOKIES_LOWATPCT; + pf->syncookieswat[1] = PF_SYNCOOKIES_HIWATPCT; } int @@ -2069,7 +2073,9 @@ pfctl_load_syncookies(struct pfctl *pf, u_int8_t val) bzero(&cookies, sizeof(cookies)); - cookies.mode = val ? PFCTL_SYNCOOKIES_ALWAYS : PFCTL_SYNCOOKIES_NEVER; + cookies.mode = val; + cookies.lowwater = pf->syncookieswat[0]; + cookies.highwater = pf->syncookieswat[1]; if (pfctl_set_syncookies(dev, &cookies)) { warnx("DIOCSETSYNCOOKIES"); @@ -2078,6 +2084,49 @@ pfctl_load_syncookies(struct pfctl *pf, u_int8_t val) return (0); } +int +pfctl_cfg_syncookies(struct pfctl *pf, uint8_t val, struct pfctl_watermarks *w) +{ + if (val != PF_SYNCOOKIES_ADAPTIVE && w != NULL) { + warnx("syncookies start/end only apply to adaptive"); + return (1); + } + if (val == PF_SYNCOOKIES_ADAPTIVE && w != NULL) { + if (!w->hi) + w->hi = PF_SYNCOOKIES_HIWATPCT; + if (!w->lo) + w->lo = w->hi / 2; + if (w->lo >= w->hi) { + warnx("start must be higher than end"); + return (1); + } + pf->syncookieswat[0] = w->lo; + pf->syncookieswat[1] = w->hi; + pf->syncookieswat_set = 1; + } + + if (pf->opts & PF_OPT_VERBOSE) { + if (val == PF_SYNCOOKIES_NEVER) + printf("set syncookies never\n"); + else if (val == PF_SYNCOOKIES_ALWAYS) + printf("set syncookies always\n"); + else if (val == PF_SYNCOOKIES_ADAPTIVE) { + if (pf->syncookieswat_set) + printf("set syncookies adaptive (start %u%%, " + "end %u%%)\n", pf->syncookieswat[1], + pf->syncookieswat[0]); + else + printf("set syncookies adaptive\n"); + } else { /* cannot happen */ + warnx("king bula ate all syncookies"); + return (1); + } + } + + pf->syncookies = val; + return (0); +} + int pfctl_set_debug(struct pfctl *pf, char *d) { diff --git a/sbin/pfctl/pfctl_parser.c b/sbin/pfctl/pfctl_parser.c index 24931f023431..dc4a2254d733 100644 --- a/sbin/pfctl/pfctl_parser.c +++ b/sbin/pfctl/pfctl_parser.c @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -618,9 +619,9 @@ print_status(struct pfctl_status *s, struct pfctl_syncookies *cookies, int opts) } printf("Syncookies\n"); + assert(cookies->mode <= PFCTL_SYNCOOKIES_ADAPTIVE); printf(" %-25s %s\n", "mode", - cookies->mode == PFCTL_SYNCOOKIES_NEVER ? - "never" : "always"); + PFCTL_SYNCOOKIES_MODE_NAMES[cookies->mode]); } } diff --git a/sbin/pfctl/pfctl_parser.h b/sbin/pfctl/pfctl_parser.h index 12a66e1ae710..484830c61791 100644 --- a/sbin/pfctl/pfctl_parser.h +++ b/sbin/pfctl/pfctl_parser.h @@ -101,6 +101,8 @@ struct pfctl { char *ifname; bool keep_counters; u_int8_t syncookies; + u_int8_t syncookieswat[2]; /* lowat, highwat, in % */ + u_int8_t syncookieswat_set; u_int8_t timeout_set[PFTM_MAX]; u_int8_t limit_set[PF_LIMIT_MAX]; @@ -200,6 +202,11 @@ struct pfctl_altq { } meta; }; +struct pfctl_watermarks { + uint32_t hi; + uint32_t lo; +}; + #ifdef __FreeBSD__ /* * XXX @@ -270,6 +277,7 @@ int pfctl_set_logif(struct pfctl *, char *); int pfctl_set_hostid(struct pfctl *, u_int32_t); int pfctl_set_debug(struct pfctl *, char *); int pfctl_set_interface_flags(struct pfctl *, char *, int, int); +int pfctl_cfg_syncookies(struct pfctl *, uint8_t, struct pfctl_watermarks *); int parse_config(char *, struct pfctl *); int parse_flags(char *); diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index 5e2022ae8828..b6a1f779c073 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1373,6 +1373,9 @@ enum pf_syncookies_mode { PF_SYNCOOKIES_MODE_MAX = PF_SYNCOOKIES_ADAPTIVE }; +#define PF_SYNCOOKIES_HIWATPCT 25 +#define PF_SYNCOOKIES_LOWATPCT (PF_SYNCOOKIES_HIWATPCT / 2) + #ifdef _KERNEL struct pf_kstatus { counter_u64_t counters[PFRES_MAX]; /* reason for passing/dropping */ From nobody Wed Oct 6 08:47:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0ABFB17E7433; Wed, 6 Oct 2021 08:47: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 4HPSkr0yHvz4Vxj; Wed, 6 Oct 2021 08:47: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 79D831D30B; Wed, 6 Oct 2021 08:47: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 1968lVJh060876; Wed, 6 Oct 2021 08:47:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lV8j060875; Wed, 6 Oct 2021 08:47:31 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:31 GMT Message-Id: <202110060847.1968lV8j060875@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: ab14a9ac18e5 - stable/12 - pf.conf: document syncookies List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: ab14a9ac18e5c2b681cc6e1d9e5a7f13e453c16a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=ab14a9ac18e5c2b681cc6e1d9e5a7f13e453c16a commit ab14a9ac18e5c2b681cc6e1d9e5a7f13e453c16a Author: Kristof Provost AuthorDate: 2021-08-14 08:42:03 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:58 +0000 pf.conf: document syncookies Reviewed by: bcr Obtained from: OpenBSD MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32137 (cherry picked from commit 20f015f08d66d0d953e49245cb95c81c118b9ee9) --- share/man/man5/pf.conf.5 | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5 index 48902f11cf15..f75edb6fcc17 100644 --- a/share/man/man5/pf.conf.5 +++ b/share/man/man5/pf.conf.5 @@ -28,7 +28,7 @@ .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 19, 2021 +.Dd September 25, 2021 .Dt PF.CONF 5 .Os .Sh NAME @@ -540,6 +540,34 @@ For example: .Bd -literal -offset indent set state-policy if-bound .Ed +.It Ar set syncookies never | always | adaptive +When +.Cm syncookies +are active, pf will answer each incoming TCP SYN with a syncookie SYNACK, +without allocating any resources. +Upon reception of the client's ACK in response to the syncookie +SYNACK, pf will evaluate the ruleset and create state if the ruleset +permits it, complete the three way handshake with the target host and +continue the connection with synproxy in place. +This allows pf to be resilient against large synflood attacks which would +run the state table against its limits otherwise. +Due to the blind answers to every incoming SYN syncookies share the caveats of +synproxy, namely seemingly accepting connections that will be dropped later on. +.Pp +.Bl -tag -width adaptive -compact +.It Cm never +pf will never send syncookie SYNACKs (the default). +.It Cm always +pf will always send syncookie SYNACKs. +.It Cm adaptive +pf will enable syncookie mode when a given percentage of the state table +is used up by half-open TCP connections, as in, those that saw the initial +SYN but didn't finish the three way handshake. +The thresholds for entering and leaving syncookie mode can be specified using +.Bd -literal -offset indent +set syncookies adaptive (start 25%, end 12%) +.Ed +.El .It Ar set state-defaults The .Ar state-defaults From nobody Wed Oct 6 08:47:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6138D17E7484; Wed, 6 Oct 2021 08:47: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 4HPSkr0wRBz4Vrw; Wed, 6 Oct 2021 08:47: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 B8C3B1D30C; Wed, 6 Oct 2021 08:47: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 1968lVjU060900; Wed, 6 Oct 2021 08:47:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lVj6060899; Wed, 6 Oct 2021 08:47:31 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:31 GMT Message-Id: <202110060847.1968lVj6060899@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: 767b29877ee5 - stable/13 - pf tests: Basic syncookie test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 767b29877ee52f2895a1ffa1984c705aebdce483 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=767b29877ee52f2895a1ffa1984c705aebdce483 commit 767b29877ee52f2895a1ffa1984c705aebdce483 Author: Kristof Provost AuthorDate: 2021-07-10 11:20:44 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:54 +0000 pf tests: Basic syncookie test MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32138 (cherry picked from commit dc0636636bb1937283d4f218732ac2357f4ec4f1) --- tests/sys/netpfil/pf/syncookie.sh | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/sys/netpfil/pf/syncookie.sh b/tests/sys/netpfil/pf/syncookie.sh index 49acd9fab11d..8a4005d0fc6d 100644 --- a/tests/sys/netpfil/pf/syncookie.sh +++ b/tests/sys/netpfil/pf/syncookie.sh @@ -29,6 +29,48 @@ common_dir=$(atf_get_srcdir)/../common +atf_test_case "basic" "cleanup" +basic_head() +{ + atf_set descr 'Basic syncookie test' + atf_set require.user root +} + +basic_body() +{ + pft_init + + epair=$(vnet_mkepair) + + vnet_mkjail alcatraz ${epair}b + jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up + jexec alcatraz /usr/sbin/inetd -p inetd-alcatraz.pid \ + $(atf_get_srcdir)/echo_inetd.conf + + ifconfig ${epair}a 192.0.2.2/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "set syncookies always" \ + "pass in" \ + "pass out" + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + reply=$(echo foo | nc -N -w 5 192.0.2.1 7) + if [ "${reply}" != "foo" ]; + then + atf_fail "Failed to connect to syncookie protected echo daemon" + fi +} + +basic_cleanup() +{ + rm -f inetd-alcatraz.pid + pft_cleanup +} + atf_test_case "forward" "cleanup" forward_head() { @@ -128,6 +170,7 @@ nostate_cleanup() atf_init_test_cases() { + atf_add_test_case "basic" atf_add_test_case "forward" atf_add_test_case "nostate" } From nobody Wed Oct 6 08:47:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 966AE17E7452; Wed, 6 Oct 2021 08:47: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 4HPSkt1Qg1z4VmH; Wed, 6 Oct 2021 08:47: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 9CEC61D47B; Wed, 6 Oct 2021 08:47: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 1968lWVp060926; Wed, 6 Oct 2021 08:47:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lWPI060925; Wed, 6 Oct 2021 08:47:32 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:32 GMT Message-Id: <202110060847.1968lWPI060925@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: 18fe461d67c7 - stable/12 - pf tests: Basic syncookie test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 18fe461d67c7626a266369cbdb862de986a85d5b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=18fe461d67c7626a266369cbdb862de986a85d5b commit 18fe461d67c7626a266369cbdb862de986a85d5b Author: Kristof Provost AuthorDate: 2021-07-10 11:20:44 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:58 +0000 pf tests: Basic syncookie test MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32138 (cherry picked from commit dc0636636bb1937283d4f218732ac2357f4ec4f1) --- tests/sys/netpfil/pf/syncookie.sh | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/sys/netpfil/pf/syncookie.sh b/tests/sys/netpfil/pf/syncookie.sh index 49acd9fab11d..8a4005d0fc6d 100644 --- a/tests/sys/netpfil/pf/syncookie.sh +++ b/tests/sys/netpfil/pf/syncookie.sh @@ -29,6 +29,48 @@ common_dir=$(atf_get_srcdir)/../common +atf_test_case "basic" "cleanup" +basic_head() +{ + atf_set descr 'Basic syncookie test' + atf_set require.user root +} + +basic_body() +{ + pft_init + + epair=$(vnet_mkepair) + + vnet_mkjail alcatraz ${epair}b + jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up + jexec alcatraz /usr/sbin/inetd -p inetd-alcatraz.pid \ + $(atf_get_srcdir)/echo_inetd.conf + + ifconfig ${epair}a 192.0.2.2/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "set syncookies always" \ + "pass in" \ + "pass out" + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + reply=$(echo foo | nc -N -w 5 192.0.2.1 7) + if [ "${reply}" != "foo" ]; + then + atf_fail "Failed to connect to syncookie protected echo daemon" + fi +} + +basic_cleanup() +{ + rm -f inetd-alcatraz.pid + pft_cleanup +} + atf_test_case "forward" "cleanup" forward_head() { @@ -128,6 +170,7 @@ nostate_cleanup() atf_init_test_cases() { + atf_add_test_case "basic" atf_add_test_case "forward" atf_add_test_case "nostate" } From nobody Wed Oct 6 08:47:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 36F6217E7592; Wed, 6 Oct 2021 08:47: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 4HPSks1QqNz4W2n; Wed, 6 Oct 2021 08:47: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 DD4A61D30D; Wed, 6 Oct 2021 08:47: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 1968lWBS060950; Wed, 6 Oct 2021 08:47:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lW1r060949; Wed, 6 Oct 2021 08:47:32 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:32 GMT Message-Id: <202110060847.1968lW1r060949@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: 4747ec0839e3 - stable/13 - pf tests: Basic adaptive mode syncookie test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 4747ec0839e37cb8bdc459698bfd28452a771edd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=4747ec0839e37cb8bdc459698bfd28452a771edd commit 4747ec0839e37cb8bdc459698bfd28452a771edd Author: Kristof Provost AuthorDate: 2021-09-25 13:05:02 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:54 +0000 pf tests: Basic adaptive mode syncookie test MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32139 (cherry picked from commit 2f20d80692ceb584842a7642562fc9f610a5b661) --- tests/sys/netpfil/pf/syncookie.sh | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/sys/netpfil/pf/syncookie.sh b/tests/sys/netpfil/pf/syncookie.sh index 8a4005d0fc6d..d85beac1a4d1 100644 --- a/tests/sys/netpfil/pf/syncookie.sh +++ b/tests/sys/netpfil/pf/syncookie.sh @@ -168,9 +168,59 @@ nostate_cleanup() pft_cleanup } +atf_test_case "adaptive" "cleanup" +adaptive_head() +{ + atf_set descr 'Adaptive mode test' + atf_set require.user root + atf_set require.progs scapy +} + +adaptive_body() +{ + pft_init + + epair=$(vnet_mkepair) + ifconfig ${epair}a 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}b + jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "set limit states 100" \ + "set syncookies adaptive (start 10%%, end 5%%)" \ + "pass in" \ + "pass out" + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + # Now syn flood to create many states + ${common_dir}/pft_synflood.py \ + --sendif ${epair}a \ + --to 192.0.2.2 \ + --count 100 + + # Adaptive mode should kick in and stop us from creating more than + # about 10 states + states=$(jexec alcatraz pfctl -ss | grep tcp | wc -l) + if [ "$states" -gt 20 ]; + then + echo "$states" + atf_fail "Found unexpected states" + fi +} + +adaptive_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "basic" atf_add_test_case "forward" atf_add_test_case "nostate" + atf_add_test_case "adaptive" } From nobody Wed Oct 6 08:47:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2B5BA17E760A; Wed, 6 Oct 2021 08:47: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 4HPSkt5WSMz4Vmb; Wed, 6 Oct 2021 08:47: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 B7B3D1D47C; Wed, 6 Oct 2021 08:47: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 1968lXuU060982; Wed, 6 Oct 2021 08:47:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1968lXV0060981; Wed, 6 Oct 2021 08:47:33 GMT (envelope-from git) Date: Wed, 6 Oct 2021 08:47:33 GMT Message-Id: <202110060847.1968lXV0060981@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: f7e56b482606 - stable/12 - pf tests: Basic adaptive mode syncookie test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f7e56b48260646f8b1d5d619a92ca1b2c2d26efc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=f7e56b48260646f8b1d5d619a92ca1b2c2d26efc commit f7e56b48260646f8b1d5d619a92ca1b2c2d26efc Author: Kristof Provost AuthorDate: 2021-09-25 13:05:02 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 08:46:58 +0000 pf tests: Basic adaptive mode syncookie test MFC after: 1 week Sponsored by: Modirum MDPay Differential Revision: https://reviews.freebsd.org/D32139 (cherry picked from commit 2f20d80692ceb584842a7642562fc9f610a5b661) --- tests/sys/netpfil/pf/syncookie.sh | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/tests/sys/netpfil/pf/syncookie.sh b/tests/sys/netpfil/pf/syncookie.sh index 8a4005d0fc6d..d85beac1a4d1 100644 --- a/tests/sys/netpfil/pf/syncookie.sh +++ b/tests/sys/netpfil/pf/syncookie.sh @@ -168,9 +168,59 @@ nostate_cleanup() pft_cleanup } +atf_test_case "adaptive" "cleanup" +adaptive_head() +{ + atf_set descr 'Adaptive mode test' + atf_set require.user root + atf_set require.progs scapy +} + +adaptive_body() +{ + pft_init + + epair=$(vnet_mkepair) + ifconfig ${epair}a 192.0.2.2/24 up + + vnet_mkjail alcatraz ${epair}b + jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up + + jexec alcatraz pfctl -e + pft_set_rules alcatraz \ + "set limit states 100" \ + "set syncookies adaptive (start 10%%, end 5%%)" \ + "pass in" \ + "pass out" + + # Sanity check + atf_check -s exit:0 -o ignore ping -c 1 192.0.2.1 + + # Now syn flood to create many states + ${common_dir}/pft_synflood.py \ + --sendif ${epair}a \ + --to 192.0.2.2 \ + --count 100 + + # Adaptive mode should kick in and stop us from creating more than + # about 10 states + states=$(jexec alcatraz pfctl -ss | grep tcp | wc -l) + if [ "$states" -gt 20 ]; + then + echo "$states" + atf_fail "Found unexpected states" + fi +} + +adaptive_cleanup() +{ + pft_cleanup +} + atf_init_test_cases() { atf_add_test_case "basic" atf_add_test_case "forward" atf_add_test_case "nostate" + atf_add_test_case "adaptive" } From nobody Wed Oct 6 14:05:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 67A6417E6F3E; Wed, 6 Oct 2021 14:05: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 4HPbnm2Sygz3hHj; Wed, 6 Oct 2021 14:05: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 3569F2182B; Wed, 6 Oct 2021 14:05: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 196E5WGi086671; Wed, 6 Oct 2021 14:05:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196E5Wlb086670; Wed, 6 Oct 2021 14:05:32 GMT (envelope-from git) Date: Wed, 6 Oct 2021 14:05:32 GMT Message-Id: <202110061405.196E5Wlb086670@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: b599982b65e3 - main - Move td_pflags2 TDP2_SIGWAIT to td_flags TDF_SIGWAIT List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: b599982b65e36523a8aa828a9d504135144158db Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b599982b65e36523a8aa828a9d504135144158db commit b599982b65e36523a8aa828a9d504135144158db Author: Konstantin Belousov AuthorDate: 2021-10-03 01:52:39 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 14:05:22 +0000 Move td_pflags2 TDP2_SIGWAIT to td_flags TDF_SIGWAIT The flag should be accessible from non-current threads. Reviewed by: markj Tested by: trasz Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32252 --- sys/kern/kern_sig.c | 17 +++++++++++------ sys/sys/proc.h | 3 +-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 95eb8d5cc564..b20aea21333e 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1278,8 +1278,11 @@ kern_sigtimedwait(struct thread *td, sigset_t waitset, ksiginfo_t *ksi, 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; + !kern_sig_discard_ign) { + thread_lock(td); + td->td_flags |= TDF_SIGWAIT; + thread_unlock(td); + } for (;;) { mtx_lock(&ps->ps_mtx); sig = cursig(td); @@ -1343,7 +1346,9 @@ 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; + thread_lock(td); + td->td_flags &= ~TDF_SIGWAIT; + thread_unlock(td); new_block = saved_mask; SIGSETNAND(new_block, td->td_sigmask); @@ -2951,7 +2956,7 @@ issignal(struct thread *td) */ if (SIGISMEMBER(ps->ps_sigignore, sig) && (p->p_flag & P_TRACED) == 0 && - (td->td_pflags2 & TDP2_SIGWAIT) == 0) { + (td->td_flags & TDF_SIGWAIT) == 0) { sigqueue_delete(&td->td_sigqueue, sig); sigqueue_delete(&p->p_sigqueue, sig); continue; @@ -3064,7 +3069,7 @@ issignal(struct thread *td) mtx_lock(&ps->ps_mtx); goto next; } else if ((prop & SIGPROP_IGNORE) != 0 && - (td->td_pflags2 & TDP2_SIGWAIT) == 0) { + (td->td_flags & TDF_SIGWAIT) == 0) { /* * Default action is to ignore; drop it if * not in kern_sigtimedwait(). @@ -3075,7 +3080,7 @@ issignal(struct thread *td) /*NOTREACHED*/ case (intptr_t)SIG_IGN: - if ((td->td_pflags2 & TDP2_SIGWAIT) == 0) + if ((td->td_flags & TDF_SIGWAIT) == 0) break; /* == ignore */ else return (sig); diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 3d01aae2d06b..8fa9406bd378 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -446,7 +446,7 @@ do { \ #define TDF_TIMEOUT 0x00000010 /* Timing out during sleep. */ #define TDF_IDLETD 0x00000020 /* This is a per-CPU idle thread. */ #define TDF_CANSWAP 0x00000040 /* Thread can be swapped. */ -#define TDF_UNUSED80 0x00000080 /* unused. */ +#define TDF_SIGWAIT 0x00000080 /* Ignore ignored signals */ #define TDF_KTH_SUSP 0x00000100 /* kthread is suspended */ #define TDF_ALLPROCSUSP 0x00000200 /* suspended by SINGLE_ALLPROC */ #define TDF_BOUNDARY 0x00000400 /* Thread suspended at user boundary */ @@ -531,7 +531,6 @@ 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. From nobody Wed Oct 6 14:05:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A974A17E7022; Wed, 6 Oct 2021 14:05: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 4HPbnn3McKz3hYM; Wed, 6 Oct 2021 14:05: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 52C65215A7; Wed, 6 Oct 2021 14:05: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 196E5XXM086697; Wed, 6 Oct 2021 14:05:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196E5XTS086696; Wed, 6 Oct 2021 14:05:33 GMT (envelope-from git) Date: Wed, 6 Oct 2021 14:05:33 GMT Message-Id: <202110061405.196E5XTS086696@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: f17eb93d5540 - main - When sending ignored signal, arrange for zero return code from sleep List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f17eb93d5540ec2bf422d96195820bba5021fa9c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f17eb93d5540ec2bf422d96195820bba5021fa9c commit f17eb93d5540ec2bf422d96195820bba5021fa9c Author: Konstantin Belousov AuthorDate: 2021-10-01 06:59:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 14:05:22 +0000 When sending ignored signal, arrange for zero return code from sleep Otherwise consumers get unexpected EINTR errors without seeing a properly discarded signal. Reported and tested by: trasz Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32252 --- sys/kern/kern_sig.c | 23 +++++++++++++---------- sys/kern/subr_sleepqueue.c | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index b20aea21333e..59e16ca8e6c8 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -2214,17 +2214,20 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) return (ret); } else { action = SIG_CATCH; + intrval = 0; } - } else if (SIGISMEMBER(td->td_sigmask, sig)) - action = SIG_HOLD; - else if (SIGISMEMBER(ps->ps_sigcatch, sig)) - action = SIG_CATCH; - else - action = SIG_DFL; - if (SIGISMEMBER(ps->ps_sigintr, sig)) - intrval = EINTR; - else - intrval = ERESTART; + } else { + if (SIGISMEMBER(td->td_sigmask, sig)) + action = SIG_HOLD; + else if (SIGISMEMBER(ps->ps_sigcatch, sig)) + action = SIG_CATCH; + else + action = SIG_DFL; + if (SIGISMEMBER(ps->ps_sigintr, sig)) + intrval = EINTR; + else + intrval = ERESTART; + } mtx_unlock(&ps->ps_mtx); if (prop & SIGPROP_CONT) diff --git a/sys/kern/subr_sleepqueue.c b/sys/kern/subr_sleepqueue.c index 61efb1b9f377..8d61383f9737 100644 --- a/sys/kern/subr_sleepqueue.c +++ b/sys/kern/subr_sleepqueue.c @@ -1126,7 +1126,7 @@ sleepq_abort(struct thread *td, int intrval) THREAD_LOCK_ASSERT(td, MA_OWNED); MPASS(TD_ON_SLEEPQ(td)); MPASS(td->td_flags & TDF_SINTR); - MPASS(intrval == EINTR || intrval == ERESTART); + MPASS(intrval == 0 || intrval == EINTR || intrval == ERESTART); /* * If the TDF_TIMEOUT flag is set, just leave. A From nobody Wed Oct 6 14:05:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 491FE17E711A; Wed, 6 Oct 2021 14:05: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 4HPbnp5s5Xz3hRF; Wed, 6 Oct 2021 14:05: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 7BB172182C; Wed, 6 Oct 2021 14:05: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 196E5YTU086726; Wed, 6 Oct 2021 14:05:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196E5YML086725; Wed, 6 Oct 2021 14:05:34 GMT (envelope-from git) Date: Wed, 6 Oct 2021 14:05:34 GMT Message-Id: <202110061405.196E5YML086725@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: 9b86d3e5de19 - main - When queuing ignored signal, only abort target thread' sleep if it is inside sigwait() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 9b86d3e5de1997ed8d3153d4530bcb981e6602b9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=9b86d3e5de1997ed8d3153d4530bcb981e6602b9 commit 9b86d3e5de1997ed8d3153d4530bcb981e6602b9 Author: Konstantin Belousov AuthorDate: 2021-10-03 02:03:59 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-06 14:05:22 +0000 When queuing ignored signal, only abort target thread' sleep if it is inside sigwait() Reported and tested by: trasz Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32252 --- sys/kern/kern_sig.c | 16 ++++++++++++++-- sys/kern/subr_sleepqueue.c | 3 ++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 59e16ca8e6c8..b88556f2954d 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -2156,6 +2156,18 @@ tdksignal(struct thread *td, int sig, ksiginfo_t *ksi) (void) tdsendsignal(td->td_proc, td, sig, ksi); } +static int +sig_sleepq_abort(struct thread *td, int intrval) +{ + THREAD_LOCK_ASSERT(td, MA_OWNED); + + if (intrval == 0 && (td->td_flags & TDF_SIGWAIT) == 0) { + thread_unlock(td); + return (0); + } + return (sleepq_abort(td, intrval)); +} + int tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) { @@ -2374,7 +2386,7 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) PROC_SLOCK(p); thread_lock(td); if (TD_CAN_ABORT(td)) - wakeup_swapper = sleepq_abort(td, intrval); + wakeup_swapper = sig_sleepq_abort(td, intrval); else thread_unlock(td); PROC_SUNLOCK(p); @@ -2505,7 +2517,7 @@ tdsigwakeup(struct thread *td, int sig, sig_t action, int intrval) if (td->td_priority > PUSER && !TD_IS_IDLETHREAD(td)) sched_prio(td, PUSER); - wakeup_swapper = sleepq_abort(td, intrval); + wakeup_swapper = sig_sleepq_abort(td, intrval); PROC_SUNLOCK(p); if (wakeup_swapper) kick_proc0(); diff --git a/sys/kern/subr_sleepqueue.c b/sys/kern/subr_sleepqueue.c index 8d61383f9737..36832ef96ba4 100644 --- a/sys/kern/subr_sleepqueue.c +++ b/sys/kern/subr_sleepqueue.c @@ -1126,7 +1126,8 @@ sleepq_abort(struct thread *td, int intrval) THREAD_LOCK_ASSERT(td, MA_OWNED); MPASS(TD_ON_SLEEPQ(td)); MPASS(td->td_flags & TDF_SINTR); - MPASS(intrval == 0 || intrval == EINTR || intrval == ERESTART); + MPASS((intrval == 0 && (td->td_flags & TDF_SIGWAIT) != 0) || + intrval == EINTR || intrval == ERESTART); /* * If the TDF_TIMEOUT flag is set, just leave. A From nobody Wed Oct 6 14:16:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 85DC117E9916; Wed, 6 Oct 2021 14:16:41 +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 4HPc2d3MP2z3kKD; Wed, 6 Oct 2021 14:16:41 +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 502D121749; Wed, 6 Oct 2021 14:16:41 +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 196EGfVd000538; Wed, 6 Oct 2021 14:16:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196EGfvP000537; Wed, 6 Oct 2021 14:16:41 GMT (envelope-from git) Date: Wed, 6 Oct 2021 14:16:41 GMT Message-Id: <202110061416.196EGfvP000537@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: da3278ded3b2 - main - ntp.conf.5: Fix typos List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: da3278ded3b2647d26da26788bab8363e502a144 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=da3278ded3b2647d26da26788bab8363e502a144 commit da3278ded3b2647d26da26788bab8363e502a144 Author: Elyes HAOUAS AuthorDate: 2021-10-06 05:38:06 +0000 Commit: Ed Maste CommitDate: 2021-10-06 14:16:04 +0000 ntp.conf.5: Fix typos "certian" --> "certain" "compatability" --> "compatibility" "noticable" --> "noticeable" "limite" --> "limit" "acutal" --> "actual" "ba" --> "be" MFC after: 1 week Pull Request: https://github.com/freebsd/freebsd-src/pull/550 Signed-off-by: Elyes HAOUAS --- usr.sbin/ntp/doc/ntp.conf.5 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/usr.sbin/ntp/doc/ntp.conf.5 b/usr.sbin/ntp/doc/ntp.conf.5 index 0f3d29341d17..3494a09c2bc7 100644 --- a/usr.sbin/ntp/doc/ntp.conf.5 +++ b/usr.sbin/ntp/doc/ntp.conf.5 @@ -843,7 +843,7 @@ The remaining files are necessary only for the Autokey protocol. .Pp Certificates imported from OpenSSL or public certificate -authorities have certian limitations. +authorities have certain limitations. The certificate should be in ASN.1 syntax, X.509 Version 3 format and encoded in PEM, which is the same format used by OpenSSL. @@ -1627,7 +1627,7 @@ one or more IPs or subnets via the third field of the .Pa ntp.keys file. This restriction is not enabled by default, -to maintain backward compatability. +to maintain backward compatibility. Expect .Cm noepeer to become the default in ntp\-4.4. @@ -2574,7 +2574,7 @@ While this is generally a feature as it allows for quick recovery if a server key has changed, a properly forged and appropriately delivered crypto\-NAK packet can be used in a DoS attack. -If you have active noticable problems with this type of DoS attack +If you have active noticeable problems with this type of DoS attack then you should consider disabling this option. You can check your @@ -2622,7 +2622,7 @@ While this is generally a feature as it allows for quick recovery if a server key has changed, a properly forged and appropriately delivered crypto\-NAK packet can be used in a DoS attack. -If you have active noticable problems with this type of DoS attack +If you have active noticeable problems with this type of DoS attack then you should consider disabling this option. You can check your @@ -2642,7 +2642,7 @@ While this is generally a feature as it allows for quick recovery, if this type of packet is carefully forged and sent during an appropriate window it can be used for a DoS attack. -If you have active noticable problems with this type of DoS attack +If you have active noticeable problems with this type of DoS attack then you should consider disabling this option. You can check your @@ -2848,7 +2848,7 @@ command line option. .Cm incalloc Ar count | Cm incmem Ar kilobytes .Oc .Xc -Controls size limite of the monitoring facility's Most Recently Used +Controls size limit of the monitoring facility's Most Recently Used (MRU) list of client addresses, which is also used by the rate control facility. @@ -2856,7 +2856,7 @@ rate control facility. .It Ic maxdepth Ar count .It Ic maxmem Ar kilobytes Equivalent upper limits on the size of the MRU list, in terms of entries or kilobytes. -The acutal limit will be up to +The actual limit will be up to .Cm incalloc entries or .Cm incmem @@ -2878,7 +2878,7 @@ The default is 600 entries. .It Cm maxage Ar seconds Once the MRU list has .Cm mindepth -entries and an additional client is to ba added to the list, +entries and an additional client is to be added to the list, if the oldest entry was updated more than .Cm maxage seconds ago, that entry is removed and its storage is reused. From nobody Wed Oct 6 14:53:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BAA0917ED135; Wed, 6 Oct 2021 14:53: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 4HPcrr4h33z3myc; Wed, 6 Oct 2021 14:53: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 8104622228; Wed, 6 Oct 2021 14:53: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 196ErGkx053091; Wed, 6 Oct 2021 14:53:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196ErGAQ053090; Wed, 6 Oct 2021 14:53:16 GMT (envelope-from git) Date: Wed, 6 Oct 2021 14:53:16 GMT Message-Id: <202110061453.196ErGAQ053090@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: fb49012ca448 - stable/12 - tests: kqueue: CLOCK_BOOTTIME is an alias of CLOCK_UPTIME List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: fb49012ca448f3c7a9ae38ceaf700b8cd39be836 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=fb49012ca448f3c7a9ae38ceaf700b8cd39be836 commit fb49012ca448f3c7a9ae38ceaf700b8cd39be836 Author: Kyle Evans AuthorDate: 2021-10-06 14:50:32 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 14:50:32 +0000 tests: kqueue: CLOCK_BOOTTIME is an alias of CLOCK_UPTIME Build-test should be done a buildenv from a newer branch. =-( We don't have this alias in stable/12, so just provide it locally in a way that won't break should 155f15118a77 find its way here. Reported by: Jenkins, naddy Fixes: f9765c9c1acb ("kqueue: don't arbitrarily restrict ...") --- tests/sys/kqueue/libkqueue/timer.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/sys/kqueue/libkqueue/timer.c b/tests/sys/kqueue/libkqueue/timer.c index 81ab364b796c..9400ef1daa82 100644 --- a/tests/sys/kqueue/libkqueue/timer.c +++ b/tests/sys/kqueue/libkqueue/timer.c @@ -26,6 +26,9 @@ #define MS_TO_US(t) ((t) * THOUSAND) /* Convert milliseconds to microseconds. */ #define US_TO_NS(t) ((t) * THOUSAND) /* Convert microseconds to nanoseconds. */ +#ifndef CLOCK_BOOTTIME +#define CLOCK_BOOTTIME CLOCK_UPTIME +#endif /* Get the current time with microsecond precision. Used for * sub-second timing to make some timer tests run faster. From nobody Wed Oct 6 15:38:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EB38F12B9443; Wed, 6 Oct 2021 15:38: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 4HPds46J4Mz3r3M; Wed, 6 Oct 2021 15:38: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 B96FC22A90; Wed, 6 Oct 2021 15:38: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 196FcWNQ007057; Wed, 6 Oct 2021 15:38:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196FcWns007056; Wed, 6 Oct 2021 15:38:32 GMT (envelope-from git) Date: Wed, 6 Oct 2021 15:38:32 GMT Message-Id: <202110061538.196FcWns007056@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ian Lepore Subject: git: b1cca7436737 - stable/13 - Fix busdma resource leak on usb device detach. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ian X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b1cca74367374bbb9cdc881c671a9f9525dca313 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by ian: URL: https://cgit.FreeBSD.org/src/commit/?id=b1cca74367374bbb9cdc881c671a9f9525dca313 commit b1cca74367374bbb9cdc881c671a9f9525dca313 Author: Ian Lepore AuthorDate: 2021-09-28 19:29:10 +0000 Commit: Ian Lepore CommitDate: 2021-10-06 15:36:02 +0000 Fix busdma resource leak on usb device detach. When a usb device is detached, usb_pc_dmamap_destroy() called bus_dmamap_destroy() while the map was still loaded. That's harmless on x86 architectures, but on all other platforms it causes bus_dmamap_destroy() to return EBUSY and leak away any memory resources (including bounce buffers) associated with the mapping, as well as any allocated map structure itself. This change introduces a new is_loaded flag to the usb_page_cache struct to track whether a map is loaded or not. If the map is loaded, bus_dmamap_unload() is called before bus_dmamap_destroy() to avoid leaking away resources. Differential Revision: https://reviews.freebsd.org/D32208 (cherry picked from commit dc91a9715f8fda4b3633388830a28a99f73cbe59) --- sys/dev/usb/usb_busdma.c | 16 +++++++++++++--- sys/dev/usb/usb_busdma.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/sys/dev/usb/usb_busdma.c b/sys/dev/usb/usb_busdma.c index 4806903fa83a..62e22805b39c 100644 --- a/sys/dev/usb/usb_busdma.c +++ b/sys/dev/usb/usb_busdma.c @@ -600,6 +600,7 @@ usb_pc_alloc_mem(struct usb_page_cache *pc, struct usb_page *pg, bus_dmamem_free(utag->tag, ptr, map); goto error; } + pc->isloaded = 1; memset(ptr, 0, size); usb_pc_cpu_flush(pc); @@ -612,6 +613,7 @@ error: pc->page_start = NULL; pc->page_offset_buf = 0; pc->page_offset_end = 0; + pc->isloaded = 0; pc->map = NULL; pc->tag = NULL; return (1); @@ -626,11 +628,13 @@ void usb_pc_free_mem(struct usb_page_cache *pc) { if (pc && pc->buffer) { - bus_dmamap_unload(pc->tag, pc->map); + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); bus_dmamem_free(pc->tag, pc->buffer, pc->map); pc->buffer = NULL; + pc->isloaded = 0; } } @@ -662,7 +666,8 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) * We have to unload the previous loaded DMA * pages before trying to load a new one! */ - bus_dmamap_unload(pc->tag, pc->map); + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); /* * Try to load memory into DMA. @@ -675,6 +680,7 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) err = 0; } if (err || uptag->dma_error) { + pc->isloaded = 0; return (1); } } else { @@ -682,7 +688,8 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) * We have to unload the previous loaded DMA * pages before trying to load a new one! */ - bus_dmamap_unload(pc->tag, pc->map); + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); /* * Try to load memory into DMA. The callback @@ -693,6 +700,7 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) &usb_pc_load_mem_cb, pc, BUS_DMA_WAITOK)) { } } + pc->isloaded = 1; } else { if (!sync) { /* @@ -785,6 +793,8 @@ void usb_pc_dmamap_destroy(struct usb_page_cache *pc) { if (pc && pc->tag) { + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); bus_dmamap_destroy(pc->tag, pc->map); pc->tag = NULL; pc->map = NULL; diff --git a/sys/dev/usb/usb_busdma.h b/sys/dev/usb/usb_busdma.h index ca0631e2ce53..2f60b30963d2 100644 --- a/sys/dev/usb/usb_busdma.h +++ b/sys/dev/usb/usb_busdma.h @@ -101,6 +101,7 @@ struct usb_page_cache { * from the memory. Else write. */ uint8_t ismultiseg:1; /* set if we can have multiple * segments */ + uint8_t isloaded:1; /* Set if map is currently loaded. */ #endif }; From nobody Wed Oct 6 16:09:47 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4BB8212BD926; Wed, 6 Oct 2021 16:09: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 4HPfY81fqsz3v71; Wed, 6 Oct 2021 16:09: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 18B0F23203; Wed, 6 Oct 2021 16:09: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 196G9mMe047782; Wed, 6 Oct 2021 16:09:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196G9lA4047781; Wed, 6 Oct 2021 16:09:47 GMT (envelope-from git) Date: Wed, 6 Oct 2021 16:09:47 GMT Message-Id: <202110061609.196G9lA4047781@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Ian Lepore Subject: git: 6fea4b82e7b8 - stable/12 - Fix busdma resource leak on usb device detach. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ian X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 6fea4b82e7b86ac680d5615f8361863353737325 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by ian: URL: https://cgit.FreeBSD.org/src/commit/?id=6fea4b82e7b86ac680d5615f8361863353737325 commit 6fea4b82e7b86ac680d5615f8361863353737325 Author: Ian Lepore AuthorDate: 2021-09-28 19:29:10 +0000 Commit: Ian Lepore CommitDate: 2021-10-06 16:08:34 +0000 Fix busdma resource leak on usb device detach. When a usb device is detached, usb_pc_dmamap_destroy() called bus_dmamap_destroy() while the map was still loaded. That's harmless on x86 architectures, but on all other platforms it causes bus_dmamap_destroy() to return EBUSY and leak away any memory resources (including bounce buffers) associated with the mapping, as well as any allocated map structure itself. This change introduces a new is_loaded flag to the usb_page_cache struct to track whether a map is loaded or not. If the map is loaded, bus_dmamap_unload() is called before bus_dmamap_destroy() to avoid leaking away resources. Differential Revision: https://reviews.freebsd.org/D32208 (cherry picked from commit dc91a9715f8fda4b3633388830a28a99f73cbe59) --- sys/dev/usb/usb_busdma.c | 17 +++++++++++++---- sys/dev/usb/usb_busdma.h | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/sys/dev/usb/usb_busdma.c b/sys/dev/usb/usb_busdma.c index b7f0464c1767..9df2b243d232 100644 --- a/sys/dev/usb/usb_busdma.c +++ b/sys/dev/usb/usb_busdma.c @@ -611,6 +611,7 @@ usb_pc_alloc_mem(struct usb_page_cache *pc, struct usb_page *pg, bus_dmamem_free(utag->tag, ptr, map); goto error; } + pc->isloaded = 1; memset(ptr, 0, size); usb_pc_cpu_flush(pc); @@ -623,6 +624,7 @@ error: pc->page_start = NULL; pc->page_offset_buf = 0; pc->page_offset_end = 0; + pc->isloaded = 0; pc->map = NULL; pc->tag = NULL; return (1); @@ -637,12 +639,13 @@ void usb_pc_free_mem(struct usb_page_cache *pc) { if (pc && pc->buffer) { - - bus_dmamap_unload(pc->tag, pc->map); + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); bus_dmamem_free(pc->tag, pc->buffer, pc->map); pc->buffer = NULL; + pc->isloaded = 0; } } @@ -674,7 +677,8 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) * We have to unload the previous loaded DMA * pages before trying to load a new one! */ - bus_dmamap_unload(pc->tag, pc->map); + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); /* * Try to load memory into DMA. @@ -687,6 +691,7 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) err = 0; } if (err || uptag->dma_error) { + pc->isloaded = 0; return (1); } } else { @@ -695,7 +700,8 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) * We have to unload the previous loaded DMA * pages before trying to load a new one! */ - bus_dmamap_unload(pc->tag, pc->map); + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); /* * Try to load memory into DMA. The callback @@ -706,6 +712,7 @@ usb_pc_load_mem(struct usb_page_cache *pc, usb_size_t size, uint8_t sync) &usb_pc_load_mem_cb, pc, BUS_DMA_WAITOK)) { } } + pc->isloaded = 1; } else { if (!sync) { /* @@ -798,6 +805,8 @@ void usb_pc_dmamap_destroy(struct usb_page_cache *pc) { if (pc && pc->tag) { + if (pc->isloaded) + bus_dmamap_unload(pc->tag, pc->map); bus_dmamap_destroy(pc->tag, pc->map); pc->tag = NULL; pc->map = NULL; diff --git a/sys/dev/usb/usb_busdma.h b/sys/dev/usb/usb_busdma.h index d75e67eee8fe..d55ab5c00af0 100644 --- a/sys/dev/usb/usb_busdma.h +++ b/sys/dev/usb/usb_busdma.h @@ -102,6 +102,7 @@ struct usb_page_cache { * from the memory. Else write. */ uint8_t ismultiseg:1; /* set if we can have multiple * segments */ + uint8_t isloaded:1; /* Set if map is currently loaded. */ #endif }; From nobody Wed Oct 6 18:50:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 56ADA12DB8B5; Wed, 6 Oct 2021 18:50: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 4HPk6G1NSQz4b5T; Wed, 6 Oct 2021 18:50: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 0F3492522B; Wed, 6 Oct 2021 18:50: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 196IoDVj066089; Wed, 6 Oct 2021 18:50:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196IoDF0066083; Wed, 6 Oct 2021 18:50:13 GMT (envelope-from git) Date: Wed, 6 Oct 2021 18:50:13 GMT Message-Id: <202110061850.196IoDF0066083@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: a76de17715ab - main - linuxkpi: Handle a NULL cache pointer in kmem_cache_destroy() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: a76de17715ab689b0b53a1012e22d8a08470b6e4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=a76de17715ab689b0b53a1012e22d8a08470b6e4 commit a76de17715ab689b0b53a1012e22d8a08470b6e4 Author: Mark Johnston AuthorDate: 2021-10-06 18:45:22 +0000 Commit: Mark Johnston CommitDate: 2021-10-06 18:49:39 +0000 linuxkpi: Handle a NULL cache pointer in kmem_cache_destroy() This is compatible with Linux, and some driver error paths depend on it. Reviewed by: bz, emaste MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32337 --- sys/compat/linuxkpi/common/src/linux_slab.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/compat/linuxkpi/common/src/linux_slab.c b/sys/compat/linuxkpi/common/src/linux_slab.c index 5dbd87b66d1a..e062f0535fda 100644 --- a/sys/compat/linuxkpi/common/src/linux_slab.c +++ b/sys/compat/linuxkpi/common/src/linux_slab.c @@ -193,6 +193,9 @@ lkpi_kmem_cache_free(struct linux_kmem_cache *c, void *m) void linux_kmem_cache_destroy(struct linux_kmem_cache *c) { + if (c == NULL) + return; + if (unlikely(c->cache_flags & SLAB_TYPESAFE_BY_RCU)) { /* make sure all free callbacks have been called */ rcu_barrier(); From nobody Wed Oct 6 18:53:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 297C712DC5C4; Wed, 6 Oct 2021 18:53: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 4HPk9p0gqQz4blD; Wed, 6 Oct 2021 18:53: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 EBD40251C7; Wed, 6 Oct 2021 18:53: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 196IrH6e074247; Wed, 6 Oct 2021 18:53:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196IrH9L074246; Wed, 6 Oct 2021 18:53:17 GMT (envelope-from git) Date: Wed, 6 Oct 2021 18:53:17 GMT Message-Id: <202110061853.196IrH9L074246@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: 92a6b17e8ba0 - stable/12 - [PowerPC] [MIPS] Implement 32-bit kernel emulation of atomic64 operations List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 92a6b17e8ba00d1d55936b53868f81c69d70f446 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=92a6b17e8ba00d1d55936b53868f81c69d70f446 commit 92a6b17e8ba00d1d55936b53868f81c69d70f446 Author: Brandon Bergren AuthorDate: 2020-01-02 23:20:37 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 18:29:31 +0000 [PowerPC] [MIPS] Implement 32-bit kernel emulation of atomic64 operations This is a lock-based emulation of 64-bit atomics for kernel use, split off from an earlier patch by jhibbits. This is needed to unblock future improvements that reduce the need for locking on 64-bit platforms by using atomic updates. The implementation allows for future integration with userland atomic64, but as that implies going through sysarch for every use, the current status quo of userland doing its own locking may be for the best. Submitted by: jhibbits (original patch), kevans (mips bits) Reviewed by: jhibbits, jeff, kevans Differential Revision: https://reviews.freebsd.org/D22976 (cherry picked from commit 9aafc7c0523456c8b5ee8919c97f75277cf4d70b) --- .../compat/opensolaris/kern/opensolaris_atomic.c | 3 +- sys/cddl/compat/opensolaris/sys/atomic.h | 6 +- sys/conf/files.mips | 1 + sys/conf/files.powerpc | 1 + sys/kern/subr_atomic64.c | 140 +++++++++++++++++++++ sys/mips/include/atomic.h | 4 + sys/powerpc/include/atomic.h | 4 + sys/sys/_atomic64e.h | 80 ++++++++++++ 8 files changed, 236 insertions(+), 3 deletions(-) diff --git a/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c b/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c index 89cd1db46742..99a79b306580 100644 --- a/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c +++ b/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c @@ -33,7 +33,8 @@ __FBSDID("$FreeBSD$"); #include #if !defined(__LP64__) && !defined(__mips_n32) && \ - !defined(ARM_HAVE_ATOMIC64) && !defined(I386_HAVE_ATOMIC64) + !defined(ARM_HAVE_ATOMIC64) && !defined(I386_HAVE_ATOMIC64) && \ + !defined(HAS_EMULATED_ATOMIC64) #ifdef _KERNEL #include diff --git a/sys/cddl/compat/opensolaris/sys/atomic.h b/sys/cddl/compat/opensolaris/sys/atomic.h index 9e30f3da6669..b3a2f393afa4 100644 --- a/sys/cddl/compat/opensolaris/sys/atomic.h +++ b/sys/cddl/compat/opensolaris/sys/atomic.h @@ -42,7 +42,8 @@ #endif #if !defined(__LP64__) && !defined(__mips_n32) && \ - !defined(ARM_HAVE_ATOMIC64) && !defined(I386_HAVE_ATOMIC64) + !defined(ARM_HAVE_ATOMIC64) && !defined(I386_HAVE_ATOMIC64) && \ + !defined(HAS_EMULATED_ATOMIC64) extern void atomic_add_64(volatile uint64_t *target, int64_t delta); extern void atomic_dec_64(volatile uint64_t *target); extern uint64_t atomic_swap_64(volatile uint64_t *a, uint64_t value); @@ -109,7 +110,8 @@ atomic_cas_32(volatile uint32_t *target, uint32_t cmp, uint32_t newval) #endif #if defined(__LP64__) || defined(__mips_n32) || \ - defined(ARM_HAVE_ATOMIC64) || defined(I386_HAVE_ATOMIC64) + defined(ARM_HAVE_ATOMIC64) || defined(I386_HAVE_ATOMIC64) || \ + defined(HAS_EMULATED_ATOMIC64) static __inline void atomic_dec_64(volatile uint64_t *target) { diff --git a/sys/conf/files.mips b/sys/conf/files.mips index 1977fb9dcce2..4781c9adb4bb 100644 --- a/sys/conf/files.mips +++ b/sys/conf/files.mips @@ -50,6 +50,7 @@ mips/mips/vm_machdep.c standard # misc opt-in bits kern/kern_clocksource.c standard kern/link_elf_obj.c standard +kern/subr_atomic64.c optional mips | mipsel | mipshf | mipselhf kern/subr_busdma_bufalloc.c standard kern/subr_dummy_vdso_tc.c standard kern/subr_sfbuf.c optional mips | mipsel | mipsn32 diff --git a/sys/conf/files.powerpc b/sys/conf/files.powerpc index eb55f955ebaa..90f683f7a890 100644 --- a/sys/conf/files.powerpc +++ b/sys/conf/files.powerpc @@ -120,6 +120,7 @@ dev/uart/uart_cpu_powerpc.c optional uart dev/usb/controller/ehci_fsl.c optional ehci mpc85xx dev/vt/hw/ofwfb/ofwfb.c optional vt aim kern/kern_clocksource.c standard +kern/subr_atomic64.c optional powerpc | powerpcspe kern/subr_dummy_vdso_tc.c standard kern/syscalls.c optional ktr kern/subr_sfbuf.c standard diff --git a/sys/kern/subr_atomic64.c b/sys/kern/subr_atomic64.c new file mode 100644 index 000000000000..266b4ee20a10 --- /dev/null +++ b/sys/kern/subr_atomic64.c @@ -0,0 +1,140 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 Justin Hibbits + * + * 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. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +enum { + ATOMIC64_ADD, + ATOMIC64_CLEAR, + ATOMIC64_CMPSET, + ATOMIC64_FCMPSET, + ATOMIC64_FETCHADD, + ATOMIC64_LOAD, + ATOMIC64_SET, + ATOMIC64_SUBTRACT, + ATOMIC64_STORE, + ATOMIC64_SWAP +}; + +#ifdef _KERNEL +#define A64_POOL_SIZE MAXCPU +/* Estimated size of a cacheline */ +#define CACHE_ALIGN CACHE_LINE_SIZE + +#define GET_MUTEX(p) \ + (&a64_mtx_pool[(pmap_kextract((vm_offset_t)p) / CACHE_ALIGN) % (A64_POOL_SIZE)]) + +#define LOCK_A64() \ + struct mtx *_amtx = GET_MUTEX(p); \ + if (smp_started) mtx_lock(_amtx) + +#define UNLOCK_A64() if (smp_started) mtx_unlock(_amtx) + +#define ATOMIC64_EMU_UN(op, rt, block, ret) \ + rt \ + atomic_##op##_64(volatile u_int64_t *p) { \ + u_int64_t tmp __unused; \ + LOCK_A64(); \ + block; \ + UNLOCK_A64(); \ + ret; } struct hack + +#define ATOMIC64_EMU_BIN(op, rt, block, ret) \ + rt \ + atomic_##op##_64(volatile u_int64_t *p, u_int64_t v) { \ + u_int64_t tmp __unused; \ + LOCK_A64(); \ + block; \ + UNLOCK_A64(); \ + ret; } struct hack + +static struct mtx a64_mtx_pool[A64_POOL_SIZE]; + +ATOMIC64_EMU_BIN(add, void, (*p = *p + v), return); +ATOMIC64_EMU_BIN(clear, void, *p &= ~v, return); +ATOMIC64_EMU_BIN(fetchadd, u_int64_t, (*p = *p + v, v = *p - v), return (v)); +ATOMIC64_EMU_UN(load, u_int64_t, (tmp = *p), return (tmp)); +ATOMIC64_EMU_BIN(set, void, *p |= v, return); +ATOMIC64_EMU_BIN(subtract, void, (*p = *p - v), return); +ATOMIC64_EMU_BIN(store, void, *p = v, return); +ATOMIC64_EMU_BIN(swap, u_int64_t, tmp = *p; *p = v; v = tmp, return(v)); + +int atomic_cmpset_64(volatile u_int64_t *p, u_int64_t old, u_int64_t new) +{ + u_int64_t tmp; + + LOCK_A64(); + tmp = *p; + if (tmp == old) + *p = new; + UNLOCK_A64(); + + return (tmp == old); +} + +int atomic_fcmpset_64(volatile u_int64_t *p, u_int64_t *old, u_int64_t new) +{ + u_int64_t tmp, tmp_old; + + LOCK_A64(); + tmp = *p; + tmp_old = *old; + if (tmp == tmp_old) + *p = new; + else + *old = tmp; + UNLOCK_A64(); + + return (tmp == tmp_old); +} + +static void +atomic64_mtxinit(void *x __unused) +{ + int i; + + for (i = 0; i < A64_POOL_SIZE; i++) + mtx_init(&a64_mtx_pool[i], "atomic64 mutex", NULL, MTX_DEF); +} + +SYSINIT(atomic64_mtxinit, SI_SUB_LOCK, SI_ORDER_MIDDLE, atomic64_mtxinit, NULL); + +#endif /* _KERNEL */ diff --git a/sys/mips/include/atomic.h b/sys/mips/include/atomic.h index 709af5cdcf59..0ede70d82202 100644 --- a/sys/mips/include/atomic.h +++ b/sys/mips/include/atomic.h @@ -38,6 +38,10 @@ #include +#if !defined(__mips_n64) && !defined(__mips_n32) +#include +#endif + /* * Note: All the 64-bit atomic operations are only atomic when running * in 64-bit mode. It is assumed that code compiled for n32 and n64 diff --git a/sys/powerpc/include/atomic.h b/sys/powerpc/include/atomic.h index afffdd7bb4ed..e49a8473a747 100644 --- a/sys/powerpc/include/atomic.h +++ b/sys/powerpc/include/atomic.h @@ -40,6 +40,10 @@ #include +#ifndef __powerpc64__ +#include +#endif + /* * The __ATOMIC_REL/ACQ() macros provide memory barriers only in conjunction * with the atomic lXarx/stXcx. sequences below. They are not exposed outside diff --git a/sys/sys/_atomic64e.h b/sys/sys/_atomic64e.h new file mode 100644 index 000000000000..289e5117ee0b --- /dev/null +++ b/sys/sys/_atomic64e.h @@ -0,0 +1,80 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 Justin Hibbits + * + * 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. + * + * $FreeBSD$ + */ + + +#ifndef _SYS_ATOMIC64E_H_ +#define _SYS_ATOMIC64E_H_ + +#ifndef _MACHINE_ATOMIC_H_ +#error "This should not be included directly. Include " +#endif + +#ifdef _KERNEL +#define HAS_EMULATED_ATOMIC64 + +/* Emulated versions of 64-bit atomic operations. */ + +void atomic_add_64(volatile u_int64_t *, u_int64_t); +#define atomic_add_acq_64 atomic_add_64 +#define atomic_add_rel_64 atomic_add_64 + +int atomic_cmpset_64(volatile u_int64_t *, u_int64_t, u_int64_t); +#define atomic_cmpset_acq_64 atomic_cmpset_64 +#define atomic_cmpset_rel_64 atomic_cmpset_64 + +void atomic_clear_64(volatile u_int64_t *, u_int64_t); +#define atomic_clear_acq_64 atomic_clear_64 +#define atomic_clear_rel_64 atomic_clear_64 + +int atomic_fcmpset_64(volatile u_int64_t *, u_int64_t *, u_int64_t); +#define atomic_fcmpset_acq_64 atomic_fcmpset_64 +#define atomic_fcmpset_rel_64 atomic_fcmpset_64 + +u_int64_t atomic_fetchadd_64(volatile u_int64_t *, u_int64_t); + +u_int64_t atomic_load_64(volatile u_int64_t *); +#define atomic_load_acq_64 atomic_load_64 + +void atomic_readandclear_64(volatile u_int64_t *); + +void atomic_set_64(volatile u_int64_t *, u_int64_t); +#define atomic_set_acq_64 atomic_set_64 +#define atomic_set_rel_64 atomic_set_64 + +void atomic_subtract_64(volatile u_int64_t *, u_int64_t); +#define atomic_subtract_acq_64 atomic_subtract_64 +#define atomic_subtract_rel_64 atomic_subtract_64 + +void atomic_store_64(volatile u_int64_t *, u_int64_t); +#define atomic_store_rel_64 atomic_store_64 + +u_int64_t atomic_swap_64(volatile u_int64_t *, u_int64_t); + +#endif /* _KERNEL */ +#endif /* _SYS_ATOMIC64E_H_ */ From nobody Wed Oct 6 18:53:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B49D412DC844; Wed, 6 Oct 2021 18:53: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 4HPk9q2TNyz4c24; Wed, 6 Oct 2021 18:53: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 1D97025605; Wed, 6 Oct 2021 18:53: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 196IrI68074271; Wed, 6 Oct 2021 18:53:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196IrImx074270; Wed, 6 Oct 2021 18:53:18 GMT (envelope-from git) Date: Wed, 6 Oct 2021 18:53:18 GMT Message-Id: <202110061853.196IrImx074270@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: 7dbd5b49ca82 - stable/12 - emulated atomic64: disable interrupts as the lock mechanism on !SMP List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 7dbd5b49ca8261481968f6ea0ff84d9b1a58ca3d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=7dbd5b49ca8261481968f6ea0ff84d9b1a58ca3d commit 7dbd5b49ca8261481968f6ea0ff84d9b1a58ca3d Author: Kyle Evans AuthorDate: 2020-01-03 18:29:20 +0000 Commit: Kristof Provost CommitDate: 2021-10-06 18:29:33 +0000 emulated atomic64: disable interrupts as the lock mechanism on !SMP Reviewed by: jhibbits, bdragon Differential Revision: https://reviews.freebsd.org/D23015 (cherry picked from commit 3a22f09cbff13aed11206af6c839c4e1a5a08bff) --- sys/kern/subr_atomic64.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_atomic64.c b/sys/kern/subr_atomic64.c index 266b4ee20a10..5dffb161e8f2 100644 --- a/sys/kern/subr_atomic64.c +++ b/sys/kern/subr_atomic64.c @@ -55,9 +55,12 @@ enum { }; #ifdef _KERNEL +#ifdef SMP + #define A64_POOL_SIZE MAXCPU /* Estimated size of a cacheline */ #define CACHE_ALIGN CACHE_LINE_SIZE +static struct mtx a64_mtx_pool[A64_POOL_SIZE]; #define GET_MUTEX(p) \ (&a64_mtx_pool[(pmap_kextract((vm_offset_t)p) / CACHE_ALIGN) % (A64_POOL_SIZE)]) @@ -68,6 +71,13 @@ enum { #define UNLOCK_A64() if (smp_started) mtx_unlock(_amtx) +#else /* !SMP */ + +#define LOCK_A64() { register_t s = intr_disable() +#define UNLOCK_A64() intr_restore(s); } + +#endif /* SMP */ + #define ATOMIC64_EMU_UN(op, rt, block, ret) \ rt \ atomic_##op##_64(volatile u_int64_t *p) { \ @@ -86,8 +96,6 @@ enum { UNLOCK_A64(); \ ret; } struct hack -static struct mtx a64_mtx_pool[A64_POOL_SIZE]; - ATOMIC64_EMU_BIN(add, void, (*p = *p + v), return); ATOMIC64_EMU_BIN(clear, void, *p &= ~v, return); ATOMIC64_EMU_BIN(fetchadd, u_int64_t, (*p = *p + v, v = *p - v), return (v)); @@ -126,6 +134,7 @@ int atomic_fcmpset_64(volatile u_int64_t *p, u_int64_t *old, u_int64_t new) return (tmp == tmp_old); } +#ifdef SMP static void atomic64_mtxinit(void *x __unused) { @@ -136,5 +145,6 @@ atomic64_mtxinit(void *x __unused) } SYSINIT(atomic64_mtxinit, SI_SUB_LOCK, SI_ORDER_MIDDLE, atomic64_mtxinit, NULL); +#endif /* SMP */ #endif /* _KERNEL */ From nobody Wed Oct 6 19:40:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A693517E37AE; Wed, 6 Oct 2021 19:40: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 4HPlD942Czz4jdv; Wed, 6 Oct 2021 19:40: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 667C325966; Wed, 6 Oct 2021 19:40: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 196JeP0T037023; Wed, 6 Oct 2021 19:40:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196JePrF037022; Wed, 6 Oct 2021 19:40:25 GMT (envelope-from git) Date: Wed, 6 Oct 2021 19:40:25 GMT Message-Id: <202110061940.196JePrF037022@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: cbb9027cf10e - stable/12 - Two minor issues: (1) Don't define load/store 64 atomics for o32. They aren't atomic there. (2) Add comment about why we need 64 atomic define on n32 only. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: cbb9027cf10e2fa465e114e411e3132115508054 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=cbb9027cf10e2fa465e114e411e3132115508054 commit cbb9027cf10e2fa465e114e411e3132115508054 Author: Warner Losh AuthorDate: 2019-12-17 03:20:37 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 19:40:10 +0000 Two minor issues: (1) Don't define load/store 64 atomics for o32. They aren't atomic there. (2) Add comment about why we need 64 atomic define on n32 only. (cherry picked from commit fa9b4635f0874eedc3d908f2cd21746680c8c2ed) --- sys/mips/include/atomic.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/mips/include/atomic.h b/sys/mips/include/atomic.h index 0ede70d82202..3643375351f5 100644 --- a/sys/mips/include/atomic.h +++ b/sys/mips/include/atomic.h @@ -344,10 +344,16 @@ atomic_store_rel_##WIDTH(__volatile uint##WIDTH##_t *p, uint##WIDTH##_t v)\ } ATOMIC_STORE_LOAD(32) +#if defined(__mips_n64) || defined(__mips_n32) ATOMIC_STORE_LOAD(64) +#endif #undef ATOMIC_STORE_LOAD -#ifdef __mips_n32 +/* + * MIPS n32 is not a LP64 API, so atomic_load_64 isn't defined there. Define it + * here since n32 is an oddball !LP64 but that can do 64-bit atomics. + */ +#if defined(__mips_n32) #define atomic_load_64 atomic_load_acq_64 #endif From nobody Wed Oct 6 19:46:50 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9A3CA17E4BAA; Wed, 6 Oct 2021 19:46: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 4HPlMZ3sNyz4kkX; Wed, 6 Oct 2021 19:46: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 4CB5025FDE; Wed, 6 Oct 2021 19:46: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 196JkoKv041552; Wed, 6 Oct 2021 19:46:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196JkokB041551; Wed, 6 Oct 2021 19:46:50 GMT (envelope-from git) Date: Wed, 6 Oct 2021 19:46:50 GMT Message-Id: <202110061946.196JkokB041551@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 18b756a7e525 - stable/12 - atomic_fcmpset* return int, not the type of *. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 18b756a7e525e4bd6cd2aa8de86e4a48a583366a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=18b756a7e525e4bd6cd2aa8de86e4a48a583366a commit 18b756a7e525e4bd6cd2aa8de86e4a48a583366a Author: Warner Losh AuthorDate: 2018-12-14 19:14:51 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 19:45:59 +0000 atomic_fcmpset* return int, not the type of *. fcmpset returns true/false as a int, so make the return types and variables match the int to be consistent with other arch. (cherry picked from commit 2fb9d3808a3a0a8939502600cde69b04550d1e7d) --- sys/mips/include/atomic.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/mips/include/atomic.h b/sys/mips/include/atomic.h index 3643375351f5..0e014cd57ac4 100644 --- a/sys/mips/include/atomic.h +++ b/sys/mips/include/atomic.h @@ -406,10 +406,10 @@ atomic_cmpset_rel_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) return (atomic_cmpset_32(p, cmpval, newval)); } -static __inline uint32_t +static __inline int atomic_fcmpset_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) { - uint32_t ret; + int ret; __asm __volatile ( "1:\n\t" @@ -429,7 +429,7 @@ atomic_fcmpset_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) return ret; } -static __inline uint32_t +static __inline int atomic_fcmpset_acq_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) { int retval; @@ -439,7 +439,7 @@ atomic_fcmpset_acq_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) return (retval); } -static __inline uint32_t +static __inline int atomic_fcmpset_rel_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) { mips_sync(); @@ -516,10 +516,10 @@ atomic_cmpset_rel_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) return (atomic_cmpset_64(p, cmpval, newval)); } -static __inline uint32_t +static __inline int atomic_fcmpset_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) { - uint32_t ret; + int ret; __asm __volatile ( "1:\n\t" @@ -540,7 +540,7 @@ atomic_fcmpset_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) return ret; } -static __inline uint64_t +static __inline int atomic_fcmpset_acq_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) { int retval; @@ -550,7 +550,7 @@ atomic_fcmpset_acq_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) return (retval); } -static __inline uint64_t +static __inline int atomic_fcmpset_rel_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) { mips_sync(); From nobody Wed Oct 6 19:46:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C78ED17E4D97; Wed, 6 Oct 2021 19:46: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 4HPlMb4hn3z4l1Z; Wed, 6 Oct 2021 19:46: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 6813225E77; Wed, 6 Oct 2021 19:46: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 196JkpG4041576; Wed, 6 Oct 2021 19:46:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196Jkpp3041575; Wed, 6 Oct 2021 19:46:51 GMT (envelope-from git) Date: Wed, 6 Oct 2021 19:46:51 GMT Message-Id: <202110061946.196Jkpp3041575@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 141443a6dd4a - stable/12 - atomic_cmpset return value is also an int. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 141443a6dd4afc5139e5955efc9d27a61326646f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=141443a6dd4afc5139e5955efc9d27a61326646f commit 141443a6dd4afc5139e5955efc9d27a61326646f Author: Warner Losh AuthorDate: 2018-12-14 19:48:42 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 19:46:03 +0000 atomic_cmpset return value is also an int. (cherry picked from commit 3d060215a5013c72b968aa5163833fa31fc92913) --- sys/mips/include/atomic.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/mips/include/atomic.h b/sys/mips/include/atomic.h index 0e014cd57ac4..9fe1439b721f 100644 --- a/sys/mips/include/atomic.h +++ b/sys/mips/include/atomic.h @@ -362,10 +362,10 @@ ATOMIC_STORE_LOAD(64) * two values are equal, update the value of *p with newval. Returns * zero if the compare failed, nonzero otherwise. */ -static __inline uint32_t +static __inline int atomic_cmpset_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) { - uint32_t ret; + int ret; __asm __volatile ( "1:\tll %0, %4\n\t" /* load old value */ @@ -389,7 +389,7 @@ atomic_cmpset_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) * two values are equal, update the value of *p with newval. Returns * zero if the compare failed, nonzero otherwise. */ -static __inline uint32_t +static __inline int atomic_cmpset_acq_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) { int retval; @@ -399,7 +399,7 @@ atomic_cmpset_acq_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) return (retval); } -static __inline uint32_t +static __inline int atomic_cmpset_rel_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) { mips_sync(); @@ -471,10 +471,10 @@ atomic_fetchadd_32(__volatile uint32_t *p, uint32_t v) * two values are equal, update the value of *p with newval. Returns * zero if the compare failed, nonzero otherwise. */ -static __inline uint64_t +static __inline int atomic_cmpset_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) { - uint64_t ret; + int ret; __asm __volatile ( "1:\n\t" @@ -499,7 +499,7 @@ atomic_cmpset_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) * two values are equal, update the value of *p with newval. Returns * zero if the compare failed, nonzero otherwise. */ -static __inline uint64_t +static __inline int atomic_cmpset_acq_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) { int retval; @@ -509,7 +509,7 @@ atomic_cmpset_acq_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) return (retval); } -static __inline uint64_t +static __inline int atomic_cmpset_rel_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) { mips_sync(); From nobody Wed Oct 6 19:46:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 399E917E4CAF; Wed, 6 Oct 2021 19: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 4HPlMd0Q1Kz4ktC; Wed, 6 Oct 2021 19:46: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 8BDDE25ED1; Wed, 6 Oct 2021 19:46: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 196JkqSu041600; Wed, 6 Oct 2021 19:46:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196Jkq44041599; Wed, 6 Oct 2021 19:46:52 GMT (envelope-from git) Date: Wed, 6 Oct 2021 19:46:52 GMT Message-Id: <202110061946.196Jkq44041599@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 5bf3f2498ade - stable/12 - mips: fcmpset: do not spin on sc failure List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 5bf3f2498adea0087a3ac1e3eaffdfc412b9dfe3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=5bf3f2498adea0087a3ac1e3eaffdfc412b9dfe3 commit 5bf3f2498adea0087a3ac1e3eaffdfc412b9dfe3 Author: Kyle Evans AuthorDate: 2019-10-02 15:13:40 +0000 Commit: Kyle Evans CommitDate: 2021-10-06 19:46:06 +0000 mips: fcmpset: do not spin on sc failure For ll/sc architectures, atomic(9) allows failure modes where *old == val due to write failure and callers should compensate for this. Do not retry on failure, just leave 0 in ret and fail the operation if we couldn't sc it. This lets the caller determine if it should retry or not. (cherry picked from commit 22c2c971a614a72875787e0fd0001906451ee245) --- sys/mips/include/atomic.h | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/sys/mips/include/atomic.h b/sys/mips/include/atomic.h index 9fe1439b721f..506c686169e4 100644 --- a/sys/mips/include/atomic.h +++ b/sys/mips/include/atomic.h @@ -411,18 +411,25 @@ atomic_fcmpset_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) { int ret; + /* + * The following sequence (similar to that in atomic_fcmpset_64) will + * attempt to update the value of *p with newval if the comparison + * succeeds. Note that they'll exit regardless of whether the store + * actually succeeded, leaving *cmpval untouched. This is in line with + * the documentation of atomic_fcmpset_() in atomic(9) for ll/sc + * architectures. + */ __asm __volatile ( - "1:\n\t" "ll %0, %1\n\t" /* load old value */ - "bne %0, %4, 2f\n\t" /* compare */ + "bne %0, %4, 1f\n\t" /* compare */ "move %0, %3\n\t" /* value to store */ "sc %0, %1\n\t" /* attempt to store */ - "beqz %0, 1b\n\t" /* if it failed, spin */ - "j 3f\n\t" - "2:\n\t" + "j 2f\n\t" /* exit regardless of success */ + "nop\n\t" /* avoid delay slot accident */ + "1:\n\t" "sw %0, %2\n\t" /* save old value */ "li %0, 0\n\t" - "3:\n" + "2:\n" : "=&r" (ret), "+m" (*p), "=m" (*cmpval) : "r" (newval), "r" (*cmpval) : "memory"); @@ -522,17 +529,16 @@ atomic_fcmpset_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) int ret; __asm __volatile ( - "1:\n\t" "lld %0, %1\n\t" /* load old value */ - "bne %0, %4, 2f\n\t" /* compare */ + "bne %0, %4, 1f\n\t" /* compare */ "move %0, %3\n\t" /* value to store */ "scd %0, %1\n\t" /* attempt to store */ - "beqz %0, 1b\n\t" /* if it failed, spin */ - "j 3f\n\t" - "2:\n\t" + "j 2f\n\t" /* exit regardless of success */ + "nop\n\t" /* avoid delay slot accident */ + "1:\n\t" "sd %0, %2\n\t" /* save old value */ "li %0, 0\n\t" - "3:\n" + "2:\n" : "=&r" (ret), "+m" (*p), "=m" (*cmpval) : "r" (newval), "r" (*cmpval) : "memory"); From nobody Wed Oct 6 20:07:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 70AEA17E7930; Wed, 6 Oct 2021 20:07: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 4HPlqz2ngfz4nWs; Wed, 6 Oct 2021 20:07: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 4073C2647D; Wed, 6 Oct 2021 20:07: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 196K7xdl069210; Wed, 6 Oct 2021 20:07:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196K7xG6069209; Wed, 6 Oct 2021 20:07:59 GMT (envelope-from git) Date: Wed, 6 Oct 2021 20:07:59 GMT Message-Id: <202110062007.196K7xG6069209@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: 5d94aaacb518 - main - fusefs: quiet some cache-related warnings List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 5d94aaacb5180798b2f698e33937f068386004eb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=5d94aaacb5180798b2f698e33937f068386004eb commit 5d94aaacb5180798b2f698e33937f068386004eb Author: Alan Somers AuthorDate: 2021-10-03 16:59:04 +0000 Commit: Alan Somers CommitDate: 2021-10-06 20:07:33 +0000 fusefs: quiet some cache-related warnings If the FUSE server does something that would make our cache incoherent, we should print a warning to the user. However, we previously warned in some situations when we shouldn't, such as if the file's size changed on the server _after_ our own attribute cache had expired. This change suppresses the warning in cases like that. It also moves the warning logic to a single place within the code. PR: 256936 Reported by: Agata Tested by: Agata , jSML4ThWwBID69YC@protonmail.com MFC after: 2 weeks --- sys/fs/fuse/fuse_internal.c | 74 +++++++++++++++++++++++++++++++-------------- sys/fs/fuse/fuse_internal.h | 3 +- sys/fs/fuse/fuse_io.c | 4 +-- sys/fs/fuse/fuse_node.c | 19 ++++++++++-- sys/fs/fuse/fuse_node.h | 2 +- sys/fs/fuse/fuse_vfsops.c | 40 +----------------------- sys/fs/fuse/fuse_vnops.c | 41 ++----------------------- 7 files changed, 76 insertions(+), 107 deletions(-) diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c index c52f12d3a71a..ffa4a40095b2 100644 --- a/sys/fs/fuse/fuse_internal.c +++ b/sys/fs/fuse/fuse_internal.c @@ -255,7 +255,8 @@ fuse_internal_access(struct vnode *vp, */ void fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr, - uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap) + uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap, + bool from_server) { struct mount *mp; struct fuse_vnode_data *fvdat; @@ -271,9 +272,54 @@ fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr, fuse_validity_2_bintime(attr_valid, attr_valid_nsec, &fvdat->attr_cache_timeout); + if (vnode_isreg(vp) && + fvdat->cached_attrs.va_size != VNOVAL && + attr->size != fvdat->cached_attrs.va_size) + { + if ( data->cache_mode == FUSE_CACHE_WB && + fvdat->flag & FN_SIZECHANGE) + { + const char *msg; + + /* + * The server changed the file's size even though we're + * using writeback cacheing and and we have outstanding + * dirty writes! That's a server bug. + */ + 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); + } + if (fuse_vnode_attr_cache_valid(vp) && + data->cache_mode != FUSE_CACHE_UC) + { + /* + * The server changed the file's size even though we + * have it cached and our cache has not yet expired. + * That's a bug. + */ + 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."); + } + } + /* Fix our buffers if the filesize changed without us knowing */ if (vnode_isreg(vp) && attr->size != fvdat->cached_attrs.va_size) { - (void)fuse_vnode_setsize(vp, attr->size); + (void)fuse_vnode_setsize(vp, attr->size, from_server); fvdat->cached_attrs.va_size = attr->size; } @@ -806,7 +852,7 @@ fuse_internal_newentry_core(struct vnode *dvp, fuse_vnode_clear_attr_cache(dvp); fuse_internal_cache_attrs(*vpp, &feo->attr, feo->attr_valid, - feo->attr_valid_nsec, NULL); + feo->attr_valid_nsec, NULL, true); return err; } @@ -912,26 +958,8 @@ fuse_internal_do_getattr(struct vnode *vp, struct vattr *vap, fao->attr.mtime = old_mtime.tv_sec; fao->attr.mtimensec = old_mtime.tv_nsec; } - if (vnode_isreg(vp) && - fvdat->cached_attrs.va_size != VNOVAL && - fao->attr.size != fvdat->cached_attrs.va_size) { - /* - * The server changed the file's size even though we had it - * cached! That's a server bug. - */ - 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); - } fuse_internal_cache_attrs(vp, &fao->attr, fao->attr_valid, - fao->attr_valid_nsec, vap); + fao->attr_valid_nsec, vap, true); if (vtyp != vnode_vtype(vp)) { fuse_internal_vnode_disappear(vp); err = ENOENT; @@ -1231,7 +1259,7 @@ int fuse_internal_setattr(struct vnode *vp, struct vattr *vap, struct fuse_attr_out *fao = (struct fuse_attr_out*)fdi.answ; fuse_vnode_undirty_cached_timestamps(vp); fuse_internal_cache_attrs(vp, &fao->attr, fao->attr_valid, - fao->attr_valid_nsec, NULL); + fao->attr_valid_nsec, NULL, false); } out: diff --git a/sys/fs/fuse/fuse_internal.h b/sys/fs/fuse/fuse_internal.h index 20a10d7dfda0..e9fa3857227a 100644 --- a/sys/fs/fuse/fuse_internal.h +++ b/sys/fs/fuse/fuse_internal.h @@ -223,7 +223,8 @@ int fuse_internal_access(struct vnode *vp, accmode_t mode, /* attributes */ void fuse_internal_cache_attrs(struct vnode *vp, struct fuse_attr *attr, - uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap); + uint64_t attr_valid, uint32_t attr_valid_nsec, struct vattr *vap, + bool from_server); /* fsync */ diff --git a/sys/fs/fuse/fuse_io.c b/sys/fs/fuse/fuse_io.c index 47c7fb97e556..637c36424d3f 100644 --- a/sys/fs/fuse/fuse_io.c +++ b/sys/fs/fuse/fuse_io.c @@ -571,7 +571,7 @@ retry: as_written_offset = uio->uio_offset - diff; if (as_written_offset - diff > filesize) - fuse_vnode_setsize(vp, as_written_offset); + fuse_vnode_setsize(vp, as_written_offset, false); if (as_written_offset - diff >= filesize) fvdat->flag &= ~FN_SIZECHANGE; @@ -715,7 +715,7 @@ again: * Extend file _after_ locking buffer so we won't race * with other readers */ - err = fuse_vnode_setsize(vp, uio->uio_offset + n); + err = fuse_vnode_setsize(vp, uio->uio_offset + n, false); filesize = uio->uio_offset + n; fvdat->flag |= FN_SIZECHANGE; if (err) { diff --git a/sys/fs/fuse/fuse_node.c b/sys/fs/fuse/fuse_node.c index 6acd1df29361..c296a3b3c330 100644 --- a/sys/fs/fuse/fuse_node.c +++ b/sys/fs/fuse/fuse_node.c @@ -389,11 +389,14 @@ fuse_vnode_savesize(struct vnode *vp, struct ucred *cred, pid_t pid) } /* - * Adjust the vnode's size to a new value, such as that provided by - * FUSE_GETATTR. + * Adjust the vnode's size to a new value. + * + * If the new value came from the server, such as from a FUSE_GETATTR + * operation, set `from_server` true. But if it came from a local operation, + * such as write(2) or truncate(2), set `from_server` false. */ int -fuse_vnode_setsize(struct vnode *vp, off_t newsize) +fuse_vnode_setsize(struct vnode *vp, off_t newsize, bool from_server) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct vattr *attrs; @@ -434,6 +437,16 @@ fuse_vnode_setsize(struct vnode *vp, off_t newsize) MPASS(bp->b_flags & B_VMIO); vfs_bio_clrbuf(bp); bp->b_dirtyend = MIN(bp->b_dirtyend, newsize - lbn * iosize); + } else if (from_server && newsize > oldsize && oldsize != VNOVAL) { + /* + * The FUSE server changed the file size behind our back. We + * should invalidate the entire cache. + */ + daddr_t left_lbn, end_lbn; + + left_lbn = oldsize / iosize; + end_lbn = howmany(newsize, iosize); + v_inval_buf_range(vp, 0, end_lbn, iosize); } out: if (bp) diff --git a/sys/fs/fuse/fuse_node.h b/sys/fs/fuse/fuse_node.h index e5fb13d43bec..dcf5e4047778 100644 --- a/sys/fs/fuse/fuse_node.h +++ b/sys/fs/fuse/fuse_node.h @@ -201,7 +201,7 @@ void fuse_vnode_open(struct vnode *vp, int32_t fuse_open_flags, int fuse_vnode_savesize(struct vnode *vp, struct ucred *cred, pid_t pid); -int fuse_vnode_setsize(struct vnode *vp, off_t newsize); +int fuse_vnode_setsize(struct vnode *vp, off_t newsize, bool from_server); void fuse_vnode_undirty_cached_timestamps(struct vnode *vp); diff --git a/sys/fs/fuse/fuse_vfsops.c b/sys/fs/fuse/fuse_vfsops.c index b188996066d5..3d5e168bcde2 100644 --- a/sys/fs/fuse/fuse_vfsops.c +++ b/sys/fs/fuse/fuse_vfsops.c @@ -539,7 +539,6 @@ fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp) struct fuse_entry_out *feo; struct fuse_vnode_data *fvdat; const char dot[] = "."; - off_t filesize; enum vtype vtyp; int error; @@ -576,47 +575,10 @@ fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp) error = fuse_vnode_get(mp, feo, nodeid, NULL, vpp, NULL, vtyp); if (error) goto out; - filesize = feo->attr.size; - - /* - * In the case where we are looking up a FUSE node represented by an - * existing cached vnode, and the true size reported by FUSE_LOOKUP - * doesn't match the vnode's cached size, then any cached writes beyond - * the file's current size are lost. - * - * We can get here: - * * following attribute cache expiration, or - * * due a bug in the daemon, or - */ fvdat = VTOFUD(*vpp); - if (vnode_isreg(*vpp) && - filesize != fvdat->cached_attrs.va_size && - fvdat->flag & FN_SIZECHANGE) { - 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; - } fuse_internal_cache_attrs(*vpp, &feo->attr, feo->attr_valid, - feo->attr_valid_nsec, NULL); + feo->attr_valid_nsec, NULL, true); fuse_validity_2_bintime(feo->entry_valid, feo->entry_valid_nsec, &fvdat->entry_cache_timeout); out: diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index 4c8c8c1d4461..dd8ff0fcc45a 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -895,7 +895,7 @@ fuse_vnop_create(struct vop_create_args *ap) } ASSERT_VOP_ELOCKED(*vpp, "fuse_vnop_create"); fuse_internal_cache_attrs(*vpp, &feo->attr, feo->attr_valid, - feo->attr_valid_nsec, NULL); + feo->attr_valid_nsec, NULL, true); fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td, cred, foo); fuse_vnode_open(*vpp, foo->open_flags, td); @@ -1151,7 +1151,7 @@ fuse_vnop_link(struct vop_link_args *ap) */ fuse_vnode_clear_attr_cache(tdvp); fuse_internal_cache_attrs(vp, &feo->attr, feo->attr_valid, - feo->attr_valid_nsec, NULL); + feo->attr_valid_nsec, NULL, true); } out: fdisp_destroy(&fdi); @@ -1360,52 +1360,17 @@ fuse_vnop_lookup(struct vop_lookup_args *ap) *vpp = dvp; } else { struct fuse_vnode_data *fvdat; - struct vattr *vap; err = fuse_vnode_get(vnode_mount(dvp), feo, nid, dvp, &vp, cnp, vtyp); if (err) goto out; *vpp = vp; - - /* - * In the case where we are looking up a FUSE node - * represented by an existing cached vnode, and the - * true size reported by FUSE_LOOKUP doesn't match - * the vnode's cached size, then any cached writes - * beyond the file's current size are lost. - * - * We can get here: - * * following attribute cache expiration, or - * * due a bug in the daemon, or - */ fvdat = VTOFUD(vp); - if (vnode_isreg(vp) && - ((filesize != fvdat->cached_attrs.va_size && - fvdat->flag & FN_SIZECHANGE) || - ((vap = VTOVA(vp)) && - filesize != vap->va_size))) - { - 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! - */ - 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); - } MPASS(feo != NULL); fuse_internal_cache_attrs(*vpp, &feo->attr, - feo->attr_valid, feo->attr_valid_nsec, NULL); + feo->attr_valid, feo->attr_valid_nsec, NULL, true); fuse_validity_2_bintime(feo->entry_valid, feo->entry_valid_nsec, &fvdat->entry_cache_timeout); From nobody Wed Oct 6 20:08:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B778D17E7AA7; Wed, 6 Oct 2021 20:08: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 4HPlr045SKz4nLQ; Wed, 6 Oct 2021 20:08: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 62A27260F7; Wed, 6 Oct 2021 20:08: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 196K80wG069240; Wed, 6 Oct 2021 20:08:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196K80Aq069239; Wed, 6 Oct 2021 20:08:00 GMT (envelope-from git) Date: Wed, 6 Oct 2021 20:08:00 GMT Message-Id: <202110062008.196K80Aq069239@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: 7430017b9978 - main - fusefs: fix a recurse-on-non-recursive lockmgr panic List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 7430017b9978cae054ed99e5160f739e5ca021d5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=7430017b9978cae054ed99e5160f739e5ca021d5 commit 7430017b9978cae054ed99e5160f739e5ca021d5 Author: Alan Somers AuthorDate: 2021-10-02 18:17:36 +0000 Commit: Alan Somers CommitDate: 2021-10-06 20:07:33 +0000 fusefs: fix a recurse-on-non-recursive lockmgr panic fuse_vnop_bmap needs to know the file's size in order to calculate the optimum amount of readahead. If the file's size is unknown, it must ask the FUSE server. But if the file's data was previously cached and the server reports that its size has shrunk, fusefs must invalidate the cached data. That's not possible during VOP_BMAP because the buffer object is already locked. Fix the panic by not querying the FUSE server for the file's size during VOP_BMAP if we don't need it. That's also a a slight performance optimization. PR: 256937 Reported by: Agata Tested by: Agata MFC after: 2 weeks --- sys/fs/fuse/fuse_vnops.c | 20 ++++++++--- tests/sys/fs/fusefs/bmap.cc | 86 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 4 deletions(-) diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index dd8ff0fcc45a..9aafbad990c5 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -516,8 +516,9 @@ fuse_vnop_bmap(struct vop_bmap_args *ap) struct fuse_bmap_in *fbi; struct fuse_bmap_out *fbo; struct fuse_data *data; + struct fuse_vnode_data *fvdat = VTOFUD(vp); uint64_t biosize; - off_t filesize; + off_t fsize; daddr_t lbn = ap->a_bn; daddr_t *pbn = ap->a_bnp; int *runp = ap->a_runp; @@ -550,10 +551,21 @@ fuse_vnop_bmap(struct vop_bmap_args *ap) */ if (runb != NULL) *runb = MIN(lbn, maxrun); - if (runp != NULL) { - error = fuse_vnode_size(vp, &filesize, td->td_ucred, td); + if (runp != NULL && maxrun == 0) + *runp = 0; + else if (runp != NULL) { + /* + * If the file's size is cached, use that value to calculate + * runp, even if the cache is expired. runp is only advisory, + * and the risk of getting it wrong is not worth the cost of + * another upcall. + */ + if (fvdat->cached_attrs.va_size != VNOVAL) + fsize = fvdat->cached_attrs.va_size; + else + error = fuse_vnode_size(vp, &fsize, td->td_ucred, td); if (error == 0) - *runp = MIN(MAX(0, filesize / (off_t)biosize - lbn - 1), + *runp = MIN(MAX(0, fsize / (off_t)biosize - lbn - 1), maxrun); else *runp = 0; diff --git a/tests/sys/fs/fusefs/bmap.cc b/tests/sys/fs/fusefs/bmap.cc index 3f392a4447f2..c635f4d7e46f 100644 --- a/tests/sys/fs/fusefs/bmap.cc +++ b/tests/sys/fs/fusefs/bmap.cc @@ -75,6 +75,8 @@ void expect_lookup(const char *relpath, uint64_t ino, off_t size) } }; +class BmapEof: public Bmap, public WithParamInterface {}; + /* * Test FUSE_BMAP * XXX The FUSE protocol does not include the runp and runb variables, so those @@ -165,3 +167,87 @@ TEST_F(Bmap, default_) leak(fd); } + +/* + * VOP_BMAP should not query the server for the file's size, even if its cached + * attributes have expired. + * Regression test for https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=256937 + */ +TEST_P(BmapEof, eof) +{ + /* + * Outline: + * 1) lookup the file, setting attr_valid=0 + * 2) Read more than one block, causing the kernel to issue VOP_BMAP to + * plan readahead. + * 3) Nothing should panic + * 4) Repeat the tests, truncating the file after different numbers of + * GETATTR operations. + */ + Sequence seq; + const off_t filesize = 2 * m_maxbcachebuf; + const ino_t ino = 42; + mode_t mode = S_IFREG | 0644; + void *contents, *buf; + int fd; + int ngetattrs; + + ngetattrs = GetParam(); + contents = calloc(1, filesize); + FuseTest::expect_lookup(RELPATH, ino, mode, filesize, 1, 0); + expect_open(ino, 0, 1); + // Depending on ngetattrs, FUSE_READ could be called with either + // filesize or filesize / 2 . + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_READ && + in.header.nodeid == ino && + in.body.read.offset == 0 && + ( in.body.read.size == filesize || + in.body.read.size == filesize / 2)); + }, Eq(true)), + _) + ).WillOnce(Invoke(ReturnImmediate([=](auto in, auto& out) { + size_t osize = in.body.read.size; + out.header.len = sizeof(struct fuse_out_header) + osize; + bzero(out.body.bytes, osize); + }))); + EXPECT_CALL(*m_mock, process( + ResultOf([](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).Times(Between(ngetattrs - 1, ngetattrs)) + .InSequence(seq) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr_valid = 0; + out.body.attr.attr.ino = ino; + out.body.attr.attr.mode = S_IFREG | 0644; + out.body.attr.attr.size = filesize; + }))); + EXPECT_CALL(*m_mock, process( + ResultOf([](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).InSequence(seq) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr_valid = 0; + out.body.attr.attr.ino = ino; + out.body.attr.attr.mode = S_IFREG | 0644; + out.body.attr.attr.size = filesize / 2; + }))); + + buf = calloc(1, filesize); + fd = open(FULLPATH, O_RDWR); + ASSERT_LE(0, fd) << strerror(errno); + read(fd, buf, filesize); +} + +INSTANTIATE_TEST_CASE_P(BE, BmapEof, + Values(1, 2, 3) +); From nobody Wed Oct 6 20:08:01 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6856E17E78DF; Wed, 6 Oct 2021 20:08: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 4HPlr16jTlz4nNp; Wed, 6 Oct 2021 20:08: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 8FCDB26273; Wed, 6 Oct 2021 20:08: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 196K81lh069265; Wed, 6 Oct 2021 20:08:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196K81B4069264; Wed, 6 Oct 2021 20:08:01 GMT (envelope-from git) Date: Wed, 6 Oct 2021 20:08:01 GMT Message-Id: <202110062008.196K81B4069264@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: 032a5bd55b3a - main - fusefs: Fix a bug during VOP_STRATEGY when the server changes file size List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 032a5bd55b3a003d3560435422a95f27f91685fe Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=032a5bd55b3a003d3560435422a95f27f91685fe commit 032a5bd55b3a003d3560435422a95f27f91685fe Author: Alan Somers AuthorDate: 2021-10-03 17:51:14 +0000 Commit: Alan Somers CommitDate: 2021-10-06 20:07:33 +0000 fusefs: Fix a bug during VOP_STRATEGY when the server changes file size If the FUSE server tells the kernel that a file's size has changed, then the kernel must invalidate any portion of that file in cache. But the kernel can't do that during VOP_STRATEGY, because the file's buffers are already locked. Instead, proceed with the write. PR: 256937 Reported by: Agata Tested by: Agata MFC after: 2 weeks Reviewed by: pfg Differential Revision: https://reviews.freebsd.org/D32332 --- sys/fs/fuse/fuse_io.c | 19 +++++++---- tests/sys/fs/fusefs/write.cc | 81 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 7 deletions(-) diff --git a/sys/fs/fuse/fuse_io.c b/sys/fs/fuse/fuse_io.c index 637c36424d3f..f818fbd52869 100644 --- a/sys/fs/fuse/fuse_io.c +++ b/sys/fs/fuse/fuse_io.c @@ -1007,13 +1007,18 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) /* * Setup for actual write */ - error = fuse_vnode_size(vp, &filesize, cred, curthread); - if (error) { - bp->b_ioflags |= BIO_ERROR; - bp->b_error = error; - bufdone(bp); - return (error); - } + /* + * If the file's size is cached, use that value, even if the + * cache is expired. At this point we're already committed to + * writing something. If the FUSE server has changed the + * file's size behind our back, it's too late for us to do + * anything about it. In particular, we can't invalidate any + * part of the file's buffers because VOP_STRATEGY is called + * with them already locked. + */ + filesize = fvdat->cached_attrs.va_size; + /* filesize must've been cached by fuse_vnop_open. */ + KASSERT(filesize != VNOVAL, ("filesize should've been cached")); if ((off_t)bp->b_lblkno * biosize + bp->b_dirtyend > filesize) bp->b_dirtyend = filesize - diff --git a/tests/sys/fs/fusefs/write.cc b/tests/sys/fs/fusefs/write.cc index fadf4648d31c..db5bb3fe4441 100644 --- a/tests/sys/fs/fusefs/write.cc +++ b/tests/sys/fs/fusefs/write.cc @@ -208,6 +208,9 @@ virtual void SetUp() { } }; +class WriteEofDuringVnopStrategy: public Write, public WithParamInterface +{}; + void sigxfsz_handler(int __unused sig) { Write::s_sigxfsz = 1; } @@ -526,6 +529,84 @@ TEST_F(Write, eof_during_rmw) leak(fd); } +/* + * VOP_STRATEGY should not query the server for the file's size, even if its + * cached attributes have expired. + * Regression test for https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=256937 + */ +TEST_P(WriteEofDuringVnopStrategy, eof_during_vop_strategy) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + Sequence seq; + const off_t filesize = 2 * m_maxbcachebuf; + void *contents; + uint64_t ino = 42; + uint64_t attr_valid = 0; + uint64_t attr_valid_nsec = 0; + mode_t mode = S_IFREG | 0644; + int fd; + int ngetattrs; + + ngetattrs = GetParam(); + contents = calloc(1, filesize); + + EXPECT_LOOKUP(FUSE_ROOT_ID, RELPATH) + .WillRepeatedly(Invoke( + ReturnImmediate([=](auto in __unused, auto& out) { + SET_OUT_HEADER_LEN(out, entry); + out.body.entry.attr.mode = mode; + out.body.entry.nodeid = ino; + out.body.entry.attr.nlink = 1; + out.body.entry.attr.size = filesize; + out.body.entry.attr_valid = attr_valid; + out.body.entry.attr_valid_nsec = attr_valid_nsec; + }))); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).Times(Between(ngetattrs - 1, ngetattrs)) + .InSequence(seq) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.ino = ino; + out.body.attr.attr.mode = mode; + out.body.attr.attr_valid = attr_valid; + out.body.attr.attr_valid_nsec = attr_valid_nsec; + out.body.attr.attr.size = filesize; + }))); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).InSequence(seq) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.ino = ino; + out.body.attr.attr.mode = mode; + out.body.attr.attr_valid = attr_valid; + out.body.attr.attr_valid_nsec = attr_valid_nsec; + out.body.attr.attr.size = filesize / 2; + }))); + expect_write(ino, 0, filesize / 2, filesize / 2, contents); + + fd = open(FULLPATH, O_RDWR); + ASSERT_LE(0, fd) << strerror(errno); + ASSERT_EQ(filesize / 2, write(fd, contents, filesize / 2)) + << strerror(errno); + +} + +INSTANTIATE_TEST_CASE_P(W, WriteEofDuringVnopStrategy, + Values(1, 2, 3) +); + /* * If the kernel cannot be sure which uid, gid, or pid was responsible for a * write, then it must set the FUSE_WRITE_CACHE bit From nobody Wed Oct 6 20:09:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6D83112B9B86; Wed, 6 Oct 2021 20:09: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 4HPltB0sCrz4qCg; Wed, 6 Oct 2021 20:09: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 ADE42264C4; Wed, 6 Oct 2021 20:09: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 196K9rtP069528; Wed, 6 Oct 2021 20:09:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196K9rJY069527; Wed, 6 Oct 2021 20:09:53 GMT (envelope-from git) Date: Wed, 6 Oct 2021 20:09:53 GMT Message-Id: <202110062009.196K9rJY069527@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: 880b670c6fdb - main - malloc: Unmark KASAN redzones if the full allocation size was requested List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 880b670c6fdbd1268887869375771e0a74d2c8ac Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=880b670c6fdbd1268887869375771e0a74d2c8ac commit 880b670c6fdbd1268887869375771e0a74d2c8ac Author: Mark Johnston AuthorDate: 2021-10-06 20:03:30 +0000 Commit: Mark Johnston CommitDate: 2021-10-06 20:09:41 +0000 malloc: Unmark KASAN redzones if the full allocation size was requested Consumers that want the full allocation size will typically access the full buffer, so mark the entire allocation as valid to avoid useless KASAN reports. Sponsored by: The FreeBSD Foundation --- sys/kern/kern_malloc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c index b1c5909db2a4..4ecdcdacce01 100644 --- a/sys/kern/kern_malloc.c +++ b/sys/kern/kern_malloc.c @@ -1112,6 +1112,13 @@ malloc_usable_size(const void *addr) else size = malloc_large_size(slab); #endif + + /* + * Unmark the redzone to avoid reports from consumers who are + * (presumably) about to use the full allocation size. + */ + kasan_mark(addr, size, size, 0); + return (size); } From nobody Wed Oct 6 20:29:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B4FF612BC61A; Wed, 6 Oct 2021 20:29: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 4HPmJH4mMnz4smZ; Wed, 6 Oct 2021 20:29: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 78BAA26829; Wed, 6 Oct 2021 20:29: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 196KT3p1095990; Wed, 6 Oct 2021 20:29:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196KT3qj095989; Wed, 6 Oct 2021 20:29:03 GMT (envelope-from git) Date: Wed, 6 Oct 2021 20:29:03 GMT Message-Id: <202110062029.196KT3qj095989@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: f44a448709d3 - main - fusefs: fix intermittency in the dev_fuse_poll test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f44a448709d3b77508fd59ee28201ae1666387c2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=f44a448709d3b77508fd59ee28201ae1666387c2 commit f44a448709d3b77508fd59ee28201ae1666387c2 Author: Alan Somers AuthorDate: 2021-09-25 16:16:20 +0000 Commit: Alan Somers CommitDate: 2021-10-06 20:28:48 +0000 fusefs: fix intermittency in the dev_fuse_poll test The DevFusePoll::access/select test would occasionally segfault. The cause was a file descriptor that was shared between two threads. The first thread would kill the second and close the file descriptor. But it was possible that the second would read the file descriptor before it shut down. That did not cause problems for kqueue, poll, or blocking operation, but it triggered segfaults in select's macros. MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D32142 --- tests/sys/fs/fusefs/mockfs.cc | 10 +++++++--- tests/sys/fs/fusefs/mockfs.hh | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc index 4d0724b9c227..99f7ccc61273 100644 --- a/tests/sys/fs/fusefs/mockfs.cc +++ b/tests/sys/fs/fusefs/mockfs.cc @@ -870,6 +870,7 @@ void MockFS::read_request(mockfs_buf_in &in, ssize_t &res) { struct timeval timeout_tv; const int timeout_ms = 999; int timeout_int, nfds; + int fuse_fd; switch (m_pm) { case BLOCKING: @@ -906,19 +907,22 @@ void MockFS::read_request(mockfs_buf_in &in, ssize_t &res) { ASSERT_TRUE(fds[0].revents & POLLIN); break; case SELECT: + fuse_fd = m_fuse_fd; + if (fuse_fd < 0) + break; timeout_tv.tv_sec = 0; timeout_tv.tv_usec = timeout_ms * 1'000; - nfds = m_fuse_fd + 1; + nfds = fuse_fd + 1; while (nready == 0) { FD_ZERO(&readfds); - FD_SET(m_fuse_fd, &readfds); + FD_SET(fuse_fd, &readfds); nready = select(nfds, &readfds, NULL, NULL, &timeout_tv); if (m_quit) return; } ASSERT_LE(0, nready) << strerror(errno); - ASSERT_TRUE(FD_ISSET(m_fuse_fd, &readfds)); + ASSERT_TRUE(FD_ISSET(fuse_fd, &readfds)); break; default: FAIL() << "not yet implemented"; diff --git a/tests/sys/fs/fusefs/mockfs.hh b/tests/sys/fs/fusefs/mockfs.hh index 24ca017dcdb1..600a4b4292c0 100644 --- a/tests/sys/fs/fusefs/mockfs.hh +++ b/tests/sys/fs/fusefs/mockfs.hh @@ -284,7 +284,7 @@ class MockFS { pthread_t m_daemon_id; /* file descriptor of /dev/fuse control device */ - int m_fuse_fd; + volatile int m_fuse_fd; /* The minor version of the kernel API that this mock daemon targets */ uint32_t m_kernel_minor_version; From nobody Wed Oct 6 20:37:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5643B12BD834 for ; Wed, 6 Oct 2021 20:38:05 +0000 (UTC) (envelope-from kevin.bowling@kev009.com) Received: from mail-yb1-xb30.google.com (mail-yb1-xb30.google.com [IPv6:2607:f8b0:4864:20::b30]) (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 4HPmVh4xS9z4tc9 for ; Wed, 6 Oct 2021 20:38:04 +0000 (UTC) (envelope-from kevin.bowling@kev009.com) Received: by mail-yb1-xb30.google.com with SMTP id h2so8240029ybi.13 for ; Wed, 06 Oct 2021 13:38:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kev009.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=UTdRfNZvSy1T6YF7uD0/Q6OrIODwv2Y4Yq+LwDVxbDM=; b=Nze6d1jtdoSVtzh6iOhrpAWWv9o2WvzY6/3vRnPCPoZBduoL9Gmc5SADL5rjXIwePR fsn4wqdIV3BLBFesfykRFZVko3hybIBVkjt15AKTH9C2fjCnh/NAnd2w5m9rxbFrEyQi xrkx1uqoTiTrcbFpulzZL3ULwUGkZ+Ciun8rY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UTdRfNZvSy1T6YF7uD0/Q6OrIODwv2Y4Yq+LwDVxbDM=; b=eagS3jdcLcB7fNjJ/N7Vf6zcK1xYWXplSqudR/pcuXJD7dW6zLzUJ5b47BWvHU8R5d BvBnyBn4ug1EtgDlQvIk5wTf9dVbS/BvRQF3dptZAMSd/T7HoTJ8EEQxQa3AYOmz1mB6 7cLwpt3mYQJi90XHlQdVPeQf3QzGq8781cZfM0mCcaw0Cy2ysx7dMtAcrMAt4f5o6zZk WUDInHfO+3M05l5T1tSXVCWveM+RZxAI5d7vxd05+CYhZZC8K1k+FcSh2jXx8JFlhy2V ZjVIMATG8DIzTbnfU5yXba3XvFQtS2iqRZin4YahUz5ho+qXza9LCubCCHdAU2oMlEZh fQlw== X-Gm-Message-State: AOAM533tUNbYrHMi2zVftpp8hzpDlrLNvteFRDW0GJkbEoSrXH09XAtb 4zQfIS3QucmacHqz+QjC0DQFqJWCxPjVJIxpQNWS2g== X-Google-Smtp-Source: ABdhPJyks6RfTTtFhJ4XLkHAseCY+slb/NYC8CpjPjXNP6daTAFQZtJ/xyCU0tUWoSnzW9hf37BGBe6uenHLBX10NbY= X-Received: by 2002:a25:8690:: with SMTP id z16mr225120ybk.493.1633552683993; Wed, 06 Oct 2021 13:38:03 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> <20211004101726.wraje5ol5vwbhjcv@pleb> In-Reply-To: <20211004101726.wraje5ol5vwbhjcv@pleb> From: Kevin Bowling Date: Wed, 6 Oct 2021 13:37:51 -0700 Message-ID: Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Christos Margiolis Cc: Mateusz Piotrowski <0mp@freebsd.org>, src-committers , "" , "dev-commits-src-main@FreeBSD.org" , Hans Petter Selasky Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HPmVh4xS9z4tc9 X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=none ("invalid DKIM record") header.d=kev009.com header.s=google header.b=Nze6d1jt; dmarc=none; spf=pass (mx1.freebsd.org: domain of kevin.bowling@kev009.com designates 2607:f8b0:4864:20::b30 as permitted sender) smtp.mailfrom=kevin.bowling@kev009.com X-Spamd-Result: default: False [-3.30 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-all@freebsd.org]; DMARC_NA(0.00)[kev009.com]; RCPT_COUNT_FIVE(0.00)[6]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[kev009.com:~]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::b30:from]; R_DKIM_PERMFAIL(0.00)[kev009.com:s=google]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-ThisMailContainsUnwantedMimeParts: N On Mon, Oct 4, 2021 at 3:17 AM Christos Margiolis wrote: > > On Mon, Oct 04, 2021 at 10:48:03AM +0200, Mateusz Piotrowski wrote: > > Hmm, I agree that mute and volume controls in the new CLI interface are very > > consistent. However, in case of the old CLI interface, the mute > > functionality could also be added without a problem (at least by looking at > > the manual pages, the "mute" command could look like this: "mixer mute > > vol"). My point is that I feel that the CLI interface should be > > backwards-compatible in this case. > > I think the new interface is more readable and extensible than the old > one, and, as you mentioned, mixer(8) did need an upgrade, so it might be > better to have it changed from now on and keep the old version as a port, > than to keep working on an -- in my opinion -- obsolete interface and code. > > > > Would it help to make a port, like "oldmixer", under "audio" ? > > > > That's a good idea. I've committed the "old" mixer to the ports tree: https://cgit.freebsd.org/ports/commit/?id=e9a0efe4509b8dbdef0b4e4b5b94abf0aebd78a9. > > Yeap, that's a good idea indeed. I still get a bunch of spam from rc.d on boot and it doesn't seem to save my mixer settings on shutdown, is there some settings file I should blow away or is there a better way to handle upgrades? > -- > Christos > _______________________________________________ > 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@freebsd.org" From nobody Wed Oct 6 20:43:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6E73C12BE716; Wed, 6 Oct 2021 20:43:27 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [88.99.82.50]) (using TLSv1.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 4HPmcv1yq8z4vTk; Wed, 6 Oct 2021 20:43:27 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2020.home.selasky.org (unknown [178.17.145.105]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 682AF260182; Wed, 6 Oct 2021 22:43:25 +0200 (CEST) Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Kevin Bowling , Christos Margiolis Cc: Mateusz Piotrowski <0mp@freebsd.org>, src-committers , dev-commits-src-all@freebsd.org, "dev-commits-src-main@FreeBSD.org" References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> <20211004101726.wraje5ol5vwbhjcv@pleb> From: Hans Petter Selasky Message-ID: Date: Wed, 6 Oct 2021 22:43:13 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4HPmcv1yq8z4vTk X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N On 10/6/21 10:37 PM, Kevin Bowling wrote: > I still get a bunch of spam from rc.d on boot and it doesn't seem to > save my mixer settings on shutdown, is there some settings file I > should blow away or is there a better way to handle upgrades? Hi Kevin, Did you install the new /etc/rc.d/mixer script? Or do you see this diff: > diff -u /usr/src/libexec/rc/rc.d/mixer /etc/rc.d/mixer > --- /usr/src/libexec/rc/rc.d/mixer 2021-09-22 22:09:36.193543000 +0200 > +++ /etc/rc.d/mixer 2019-12-26 22:43:45.276389000 +0100 > @@ -58,7 +58,7 @@ > > dev="/dev/${1}" > if [ -r ${dev} ]; then > - /usr/sbin/mixer -f ${dev} -o > /var/db/${1}-state 2>/dev/null > + /usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null > fi > } --HPS From nobody Wed Oct 6 20:52:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8C5D612BF98E; Wed, 6 Oct 2021 20:52: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 4HPmqn37S3z3CHb; Wed, 6 Oct 2021 20:52: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 4C5EB26E3C; Wed, 6 Oct 2021 20:52: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 196KqrHs034597; Wed, 6 Oct 2021 20:52:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196KqroQ034596; Wed, 6 Oct 2021 20:52:53 GMT (envelope-from git) Date: Wed, 6 Oct 2021 20:52:53 GMT Message-Id: <202110062052.196KqroQ034596@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Piotrowski <0mp@FreeBSD.org> Subject: git: e7f8f3b95e1f - main - login.conf.5: Mark passwordtime as implemented List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: 0mp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e7f8f3b95e1ff76765f1d2f4412b95f6ff5abe25 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by 0mp (doc, ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=e7f8f3b95e1ff76765f1d2f4412b95f6ff5abe25 commit e7f8f3b95e1ff76765f1d2f4412b95f6ff5abe25 Author: Felix Johnson AuthorDate: 2021-10-06 20:47:02 +0000 Commit: Mateusz Piotrowski <0mp@FreeBSD.org> CommitDate: 2021-10-06 20:51:22 +0000 login.conf.5: Mark passwordtime as implemented login.conf.5 listed passwordtime in RESERVED CAPABILITIES, which is a section for capabilities not implemented in the base system. However, passwordtime has been implemented in the base for several years now. PR: 246099 Reported by: avg Reviewed by: 0mp MFC after: 3 days --- lib/libutil/login.conf.5 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/libutil/login.conf.5 b/lib/libutil/login.conf.5 index aafec9050b5c..7276863f53a9 100644 --- a/lib/libutil/login.conf.5 +++ b/lib/libutil/login.conf.5 @@ -19,7 +19,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 10, 2020 +.Dd October 6, 2021 .Dt LOGIN.CONF 5 .Os .Sh NAME @@ -287,6 +287,9 @@ NIS clients using a NIS server should probably use "des". .It "passwd_prompt string The password prompt presented by" .Xr login 1 +.It "passwordtime time Used by" +.Xr passwd 1 +to set next password expiry date. .It "times.allow list List of time periods during which" logins are allowed. .It "times.deny list List of time periods during which logins are" @@ -427,9 +430,6 @@ password may be. .Xr passwd 1 will warn the user if an all lower case password is entered. .It "monthtime time Maximum login time per month." -.It "passwordtime time Used by" -.Xr passwd 1 -to set next password expiry date. .It "refreshtime time New time allowed on account refresh." .It "refreshperiod str How often account time is refreshed." .It "sessiontime time Maximum login time per session." From nobody Wed Oct 6 21:06:24 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 049AD12D1376; Wed, 6 Oct 2021 21:06: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 4HPn7N6T4Jz3DfY; Wed, 6 Oct 2021 21:06: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 BDFD426F5D; Wed, 6 Oct 2021 21:06: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 196L6Op0049326; Wed, 6 Oct 2021 21:06:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196L6OTf049325; Wed, 6 Oct 2021 21:06:24 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:06:24 GMT Message-Id: <202110062106.196L6OTf049325@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 28ccd780a96f - main - e1000: Function prototype cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 28ccd780a96fe49364072955636829cff1589cfb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kbowling (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=28ccd780a96fe49364072955636829cff1589cfb commit 28ccd780a96fe49364072955636829cff1589cfb Author: Kevin Bowling AuthorDate: 2021-10-06 21:03:38 +0000 Commit: Kevin Bowling CommitDate: 2021-10-06 21:03:38 +0000 e1000: Function prototype cleanup Drop arguments of function prototypes since the file is mixed between listing arg names and not. No functional changes Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D32329 --- sys/dev/e1000/if_em.c | 98 +++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 34d7b8f5f87e..3153a44000c5 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -248,55 +248,55 @@ static pci_vendor_info_t igb_vendor_info_array[] = /********************************************************************* * Function prototypes *********************************************************************/ -static void *em_register(device_t dev); -static void *igb_register(device_t dev); -static int em_if_attach_pre(if_ctx_t ctx); -static int em_if_attach_post(if_ctx_t ctx); -static int em_if_detach(if_ctx_t ctx); -static int em_if_shutdown(if_ctx_t ctx); -static int em_if_suspend(if_ctx_t ctx); -static int em_if_resume(if_ctx_t ctx); - -static int em_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int ntxqs, int ntxqsets); -static int em_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int nrxqs, int nrxqsets); -static void em_if_queues_free(if_ctx_t ctx); +static void *em_register(device_t); +static void *igb_register(device_t); +static int em_if_attach_pre(if_ctx_t); +static int em_if_attach_post(if_ctx_t); +static int em_if_detach(if_ctx_t); +static int em_if_shutdown(if_ctx_t); +static int em_if_suspend(if_ctx_t); +static int em_if_resume(if_ctx_t); + +static int em_if_tx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int); +static int em_if_rx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int); +static void em_if_queues_free(if_ctx_t); static uint64_t em_if_get_counter(if_ctx_t, ift_counter); -static void em_if_init(if_ctx_t ctx); -static void em_if_stop(if_ctx_t ctx); +static void em_if_init(if_ctx_t); +static void em_if_stop(if_ctx_t); static void em_if_media_status(if_ctx_t, struct ifmediareq *); -static int em_if_media_change(if_ctx_t ctx); -static int em_if_mtu_set(if_ctx_t ctx, uint32_t mtu); -static void em_if_timer(if_ctx_t ctx, uint16_t qid); -static void em_if_vlan_register(if_ctx_t ctx, u16 vtag); -static void em_if_vlan_unregister(if_ctx_t ctx, u16 vtag); -static void em_if_watchdog_reset(if_ctx_t ctx); -static bool em_if_needs_restart(if_ctx_t ctx, enum iflib_restart_event event); - -static void em_identify_hardware(if_ctx_t ctx); -static int em_allocate_pci_resources(if_ctx_t ctx); -static void em_free_pci_resources(if_ctx_t ctx); -static void em_reset(if_ctx_t ctx); -static int em_setup_interface(if_ctx_t ctx); -static int em_setup_msix(if_ctx_t ctx); - -static void em_initialize_transmit_unit(if_ctx_t ctx); -static void em_initialize_receive_unit(if_ctx_t ctx); - -static void em_if_intr_enable(if_ctx_t ctx); -static void em_if_intr_disable(if_ctx_t ctx); -static void igb_if_intr_enable(if_ctx_t ctx); -static void igb_if_intr_disable(if_ctx_t ctx); -static int em_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid); -static int em_if_tx_queue_intr_enable(if_ctx_t ctx, uint16_t txqid); -static int igb_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid); -static int igb_if_tx_queue_intr_enable(if_ctx_t ctx, uint16_t txqid); -static void em_if_multi_set(if_ctx_t ctx); -static void em_if_update_admin_status(if_ctx_t ctx); -static void em_if_debug(if_ctx_t ctx); +static int em_if_media_change(if_ctx_t); +static int em_if_mtu_set(if_ctx_t, uint32_t); +static void em_if_timer(if_ctx_t, uint16_t); +static void em_if_vlan_register(if_ctx_t, u16); +static void em_if_vlan_unregister(if_ctx_t, u16); +static void em_if_watchdog_reset(if_ctx_t); +static bool em_if_needs_restart(if_ctx_t, enum iflib_restart_event); + +static void em_identify_hardware(if_ctx_t); +static int em_allocate_pci_resources(if_ctx_t); +static void em_free_pci_resources(if_ctx_t); +static void em_reset(if_ctx_t); +static int em_setup_interface(if_ctx_t); +static int em_setup_msix(if_ctx_t); + +static void em_initialize_transmit_unit(if_ctx_t); +static void em_initialize_receive_unit(if_ctx_t); + +static void em_if_intr_enable(if_ctx_t); +static void em_if_intr_disable(if_ctx_t); +static void igb_if_intr_enable(if_ctx_t); +static void igb_if_intr_disable(if_ctx_t); +static int em_if_rx_queue_intr_enable(if_ctx_t, uint16_t); +static int em_if_tx_queue_intr_enable(if_ctx_t, uint16_t); +static int igb_if_rx_queue_intr_enable(if_ctx_t, uint16_t); +static int igb_if_tx_queue_intr_enable(if_ctx_t, uint16_t); +static void em_if_multi_set(if_ctx_t); +static void em_if_update_admin_status(if_ctx_t); +static void em_if_debug(if_ctx_t); static void em_update_stats_counters(struct e1000_softc *); static void em_add_hw_stats(struct e1000_softc *); -static int em_if_set_promisc(if_ctx_t ctx, int flags); +static int em_if_set_promisc(if_ctx_t, int); static bool em_if_vlan_filter_capable(struct e1000_softc *); static bool em_if_vlan_filter_used(struct e1000_softc *); static void em_if_vlan_filter_enable(struct e1000_softc *); @@ -317,23 +317,23 @@ static void em_init_manageability(struct e1000_softc *); static void em_release_manageability(struct e1000_softc *); static void em_get_hw_control(struct e1000_softc *); static void em_release_hw_control(struct e1000_softc *); -static void em_get_wakeup(if_ctx_t ctx); -static void em_enable_wakeup(if_ctx_t ctx); +static void em_get_wakeup(if_ctx_t); +static void em_enable_wakeup(if_ctx_t); static int em_enable_phy_wakeup(struct e1000_softc *); static void em_disable_aspm(struct e1000_softc *); -int em_intr(void *arg); +int em_intr(void *); /* MSI-X handlers */ static int em_if_msix_intr_assign(if_ctx_t, int); static int em_msix_link(void *); -static void em_handle_link(void *context); +static void em_handle_link(void *); static void em_enable_vectors_82574(if_ctx_t); static int em_set_flowcntl(SYSCTL_HANDLER_ARGS); static int em_sysctl_eee(SYSCTL_HANDLER_ARGS); -static void em_if_led_func(if_ctx_t ctx, int onoff); +static void em_if_led_func(if_ctx_t, int); static int em_get_regs(SYSCTL_HANDLER_ARGS); From nobody Wed Oct 6 21:10:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2AD9F12D3971; Wed, 6 Oct 2021 21:10: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 4HPnCy0jBpz3HTn; Wed, 6 Oct 2021 21:10: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 EC21C26BD5; Wed, 6 Oct 2021 21:10:21 +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 196LALEg058616; Wed, 6 Oct 2021 21:10:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LALEg058613; Wed, 6 Oct 2021 21:10:21 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:21 GMT Message-Id: <202110062110.196LALEg058613@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: b4e0a27c5be5 - main - cryptodev: Use 'csp' in the handlers for requests. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: b4e0a27c5be5090a9db16dd0ad417543b1fb0c4a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=b4e0a27c5be5090a9db16dd0ad417543b1fb0c4a commit b4e0a27c5be5090a9db16dd0ad417543b1fb0c4a Author: John Baldwin AuthorDate: 2021-10-06 21:08:46 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:46 +0000 cryptodev: Use 'csp' in the handlers for requests. - Retire cse->mode and use csp->csp_mode instead. - Use csp->csp_cipher_algorithm instead of the ivsize when checking for the fixup for the IV length for AES-XTS. Reviewed by: markj Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32103 --- sys/opencrypto/cryptodev.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/sys/opencrypto/cryptodev.c b/sys/opencrypto/cryptodev.c index 5d281f3157fa..9a4db6f453bc 100644 --- a/sys/opencrypto/cryptodev.c +++ b/sys/opencrypto/cryptodev.c @@ -3,13 +3,16 @@ /*- * Copyright (c) 2001 Theo de Raadt * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting - * Copyright (c) 2014 The FreeBSD Foundation + * Copyright (c) 2014-2021 The FreeBSD Foundation * All rights reserved. * * Portions of this software were developed by John-Mark Gurney * under sponsorship of the FreeBSD Foundation and * Rubicon Communications, LLC (Netgate). * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -265,7 +268,6 @@ struct csession { const struct enc_xform *txform; int hashsize; int ivsize; - int mode; void *key; void *mackey; @@ -614,7 +616,6 @@ cse_create(struct fcrypt *fcr, struct session2_op *sop) refcount_init(&cse->refs, 1); cse->key = key; cse->mackey = mackey; - cse->mode = csp.csp_mode; cse->cses = cses; cse->txform = txform; if (thash != NULL) @@ -743,6 +744,7 @@ cryptodev_cb(struct cryptop *crp) static int cryptodev_op(struct csession *cse, const struct crypt_op *cop) { + const struct crypto_session_params *csp; struct cryptop_data *cod = NULL; struct cryptop *crp = NULL; char *dst; @@ -792,7 +794,8 @@ cryptodev_op(struct csession *cse, const struct crypt_op *cop) if (cse->hashsize) crp->crp_digest_start = cop->len; - switch (cse->mode) { + csp = crypto_get_params(cse->cses); + switch (csp->csp_mode) { case CSP_MODE_COMPRESS: switch (cop->op) { case COP_ENCRYPT: @@ -958,6 +961,7 @@ bail: static int cryptodev_aead(struct csession *cse, struct crypt_aead *caead) { + const struct crypto_session_params *csp; struct cryptop_data *cod = NULL; struct cryptop *crp = NULL; char *dst; @@ -1020,7 +1024,8 @@ cryptodev_aead(struct csession *cse, struct crypt_aead *caead) else crp->crp_digest_start = crp->crp_payload_start + caead->len; - switch (cse->mode) { + csp = crypto_get_params(cse->cses); + switch (csp->csp_mode) { case CSP_MODE_AEAD: case CSP_MODE_ETA: switch (caead->op) { @@ -1058,9 +1063,9 @@ cryptodev_aead(struct csession *cse, struct crypt_aead *caead) * Permit a 16-byte IV for AES-XTS, but only use the * first 8 bytes as a block number. */ - if (cse->mode == CSP_MODE_ETA && - caead->ivlen == AES_BLOCK_LEN && - cse->ivsize == AES_XTS_IV_LEN) + if (csp->csp_mode == CSP_MODE_ETA && + csp->csp_cipher_alg == CRYPTO_AES_XTS && + caead->ivlen == AES_BLOCK_LEN) caead->ivlen = AES_XTS_IV_LEN; if (cse->ivsize == 0) { From nobody Wed Oct 6 21:10:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A271312D3BBE; Wed, 6 Oct 2021 21:10: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 4HPnCz2Fvxz3HHS; Wed, 6 Oct 2021 21:10: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 1EF7326EEA; Wed, 6 Oct 2021 21:10: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 196LANkJ058721; Wed, 6 Oct 2021 21:10:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAMcH058720; Wed, 6 Oct 2021 21:10:22 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:22 GMT Message-Id: <202110062110.196LAMcH058720@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: cb128893b929 - main - ccp, ccr: Simplify drivers to assume an AES-GCM IV length of 12. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: cb128893b92994456107d6ca722fdf6e5028eacc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=cb128893b92994456107d6ca722fdf6e5028eacc commit cb128893b92994456107d6ca722fdf6e5028eacc Author: John Baldwin AuthorDate: 2021-10-06 21:08:46 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:46 +0000 ccp, ccr: Simplify drivers to assume an AES-GCM IV length of 12. While here, use crypto_read_iv() in a few more places in ccr(4) that I missed previously. Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D32104 --- sys/crypto/ccp/ccp_hardware.c | 5 ++--- sys/dev/cxgbe/crypto/t4_crypto.c | 36 ++++++------------------------------ 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/sys/crypto/ccp/ccp_hardware.c b/sys/crypto/ccp/ccp_hardware.c index 5175343ffc90..2f184e3e770d 100644 --- a/sys/crypto/ccp/ccp_hardware.c +++ b/sys/crypto/ccp/ccp_hardware.c @@ -1356,10 +1356,9 @@ ccp_collect_iv(struct cryptop *crp, const struct crypto_session_params *csp, crypto_read_iv(crp, iv); /* - * If the input IV is 12 bytes, append an explicit counter of 1. + * Append an explicit counter of 1 for GCM. */ - if (csp->csp_cipher_alg == CRYPTO_AES_NIST_GCM_16 && - csp->csp_ivlen == 12) + if (csp->csp_cipher_alg == CRYPTO_AES_NIST_GCM_16) *(uint32_t *)&iv[12] = htobe32(1); if (csp->csp_cipher_alg == CRYPTO_AES_XTS && diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c index 3ce3e5c916db..490c984a9751 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.c +++ b/sys/dev/cxgbe/crypto/t4_crypto.c @@ -1136,26 +1136,7 @@ ccr_gcm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) else op_type = CHCR_DECRYPT_OP; - /* - * The IV handling for GCM in OCF is a bit more complicated in - * that IPSec provides a full 16-byte IV (including the - * counter), whereas the /dev/crypto interface sometimes - * provides a full 16-byte IV (if no IV is provided in the - * ioctl) and sometimes a 12-byte IV (if the IV was explicit). - * - * When provided a 12-byte IV, assume the IV is really 16 bytes - * with a counter in the last 4 bytes initialized to 1. - * - * While iv_len is checked below, the value is currently - * always set to 12 when creating a GCM session in this driver - * due to limitations in OCF (there is no way to know what the - * IV length of a given request will be). This means that the - * driver always assumes as 12-byte IV for now. - */ - if (s->blkcipher.iv_len == 12) - iv_len = AES_BLOCK_LEN; - else - iv_len = s->blkcipher.iv_len; + iv_len = AES_BLOCK_LEN; /* * GCM requests should always provide an explicit IV. @@ -1293,9 +1274,8 @@ ccr_gcm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) crwr = wrtod(wr); memset(crwr, 0, wr_len); - memcpy(iv, crp->crp_iv, s->blkcipher.iv_len); - if (s->blkcipher.iv_len == 12) - *(uint32_t *)&iv[12] = htobe32(1); + crypto_read_iv(crp, iv); + *(uint32_t *)&iv[12] = htobe32(1); ccr_populate_wreq(sc, s, crwr, kctx_len, wr_len, imm_len, sgl_len, 0, crp); @@ -1448,15 +1428,11 @@ ccr_gcm_soft(struct ccr_session *s, struct cryptop *crp) if (error) goto out; - /* - * This assumes a 12-byte IV from the crp. See longer comment - * above in ccr_gcm() for more details. - */ if ((crp->crp_flags & CRYPTO_F_IV_SEPARATE) == 0) { error = EINVAL; goto out; } - memcpy(iv, crp->crp_iv, 12); + crypto_read_iv(crp, iv); *(uint32_t *)&iv[12] = htobe32(1); axf->Reinit(auth_ctx, iv, sizeof(iv)); @@ -1770,7 +1746,7 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) */ memset(iv, 0, iv_len); iv[0] = (15 - AES_CCM_IV_LEN) - 1; - memcpy(iv + 1, crp->crp_iv, AES_CCM_IV_LEN); + crypto_read_iv(crp, iv + 1); ccr_populate_wreq(sc, s, crwr, kctx_len, wr_len, imm_len, sgl_len, 0, crp); @@ -1943,7 +1919,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) error = EINVAL; goto out; } - memcpy(iv, crp->crp_iv, AES_CCM_IV_LEN); + crypto_read_iv(crp, iv); auth_ctx->aes_cbc_mac_ctx.authDataLength = crp->crp_aad_length; auth_ctx->aes_cbc_mac_ctx.cryptDataLength = crp->crp_payload_length; From nobody Wed Oct 6 21:10:24 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4DEBF12D3D93; Wed, 6 Oct 2021 21:10: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 4HPnD04Rdgz3HMj; Wed, 6 Oct 2021 21:10: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 51C8726F62; Wed, 6 Oct 2021 21:10: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 196LAOkP058746; Wed, 6 Oct 2021 21:10:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAOV3058745; Wed, 6 Oct 2021 21:10:24 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:24 GMT Message-Id: <202110062110.196LAOV3058745@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: 1833d6042c9a - main - crypto: Permit variable-sized IVs for ciphers with a reinit hook. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 1833d6042c9a0116e8a1198256fd8fbc99cb11ad Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=1833d6042c9a0116e8a1198256fd8fbc99cb11ad commit 1833d6042c9a0116e8a1198256fd8fbc99cb11ad Author: John Baldwin AuthorDate: 2021-10-06 21:08:46 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:46 +0000 crypto: Permit variable-sized IVs for ciphers with a reinit hook. Add a 'len' argument to the reinit hook in 'struct enc_xform' to permit support for AEAD ciphers such as AES-CCM and Chacha20-Poly1305 which support different nonce lengths. Reviewed by: markj Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32105 --- sys/crypto/chacha20/chacha-sw.c | 5 +++-- sys/dev/cxgbe/crypto/t4_crypto.c | 10 +++++++--- sys/opencrypto/cryptosoft.c | 20 +++++++++++--------- sys/opencrypto/xform_aes_icm.c | 22 ++++++++++++++-------- sys/opencrypto/xform_aes_xts.c | 7 +++++-- sys/opencrypto/xform_chacha20_poly1305.c | 5 ++++- sys/opencrypto/xform_enc.h | 2 +- 7 files changed, 45 insertions(+), 26 deletions(-) diff --git a/sys/crypto/chacha20/chacha-sw.c b/sys/crypto/chacha20/chacha-sw.c index b1bf0a106bfd..8041a3fee8a5 100644 --- a/sys/crypto/chacha20/chacha-sw.c +++ b/sys/crypto/chacha20/chacha-sw.c @@ -18,9 +18,10 @@ chacha20_xform_setkey(void *ctx, const uint8_t *key, int len) } static void -chacha20_xform_reinit(void *ctx, const uint8_t *iv) +chacha20_xform_reinit(void *ctx, const uint8_t *iv, size_t ivlen) { - + KASSERT(ivlen == CHACHA_NONCELEN + CHACHA_CTRLEN, + ("%s: invalid IV length", __func__)); chacha_ivsetup(ctx, iv + 8, iv); } diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c index 490c984a9751..845bc3c29e38 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.c +++ b/sys/dev/cxgbe/crypto/t4_crypto.c @@ -1,8 +1,12 @@ /*- * Copyright (c) 2017 Chelsio Communications, Inc. + * Copyright (c) 2021 The FreeBSD Foundation * All rights reserved. * Written by: John Baldwin * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -1458,7 +1462,7 @@ ccr_gcm_soft(struct ccr_session *s, struct cryptop *crp) } } - exf->reinit(kschedule, iv); + exf->reinit(kschedule, iv, sizeof(iv)); /* Do encryption with MAC */ for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { @@ -1935,7 +1939,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) if (error) goto out; - exf->reinit(kschedule, iv); + exf->reinit(kschedule, iv, sizeof(iv)); /* Do encryption/decryption with MAC */ for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { @@ -1970,7 +1974,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) error = 0; /* Tag matches, decrypt data. */ - exf->reinit(kschedule, iv); + exf->reinit(kschedule, iv, sizeof(iv)); for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { len = imin(crp->crp_payload_length - i, diff --git a/sys/opencrypto/cryptosoft.c b/sys/opencrypto/cryptosoft.c index ef927f117bcc..04a2b004799a 100644 --- a/sys/opencrypto/cryptosoft.c +++ b/sys/opencrypto/cryptosoft.c @@ -9,13 +9,16 @@ * supported the development of this code. * * Copyright (c) 2000, 2001 Angelos D. Keromytis - * Copyright (c) 2014 The FreeBSD Foundation + * Copyright (c) 2014-2021 The FreeBSD Foundation * All rights reserved. * * Portions of this software were developed by John-Mark Gurney * under sponsorship of the FreeBSD Foundation and * Rubicon Communications, LLC (Netgate). * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Permission to use, copy, and modify this software with or without fee * is hereby granted, provided that this entire notice is included in * all source code copies of any software which is or includes a copy or @@ -106,7 +109,7 @@ swcr_encdec(struct swcr_session *ses, struct cryptop *crp) const struct enc_xform *exf; struct swcr_encdec *sw; size_t inlen, outlen; - int i, blks, ivlen, resid; + int i, blks, resid; struct crypto_buffer_cursor cc_in, cc_out; const unsigned char *inblk; unsigned char *outblk; @@ -117,7 +120,7 @@ swcr_encdec(struct swcr_session *ses, struct cryptop *crp) sw = &ses->swcr_encdec; exf = sw->sw_exf; - ivlen = exf->ivsize; + csp = crypto_get_params(crp->crp_session); if (exf->native_blocksize == 0) { /* Check for non-padded data */ @@ -133,7 +136,6 @@ swcr_encdec(struct swcr_session *ses, struct cryptop *crp) return (EINVAL); if (crp->crp_cipher_key != NULL) { - csp = crypto_get_params(crp->crp_session); error = exf->setkey(sw->sw_kschedule, crp->crp_cipher_key, csp->csp_cipher_klen); if (error) @@ -147,7 +149,7 @@ swcr_encdec(struct swcr_session *ses, struct cryptop *crp) * xforms that provide a reinit method perform all IV * handling themselves. */ - exf->reinit(sw->sw_kschedule, iv); + exf->reinit(sw->sw_kschedule, iv, csp->csp_ivlen); } ivp = iv; @@ -534,7 +536,7 @@ swcr_gcm(struct swcr_session *ses, struct cryptop *crp) if (crp->crp_cipher_key != NULL) exf->setkey(swe->sw_kschedule, crp->crp_cipher_key, crypto_get_params(crp->crp_session)->csp_cipher_klen); - exf->reinit(swe->sw_kschedule, iv); + exf->reinit(swe->sw_kschedule, iv, ivlen); /* Do encryption with MAC */ crypto_cursor_init(&cc_in, &crp->crp_buf); @@ -753,7 +755,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) if (crp->crp_cipher_key != NULL) exf->setkey(swe->sw_kschedule, crp->crp_cipher_key, crypto_get_params(crp->crp_session)->csp_cipher_klen); - exf->reinit(swe->sw_kschedule, iv); + exf->reinit(swe->sw_kschedule, iv, ivlen); /* Do encryption/decryption with MAC */ crypto_cursor_init(&cc_in, &crp->crp_buf); @@ -824,7 +826,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) } /* tag matches, decrypt data */ - exf->reinit(swe->sw_kschedule, iv); + exf->reinit(swe->sw_kschedule, iv, ivlen); crypto_cursor_init(&cc_in, &crp->crp_buf); crypto_cursor_advance(&cc_in, crp->crp_payload_start); for (resid = crp->crp_payload_length; resid > blksz; @@ -915,7 +917,7 @@ swcr_chacha20_poly1305(struct swcr_session *ses, struct cryptop *crp) if (crp->crp_cipher_key != NULL) exf->setkey(swe->sw_kschedule, crp->crp_cipher_key, csp->csp_cipher_klen); - exf->reinit(swe->sw_kschedule, crp->crp_iv); + exf->reinit(swe->sw_kschedule, crp->crp_iv, csp->csp_ivlen); /* Do encryption with MAC */ crypto_cursor_init(&cc_in, &crp->crp_buf); diff --git a/sys/opencrypto/xform_aes_icm.c b/sys/opencrypto/xform_aes_icm.c index 618b812ceebf..860dceda5232 100644 --- a/sys/opencrypto/xform_aes_icm.c +++ b/sys/opencrypto/xform_aes_icm.c @@ -55,9 +55,9 @@ __FBSDID("$FreeBSD$"); static int aes_icm_setkey(void *, const uint8_t *, int); static void aes_icm_crypt(void *, const uint8_t *, uint8_t *); static void aes_icm_crypt_last(void *, const uint8_t *, uint8_t *, size_t); -static void aes_icm_reinit(void *, const uint8_t *); -static void aes_gcm_reinit(void *, const uint8_t *); -static void aes_ccm_reinit(void *, const uint8_t *); +static void aes_icm_reinit(void *, const uint8_t *, size_t); +static void aes_gcm_reinit(void *, const uint8_t *, size_t); +static void aes_ccm_reinit(void *, const uint8_t *, size_t); /* Encryption instances */ const struct enc_xform enc_xform_aes_icm = { @@ -114,20 +114,24 @@ const struct enc_xform enc_xform_ccm = { * Encryption wrapper routines. */ static void -aes_icm_reinit(void *key, const uint8_t *iv) +aes_icm_reinit(void *key, const uint8_t *iv, size_t ivlen) { struct aes_icm_ctx *ctx; ctx = key; - bcopy(iv, ctx->ac_block, AESICM_BLOCKSIZE); + KASSERT(ivlen <= sizeof(ctx->ac_block), + ("%s: ivlen too large", __func__)); + bcopy(iv, ctx->ac_block, ivlen); } static void -aes_gcm_reinit(void *key, const uint8_t *iv) +aes_gcm_reinit(void *key, const uint8_t *iv, size_t ivlen) { struct aes_icm_ctx *ctx; - aes_icm_reinit(key, iv); + KASSERT(ivlen == AES_GCM_IV_LEN, + ("%s: invalid IV length", __func__)); + aes_icm_reinit(key, iv, ivlen); ctx = key; /* GCM starts with 2 as counter 1 is used for final xor of tag. */ @@ -136,10 +140,12 @@ aes_gcm_reinit(void *key, const uint8_t *iv) } static void -aes_ccm_reinit(void *key, const uint8_t *iv) +aes_ccm_reinit(void *key, const uint8_t *iv, size_t ivlen) { struct aes_icm_ctx *ctx; + KASSERT(ivlen == AES_CCM_IV_LEN, + ("%s: invalid IV length", __func__)); ctx = key; /* CCM has flags, then the IV, then the counter, which starts at 1 */ diff --git a/sys/opencrypto/xform_aes_xts.c b/sys/opencrypto/xform_aes_xts.c index 457535621511..7a79d4685d21 100644 --- a/sys/opencrypto/xform_aes_xts.c +++ b/sys/opencrypto/xform_aes_xts.c @@ -56,7 +56,7 @@ __FBSDID("$FreeBSD$"); static int aes_xts_setkey(void *, const uint8_t *, int); static void aes_xts_encrypt(void *, const uint8_t *, uint8_t *); static void aes_xts_decrypt(void *, const uint8_t *, uint8_t *); -static void aes_xts_reinit(void *, const uint8_t *); +static void aes_xts_reinit(void *, const uint8_t *, size_t); /* Encryption instances */ const struct enc_xform enc_xform_aes_xts = { @@ -77,12 +77,15 @@ const struct enc_xform enc_xform_aes_xts = { * Encryption wrapper routines. */ static void -aes_xts_reinit(void *key, const uint8_t *iv) +aes_xts_reinit(void *key, const uint8_t *iv, size_t ivlen) { struct aes_xts_ctx *ctx = key; uint64_t blocknum; u_int i; + KASSERT(ivlen == sizeof(blocknum), + ("%s: invalid IV length", __func__)); + /* * Prepare tweak as E_k2(IV). IV is specified as LE representation * of a 64-bit block number which we allow to be passed in directly. diff --git a/sys/opencrypto/xform_chacha20_poly1305.c b/sys/opencrypto/xform_chacha20_poly1305.c index 543c16bcc4e0..51ae11c923e7 100644 --- a/sys/opencrypto/xform_chacha20_poly1305.c +++ b/sys/opencrypto/xform_chacha20_poly1305.c @@ -50,10 +50,13 @@ chacha20_poly1305_setkey(void *vctx, const uint8_t *key, int len) } static void -chacha20_poly1305_reinit(void *vctx, const uint8_t *iv) +chacha20_poly1305_reinit(void *vctx, const uint8_t *iv, size_t ivlen) { struct chacha20_poly1305_cipher_ctx *ctx = vctx; + KASSERT(ivlen == sizeof(ctx->nonce), + ("%s: invalid nonce length", __func__)); + /* Block 0 is used for the poly1305 key. */ memcpy(ctx->nonce, iv, sizeof(ctx->nonce)); ctx->ic = 1; diff --git a/sys/opencrypto/xform_enc.h b/sys/opencrypto/xform_enc.h index 6f95b49986c5..baf423dd1079 100644 --- a/sys/opencrypto/xform_enc.h +++ b/sys/opencrypto/xform_enc.h @@ -62,7 +62,7 @@ struct enc_xform { void (*encrypt) (void *, const uint8_t *, uint8_t *); void (*decrypt) (void *, const uint8_t *, uint8_t *); int (*setkey) (void *, const uint8_t *, int len); - void (*reinit) (void *, const uint8_t *); + void (*reinit) (void *, const uint8_t *, size_t); /* * For stream ciphers, encrypt/decrypt the final partial block From nobody Wed Oct 6 21:10:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 89B9012D3AE4; Wed, 6 Oct 2021 21:10: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 4HPnD15vdnz3HRf; Wed, 6 Oct 2021 21:10: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 59E1D26D4D; Wed, 6 Oct 2021 21:10: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 196LAPWK058771; Wed, 6 Oct 2021 21:10:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAP8h058770; Wed, 6 Oct 2021 21:10:25 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:25 GMT Message-Id: <202110062110.196LAP8h058770@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: 5ae5ed5b8fd2 - main - cryptosoft, ccr: Use crp_iv directly for AES-CCM and AES-GCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 5ae5ed5b8fd2955378ab67ba127cad8c981678ab Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=5ae5ed5b8fd2955378ab67ba127cad8c981678ab commit 5ae5ed5b8fd2955378ab67ba127cad8c981678ab Author: John Baldwin AuthorDate: 2021-10-06 21:08:46 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:46 +0000 cryptosoft, ccr: Use crp_iv directly for AES-CCM and AES-GCM. Rather than copying crp_iv to a local array on the stack that is then passed to xform reinit routines, pass crp_iv directly and remove the local copy. Reviewed by: markj Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32106 --- sys/dev/cxgbe/crypto/t4_crypto.c | 17 +++++------------ sys/opencrypto/cryptosoft.c | 18 +++++------------- 2 files changed, 10 insertions(+), 25 deletions(-) diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c index 845bc3c29e38..30d168b60777 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.c +++ b/sys/dev/cxgbe/crypto/t4_crypto.c @@ -1391,7 +1391,6 @@ ccr_gcm_soft(struct ccr_session *s, struct cryptop *crp) void *auth_ctx, *kschedule; char block[GMAC_BLOCK_LEN]; char digest[GMAC_DIGEST_LEN]; - char iv[AES_BLOCK_LEN]; int error, i, len; auth_ctx = NULL; @@ -1436,10 +1435,8 @@ ccr_gcm_soft(struct ccr_session *s, struct cryptop *crp) error = EINVAL; goto out; } - crypto_read_iv(crp, iv); - *(uint32_t *)&iv[12] = htobe32(1); - axf->Reinit(auth_ctx, iv, sizeof(iv)); + axf->Reinit(auth_ctx, crp->crp_iv, AES_GCM_IV_LEN); /* MAC the AAD. */ if (crp->crp_aad != NULL) { @@ -1462,7 +1459,7 @@ ccr_gcm_soft(struct ccr_session *s, struct cryptop *crp) } } - exf->reinit(kschedule, iv, sizeof(iv)); + exf->reinit(kschedule, crp->crp_iv, AES_GCM_IV_LEN); /* Do encryption with MAC */ for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { @@ -1522,7 +1519,6 @@ out: zfree(kschedule, M_CCR); zfree(auth_ctx, M_CCR); explicit_bzero(block, sizeof(block)); - explicit_bzero(iv, sizeof(iv)); explicit_bzero(digest, sizeof(digest)); crp->crp_etype = error; crypto_done(crp); @@ -1878,7 +1874,6 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) void *kschedule; char block[CCM_CBC_BLOCK_LEN]; char digest[AES_CBC_MAC_HASH_LEN]; - char iv[AES_CCM_IV_LEN]; int error, i, len; auth_ctx = NULL; @@ -1923,11 +1918,10 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) error = EINVAL; goto out; } - crypto_read_iv(crp, iv); auth_ctx->aes_cbc_mac_ctx.authDataLength = crp->crp_aad_length; auth_ctx->aes_cbc_mac_ctx.cryptDataLength = crp->crp_payload_length; - axf->Reinit(auth_ctx, iv, sizeof(iv)); + axf->Reinit(auth_ctx, crp->crp_iv, AES_CCM_IV_LEN); /* MAC the AAD. */ if (crp->crp_aad != NULL) @@ -1939,7 +1933,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) if (error) goto out; - exf->reinit(kschedule, iv, sizeof(iv)); + exf->reinit(kschedule, crp->crp_iv, AES_CCM_IV_LEN); /* Do encryption/decryption with MAC */ for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { @@ -1974,7 +1968,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) error = 0; /* Tag matches, decrypt data. */ - exf->reinit(kschedule, iv, sizeof(iv)); + exf->reinit(kschedule, crp->crp_iv, AES_CCM_IV_LEN); for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { len = imin(crp->crp_payload_length - i, @@ -1995,7 +1989,6 @@ out: zfree(kschedule, M_CCR); zfree(auth_ctx, M_CCR); explicit_bzero(block, sizeof(block)); - explicit_bzero(iv, sizeof(iv)); explicit_bzero(digest, sizeof(digest)); crp->crp_etype = error; crypto_done(crp); diff --git a/sys/opencrypto/cryptosoft.c b/sys/opencrypto/cryptosoft.c index 04a2b004799a..19092e56b004 100644 --- a/sys/opencrypto/cryptosoft.c +++ b/sys/opencrypto/cryptosoft.c @@ -463,7 +463,6 @@ swcr_gcm(struct swcr_session *ses, struct cryptop *crp) uint32_t blkbuf[howmany(AES_BLOCK_LEN, sizeof(uint32_t))]; u_char *blk = (u_char *)blkbuf; u_char tag[GMAC_DIGEST_LEN]; - u_char iv[AES_BLOCK_LEN]; struct crypto_buffer_cursor cc_in, cc_out; const u_char *inblk; u_char *outblk; @@ -492,12 +491,10 @@ swcr_gcm(struct swcr_session *ses, struct cryptop *crp) if ((crp->crp_flags & CRYPTO_F_IV_SEPARATE) == 0) return (EINVAL); - /* Initialize the IV */ ivlen = AES_GCM_IV_LEN; - bcopy(crp->crp_iv, iv, ivlen); /* Supply MAC with IV */ - axf->Reinit(&ctx, iv, ivlen); + axf->Reinit(&ctx, crp->crp_iv, ivlen); /* Supply MAC with AAD */ if (crp->crp_aad != NULL) { @@ -536,7 +533,7 @@ swcr_gcm(struct swcr_session *ses, struct cryptop *crp) if (crp->crp_cipher_key != NULL) exf->setkey(swe->sw_kschedule, crp->crp_cipher_key, crypto_get_params(crp->crp_session)->csp_cipher_klen); - exf->reinit(swe->sw_kschedule, iv, ivlen); + exf->reinit(swe->sw_kschedule, crp->crp_iv, ivlen); /* Do encryption with MAC */ crypto_cursor_init(&cc_in, &crp->crp_buf); @@ -635,7 +632,6 @@ swcr_gcm(struct swcr_session *ses, struct cryptop *crp) out: explicit_bzero(blkbuf, sizeof(blkbuf)); explicit_bzero(tag, sizeof(tag)); - explicit_bzero(iv, sizeof(iv)); return (error); } @@ -701,7 +697,6 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) uint32_t blkbuf[howmany(AES_BLOCK_LEN, sizeof(uint32_t))]; u_char *blk = (u_char *)blkbuf; u_char tag[AES_CBC_MAC_HASH_LEN]; - u_char iv[AES_BLOCK_LEN]; struct crypto_buffer_cursor cc_in, cc_out; const u_char *inblk; u_char *outblk; @@ -729,9 +724,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) if ((crp->crp_flags & CRYPTO_F_IV_SEPARATE) == 0) return (EINVAL); - /* Initialize the IV */ ivlen = AES_CCM_IV_LEN; - bcopy(crp->crp_iv, iv, ivlen); /* * AES CCM-CBC-MAC needs to know the length of both the auth @@ -741,7 +734,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) ctx.aes_cbc_mac_ctx.cryptDataLength = crp->crp_payload_length; /* Supply MAC with IV */ - axf->Reinit(&ctx, iv, ivlen); + axf->Reinit(&ctx, crp->crp_iv, ivlen); /* Supply MAC with AAD */ if (crp->crp_aad != NULL) @@ -755,7 +748,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) if (crp->crp_cipher_key != NULL) exf->setkey(swe->sw_kschedule, crp->crp_cipher_key, crypto_get_params(crp->crp_session)->csp_cipher_klen); - exf->reinit(swe->sw_kschedule, iv, ivlen); + exf->reinit(swe->sw_kschedule, crp->crp_iv, ivlen); /* Do encryption/decryption with MAC */ crypto_cursor_init(&cc_in, &crp->crp_buf); @@ -826,7 +819,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) } /* tag matches, decrypt data */ - exf->reinit(swe->sw_kschedule, iv, ivlen); + exf->reinit(swe->sw_kschedule, crp->crp_iv, ivlen); crypto_cursor_init(&cc_in, &crp->crp_buf); crypto_cursor_advance(&cc_in, crp->crp_payload_start); for (resid = crp->crp_payload_length; resid > blksz; @@ -859,7 +852,6 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) out: explicit_bzero(blkbuf, sizeof(blkbuf)); explicit_bzero(tag, sizeof(tag)); - explicit_bzero(iv, sizeof(iv)); return (error); } From nobody Wed Oct 6 21:10:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5596112D3C61; Wed, 6 Oct 2021 21:10: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 4HPnD301WXz3HKh; Wed, 6 Oct 2021 21:10: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 8537426F63; Wed, 6 Oct 2021 21:10: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 196LAQ29058795; Wed, 6 Oct 2021 21:10:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAQbP058794; Wed, 6 Oct 2021 21:10:26 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:26 GMT Message-Id: <202110062110.196LAQbP058794@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: 16676123fc85 - main - cryptodev: Permit explicit IV/nonce and MAC/tag lengths. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 16676123fc85233334983e0071cb446357abec8d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=16676123fc85233334983e0071cb446357abec8d commit 16676123fc85233334983e0071cb446357abec8d Author: John Baldwin AuthorDate: 2021-10-06 21:08:46 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:46 +0000 cryptodev: Permit explicit IV/nonce and MAC/tag lengths. Add 'ivlen' and 'maclen' fields to the structure used for CIOGSESSION2 to specify the explicit IV/nonce and MAC/tag lengths for crypto sessions. If these fields are zero, the default lengths are used. This permits selecting an alternate nonce length for AEAD ciphers such as AES-CCM which support multiple nonce leengths. It also supports truncated MACs as input to AEAD or ETA requests. Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32107 --- share/man/man4/crypto.4 | 24 ++++++++++++++++++++---- sys/opencrypto/cryptodev.c | 29 +++++++++++++++++++++++++++-- sys/opencrypto/cryptodev.h | 9 +++++++-- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/share/man/man4/crypto.4 b/share/man/man4/crypto.4 index 56fd4f484c3b..5617bacd904a 100644 --- a/share/man/man4/crypto.4 +++ b/share/man/man4/crypto.4 @@ -1,13 +1,16 @@ .\" $NetBSD: crypto.4,v 1.24 2014/01/27 21:23:59 pgoyette Exp $ .\" .\" Copyright (c) 2008 The NetBSD Foundation, Inc. -.\" Copyright (c) 2014 The FreeBSD Foundation +.\" Copyright (c) 2014-2021 The FreeBSD Foundation .\" All rights reserved. .\" .\" Portions of this documentation were written by John-Mark Gurney .\" under sponsorship of the FreeBSD Foundation and .\" Rubicon Communications, LLC (Netgate). .\" +.\" Portions of this documentation were written by Ararat River +.\" Consulting, LLC under sponsorship of the FreeBSD Foundation. +.\" .\" This code is derived from software contributed to The NetBSD Foundation .\" by Coyote Point Systems, Inc. .\" @@ -60,7 +63,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 12, 2021 +.Dd October 6, 2021 .Dt CRYPTO 4 .Os .Sh NAME @@ -251,14 +254,27 @@ struct session2_op { uint32_t ses; /* returns: ses # */ int crid; /* driver id + flags (rw) */ - int pad[4]; /* for future expansion */ + int ivlen; /* length of nonce/IV */ + int maclen; /* length of MAC/tag */ + int pad[2]; /* for future expansion */ }; .Ed -This request is similar to CIOGSESSION except that +This request is similar to CIOGSESSION but adds additional fields. +.Pp .Fa sessp-\*[Gt]crid requests either a specific crypto device or a class of devices (software vs hardware). +.Pp +.Fa sessp-\*[Gt]ivlen +specifies the length of the IV or nonce supplied with each request. +If this field is set to zero, the default IV or nonce length is used. +.Pp +.Fa sessp-\*[Gt]maclen +specifies the length of the MAC or authentication tag supplied or computed by +each request. +If this field is set to zero, the full MAC is used. +.Pp The .Fa sessp-\*[Gt]pad field must be initialized to zero. diff --git a/sys/opencrypto/cryptodev.c b/sys/opencrypto/cryptodev.c index 9a4db6f453bc..6614c8f60676 100644 --- a/sys/opencrypto/cryptodev.c +++ b/sys/opencrypto/cryptodev.c @@ -103,7 +103,9 @@ struct session2_op32 { uint32_t mackey; uint32_t ses; int crid; - int pad[4]; + int ivlen; + int maclen; + int pad[2]; }; struct crypt_op32 { @@ -156,6 +158,8 @@ session2_op_from_32(const struct session2_op32 *from, struct session2_op *to) session_op_from_32((const struct session_op32 *)from, to); CP(*from, *to, crid); + CP(*from, *to, ivlen); + CP(*from, *to, maclen); } static void @@ -597,6 +601,25 @@ cse_create(struct fcrypt *fcr, struct session2_op *sop) csp.csp_ivlen = AES_CCM_IV_LEN; } + if (sop->ivlen != 0) { + if (csp.csp_ivlen == 0) { + CRYPTDEB("does not support an IV"); + error = EINVAL; + SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); + goto bail; + } + csp.csp_ivlen = sop->ivlen; + } + if (sop->maclen != 0) { + if (!(thash != NULL || csp.csp_mode == CSP_MODE_AEAD)) { + CRYPTDEB("does not support a MAC"); + error = EINVAL; + SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); + goto bail; + } + csp.csp_auth_mlen = sop->maclen; + } + crid = sop->crid; error = checkforsoftware(&crid); if (error) { @@ -618,7 +641,9 @@ cse_create(struct fcrypt *fcr, struct session2_op *sop) cse->mackey = mackey; cse->cses = cses; cse->txform = txform; - if (thash != NULL) + if (sop->maclen != 0) + cse->hashsize = sop->maclen; + else if (thash != NULL) cse->hashsize = thash->hashsize; else if (csp.csp_cipher_alg == CRYPTO_AES_NIST_GCM_16) cse->hashsize = AES_GMAC_HASH_LEN; diff --git a/sys/opencrypto/cryptodev.h b/sys/opencrypto/cryptodev.h index 79dec8c44f51..b3c79a48f632 100644 --- a/sys/opencrypto/cryptodev.h +++ b/sys/opencrypto/cryptodev.h @@ -23,13 +23,16 @@ * PURPOSE. * * Copyright (c) 2001 Theo de Raadt - * Copyright (c) 2014 The FreeBSD Foundation + * Copyright (c) 2014-2021 The FreeBSD Foundation * All rights reserved. * * Portions of this software were developed by John-Mark Gurney * under sponsorship of the FreeBSD Foundation and * Rubicon Communications, LLC (Netgate). * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -241,7 +244,9 @@ struct session2_op { uint32_t ses; /* returns: session # */ int crid; /* driver id + flags (rw) */ - int pad[4]; /* for future expansion */ + int ivlen; /* length of nonce/IV */ + int maclen; /* length of MAC/tag */ + int pad[2]; /* for future expansion */ }; struct crypt_op { From nobody Wed Oct 6 21:10:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8593F12D3F80; Wed, 6 Oct 2021 21:10: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 4HPnD411Tpz3HdK; Wed, 6 Oct 2021 21:10: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 AAB3326FD2; Wed, 6 Oct 2021 21:10: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 196LARbQ058819; Wed, 6 Oct 2021 21:10:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAR2a058818; Wed, 6 Oct 2021 21:10:27 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:27 GMT Message-Id: <202110062110.196LAR2a058818@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: 70dbebea1242 - main - cryptodev: Permit CIOCCRYPT for AEAD ciphers. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 70dbebea124236184a66a30175ba307793971f00 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=70dbebea124236184a66a30175ba307793971f00 commit 70dbebea124236184a66a30175ba307793971f00 Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 cryptodev: Permit CIOCCRYPT for AEAD ciphers. A request without AAD for an AEAD cipher can be submitted via CIOCCRYPT rather than CIOCCRYPTAEAD. Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32108 --- sys/opencrypto/cryptodev.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/opencrypto/cryptodev.c b/sys/opencrypto/cryptodev.c index 6614c8f60676..3224ed3f900c 100644 --- a/sys/opencrypto/cryptodev.c +++ b/sys/opencrypto/cryptodev.c @@ -864,6 +864,13 @@ cryptodev_op(struct csession *cse, const struct crypt_op *cop) goto bail; } break; + case CSP_MODE_AEAD: + if (cse->ivsize != 0 && cop->iv == NULL) { + SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); + error = EINVAL; + goto bail; + } + /* FALLTHROUGH */ case CSP_MODE_ETA: switch (cop->op) { case COP_ENCRYPT: From nobody Wed Oct 6 21:10:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B5F9912D3E20; Wed, 6 Oct 2021 21:10: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 4HPnD512YLz3HKw; Wed, 6 Oct 2021 21:10: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 CF2B72720A; Wed, 6 Oct 2021 21:10: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 196LASi6058856; Wed, 6 Oct 2021 21:10:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAS6j058855; Wed, 6 Oct 2021 21:10:28 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:28 GMT Message-Id: <202110062110.196LAS6j058855@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: a0cbcbb7917b - main - cryptodev: Allow some CIOCCRYPT operations with an empty payload. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: a0cbcbb7917b0b8566ec0853425a73d7958ddbed Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=a0cbcbb7917b0b8566ec0853425a73d7958ddbed commit a0cbcbb7917b0b8566ec0853425a73d7958ddbed Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 cryptodev: Allow some CIOCCRYPT operations with an empty payload. If an operation would generate a MAC output (e.g. for digest operation or for an AEAD or EtA operation), then an empty payload buffer is valid. Only reject requests with an empty buffer for "plain" cipher sessions. Some of the AES-CCM NIST KAT vectors use an empty payload. While here, don't advance crp_payload_start for requests that use an empty payload with an inline IV. (*) Reported by: syzbot+d4b94fbd9a44b032f428@syzkaller.appspotmail.com (*) Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32109 --- sys/opencrypto/cryptodev.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sys/opencrypto/cryptodev.c b/sys/opencrypto/cryptodev.c index 3224ed3f900c..9312945a9b8b 100644 --- a/sys/opencrypto/cryptodev.c +++ b/sys/opencrypto/cryptodev.c @@ -781,7 +781,7 @@ cryptodev_op(struct csession *cse, const struct crypt_op *cop) } if (cse->txform) { - if (cop->len == 0 || (cop->len % cse->txform->blocksize) != 0) { + if ((cop->len % cse->txform->blocksize) != 0) { SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); return (EINVAL); } @@ -836,6 +836,12 @@ cryptodev_op(struct csession *cse, const struct crypt_op *cop) } break; case CSP_MODE_CIPHER: + if (cop->len == 0 || + (cop->iv == NULL && cop->len == cse->ivsize)) { + SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__); + error = EINVAL; + goto bail; + } switch (cop->op) { case COP_ENCRYPT: crp->crp_op = CRYPTO_OP_ENCRYPT; @@ -919,8 +925,9 @@ cryptodev_op(struct csession *cse, const struct crypt_op *cop) goto bail; } crp->crp_iv_start = 0; - crp->crp_payload_start += cse->ivsize; crp->crp_payload_length -= cse->ivsize; + if (crp->crp_payload_length != 0) + crp->crp_payload_start = cse->ivsize; dst += cse->ivsize; } From nobody Wed Oct 6 21:10:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7EB0A12D3FBD; Wed, 6 Oct 2021 21:10: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 4HPnD72t6rz3HNK; Wed, 6 Oct 2021 21:10: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 DF4D126D4E; Wed, 6 Oct 2021 21:10: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 196LATKx058970; Wed, 6 Oct 2021 21:10:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LATxZ058969; Wed, 6 Oct 2021 21:10:29 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:29 GMT Message-Id: <202110062110.196LATxZ058969@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: bcb0fd6accc0 - main - cryptocheck: Support multiple IV sizes for AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: bcb0fd6accc095295765b08b02f5f3b07ea62536 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=bcb0fd6accc095295765b08b02f5f3b07ea62536 commit bcb0fd6accc095295765b08b02f5f3b07ea62536 Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 cryptocheck: Support multiple IV sizes for AES-CCM. By default, the "normal" IV size (12) is used, but it can be overriden via -I. If -I is not specified and -z is specified, issue requests for all possible IV sizes. Reviewed by: markj Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32110 --- tools/tools/crypto/cryptocheck.c | 236 ++++++++++++++++++++++++++------------- 1 file changed, 156 insertions(+), 80 deletions(-) diff --git a/tools/tools/crypto/cryptocheck.c b/tools/tools/crypto/cryptocheck.c index 502ea04cd661..63c6ce1f9d28 100644 --- a/tools/tools/crypto/cryptocheck.c +++ b/tools/tools/crypto/cryptocheck.c @@ -1,8 +1,12 @@ /*- * Copyright (c) 2017 Chelsio Communications, Inc. * All rights reserved. + * Copyright (c) 2021 The FreeBSD Foundation * Written by: John Baldwin * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -65,7 +69,8 @@ * operation once in software via OpenSSL and a second time via * OpenCrypto and compares the results. * - * cryptocheck [-vz] [-A aad length] [-a algorithm] [-d dev] [size ...] + * cryptocheck [-vz] [-A aad length] [-a algorithm] [-d dev] [-I IV length] + * [size ...] * * Options: * -v Verbose. @@ -153,6 +158,7 @@ static const struct alg { enum { T_HASH, T_HMAC, T_GMAC, T_DIGEST, T_CIPHER, T_ETA, T_AEAD } type; int key_len; int tag_len; + u_int iv_sizes[8]; const EVP_CIPHER *(*evp_cipher)(void); const EVP_MD *(*evp_md)(void); int pkey; @@ -208,34 +214,41 @@ static const struct alg { { .name = "chacha20", .cipher = CRYPTO_CHACHA20, .type = T_CIPHER, .evp_cipher = EVP_chacha20 }, { .name = "aes-gcm", .cipher = CRYPTO_AES_NIST_GCM_16, .type = T_AEAD, - .tag_len = AES_GMAC_HASH_LEN, .evp_cipher = EVP_aes_128_gcm }, + .tag_len = AES_GMAC_HASH_LEN, .iv_sizes = { AES_GCM_IV_LEN }, + .evp_cipher = EVP_aes_128_gcm }, { .name = "aes-gcm192", .cipher = CRYPTO_AES_NIST_GCM_16, .type = T_AEAD, .tag_len = AES_GMAC_HASH_LEN, - .evp_cipher = EVP_aes_192_gcm }, + .iv_sizes = { AES_GCM_IV_LEN }, .evp_cipher = EVP_aes_192_gcm }, { .name = "aes-gcm256", .cipher = CRYPTO_AES_NIST_GCM_16, .type = T_AEAD, .tag_len = AES_GMAC_HASH_LEN, - .evp_cipher = EVP_aes_256_gcm }, + .iv_sizes = { AES_GCM_IV_LEN }, .evp_cipher = EVP_aes_256_gcm }, { .name = "aes-ccm", .cipher = CRYPTO_AES_CCM_16, .type = T_AEAD, - .evp_cipher = EVP_aes_128_ccm, .tag_len = AES_CBC_MAC_HASH_LEN }, + .tag_len = AES_CBC_MAC_HASH_LEN, .iv_sizes = { 12, 7, 8, 9, 10, 11, 13 }, + .evp_cipher = EVP_aes_128_ccm }, { .name = "aes-ccm192", .cipher = CRYPTO_AES_CCM_16, .type = T_AEAD, - .evp_cipher = EVP_aes_192_ccm, .tag_len = AES_CBC_MAC_HASH_LEN }, + .tag_len = AES_CBC_MAC_HASH_LEN, .iv_sizes = { 12, 7, 8, 9, 10, 11, 13 }, + .evp_cipher = EVP_aes_192_ccm }, { .name = "aes-ccm256", .cipher = CRYPTO_AES_CCM_16, .type = T_AEAD, - .evp_cipher = EVP_aes_256_ccm, .tag_len = AES_CBC_MAC_HASH_LEN }, + .tag_len = AES_CBC_MAC_HASH_LEN, .iv_sizes = { 12, 7, 8, 9, 10, 11, 13 }, + .evp_cipher = EVP_aes_256_ccm }, { .name = "chacha20-poly1305", .cipher = CRYPTO_CHACHA20_POLY1305, .type = T_AEAD, .tag_len = POLY1305_HASH_LEN, + .iv_sizes = { CHACHA20_POLY1305_IV_LEN }, .evp_cipher = EVP_chacha20_poly1305 }, }; -static bool verbose; +static bool testall, verbose; static int requested_crid; static size_t aad_sizes[48], sizes[EALG_MAX_BLOCK_LEN * 2]; static u_int naad_sizes, nsizes; +static u_int iv_size; static void usage(void) { fprintf(stderr, - "usage: cryptocheck [-z] [-a algorithm] [-d dev] [size ...]\n"); + "usage: cryptocheck [-vz] [-A aad size] [-a algorithm]\n" + " [-d dev] [-I IV size] [size ...]\n"); exit(1); } @@ -1218,8 +1231,8 @@ out: static void openssl_aead_encrypt(const struct alg *alg, const EVP_CIPHER *cipher, - const char *key, const char *iv, const char *aad, size_t aad_len, - const char *input, char *output, size_t size, char *tag) + const char *key, const char *iv, size_t iv_len, const char *aad, + size_t aad_len, const char *input, char *output, size_t size, char *tag) { EVP_CIPHER_CTX *ctx; int outl, total; @@ -1228,7 +1241,13 @@ openssl_aead_encrypt(const struct alg *alg, const EVP_CIPHER *cipher, if (ctx == NULL) errx(1, "OpenSSL %s (%zu) ctx new failed: %s", alg->name, size, ERR_error_string(ERR_get_error(), NULL)); - if (EVP_EncryptInit_ex(ctx, cipher, NULL, (const u_char *)key, + if (EVP_EncryptInit_ex(ctx, cipher, NULL, NULL, NULL) != 1) + errx(1, "OpenSSL %s (%zu) ctx init failed: %s", alg->name, + size, ERR_error_string(ERR_get_error(), NULL)); + if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_IVLEN, iv_len, NULL) != 1) + errx(1, "OpenSSL %s (%zu) setting iv length failed: %s", alg->name, + size, ERR_error_string(ERR_get_error(), NULL)); + if (EVP_EncryptInit_ex(ctx, NULL, NULL, (const u_char *)key, (const u_char *)iv) != 1) errx(1, "OpenSSL %s (%zu) ctx init failed: %s", alg->name, size, ERR_error_string(ERR_get_error(), NULL)); @@ -1314,54 +1333,67 @@ openssl_ccm_encrypt(const struct alg *alg, const EVP_CIPHER *cipher, ctx = EVP_CIPHER_CTX_new(); if (ctx == NULL) - errx(1, "OpenSSL %s (%zu) ctx new failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s/%zu (%zu, %zu) ctx new failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); if (EVP_EncryptInit_ex(ctx, cipher, NULL, NULL, NULL) != 1) - errx(1, "OpenSSL %s (%zu) ctx init failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s/%zu (%zu, %zu) ctx init failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_IVLEN, iv_len, NULL) != 1) - errx(1, "OpenSSL %s (%zu) setting iv length failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, + "OpenSSL %s/%zu (%zu, %zu) setting iv length failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, AES_CBC_MAC_HASH_LEN, NULL) != 1) - errx(1, "OpenSSL %s (%zu) setting tag length failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, + "OpenSSL %s/%zu (%zu, %zu) setting tag length failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); if (EVP_EncryptInit_ex(ctx, NULL, NULL, (const u_char *)key, (const u_char *)iv) != 1) - errx(1, "OpenSSL %s (%zu) ctx init failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s/%zu (%zu, %zu) ctx init failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); if (EVP_EncryptUpdate(ctx, NULL, &outl, NULL, size) != 1) - errx(1, "OpenSSL %s (%zu) unable to set data length: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, + "OpenSSL %s/%zu (%zu, %zu) unable to set data length: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); if (aad != NULL) { if (EVP_EncryptUpdate(ctx, NULL, &outl, (const u_char *)aad, aad_len) != 1) - errx(1, "OpenSSL %s (%zu) aad update failed: %s", - alg->name, size, + errx(1, + "OpenSSL %s/%zu (%zu, %zu) aad update failed: %s", + alg->name, iv_len, aad_len, size, ERR_error_string(ERR_get_error(), NULL)); } if (EVP_EncryptUpdate(ctx, (u_char *)output, &outl, (const u_char *)input, size) != 1) - errx(1, "OpenSSL %s (%zu) encrypt update failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s/%zu (%zu, %zu) encrypt update failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); total = outl; if (EVP_EncryptFinal_ex(ctx, (u_char *)output + outl, &outl) != 1) - errx(1, "OpenSSL %s (%zu) encrypt final failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s/%zu (%zu, %zu) encrypt final failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); total += outl; if ((size_t)total != size) - errx(1, "OpenSSL %s (%zu) encrypt size mismatch: %d", alg->name, - size, total); + errx(1, "OpenSSL %s/%zu (%zu, %zu) encrypt size mismatch: %d", + alg->name, iv_len, aad_len, size, total); if (EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, AES_CBC_MAC_HASH_LEN, tag) != 1) - errx(1, "OpenSSL %s (%zu) get tag failed: %s", alg->name, - size, ERR_error_string(ERR_get_error(), NULL)); + errx(1, "OpenSSL %s/%zu (%zu, %zu) get tag failed: %s", + alg->name, iv_len, aad_len, size, + ERR_error_string(ERR_get_error(), NULL)); EVP_CIPHER_CTX_free(ctx); } static bool ocf_init_aead_session(const struct alg *alg, const char *key, size_t key_len, - struct ocf_session *ses) + size_t iv_len, struct ocf_session *ses) { struct session2_op sop; @@ -1369,6 +1401,7 @@ ocf_init_aead_session(const struct alg *alg, const char *key, size_t key_len, sop.keylen = key_len; sop.key = key; sop.cipher = alg->cipher; + sop.ivlen = iv_len; return (ocf_init_session(&sop, "AEAD", alg->name, ses)); } @@ -1398,14 +1431,43 @@ ocf_aead(const struct ocf_session *ses, const char *iv, size_t iv_len, #define AEAD_MAX_TAG_LEN \ MAX(MAX(AES_GMAC_HASH_LEN, AES_CBC_MAC_HASH_LEN), POLY1305_HASH_LEN) +static size_t +max_ccm_buffer_length(size_t iv_len) +{ + const u_int L = 15 - iv_len; + + switch (L) { + case 2: + return (0xffff); + case 3: + return (0xffffff); +#ifdef __LP64__ + case 4: + return (0xffffffff); + case 5: + return (0xffffffffff); + case 6: + return (0xffffffffffff); + case 7: + return (0xffffffffffffff); + default: + return (0xffffffffffffffff); +#else + default: + return (0xffffffff); +#endif + } +} + static void -run_aead_test(const struct alg *alg, size_t aad_len, size_t size) +run_aead_test(const struct alg *alg, size_t aad_len, size_t size, + size_t iv_len) { struct ocf_session ses; const EVP_CIPHER *cipher; char *aad, *buffer, *cleartext, *ciphertext; char *iv, *key; - u_int iv_len, key_len; + u_int key_len; int error; char control_tag[AEAD_MAX_TAG_LEN], test_tag[AEAD_MAX_TAG_LEN]; @@ -1413,31 +1475,25 @@ run_aead_test(const struct alg *alg, size_t aad_len, size_t size) if (size % EVP_CIPHER_block_size(cipher) != 0) { if (verbose) printf( - "%s (%zu, %zu): invalid buffer size (block size %d)\n", - alg->name, aad_len, size, + "%s/%zu (%zu, %zu): invalid buffer size (block size %d)\n", + alg->name, iv_len, aad_len, size, EVP_CIPHER_block_size(cipher)); return; } - memset(control_tag, 0x3c, sizeof(control_tag)); - memset(test_tag, 0x3c, sizeof(test_tag)); - - key_len = EVP_CIPHER_key_length(cipher); - iv_len = EVP_CIPHER_iv_length(cipher); - - /* - * AES-CCM can have varying IV lengths; however, for the moment - * we only support AES_CCM_IV_LEN (12). So if the sizes are - * different, we'll fail. - */ if (EVP_CIPHER_mode(cipher) == EVP_CIPH_CCM_MODE && - iv_len != AES_CCM_IV_LEN) { + size > max_ccm_buffer_length(iv_len)) { if (verbose) - printf("OpenSSL CCM IV length (%d) != AES_CCM_IV_LEN", - iv_len); + printf("%s/%zu (%zu, %zu): invalid buffer size\n", + alg->name, iv_len, aad_len, size); return; } + memset(control_tag, 0x3c, sizeof(control_tag)); + memset(test_tag, 0x3c, sizeof(test_tag)); + + key_len = EVP_CIPHER_key_length(cipher); + key = alloc_buffer(key_len); iv = generate_iv(iv_len, alg); cleartext = alloc_buffer(size); @@ -1453,23 +1509,23 @@ run_aead_test(const struct alg *alg, size_t aad_len, size_t size) openssl_ccm_encrypt(alg, cipher, key, iv, iv_len, aad, aad_len, cleartext, ciphertext, size, control_tag); else - openssl_aead_encrypt(alg, cipher, key, iv, aad, aad_len, - cleartext, ciphertext, size, control_tag); + openssl_aead_encrypt(alg, cipher, key, iv, iv_len, aad, + aad_len, cleartext, ciphertext, size, control_tag); - if (!ocf_init_aead_session(alg, key, key_len, &ses)) + if (!ocf_init_aead_session(alg, key, key_len, iv_len, &ses)) goto out; /* OCF encrypt */ error = ocf_aead(&ses, iv, iv_len, aad, aad_len, cleartext, buffer, size, test_tag, COP_ENCRYPT); if (error != 0) { - warnc(error, "cryptodev %s (%zu, %zu) failed for device %s", - alg->name, aad_len, size, crfind(ses.crid)); + warnc(error, "cryptodev %s/%zu (%zu, %zu) failed for device %s", + alg->name, iv_len, aad_len, size, crfind(ses.crid)); goto out; } if (memcmp(ciphertext, buffer, size) != 0) { - printf("%s (%zu, %zu) encryption mismatch:\n", alg->name, - aad_len, size); + printf("%s/%zu (%zu, %zu) encryption mismatch:\n", alg->name, + iv_len, aad_len, size); printf("control:\n"); hexdump(ciphertext, size, NULL, 0); printf("test (cryptodev device %s):\n", crfind(ses.crid)); @@ -1477,8 +1533,8 @@ run_aead_test(const struct alg *alg, size_t aad_len, size_t size) goto out; } if (memcmp(control_tag, test_tag, sizeof(control_tag)) != 0) { - printf("%s (%zu, %zu) enc tag mismatch:\n", alg->name, aad_len, - size); + printf("%s/%zu (%zu, %zu) enc tag mismatch:\n", alg->name, + iv_len, aad_len, size); printf("control:\n"); hexdump(control_tag, sizeof(control_tag), NULL, 0); printf("test (cryptodev device %s):\n", crfind(ses.crid)); @@ -1490,13 +1546,13 @@ run_aead_test(const struct alg *alg, size_t aad_len, size_t size) error = ocf_aead(&ses, iv, iv_len, aad, aad_len, ciphertext, buffer, size, control_tag, COP_DECRYPT); if (error != 0) { - warnc(error, "cryptodev %s (%zu, %zu) failed for device %s", - alg->name, aad_len, size, crfind(ses.crid)); + warnc(error, "cryptodev %s/%zu (%zu, %zu) failed for device %s", + alg->name, iv_len, aad_len, size, crfind(ses.crid)); goto out; } if (memcmp(cleartext, buffer, size) != 0) { - printf("%s (%zu, %zu) decryption mismatch:\n", alg->name, - aad_len, size); + printf("%s/%zu (%zu, %zu) decryption mismatch:\n", alg->name, + iv_len, aad_len, size); printf("control:\n"); hexdump(cleartext, size, NULL, 0); printf("test (cryptodev device %s):\n", crfind(ses.crid)); @@ -1511,18 +1567,18 @@ run_aead_test(const struct alg *alg, size_t aad_len, size_t size) if (error != EBADMSG) { if (error != 0) warnc(error, - "cryptodev %s (%zu, %zu) corrupt tag failed for device %s", - alg->name, aad_len, size, crfind(ses.crid)); + "cryptodev %s/%zu (%zu, %zu) corrupt tag failed for device %s", + alg->name, iv_len, aad_len, size, crfind(ses.crid)); else warnx( - "cryptodev %s (%zu, %zu) corrupt tag didn't fail for device %s", - alg->name, aad_len, size, crfind(ses.crid)); + "cryptodev %s/%zu (%zu, %zu) corrupt tag didn't fail for device %s", + alg->name, iv_len, aad_len, size, crfind(ses.crid)); goto out; } if (verbose) - printf("%s (%zu, %zu) matched (cryptodev device %s)\n", - alg->name, aad_len, size, crfind(ses.crid)); + printf("%s/%zu (%zu, %zu) matched (cryptodev device %s)\n", + alg->name, iv_len, aad_len, size, crfind(ses.crid)); out: ocf_destroy_session(&ses); @@ -1535,7 +1591,7 @@ out: } static void -run_test(const struct alg *alg, size_t aad_len, size_t size) +run_test(const struct alg *alg, size_t aad_len, size_t size, size_t iv_len) { switch (alg->type) { @@ -1558,7 +1614,7 @@ run_test(const struct alg *alg, size_t aad_len, size_t size) run_eta_test(alg, aad_len, size); break; case T_AEAD: - run_aead_test(alg, aad_len, size); + run_aead_test(alg, aad_len, size, iv_len); break; } } @@ -1566,18 +1622,33 @@ run_test(const struct alg *alg, size_t aad_len, size_t size) static void run_test_sizes(const struct alg *alg) { - u_int i, j; + u_int i, j, k; switch (alg->type) { default: for (i = 0; i < nsizes; i++) - run_test(alg, 0, sizes[i]); + run_test(alg, 0, sizes[i], 0); break; case T_ETA: - case T_AEAD: for (i = 0; i < naad_sizes; i++) for (j = 0; j < nsizes; j++) - run_test(alg, aad_sizes[i], sizes[j]); + run_test(alg, aad_sizes[i], sizes[j], 0); + break; + case T_AEAD: + for (i = 0; i < naad_sizes; i++) { + for (j = 0; j < nsizes; j++) { + if (iv_size != 0) + run_test(alg, aad_sizes[i], sizes[j], + iv_size); + else if (testall) { + for (k = 0; alg->iv_sizes[k] != 0; k++) + run_test(alg, aad_sizes[i], + sizes[j], alg->iv_sizes[k]); + } else + run_test(alg, aad_sizes[i], sizes[j], + alg->iv_sizes[0]); + } + } break; } } @@ -1654,14 +1725,14 @@ main(int ac, char **av) char *cp; size_t base_size; u_int i; - bool testall; int ch; algname = NULL; requested_crid = CRYPTO_FLAG_HARDWARE; testall = false; verbose = false; - while ((ch = getopt(ac, av, "A:a:d:vz")) != -1) + iv_size = 0; + while ((ch = getopt(ac, av, "A:a:d:I:vz")) != -1) switch (ch) { case 'A': if (naad_sizes >= nitems(aad_sizes)) { @@ -1679,6 +1750,11 @@ main(int ac, char **av) case 'd': requested_crid = crlookup(optarg); break; + case 'I': + iv_size = strtol(optarg, &cp, 0); + if (*cp != '\0') + errx(1, "Bad IV size %s", optarg); + break; case 'v': verbose = true; break; From nobody Wed Oct 6 21:10:30 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9143D12D3DF8; Wed, 6 Oct 2021 21:10: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 4HPnD73mnSz3HdW; Wed, 6 Oct 2021 21:10: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 02DF426FD3; Wed, 6 Oct 2021 21:10: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 196LAU20059017; Wed, 6 Oct 2021 21:10:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAU9P059016; Wed, 6 Oct 2021 21:10:30 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:30 GMT Message-Id: <202110062110.196LAU9P059016@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: ae18720d2792 - main - crypto: Support multiple nonce lengths for AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: ae18720d2792287c9ec658404f1a3173014d4979 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ae18720d2792287c9ec658404f1a3173014d4979 commit ae18720d2792287c9ec658404f1a3173014d4979 Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 crypto: Support multiple nonce lengths for AES-CCM. Permit nonces of lengths 7 through 13 in the OCF framework and the cryptosoft driver. A helper function (ccm_max_payload_length) can be used in OCF drivers to reject CCM requests which are too large for the specified nonce length. Reviewed by: sef Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32111 --- share/man/man7/crypto.7 | 18 +++++++++----- sys/opencrypto/crypto.c | 56 ++++++++++++++++++++++++++++++++++++------ sys/opencrypto/cryptodev.h | 29 ++++++++++++++++++++++ sys/opencrypto/cryptosoft.c | 17 +++++++------ sys/opencrypto/xform_aes_icm.c | 7 +++--- 5 files changed, 102 insertions(+), 25 deletions(-) diff --git a/share/man/man7/crypto.7 b/share/man/man7/crypto.7 index 6e5bd83621aa..d75daa62adcb 100644 --- a/share/man/man7/crypto.7 +++ b/share/man/man7/crypto.7 @@ -1,9 +1,13 @@ -.\" Copyright (c) 2014 The FreeBSD Foundation +.\" Copyright (c) 2014-2021 The FreeBSD Foundation .\" All rights reserved. .\" -.\" This documentation was written by John-Mark Gurney under -.\" the sponsorship of the FreeBSD Foundation and +.\" Portions of this documentation were written by John-Mark Gurney +.\" under the sponsorship of the FreeBSD Foundation and .\" Rubicon Communications, LLC (Netgate). +.\" +.\" Portions of this documentation were written by Ararat River +.\" Consulting, LLC under sponsorship of the FreeBSD Foundation. +.\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: @@ -27,7 +31,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 3, 2021 +.Dd October 6, 2021 .Dt CRYPTO 7 .Os .Sh NAME @@ -153,13 +157,15 @@ This nonce must be provided in via the .Dv CRYPTO_F_IV_SEPARATE flag. +Some AEAD algorithms support multiple nonce sizes. +The first size listed is the default nonce size. .Pp The following AEAD algorithms are supported: -.Bl -column "CRYPTO_AES_NIST_GCM_16" "Nonce" "16, 24, 32" "Tag" +.Bl -column "CRYPTO_AES_NIST_GCM_16" "12, 7-13" "16, 24, 32" "Tag" .It Sy Name Ta Sy Nonce Ta Sy Key Sizes Ta Sy Tag Ta Sy Description .It Dv CRYPTO_AES_NIST_GCM_16 Ta 12 Ta 16, 24, 32 Ta 16 Ta AES Galois/Counter Mode -.It Dv CRYPTO_AES_CCM_16 Ta 12 Ta 16, 24, 32 Ta 16 Ta +.It Dv CRYPTO_AES_CCM_16 Ta 12, 7-13 Ta 16, 24, 32 Ta 16 Ta AES Counter with CBC-MAC .It Dv CRYPTO_CHACHA20_POLY1305 Ta 12 Ta 32 Ta 16 Ta ChaCha20-Poly1305 diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c index ef8422d5f32c..3a71e53129be 100644 --- a/sys/opencrypto/crypto.c +++ b/sys/opencrypto/crypto.c @@ -1,5 +1,9 @@ /*- * Copyright (c) 2002-2006 Sam Leffler. All rights reserved. + * Copyright (c) 2021 The FreeBSD Foundation + * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -713,6 +717,24 @@ alg_is_aead(int alg) return (alg_type(alg) == ALG_AEAD); } +static bool +ccm_tag_length_valid(int len) +{ + /* RFC 3610 */ + switch (len) { + case 4: + case 6: + case 8: + case 10: + case 12: + case 14: + case 16: + return (true); + default: + return (false); + } +} + #define SUPPORTED_SES (CSP_F_SEPARATE_OUTPUT | CSP_F_SEPARATE_AAD | CSP_F_ESN) /* Various sanity checks on crypto session parameters. */ @@ -770,8 +792,21 @@ check_csp(const struct crypto_session_params *csp) return (false); /* IV is optional for digests (e.g. GMAC). */ - if (csp->csp_ivlen >= EALG_MAX_BLOCK_LEN) - return (false); + switch (csp->csp_auth_alg) { + case CRYPTO_AES_CCM_CBC_MAC: + if (csp->csp_ivlen < 7 || csp->csp_ivlen > 13) + return (false); + break; + case CRYPTO_AES_NIST_GMAC: + if (csp->csp_ivlen != AES_GCM_IV_LEN) + return (false); + break; + default: + if (csp->csp_ivlen != 0) + return (false); + break; + } + if (!alg_is_digest(csp->csp_auth_alg)) return (false); @@ -790,6 +825,10 @@ check_csp(const struct crypto_session_params *csp) axf = crypto_auth_hash(csp); if (axf == NULL || csp->csp_auth_mlen > axf->hashsize) return (false); + + if (csp->csp_auth_alg == CRYPTO_AES_CCM_CBC_MAC && + !ccm_tag_length_valid(csp->csp_auth_mlen)) + return (false); } break; case CSP_MODE_AEAD: @@ -803,13 +842,16 @@ check_csp(const struct crypto_session_params *csp) if (csp->csp_auth_alg != 0 || csp->csp_auth_klen != 0) return (false); - /* - * XXX: Would be nice to have a better way to get this - * value. - */ switch (csp->csp_cipher_alg) { - case CRYPTO_AES_NIST_GCM_16: case CRYPTO_AES_CCM_16: + if (csp->csp_auth_mlen != 0 && + !ccm_tag_length_valid(csp->csp_auth_mlen)) + return (false); + + if (csp->csp_ivlen < 7 || csp->csp_ivlen > 13) + return (false); + break; + case CRYPTO_AES_NIST_GCM_16: case CRYPTO_CHACHA20_POLY1305: if (csp->csp_auth_mlen > 16) return (false); diff --git a/sys/opencrypto/cryptodev.h b/sys/opencrypto/cryptodev.h index b3c79a48f632..6611a8925020 100644 --- a/sys/opencrypto/cryptodev.h +++ b/sys/opencrypto/cryptodev.h @@ -686,5 +686,34 @@ crypto_read_iv(struct cryptop *crp, void *iv) crypto_copydata(crp, crp->crp_iv_start, csp->csp_ivlen, iv); } +static __inline size_t +ccm_max_payload_length(const struct crypto_session_params *csp) +{ + /* RFC 3160 */ + const u_int L = 15 - csp->csp_ivlen; + + switch (L) { + case 2: + return (0xffff); + case 3: + return (0xffffff); +#ifdef __LP64__ + case 4: + return (0xffffffff); + case 5: + return (0xffffffffff); + case 6: + return (0xffffffffffff); + case 7: + return (0xffffffffffffff); + default: + return (0xffffffffffffffff); +#else + default: + return (0xffffffff); +#endif + } +} + #endif /* _KERNEL */ #endif /* _CRYPTO_CRYPTO_H_ */ diff --git a/sys/opencrypto/cryptosoft.c b/sys/opencrypto/cryptosoft.c index 19092e56b004..ae71f0d6c096 100644 --- a/sys/opencrypto/cryptosoft.c +++ b/sys/opencrypto/cryptosoft.c @@ -642,17 +642,19 @@ swcr_ccm_cbc_mac(struct swcr_session *ses, struct cryptop *crp) u_char tag[AES_CBC_MAC_HASH_LEN]; u_char iv[AES_BLOCK_LEN]; union authctx ctx; + const struct crypto_session_params *csp; struct swcr_auth *swa; const struct auth_hash *axf; int error, ivlen; + csp = crypto_get_params(crp->crp_session); swa = &ses->swcr_auth; axf = swa->sw_axf; bcopy(swa->sw_ictx, &ctx, axf->ctxsize); /* Initialize the IV */ - ivlen = AES_CCM_IV_LEN; + ivlen = csp->csp_ivlen; crypto_read_iv(crp, iv); /* @@ -694,6 +696,7 @@ swcr_ccm_cbc_mac(struct swcr_session *ses, struct cryptop *crp) static int swcr_ccm(struct swcr_session *ses, struct cryptop *crp) { + const struct crypto_session_params *csp; uint32_t blkbuf[howmany(AES_BLOCK_LEN, sizeof(uint32_t))]; u_char *blk = (u_char *)blkbuf; u_char tag[AES_CBC_MAC_HASH_LEN]; @@ -708,6 +711,7 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) size_t len; int blksz, error, ivlen, r, resid; + csp = crypto_get_params(crp->crp_session); swa = &ses->swcr_auth; axf = swa->sw_axf; @@ -721,10 +725,13 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) KASSERT(axf->blocksize == exf->native_blocksize, ("%s: blocksize mismatch", __func__)); + if (crp->crp_payload_length > ccm_max_payload_length(csp)) + return (EMSGSIZE); + if ((crp->crp_flags & CRYPTO_F_IV_SEPARATE) == 0) return (EINVAL); - ivlen = AES_CCM_IV_LEN; + ivlen = csp->csp_ivlen; /* * AES CCM-CBC-MAC needs to know the length of both the auth @@ -1130,7 +1137,6 @@ swcr_setup_cipher(struct swcr_session *ses, swe = &ses->swcr_encdec; txf = crypto_cipher(csp); - MPASS(txf->ivsize == csp->csp_ivlen); if (txf->ctxsize != 0) { swe->sw_kschedule = malloc(txf->ctxsize, M_CRYPTO_DATA, M_NOWAIT); @@ -1282,9 +1288,6 @@ swcr_setup_ccm(struct swcr_session *ses, struct swcr_auth *swa; const struct auth_hash *axf; - if (csp->csp_ivlen != AES_CCM_IV_LEN) - return (EINVAL); - /* First, setup the auth side. */ swa = &ses->swcr_auth; switch (csp->csp_cipher_klen * 8) { @@ -1392,8 +1395,6 @@ swcr_auth_supported(const struct crypto_session_params *csp) } if (csp->csp_auth_key == NULL) return (false); - if (csp->csp_ivlen != AES_CCM_IV_LEN) - return (false); break; } return (true); diff --git a/sys/opencrypto/xform_aes_icm.c b/sys/opencrypto/xform_aes_icm.c index 860dceda5232..09880ee426b8 100644 --- a/sys/opencrypto/xform_aes_icm.c +++ b/sys/opencrypto/xform_aes_icm.c @@ -144,15 +144,14 @@ aes_ccm_reinit(void *key, const uint8_t *iv, size_t ivlen) { struct aes_icm_ctx *ctx; - KASSERT(ivlen == AES_CCM_IV_LEN, + KASSERT(ivlen >= 7 && ivlen <= 13, ("%s: invalid IV length", __func__)); ctx = key; /* CCM has flags, then the IV, then the counter, which starts at 1 */ bzero(ctx->ac_block, sizeof(ctx->ac_block)); - /* 3 bytes for length field; this gives a nonce of 12 bytes */ - ctx->ac_block[0] = (15 - AES_CCM_IV_LEN) - 1; - bcopy(iv, ctx->ac_block+1, AES_CCM_IV_LEN); + ctx->ac_block[0] = (15 - ivlen) - 1; + bcopy(iv, ctx->ac_block + 1, ivlen); ctx->ac_block[AESICM_BLOCKSIZE - 1] = 1; } From nobody Wed Oct 6 21:10:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A16DB12D3F59; Wed, 6 Oct 2021 21: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 4HPnD90g4dz3HbN; Wed, 6 Oct 2021 21:10: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 25BC5271EC; Wed, 6 Oct 2021 21:10: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 196LAW4Q059041; Wed, 6 Oct 2021 21:10:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAWkb059040; Wed, 6 Oct 2021 21:10:32 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:32 GMT Message-Id: <202110062110.196LAWkb059040@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: 8e6af6adfc2c - main - aesni: Support multiple nonce lengths for AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 8e6af6adfc2cc3d0ea89c20eaa5914e453c48b49 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=8e6af6adfc2cc3d0ea89c20eaa5914e453c48b49 commit 8e6af6adfc2cc3d0ea89c20eaa5914e453c48b49 Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 aesni: Support multiple nonce lengths for AES-CCM. Reviewed by: sef Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32112 --- sys/crypto/aesni/aesni.c | 13 +++++++++---- sys/crypto/aesni/aesni_ccm.c | 32 ++++++++------------------------ 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/sys/crypto/aesni/aesni.c b/sys/crypto/aesni/aesni.c index 4debbae12c2b..67dcef123429 100644 --- a/sys/crypto/aesni/aesni.c +++ b/sys/crypto/aesni/aesni.c @@ -1,7 +1,7 @@ /*- * Copyright (c) 2005-2008 Pawel Jakub Dawidek * Copyright (c) 2010 Konstantin Belousov - * Copyright (c) 2014 The FreeBSD Foundation + * Copyright (c) 2014-2021 The FreeBSD Foundation * Copyright (c) 2017 Conrad Meyer * All rights reserved. * @@ -9,6 +9,9 @@ * under sponsorship of the FreeBSD Foundation and * Rubicon Communications, LLC (Netgate). * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -319,8 +322,7 @@ aesni_probesession(device_t dev, const struct crypto_session_params *csp) if (csp->csp_auth_mlen != 0 && csp->csp_auth_mlen != AES_CBC_MAC_HASH_LEN) return (EINVAL); - if (csp->csp_ivlen != AES_CCM_IV_LEN || - !sc->has_aes) + if (!sc->has_aes) return (EINVAL); break; default: @@ -639,9 +641,12 @@ aesni_cipher_process(struct aesni_session *ses, struct cryptop *crp) csp = crypto_get_params(crp->crp_session); switch (csp->csp_cipher_alg) { + case CRYPTO_AES_CCM_16: + if (crp->crp_payload_length > ccm_max_payload_length(csp)) + return (EMSGSIZE); + /* FALLTHROUGH */ case CRYPTO_AES_ICM: case CRYPTO_AES_NIST_GCM_16: - case CRYPTO_AES_CCM_16: if ((crp->crp_flags & CRYPTO_F_IV_SEPARATE) == 0) return (EINVAL); break; diff --git a/sys/crypto/aesni/aesni_ccm.c b/sys/crypto/aesni/aesni_ccm.c index fc01e92c697f..9e2fa317b2ed 100644 --- a/sys/crypto/aesni/aesni_ccm.c +++ b/sys/crypto/aesni/aesni_ccm.c @@ -1,11 +1,15 @@ /*- - * Copyright (c) 2014 The FreeBSD Foundation + * Copyright (c) 2014-2021 The FreeBSD Foundation * Copyright (c) 2018 iXsystems, Inc * All rights reserved. * - * This software was developed by John-Mark Gurney under - * the sponsorship of the FreeBSD Foundation and + * Portions of this software were developed by John-Mark Gurney + * under the sponsorship of the FreeBSD Foundation and * Rubicon Communications, LLC (Netgate). + * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -185,12 +189,7 @@ cbc_mac_start(const unsigned char *auth_data, size_t auth_len, * however, they're always truncated from 16 bytes, and the tag * length isn't passed in. (This could be fixed by changing the * code in aesni.c:aesni_cipher_crypt().) - * Similarly, although the nonce length is passed in, the - * OpenCrypto API that calls us doesn't have a way to set the nonce - * other than by having different crypto algorithm types. As a result, - * this is currently always called with nlen=12; this means that we - * also have a maximum message length of 16 megabytes. And similarly, - * since abytes is limited to a 32 bit value here, the AAD is + * Since abytes is limited to a 32 bit value here, the AAD is * limited to 4 gigabytes or less. */ void @@ -222,14 +221,6 @@ AES_CCM_encrypt(const unsigned char *in, unsigned char *out, */ L = sizeof(__m128i) - 1 - nlen; - /* - * Now, this shouldn't happen, but let's make sure that - * the data length isn't too big. - */ - KASSERT(nbytes <= ((1 << (8 * L)) - 1), - ("%s: nbytes is %u, but length field is %d bytes", - __FUNCTION__, nbytes, L)); - /* * Clear out the blocks */ @@ -399,13 +390,6 @@ AES_CCM_decrypt(const unsigned char *in, unsigned char *out, */ L = sizeof(__m128i) - 1 - nlen; - /* - * Now, this shouldn't happen, but let's make sure that - * the data length isn't too big. - */ - if (nbytes > ((1 << (8 * L)) - 1)) - panic("%s: nbytes is %u, but length field is %d bytes", - __FUNCTION__, nbytes, L); /* * Clear out the blocks */ From nobody Wed Oct 6 21:10:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 12C4412D3BC4; Wed, 6 Oct 2021 21:10: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 4HPnDC10sdz3Hds; Wed, 6 Oct 2021 21: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 5424C271ED; Wed, 6 Oct 2021 21:10: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 196LAX7d059065; Wed, 6 Oct 2021 21:10:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAXcO059064; Wed, 6 Oct 2021 21:10:33 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:33 GMT Message-Id: <202110062110.196LAXcO059064@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: d718c2d3c805 - main - aesni: Handle requests with an empty payload. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: d718c2d3c805001db0b0ae0cc0c8a811b8a90a95 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d718c2d3c805001db0b0ae0cc0c8a811b8a90a95 commit d718c2d3c805001db0b0ae0cc0c8a811b8a90a95 Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 aesni: Handle requests with an empty payload. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32113 --- sys/crypto/aesni/aesni.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/sys/crypto/aesni/aesni.c b/sys/crypto/aesni/aesni.c index 67dcef123429..7d4dbd2c1604 100644 --- a/sys/crypto/aesni/aesni.c +++ b/sys/crypto/aesni/aesni.c @@ -700,28 +700,36 @@ aesni_cipher_crypt(struct aesni_session *ses, struct cryptop *crp, int error; bool encflag, allocated, authallocated, outallocated, outcopy; - buf = aesni_cipher_alloc(crp, crp->crp_payload_start, - crp->crp_payload_length, &allocated); - if (buf == NULL) - return (ENOMEM); + if (crp->crp_payload_length == 0) { + buf = NULL; + allocated = false; + } else { + buf = aesni_cipher_alloc(crp, crp->crp_payload_start, + crp->crp_payload_length, &allocated); + if (buf == NULL) + return (ENOMEM); + } outallocated = false; authallocated = false; authbuf = NULL; if (csp->csp_cipher_alg == CRYPTO_AES_NIST_GCM_16 || csp->csp_cipher_alg == CRYPTO_AES_CCM_16) { - if (crp->crp_aad != NULL) + if (crp->crp_aad_length == 0) { + authbuf = NULL; + } else if (crp->crp_aad != NULL) { authbuf = crp->crp_aad; - else + } else { authbuf = aesni_cipher_alloc(crp, crp->crp_aad_start, crp->crp_aad_length, &authallocated); - if (authbuf == NULL) { - error = ENOMEM; - goto out; + if (authbuf == NULL) { + error = ENOMEM; + goto out; + } } } - if (CRYPTO_HAS_OUTPUT_BUFFER(crp)) { + if (CRYPTO_HAS_OUTPUT_BUFFER(crp) && crp->crp_payload_length > 0) { outbuf = crypto_buffer_contiguous_subsegment(&crp->crp_obuf, crp->crp_payload_output_start, crp->crp_payload_length); if (outbuf == NULL) { From nobody Wed Oct 6 21:10:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0551612D40BD; Wed, 6 Oct 2021 21:10: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 4HPnDD08JWz3HbX; Wed, 6 Oct 2021 21:10: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 7BBC626BD6; Wed, 6 Oct 2021 21: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 196LAYr1059096; Wed, 6 Oct 2021 21: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 196LAY2c059095; Wed, 6 Oct 2021 21:10:34 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:34 GMT Message-Id: <202110062110.196LAY2c059095@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: c09c379c7aa7 - main - aesni: Permit AES-CCM requests with neither payload nor AAD. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: c09c379c7aa7337680ff3cb73691ce12d627128b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=c09c379c7aa7337680ff3cb73691ce12d627128b commit c09c379c7aa7337680ff3cb73691ce12d627128b Author: John Baldwin AuthorDate: 2021-10-06 21:08:47 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:47 +0000 aesni: Permit AES-CCM requests with neither payload nor AAD. Reviewed by: sef Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32114 --- sys/crypto/aesni/aesni_ccm.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sys/crypto/aesni/aesni_ccm.c b/sys/crypto/aesni/aesni_ccm.c index 9e2fa317b2ed..34b61a633907 100644 --- a/sys/crypto/aesni/aesni_ccm.c +++ b/sys/crypto/aesni/aesni_ccm.c @@ -205,9 +205,6 @@ AES_CCM_encrypt(const unsigned char *in, unsigned char *out, uint8_t *byte_ptr; __m128i s0, rolling_mac, s_x, staging_block; - if (nbytes == 0 && abytes == 0) - return; - /* NIST 800-38c section A.1 says n is [7, 13]. */ if (nlen < 7 || nlen > 13) panic("%s: bad nonce length %d", __FUNCTION__, nlen); @@ -377,8 +374,6 @@ AES_CCM_decrypt(const unsigned char *in, unsigned char *out, __m128i s0, rolling_mac, staging_block; uint8_t *byte_ptr; - if (nbytes == 0 && abytes == 0) - return (1); // No message means no decryption! if (nlen < 0 || nlen > 15) panic("%s: bad nonce length %d", __FUNCTION__, nlen); From nobody Wed Oct 6 21:10:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E1CB412D42DB; Wed, 6 Oct 2021 21:10:41 +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 4HPnDJ3n88z3HYC; Wed, 6 Oct 2021 21:10: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 9D6FD26F65; Wed, 6 Oct 2021 21:10: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 196LAahl059701; Wed, 6 Oct 2021 21:10:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAa37059688; Wed, 6 Oct 2021 21:10:36 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:36 GMT Message-Id: <202110062110.196LAa37059688@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: 3e6a97b3a7bc - main - ccr: Support multiple nonce lengths for AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 3e6a97b3a7bc80b1c12dd7b5208bfe99019c42b4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=3e6a97b3a7bc80b1c12dd7b5208bfe99019c42b4 commit 3e6a97b3a7bc80b1c12dd7b5208bfe99019c42b4 Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 ccr: Support multiple nonce lengths for AES-CCM. Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32116 --- sys/dev/cxgbe/crypto/t4_crypto.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c index 30d168b60777..ca6cd332fa24 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.c +++ b/sys/dev/cxgbe/crypto/t4_crypto.c @@ -1528,17 +1528,18 @@ static void generate_ccm_b0(struct cryptop *crp, u_int hash_size_in_response, const char *iv, char *b0) { - u_int i, payload_len; + u_int i, payload_len, L; /* NB: L is already set in the first byte of the IV. */ memcpy(b0, iv, CCM_B0_SIZE); + L = iv[0] + 1; /* Set length of hash in bits 3 - 5. */ b0[0] |= (((hash_size_in_response - 2) / 2) << 3); /* Store the payload length as a big-endian value. */ payload_len = crp->crp_payload_length; - for (i = 0; i < iv[0]; i++) { + for (i = 0; i < L; i++) { b0[CCM_CBC_BLOCK_LEN - 1 - i] = payload_len; payload_len >>= 8; } @@ -1559,6 +1560,7 @@ static int ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) { char iv[CHCR_MAX_CRYPTO_IV_LEN]; + const struct crypto_session_params *csp; struct ulptx_idata *idata; struct chcr_wr *crwr; struct wrqe *wr; @@ -1571,6 +1573,8 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) int sgl_nsegs, sgl_len; int error; + csp = crypto_get_params(crp->crp_session); + if (s->blkcipher.key_len == 0) return (EINVAL); @@ -1581,6 +1585,10 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) if (crp->crp_payload_length == 0) return (EMSGSIZE); + /* The length has to fit within the length field in block 0. */ + if (crp->crp_payload_length > ccm_max_payload_length(csp)) + return (EMSGSIZE); + /* * CCM always includes block 0 in the AAD before AAD from the * request. @@ -1598,9 +1606,8 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) return (EINVAL); /* - * Always assume a 12 byte input nonce for now since that is - * what OCF always generates. The full IV in the work request - * is 16 bytes. + * The IV in the work request is 16 bytes and not just the + * nonce. */ iv_len = AES_BLOCK_LEN; @@ -1745,7 +1752,7 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) * the full IV with the counter set to 0. */ memset(iv, 0, iv_len); - iv[0] = (15 - AES_CCM_IV_LEN) - 1; + iv[0] = (15 - csp->csp_ivlen) - 1; crypto_read_iv(crp, iv + 1); ccr_populate_wreq(sc, s, crwr, kctx_len, wr_len, imm_len, sgl_len, 0, @@ -1868,6 +1875,7 @@ ccr_ccm_done(struct ccr_softc *sc, struct ccr_session *s, static void ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) { + const struct crypto_session_params *csp; const struct auth_hash *axf; const struct enc_xform *exf; union authctx *auth_ctx; @@ -1879,6 +1887,12 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) auth_ctx = NULL; kschedule = NULL; + csp = crypto_get_params(crp->crp_session); + if (crp->crp_payload_length > ccm_max_payload_length(csp)) { + error = EMSGSIZE; + goto out; + } + /* Initialize the MAC. */ switch (s->blkcipher.key_len) { case 16: @@ -1921,7 +1935,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) auth_ctx->aes_cbc_mac_ctx.authDataLength = crp->crp_aad_length; auth_ctx->aes_cbc_mac_ctx.cryptDataLength = crp->crp_payload_length; - axf->Reinit(auth_ctx, crp->crp_iv, AES_CCM_IV_LEN); + axf->Reinit(auth_ctx, crp->crp_iv, csp->csp_ivlen); /* MAC the AAD. */ if (crp->crp_aad != NULL) @@ -1933,7 +1947,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) if (error) goto out; - exf->reinit(kschedule, crp->crp_iv, AES_CCM_IV_LEN); + exf->reinit(kschedule, crp->crp_iv, csp->csp_ivlen); /* Do encryption/decryption with MAC */ for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { @@ -1968,7 +1982,7 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) error = 0; /* Tag matches, decrypt data. */ - exf->reinit(kschedule, crp->crp_iv, AES_CCM_IV_LEN); + exf->reinit(kschedule, crp->crp_iv, csp->csp_ivlen); for (i = 0; i < crp->crp_payload_length; i += sizeof(block)) { len = imin(crp->crp_payload_length - i, @@ -2445,8 +2459,6 @@ ccr_probesession(device_t dev, const struct crypto_session_params *csp) return (EINVAL); break; case CRYPTO_AES_CCM_16: - if (csp->csp_ivlen != AES_CCM_IV_LEN) - return (EINVAL); if (csp->csp_auth_mlen < 0 || csp->csp_auth_mlen > AES_CBC_MAC_HASH_LEN) return (EINVAL); From nobody Wed Oct 6 21:10:35 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E2E8712D42DC; Wed, 6 Oct 2021 21:10:41 +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 4HPnDH3GBBz3HW7; Wed, 6 Oct 2021 21:10: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 81AC226BD7; Wed, 6 Oct 2021 21:10: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 196LAZ7w059120; Wed, 6 Oct 2021 21:10:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAZWT059119; Wed, 6 Oct 2021 21:10:35 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:35 GMT Message-Id: <202110062110.196LAZWT059119@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: 655eb762c310 - main - aesni: Support AES-CCM requests with a truncated tag. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 655eb762c31044a791e8c8c6355515e7c89c07ef Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=655eb762c31044a791e8c8c6355515e7c89c07ef commit 655eb762c31044a791e8c8c6355515e7c89c07ef Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 aesni: Support AES-CCM requests with a truncated tag. Reviewed by: sef Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32115 --- sys/crypto/aesni/aesni.c | 18 +++++++++++------- sys/crypto/aesni/aesni.h | 8 ++++---- sys/crypto/aesni/aesni_ccm.c | 10 ++-------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/sys/crypto/aesni/aesni.c b/sys/crypto/aesni/aesni.c index 7d4dbd2c1604..de797abd1af5 100644 --- a/sys/crypto/aesni/aesni.c +++ b/sys/crypto/aesni/aesni.c @@ -319,9 +319,6 @@ aesni_probesession(device_t dev, const struct crypto_session_params *csp) CRYPTDEB("invalid CCM key length"); return (EINVAL); } - if (csp->csp_auth_mlen != 0 && - csp->csp_auth_mlen != AES_CBC_MAC_HASH_LEN) - return (EINVAL); if (!sc->has_aes) return (EINVAL); break; @@ -610,6 +607,11 @@ aesni_cipher_setup(struct aesni_session *ses, error = aesni_authprepare(ses, csp->csp_auth_klen); if (error != 0) return (error); + } else if (csp->csp_cipher_alg == CRYPTO_AES_CCM_16) { + if (csp->csp_auth_mlen == 0) + ses->mlen = AES_CBC_MAC_HASH_LEN; + else + ses->mlen = csp->csp_auth_mlen; } kt = is_fpu_kern_thread(0) || (csp->csp_cipher_alg == 0); @@ -809,15 +811,17 @@ aesni_cipher_crypt(struct aesni_session *ses, struct cryptop *crp, memset(tag, 0, sizeof(tag)); AES_CCM_encrypt(buf, outbuf, authbuf, iv, tag, crp->crp_payload_length, crp->crp_aad_length, - csp->csp_ivlen, ses->enc_schedule, ses->rounds); - crypto_copyback(crp, crp->crp_digest_start, sizeof(tag), + csp->csp_ivlen, ses->mlen, ses->enc_schedule, + ses->rounds); + crypto_copyback(crp, crp->crp_digest_start, ses->mlen, tag); } else { - crypto_copydata(crp, crp->crp_digest_start, sizeof(tag), + crypto_copydata(crp, crp->crp_digest_start, ses->mlen, tag); if (!AES_CCM_decrypt(buf, outbuf, authbuf, iv, tag, crp->crp_payload_length, crp->crp_aad_length, - csp->csp_ivlen, ses->enc_schedule, ses->rounds)) + csp->csp_ivlen, ses->mlen, ses->enc_schedule, + ses->rounds)) error = EBADMSG; } break; diff --git a/sys/crypto/aesni/aesni.h b/sys/crypto/aesni/aesni.h index 284bf6fba0fc..77ceec7b382a 100644 --- a/sys/crypto/aesni/aesni.h +++ b/sys/crypto/aesni/aesni.h @@ -112,12 +112,12 @@ int AES_GCM_decrypt(const unsigned char *in, unsigned char *out, /* CCM + CBC-MAC functions */ void AES_CCM_encrypt(const unsigned char *in, unsigned char *out, const unsigned char *addt, const unsigned char *ivec, - unsigned char *tag, uint32_t nbytes, uint32_t abytes, int ibytes, - const unsigned char *key, int nr); + unsigned char *tag, uint32_t nbytes, uint32_t abytes, int nlen, + int tag_length, const unsigned char *key, int nr); int AES_CCM_decrypt(const unsigned char *in, unsigned char *out, const unsigned char *addt, const unsigned char *ivec, - const unsigned char *tag, uint32_t nbytes, uint32_t abytes, int ibytes, - const unsigned char *key, int nr); + const unsigned char *tag, uint32_t nbytes, uint32_t abytes, int nlen, + int tag_length, const unsigned char *key, int nr); void aesni_cipher_setup_common(struct aesni_session *ses, const struct crypto_session_params *csp, const uint8_t *key, int keylen); diff --git a/sys/crypto/aesni/aesni_ccm.c b/sys/crypto/aesni/aesni_ccm.c index 34b61a633907..c7edaa0b9d5c 100644 --- a/sys/crypto/aesni/aesni_ccm.c +++ b/sys/crypto/aesni/aesni_ccm.c @@ -185,10 +185,6 @@ cbc_mac_start(const unsigned char *auth_data, size_t auth_len, * Implement AES CCM+CBC-MAC encryption and authentication. * * A couple of notes: - * The specification allows for a different number of tag lengths; - * however, they're always truncated from 16 bytes, and the tag - * length isn't passed in. (This could be fixed by changing the - * code in aesni.c:aesni_cipher_crypt().) * Since abytes is limited to a 32 bit value here, the AAD is * limited to 4 gigabytes or less. */ @@ -196,9 +192,8 @@ void AES_CCM_encrypt(const unsigned char *in, unsigned char *out, const unsigned char *addt, const unsigned char *nonce, unsigned char *tag, uint32_t nbytes, uint32_t abytes, int nlen, - const unsigned char *key, int nr) + int tag_length, const unsigned char *key, int nr) { - static const int tag_length = 16; /* 128 bits */ int L; int counter = 1; /* S0 has 0, S1 has 1 */ size_t copy_amt, total = 0; @@ -367,9 +362,8 @@ int AES_CCM_decrypt(const unsigned char *in, unsigned char *out, const unsigned char *addt, const unsigned char *nonce, const unsigned char *tag, uint32_t nbytes, uint32_t abytes, int nlen, - const unsigned char *key, int nr) + int tag_length, const unsigned char *key, int nr) { - static const int tag_length = 16; /* 128 bits */ int L; __m128i s0, rolling_mac, staging_block; uint8_t *byte_ptr; From nobody Wed Oct 6 21:10:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D5CC912D43DF; Wed, 6 Oct 2021 21:10: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 4HPnDL0Sz6z3HTW; Wed, 6 Oct 2021 21:10: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 B24DB2720C; Wed, 6 Oct 2021 21:10: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 196LAb2n061208; Wed, 6 Oct 2021 21: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 196LAbFQ061197; Wed, 6 Oct 2021 21:10:37 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:37 GMT Message-Id: <202110062110.196LAbFQ061197@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: e148e407df5c - main - ccr: Support AES-CCM requests with truncated tags. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: e148e407df5c8b1c83bcd44da9f4837d94431d02 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=e148e407df5c8b1c83bcd44da9f4837d94431d02 commit e148e407df5c8b1c83bcd44da9f4837d94431d02 Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 ccr: Support AES-CCM requests with truncated tags. Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D32117 --- sys/dev/cxgbe/crypto/t4_crypto.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c index ca6cd332fa24..b7fa048543b7 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.c +++ b/sys/dev/cxgbe/crypto/t4_crypto.c @@ -1524,6 +1524,29 @@ out: crypto_done(crp); } +static int +ccr_ccm_hmac_ctrl(unsigned int authsize) +{ + switch (authsize) { + case 4: + return (SCMD_HMAC_CTRL_PL1); + case 6: + return (SCMD_HMAC_CTRL_PL2); + case 8: + return (SCMD_HMAC_CTRL_DIV2); + case 10: + return (SCMD_HMAC_CTRL_TRUNC_RFC4366); + case 12: + return (SCMD_HMAC_CTRL_IPSEC_96BIT); + case 14: + return (SCMD_HMAC_CTRL_PL3); + case 16: + return (SCMD_HMAC_CTRL_NO_TRUNC); + default: + __assert_unreachable(); + } +} + static void generate_ccm_b0(struct cryptop *crp, u_int hash_size_in_response, const char *iv, char *b0) @@ -1783,7 +1806,7 @@ ccr_ccm(struct ccr_softc *sc, struct ccr_session *s, struct cryptop *crp) V_CPL_TX_SEC_PDU_AUTHINSERT(auth_insert)); /* These two flits are actually a CPL_TLS_TX_SCMD_FMT. */ - hmac_ctrl = ccr_hmac_ctrl(AES_CBC_MAC_HASH_LEN, hash_size_in_response); + hmac_ctrl = ccr_ccm_hmac_ctrl(hash_size_in_response); crwr->sec_cpl.seqno_numivs = htobe32( V_SCMD_SEQ_NO_CTRL(0) | V_SCMD_PROTO_VERSION(SCMD_PROTO_VERSION_GENERIC) | @@ -2459,9 +2482,6 @@ ccr_probesession(device_t dev, const struct crypto_session_params *csp) return (EINVAL); break; case CRYPTO_AES_CCM_16: - if (csp->csp_auth_mlen < 0 || - csp->csp_auth_mlen > AES_CBC_MAC_HASH_LEN) - return (EINVAL); break; default: return (EINVAL); From nobody Wed Oct 6 21:10:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C82B112D43DD; Wed, 6 Oct 2021 21:10: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 4HPnDL12DZz3Hn9; Wed, 6 Oct 2021 21:10: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 C832726D51; Wed, 6 Oct 2021 21: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 196LAcSF061580; Wed, 6 Oct 2021 21: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 196LAcCj061579; Wed, 6 Oct 2021 21:10:38 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:38 GMT Message-Id: <202110062110.196LAcCj061579@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: 2ec2e4df094b - main - safexcel: Support multiple nonce lengths for AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 2ec2e4df094ba632e5e74268a8818f71903a4537 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=2ec2e4df094ba632e5e74268a8818f71903a4537 commit 2ec2e4df094ba632e5e74268a8818f71903a4537 Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 safexcel: Support multiple nonce lengths for AES-CCM. Reviewed by: markj Sponsored by: Chelsio Communications, The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32118 --- sys/dev/safexcel/safexcel.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sys/dev/safexcel/safexcel.c b/sys/dev/safexcel/safexcel.c index 3940361561d0..042fac5fc2b8 100644 --- a/sys/dev/safexcel/safexcel.c +++ b/sys/dev/safexcel/safexcel.c @@ -2,6 +2,10 @@ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD * * Copyright (c) 2020, 2021 Rubicon Communications, LLC (Netgate) + * Copyright (c) 2021 The FreeBSD Foundation + * + * Portions of this software were developed by Ararat River + * Consulting, LLC under sponsorship of the FreeBSD Foundation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -1689,12 +1693,14 @@ static void safexcel_instr_ccm(struct safexcel_request *req, struct safexcel_instr *instr, struct safexcel_cmd_descr *cdesc) { + const struct crypto_session_params *csp; struct cryptop *crp; struct safexcel_instr *start; uint8_t *a0, *b0, *alenp, L; int aalign, blen; crp = req->crp; + csp = crypto_get_params(crp->crp_session); start = instr; /* @@ -1703,17 +1709,17 @@ safexcel_instr_ccm(struct safexcel_request *req, struct safexcel_instr *instr, * descriptor, and B0 is inserted directly into the data stream using * instructions below. * - * OCF seems to assume a 12-byte IV, fixing L (the payload length size) - * at 3 bytes due to the layout of B0. This is fine since the driver - * has a maximum of 65535 bytes anyway. + * An explicit check for overflow of the length field is not + * needed since the maximum driver size of 65535 bytes fits in + * the smallest length field used for a 13-byte nonce. */ blen = AES_BLOCK_LEN; - L = 3; + L = 15 - csp->csp_ivlen; a0 = (uint8_t *)&cdesc->control_data.token[0]; memset(a0, 0, blen); a0[0] = L - 1; - memcpy(&a0[1], req->iv, AES_CCM_IV_LEN); + memcpy(&a0[1], req->iv, csp->csp_ivlen); /* * Insert B0 and the AAD length into the input stream. @@ -1731,7 +1737,7 @@ safexcel_instr_ccm(struct safexcel_request *req, struct safexcel_instr *instr, (L - 1) | /* payload length size */ ((CCM_CBC_MAX_DIGEST_LEN - 2) / 2) << 3 /* digest length */ | (crp->crp_aad_length > 0 ? 1 : 0) << 6 /* AAD present bit */; - memcpy(&b0[1], req->iv, AES_CCM_IV_LEN); + memcpy(&b0[1], req->iv, csp->csp_ivlen); b0[14] = crp->crp_payload_length >> 8; b0[15] = crp->crp_payload_length & 0xff; instr += blen / sizeof(*instr); @@ -2308,7 +2314,8 @@ safexcel_probesession(device_t dev, const struct crypto_session_params *csp) return (EINVAL); break; case CRYPTO_AES_CCM_16: - if (csp->csp_ivlen != AES_CCM_IV_LEN) + if (csp->csp_auth_mlen != 0 && + csp->csp_auth_mlen != AES_CBC_MAC_HASH_LEN) return (EINVAL); break; default: From nobody Wed Oct 6 21:10:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2706112D4442; Wed, 6 Oct 2021 21:10: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 4HPnDL6lCdz3HnJ; Wed, 6 Oct 2021 21:10: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 F156E26D53; Wed, 6 Oct 2021 21:10: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 196LAdHv061606; Wed, 6 Oct 2021 21:10:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAdLe061605; Wed, 6 Oct 2021 21:10:39 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:39 GMT Message-Id: <202110062110.196LAdLe061605@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: 366ae4a000b1 - main - safexcel: Support truncated tags for AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 366ae4a000b1483390ddbf28e3dc420ebac894a0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=366ae4a000b1483390ddbf28e3dc420ebac894a0 commit 366ae4a000b1483390ddbf28e3dc420ebac894a0 Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 safexcel: Support truncated tags for AES-CCM. Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32119 --- sys/dev/safexcel/safexcel.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sys/dev/safexcel/safexcel.c b/sys/dev/safexcel/safexcel.c index 042fac5fc2b8..b844a167b078 100644 --- a/sys/dev/safexcel/safexcel.c +++ b/sys/dev/safexcel/safexcel.c @@ -1735,7 +1735,7 @@ safexcel_instr_ccm(struct safexcel_request *req, struct safexcel_instr *instr, memset(b0, 0, blen); b0[0] = (L - 1) | /* payload length size */ - ((CCM_CBC_MAX_DIGEST_LEN - 2) / 2) << 3 /* digest length */ | + ((req->sess->digestlen - 2) / 2) << 3 /* digest length */ | (crp->crp_aad_length > 0 ? 1 : 0) << 6 /* AAD present bit */; memcpy(&b0[1], req->iv, csp->csp_ivlen); b0[14] = crp->crp_payload_length >> 8; @@ -2314,9 +2314,6 @@ safexcel_probesession(device_t dev, const struct crypto_session_params *csp) return (EINVAL); break; case CRYPTO_AES_CCM_16: - if (csp->csp_auth_mlen != 0 && - csp->csp_auth_mlen != AES_CBC_MAC_HASH_LEN) - return (EINVAL); break; default: return (EINVAL); From nobody Wed Oct 6 21:10:42 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D57C812D44BB; Wed, 6 Oct 2021 21:10: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 4HPnDM682Dz3Hkk; Wed, 6 Oct 2021 21:10: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 2B7AE26BD9; Wed, 6 Oct 2021 21:10: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 196LAgDD062198; Wed, 6 Oct 2021 21:10:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAgSw062192; Wed, 6 Oct 2021 21:10:42 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:42 GMT Message-Id: <202110062110.196LAgSw062192@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: 668770dc7de2 - main - crypto: Test all of the AES-CCM KAT vectors. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 668770dc7de2ec8b5f5edf71e09b8a404120f6fa Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=668770dc7de2ec8b5f5edf71e09b8a404120f6fa commit 668770dc7de2ec8b5f5edf71e09b8a404120f6fa Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 crypto: Test all of the AES-CCM KAT vectors. Previously, only test vectors which used the default nonce and tag sizes (12 and 16, respectively) were tested. This now tests all of the vectors. This exposed some additional issues around requests with an empty payload (which wasn't supported) and an empty AAD (which falls back to CIOCCRYPT instead of CIOCCRYPTAEAD). - Make use of the 'ivlen' and 'maclen' fields for CIOGSESSION2 to test AES-CCM vectors with non-default nonce and tag lengths. - Permit requests with an empty payload. - Permit an input MAC for requests without AAD. Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32121 --- tests/sys/opencrypto/cryptodev.py | 54 +++++++++++++++++++++++++++----------- tests/sys/opencrypto/cryptotest.py | 41 ++++++++++++----------------- 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/tests/sys/opencrypto/cryptodev.py b/tests/sys/opencrypto/cryptodev.py index 83d14fc2b205..d97a731d37ba 100644 --- a/tests/sys/opencrypto/cryptodev.py +++ b/tests/sys/opencrypto/cryptodev.py @@ -79,10 +79,10 @@ class SessionOp2(dpkt.Packet): ('mackey', 'P', 0), ('ses', 'I', 0), ('crid', 'i', 0), + ('ivlen', 'i', 0), + ('maclen', 'i', 0), ('pad0', 'i', 0), ('pad1', 'i', 0), - ('pad2', 'i', 0), - ('pad3', 'i', 0), ) class CryptOp(dpkt.Packet): @@ -159,6 +159,11 @@ def array_tobytes(array_obj): return array_obj.tobytes() return array_obj.tostring() +def empty_bytes(): + if sys.version_info[0] >= 3: + return b'' + return "" + class Crypto: @staticmethod def findcrid(name): @@ -169,7 +174,8 @@ class Crypto: return _findop(crid, '')[1] def __init__(self, cipher=0, key=None, mac=0, mackey=None, - crid=CRYPTOCAP_F_SOFTWARE | CRYPTOCAP_F_HARDWARE, maclen=None): + crid=CRYPTOCAP_F_SOFTWARE | CRYPTOCAP_F_HARDWARE, maclen=None, + ivlen=None): self._ses = None self._maclen = maclen ses = SessionOp2() @@ -191,6 +197,10 @@ class Crypto: if not cipher and not mac: raise ValueError('one of cipher or mac MUST be specified.') ses.crid = crid + if ivlen: + ses.ivlen = ivlen + if maclen: + ses.maclen = maclen #print(ses) s = array.array('B', ses.pack_hdr()) #print(s) @@ -209,16 +219,23 @@ class Crypto: pass self._ses = None - def _doop(self, op, src, iv): + def _doop(self, op, src, iv, mac=None): cop = CryptOp() cop.ses = self._ses cop.op = op cop.flags = 0 - cop.len = len(src) - s = array.array('B', src) - cop.src = cop.dst = s.buffer_info()[0] + if src is not None: + cop.len = len(src) + s = array.array('B', src) + cop.src = cop.dst = s.buffer_info()[0] + if mac is not None: + assert len(mac) == self._maclen, \ + '%d != %d' % (len(tag), self._maclen) if self._maclen is not None: - m = array.array('B', [0] * self._maclen) + if mac is None: + m = array.array('B', [0] * self._maclen) + else: + m = array.array('B', mac) cop.mac = m.buffer_info()[0] ivbuf = array.array('B', str_to_ascii(iv)) cop.iv = ivbuf.buffer_info()[0] @@ -226,7 +243,10 @@ class Crypto: #print('cop:', cop) ioctl(_cryptodev, CIOCCRYPT, bytes(cop)) - s = array_tobytes(s) + if src is not None: + s = array_tobytes(s) + else: + s = empty_bytes() if self._maclen is not None: return s, array_tobytes(m) @@ -238,10 +258,11 @@ class Crypto: caead.op = op caead.flags = CRD_F_IV_EXPLICIT caead.flags = 0 - src = str_to_ascii(src) - caead.len = len(src) - s = array.array('B', src) - caead.src = caead.dst = s.buffer_info()[0] + if src is not None and len(src) != 0: + src = str_to_ascii(src) + caead.len = len(src) + s = array.array('B', src) + caead.src = caead.dst = s.buffer_info()[0] aad = str_to_ascii(aad) caead.aadlen = len(aad) saad = array.array('B', aad) @@ -266,7 +287,10 @@ class Crypto: ioctl(_cryptodev, CIOCCRYPTAEAD, bytes(caead)) - s = array_tobytes(s) + if src is not None: + s = array_tobytes(s) + else: + s = empty_bytes() return s, array_tobytes(tag) @@ -320,7 +344,7 @@ class Crypto: def decrypt(self, data, iv, aad=None, tag=None): if aad is None: - return self._doop(COP_DECRYPT, data, iv) + return self._doop(COP_DECRYPT, data, iv, mac=tag) else: return self._doaead(COP_DECRYPT, data, aad, iv, tag=tag) diff --git a/tests/sys/opencrypto/cryptotest.py b/tests/sys/opencrypto/cryptotest.py index 2ef423ac1505..74ce62cee33d 100644 --- a/tests/sys/opencrypto/cryptotest.py +++ b/tests/sys/opencrypto/cryptotest.py @@ -243,25 +243,26 @@ def GenTestCase(cname): def runCCMEncryptWithParser(self, parser): for data in next(parser): Nlen = int(data['Nlen']) - if Nlen != 12: - # OCF only supports 12 byte IVs - continue + Tlen = int(data['Tlen']) key = binascii.unhexlify(data['Key']) nonce = binascii.unhexlify(data['Nonce']) Alen = int(data['Alen']) + Plen = int(data['Plen']) if Alen != 0: aad = binascii.unhexlify(data['Adata']) else: aad = None - payload = binascii.unhexlify(data['Payload']) + if Plen != 0: + payload = binascii.unhexlify(data['Payload']) + else: + payload = None ct = binascii.unhexlify(data['CT']) try: c = Crypto(crid=crid, cipher=cryptodev.CRYPTO_AES_CCM_16, key=key, - mac=cryptodev.CRYPTO_AES_CCM_CBC_MAC, - mackey=key, maclen=16) + mackey=key, maclen=Tlen, ivlen=Nlen) r, tag = Crypto.encrypt(c, payload, nonce, aad) except EnvironmentError as e: @@ -280,36 +281,29 @@ def GenTestCase(cname): self.runCCMDecryptWithParser(parser) def runCCMDecryptWithParser(self, parser): - # XXX: Note that all of the current CCM - # decryption test vectors use IV and tag sizes - # that aren't supported by OCF none of the - # tests are actually ran. for data in next(parser): Nlen = int(data['Nlen']) - if Nlen != 12: - # OCF only supports 12 byte IVs - continue Tlen = int(data['Tlen']) - if Tlen != 16: - # OCF only supports 16 byte tags - continue key = binascii.unhexlify(data['Key']) nonce = binascii.unhexlify(data['Nonce']) Alen = int(data['Alen']) + Plen = int(data['Plen']) if Alen != 0: aad = binascii.unhexlify(data['Adata']) else: aad = None ct = binascii.unhexlify(data['CT']) - tag = ct[-16:] - ct = ct[:-16] + tag = ct[-Tlen:] + if Plen != 0: + payload = ct[:-Tlen] + else: + payload = None try: c = Crypto(crid=crid, cipher=cryptodev.CRYPTO_AES_CCM_16, key=key, - mac=cryptodev.CRYPTO_AES_CCM_CBC_MAC, - mackey=key, maclen=16) + mackey=key, maclen=Tlen, ivlen=Nlen) except EnvironmentError as e: if e.errno != errno.EOPNOTSUPP: raise @@ -319,12 +313,11 @@ def GenTestCase(cname): self.assertRaises(IOError, c.decrypt, payload, nonce, aad, tag) else: - r = Crypto.decrypt(c, payload, nonce, - aad, tag) + r, tag = Crypto.decrypt(c, payload, nonce, + aad, tag) payload = binascii.unhexlify(data['Payload']) - plen = int(data('Plen')) - payload = payload[:plen] + payload = payload[:Plen] self.assertEqual(r, payload, "Count " + data['Count'] + \ " Actual: " + repr(binascii.hexlify(r)) + \ From nobody Wed Oct 6 21:10:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D3AAC12D45A3; Wed, 6 Oct 2021 21:10: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 4HPnDM64JMz3HqG; Wed, 6 Oct 2021 21:10: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 1B88326F66; Wed, 6 Oct 2021 21:10:41 +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 196LAfpu061634; Wed, 6 Oct 2021 21:10:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAeWL061633; Wed, 6 Oct 2021 21:10:40 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:40 GMT Message-Id: <202110062110.196LAeWL061633@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: 4361c4eb6e36 - main - cryptosoft: Fix support for variable tag lengths in AES-CCM. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 4361c4eb6e3620e68d005c1671fdbf60b1fe83c6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=4361c4eb6e3620e68d005c1671fdbf60b1fe83c6 commit 4361c4eb6e3620e68d005c1671fdbf60b1fe83c6 Author: John Baldwin AuthorDate: 2021-10-06 21:08:48 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:48 +0000 cryptosoft: Fix support for variable tag lengths in AES-CCM. The tag length is included as one of the values in the flags byte of block 0 passed to CBC_MAC, so merely copying the first N bytes is insufficient. To avoid adding more sideband data to the CBC MAC software context, pull the generation of block 0, the AAD length, and AAD padding out of cbc_mac.c and into cryptosoft.c. This matches how GCM/GMAC are handled where the length block is constructed in cryptosoft.c and passed as an input to the Update callback. As a result, the CBC MAC Update() routine is now much simpler and simply performs the XOR-and-encrypt step on each input block. While here, avoid a copy to the staging block in the Update routine when one or more full blocks are passed as input to the Update callback. Reviewed by: sef Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32120 --- sys/dev/cxgbe/crypto/t4_crypto.c | 107 ++++++++++++++++++++------ sys/opencrypto/cbc_mac.c | 157 ++++++--------------------------------- sys/opencrypto/cbc_mac.h | 6 +- sys/opencrypto/cryptosoft.c | 124 +++++++++++++++++++++++-------- 4 files changed, 205 insertions(+), 189 deletions(-) diff --git a/sys/dev/cxgbe/crypto/t4_crypto.c b/sys/dev/cxgbe/crypto/t4_crypto.c index b7fa048543b7..fae77423aaa5 100644 --- a/sys/dev/cxgbe/crypto/t4_crypto.c +++ b/sys/dev/cxgbe/crypto/t4_crypto.c @@ -1893,8 +1893,60 @@ ccr_ccm_done(struct ccr_softc *sc, struct ccr_session *s, /* * Handle a CCM request that is not supported by the crypto engine by - * performing the operation in software. Derived from swcr_authenc(). + * performing the operation in software. Derived from swcr_ccm(). */ +static void +build_ccm_b0(const char *nonce, u_int nonce_length, u_int aad_length, + u_int data_length, u_int tag_length, uint8_t *b0) +{ + uint8_t *bp; + uint8_t flags, L; + + KASSERT(nonce_length >= 7 && nonce_length <= 13, + ("nonce_length must be between 7 and 13 bytes")); + + /* + * Need to determine the L field value. This is the number of + * bytes needed to specify the length of the message; the length + * is whatever is left in the 16 bytes after specifying flags and + * the nonce. + */ + L = 15 - nonce_length; + + flags = ((aad_length > 0) << 6) + + (((tag_length - 2) / 2) << 3) + + L - 1; + + /* + * Now we need to set up the first block, which has flags, nonce, + * and the message length. + */ + b0[0] = flags; + memcpy(b0 + 1, nonce, nonce_length); + bp = b0 + 1 + nonce_length; + + /* Need to copy L' [aka L-1] bytes of data_length */ + for (uint8_t *dst = b0 + CCM_CBC_BLOCK_LEN - 1; dst >= bp; dst--) { + *dst = data_length; + data_length >>= 8; + } +} + +/* NB: OCF only supports AAD lengths < 2^32. */ +static int +build_ccm_aad_length(u_int aad_length, uint8_t *blk) +{ + if (aad_length < ((1 << 16) - (1 << 8))) { + be16enc(blk, aad_length); + return (sizeof(uint16_t)); + } else { + blk[0] = 0xff; + blk[1] = 0xfe; + be32enc(blk + 2, aad_length); + return (2 + sizeof(uint32_t)); + } +} + static void ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) { @@ -1904,11 +1956,13 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) union authctx *auth_ctx; void *kschedule; char block[CCM_CBC_BLOCK_LEN]; - char digest[AES_CBC_MAC_HASH_LEN]; + char tag[AES_CBC_MAC_HASH_LEN]; + u_int taglen; int error, i, len; auth_ctx = NULL; kschedule = NULL; + taglen = s->ccm_mac.hash_len; csp = crypto_get_params(crp->crp_session); if (crp->crp_payload_length > ccm_max_payload_length(csp)) { @@ -1956,19 +2010,32 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) goto out; } - auth_ctx->aes_cbc_mac_ctx.authDataLength = crp->crp_aad_length; - auth_ctx->aes_cbc_mac_ctx.cryptDataLength = crp->crp_payload_length; axf->Reinit(auth_ctx, crp->crp_iv, csp->csp_ivlen); + /* Supply MAC with b0. */ + build_ccm_b0(crp->crp_iv, csp->csp_ivlen, crp->crp_aad_length, + crp->crp_payload_length, taglen, block); + axf->Update(auth_ctx, block, CCM_CBC_BLOCK_LEN); + /* MAC the AAD. */ - if (crp->crp_aad != NULL) - error = axf->Update(auth_ctx, crp->crp_aad, - crp->crp_aad_length); - else - error = crypto_apply(crp, crp->crp_aad_start, - crp->crp_aad_length, axf->Update, auth_ctx); - if (error) - goto out; + if (crp->crp_aad_length != 0) { + len = build_ccm_aad_length(crp->crp_aad_length, block); + axf->Update(auth_ctx, block, len); + if (crp->crp_aad != NULL) + axf->Update(auth_ctx, crp->crp_aad, + crp->crp_aad_length); + else + crypto_apply(crp, crp->crp_aad_start, + crp->crp_aad_length, axf->Update, auth_ctx); + + /* Pad the AAD (including length field) to a full block. */ + len = (len + crp->crp_aad_length) % CCM_CBC_BLOCK_LEN; + if (len != 0) { + len = CCM_CBC_BLOCK_LEN - len; + memset(block, 0, CCM_CBC_BLOCK_LEN); + axf->Update(auth_ctx, block, len); + } + } exf->reinit(kschedule, crp->crp_iv, csp->csp_ivlen); @@ -1989,19 +2056,17 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) } /* Finalize MAC. */ - axf->Final(digest, auth_ctx); + axf->Final(tag, auth_ctx); /* Inject or validate tag. */ if (CRYPTO_OP_IS_ENCRYPT(crp->crp_op)) { - crypto_copyback(crp, crp->crp_digest_start, sizeof(digest), - digest); + crypto_copyback(crp, crp->crp_digest_start, taglen, tag); error = 0; } else { - char digest2[AES_CBC_MAC_HASH_LEN]; + char tag2[AES_CBC_MAC_HASH_LEN]; - crypto_copydata(crp, crp->crp_digest_start, sizeof(digest2), - digest2); - if (timingsafe_bcmp(digest, digest2, sizeof(digest)) == 0) { + crypto_copydata(crp, crp->crp_digest_start, taglen, tag2); + if (timingsafe_bcmp(tag, tag2, taglen) == 0) { error = 0; /* Tag matches, decrypt data. */ @@ -2019,14 +2084,14 @@ ccr_ccm_soft(struct ccr_session *s, struct cryptop *crp) } } else error = EBADMSG; - explicit_bzero(digest2, sizeof(digest2)); + explicit_bzero(tag2, sizeof(tag2)); } out: zfree(kschedule, M_CCR); zfree(auth_ctx, M_CCR); explicit_bzero(block, sizeof(block)); - explicit_bzero(digest, sizeof(digest)); + explicit_bzero(tag, sizeof(tag)); crp->crp_etype = error; crypto_done(crp); } diff --git a/sys/opencrypto/cbc_mac.c b/sys/opencrypto/cbc_mac.c index 40afae5373bf..9a030cd54173 100644 --- a/sys/opencrypto/cbc_mac.c +++ b/sys/opencrypto/cbc_mac.c @@ -75,85 +75,23 @@ AES_CBC_MAC_Setkey(void *vctx, const uint8_t *key, u_int klen) /* * This is called to set the nonce, aka IV. - * Before this call, the authDataLength and cryptDataLength fields - * MUST have been set. Sadly, there's no way to return an error. * - * The CBC-MAC algorithm requires that the first block contain the - * nonce, as well as information about the sizes and lengths involved. + * Note that the caller is responsible for constructing b0 as well + * as the length and padding around the AAD and passing that data + * to _Update. */ void AES_CBC_MAC_Reinit(void *vctx, const uint8_t *nonce, u_int nonceLen) { struct aes_cbc_mac_ctx *ctx = vctx; - uint8_t b0[CCM_CBC_BLOCK_LEN]; - uint8_t *bp = b0, flags = 0; - uint8_t L = 0; - uint64_t dataLength = ctx->cryptDataLength; - - KASSERT(nonceLen >= 7 && nonceLen <= 13, - ("nonceLen must be between 7 and 13 bytes")); ctx->nonce = nonce; ctx->nonceLength = nonceLen; - - ctx->authDataCount = 0; + ctx->blockIndex = 0; - explicit_bzero(ctx->staging_block, sizeof(ctx->staging_block)); - - /* - * Need to determine the L field value. This is the number of - * bytes needed to specify the length of the message; the length - * is whatever is left in the 16 bytes after specifying flags and - * the nonce. - */ - L = 15 - nonceLen; - - flags = ((ctx->authDataLength > 0) << 6) + - (((AES_CBC_MAC_HASH_LEN - 2) / 2) << 3) + - L - 1; - /* - * Now we need to set up the first block, which has flags, nonce, - * and the message length. - */ - b0[0] = flags; - bcopy(nonce, b0 + 1, nonceLen); - bp = b0 + 1 + nonceLen; - /* Need to copy L' [aka L-1] bytes of cryptDataLength */ - for (uint8_t *dst = b0 + sizeof(b0) - 1; dst >= bp; dst--) { - *dst = dataLength; - dataLength >>= 8; - } - /* Now need to encrypt b0 */ - rijndaelEncrypt(ctx->keysched, ctx->rounds, b0, ctx->block); - /* If there is auth data, we need to set up the staging block */ - if (ctx->authDataLength) { - size_t addLength; - if (ctx->authDataLength < ((1<<16) - (1<<8))) { - uint16_t sizeVal = htobe16(ctx->authDataLength); - bcopy(&sizeVal, ctx->staging_block, sizeof(sizeVal)); - addLength = sizeof(sizeVal); - } else if (ctx->authDataLength < (1ULL<<32)) { - uint32_t sizeVal = htobe32(ctx->authDataLength); - ctx->staging_block[0] = 0xff; - ctx->staging_block[1] = 0xfe; - bcopy(&sizeVal, ctx->staging_block+2, sizeof(sizeVal)); - addLength = 2 + sizeof(sizeVal); - } else { - uint64_t sizeVal = htobe64(ctx->authDataLength); - ctx->staging_block[0] = 0xff; - ctx->staging_block[1] = 0xff; - bcopy(&sizeVal, ctx->staging_block+2, sizeof(sizeVal)); - addLength = 2 + sizeof(sizeVal); - } - ctx->blockIndex = addLength; - /* - * The length descriptor goes into the AAD buffer, so we - * need to account for it. - */ - ctx->authDataLength += addLength; - ctx->authDataCount = addLength; - } + /* XOR b0 with all 0's on first call to _Update. */ + memset(ctx->block, 0, CCM_CBC_BLOCK_LEN); } int @@ -167,85 +105,35 @@ AES_CBC_MAC_Update(void *vctx, const void *vdata, u_int length) data = vdata; /* - * This will be called in one of two phases: - * (1) Applying authentication data, or - * (2) Applying the payload data. - * - * Because CBC-MAC puts the authentication data size before the - * data, subsequent calls won't be block-size-aligned. Which - * complicates things a fair bit. - * - * The payload data doesn't have that problem. + * _Update can be called with non-aligned update lengths. Use + * the staging block when necessary. */ - - if (ctx->authDataCount < ctx->authDataLength) { - /* - * We need to process data as authentication data. - * Since we may be out of sync, we may also need - * to pad out the staging block. - */ - const uint8_t *ptr = data; - while (length > 0) { - - copy_amt = MIN(length, - sizeof(ctx->staging_block) - ctx->blockIndex); - - bcopy(ptr, ctx->staging_block + ctx->blockIndex, - copy_amt); - ptr += copy_amt; - length -= copy_amt; - ctx->authDataCount += copy_amt; - ctx->blockIndex += copy_amt; - ctx->blockIndex %= sizeof(ctx->staging_block); + while (length != 0) { + uint8_t *ptr; - if (ctx->blockIndex == 0 || - ctx->authDataCount == ctx->authDataLength) { - /* - * We're done with this block, so we - * xor staging_block with block, and then - * encrypt it. - */ - xor_and_encrypt(ctx, ctx->staging_block, ctx->block); - bzero(ctx->staging_block, sizeof(ctx->staging_block)); - ctx->blockIndex = 0; - if (ctx->authDataCount >= ctx->authDataLength) - break; - } - } /* - * We'd like to be able to check length == 0 and return - * here, but the way OCF calls us, length is always - * blksize (16, in this case). So we have to count on - * the fact that OCF calls us separately for the AAD and - * for the real data. + * If there is no partial block and the length is at + * least a full block, encrypt the full block without + * copying to the staging block. */ - return (0); - } - /* - * If we're here, then we're encoding payload data. - * This is marginally easier, except that _Update can - * be called with non-aligned update lengths. As a result, - * we still need to use the staging block. - */ - KASSERT((length + ctx->cryptDataCount) <= ctx->cryptDataLength, - ("More encryption data than allowed")); + if (ctx->blockIndex == 0 && length >= CCM_CBC_BLOCK_LEN) { + xor_and_encrypt(ctx, data, ctx->block); + length -= CCM_CBC_BLOCK_LEN; + data += CCM_CBC_BLOCK_LEN; + continue; + } - while (length) { - uint8_t *ptr; - copy_amt = MIN(sizeof(ctx->staging_block) - ctx->blockIndex, length); ptr = ctx->staging_block + ctx->blockIndex; bcopy(data, ptr, copy_amt); data += copy_amt; ctx->blockIndex += copy_amt; - ctx->cryptDataCount += copy_amt; length -= copy_amt; if (ctx->blockIndex == sizeof(ctx->staging_block)) { /* We've got a full block */ xor_and_encrypt(ctx, ctx->staging_block, ctx->block); ctx->blockIndex = 0; - bzero(ctx->staging_block, sizeof(ctx->staging_block)); } } return (0); @@ -264,11 +152,12 @@ AES_CBC_MAC_Final(uint8_t *buf, void *vctx) * left over to encrypt. */ if (ctx->blockIndex != 0) { + memset(ctx->staging_block + ctx->blockIndex, 0, + CCM_CBC_BLOCK_LEN - ctx->blockIndex); xor_and_encrypt(ctx, ctx->staging_block, ctx->block); - ctx->cryptDataCount += ctx->blockIndex; - ctx->blockIndex = 0; - explicit_bzero(ctx->staging_block, sizeof(ctx->staging_block)); } + explicit_bzero(ctx->staging_block, sizeof(ctx->staging_block)); + bzero(s0, sizeof(s0)); s0[0] = (15 - ctx->nonceLength) - 1; bcopy(ctx->nonce, s0 + 1, ctx->nonceLength); diff --git a/sys/opencrypto/cbc_mac.h b/sys/opencrypto/cbc_mac.h index 51833a212f6c..50694e5d4b44 100644 --- a/sys/opencrypto/cbc_mac.h +++ b/sys/opencrypto/cbc_mac.h @@ -46,13 +46,11 @@ * the encryption one is similar. */ struct aes_cbc_mac_ctx { - uint64_t authDataLength, authDataCount; - uint64_t cryptDataLength, cryptDataCount; - int blockIndex; uint8_t staging_block[CCM_CBC_BLOCK_LEN]; uint8_t block[CCM_CBC_BLOCK_LEN]; - const uint8_t *nonce; + int blockIndex; int nonceLength; /* This one is in bytes, not bits! */ + const uint8_t *nonce; /* AES state data */ int rounds; uint32_t keysched[4*(RIJNDAEL_MAXNR+1)]; diff --git a/sys/opencrypto/cryptosoft.c b/sys/opencrypto/cryptosoft.c index ae71f0d6c096..e51bade8a3f8 100644 --- a/sys/opencrypto/cryptosoft.c +++ b/sys/opencrypto/cryptosoft.c @@ -636,16 +636,69 @@ out: return (error); } +static void +build_ccm_b0(const char *nonce, u_int nonce_length, u_int aad_length, + u_int data_length, u_int tag_length, uint8_t *b0) +{ + uint8_t *bp; + uint8_t flags, L; + + KASSERT(nonce_length >= 7 && nonce_length <= 13, + ("nonce_length must be between 7 and 13 bytes")); + + /* + * Need to determine the L field value. This is the number of + * bytes needed to specify the length of the message; the length + * is whatever is left in the 16 bytes after specifying flags and + * the nonce. + */ + L = 15 - nonce_length; + + flags = ((aad_length > 0) << 6) + + (((tag_length - 2) / 2) << 3) + + L - 1; + + /* + * Now we need to set up the first block, which has flags, nonce, + * and the message length. + */ + b0[0] = flags; + memcpy(b0 + 1, nonce, nonce_length); + bp = b0 + 1 + nonce_length; + + /* Need to copy L' [aka L-1] bytes of data_length */ + for (uint8_t *dst = b0 + CCM_CBC_BLOCK_LEN - 1; dst >= bp; dst--) { + *dst = data_length; + data_length >>= 8; + } +} + +/* NB: OCF only supports AAD lengths < 2^32. */ +static int +build_ccm_aad_length(u_int aad_length, uint8_t *blk) +{ + if (aad_length < ((1 << 16) - (1 << 8))) { + be16enc(blk, aad_length); + return (sizeof(uint16_t)); + } else { + blk[0] = 0xff; + blk[1] = 0xfe; + be32enc(blk + 2, aad_length); + return (2 + sizeof(uint32_t)); + } +} + static int swcr_ccm_cbc_mac(struct swcr_session *ses, struct cryptop *crp) { - u_char tag[AES_CBC_MAC_HASH_LEN]; u_char iv[AES_BLOCK_LEN]; + u_char blk[CCM_CBC_BLOCK_LEN]; + u_char tag[AES_CBC_MAC_HASH_LEN]; union authctx ctx; const struct crypto_session_params *csp; struct swcr_auth *swa; const struct auth_hash *axf; - int error, ivlen; + int error, ivlen, len; csp = crypto_get_params(crp->crp_session); swa = &ses->swcr_auth; @@ -657,25 +710,24 @@ swcr_ccm_cbc_mac(struct swcr_session *ses, struct cryptop *crp) ivlen = csp->csp_ivlen; crypto_read_iv(crp, iv); - /* - * AES CCM-CBC-MAC needs to know the length of both the auth - * data and payload data before doing the auth computation. - */ - ctx.aes_cbc_mac_ctx.authDataLength = crp->crp_payload_length; - ctx.aes_cbc_mac_ctx.cryptDataLength = 0; + /* Supply MAC with IV */ + axf->Reinit(&ctx, crp->crp_iv, ivlen); - axf->Reinit(&ctx, iv, ivlen); - if (crp->crp_aad != NULL) - error = axf->Update(&ctx, crp->crp_aad, crp->crp_aad_length); - else - error = crypto_apply(crp, crp->crp_payload_start, - crp->crp_payload_length, axf->Update, &ctx); - if (error) - return (error); + /* Supply MAC with b0. */ + build_ccm_b0(crp->crp_iv, ivlen, crp->crp_payload_length, 0, + swa->sw_mlen, blk); + axf->Update(&ctx, blk, CCM_CBC_BLOCK_LEN); + + len = build_ccm_aad_length(crp->crp_payload_length, blk); + axf->Update(&ctx, blk, len); + + crypto_apply(crp, crp->crp_payload_start, crp->crp_payload_length, + axf->Update, &ctx); /* Finalize MAC */ axf->Final(tag, &ctx); + error = 0; if (crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { u_char tag2[AES_CBC_MAC_HASH_LEN]; @@ -689,6 +741,7 @@ swcr_ccm_cbc_mac(struct swcr_session *ses, struct cryptop *crp) crypto_copyback(crp, crp->crp_digest_start, swa->sw_mlen, tag); } explicit_bzero(tag, sizeof(tag)); + explicit_bzero(blk, sizeof(blk)); explicit_bzero(iv, sizeof(iv)); return (error); } @@ -733,24 +786,35 @@ swcr_ccm(struct swcr_session *ses, struct cryptop *crp) ivlen = csp->csp_ivlen; - /* - * AES CCM-CBC-MAC needs to know the length of both the auth - * data and payload data before doing the auth computation. - */ - ctx.aes_cbc_mac_ctx.authDataLength = crp->crp_aad_length; - ctx.aes_cbc_mac_ctx.cryptDataLength = crp->crp_payload_length; - /* Supply MAC with IV */ axf->Reinit(&ctx, crp->crp_iv, ivlen); + /* Supply MAC with b0. */ + _Static_assert(sizeof(blkbuf) >= CCM_CBC_BLOCK_LEN, + "blkbuf too small for b0"); + build_ccm_b0(crp->crp_iv, ivlen, crp->crp_aad_length, + crp->crp_payload_length, swa->sw_mlen, blk); + axf->Update(&ctx, blk, CCM_CBC_BLOCK_LEN); + /* Supply MAC with AAD */ - if (crp->crp_aad != NULL) - error = axf->Update(&ctx, crp->crp_aad, crp->crp_aad_length); - else - error = crypto_apply(crp, crp->crp_aad_start, - crp->crp_aad_length, axf->Update, &ctx); - if (error) - return (error); + if (crp->crp_aad_length != 0) { + len = build_ccm_aad_length(crp->crp_aad_length, blk); + axf->Update(&ctx, blk, len); + if (crp->crp_aad != NULL) + axf->Update(&ctx, crp->crp_aad, + crp->crp_aad_length); + else + crypto_apply(crp, crp->crp_aad_start, + crp->crp_aad_length, axf->Update, &ctx); + + /* Pad the AAD (including length field) to a full block. */ + len = (len + crp->crp_aad_length) % CCM_CBC_BLOCK_LEN; + if (len != 0) { + len = CCM_CBC_BLOCK_LEN - len; + memset(blk, 0, CCM_CBC_BLOCK_LEN); + axf->Update(&ctx, blk, len); + } + } if (crp->crp_cipher_key != NULL) exf->setkey(swe->sw_kschedule, crp->crp_cipher_key, From nobody Wed Oct 6 21:10:43 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 40BEC12D4573; Wed, 6 Oct 2021 21:10: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 4HPnDR4Q7nz3HnR; Wed, 6 Oct 2021 21:10: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 479762720E; Wed, 6 Oct 2021 21:10: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 196LAhKw062404; Wed, 6 Oct 2021 21:10:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAhj1062403; Wed, 6 Oct 2021 21:10:43 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:43 GMT Message-Id: <202110062110.196LAhj1062403@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: 42dcd39528c6 - main - crypto: Support Chacha20-Poly1305 with a nonce size of 8 bytes. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 42dcd39528c6188a259951e28bbad309234324e4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=42dcd39528c6188a259951e28bbad309234324e4 commit 42dcd39528c6188a259951e28bbad309234324e4 Author: John Baldwin AuthorDate: 2021-10-06 21:08:49 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:08:49 +0000 crypto: Support Chacha20-Poly1305 with a nonce size of 8 bytes. This is useful for WireGuard which uses a nonce of 8 bytes rather than the 12 bytes used for IPsec and TLS. Note that this also fixes a (should be) harmless bug in ossl(4) where the counter was incorrectly treated as a 64-bit counter instead of a 32-bit counter in terms of wrapping when using a 12 byte nonce. However, this required a single message (TLS record) longer than 64 * (2^32 - 1) bytes (about 256 GB) to trigger. Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32122 --- share/man/man7/crypto.7 | 2 +- sys/crypto/openssl/ossl_chacha20.c | 14 ++++++++------ sys/opencrypto/crypto.c | 7 ++++++- sys/opencrypto/cryptosoft.c | 3 --- sys/opencrypto/xform_chacha20_poly1305.c | 31 +++++++++++++++++++++++++------ tools/tools/crypto/cryptocheck.c | 4 ++-- 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/share/man/man7/crypto.7 b/share/man/man7/crypto.7 index d75daa62adcb..c7af22af4deb 100644 --- a/share/man/man7/crypto.7 +++ b/share/man/man7/crypto.7 @@ -167,7 +167,7 @@ The following AEAD algorithms are supported: AES Galois/Counter Mode .It Dv CRYPTO_AES_CCM_16 Ta 12, 7-13 Ta 16, 24, 32 Ta 16 Ta AES Counter with CBC-MAC -.It Dv CRYPTO_CHACHA20_POLY1305 Ta 12 Ta 32 Ta 16 Ta +.It Dv CRYPTO_CHACHA20_POLY1305 Ta 12, 8 Ta 32 Ta 16 Ta ChaCha20-Poly1305 .El .Sh SEE ALSO diff --git a/sys/crypto/openssl/ossl_chacha20.c b/sys/crypto/openssl/ossl_chacha20.c index a6f56aca1f8f..aa125121e8b4 100644 --- a/sys/crypto/openssl/ossl_chacha20.c +++ b/sys/crypto/openssl/ossl_chacha20.c @@ -161,7 +161,8 @@ ossl_chacha20_poly1305_encrypt(struct cryptop *crp, for (i = 0; i < nitems(key); i++) key[i] = CHACHA_U8TOU32(cipher_key + i * 4); - crypto_read_iv(crp, counter + 1); + memset(counter, 0, sizeof(counter)); + crypto_read_iv(crp, counter + (CHACHA_CTR_SIZE - csp->csp_ivlen) / 4); for (i = 1; i < nitems(counter); i++) counter[i] = le32toh(counter[i]); @@ -223,7 +224,7 @@ ossl_chacha20_poly1305_encrypt(struct cryptop *crp, /* Truncate if the 32-bit counter would roll over. */ next_counter = counter[0] + todo / CHACHA_BLK_SIZE; - if (next_counter < counter[0]) { + if (csp->csp_ivlen == 8 && next_counter < counter[0]) { todo -= next_counter * CHACHA_BLK_SIZE; next_counter = 0; } @@ -232,7 +233,7 @@ ossl_chacha20_poly1305_encrypt(struct cryptop *crp, Poly1305_Update(&auth_ctx, out, todo); counter[0] = next_counter; - if (counter[0] == 0) + if (csp->csp_ivlen == 8 && counter[0] == 0) counter[1]++; if (out == block) { @@ -307,7 +308,8 @@ ossl_chacha20_poly1305_decrypt(struct cryptop *crp, for (i = 0; i < nitems(key); i++) key[i] = CHACHA_U8TOU32(cipher_key + i * 4); - crypto_read_iv(crp, counter + 1); + memset(counter, 0, sizeof(counter)); + crypto_read_iv(crp, counter + (CHACHA_CTR_SIZE - csp->csp_ivlen) / 4); for (i = 1; i < nitems(counter); i++) counter[i] = le32toh(counter[i]); @@ -391,7 +393,7 @@ ossl_chacha20_poly1305_decrypt(struct cryptop *crp, /* Truncate if the 32-bit counter would roll over. */ next_counter = counter[0] + todo / CHACHA_BLK_SIZE; - if (next_counter < counter[0]) { + if (csp->csp_ivlen == 8 && next_counter < counter[0]) { todo -= next_counter * CHACHA_BLK_SIZE; next_counter = 0; } @@ -399,7 +401,7 @@ ossl_chacha20_poly1305_decrypt(struct cryptop *crp, ChaCha20_ctr32(out, in, todo, key, counter); counter[0] = next_counter; - if (counter[0] == 0) + if (csp->csp_ivlen == 8 && counter[0] == 0) counter[1]++; if (out == block) { diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c index 3a71e53129be..85c22fd51ee2 100644 --- a/sys/opencrypto/crypto.c +++ b/sys/opencrypto/crypto.c @@ -852,10 +852,15 @@ check_csp(const struct crypto_session_params *csp) return (false); break; case CRYPTO_AES_NIST_GCM_16: - case CRYPTO_CHACHA20_POLY1305: if (csp->csp_auth_mlen > 16) return (false); break; + case CRYPTO_CHACHA20_POLY1305: + if (csp->csp_ivlen != 8 && csp->csp_ivlen != 12) + return (false); + if (csp->csp_auth_mlen > POLY1305_HASH_LEN) + return (false); + break; } break; case CSP_MODE_ETA: diff --git a/sys/opencrypto/cryptosoft.c b/sys/opencrypto/cryptosoft.c index e51bade8a3f8..94ba1a5af8f5 100644 --- a/sys/opencrypto/cryptosoft.c +++ b/sys/opencrypto/cryptosoft.c @@ -1393,9 +1393,6 @@ swcr_setup_chacha20_poly1305(struct swcr_session *ses, struct swcr_auth *swa; const struct auth_hash *axf; - if (csp->csp_ivlen != CHACHA20_POLY1305_IV_LEN) - return (EINVAL); - /* First, setup the auth side. */ swa = &ses->swcr_auth; axf = &auth_hash_chacha20_poly1305; diff --git a/sys/opencrypto/xform_chacha20_poly1305.c b/sys/opencrypto/xform_chacha20_poly1305.c index 51ae11c923e7..47d26dbd1d21 100644 --- a/sys/opencrypto/xform_chacha20_poly1305.c +++ b/sys/opencrypto/xform_chacha20_poly1305.c @@ -34,6 +34,7 @@ struct chacha20_poly1305_cipher_ctx { const void *key; uint32_t ic; + bool ietf; char nonce[CHACHA20_POLY1305_IV_LEN]; }; @@ -58,7 +59,8 @@ chacha20_poly1305_reinit(void *vctx, const uint8_t *iv, size_t ivlen) ("%s: invalid nonce length", __func__)); /* Block 0 is used for the poly1305 key. */ - memcpy(ctx->nonce, iv, sizeof(ctx->nonce)); + memcpy(ctx->nonce, iv, ivlen); + ctx->ietf = (ivlen == CHACHA20_POLY1305_IV_LEN); ctx->ic = 1; } @@ -68,8 +70,12 @@ chacha20_poly1305_crypt(void *vctx, const uint8_t *in, uint8_t *out) struct chacha20_poly1305_cipher_ctx *ctx = vctx; int error; - error = crypto_stream_chacha20_ietf_xor_ic(out, in, - CHACHA20_NATIVE_BLOCK_LEN, ctx->nonce, ctx->ic, ctx->key); + if (ctx->ietf) + error = crypto_stream_chacha20_ietf_xor_ic(out, in, + CHACHA20_NATIVE_BLOCK_LEN, ctx->nonce, ctx->ic, ctx->key); + else + error = crypto_stream_chacha20_xor_ic(out, in, + CHACHA20_NATIVE_BLOCK_LEN, ctx->nonce, ctx->ic, ctx->key); KASSERT(error == 0, ("%s failed: %d", __func__, error)); ctx->ic++; } @@ -82,8 +88,12 @@ chacha20_poly1305_crypt_last(void *vctx, const uint8_t *in, uint8_t *out, int error; - error = crypto_stream_chacha20_ietf_xor_ic(out, in, len, ctx->nonce, - ctx->ic, ctx->key); + if (ctx->ietf) + error = crypto_stream_chacha20_ietf_xor_ic(out, in, len, + ctx->nonce, ctx->ic, ctx->key); + else + error = crypto_stream_chacha20_xor_ic(out, in, len, ctx->nonce, + ctx->ic, ctx->key); KASSERT(error == 0, ("%s failed: %d", __func__, error)); } @@ -129,7 +139,16 @@ chacha20_poly1305_Reinit(void *vctx, const uint8_t *nonce, u_int noncelen) struct chacha20_poly1305_auth_ctx *ctx = vctx; char block[CHACHA20_NATIVE_BLOCK_LEN]; - crypto_stream_chacha20_ietf(block, sizeof(block), nonce, ctx->key); + switch (noncelen) { + case 8: + crypto_stream_chacha20(block, sizeof(block), nonce, ctx->key); + break; + case CHACHA20_POLY1305_IV_LEN: + crypto_stream_chacha20_ietf(block, sizeof(block), nonce, ctx->key); + break; + default: + __assert_unreachable(); + } crypto_onetimeauth_poly1305_init(&ctx->state, block); explicit_bzero(block, sizeof(block)); } diff --git a/tools/tools/crypto/cryptocheck.c b/tools/tools/crypto/cryptocheck.c index 63c6ce1f9d28..05b761a0c87a 100644 --- a/tools/tools/crypto/cryptocheck.c +++ b/tools/tools/crypto/cryptocheck.c @@ -126,7 +126,7 @@ * aes-ccm 128-bit AES-CCM * aes-ccm192 192-bit AES-CCM * aes-ccm256 256-bit AES-CCM - * chacha20-poly1305 Chacha20 (96 bit nonce) with Poly1305 per RFC 8439 + * chacha20-poly1305 Chacha20 with Poly1305 per RFC 8439 */ #include @@ -233,7 +233,7 @@ static const struct alg { .evp_cipher = EVP_aes_256_ccm }, { .name = "chacha20-poly1305", .cipher = CRYPTO_CHACHA20_POLY1305, .type = T_AEAD, .tag_len = POLY1305_HASH_LEN, - .iv_sizes = { CHACHA20_POLY1305_IV_LEN }, + .iv_sizes = { CHACHA20_POLY1305_IV_LEN, 8 }, .evp_cipher = EVP_chacha20_poly1305 }, }; From nobody Wed Oct 6 21:10:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B00C512D47EF; Wed, 6 Oct 2021 21:10: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 4HPnDT06JQz3Hqq; Wed, 6 Oct 2021 21:10: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 6FCBB26FD9; Wed, 6 Oct 2021 21:10: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 196LAiPT062428; Wed, 6 Oct 2021 21:10:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LAiqj062427; Wed, 6 Oct 2021 21:10:44 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:10:44 GMT Message-Id: <202110062110.196LAiqj062427@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: ac847dbf7368 - main - Bump __FreeBSD_version for OCF changes to support variable nonce lengths. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: ac847dbf73685a5df9f70bbcdefa9fdeb559071d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ac847dbf73685a5df9f70bbcdefa9fdeb559071d commit ac847dbf73685a5df9f70bbcdefa9fdeb559071d Author: John Baldwin AuthorDate: 2021-10-06 21:09:18 +0000 Commit: John Baldwin CommitDate: 2021-10-06 21:09:18 +0000 Bump __FreeBSD_version for OCF changes to support variable nonce lengths. Sponsored by: The FreeBSD Foundation --- sys/sys/param.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sys/param.h b/sys/sys/param.h index 899ae1793b28..9a016e35323e 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 1400035 +#define __FreeBSD_version 1400036 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From nobody Wed Oct 6 21:11:01 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 551EC12D52A9 for ; Wed, 6 Oct 2021 21:11:17 +0000 (UTC) (envelope-from kevin.bowling@kev009.com) Received: from mail-yb1-xb2d.google.com (mail-yb1-xb2d.google.com [IPv6:2607:f8b0:4864:20::b2d]) (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 4HPnDy4SbWz3J5b for ; Wed, 6 Oct 2021 21:11:14 +0000 (UTC) (envelope-from kevin.bowling@kev009.com) Received: by mail-yb1-xb2d.google.com with SMTP id r1so8478066ybo.10 for ; Wed, 06 Oct 2021 14:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kev009.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=up768brcJ8vDfDIFmKAjKP2bJU4MUldduGn2hQLjrH0=; b=ojKjEQ6BMk/XqMrTNi64yKbJG4OPS+pO/yxWIdCyW/79KJSYMLRWagbcAGIuyTlqL6 iIAduBBfOClnzUjKn/XaKlhEkbOCtIVOQVWwPRvpIfdipi35nZBFBHjdvposYHvF0b0N EptNVWI7MymgtU/PpN5ZnBl8Urv48XkwOmIdk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=up768brcJ8vDfDIFmKAjKP2bJU4MUldduGn2hQLjrH0=; b=EzBEa5aGe4i3grI8DMaBDZj6uDjQYEFDoY6dFMai8nkFjvkipD0UDsjz6e4uiTcpnn UI0LtefgBwDYEXU0WhDJzBvWFMmRWHBi3v4r81LE54cZNT9x8mgp8KSzNMhSRsj7txrP m51RGHHzhwdmSc/142zFiJ0fVY3hpnUr13Lx/lMrEDDSyRIBPJyo3z1TR9kif13uYL7S WC1cc8lySVGNDl6BWvnrtqUaCEMVCjRP6u+BoopyOyYPbDnEqfpgkM1hY+26EJXuqYMY D4sX15z2OIRYnx92ujxJlesZ3anys8zZdybFMdbZ8zhneT3lP5MZ3fJK/sWc/2TBp0x/ raiQ== X-Gm-Message-State: AOAM5306o9/sM76aadhfA03UzqvYZtCBM1iRo/8fAzVNTduAkitV6kAQ V45coNAat1hCDycnbgtCpQga+6Zr48LyA3q08C+Tvhp4mS2MoDS5ep0= X-Google-Smtp-Source: ABdhPJwgi4QC4W8xaWDc6irVuRAYB3cNdu7iiDz1Qriazh+EF/xzWXV+1LDDcXZYfHa7PKluhtZEOREhERFqVFZGJyE= X-Received: by 2002:a25:bb08:: with SMTP id z8mr487736ybg.306.1633554673807; Wed, 06 Oct 2021 14:11:13 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> <20211004101726.wraje5ol5vwbhjcv@pleb> In-Reply-To: From: Kevin Bowling Date: Wed, 6 Oct 2021 14:11:01 -0700 Message-ID: Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Hans Petter Selasky Cc: Christos Margiolis , Mateusz Piotrowski <0mp@freebsd.org>, src-committers , "" , "dev-commits-src-main@FreeBSD.org" Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HPnDy4SbWz3J5b X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Wed, Oct 6, 2021 at 1:43 PM Hans Petter Selasky wrote: > > On 10/6/21 10:37 PM, Kevin Bowling wrote: > > I still get a bunch of spam from rc.d on boot and it doesn't seem to > > save my mixer settings on shutdown, is there some settings file I > > should blow away or is there a better way to handle upgrades? > > Hi Kevin, > > Did you install the new /etc/rc.d/mixer script? > > Or do you see this diff: There is no diff with 'diff -u /usr/src/libexec/rc/rc.d/mixer /etc/rc.d/mixer' for me. > > > diff -u /usr/src/libexec/rc/rc.d/mixer /etc/rc.d/mixer > > --- /usr/src/libexec/rc/rc.d/mixer 2021-09-22 22:09:36.193543000 +0200 > > +++ /etc/rc.d/mixer 2019-12-26 22:43:45.276389000 +0100 > > @@ -58,7 +58,7 @@ > > > > dev="/dev/${1}" > > if [ -r ${dev} ]; then > > - /usr/sbin/mixer -f ${dev} -o > /var/db/${1}-state 2>/dev/null > > + /usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null > > fi > > } > > --HPS From nobody Wed Oct 6 21:29:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7073812DE53B for ; Wed, 6 Oct 2021 21:29: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 4HPnf92m7Cz3llq; Wed, 6 Oct 2021 21:29: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 34A552761D; Wed, 6 Oct 2021 21:29: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 196LTbaP077521; Wed, 6 Oct 2021 21:29:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LTbVI077520; Wed, 6 Oct 2021 21:29:37 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:29:37 GMT Message-Id: <202110062129.196LTbVI077520@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: =?utf-8?Q?Stefan E=C3=9Fer?= Subject: git: 5d58a5157172..6f49f5cdde1c - vendor/bc - vendor branch updated List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/vendor/bc X-Git-Reftype: branch X-Git-Commit: 6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5 X-Git-Oldrev: 5d58a51571721190681c50d4bd3a1f45e6282d72 X-Git-Newrev: 6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch vendor/bc has been updated by se: URL: https://cgit.FreeBSD.org/src/log/?id=5d58a5157172..6f49f5cdde1c 6f49f5cdde1c vendor/bc: update to version 5.1.1 From nobody Wed Oct 6 21:29:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7AA8712DE4FD for ; Wed, 6 Oct 2021 21:29: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 4HPnf936nBz3lrZ; Wed, 6 Oct 2021 21:29: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 4AF23277B0; Wed, 6 Oct 2021 21:29: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 196LTbpn077549; Wed, 6 Oct 2021 21:29:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LTbQJ077548; Wed, 6 Oct 2021 21:29:37 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:29:37 GMT Message-Id: <202110062129.196LTbQJ077548@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org From: =?utf-8?Q?Stefan E=C3=9Fer?= Subject: git: 48cee0c11263 - Create tag vendor/bc/5.1.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/tags/vendor/bc/5.1.1 X-Git-Reftype: annotated tag X-Git-Commit: 48cee0c112630cfc1113897f1de3d4c136e2dddf Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The annotated tag vendor/bc/5.1.1 has been created by se: URL: https://cgit.FreeBSD.org/src/tag/?h=vendor/bc/5.1.1 tag vendor/bc/5.1.1 Tagger: Stefan Eßer TaggerDate: 2021-10-06 21:29:02 +0000 vendor/bc: tag version 5.1.1 commit 6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5 Author: Stefan Eßer AuthorDate: 2021-10-06 21:27:16 +0000 Commit: Stefan Eßer CommitDate: 2021-10-06 21:27:16 +0000 vendor/bc: update to version 5.1.1 This update fixes a parser issue, which in special situations could reject syntactically correct if statements. From nobody Wed Oct 6 21:40:23 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id F3B4412DFBE7; Wed, 6 Oct 2021 21:40: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 4HPntb6VSWz3mlw; Wed, 6 Oct 2021 21:40: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 B9A69274DB; Wed, 6 Oct 2021 21:40: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 196LeN6V099555; Wed, 6 Oct 2021 21:40:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196LeN3r099553; Wed, 6 Oct 2021 21:40:23 GMT (envelope-from git) Date: Wed, 6 Oct 2021 21:40:23 GMT Message-Id: <202110062140.196LeN3r099553@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: a30efc5ca727 - main - contrib/bc: update to version 5.1.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: a30efc5ca7272e446abb71f0d72c76539f267bb6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by se: URL: https://cgit.FreeBSD.org/src/commit/?id=a30efc5ca7272e446abb71f0d72c76539f267bb6 commit a30efc5ca7272e446abb71f0d72c76539f267bb6 Merge: ac847dbf7368 6f49f5cdde1c Author: Stefan Eßer AuthorDate: 2021-10-06 21:30:59 +0000 Commit: Stefan Eßer CommitDate: 2021-10-06 21:30:59 +0000 contrib/bc: update to version 5.1.1 Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5' contrib/bc/NEWS.md | 8 ++++++ contrib/bc/include/bc.h | 9 +++++++ contrib/bc/include/version.h | 2 +- contrib/bc/manuals/build.md | 6 ++--- contrib/bc/src/bc_parse.c | 47 +++++++++++++++++++++++++++----- contrib/bc/src/vm.c | 43 +++++------------------------ contrib/bc/tests/bc/scripts/all.txt | 2 ++ contrib/bc/tests/bc/scripts/ifs.bc | 49 ++++++++++++++++++++++++++++++++++ contrib/bc/tests/bc/scripts/ifs.txt | 18 +++++++++++++ contrib/bc/tests/bc/scripts/ifs2.bc | 33 +++++++++++++++++++++++ contrib/bc/tests/bc/scripts/ifs2.txt | 34 +++++++++++++++++++++++ contrib/bc/tests/bc/stdin2.txt | 3 +++ contrib/bc/tests/bc/stdin2_results.txt | 21 +++++++++++++++ contrib/bc/tests/stdin.sh | 4 +-- contrib/bc/vs/bin/some.txt | 0 contrib/bc/vs/tests/some.txt | 0 16 files changed, 230 insertions(+), 49 deletions(-) diff --cc contrib/bc/tests/bc/scripts/ifs.bc index 000000000000,9d6ab2dbb0ef..9d6ab2dbb0ef mode 000000,100644..100644 --- a/contrib/bc/tests/bc/scripts/ifs.bc +++ b/contrib/bc/tests/bc/scripts/ifs.bc diff --cc contrib/bc/tests/bc/scripts/ifs.txt index 000000000000,56e07330f1f2..56e07330f1f2 mode 000000,100644..100644 --- a/contrib/bc/tests/bc/scripts/ifs.txt +++ b/contrib/bc/tests/bc/scripts/ifs.txt diff --cc contrib/bc/tests/bc/scripts/ifs2.bc index 000000000000,052ef06ee4e3..052ef06ee4e3 mode 000000,100644..100644 --- a/contrib/bc/tests/bc/scripts/ifs2.bc +++ b/contrib/bc/tests/bc/scripts/ifs2.bc diff --cc contrib/bc/tests/bc/scripts/ifs2.txt index 000000000000,b226e98ad44b..b226e98ad44b mode 000000,100644..100644 --- a/contrib/bc/tests/bc/scripts/ifs2.txt +++ b/contrib/bc/tests/bc/scripts/ifs2.txt From nobody Wed Oct 6 23:23:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9FB1D17E9D1F; Wed, 6 Oct 2021 23:23: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 4HPrB745Ldz3txj; Wed, 6 Oct 2021 23:23: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 6C62D10F3; Wed, 6 Oct 2021 23:23: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 196NNx3r039004; Wed, 6 Oct 2021 23:23:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196NNx0t039003; Wed, 6 Oct 2021 23:23:59 GMT (envelope-from git) Date: Wed, 6 Oct 2021 23:23:59 GMT Message-Id: <202110062323.196NNx0t039003@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 9b3e252e59c6 - main - e1000: Lock nvm print sysctl List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9b3e252e59c6e63594fb20e3f65188dab9e1eeff Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kbowling (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=9b3e252e59c6e63594fb20e3f65188dab9e1eeff commit 9b3e252e59c6e63594fb20e3f65188dab9e1eeff Author: Kevin Bowling AuthorDate: 2021-10-06 23:20:26 +0000 Commit: Kevin Bowling CommitDate: 2021-10-06 23:20:26 +0000 e1000: Lock nvm print sysctl Otherwise results in KASSERT with debug kernels because we rely on the iflib CTX lock to implement the software serialization to the NVM model Reviewed by: gallatin MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D32333 --- sys/dev/e1000/if_em.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 3153a44000c5..52eff393e848 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -4510,20 +4510,27 @@ em_sysctl_nvm_info(SYSCTL_HANDLER_ARGS) static void em_print_nvm_info(struct e1000_softc *sc) { + struct e1000_hw *hw = &sc->hw; + struct sx *iflib_ctx_lock = iflib_ctx_lock_get(sc->ctx); u16 eeprom_data; int i, j, row = 0; /* Its a bit crude, but it gets the job done */ printf("\nInterface EEPROM Dump:\n"); printf("Offset\n0x0000 "); + + /* We rely on the IFLIB_CTX_LOCK as part of NVM locking model */ + sx_xlock(iflib_ctx_lock); + ASSERT_CTX_LOCK_HELD(hw); for (i = 0, j = 0; i < 32; i++, j++) { if (j == 8) { /* Make the offset block */ j = 0; ++row; printf("\n0x00%x0 ",row); } - e1000_read_nvm(&sc->hw, i, 1, &eeprom_data); + e1000_read_nvm(hw, i, 1, &eeprom_data); printf("%04x ", eeprom_data); } + sx_xunlock(iflib_ctx_lock); printf("\n"); } From nobody Wed Oct 6 23:28:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5ABD917EA57A; Wed, 6 Oct 2021 23:28: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 4HPrGp23dQz3vht; Wed, 6 Oct 2021 23:28: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 26576FA8; Wed, 6 Oct 2021 23:28: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 196NS2DO039665; Wed, 6 Oct 2021 23:28:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 196NS2OS039664; Wed, 6 Oct 2021 23:28:02 GMT (envelope-from git) Date: Wed, 6 Oct 2021 23:28:02 GMT Message-Id: <202110062328.196NS2OS039664@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 293663f4da9e - main - e1000: print EEPROM/NVM/OROM versions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 293663f4da9e8b8aeb106ce3b73a8ed2aa2a8a90 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kbowling (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=293663f4da9e8b8aeb106ce3b73a8ed2aa2a8a90 commit 293663f4da9e8b8aeb106ce3b73a8ed2aa2a8a90 Author: Kevin Bowling AuthorDate: 2021-10-06 23:25:03 +0000 Commit: Kevin Bowling CommitDate: 2021-10-06 23:25:03 +0000 e1000: print EEPROM/NVM/OROM versions This is useful for diagnosing problems. In particular, the errata sheets identify the EEPROM version for many fixes. Reviewed by: gallatin MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D32333 --- sys/dev/e1000/if_em.c | 185 ++++++++++++++++++++++++++++++++++++++++++-------- sys/dev/e1000/if_em.h | 3 + 2 files changed, 158 insertions(+), 30 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 52eff393e848..b3775b351c70 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -305,6 +305,10 @@ static void em_if_vlan_filter_write(struct e1000_softc *); static void em_setup_vlan_hw_support(struct e1000_softc *); static int em_sysctl_nvm_info(SYSCTL_HANDLER_ARGS); static void em_print_nvm_info(struct e1000_softc *); +static void em_fw_version_locked(if_ctx_t); +static void em_sbuf_fw_version(struct e1000_fw_version *, struct sbuf *); +static void em_print_fw_version(struct e1000_softc *); +static int em_sysctl_print_fw_version(SYSCTL_HANDLER_ARGS); static int em_sysctl_debug_info(SYSCTL_HANDLER_ARGS); static int em_get_rs(SYSCTL_HANDLER_ARGS); static void em_print_debug_info(struct e1000_softc *); @@ -792,6 +796,8 @@ em_if_attach_pre(if_ctx_t ctx) if_softc_ctx_t scctx; device_t dev; struct e1000_hw *hw; + struct sysctl_oid_list *child; + struct sysctl_ctx_list *ctx_list; int error = 0; INIT_DEBUGOUT("em_if_attach_pre: begin"); @@ -806,37 +812,38 @@ em_if_attach_pre(if_ctx_t ctx) sc->tx_process_limit = scctx->isc_ntxd[0]; + /* Determine hardware and mac info */ + em_identify_hardware(ctx); + /* SYSCTL stuff */ - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "nvm", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, - sc, 0, em_sysctl_nvm_info, "I", "NVM Information"); - - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "debug", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, - sc, 0, em_sysctl_debug_info, "I", "Debug Information"); - - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, - sc, 0, em_set_flowcntl, "I", "Flow Control"); - - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "reg_dump", + ctx_list = device_get_sysctl_ctx(dev); + child = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "nvm", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + em_sysctl_nvm_info, "I", "NVM Information"); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fw_version", + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, + em_sysctl_print_fw_version, "A", + "Prints FW/NVM Versions"); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "debug", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + em_sysctl_debug_info, "I", "Debug Information"); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fc", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + em_set_flowcntl, "I", "Flow Control"); + + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "reg_dump", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, em_get_regs, "A", "Dump Registers"); - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "rs_dump", + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "rs_dump", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, em_get_rs, "I", "Dump RS indexes"); - /* Determine hardware and mac info */ - em_identify_hardware(ctx); - scctx->isc_tx_nsegments = EM_MAX_SCATTER; scctx->isc_nrxqsets_max = scctx->isc_ntxqsets_max = em_set_num_queues(ctx); if (bootverbose) @@ -1045,12 +1052,9 @@ em_if_attach_pre(if_ctx_t ctx) /* Sysctl for setting Energy Efficient Ethernet */ hw->dev_spec.ich8lan.eee_disable = eee_setting; - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "eee_control", - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, - sc, 0, em_sysctl_eee, "I", - "Disable Energy Efficient Ethernet"); + SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "eee_control", + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, sc, 0, + em_sysctl_eee, "I", "Disable Energy Efficient Ethernet"); /* ** Start from a known state, this is @@ -1093,6 +1097,11 @@ em_if_attach_pre(if_ctx_t ctx) } } + /* Save the EEPROM/NVM versions, must be done under IFLIB_CTX_LOCK */ + em_fw_version_locked(ctx); + + em_print_fw_version(sc); + /* Disable ULP support */ e1000_disable_ulp_lpt_lp(hw, true); @@ -4476,6 +4485,122 @@ em_add_hw_stats(struct e1000_softc *sc) "Interrupt Cause Receiver Overrun Count"); } +static void +em_fw_version_locked(if_ctx_t ctx) +{ + struct e1000_softc *sc = iflib_get_softc(ctx); + struct e1000_hw *hw = &sc->hw; + struct e1000_fw_version *fw_ver = &sc->fw_ver; + uint16_t eep = 0; + + /* + * em_fw_version_locked() must run under the IFLIB_CTX_LOCK to meet the + * NVM locking model, so we do it in em_if_attach_pre() and store the + * info in the softc + */ + ASSERT_CTX_LOCK_HELD(hw); + + *fw_ver = (struct e1000_fw_version){0}; + + if (hw->mac.type >= igb_mac_min) { + /* + * Use the Shared Code for igb(4) + */ + e1000_get_fw_version(hw, fw_ver); + } else { + /* + * Otherwise, EEPROM version should be present on (almost?) all + * devices here + */ + if(e1000_read_nvm(hw, NVM_VERSION, 1, &eep)) { + INIT_DEBUGOUT("can't get EEPROM version"); + return; + } + + fw_ver->eep_major = (eep & NVM_MAJOR_MASK) >> NVM_MAJOR_SHIFT; + fw_ver->eep_minor = (eep & NVM_MINOR_MASK) >> NVM_MINOR_SHIFT; + fw_ver->eep_build = (eep & NVM_IMAGE_ID_MASK); + } +} + +static void +em_sbuf_fw_version(struct e1000_fw_version *fw_ver, struct sbuf *buf) +{ + const char *space = ""; + + if (fw_ver->eep_major || fw_ver->eep_minor || fw_ver->eep_build) { + sbuf_printf(buf, "EEPROM V%d.%d-%d", fw_ver->eep_major, + fw_ver->eep_minor, fw_ver->eep_build); + space = " "; + } + + if (fw_ver->invm_major || fw_ver->invm_minor || fw_ver->invm_img_type) { + sbuf_printf(buf, "%sNVM V%d.%d imgtype%d", + space, fw_ver->invm_major, fw_ver->invm_minor, + fw_ver->invm_img_type); + space = " "; + } + + if (fw_ver->or_valid) { + sbuf_printf(buf, "%sOption ROM V%d-b%d-p%d", + space, fw_ver->or_major, fw_ver->or_build, + fw_ver->or_patch); + space = " "; + } + + if (fw_ver->etrack_id) + sbuf_printf(buf, "%seTrack 0x%08x", space, fw_ver->etrack_id); +} + +static void +em_print_fw_version(struct e1000_softc *sc ) +{ + device_t dev = sc->dev; + struct sbuf *buf; + int error = 0; + + buf = sbuf_new_auto(); + if (!buf) { + device_printf(dev, "Could not allocate sbuf for output.\n"); + return; + } + + em_sbuf_fw_version(&sc->fw_ver, buf); + + error = sbuf_finish(buf); + if (error) + device_printf(dev, "Error finishing sbuf: %d\n", error); + else if (sbuf_len(buf)) + device_printf(dev, "%s\n", sbuf_data(buf)); + + sbuf_delete(buf); +} + +static int +em_sysctl_print_fw_version(SYSCTL_HANDLER_ARGS) +{ + struct e1000_softc *sc = (struct e1000_softc *)arg1; + device_t dev = sc->dev; + struct sbuf *buf; + int error = 0; + + buf = sbuf_new_for_sysctl(NULL, NULL, 128, req); + if (!buf) { + device_printf(dev, "Could not allocate sbuf for output.\n"); + return (ENOMEM); + } + + em_sbuf_fw_version(&sc->fw_ver, buf); + + error = sbuf_finish(buf); + if (error) + device_printf(dev, "Error finishing sbuf: %d\n", error); + + sbuf_delete(buf); + + return (0); +} + /********************************************************************** * * This routine provides a way to dump out the adapter eeprom, diff --git a/sys/dev/e1000/if_em.h b/sys/dev/e1000/if_em.h index 41deecb69bf3..33ba22a88552 100644 --- a/sys/dev/e1000/if_em.h +++ b/sys/dev/e1000/if_em.h @@ -510,6 +510,9 @@ struct e1000_softc { u64 que_mask; + /* We need to store this at attach due to e1000 hw/sw locking model */ + struct e1000_fw_version fw_ver; + struct em_int_delay_info tx_int_delay; struct em_int_delay_info tx_abs_int_delay; struct em_int_delay_info rx_int_delay; From nobody Thu Oct 7 00:07:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5D74117EDCE0; Thu, 7 Oct 2021 00:07: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 4HPs8R1z7Qz4StP; Thu, 7 Oct 2021 00:07: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 18E9615B8; Thu, 7 Oct 2021 00:07: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 19707Zva093565; Thu, 7 Oct 2021 00:07:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19707YCq093564; Thu, 7 Oct 2021 00:07:34 GMT (envelope-from git) Date: Thu, 7 Oct 2021 00:07:34 GMT Message-Id: <202110070007.19707YCq093564@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Glen Barber Subject: git: 7ac2ccc068e0 - stable/12 - 12.3: update stable/12 to -PRERELEASE to start the release cycle List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gjb X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 7ac2ccc068e0f8b92691b71ce5a695d10284bd25 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gjb: URL: https://cgit.FreeBSD.org/src/commit/?id=7ac2ccc068e0f8b92691b71ce5a695d10284bd25 commit 7ac2ccc068e0f8b92691b71ce5a695d10284bd25 Author: Glen Barber AuthorDate: 2021-10-07 00:07:19 +0000 Commit: Glen Barber CommitDate: 2021-10-07 00:07:19 +0000 12.3: update stable/12 to -PRERELEASE to start the release cycle Approved by: re (implicit) Sponsored by: Rubicon Communications, LLC ("Netgate") --- Makefile.inc1 | 4 ++-- Makefile.libcompat | 6 +++--- lib/clang/llvm.build.mk | 2 +- sys/conf/newvers.sh | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index 08574880be97..c5b903e8ed90 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -126,9 +126,9 @@ TARGET_ABI= gnueabi .endif .endif MACHINE_ABI?= unknown -MACHINE_TRIPLE?=${MACHINE_ARCH:S/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${MACHINE_ABI}-freebsd12.2 +MACHINE_TRIPLE?=${MACHINE_ARCH:S/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${MACHINE_ABI}-freebsd12.3 TARGET_ABI?= unknown -TARGET_TRIPLE?= ${TARGET_ARCH:S/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${TARGET_ABI}-freebsd12.2 +TARGET_TRIPLE?= ${TARGET_ARCH:S/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${TARGET_ABI}-freebsd12.3 KNOWN_ARCHES?= aarch64/arm64 \ amd64 \ arm \ diff --git a/Makefile.libcompat b/Makefile.libcompat index 89509a266af0..6d403ed2503a 100644 --- a/Makefile.libcompat +++ b/Makefile.libcompat @@ -17,7 +17,7 @@ LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} .if ${WANT_COMPILER_TYPE} == gcc || \ (defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc) .else -LIB32CPUFLAGS+= -target x86_64-unknown-freebsd12.2 +LIB32CPUFLAGS+= -target x86_64-unknown-freebsd12.3 .endif LIB32CPUFLAGS+= -m32 LIB32WMAKEENV= MACHINE=i386 MACHINE_ARCH=i386 \ @@ -49,9 +49,9 @@ LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} .endif .else .if ${TARGET_ARCH:Mmips64el*} != "" -LIB32CPUFLAGS= -target mipsel-unknown-freebsd12.2 +LIB32CPUFLAGS= -target mipsel-unknown-freebsd12.3 .else -LIB32CPUFLAGS= -target mips-unknown-freebsd12.2 +LIB32CPUFLAGS= -target mips-unknown-freebsd12.3 .endif .endif LIB32CPUFLAGS+= -mabi=32 diff --git a/lib/clang/llvm.build.mk b/lib/clang/llvm.build.mk index bae84d3a84ff..d83a85dd38e0 100644 --- a/lib/clang/llvm.build.mk +++ b/lib/clang/llvm.build.mk @@ -40,7 +40,7 @@ TARGET_ABI= -gnueabi TARGET_ABI= .endif VENDOR= unknown -OS_VERSION= freebsd12.2 +OS_VERSION= freebsd12.3 LLVM_TARGET_TRIPLE?= ${TARGET_ARCH:C/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${VENDOR}-${OS_VERSION}${TARGET_ABI} LLVM_BUILD_TRIPLE?= ${BUILD_ARCH:C/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${VENDOR}-${OS_VERSION} diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 22ef8dd1ac33..75a68fddfaf9 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -48,8 +48,8 @@ # upper case variables starting in column 1 are on one line w/o continuation. TYPE="FreeBSD" -REVISION="12.2" -BRANCH="STABLE" +REVISION="12.3" +BRANCH="PRERELEASE" if [ -n "${BRANCH_OVERRIDE}" ]; then BRANCH=${BRANCH_OVERRIDE} fi From nobody Thu Oct 7 00:26:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0251612B8F69; Thu, 7 Oct 2021 00:26: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 4HPsZh69DNz4XKt; Thu, 7 Oct 2021 00:26: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 B35BC1BC0; Thu, 7 Oct 2021 00:26: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 1970QqEr019699; Thu, 7 Oct 2021 00:26:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1970QqTf019698; Thu, 7 Oct 2021 00:26:52 GMT (envelope-from git) Date: Thu, 7 Oct 2021 00:26:52 GMT Message-Id: <202110070026.1970QqTf019698@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 10ff414c14ee - main - Import libcbor at 'contrib/libcbor/' List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 10ff414c14eef433d8157f0c17904d740693933b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=10ff414c14eef433d8157f0c17904d740693933b commit 10ff414c14eef433d8157f0c17904d740693933b Merge: 293663f4da9e 5b2defbd2a1a Author: Ed Maste AuthorDate: 2021-10-07 00:26:10 +0000 Commit: Ed Maste CommitDate: 2021-10-07 00:26:10 +0000 Import libcbor at 'contrib/libcbor/' git-subtree-dir: contrib/libcbor git-subtree-mainline: 293663f4da9e8b8aeb106ce3b73a8ed2aa2a8a90 git-subtree-split: 5b2defbd2a1aa991bd0a2855eef8e15107572747 contrib/libcbor/.clang-format | 151 ++ contrib/libcbor/.github/workflows/fuzz.yml | 23 + contrib/libcbor/.gitignore | 8 + contrib/libcbor/.travis.yml | 66 + contrib/libcbor/CHANGELOG.md | 109 + contrib/libcbor/CMakeLists.txt | 159 ++ contrib/libcbor/CMakeModules/FindCJSON.cmake | 9 + contrib/libcbor/CMakeModules/FindCMocka.cmake | 49 + contrib/libcbor/CMakeModules/LibFindMacros.cmake | 120 + contrib/libcbor/Doxyfile | 2417 ++++++++++++++++++++ contrib/libcbor/LICENSE.md | 21 + contrib/libcbor/README.md | 122 + contrib/libcbor/appveyor.yml | 27 + contrib/libcbor/clang-format.sh | 17 + contrib/libcbor/codecov.yml | 2 + contrib/libcbor/doc/Makefile | 180 ++ contrib/libcbor/doc/doxy_frontpage.md | 37 + contrib/libcbor/doc/make.bat | 242 ++ contrib/libcbor/doc/source/api.rst | 39 + contrib/libcbor/doc/source/api/decoding.rst | 53 + contrib/libcbor/doc/source/api/encoding.rst | 23 + .../doc/source/api/item_reference_counting.rst | 41 + contrib/libcbor/doc/source/api/item_types.rst | 41 + contrib/libcbor/doc/source/api/type_0_1.rst | 91 + contrib/libcbor/doc/source/api/type_2.rst | 66 + contrib/libcbor/doc/source/api/type_3.rst | 55 + contrib/libcbor/doc/source/api/type_4.rst | 62 + contrib/libcbor/doc/source/api/type_5.rst | 44 + contrib/libcbor/doc/source/api/type_6.rst | 21 + contrib/libcbor/doc/source/api/type_7.rst | 75 + contrib/libcbor/doc/source/changelog.rst | 4 + contrib/libcbor/doc/source/conf.py | 296 +++ contrib/libcbor/doc/source/development.rst | 143 ++ contrib/libcbor/doc/source/getting_started.rst | 190 ++ contrib/libcbor/doc/source/img/win_1.png | Bin 0 -> 29291 bytes contrib/libcbor/doc/source/img/win_2.png | Bin 0 -> 20179 bytes contrib/libcbor/doc/source/img/win_3.png | Bin 0 -> 47224 bytes contrib/libcbor/doc/source/img/win_4.png | Bin 0 -> 11272 bytes contrib/libcbor/doc/source/img/win_5.png | Bin 0 -> 29490 bytes contrib/libcbor/doc/source/img/win_6.png | Bin 0 -> 25195 bytes contrib/libcbor/doc/source/index.rst | 40 + contrib/libcbor/doc/source/internal.rst | 128 ++ contrib/libcbor/doc/source/requirements.txt | 39 + contrib/libcbor/doc/source/rfc_conformance.rst | 17 + contrib/libcbor/doc/source/streaming.rst | 13 + contrib/libcbor/doc/source/streaming/decoding.rst | 40 + contrib/libcbor/doc/source/streaming/encoding.rst | 4 + contrib/libcbor/doc/source/tests.rst | 39 + contrib/libcbor/doc/source/using.rst | 173 ++ contrib/libcbor/examples/CMakeLists.txt | 25 + contrib/libcbor/examples/cjson2cbor.c | 145 ++ contrib/libcbor/examples/create_items.c | 33 + contrib/libcbor/examples/data/floats.cbor | Bin 0 -> 39 bytes contrib/libcbor/examples/data/indef_string.cbor | 1 + contrib/libcbor/examples/data/integer.cbor | 1 + contrib/libcbor/examples/data/json_example.json | 6 + contrib/libcbor/examples/data/map.cbor | Bin 0 -> 26 bytes contrib/libcbor/examples/data/nested_array.cbor | 1 + contrib/libcbor/examples/data/tagged_date.cbor | 1 + contrib/libcbor/examples/hello.c | 16 + contrib/libcbor/examples/readfile.c | 78 + contrib/libcbor/examples/sort.c | 41 + contrib/libcbor/examples/streaming_parser.c | 58 + contrib/libcbor/misc/bytes.rb | 3 + contrib/libcbor/misc/file_to_bytes.rb | 5 + contrib/libcbor/misc/hooks/pre-commit | 18 + contrib/libcbor/misc/repeat.rb | 3 + contrib/libcbor/misc/seq.rb | 3 + contrib/libcbor/misc/update_version.py | 38 + contrib/libcbor/oss-fuzz/build.sh | 28 + contrib/libcbor/oss-fuzz/cbor_load_fuzzer.cc | 37 + contrib/libcbor/release.sh | 75 + contrib/libcbor/src/CMakeLists.txt | 45 + contrib/libcbor/src/allocators.c | 19 + contrib/libcbor/src/cbor.c | 345 +++ contrib/libcbor/src/cbor.h | 68 + contrib/libcbor/src/cbor/arrays.c | 135 ++ contrib/libcbor/src/cbor/arrays.h | 116 + contrib/libcbor/src/cbor/bytestrings.c | 117 + contrib/libcbor/src/cbor/bytestrings.h | 132 ++ contrib/libcbor/src/cbor/callbacks.c | 116 + contrib/libcbor/src/cbor/callbacks.h | 187 ++ contrib/libcbor/src/cbor/common.c | 160 ++ contrib/libcbor/src/cbor/common.h | 303 +++ contrib/libcbor/src/cbor/configuration.h.in | 16 + contrib/libcbor/src/cbor/data.h | 255 +++ contrib/libcbor/src/cbor/encoding.c | 192 ++ contrib/libcbor/src/cbor/encoding.h | 109 + contrib/libcbor/src/cbor/floats_ctrls.c | 189 ++ contrib/libcbor/src/cbor/floats_ctrls.h | 212 ++ .../libcbor/src/cbor/internal/builder_callbacks.c | 389 ++++ .../libcbor/src/cbor/internal/builder_callbacks.h | 81 + contrib/libcbor/src/cbor/internal/encoders.c | 98 + contrib/libcbor/src/cbor/internal/encoders.h | 36 + contrib/libcbor/src/cbor/internal/loaders.c | 80 + contrib/libcbor/src/cbor/internal/loaders.h | 36 + contrib/libcbor/src/cbor/internal/memory_utils.c | 44 + contrib/libcbor/src/cbor/internal/memory_utils.h | 39 + contrib/libcbor/src/cbor/internal/stack.c | 33 + contrib/libcbor/src/cbor/internal/stack.h | 41 + contrib/libcbor/src/cbor/internal/unicode.c | 94 + contrib/libcbor/src/cbor/internal/unicode.h | 32 + contrib/libcbor/src/cbor/ints.c | 191 ++ contrib/libcbor/src/cbor/ints.h | 210 ++ contrib/libcbor/src/cbor/maps.c | 125 + contrib/libcbor/src/cbor/maps.h | 112 + contrib/libcbor/src/cbor/serialization.c | 286 +++ contrib/libcbor/src/cbor/serialization.h | 135 ++ contrib/libcbor/src/cbor/streaming.c | 664 ++++++ contrib/libcbor/src/cbor/streaming.h | 37 + contrib/libcbor/src/cbor/strings.c | 133 ++ contrib/libcbor/src/cbor/strings.h | 153 ++ contrib/libcbor/src/cbor/tags.c | 43 + contrib/libcbor/src/cbor/tags.h | 65 + contrib/libcbor/src/libcbor.pc.in | 11 + contrib/libcbor/test/CMakeLists.txt | 29 + contrib/libcbor/test/assertions.c | 53 + contrib/libcbor/test/assertions.h | 34 + contrib/libcbor/test/bad_inputs_test.c | 121 + contrib/libcbor/test/callbacks_test.c | 40 + contrib/libcbor/test/cbor_serialize_test.c | 323 +++ contrib/libcbor/test/cbor_stream_decode_test.c | 599 +++++ contrib/libcbor/test/copy_test.c | 207 ++ contrib/libcbor/test/cpp_linkage_test.cpp | 11 + contrib/libcbor/test/data/callbacks.cbor | Bin 0 -> 79 bytes contrib/libcbor/test/data/callbacks.diag | 1 + contrib/libcbor/test/data/pretty.cbor | 3 + contrib/libcbor/test/data/pretty.diag | 1 + contrib/libcbor/test/fuzz_test.c | 87 + contrib/libcbor/test/memory_allocation_test.c | 277 +++ contrib/libcbor/test/pretty_printer_test.c | 43 + contrib/libcbor/test/stack_over_limit_test.c | 35 + contrib/libcbor/test/stream_expectations.c | 317 +++ contrib/libcbor/test/stream_expectations.h | 151 ++ contrib/libcbor/test/type_0_encoders_test.c | 74 + contrib/libcbor/test/type_0_test.c | 147 ++ contrib/libcbor/test/type_1_encoders_test.c | 75 + contrib/libcbor/test/type_1_test.c | 102 + contrib/libcbor/test/type_2_encoders_test.c | 41 + contrib/libcbor/test/type_2_test.c | 327 +++ contrib/libcbor/test/type_3_encoders_test.c | 41 + contrib/libcbor/test/type_3_test.c | 242 ++ contrib/libcbor/test/type_4_encoders_test.c | 55 + contrib/libcbor/test/type_4_test.c | 127 + contrib/libcbor/test/type_5_encoders_test.c | 40 + contrib/libcbor/test/type_5_test.c | 190 ++ contrib/libcbor/test/type_6_encoders_test.c | 35 + contrib/libcbor/test/type_6_test.c | 117 + contrib/libcbor/test/type_7_encoders_test.c | 109 + contrib/libcbor/test/type_7_test.c | 111 + contrib/libcbor/test/unicode_test.c | 41 + 151 files changed, 16202 insertions(+) diff --cc contrib/libcbor/.clang-format index 000000000000,000000000000..de0dc5e77907 new file mode 100644 --- /dev/null +++ b/contrib/libcbor/.clang-format @@@ -1,0 -1,0 +1,151 @@@ ++--- ++Language: Cpp ++# BasedOnStyle: Google ++AccessModifierOffset: -1 ++AlignAfterOpenBracket: Align ++AlignConsecutiveAssignments: false ++AlignConsecutiveDeclarations: false ++AlignEscapedNewlines: Left ++AlignOperands: true ++AlignTrailingComments: true ++AllowAllParametersOfDeclarationOnNextLine: true ++AllowShortBlocksOnASingleLine: false ++AllowShortCaseLabelsOnASingleLine: false ++AllowShortFunctionsOnASingleLine: All ++AllowShortIfStatementsOnASingleLine: true ++AllowShortLoopsOnASingleLine: true ++AlwaysBreakAfterDefinitionReturnType: None ++AlwaysBreakAfterReturnType: None ++AlwaysBreakBeforeMultilineStrings: true ++AlwaysBreakTemplateDeclarations: true ++BinPackArguments: true ++BinPackParameters: true ++BraceWrapping: ++ AfterClass: false ++ AfterControlStatement: false ++ AfterEnum: false ++ AfterFunction: false ++ AfterNamespace: false ++ AfterObjCDeclaration: false ++ AfterStruct: false ++ AfterUnion: false ++ AfterExternBlock: false ++ BeforeCatch: false ++ BeforeElse: false ++ IndentBraces: false ++ SplitEmptyFunction: true ++ SplitEmptyRecord: true ++ SplitEmptyNamespace: true ++BreakBeforeBinaryOperators: None ++BreakBeforeBraces: Attach ++BreakBeforeInheritanceComma: false ++BreakInheritanceList: BeforeColon ++BreakBeforeTernaryOperators: true ++BreakConstructorInitializersBeforeComma: false ++BreakConstructorInitializers: BeforeColon ++BreakAfterJavaFieldAnnotations: false ++BreakStringLiterals: true ++ColumnLimit: 80 ++CommentPragmas: '^ IWYU pragma:' ++CompactNamespaces: false ++ConstructorInitializerAllOnOneLineOrOnePerLine: true ++ConstructorInitializerIndentWidth: 4 ++ContinuationIndentWidth: 4 ++Cpp11BracedListStyle: true ++DerivePointerAlignment: true ++DisableFormat: false ++ExperimentalAutoDetectBinPacking: false ++FixNamespaceComments: true ++ForEachMacros: ++ - foreach ++ - Q_FOREACH ++ - BOOST_FOREACH ++IncludeBlocks: Preserve ++IncludeCategories: ++ - Regex: '^' ++ Priority: 2 ++ - Regex: '^<.*\.h>' ++ Priority: 1 ++ - Regex: '^<.*' ++ Priority: 2 ++ - Regex: '.*' ++ Priority: 3 ++IncludeIsMainRegex: '([-_](test|unittest))?$' ++IndentCaseLabels: true ++IndentPPDirectives: None ++IndentWidth: 2 ++IndentWrappedFunctionNames: false ++JavaScriptQuotes: Leave ++JavaScriptWrapImports: true ++KeepEmptyLinesAtTheStartOfBlocks: false ++MacroBlockBegin: '' ++MacroBlockEnd: '' ++MaxEmptyLinesToKeep: 1 ++NamespaceIndentation: None ++ObjCBinPackProtocolList: Never ++ObjCBlockIndentWidth: 2 ++ObjCSpaceAfterProperty: false ++ObjCSpaceBeforeProtocolList: true ++PenaltyBreakAssignment: 2 ++PenaltyBreakBeforeFirstCallParameter: 1 ++PenaltyBreakComment: 300 ++PenaltyBreakFirstLessLess: 120 ++PenaltyBreakString: 1000 ++PenaltyBreakTemplateDeclaration: 10 ++PenaltyExcessCharacter: 1000000 ++PenaltyReturnTypeOnItsOwnLine: 200 ++PointerAlignment: Left ++RawStringFormats: ++ - Language: Cpp ++ Delimiters: ++ - cc ++ - CC ++ - cpp ++ - Cpp ++ - CPP ++ - 'c++' ++ - 'C++' ++ CanonicalDelimiter: '' ++ BasedOnStyle: google ++ - Language: TextProto ++ Delimiters: ++ - pb ++ - PB ++ - proto ++ - PROTO ++ EnclosingFunctions: ++ - EqualsProto ++ - EquivToProto ++ - PARSE_PARTIAL_TEXT_PROTO ++ - PARSE_TEST_PROTO ++ - PARSE_TEXT_PROTO ++ - ParseTextOrDie ++ - ParseTextProtoOrDie ++ CanonicalDelimiter: '' ++ BasedOnStyle: google ++ReflowComments: true ++SortIncludes: true ++SortUsingDeclarations: true ++SpaceAfterCStyleCast: false ++SpaceAfterTemplateKeyword: true ++SpaceBeforeAssignmentOperators: true ++SpaceBeforeCpp11BracedList: false ++SpaceBeforeCtorInitializerColon: true ++SpaceBeforeInheritanceColon: true ++SpaceBeforeParens: ControlStatements ++SpaceBeforeRangeBasedForLoopColon: true ++SpaceInEmptyParentheses: false ++SpacesBeforeTrailingComments: 2 ++SpacesInAngles: false ++SpacesInContainerLiterals: true ++SpacesInCStyleCastParentheses: false ++SpacesInParentheses: false ++SpacesInSquareBrackets: false ++Standard: Auto ++StatementMacros: ++ - Q_UNUSED ++ - QT_REQUIRE_VERSION ++TabWidth: 8 ++UseTab: Never ++... ++ diff --cc contrib/libcbor/.github/workflows/fuzz.yml index 000000000000,c5275121868f..c5275121868f mode 000000,100644..100644 --- a/contrib/libcbor/.github/workflows/fuzz.yml +++ b/contrib/libcbor/.github/workflows/fuzz.yml diff --cc contrib/libcbor/.gitignore index 000000000000,000000000000..b6fe00f938ad new file mode 100644 --- /dev/null +++ b/contrib/libcbor/.gitignore @@@ -1,0 -1,0 +1,8 @@@ ++build ++*~ ++nbproject ++.idea ++doxygen_docs ++*/*.out ++cmake-build-debug ++venv diff --cc contrib/libcbor/.travis.yml index 000000000000,288de2903399..288de2903399 mode 000000,100644..100644 --- a/contrib/libcbor/.travis.yml +++ b/contrib/libcbor/.travis.yml diff --cc contrib/libcbor/CHANGELOG.md index 000000000000,0f13a45d6b24..0f13a45d6b24 mode 000000,100644..100644 --- a/contrib/libcbor/CHANGELOG.md +++ b/contrib/libcbor/CHANGELOG.md diff --cc contrib/libcbor/CMakeLists.txt index 000000000000,edba03720d2f..edba03720d2f mode 000000,100644..100644 --- a/contrib/libcbor/CMakeLists.txt +++ b/contrib/libcbor/CMakeLists.txt diff --cc contrib/libcbor/CMakeModules/FindCJSON.cmake index 000000000000,e0629057def7..e0629057def7 mode 000000,100644..100644 --- a/contrib/libcbor/CMakeModules/FindCJSON.cmake +++ b/contrib/libcbor/CMakeModules/FindCJSON.cmake diff --cc contrib/libcbor/CMakeModules/FindCMocka.cmake index 000000000000,770b44afc426..770b44afc426 mode 000000,100644..100644 --- a/contrib/libcbor/CMakeModules/FindCMocka.cmake +++ b/contrib/libcbor/CMakeModules/FindCMocka.cmake diff --cc contrib/libcbor/CMakeModules/LibFindMacros.cmake index 000000000000,baea8c2be928..baea8c2be928 mode 000000,100644..100644 --- a/contrib/libcbor/CMakeModules/LibFindMacros.cmake +++ b/contrib/libcbor/CMakeModules/LibFindMacros.cmake diff --cc contrib/libcbor/Doxyfile index 000000000000,b197d2bcdedc..b197d2bcdedc mode 000000,100644..100644 --- a/contrib/libcbor/Doxyfile +++ b/contrib/libcbor/Doxyfile diff --cc contrib/libcbor/LICENSE.md index 000000000000,49e9b5390364..49e9b5390364 mode 000000,100644..100644 --- a/contrib/libcbor/LICENSE.md +++ b/contrib/libcbor/LICENSE.md diff --cc contrib/libcbor/README.md index 000000000000,000000000000..cffae9191d01 new file mode 100644 --- /dev/null +++ b/contrib/libcbor/README.md @@@ -1,0 -1,0 +1,122 @@@ ++# [libcbor](https://github.com/PJK/libcbor) ++ ++[![Build Status](https://travis-ci.org/PJK/libcbor.svg?branch=master)](https://travis-ci.org/PJK/libcbor) ++[![Build status](https://ci.appveyor.com/api/projects/status/8kkmvmefelsxp5u2?svg=true)](https://ci.appveyor.com/project/PJK/libcbor) ++[![Documentation Status](https://readthedocs.org/projects/libcbor/badge/?version=latest)](https://readthedocs.org/projects/libcbor/?badge=latest) ++[![latest packaged version(s)](https://repology.org/badge/latest-versions/libcbor.svg)](https://repology.org/project/libcbor/versions) ++[![codecov](https://codecov.io/gh/PJK/libcbor/branch/master/graph/badge.svg)](https://codecov.io/gh/PJK/libcbor) ++ ++**libcbor** is a C library for parsing and generating [CBOR](http://tools.ietf.org/html/rfc7049), the general-purpose schema-less binary data format. ++ ++## Main features ++ - Complete RFC conformance ++ - Robust C99 implementation ++ - Layered architecture offers both control and convenience ++ - Flexible memory management ++ - No shared global state - threading friendly ++ - Proper handling of UTF-8 ++ - Full support for streams & incremental processing ++ - Extensive documentation and test suite ++ - No runtime dependencies, small footprint ++ ++## Getting started ++ ++### Compile from source ++ ++```bash ++git clone https://github.com/PJK/libcbor ++cmake -DCMAKE_BUILD_TYPE=Release -DCBOR_CUSTOM_ALLOC=ON libcbor ++make ++make install ++``` ++ ++### Homebrew ++ ++```bash ++brew install libcbor ++``` ++ ++### Ubuntu 18.04 and above ++ ++```bash ++sudo add-apt-repository universe ++sudo apt-get install libcbor-dev ++``` ++ ++### Fedora & RPM friends ++ ++```bash ++yum install libcbor-devel ++``` ++ ++### Others ++ ++
++ Packaged libcbor is available from 15+ major repositories. Click here for more detail ++ ++ [![Packaging status](https://repology.org/badge/vertical-allrepos/libcbor.svg)](https://repology.org/project/libcbor/versions) ++
++ ++## Usage example ++ ++```c ++#include ++#include ++ ++int main(int argc, char * argv[]) ++{ ++ /* Preallocate the map structure */ ++ cbor_item_t * root = cbor_new_definite_map(2); ++ /* Add the content */ ++ cbor_map_add(root, (struct cbor_pair) { ++ .key = cbor_move(cbor_build_string("Is CBOR awesome?")), ++ .value = cbor_move(cbor_build_bool(true)) ++ }); ++ cbor_map_add(root, (struct cbor_pair) { ++ .key = cbor_move(cbor_build_uint8(42)), ++ .value = cbor_move(cbor_build_string("Is the answer")) ++ }); ++ /* Output: `length` bytes of data in the `buffer` */ ++ unsigned char * buffer; ++ size_t buffer_size, ++ length = cbor_serialize_alloc(root, &buffer, &buffer_size); ++ ++ fwrite(buffer, 1, length, stdout); ++ free(buffer); ++ ++ fflush(stdout); ++ cbor_decref(&root); ++} ++``` ++ ++## Documentation ++Get the latest documentation at [libcbor.readthedocs.org](http://libcbor.readthedocs.org/) ++ ++## Contributions ++ ++All bug reports and contributions are welcome. Please see https://github.com/PJK/libcbor for more info. ++ ++Kudos to all the [contributors](https://github.com/PJK/libcbor/graphs/contributors)! ++ ++## License ++The MIT License (MIT) ++ ++Copyright (c) Pavel Kalvoda, 2014-2020 ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software, and to permit persons to whom the Software is ++furnished to do so, subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in all ++copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++SOFTWARE. diff --cc contrib/libcbor/appveyor.yml index 000000000000,452ced5666b7..452ced5666b7 mode 000000,100644..100644 --- a/contrib/libcbor/appveyor.yml +++ b/contrib/libcbor/appveyor.yml diff --cc contrib/libcbor/clang-format.sh index 000000000000,e4076500c4f0..e4076500c4f0 mode 000000,100755..100755 --- a/contrib/libcbor/clang-format.sh +++ b/contrib/libcbor/clang-format.sh diff --cc contrib/libcbor/codecov.yml index 000000000000,e374997dcd15..e374997dcd15 mode 000000,100644..100644 --- a/contrib/libcbor/codecov.yml +++ b/contrib/libcbor/codecov.yml diff --cc contrib/libcbor/doc/Makefile index 000000000000,97a6bdc99543..97a6bdc99543 mode 000000,100644..100644 --- a/contrib/libcbor/doc/Makefile +++ b/contrib/libcbor/doc/Makefile diff --cc contrib/libcbor/doc/doxy_frontpage.md index 000000000000,30980c4872d4..30980c4872d4 mode 000000,100644..100644 --- a/contrib/libcbor/doc/doxy_frontpage.md +++ b/contrib/libcbor/doc/doxy_frontpage.md diff --cc contrib/libcbor/doc/make.bat index 000000000000,b3647968e8a5..b3647968e8a5 mode 000000,100644..100644 --- a/contrib/libcbor/doc/make.bat +++ b/contrib/libcbor/doc/make.bat diff --cc contrib/libcbor/doc/source/api.rst index 000000000000,c25629115060..c25629115060 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api.rst +++ b/contrib/libcbor/doc/source/api.rst diff --cc contrib/libcbor/doc/source/api/decoding.rst index 000000000000,e3a41f467a15..e3a41f467a15 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/decoding.rst +++ b/contrib/libcbor/doc/source/api/decoding.rst diff --cc contrib/libcbor/doc/source/api/encoding.rst index 000000000000,af6bbbe7b9d3..af6bbbe7b9d3 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/encoding.rst +++ b/contrib/libcbor/doc/source/api/encoding.rst diff --cc contrib/libcbor/doc/source/api/item_reference_counting.rst index 000000000000,0c0fa7257826..0c0fa7257826 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/item_reference_counting.rst +++ b/contrib/libcbor/doc/source/api/item_reference_counting.rst diff --cc contrib/libcbor/doc/source/api/item_types.rst index 000000000000,1452b3e5f90e..1452b3e5f90e mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/item_types.rst +++ b/contrib/libcbor/doc/source/api/item_types.rst diff --cc contrib/libcbor/doc/source/api/type_0_1.rst index 000000000000,4fc851dd1ed1..4fc851dd1ed1 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_0_1.rst +++ b/contrib/libcbor/doc/source/api/type_0_1.rst diff --cc contrib/libcbor/doc/source/api/type_2.rst index 000000000000,17df5716ccc2..17df5716ccc2 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_2.rst +++ b/contrib/libcbor/doc/source/api/type_2.rst diff --cc contrib/libcbor/doc/source/api/type_3.rst index 000000000000,abec24de40a3..abec24de40a3 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_3.rst +++ b/contrib/libcbor/doc/source/api/type_3.rst diff --cc contrib/libcbor/doc/source/api/type_4.rst index 000000000000,c3bb88a9cd8a..c3bb88a9cd8a mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_4.rst +++ b/contrib/libcbor/doc/source/api/type_4.rst diff --cc contrib/libcbor/doc/source/api/type_5.rst index 000000000000,c9b2e904af6e..c9b2e904af6e mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_5.rst +++ b/contrib/libcbor/doc/source/api/type_5.rst diff --cc contrib/libcbor/doc/source/api/type_6.rst index 000000000000,e98457ceae2a..e98457ceae2a mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_6.rst +++ b/contrib/libcbor/doc/source/api/type_6.rst diff --cc contrib/libcbor/doc/source/api/type_7.rst index 000000000000,d2e75c8bf0b3..d2e75c8bf0b3 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/api/type_7.rst +++ b/contrib/libcbor/doc/source/api/type_7.rst diff --cc contrib/libcbor/doc/source/changelog.rst index 000000000000,89e7008afab2..89e7008afab2 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/changelog.rst +++ b/contrib/libcbor/doc/source/changelog.rst diff --cc contrib/libcbor/doc/source/conf.py index 000000000000,3ca95bd6dd1f..3ca95bd6dd1f mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/conf.py +++ b/contrib/libcbor/doc/source/conf.py diff --cc contrib/libcbor/doc/source/development.rst index 000000000000,13e91ef25762..13e91ef25762 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/development.rst +++ b/contrib/libcbor/doc/source/development.rst diff --cc contrib/libcbor/doc/source/getting_started.rst index 000000000000,3e56f2c84c08..3e56f2c84c08 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/getting_started.rst +++ b/contrib/libcbor/doc/source/getting_started.rst diff --cc contrib/libcbor/doc/source/img/win_1.png index 000000000000,1bc34e5f8de5..1bc34e5f8de5 mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/doc/source/img/win_2.png index 000000000000,f6af59949df6..f6af59949df6 mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/doc/source/img/win_3.png index 000000000000,68ba112cbae0..68ba112cbae0 mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/doc/source/img/win_4.png index 000000000000,b274be7d530b..b274be7d530b mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/doc/source/img/win_5.png index 000000000000,dffeb882f744..dffeb882f744 mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/doc/source/img/win_6.png index 000000000000,850e3e2f6cc8..850e3e2f6cc8 mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/doc/source/index.rst index 000000000000,1922586097e3..1922586097e3 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/index.rst +++ b/contrib/libcbor/doc/source/index.rst diff --cc contrib/libcbor/doc/source/internal.rst index 000000000000,2c62a82b2329..2c62a82b2329 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/internal.rst +++ b/contrib/libcbor/doc/source/internal.rst diff --cc contrib/libcbor/doc/source/requirements.txt index 000000000000,461bb7e804d2..461bb7e804d2 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/requirements.txt +++ b/contrib/libcbor/doc/source/requirements.txt diff --cc contrib/libcbor/doc/source/rfc_conformance.rst index 000000000000,817614835a1f..817614835a1f mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/rfc_conformance.rst +++ b/contrib/libcbor/doc/source/rfc_conformance.rst diff --cc contrib/libcbor/doc/source/streaming.rst index 000000000000,8e3bb0d9bade..8e3bb0d9bade mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/streaming.rst +++ b/contrib/libcbor/doc/source/streaming.rst diff --cc contrib/libcbor/doc/source/streaming/decoding.rst index 000000000000,70174aa2715d..70174aa2715d mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/streaming/decoding.rst +++ b/contrib/libcbor/doc/source/streaming/decoding.rst diff --cc contrib/libcbor/doc/source/streaming/encoding.rst index 000000000000,8a56461d3584..8a56461d3584 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/streaming/encoding.rst +++ b/contrib/libcbor/doc/source/streaming/encoding.rst diff --cc contrib/libcbor/doc/source/tests.rst index 000000000000,47357ba36cd6..47357ba36cd6 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/tests.rst +++ b/contrib/libcbor/doc/source/tests.rst diff --cc contrib/libcbor/doc/source/using.rst index 000000000000,dbc09819d46b..dbc09819d46b mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/using.rst +++ b/contrib/libcbor/doc/source/using.rst diff --cc contrib/libcbor/examples/CMakeLists.txt index 000000000000,d1ddfb17b28a..d1ddfb17b28a mode 000000,100644..100644 --- a/contrib/libcbor/examples/CMakeLists.txt +++ b/contrib/libcbor/examples/CMakeLists.txt diff --cc contrib/libcbor/examples/cjson2cbor.c index 000000000000,2e3071fb47c5..2e3071fb47c5 mode 000000,100644..100644 --- a/contrib/libcbor/examples/cjson2cbor.c +++ b/contrib/libcbor/examples/cjson2cbor.c diff --cc contrib/libcbor/examples/create_items.c index 000000000000,b875720b5d91..b875720b5d91 mode 000000,100644..100644 --- a/contrib/libcbor/examples/create_items.c +++ b/contrib/libcbor/examples/create_items.c diff --cc contrib/libcbor/examples/data/floats.cbor index 000000000000,afb5e4a92f4a..afb5e4a92f4a mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/examples/data/indef_string.cbor index 000000000000,ef51440cfe21..ef51440cfe21 mode 000000,100644..100644 --- a/contrib/libcbor/examples/data/indef_string.cbor +++ b/contrib/libcbor/examples/data/indef_string.cbor diff --cc contrib/libcbor/examples/data/integer.cbor index 000000000000,d9ba7315ac8a..d9ba7315ac8a mode 000000,100644..100644 --- a/contrib/libcbor/examples/data/integer.cbor +++ b/contrib/libcbor/examples/data/integer.cbor diff --cc contrib/libcbor/examples/data/json_example.json index 000000000000,9646aad098d1..9646aad098d1 mode 000000,100644..100644 --- a/contrib/libcbor/examples/data/json_example.json +++ b/contrib/libcbor/examples/data/json_example.json diff --cc contrib/libcbor/examples/data/map.cbor index 000000000000,699abb42b598..699abb42b598 mode 000000,100644..100644 Binary files differ diff --cc contrib/libcbor/examples/data/nested_array.cbor index 000000000000,6c9f0d7acf59..6c9f0d7acf59 mode 000000,100644..100644 --- a/contrib/libcbor/examples/data/nested_array.cbor +++ b/contrib/libcbor/examples/data/nested_array.cbor diff --cc contrib/libcbor/examples/data/tagged_date.cbor index 000000000000,d2fbff8927a3..d2fbff8927a3 mode 000000,100644..100644 --- a/contrib/libcbor/examples/data/tagged_date.cbor +++ b/contrib/libcbor/examples/data/tagged_date.cbor diff --cc contrib/libcbor/examples/hello.c index 000000000000,275267445dac..275267445dac mode 000000,100644..100644 --- a/contrib/libcbor/examples/hello.c +++ b/contrib/libcbor/examples/hello.c diff --cc contrib/libcbor/examples/readfile.c index 000000000000,213ee77f0fdd..213ee77f0fdd mode 000000,100644..100644 --- a/contrib/libcbor/examples/readfile.c +++ b/contrib/libcbor/examples/readfile.c diff --cc contrib/libcbor/examples/sort.c index 000000000000,d5e3aaff9dbe..d5e3aaff9dbe mode 000000,100644..100644 --- a/contrib/libcbor/examples/sort.c +++ b/contrib/libcbor/examples/sort.c diff --cc contrib/libcbor/examples/streaming_parser.c index 000000000000,fe3ab853d978..fe3ab853d978 mode 000000,100644..100644 --- a/contrib/libcbor/examples/streaming_parser.c +++ b/contrib/libcbor/examples/streaming_parser.c diff --cc contrib/libcbor/misc/bytes.rb index 000000000000,ed453a4fcd81..ed453a4fcd81 mode 000000,100755..100755 --- a/contrib/libcbor/misc/bytes.rb +++ b/contrib/libcbor/misc/bytes.rb diff --cc contrib/libcbor/misc/file_to_bytes.rb index 000000000000,047c91054f5e..047c91054f5e mode 000000,100755..100755 --- a/contrib/libcbor/misc/file_to_bytes.rb +++ b/contrib/libcbor/misc/file_to_bytes.rb diff --cc contrib/libcbor/misc/hooks/pre-commit index 000000000000,f3ac9f483799..f3ac9f483799 mode 000000,100755..100755 --- a/contrib/libcbor/misc/hooks/pre-commit +++ b/contrib/libcbor/misc/hooks/pre-commit diff --cc contrib/libcbor/misc/repeat.rb index 000000000000,fa3da5dbdffb..fa3da5dbdffb mode 000000,100755..100755 --- a/contrib/libcbor/misc/repeat.rb +++ b/contrib/libcbor/misc/repeat.rb diff --cc contrib/libcbor/misc/seq.rb index 000000000000,0902eb0d96f5..0902eb0d96f5 mode 000000,100755..100755 --- a/contrib/libcbor/misc/seq.rb +++ b/contrib/libcbor/misc/seq.rb diff --cc contrib/libcbor/misc/update_version.py index 000000000000,eb330215d375..eb330215d375 mode 000000,100755..100755 --- a/contrib/libcbor/misc/update_version.py +++ b/contrib/libcbor/misc/update_version.py diff --cc contrib/libcbor/oss-fuzz/build.sh index 000000000000,4b19b7203f8b..4b19b7203f8b mode 000000,100755..100755 --- a/contrib/libcbor/oss-fuzz/build.sh +++ b/contrib/libcbor/oss-fuzz/build.sh diff --cc contrib/libcbor/oss-fuzz/cbor_load_fuzzer.cc index 000000000000,b32a082bb8a9..b32a082bb8a9 mode 000000,100644..100644 --- a/contrib/libcbor/oss-fuzz/cbor_load_fuzzer.cc +++ b/contrib/libcbor/oss-fuzz/cbor_load_fuzzer.cc diff --cc contrib/libcbor/release.sh index 000000000000,2fd73d967c22..2fd73d967c22 mode 000000,100755..100755 --- a/contrib/libcbor/release.sh +++ b/contrib/libcbor/release.sh diff --cc contrib/libcbor/src/CMakeLists.txt index 000000000000,2a1492bf6ee3..2a1492bf6ee3 mode 000000,100644..100644 --- a/contrib/libcbor/src/CMakeLists.txt +++ b/contrib/libcbor/src/CMakeLists.txt diff --cc contrib/libcbor/src/allocators.c index 000000000000,43c5440ddb2a..43c5440ddb2a mode 000000,100644..100644 --- a/contrib/libcbor/src/allocators.c +++ b/contrib/libcbor/src/allocators.c diff --cc contrib/libcbor/src/cbor.c index 000000000000,76b892c6b709..76b892c6b709 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor.c +++ b/contrib/libcbor/src/cbor.c diff --cc contrib/libcbor/src/cbor.h index 000000000000,d490e6c5862e..d490e6c5862e mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor.h +++ b/contrib/libcbor/src/cbor.h diff --cc contrib/libcbor/src/cbor/arrays.c index 000000000000,c1d01afafee1..c1d01afafee1 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/arrays.c +++ b/contrib/libcbor/src/cbor/arrays.c diff --cc contrib/libcbor/src/cbor/arrays.h index 000000000000,85fe51dcd8dc..85fe51dcd8dc mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/arrays.h +++ b/contrib/libcbor/src/cbor/arrays.h diff --cc contrib/libcbor/src/cbor/bytestrings.c index 000000000000,75a737bd92ae..75a737bd92ae mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/bytestrings.c +++ b/contrib/libcbor/src/cbor/bytestrings.c diff --cc contrib/libcbor/src/cbor/bytestrings.h index 000000000000,71483f708e26..71483f708e26 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/bytestrings.h +++ b/contrib/libcbor/src/cbor/bytestrings.h diff --cc contrib/libcbor/src/cbor/callbacks.c index 000000000000,3f1f547a09ef..3f1f547a09ef mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/callbacks.c +++ b/contrib/libcbor/src/cbor/callbacks.c diff --cc contrib/libcbor/src/cbor/callbacks.h index 000000000000,9e5965f2d921..9e5965f2d921 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/callbacks.h +++ b/contrib/libcbor/src/cbor/callbacks.h diff --cc contrib/libcbor/src/cbor/common.c index 000000000000,7ccce38ac25b..7ccce38ac25b mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/common.c +++ b/contrib/libcbor/src/cbor/common.c diff --cc contrib/libcbor/src/cbor/common.h index 000000000000,1f9b79e16d9d..1f9b79e16d9d mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/common.h +++ b/contrib/libcbor/src/cbor/common.h diff --cc contrib/libcbor/src/cbor/configuration.h.in index 000000000000,6f65980aa8a2..6f65980aa8a2 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/configuration.h.in +++ b/contrib/libcbor/src/cbor/configuration.h.in diff --cc contrib/libcbor/src/cbor/data.h index 000000000000,982e6a2c9987..982e6a2c9987 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/data.h +++ b/contrib/libcbor/src/cbor/data.h diff --cc contrib/libcbor/src/cbor/encoding.c index 000000000000,19281520edd9..19281520edd9 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/encoding.c +++ b/contrib/libcbor/src/cbor/encoding.c diff --cc contrib/libcbor/src/cbor/encoding.h index 000000000000,e4f2102b636a..e4f2102b636a mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/encoding.h +++ b/contrib/libcbor/src/cbor/encoding.h diff --cc contrib/libcbor/src/cbor/floats_ctrls.c index 000000000000,b7e5fcef8530..b7e5fcef8530 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/floats_ctrls.c +++ b/contrib/libcbor/src/cbor/floats_ctrls.c diff --cc contrib/libcbor/src/cbor/floats_ctrls.h index 000000000000,92eb8bc3eaa3..92eb8bc3eaa3 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/floats_ctrls.h +++ b/contrib/libcbor/src/cbor/floats_ctrls.h diff --cc contrib/libcbor/src/cbor/internal/builder_callbacks.c index 000000000000,f6c571136162..f6c571136162 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/builder_callbacks.c +++ b/contrib/libcbor/src/cbor/internal/builder_callbacks.c diff --cc contrib/libcbor/src/cbor/internal/builder_callbacks.h index 000000000000,a93afb1ca8f8..a93afb1ca8f8 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/builder_callbacks.h +++ b/contrib/libcbor/src/cbor/internal/builder_callbacks.h diff --cc contrib/libcbor/src/cbor/internal/encoders.c index 000000000000,657e25c3987a..657e25c3987a mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/encoders.c +++ b/contrib/libcbor/src/cbor/internal/encoders.c diff --cc contrib/libcbor/src/cbor/internal/encoders.h index 000000000000,14ad5015cb5a..14ad5015cb5a mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/encoders.h +++ b/contrib/libcbor/src/cbor/internal/encoders.h diff --cc contrib/libcbor/src/cbor/internal/loaders.c index 000000000000,af00f135527f..af00f135527f mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/loaders.c +++ b/contrib/libcbor/src/cbor/internal/loaders.c diff --cc contrib/libcbor/src/cbor/internal/loaders.h index 000000000000,a4c82b209f55..a4c82b209f55 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/loaders.h +++ b/contrib/libcbor/src/cbor/internal/loaders.h diff --cc contrib/libcbor/src/cbor/internal/memory_utils.c index 000000000000,918b708e3313..918b708e3313 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/memory_utils.c +++ b/contrib/libcbor/src/cbor/internal/memory_utils.c diff --cc contrib/libcbor/src/cbor/internal/memory_utils.h index 000000000000,c41ace67948f..c41ace67948f mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/memory_utils.h +++ b/contrib/libcbor/src/cbor/internal/memory_utils.h diff --cc contrib/libcbor/src/cbor/internal/stack.c index 000000000000,79c9e5e5297e..79c9e5e5297e mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/stack.c +++ b/contrib/libcbor/src/cbor/internal/stack.c diff --cc contrib/libcbor/src/cbor/internal/stack.h index 000000000000,42ed04429c7e..42ed04429c7e mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/stack.h +++ b/contrib/libcbor/src/cbor/internal/stack.h diff --cc contrib/libcbor/src/cbor/internal/unicode.c index 000000000000,98b49728989e..98b49728989e mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/unicode.c +++ b/contrib/libcbor/src/cbor/internal/unicode.c diff --cc contrib/libcbor/src/cbor/internal/unicode.h index 000000000000,5f6456029306..5f6456029306 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/internal/unicode.h +++ b/contrib/libcbor/src/cbor/internal/unicode.h diff --cc contrib/libcbor/src/cbor/ints.c index 000000000000,880982e5a3e5..880982e5a3e5 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/ints.c +++ b/contrib/libcbor/src/cbor/ints.c diff --cc contrib/libcbor/src/cbor/ints.h index 000000000000,fc7de600102e..fc7de600102e mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/ints.h +++ b/contrib/libcbor/src/cbor/ints.h diff --cc contrib/libcbor/src/cbor/maps.c index 000000000000,45140e2cfa2b..45140e2cfa2b mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/maps.c +++ b/contrib/libcbor/src/cbor/maps.c diff --cc contrib/libcbor/src/cbor/maps.h index 000000000000,370c6fcd4336..370c6fcd4336 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/maps.h +++ b/contrib/libcbor/src/cbor/maps.h diff --cc contrib/libcbor/src/cbor/serialization.c index 000000000000,56a48176aab4..56a48176aab4 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/serialization.c +++ b/contrib/libcbor/src/cbor/serialization.c diff --cc contrib/libcbor/src/cbor/serialization.h index 000000000000,3f7707afca61..3f7707afca61 mode 000000,100644..100644 --- a/contrib/libcbor/src/cbor/serialization.h +++ b/contrib/libcbor/src/cbor/serialization.h diff --cc contrib/libcbor/src/cbor/streaming.c *** 213 LINES SKIPPED *** From nobody Thu Oct 7 01:24:35 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 833AF12BED48; Thu, 7 Oct 2021 01:24: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 4HPtsH3HLdz4bnb; Thu, 7 Oct 2021 01:24: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 514A826DA; Thu, 7 Oct 2021 01:24: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 1971OZjq099107; Thu, 7 Oct 2021 01:24:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1971OZIh099106; Thu, 7 Oct 2021 01:24:35 GMT (envelope-from git) Date: Thu, 7 Oct 2021 01:24:35 GMT Message-Id: <202110070124.1971OZIh099106@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: d586c978b9b4 - main - stand: fix build after recent opencrypto changes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d586c978b9b4216869e589daa5bbcc33225a0e35 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d586c978b9b4216869e589daa5bbcc33225a0e35 commit d586c978b9b4216869e589daa5bbcc33225a0e35 Author: Kyle Evans AuthorDate: 2021-10-07 01:19:47 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 01:23:44 +0000 stand: fix build after recent opencrypto changes Pass the ivlen along through, and just drop this KASSERT() if we're building _STANDALONE for the time being. Fixes: 1833d6042c9a ("crypto: Permit variable-sized IVs ...") --- stand/libsa/geli/geliboot.c | 2 +- stand/libsa/geli/geliboot_crypto.c | 7 ++++--- stand/libsa/geli/geliboot_internal.h | 2 +- sys/opencrypto/xform_aes_xts.c | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/stand/libsa/geli/geliboot.c b/stand/libsa/geli/geliboot.c index 954a3ec34044..56499e96b295 100644 --- a/stand/libsa/geli/geliboot.c +++ b/stand/libsa/geli/geliboot.c @@ -345,7 +345,7 @@ geli_io(struct geli_dev *gdev, geli_op_t enc, off_t offset, u_char *buf, g_eli_key_fill(&gdev->sc, &gkey, keyno); error = geliboot_crypt(gdev->sc.sc_ealgo, enc, pbuf, secsize, - gkey.gek_key, gdev->sc.sc_ekeylen, iv); + gkey.gek_key, gdev->sc.sc_ekeylen, iv, sizeof(iv)); if (error != 0) { explicit_bzero(&gkey, sizeof(gkey)); diff --git a/stand/libsa/geli/geliboot_crypto.c b/stand/libsa/geli/geliboot_crypto.c index 8478d2754d6f..fcc5d7bcd7fb 100644 --- a/stand/libsa/geli/geliboot_crypto.c +++ b/stand/libsa/geli/geliboot_crypto.c @@ -36,7 +36,7 @@ int geliboot_crypt(u_int algo, geli_op_t enc, u_char *data, size_t datasize, - const u_char *key, size_t keysize, u_char *iv) + const u_char *key, size_t keysize, u_char *iv, size_t ivlen) { keyInstance aeskey; cipherInstance cipher; @@ -81,7 +81,7 @@ geliboot_crypt(u_int algo, geli_op_t enc, u_char *data, size_t datasize, ctxp = &xtsctx; enc_xform_aes_xts.setkey(ctxp, key, xts_len / 8); - enc_xform_aes_xts.reinit(ctxp, iv); + enc_xform_aes_xts.reinit(ctxp, iv, ivlen); switch (enc) { case GELI_DECRYPT: @@ -113,7 +113,8 @@ g_eli_crypto_cipher(u_int algo, geli_op_t enc, u_char *data, size_t datasize, u_char iv[keysize]; explicit_bzero(iv, sizeof(iv)); - return (geliboot_crypt(algo, enc, data, datasize, key, keysize, iv)); + return (geliboot_crypt(algo, enc, data, datasize, key, keysize, iv, + sizeof(iv))); } int diff --git a/stand/libsa/geli/geliboot_internal.h b/stand/libsa/geli/geliboot_internal.h index 2af74466179f..2318690297f8 100644 --- a/stand/libsa/geli/geliboot_internal.h +++ b/stand/libsa/geli/geliboot_internal.h @@ -68,6 +68,6 @@ struct geli_dev { }; int geliboot_crypt(u_int algo, geli_op_t enc, u_char *data, size_t datasize, - const u_char *key, size_t keysize, u_char *iv); + const u_char *key, size_t keysize, u_char *iv, size_t ivlen); #endif /* _GELIBOOT_INTERNAL_H_ */ diff --git a/sys/opencrypto/xform_aes_xts.c b/sys/opencrypto/xform_aes_xts.c index 7a79d4685d21..9894158c0b79 100644 --- a/sys/opencrypto/xform_aes_xts.c +++ b/sys/opencrypto/xform_aes_xts.c @@ -83,8 +83,10 @@ aes_xts_reinit(void *key, const uint8_t *iv, size_t ivlen) uint64_t blocknum; u_int i; +#ifndef _STANDALONE KASSERT(ivlen == sizeof(blocknum), ("%s: invalid IV length", __func__)); +#endif /* * Prepare tweak as E_k2(IV). IV is specified as LE representation From nobody Thu Oct 7 01:29:47 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1B09F12BF980; Thu, 7 Oct 2021 01:29: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 4HPtzJ0BTbz4cQx; Thu, 7 Oct 2021 01:29: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 DA558274B; Thu, 7 Oct 2021 01:29: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 1971Tli6099584; Thu, 7 Oct 2021 01:29:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1971Tl3O099583; Thu, 7 Oct 2021 01:29:47 GMT (envelope-from git) Date: Thu, 7 Oct 2021 01:29:47 GMT Message-Id: <202110070129.1971Tl3O099583@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 0afa8e065e14 - main - Import libfido2 at 'contrib/libfido2/' List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 0afa8e065e14bb8fd338d75690e0238c00167d40 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=0afa8e065e14bb8fd338d75690e0238c00167d40 commit 0afa8e065e14bb8fd338d75690e0238c00167d40 Merge: d586c978b9b4 a58dee945a5d Author: Ed Maste AuthorDate: 2021-10-07 01:27:02 +0000 Commit: Ed Maste CommitDate: 2021-10-07 01:29:18 +0000 Import libfido2 at 'contrib/libfido2/' git-subtree-dir: contrib/libfido2 git-subtree-mainline: d586c978b9b4216869e589daa5bbcc33225a0e35 git-subtree-split: a58dee945a5da64d0e97f35a508928e0d17c9cc7 contrib/libfido2/CMakeLists.txt | 418 +++++ contrib/libfido2/LICENSE | 24 + contrib/libfido2/NEWS | 179 +++ contrib/libfido2/README.adoc | 93 ++ contrib/libfido2/examples/CMakeLists.txt | 69 + contrib/libfido2/examples/README.adoc | 98 ++ contrib/libfido2/examples/assert.c | 342 ++++ contrib/libfido2/examples/cred.c | 346 +++++ contrib/libfido2/examples/extern.h | 33 + contrib/libfido2/examples/info.c | 293 ++++ contrib/libfido2/examples/manifest.c | 41 + contrib/libfido2/examples/reset.c | 55 + contrib/libfido2/examples/retries.c | 48 + contrib/libfido2/examples/select.c | 214 +++ contrib/libfido2/examples/setpin.c | 54 + contrib/libfido2/examples/util.c | 413 +++++ contrib/libfido2/fuzz/CMakeLists.txt | 63 + contrib/libfido2/fuzz/Dockerfile | 12 + contrib/libfido2/fuzz/Makefile | 79 + contrib/libfido2/fuzz/README | 33 + contrib/libfido2/fuzz/build-coverage | 31 + contrib/libfido2/fuzz/dummy.h | 96 ++ contrib/libfido2/fuzz/export.gnu | 242 +++ contrib/libfido2/fuzz/functions.txt | 807 ++++++++++ contrib/libfido2/fuzz/fuzz_assert.c | 471 ++++++ contrib/libfido2/fuzz/fuzz_bio.c | 440 ++++++ contrib/libfido2/fuzz/fuzz_cred.c | 455 ++++++ contrib/libfido2/fuzz/fuzz_credman.c | 405 +++++ contrib/libfido2/fuzz/fuzz_hid.c | 215 +++ contrib/libfido2/fuzz/fuzz_largeblob.c | 270 ++++ contrib/libfido2/fuzz/fuzz_mgmt.c | 480 ++++++ contrib/libfido2/fuzz/fuzz_netlink.c | 249 +++ contrib/libfido2/fuzz/libfuzzer.c | 177 +++ contrib/libfido2/fuzz/mutator_aux.c | 326 ++++ contrib/libfido2/fuzz/mutator_aux.h | 96 ++ contrib/libfido2/fuzz/preload-fuzz.c | 104 ++ contrib/libfido2/fuzz/preload-snoop.c | 217 +++ contrib/libfido2/fuzz/prng.c | 113 ++ contrib/libfido2/fuzz/report.tgz | Bin 0 -> 303082 bytes contrib/libfido2/fuzz/summary.txt | 51 + contrib/libfido2/fuzz/udev.c | 269 ++++ contrib/libfido2/fuzz/uniform_random.c | 57 + contrib/libfido2/fuzz/wiredata_fido2.h | 633 ++++++++ contrib/libfido2/fuzz/wiredata_u2f.h | 152 ++ contrib/libfido2/fuzz/wrap.c | 582 +++++++ contrib/libfido2/fuzz/wrapped.sym | 83 + contrib/libfido2/man/CMakeLists.txt | 371 +++++ contrib/libfido2/man/NOTES | 7 + contrib/libfido2/man/dyc.css | 14 + contrib/libfido2/man/eddsa_pk_new.3 | 122 ++ contrib/libfido2/man/es256_pk_new.3 | 126 ++ contrib/libfido2/man/fido2-assert.1 | 256 +++ contrib/libfido2/man/fido2-cred.1 | 267 ++++ contrib/libfido2/man/fido2-token.1 | 388 +++++ contrib/libfido2/man/fido_assert_allow_cred.3 | 47 + contrib/libfido2/man/fido_assert_new.3 | 243 +++ contrib/libfido2/man/fido_assert_set_authdata.3 | 221 +++ contrib/libfido2/man/fido_assert_verify.3 | 79 + contrib/libfido2/man/fido_bio_dev_get_info.3 | 122 ++ contrib/libfido2/man/fido_bio_enroll_new.3 | 95 ++ contrib/libfido2/man/fido_bio_info_new.3 | 81 + contrib/libfido2/man/fido_bio_template.3 | 179 +++ contrib/libfido2/man/fido_cbor_info_new.3 | 231 +++ contrib/libfido2/man/fido_cred_exclude.3 | 60 + contrib/libfido2/man/fido_cred_new.3 | 257 +++ contrib/libfido2/man/fido_cred_set_authdata.3 | 307 ++++ contrib/libfido2/man/fido_cred_verify.3 | 69 + contrib/libfido2/man/fido_credman_metadata_new.3 | 326 ++++ contrib/libfido2/man/fido_dev_enable_entattest.3 | 98 ++ contrib/libfido2/man/fido_dev_get_assert.3 | 76 + contrib/libfido2/man/fido_dev_get_touch_begin.3 | 73 + contrib/libfido2/man/fido_dev_info_manifest.3 | 143 ++ contrib/libfido2/man/fido_dev_largeblob_get.3 | 194 +++ contrib/libfido2/man/fido_dev_make_cred.3 | 77 + contrib/libfido2/man/fido_dev_open.3 | 250 +++ contrib/libfido2/man/fido_dev_set_io_functions.3 | 134 ++ contrib/libfido2/man/fido_dev_set_pin.3 | 103 ++ contrib/libfido2/man/fido_init.3 | 52 + contrib/libfido2/man/fido_strerr.3 | 27 + contrib/libfido2/man/rs256_pk_new.3 | 122 ++ contrib/libfido2/man/style.css | 24 + contrib/libfido2/openbsd-compat/bsd-getline.c | 115 ++ contrib/libfido2/openbsd-compat/bsd-getpagesize.c | 27 + contrib/libfido2/openbsd-compat/clock_gettime.c | 32 + contrib/libfido2/openbsd-compat/endian_win32.c | 51 + contrib/libfido2/openbsd-compat/err.h | 85 + contrib/libfido2/openbsd-compat/explicit_bzero.c | 57 + .../libfido2/openbsd-compat/explicit_bzero_win32.c | 19 + contrib/libfido2/openbsd-compat/freezero.c | 30 + contrib/libfido2/openbsd-compat/getopt.h | 74 + contrib/libfido2/openbsd-compat/getopt_long.c | 523 +++++++ contrib/libfido2/openbsd-compat/hkdf.c | 124 ++ contrib/libfido2/openbsd-compat/hkdf.h | 65 + contrib/libfido2/openbsd-compat/openbsd-compat.h | 119 ++ .../libfido2/openbsd-compat/posix_ioctl_check.c | 7 + contrib/libfido2/openbsd-compat/posix_win.c | 61 + contrib/libfido2/openbsd-compat/posix_win.h | 47 + contrib/libfido2/openbsd-compat/readpassphrase.c | 214 +++ contrib/libfido2/openbsd-compat/readpassphrase.h | 44 + .../libfido2/openbsd-compat/readpassphrase_win32.c | 131 ++ contrib/libfido2/openbsd-compat/recallocarray.c | 91 ++ contrib/libfido2/openbsd-compat/strlcat.c | 63 + contrib/libfido2/openbsd-compat/strlcpy.c | 59 + contrib/libfido2/openbsd-compat/time.h | 61 + contrib/libfido2/openbsd-compat/timingsafe_bcmp.c | 35 + contrib/libfido2/openbsd-compat/types.h | 69 + contrib/libfido2/regress/CMakeLists.txt | 16 + contrib/libfido2/regress/assert.c | 553 +++++++ contrib/libfido2/regress/cred.c | 988 ++++++++++++ contrib/libfido2/regress/dev.c | 266 ++++ contrib/libfido2/src/CMakeLists.txt | 136 ++ contrib/libfido2/src/aes256.c | 215 +++ contrib/libfido2/src/assert.c | 1134 ++++++++++++++ contrib/libfido2/src/authkey.c | 97 ++ contrib/libfido2/src/bio.c | 841 ++++++++++ contrib/libfido2/src/blob.c | 133 ++ contrib/libfido2/src/blob.h | 41 + contrib/libfido2/src/buf.c | 33 + contrib/libfido2/src/cbor.c | 1635 ++++++++++++++++++++ contrib/libfido2/src/compress.c | 49 + contrib/libfido2/src/config.c | 191 +++ contrib/libfido2/src/cred.c | 1086 +++++++++++++ contrib/libfido2/src/credman.c | 767 +++++++++ contrib/libfido2/src/dev.c | 732 +++++++++ contrib/libfido2/src/diff_exports.sh | 26 + contrib/libfido2/src/ecdh.c | 207 +++ contrib/libfido2/src/eddsa.c | 172 ++ contrib/libfido2/src/err.c | 136 ++ contrib/libfido2/src/es256.c | 453 ++++++ contrib/libfido2/src/export.gnu | 234 +++ contrib/libfido2/src/export.llvm | 229 +++ contrib/libfido2/src/export.msvc | 230 +++ contrib/libfido2/src/extern.h | 240 +++ contrib/libfido2/src/fido.h | 228 +++ contrib/libfido2/src/fido/bio.h | 111 ++ contrib/libfido2/src/fido/config.h | 34 + contrib/libfido2/src/fido/credman.h | 91 ++ contrib/libfido2/src/fido/eddsa.h | 54 + contrib/libfido2/src/fido/err.h | 84 + contrib/libfido2/src/fido/es256.h | 48 + contrib/libfido2/src/fido/param.h | 117 ++ contrib/libfido2/src/fido/rs256.h | 36 + contrib/libfido2/src/fido/types.h | 281 ++++ contrib/libfido2/src/hid.c | 179 +++ contrib/libfido2/src/hid_freebsd.c | 253 +++ contrib/libfido2/src/hid_hidapi.c | 268 ++++ contrib/libfido2/src/hid_linux.c | 375 +++++ contrib/libfido2/src/hid_netbsd.c | 338 ++++ contrib/libfido2/src/hid_openbsd.c | 260 ++++ contrib/libfido2/src/hid_osx.c | 571 +++++++ contrib/libfido2/src/hid_unix.c | 76 + contrib/libfido2/src/hid_win.c | 540 +++++++ contrib/libfido2/src/info.c | 553 +++++++ contrib/libfido2/src/io.c | 288 ++++ contrib/libfido2/src/iso7816.c | 64 + contrib/libfido2/src/iso7816.h | 49 + contrib/libfido2/src/largeblob.c | 881 +++++++++++ contrib/libfido2/src/libfido2.pc.in | 12 + contrib/libfido2/src/log.c | 121 ++ contrib/libfido2/src/netlink.c | 782 ++++++++++ contrib/libfido2/src/netlink.h | 44 + contrib/libfido2/src/nfc_linux.c | 631 ++++++++ contrib/libfido2/src/packed.h | 22 + contrib/libfido2/src/pin.c | 690 +++++++++ contrib/libfido2/src/random.c | 82 + contrib/libfido2/src/reset.c | 43 + contrib/libfido2/src/rs256.c | 200 +++ contrib/libfido2/src/u2f.c | 820 ++++++++++ contrib/libfido2/src/winhello.c | 934 +++++++++++ contrib/libfido2/tools/CMakeLists.txt | 77 + contrib/libfido2/tools/assert_get.c | 316 ++++ contrib/libfido2/tools/assert_verify.c | 192 +++ contrib/libfido2/tools/base64.c | 134 ++ contrib/libfido2/tools/bio.c | 277 ++++ contrib/libfido2/tools/config.c | 149 ++ contrib/libfido2/tools/cred_make.c | 242 +++ contrib/libfido2/tools/cred_verify.c | 181 +++ contrib/libfido2/tools/credman.c | 329 ++++ contrib/libfido2/tools/extern.h | 99 ++ contrib/libfido2/tools/fido2-assert.c | 54 + contrib/libfido2/tools/fido2-attach.sh | 14 + contrib/libfido2/tools/fido2-cred.c | 52 + contrib/libfido2/tools/fido2-detach.sh | 12 + contrib/libfido2/tools/fido2-token.c | 107 ++ contrib/libfido2/tools/fido2-unprot.sh | 75 + contrib/libfido2/tools/include_check.sh | 21 + contrib/libfido2/tools/largeblob.c | 593 +++++++ contrib/libfido2/tools/pin.c | 143 ++ contrib/libfido2/tools/test.sh | 296 ++++ contrib/libfido2/tools/token.c | 576 +++++++ contrib/libfido2/tools/util.c | 591 +++++++ contrib/libfido2/udev/70-u2f.rules | 217 +++ contrib/libfido2/udev/CMakeLists.txt | 7 + contrib/libfido2/udev/check.sh | 31 + contrib/libfido2/udev/fidodevs | 126 ++ contrib/libfido2/udev/genrules.awk | 55 + contrib/libfido2/windows/build.ps1 | 272 ++++ contrib/libfido2/windows/libressl.gpg | Bin 0 -> 16425 bytes 198 files changed, 43610 insertions(+) diff --cc contrib/libfido2/CMakeLists.txt index 000000000000,101b7b33e2fc..101b7b33e2fc mode 000000,100644..100644 --- a/contrib/libfido2/CMakeLists.txt +++ b/contrib/libfido2/CMakeLists.txt diff --cc contrib/libfido2/LICENSE index 000000000000,4224f20992c0..4224f20992c0 mode 000000,100644..100644 --- a/contrib/libfido2/LICENSE +++ b/contrib/libfido2/LICENSE diff --cc contrib/libfido2/NEWS index 000000000000,a89766b72e89..a89766b72e89 mode 000000,100644..100644 --- a/contrib/libfido2/NEWS +++ b/contrib/libfido2/NEWS diff --cc contrib/libfido2/README.adoc index 000000000000,f5ffa7e4e602..f5ffa7e4e602 mode 000000,100644..100644 --- a/contrib/libfido2/README.adoc +++ b/contrib/libfido2/README.adoc diff --cc contrib/libfido2/examples/CMakeLists.txt index 000000000000,ad3d44faad6b..ad3d44faad6b mode 000000,100644..100644 --- a/contrib/libfido2/examples/CMakeLists.txt +++ b/contrib/libfido2/examples/CMakeLists.txt diff --cc contrib/libfido2/examples/README.adoc index 000000000000,bcecb22f5258..bcecb22f5258 mode 000000,100644..100644 --- a/contrib/libfido2/examples/README.adoc +++ b/contrib/libfido2/examples/README.adoc diff --cc contrib/libfido2/examples/assert.c index 000000000000,dc3fda3ac447..dc3fda3ac447 mode 000000,100644..100644 --- a/contrib/libfido2/examples/assert.c +++ b/contrib/libfido2/examples/assert.c diff --cc contrib/libfido2/examples/cred.c index 000000000000,74145c761380..74145c761380 mode 000000,100644..100644 --- a/contrib/libfido2/examples/cred.c +++ b/contrib/libfido2/examples/cred.c diff --cc contrib/libfido2/examples/extern.h index 000000000000,0ea68c4fb585..0ea68c4fb585 mode 000000,100644..100644 --- a/contrib/libfido2/examples/extern.h +++ b/contrib/libfido2/examples/extern.h diff --cc contrib/libfido2/examples/info.c index 000000000000,72b786a8bd83..72b786a8bd83 mode 000000,100644..100644 --- a/contrib/libfido2/examples/info.c +++ b/contrib/libfido2/examples/info.c diff --cc contrib/libfido2/examples/manifest.c index 000000000000,d38166a9fea9..d38166a9fea9 mode 000000,100644..100644 --- a/contrib/libfido2/examples/manifest.c +++ b/contrib/libfido2/examples/manifest.c diff --cc contrib/libfido2/examples/reset.c index 000000000000,eb341c26c0cd..eb341c26c0cd mode 000000,100644..100644 --- a/contrib/libfido2/examples/reset.c +++ b/contrib/libfido2/examples/reset.c diff --cc contrib/libfido2/examples/retries.c index 000000000000,b96118b1e154..b96118b1e154 mode 000000,100644..100644 --- a/contrib/libfido2/examples/retries.c +++ b/contrib/libfido2/examples/retries.c diff --cc contrib/libfido2/examples/select.c index 000000000000,6ede9b490a95..6ede9b490a95 mode 000000,100644..100644 --- a/contrib/libfido2/examples/select.c +++ b/contrib/libfido2/examples/select.c diff --cc contrib/libfido2/examples/setpin.c index 000000000000,4b9e792769d9..4b9e792769d9 mode 000000,100644..100644 --- a/contrib/libfido2/examples/setpin.c +++ b/contrib/libfido2/examples/setpin.c diff --cc contrib/libfido2/examples/util.c index 000000000000,caa68aa880ee..caa68aa880ee mode 000000,100644..100644 --- a/contrib/libfido2/examples/util.c +++ b/contrib/libfido2/examples/util.c diff --cc contrib/libfido2/fuzz/CMakeLists.txt index 000000000000,b1eebd55481b..b1eebd55481b mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/CMakeLists.txt +++ b/contrib/libfido2/fuzz/CMakeLists.txt diff --cc contrib/libfido2/fuzz/Dockerfile index 000000000000,895da69e4c4c..895da69e4c4c mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/Dockerfile +++ b/contrib/libfido2/fuzz/Dockerfile diff --cc contrib/libfido2/fuzz/Makefile index 000000000000,4b067c23aac2..4b067c23aac2 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/Makefile +++ b/contrib/libfido2/fuzz/Makefile diff --cc contrib/libfido2/fuzz/README index 000000000000,28fc7f8f51b2..28fc7f8f51b2 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/README +++ b/contrib/libfido2/fuzz/README diff --cc contrib/libfido2/fuzz/build-coverage index 000000000000,e0e90da02b5d..e0e90da02b5d mode 000000,100755..100755 --- a/contrib/libfido2/fuzz/build-coverage +++ b/contrib/libfido2/fuzz/build-coverage diff --cc contrib/libfido2/fuzz/dummy.h index 000000000000,981cceec37b5..981cceec37b5 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/dummy.h +++ b/contrib/libfido2/fuzz/dummy.h diff --cc contrib/libfido2/fuzz/export.gnu index 000000000000,bd70d1c7eaac..bd70d1c7eaac mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/export.gnu +++ b/contrib/libfido2/fuzz/export.gnu diff --cc contrib/libfido2/fuzz/functions.txt index 000000000000,28fe4f6af17b..28fe4f6af17b mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/functions.txt +++ b/contrib/libfido2/fuzz/functions.txt diff --cc contrib/libfido2/fuzz/fuzz_assert.c index 000000000000,1ecbde38bd0a..1ecbde38bd0a mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_assert.c +++ b/contrib/libfido2/fuzz/fuzz_assert.c diff --cc contrib/libfido2/fuzz/fuzz_bio.c index 000000000000,ed3deec93693..ed3deec93693 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_bio.c +++ b/contrib/libfido2/fuzz/fuzz_bio.c diff --cc contrib/libfido2/fuzz/fuzz_cred.c index 000000000000,004852d3451a..004852d3451a mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_cred.c +++ b/contrib/libfido2/fuzz/fuzz_cred.c diff --cc contrib/libfido2/fuzz/fuzz_credman.c index 000000000000,89a37379d87f..89a37379d87f mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_credman.c +++ b/contrib/libfido2/fuzz/fuzz_credman.c diff --cc contrib/libfido2/fuzz/fuzz_hid.c index 000000000000,6aca7ef5da5b..6aca7ef5da5b mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_hid.c +++ b/contrib/libfido2/fuzz/fuzz_hid.c diff --cc contrib/libfido2/fuzz/fuzz_largeblob.c index 000000000000,6886261bf529..6886261bf529 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_largeblob.c +++ b/contrib/libfido2/fuzz/fuzz_largeblob.c diff --cc contrib/libfido2/fuzz/fuzz_mgmt.c index 000000000000,28afbc6aae5f..28afbc6aae5f mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_mgmt.c +++ b/contrib/libfido2/fuzz/fuzz_mgmt.c diff --cc contrib/libfido2/fuzz/fuzz_netlink.c index 000000000000,9b7f930cde38..9b7f930cde38 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/fuzz_netlink.c +++ b/contrib/libfido2/fuzz/fuzz_netlink.c diff --cc contrib/libfido2/fuzz/libfuzzer.c index 000000000000,09aec4ea2b68..09aec4ea2b68 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/libfuzzer.c +++ b/contrib/libfido2/fuzz/libfuzzer.c diff --cc contrib/libfido2/fuzz/mutator_aux.c index 000000000000,0dc3ae1bf054..0dc3ae1bf054 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/mutator_aux.c +++ b/contrib/libfido2/fuzz/mutator_aux.c diff --cc contrib/libfido2/fuzz/mutator_aux.h index 000000000000,6b1a98215b07..6b1a98215b07 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/mutator_aux.h +++ b/contrib/libfido2/fuzz/mutator_aux.h diff --cc contrib/libfido2/fuzz/preload-fuzz.c index 000000000000,efcb8c632605..efcb8c632605 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/preload-fuzz.c +++ b/contrib/libfido2/fuzz/preload-fuzz.c diff --cc contrib/libfido2/fuzz/preload-snoop.c index 000000000000,373acc560a60..373acc560a60 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/preload-snoop.c +++ b/contrib/libfido2/fuzz/preload-snoop.c diff --cc contrib/libfido2/fuzz/prng.c index 000000000000,61114ac94228..61114ac94228 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/prng.c +++ b/contrib/libfido2/fuzz/prng.c diff --cc contrib/libfido2/fuzz/report.tgz index 000000000000,c8d4d3f38028..c8d4d3f38028 mode 000000,100644..100644 Binary files differ diff --cc contrib/libfido2/fuzz/summary.txt index 000000000000,8516bf3723aa..8516bf3723aa mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/summary.txt +++ b/contrib/libfido2/fuzz/summary.txt diff --cc contrib/libfido2/fuzz/udev.c index 000000000000,3984d8f555ed..3984d8f555ed mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/udev.c +++ b/contrib/libfido2/fuzz/udev.c diff --cc contrib/libfido2/fuzz/uniform_random.c index 000000000000,357091c3c2f1..357091c3c2f1 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/uniform_random.c +++ b/contrib/libfido2/fuzz/uniform_random.c diff --cc contrib/libfido2/fuzz/wiredata_fido2.h index 000000000000,da905516f92a..da905516f92a mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/wiredata_fido2.h +++ b/contrib/libfido2/fuzz/wiredata_fido2.h diff --cc contrib/libfido2/fuzz/wiredata_u2f.h index 000000000000,afe418fe9d96..afe418fe9d96 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/wiredata_u2f.h +++ b/contrib/libfido2/fuzz/wiredata_u2f.h diff --cc contrib/libfido2/fuzz/wrap.c index 000000000000,5b91a64dbf4b..5b91a64dbf4b mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/wrap.c +++ b/contrib/libfido2/fuzz/wrap.c diff --cc contrib/libfido2/fuzz/wrapped.sym index 000000000000,de4f24ae0355..de4f24ae0355 mode 000000,100644..100644 --- a/contrib/libfido2/fuzz/wrapped.sym +++ b/contrib/libfido2/fuzz/wrapped.sym diff --cc contrib/libfido2/man/CMakeLists.txt index 000000000000,ad9f339e6f9b..ad9f339e6f9b mode 000000,100644..100644 --- a/contrib/libfido2/man/CMakeLists.txt +++ b/contrib/libfido2/man/CMakeLists.txt diff --cc contrib/libfido2/man/NOTES index 000000000000,5cba43663b7f..5cba43663b7f mode 000000,100644..100644 --- a/contrib/libfido2/man/NOTES +++ b/contrib/libfido2/man/NOTES diff --cc contrib/libfido2/man/dyc.css index 000000000000,1ff5b593e8d2..1ff5b593e8d2 mode 000000,100644..100644 --- a/contrib/libfido2/man/dyc.css +++ b/contrib/libfido2/man/dyc.css diff --cc contrib/libfido2/man/eddsa_pk_new.3 index 000000000000,65bf9a9f753d..65bf9a9f753d mode 000000,100644..100644 --- a/contrib/libfido2/man/eddsa_pk_new.3 +++ b/contrib/libfido2/man/eddsa_pk_new.3 diff --cc contrib/libfido2/man/es256_pk_new.3 index 000000000000,54439cd300cf..54439cd300cf mode 000000,100644..100644 --- a/contrib/libfido2/man/es256_pk_new.3 +++ b/contrib/libfido2/man/es256_pk_new.3 diff --cc contrib/libfido2/man/fido2-assert.1 index 000000000000,da47d6f19dd3..da47d6f19dd3 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido2-assert.1 +++ b/contrib/libfido2/man/fido2-assert.1 diff --cc contrib/libfido2/man/fido2-cred.1 index 000000000000,301564d688e5..301564d688e5 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido2-cred.1 +++ b/contrib/libfido2/man/fido2-cred.1 diff --cc contrib/libfido2/man/fido2-token.1 index 000000000000,43f1c0ea48b7..43f1c0ea48b7 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido2-token.1 +++ b/contrib/libfido2/man/fido2-token.1 diff --cc contrib/libfido2/man/fido_assert_allow_cred.3 index 000000000000,bbe6e4d8929a..bbe6e4d8929a mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_assert_allow_cred.3 +++ b/contrib/libfido2/man/fido_assert_allow_cred.3 diff --cc contrib/libfido2/man/fido_assert_new.3 index 000000000000,16f4e3a6e46d..16f4e3a6e46d mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_assert_new.3 +++ b/contrib/libfido2/man/fido_assert_new.3 diff --cc contrib/libfido2/man/fido_assert_set_authdata.3 index 000000000000,2f2ca5b45d6e..2f2ca5b45d6e mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_assert_set_authdata.3 +++ b/contrib/libfido2/man/fido_assert_set_authdata.3 diff --cc contrib/libfido2/man/fido_assert_verify.3 index 000000000000,82e64e12e27a..82e64e12e27a mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_assert_verify.3 +++ b/contrib/libfido2/man/fido_assert_verify.3 diff --cc contrib/libfido2/man/fido_bio_dev_get_info.3 index 000000000000,1fe3e8ebc18f..1fe3e8ebc18f mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_bio_dev_get_info.3 +++ b/contrib/libfido2/man/fido_bio_dev_get_info.3 diff --cc contrib/libfido2/man/fido_bio_enroll_new.3 index 000000000000,3db3e7acd45d..3db3e7acd45d mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_bio_enroll_new.3 +++ b/contrib/libfido2/man/fido_bio_enroll_new.3 diff --cc contrib/libfido2/man/fido_bio_info_new.3 index 000000000000,c82733337b4e..c82733337b4e mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_bio_info_new.3 +++ b/contrib/libfido2/man/fido_bio_info_new.3 diff --cc contrib/libfido2/man/fido_bio_template.3 index 000000000000,12a379e9a46a..12a379e9a46a mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_bio_template.3 +++ b/contrib/libfido2/man/fido_bio_template.3 diff --cc contrib/libfido2/man/fido_cbor_info_new.3 index 000000000000,ecba77291f53..ecba77291f53 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_cbor_info_new.3 +++ b/contrib/libfido2/man/fido_cbor_info_new.3 diff --cc contrib/libfido2/man/fido_cred_exclude.3 index 000000000000,700d6afd8746..700d6afd8746 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_cred_exclude.3 +++ b/contrib/libfido2/man/fido_cred_exclude.3 diff --cc contrib/libfido2/man/fido_cred_new.3 index 000000000000,8cecf5f29850..8cecf5f29850 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_cred_new.3 +++ b/contrib/libfido2/man/fido_cred_new.3 diff --cc contrib/libfido2/man/fido_cred_set_authdata.3 index 000000000000,91e1edbaf810..91e1edbaf810 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_cred_set_authdata.3 +++ b/contrib/libfido2/man/fido_cred_set_authdata.3 diff --cc contrib/libfido2/man/fido_cred_verify.3 index 000000000000,6b720f2132ea..6b720f2132ea mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_cred_verify.3 +++ b/contrib/libfido2/man/fido_cred_verify.3 diff --cc contrib/libfido2/man/fido_credman_metadata_new.3 index 000000000000,31f240fbbe8c..31f240fbbe8c mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_credman_metadata_new.3 +++ b/contrib/libfido2/man/fido_credman_metadata_new.3 diff --cc contrib/libfido2/man/fido_dev_enable_entattest.3 index 000000000000,7cb766d41d0c..7cb766d41d0c mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_enable_entattest.3 +++ b/contrib/libfido2/man/fido_dev_enable_entattest.3 diff --cc contrib/libfido2/man/fido_dev_get_assert.3 index 000000000000,2e33fc516e7d..2e33fc516e7d mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_get_assert.3 +++ b/contrib/libfido2/man/fido_dev_get_assert.3 diff --cc contrib/libfido2/man/fido_dev_get_touch_begin.3 index 000000000000,8372c6ff010b..8372c6ff010b mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_get_touch_begin.3 +++ b/contrib/libfido2/man/fido_dev_get_touch_begin.3 diff --cc contrib/libfido2/man/fido_dev_info_manifest.3 index 000000000000,22519e29b9fa..22519e29b9fa mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_info_manifest.3 +++ b/contrib/libfido2/man/fido_dev_info_manifest.3 diff --cc contrib/libfido2/man/fido_dev_largeblob_get.3 index 000000000000,830534ed0e7b..830534ed0e7b mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_largeblob_get.3 +++ b/contrib/libfido2/man/fido_dev_largeblob_get.3 diff --cc contrib/libfido2/man/fido_dev_make_cred.3 index 000000000000,cd156dc94f89..cd156dc94f89 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_make_cred.3 +++ b/contrib/libfido2/man/fido_dev_make_cred.3 diff --cc contrib/libfido2/man/fido_dev_open.3 index 000000000000,f2af7817d801..f2af7817d801 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_open.3 +++ b/contrib/libfido2/man/fido_dev_open.3 diff --cc contrib/libfido2/man/fido_dev_set_io_functions.3 index 000000000000,231ae2411be8..231ae2411be8 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_set_io_functions.3 +++ b/contrib/libfido2/man/fido_dev_set_io_functions.3 diff --cc contrib/libfido2/man/fido_dev_set_pin.3 index 000000000000,f5ef94ff6fb5..f5ef94ff6fb5 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_dev_set_pin.3 +++ b/contrib/libfido2/man/fido_dev_set_pin.3 diff --cc contrib/libfido2/man/fido_init.3 index 000000000000,dcfc530c59ae..dcfc530c59ae mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_init.3 +++ b/contrib/libfido2/man/fido_init.3 diff --cc contrib/libfido2/man/fido_strerr.3 index 000000000000,05c86b92a158..05c86b92a158 mode 000000,100644..100644 --- a/contrib/libfido2/man/fido_strerr.3 +++ b/contrib/libfido2/man/fido_strerr.3 diff --cc contrib/libfido2/man/rs256_pk_new.3 index 000000000000,4ad0ebe936f3..4ad0ebe936f3 mode 000000,100644..100644 --- a/contrib/libfido2/man/rs256_pk_new.3 +++ b/contrib/libfido2/man/rs256_pk_new.3 diff --cc contrib/libfido2/man/style.css index 000000000000,8c223faa9a19..8c223faa9a19 mode 000000,100644..100644 --- a/contrib/libfido2/man/style.css +++ b/contrib/libfido2/man/style.css diff --cc contrib/libfido2/openbsd-compat/bsd-getline.c index 000000000000,52b44f70ba2f..52b44f70ba2f mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/bsd-getline.c +++ b/contrib/libfido2/openbsd-compat/bsd-getline.c diff --cc contrib/libfido2/openbsd-compat/bsd-getpagesize.c index 000000000000,903bfc310fb9..903bfc310fb9 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/bsd-getpagesize.c +++ b/contrib/libfido2/openbsd-compat/bsd-getpagesize.c diff --cc contrib/libfido2/openbsd-compat/clock_gettime.c index 000000000000,ca261a65e7f1..ca261a65e7f1 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/clock_gettime.c +++ b/contrib/libfido2/openbsd-compat/clock_gettime.c diff --cc contrib/libfido2/openbsd-compat/endian_win32.c index 000000000000,9981dfafbaeb..9981dfafbaeb mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/endian_win32.c +++ b/contrib/libfido2/openbsd-compat/endian_win32.c diff --cc contrib/libfido2/openbsd-compat/err.h index 000000000000,394c7bb12f68..394c7bb12f68 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/err.h +++ b/contrib/libfido2/openbsd-compat/err.h diff --cc contrib/libfido2/openbsd-compat/explicit_bzero.c index 000000000000,ac64e69b4d18..ac64e69b4d18 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/explicit_bzero.c +++ b/contrib/libfido2/openbsd-compat/explicit_bzero.c diff --cc contrib/libfido2/openbsd-compat/explicit_bzero_win32.c index 000000000000,8017aff99991..8017aff99991 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/explicit_bzero_win32.c +++ b/contrib/libfido2/openbsd-compat/explicit_bzero_win32.c diff --cc contrib/libfido2/openbsd-compat/freezero.c index 000000000000,d1e00661fd27..d1e00661fd27 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/freezero.c +++ b/contrib/libfido2/openbsd-compat/freezero.c diff --cc contrib/libfido2/openbsd-compat/getopt.h index 000000000000,8eb12447ed64..8eb12447ed64 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/getopt.h +++ b/contrib/libfido2/openbsd-compat/getopt.h diff --cc contrib/libfido2/openbsd-compat/getopt_long.c index 000000000000,dabbb461cbe5..dabbb461cbe5 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/getopt_long.c +++ b/contrib/libfido2/openbsd-compat/getopt_long.c diff --cc contrib/libfido2/openbsd-compat/hkdf.c index 000000000000,745b420f3747..745b420f3747 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/hkdf.c +++ b/contrib/libfido2/openbsd-compat/hkdf.c diff --cc contrib/libfido2/openbsd-compat/hkdf.h index 000000000000,34450f9dd7f0..34450f9dd7f0 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/hkdf.h +++ b/contrib/libfido2/openbsd-compat/hkdf.h diff --cc contrib/libfido2/openbsd-compat/openbsd-compat.h index 000000000000,1be3aa295051..1be3aa295051 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/openbsd-compat.h +++ b/contrib/libfido2/openbsd-compat/openbsd-compat.h diff --cc contrib/libfido2/openbsd-compat/posix_ioctl_check.c index 000000000000,599a3bff3bc6..599a3bff3bc6 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/posix_ioctl_check.c +++ b/contrib/libfido2/openbsd-compat/posix_ioctl_check.c diff --cc contrib/libfido2/openbsd-compat/posix_win.c index 000000000000,eac67c2304f8..eac67c2304f8 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/posix_win.c +++ b/contrib/libfido2/openbsd-compat/posix_win.c diff --cc contrib/libfido2/openbsd-compat/posix_win.h index 000000000000,a1e0888cc7f5..a1e0888cc7f5 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/posix_win.h +++ b/contrib/libfido2/openbsd-compat/posix_win.h diff --cc contrib/libfido2/openbsd-compat/readpassphrase.c index 000000000000,8b841906a735..8b841906a735 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/readpassphrase.c +++ b/contrib/libfido2/openbsd-compat/readpassphrase.c diff --cc contrib/libfido2/openbsd-compat/readpassphrase.h index 000000000000,e4451f302ba5..e4451f302ba5 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/readpassphrase.h +++ b/contrib/libfido2/openbsd-compat/readpassphrase.h diff --cc contrib/libfido2/openbsd-compat/readpassphrase_win32.c index 000000000000,968987c563ab..968987c563ab mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/readpassphrase_win32.c +++ b/contrib/libfido2/openbsd-compat/readpassphrase_win32.c diff --cc contrib/libfido2/openbsd-compat/recallocarray.c index 000000000000,5d2f8d9885fd..5d2f8d9885fd mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/recallocarray.c +++ b/contrib/libfido2/openbsd-compat/recallocarray.c diff --cc contrib/libfido2/openbsd-compat/strlcat.c index 000000000000,44470debc972..44470debc972 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/strlcat.c +++ b/contrib/libfido2/openbsd-compat/strlcat.c diff --cc contrib/libfido2/openbsd-compat/strlcpy.c index 000000000000,a8b18eaccf8f..a8b18eaccf8f mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/strlcpy.c +++ b/contrib/libfido2/openbsd-compat/strlcpy.c diff --cc contrib/libfido2/openbsd-compat/time.h index 000000000000,b125f73a7072..b125f73a7072 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/time.h +++ b/contrib/libfido2/openbsd-compat/time.h diff --cc contrib/libfido2/openbsd-compat/timingsafe_bcmp.c index 000000000000,3f7b9e541cec..3f7b9e541cec mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/timingsafe_bcmp.c +++ b/contrib/libfido2/openbsd-compat/timingsafe_bcmp.c diff --cc contrib/libfido2/openbsd-compat/types.h index 000000000000,617023078be3..617023078be3 mode 000000,100644..100644 --- a/contrib/libfido2/openbsd-compat/types.h +++ b/contrib/libfido2/openbsd-compat/types.h diff --cc contrib/libfido2/regress/CMakeLists.txt index 000000000000,0314c38f7161..0314c38f7161 mode 000000,100644..100644 --- a/contrib/libfido2/regress/CMakeLists.txt +++ b/contrib/libfido2/regress/CMakeLists.txt diff --cc contrib/libfido2/regress/assert.c index 000000000000,dfaf50662c76..dfaf50662c76 mode 000000,100644..100644 --- a/contrib/libfido2/regress/assert.c +++ b/contrib/libfido2/regress/assert.c diff --cc contrib/libfido2/regress/cred.c index 000000000000,01df1ef9320d..01df1ef9320d mode 000000,100644..100644 --- a/contrib/libfido2/regress/cred.c +++ b/contrib/libfido2/regress/cred.c diff --cc contrib/libfido2/regress/dev.c index 000000000000,35061aabbb64..35061aabbb64 mode 000000,100644..100644 --- a/contrib/libfido2/regress/dev.c +++ b/contrib/libfido2/regress/dev.c diff --cc contrib/libfido2/src/CMakeLists.txt index 000000000000,f9efd3f234ed..f9efd3f234ed mode 000000,100644..100644 --- a/contrib/libfido2/src/CMakeLists.txt +++ b/contrib/libfido2/src/CMakeLists.txt diff --cc contrib/libfido2/src/aes256.c index 000000000000,f093b7ce0bd5..f093b7ce0bd5 mode 000000,100644..100644 --- a/contrib/libfido2/src/aes256.c +++ b/contrib/libfido2/src/aes256.c diff --cc contrib/libfido2/src/assert.c index 000000000000,b36f8e324660..b36f8e324660 mode 000000,100644..100644 --- a/contrib/libfido2/src/assert.c +++ b/contrib/libfido2/src/assert.c diff --cc contrib/libfido2/src/authkey.c index 000000000000,c3474ccafc01..c3474ccafc01 mode 000000,100644..100644 --- a/contrib/libfido2/src/authkey.c +++ b/contrib/libfido2/src/authkey.c diff --cc contrib/libfido2/src/bio.c index 000000000000,06bc32eea7ed..06bc32eea7ed mode 000000,100644..100644 --- a/contrib/libfido2/src/bio.c +++ b/contrib/libfido2/src/bio.c diff --cc contrib/libfido2/src/blob.c index 000000000000,31e4cab0edc4..31e4cab0edc4 mode 000000,100644..100644 --- a/contrib/libfido2/src/blob.c +++ b/contrib/libfido2/src/blob.c diff --cc contrib/libfido2/src/blob.h index 000000000000,76a8dd994f22..76a8dd994f22 mode 000000,100644..100644 --- a/contrib/libfido2/src/blob.h +++ b/contrib/libfido2/src/blob.h diff --cc contrib/libfido2/src/buf.c index 000000000000,f7161e64a9ca..f7161e64a9ca mode 000000,100644..100644 --- a/contrib/libfido2/src/buf.c +++ b/contrib/libfido2/src/buf.c diff --cc contrib/libfido2/src/cbor.c index 000000000000,5c1b11583e7b..5c1b11583e7b mode 000000,100644..100644 --- a/contrib/libfido2/src/cbor.c +++ b/contrib/libfido2/src/cbor.c diff --cc contrib/libfido2/src/compress.c index 000000000000,ee5501b4a4a1..ee5501b4a4a1 mode 000000,100644..100644 --- a/contrib/libfido2/src/compress.c +++ b/contrib/libfido2/src/compress.c diff --cc contrib/libfido2/src/config.c index 000000000000,0dda16163bc8..0dda16163bc8 mode 000000,100644..100644 --- a/contrib/libfido2/src/config.c +++ b/contrib/libfido2/src/config.c diff --cc contrib/libfido2/src/cred.c index 000000000000,5e65b08293b1..5e65b08293b1 mode 000000,100644..100644 --- a/contrib/libfido2/src/cred.c +++ b/contrib/libfido2/src/cred.c diff --cc contrib/libfido2/src/credman.c index 000000000000,e48ca4543b10..e48ca4543b10 mode 000000,100644..100644 --- a/contrib/libfido2/src/credman.c +++ b/contrib/libfido2/src/credman.c diff --cc contrib/libfido2/src/dev.c index 000000000000,a003854f89d2..a003854f89d2 mode 000000,100644..100644 --- a/contrib/libfido2/src/dev.c +++ b/contrib/libfido2/src/dev.c diff --cc contrib/libfido2/src/diff_exports.sh index 000000000000,9cff0095a201..9cff0095a201 mode 000000,100755..100755 --- a/contrib/libfido2/src/diff_exports.sh +++ b/contrib/libfido2/src/diff_exports.sh diff --cc contrib/libfido2/src/ecdh.c index 000000000000,3ea47ae6457e..3ea47ae6457e mode 000000,100644..100644 --- a/contrib/libfido2/src/ecdh.c +++ b/contrib/libfido2/src/ecdh.c diff --cc contrib/libfido2/src/eddsa.c index 000000000000,89b84c5a6bd4..89b84c5a6bd4 mode 000000,100644..100644 --- a/contrib/libfido2/src/eddsa.c +++ b/contrib/libfido2/src/eddsa.c diff --cc contrib/libfido2/src/err.c index 000000000000,8c2ae5ff4170..8c2ae5ff4170 mode 000000,100644..100644 --- a/contrib/libfido2/src/err.c +++ b/contrib/libfido2/src/err.c diff --cc contrib/libfido2/src/es256.c index 000000000000,9cdb48e4832d..9cdb48e4832d mode 000000,100644..100644 --- a/contrib/libfido2/src/es256.c +++ b/contrib/libfido2/src/es256.c diff --cc contrib/libfido2/src/export.gnu index 000000000000,40dc7915e6e2..40dc7915e6e2 mode 000000,100644..100644 --- a/contrib/libfido2/src/export.gnu +++ b/contrib/libfido2/src/export.gnu diff --cc contrib/libfido2/src/export.llvm index 000000000000,8d3810f92ce9..8d3810f92ce9 mode 000000,100644..100644 --- a/contrib/libfido2/src/export.llvm +++ b/contrib/libfido2/src/export.llvm diff --cc contrib/libfido2/src/export.msvc index 000000000000,ca4971dec2d1..ca4971dec2d1 mode 000000,100644..100644 --- a/contrib/libfido2/src/export.msvc +++ b/contrib/libfido2/src/export.msvc diff --cc contrib/libfido2/src/extern.h index 000000000000,3be33236f2b1..3be33236f2b1 mode 000000,100644..100644 --- a/contrib/libfido2/src/extern.h +++ b/contrib/libfido2/src/extern.h diff --cc contrib/libfido2/src/fido.h index 000000000000,d5446516f972..d5446516f972 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido.h +++ b/contrib/libfido2/src/fido.h diff --cc contrib/libfido2/src/fido/bio.h index 000000000000,afe9ca4752b4..afe9ca4752b4 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/bio.h +++ b/contrib/libfido2/src/fido/bio.h diff --cc contrib/libfido2/src/fido/config.h index 000000000000,869927df914b..869927df914b mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/config.h +++ b/contrib/libfido2/src/fido/config.h diff --cc contrib/libfido2/src/fido/credman.h index 000000000000,66a966970501..66a966970501 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/credman.h +++ b/contrib/libfido2/src/fido/credman.h diff --cc contrib/libfido2/src/fido/eddsa.h index 000000000000,4a810179b6fa..4a810179b6fa mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/eddsa.h +++ b/contrib/libfido2/src/fido/eddsa.h diff --cc contrib/libfido2/src/fido/err.h index 000000000000,74fdf9d2bfe8..74fdf9d2bfe8 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/err.h +++ b/contrib/libfido2/src/fido/err.h diff --cc contrib/libfido2/src/fido/es256.h index 000000000000,80f4db39c7b0..80f4db39c7b0 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/es256.h +++ b/contrib/libfido2/src/fido/es256.h diff --cc contrib/libfido2/src/fido/param.h index 000000000000,025bb57dd81c..025bb57dd81c mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/param.h +++ b/contrib/libfido2/src/fido/param.h diff --cc contrib/libfido2/src/fido/rs256.h index 000000000000,2b08d59980c1..2b08d59980c1 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/rs256.h +++ b/contrib/libfido2/src/fido/rs256.h diff --cc contrib/libfido2/src/fido/types.h index 000000000000,00b6058c7e13..00b6058c7e13 mode 000000,100644..100644 --- a/contrib/libfido2/src/fido/types.h +++ b/contrib/libfido2/src/fido/types.h diff --cc contrib/libfido2/src/hid.c index 000000000000,a3768ad3cae8..a3768ad3cae8 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid.c +++ b/contrib/libfido2/src/hid.c diff --cc contrib/libfido2/src/hid_freebsd.c index 000000000000,86c1854e9c8c..86c1854e9c8c mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_freebsd.c +++ b/contrib/libfido2/src/hid_freebsd.c diff --cc contrib/libfido2/src/hid_hidapi.c index 000000000000,f6d21711e152..f6d21711e152 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_hidapi.c +++ b/contrib/libfido2/src/hid_hidapi.c diff --cc contrib/libfido2/src/hid_linux.c index 000000000000,c622880a2594..c622880a2594 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_linux.c +++ b/contrib/libfido2/src/hid_linux.c diff --cc contrib/libfido2/src/hid_netbsd.c index 000000000000,c24c6de7ce29..c24c6de7ce29 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_netbsd.c +++ b/contrib/libfido2/src/hid_netbsd.c diff --cc contrib/libfido2/src/hid_openbsd.c index 000000000000,fbf10fd11ab9..fbf10fd11ab9 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_openbsd.c +++ b/contrib/libfido2/src/hid_openbsd.c diff --cc contrib/libfido2/src/hid_osx.c index 000000000000,e9866658a4eb..e9866658a4eb mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_osx.c +++ b/contrib/libfido2/src/hid_osx.c diff --cc contrib/libfido2/src/hid_unix.c index 000000000000,4b2aff9d67f6..4b2aff9d67f6 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_unix.c +++ b/contrib/libfido2/src/hid_unix.c diff --cc contrib/libfido2/src/hid_win.c index 000000000000,455cf8bae835..455cf8bae835 mode 000000,100644..100644 --- a/contrib/libfido2/src/hid_win.c +++ b/contrib/libfido2/src/hid_win.c diff --cc contrib/libfido2/src/info.c index 000000000000,57bc8de44063..57bc8de44063 mode 000000,100644..100644 --- a/contrib/libfido2/src/info.c +++ b/contrib/libfido2/src/info.c diff --cc contrib/libfido2/src/io.c index 000000000000,e2594203efb0..e2594203efb0 mode 000000,100644..100644 --- a/contrib/libfido2/src/io.c +++ b/contrib/libfido2/src/io.c diff --cc contrib/libfido2/src/iso7816.c *** 218 LINES SKIPPED *** From nobody Thu Oct 7 01:41:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1307412D0ADB; Thu, 7 Oct 2021 01:41: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 4HPvDg00Wpz4dgR; Thu, 7 Oct 2021 01:41: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 D49652D53; Thu, 7 Oct 2021 01:41: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 1971fMOH021791; Thu, 7 Oct 2021 01:41:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1971fMKu021790; Thu, 7 Oct 2021 01:41:22 GMT (envelope-from git) Date: Thu, 7 Oct 2021 01:41:22 GMT Message-Id: <202110070141.1971fMKu021790@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 224a95f12427 - main - libfido2: Address CHERI compatibility List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 224a95f124270275ddd7ab9f8f87dd47bad7c282 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=224a95f124270275ddd7ab9f8f87dd47bad7c282 commit 224a95f124270275ddd7ab9f8f87dd47bad7c282 Author: Jessica Clarke AuthorDate: 2021-10-02 15:51:38 +0000 Commit: Ed Maste CommitDate: 2021-10-07 01:40:26 +0000 libfido2: Address CHERI compatibility Cherry-picked from libfido2 upstream f20a735c0a6f: iso7816: Avoid storing pointers in a packed structure On CHERI, and thus Arm's experimental Morello prototype architecture, pointers are represented as capabilities, which are unforgeable bounded pointers, providing always-on fine-grained spatial memory safety. The unforgeability is enforced through the use of tagged memory, with one validity tag bit per capability-sized-and-aligned word in memory. This means that storing a pointer to an unaligned location, which is not guaranteed to work per the C standard, either traps or results in the capability losing its tag (and thus never being dereferenceable again), depending on how exactly the store is done (specifically, whether a capability store or memcpy is used). However, iso7816 itself does not need to be packed, and doing so likely causes inefficiencies on existing architectures. The iso7816_header_t member is packed, and the flexible payload array is a uint8_t (which by definition has no padding bits and is exactly 8 bits in size and, since CHAR_BITS must be at least 8, its existence implies that it has the same representation as unsigned char, and that it has size and alignment 1) so there will never be any padding inserted between header and payload (but payload may overlap with padding at the end of the struct due to how flexible arrays work, which means we need to be careful about our calculations). Co-authored-by: pedro martelletto --- contrib/libfido2/src/iso7816.c | 4 ++-- contrib/libfido2/src/iso7816.h | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/contrib/libfido2/src/iso7816.c b/contrib/libfido2/src/iso7816.c index a11aae3e99d1..a4902277c6d8 100644 --- a/contrib/libfido2/src/iso7816.c +++ b/contrib/libfido2/src/iso7816.c @@ -59,6 +59,6 @@ iso7816_ptr(const iso7816_apdu_t *apdu) size_t iso7816_len(const iso7816_apdu_t *apdu) { - return apdu->alloc_len - sizeof(apdu->alloc_len) - - sizeof(apdu->payload_len) - sizeof(apdu->payload_ptr); + return apdu->alloc_len - offsetof(iso7816_apdu_t, header) - + (sizeof(iso7816_apdu_t) - offsetof(iso7816_apdu_t, payload)); } diff --git a/contrib/libfido2/src/iso7816.h b/contrib/libfido2/src/iso7816.h index 5f5363a63a56..9bfad1fbab9d 100644 --- a/contrib/libfido2/src/iso7816.h +++ b/contrib/libfido2/src/iso7816.h @@ -27,14 +27,13 @@ struct iso7816_header { uint8_t lc3; }) -PACKED_TYPE(iso7816_apdu_t, -struct iso7816_apdu { +typedef struct iso7816_apdu { size_t alloc_len; uint16_t payload_len; uint8_t *payload_ptr; iso7816_header_t header; uint8_t payload[]; -}) +} iso7816_apdu_t; const unsigned char *iso7816_ptr(const iso7816_apdu_t *); int iso7816_add(iso7816_apdu_t *, const void *, size_t); From nobody Thu Oct 7 01:46:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id F293412D167A; Thu, 7 Oct 2021 01:46: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 4HPvL56SGCz4f90; Thu, 7 Oct 2021 01:46: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 BDB342A64; Thu, 7 Oct 2021 01:46: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 1971k5Y2025574; Thu, 7 Oct 2021 01:46:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1971k51N025573; Thu, 7 Oct 2021 01:46:05 GMT (envelope-from git) Date: Thu, 7 Oct 2021 01:46:05 GMT Message-Id: <202110070146.1971k51N025573@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: 3f66b96d8658 - main - ixgbe: Update shared code catchup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3f66b96d8658f8721e6b1c6f035611bec44675b9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kbowling (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=3f66b96d8658f8721e6b1c6f035611bec44675b9 commit 3f66b96d8658f8721e6b1c6f035611bec44675b9 Author: Kevin Bowling AuthorDate: 2021-10-07 01:43:27 +0000 Commit: Kevin Bowling CommitDate: 2021-10-07 01:45:55 +0000 ixgbe: Update shared code catchup Leftovers from DPDK sync Reviewed by: grehan Obtained from: DPDK MFC after: 5 days Differential Revision: https://reviews.freebsd.org/D31621 --- sys/dev/ixgbe/ixgbe_82599.c | 5 ++ sys/dev/ixgbe/ixgbe_api.c | 54 ++++++++++++++ sys/dev/ixgbe/ixgbe_api.h | 3 + sys/dev/ixgbe/ixgbe_common.c | 174 ++++++++++++++++++++++++++++++++++++++++++- sys/dev/ixgbe/ixgbe_common.h | 14 +++- sys/dev/ixgbe/ixgbe_dcb.c | 20 ----- sys/dev/ixgbe/ixgbe_mbx.c | 116 ++++++++++++++++++++++++++++- sys/dev/ixgbe/ixgbe_mbx.h | 7 ++ sys/dev/ixgbe/ixgbe_phy.c | 11 ++- sys/dev/ixgbe/ixgbe_phy.h | 2 - sys/dev/ixgbe/ixgbe_type.h | 52 +++++++++++-- sys/dev/ixgbe/ixgbe_vf.c | 4 - sys/dev/ixgbe/ixgbe_x540.c | 2 +- sys/dev/ixgbe/ixgbe_x550.c | 12 ++- 14 files changed, 427 insertions(+), 49 deletions(-) diff --git a/sys/dev/ixgbe/ixgbe_82599.c b/sys/dev/ixgbe/ixgbe_82599.c index 9eb3904a30f9..698602080592 100644 --- a/sys/dev/ixgbe/ixgbe_82599.c +++ b/sys/dev/ixgbe/ixgbe_82599.c @@ -395,6 +395,11 @@ s32 ixgbe_init_ops_82599(struct ixgbe_hw *hw) /* Manageability interface */ mac->ops.set_fw_drv_ver = ixgbe_set_fw_drv_ver_generic; + mac->ops.get_thermal_sensor_data = + ixgbe_get_thermal_sensor_data_generic; + mac->ops.init_thermal_sensor_thresh = + ixgbe_init_thermal_sensor_thresh_generic; + mac->ops.bypass_rw = ixgbe_bypass_rw_generic; mac->ops.bypass_valid_rd = ixgbe_bypass_valid_rd_generic; mac->ops.bypass_set = ixgbe_bypass_set_generic; diff --git a/sys/dev/ixgbe/ixgbe_api.c b/sys/dev/ixgbe/ixgbe_api.c index 5a425f087f1a..87b213a99b0e 100644 --- a/sys/dev/ixgbe/ixgbe_api.c +++ b/sys/dev/ixgbe/ixgbe_api.c @@ -113,6 +113,13 @@ s32 ixgbe_init_shared_code(struct ixgbe_hw *hw) case ixgbe_mac_X550EM_a: status = ixgbe_init_ops_X550EM_a(hw); break; + case ixgbe_mac_82599_vf: + case ixgbe_mac_X540_vf: + case ixgbe_mac_X550_vf: + case ixgbe_mac_X550EM_x_vf: + case ixgbe_mac_X550EM_a_vf: + status = ixgbe_init_ops_vf(hw); + break; default: status = IXGBE_ERR_DEVICE_NOT_SUPPORTED; break; @@ -176,6 +183,15 @@ s32 ixgbe_set_mac_type(struct ixgbe_hw *hw) case IXGBE_DEV_ID_82599_T3_LOM: hw->mac.type = ixgbe_mac_82599EB; break; + case IXGBE_DEV_ID_82599_VF: + case IXGBE_DEV_ID_82599_VF_HV: + hw->mac.type = ixgbe_mac_82599_vf; + break; + case IXGBE_DEV_ID_X540_VF: + case IXGBE_DEV_ID_X540_VF_HV: + hw->mac.type = ixgbe_mac_X540_vf; + hw->mvals = ixgbe_mvals_X540; + break; case IXGBE_DEV_ID_X540T: case IXGBE_DEV_ID_X540T1: case IXGBE_DEV_ID_X540_BYPASS: @@ -210,6 +226,21 @@ s32 ixgbe_set_mac_type(struct ixgbe_hw *hw) hw->mac.type = ixgbe_mac_X550EM_a; hw->mvals = ixgbe_mvals_X550EM_a; break; + case IXGBE_DEV_ID_X550_VF: + case IXGBE_DEV_ID_X550_VF_HV: + hw->mac.type = ixgbe_mac_X550_vf; + hw->mvals = ixgbe_mvals_X550; + break; + case IXGBE_DEV_ID_X550EM_X_VF: + case IXGBE_DEV_ID_X550EM_X_VF_HV: + hw->mac.type = ixgbe_mac_X550EM_x_vf; + hw->mvals = ixgbe_mvals_X550EM_x; + break; + case IXGBE_DEV_ID_X550EM_A_VF: + case IXGBE_DEV_ID_X550EM_A_VF_HV: + hw->mac.type = ixgbe_mac_X550EM_a_vf; + hw->mvals = ixgbe_mvals_X550EM_a; + break; default: ret_val = IXGBE_ERR_DEVICE_NOT_SUPPORTED; ERROR_REPORT2(IXGBE_ERROR_UNSUPPORTED, @@ -1146,6 +1177,29 @@ s32 ixgbe_set_fw_drv_ver(struct ixgbe_hw *hw, u8 maj, u8 min, u8 build, } +/** + * ixgbe_get_thermal_sensor_data - Gathers thermal sensor data + * @hw: pointer to hardware structure + * + * Updates the temperatures in mac.thermal_sensor_data + **/ +s32 ixgbe_get_thermal_sensor_data(struct ixgbe_hw *hw) +{ + return ixgbe_call_func(hw, hw->mac.ops.get_thermal_sensor_data, (hw), + IXGBE_NOT_IMPLEMENTED); +} + +/** + * ixgbe_init_thermal_sensor_thresh - Inits thermal sensor thresholds + * @hw: pointer to hardware structure + * + * Inits the thermal sensor thresholds according to the NVM map + **/ +s32 ixgbe_init_thermal_sensor_thresh(struct ixgbe_hw *hw) +{ + return ixgbe_call_func(hw, hw->mac.ops.init_thermal_sensor_thresh, (hw), + IXGBE_NOT_IMPLEMENTED); +} /** * ixgbe_dmac_config - Configure DMA Coalescing registers. diff --git a/sys/dev/ixgbe/ixgbe_api.h b/sys/dev/ixgbe/ixgbe_api.h index c70f27c6aa2c..7fd300bfe4ee 100644 --- a/sys/dev/ixgbe/ixgbe_api.h +++ b/sys/dev/ixgbe/ixgbe_api.h @@ -49,6 +49,7 @@ extern s32 ixgbe_init_ops_X550(struct ixgbe_hw *hw); extern s32 ixgbe_init_ops_X550EM(struct ixgbe_hw *hw); extern s32 ixgbe_init_ops_X550EM_x(struct ixgbe_hw *hw); extern s32 ixgbe_init_ops_X550EM_a(struct ixgbe_hw *hw); +extern s32 ixgbe_init_ops_vf(struct ixgbe_hw *hw); s32 ixgbe_set_mac_type(struct ixgbe_hw *hw); s32 ixgbe_init_hw(struct ixgbe_hw *hw); @@ -135,6 +136,8 @@ s32 ixgbe_fc_enable(struct ixgbe_hw *hw); s32 ixgbe_setup_fc(struct ixgbe_hw *hw); s32 ixgbe_set_fw_drv_ver(struct ixgbe_hw *hw, u8 maj, u8 min, u8 build, u8 ver, u16 len, char *driver_ver); +s32 ixgbe_get_thermal_sensor_data(struct ixgbe_hw *hw); +s32 ixgbe_init_thermal_sensor_thresh(struct ixgbe_hw *hw); void ixgbe_set_mta(struct ixgbe_hw *hw, u8 *mc_addr); s32 ixgbe_get_phy_firmware_version(struct ixgbe_hw *hw, u16 *firmware_version); diff --git a/sys/dev/ixgbe/ixgbe_common.c b/sys/dev/ixgbe/ixgbe_common.c index 50e18bcba997..0ad538a465ea 100644 --- a/sys/dev/ixgbe/ixgbe_common.c +++ b/sys/dev/ixgbe/ixgbe_common.c @@ -4132,7 +4132,7 @@ s32 ixgbe_clear_vfta_generic(struct ixgbe_hw *hw) for (offset = 0; offset < IXGBE_VLVF_ENTRIES; offset++) { IXGBE_WRITE_REG(hw, IXGBE_VLVF(offset), 0); IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset * 2), 0); - IXGBE_WRITE_REG(hw, IXGBE_VLVFB((offset * 2) + 1), 0); + IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset * 2 + 1), 0); } return IXGBE_SUCCESS; @@ -4626,7 +4626,7 @@ s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, /* first pull in the header so we know the buffer length */ for (bi = 0; bi < dword_len; bi++) { buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi); - IXGBE_LE32_TO_CPUS(&buffer[bi]); + IXGBE_LE32_TO_CPUS((uintptr_t)&buffer[bi]); } /* @@ -4662,7 +4662,7 @@ s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, /* Pull in the rest of the buffer (bi is where we left off) */ for (; bi <= dword_len; bi++) { buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi); - IXGBE_LE32_TO_CPUS(&buffer[bi]); + IXGBE_LE32_TO_CPUS((uintptr_t)&buffer[bi]); } rel_out: @@ -4852,6 +4852,174 @@ out: IXGBE_WRITE_REG(hw, IXGBE_HLREG0, hlreg0); } +static const u8 ixgbe_emc_temp_data[4] = { + IXGBE_EMC_INTERNAL_DATA, + IXGBE_EMC_DIODE1_DATA, + IXGBE_EMC_DIODE2_DATA, + IXGBE_EMC_DIODE3_DATA +}; +static const u8 ixgbe_emc_therm_limit[4] = { + IXGBE_EMC_INTERNAL_THERM_LIMIT, + IXGBE_EMC_DIODE1_THERM_LIMIT, + IXGBE_EMC_DIODE2_THERM_LIMIT, + IXGBE_EMC_DIODE3_THERM_LIMIT +}; + +/** + * ixgbe_get_thermal_sensor_data - Gathers thermal sensor data + * @hw: pointer to hardware structure + * + * Returns the thermal sensor data structure + **/ +s32 ixgbe_get_thermal_sensor_data_generic(struct ixgbe_hw *hw) +{ + s32 status = IXGBE_SUCCESS; + u16 ets_offset; + u16 ets_cfg; + u16 ets_sensor; + u8 num_sensors; + u8 sensor_index; + u8 sensor_location; + u8 i; + struct ixgbe_thermal_sensor_data *data = &hw->mac.thermal_sensor_data; + + DEBUGFUNC("ixgbe_get_thermal_sensor_data_generic"); + + /* Only support thermal sensors attached to 82599 physical port 0 */ + if ((hw->mac.type != ixgbe_mac_82599EB) || + (IXGBE_READ_REG(hw, IXGBE_STATUS) & IXGBE_STATUS_LAN_ID_1)) { + status = IXGBE_NOT_IMPLEMENTED; + goto out; + } + + status = hw->eeprom.ops.read(hw, IXGBE_ETS_CFG, &ets_offset); + if (status) + goto out; + + if ((ets_offset == 0x0000) || (ets_offset == 0xFFFF)) { + status = IXGBE_NOT_IMPLEMENTED; + goto out; + } + + status = hw->eeprom.ops.read(hw, ets_offset, &ets_cfg); + if (status) + goto out; + + if (((ets_cfg & IXGBE_ETS_TYPE_MASK) >> IXGBE_ETS_TYPE_SHIFT) + != IXGBE_ETS_TYPE_EMC) { + status = IXGBE_NOT_IMPLEMENTED; + goto out; + } + + num_sensors = (ets_cfg & IXGBE_ETS_NUM_SENSORS_MASK); + if (num_sensors > IXGBE_MAX_SENSORS) + num_sensors = IXGBE_MAX_SENSORS; + + for (i = 0; i < num_sensors; i++) { + status = hw->eeprom.ops.read(hw, (ets_offset + 1 + i), + &ets_sensor); + if (status) + goto out; + + sensor_index = ((ets_sensor & IXGBE_ETS_DATA_INDEX_MASK) >> + IXGBE_ETS_DATA_INDEX_SHIFT); + sensor_location = ((ets_sensor & IXGBE_ETS_DATA_LOC_MASK) >> + IXGBE_ETS_DATA_LOC_SHIFT); + + if (sensor_location != 0) { + status = hw->phy.ops.read_i2c_byte(hw, + ixgbe_emc_temp_data[sensor_index], + IXGBE_I2C_THERMAL_SENSOR_ADDR, + &data->sensor[i].temp); + if (status) + goto out; + } + } +out: + return status; +} + +/** + * ixgbe_init_thermal_sensor_thresh_generic - Inits thermal sensor thresholds + * @hw: pointer to hardware structure + * + * Inits the thermal sensor thresholds according to the NVM map + * and save off the threshold and location values into mac.thermal_sensor_data + **/ +s32 ixgbe_init_thermal_sensor_thresh_generic(struct ixgbe_hw *hw) +{ + s32 status = IXGBE_SUCCESS; + u16 offset; + u16 ets_offset; + u16 ets_cfg; + u16 ets_sensor; + u8 low_thresh_delta; + u8 num_sensors; + u8 sensor_index; + u8 sensor_location; + u8 therm_limit; + u8 i; + struct ixgbe_thermal_sensor_data *data = &hw->mac.thermal_sensor_data; + + DEBUGFUNC("ixgbe_init_thermal_sensor_thresh_generic"); + + memset(data, 0, sizeof(struct ixgbe_thermal_sensor_data)); + + /* Only support thermal sensors attached to 82599 physical port 0 */ + if ((hw->mac.type != ixgbe_mac_82599EB) || + (IXGBE_READ_REG(hw, IXGBE_STATUS) & IXGBE_STATUS_LAN_ID_1)) + return IXGBE_NOT_IMPLEMENTED; + + offset = IXGBE_ETS_CFG; + if (hw->eeprom.ops.read(hw, offset, &ets_offset)) + goto eeprom_err; + if ((ets_offset == 0x0000) || (ets_offset == 0xFFFF)) + return IXGBE_NOT_IMPLEMENTED; + + offset = ets_offset; + if (hw->eeprom.ops.read(hw, offset, &ets_cfg)) + goto eeprom_err; + if (((ets_cfg & IXGBE_ETS_TYPE_MASK) >> IXGBE_ETS_TYPE_SHIFT) + != IXGBE_ETS_TYPE_EMC) + return IXGBE_NOT_IMPLEMENTED; + + low_thresh_delta = ((ets_cfg & IXGBE_ETS_LTHRES_DELTA_MASK) >> + IXGBE_ETS_LTHRES_DELTA_SHIFT); + num_sensors = (ets_cfg & IXGBE_ETS_NUM_SENSORS_MASK); + + for (i = 0; i < num_sensors; i++) { + offset = ets_offset + 1 + i; + if (hw->eeprom.ops.read(hw, offset, &ets_sensor)) { + ERROR_REPORT2(IXGBE_ERROR_INVALID_STATE, + "eeprom read at offset %d failed", + offset); + continue; + } + sensor_index = ((ets_sensor & IXGBE_ETS_DATA_INDEX_MASK) >> + IXGBE_ETS_DATA_INDEX_SHIFT); + sensor_location = ((ets_sensor & IXGBE_ETS_DATA_LOC_MASK) >> + IXGBE_ETS_DATA_LOC_SHIFT); + therm_limit = ets_sensor & IXGBE_ETS_DATA_HTHRESH_MASK; + + hw->phy.ops.write_i2c_byte(hw, + ixgbe_emc_therm_limit[sensor_index], + IXGBE_I2C_THERMAL_SENSOR_ADDR, therm_limit); + + if ((i < IXGBE_MAX_SENSORS) && (sensor_location != 0)) { + data->sensor[i].location = sensor_location; + data->sensor[i].caution_thresh = therm_limit; + data->sensor[i].max_op_thresh = therm_limit - + low_thresh_delta; + } + } + return status; + +eeprom_err: + ERROR_REPORT2(IXGBE_ERROR_INVALID_STATE, + "eeprom read at offset %d failed", offset); + return IXGBE_NOT_IMPLEMENTED; +} + /** * ixgbe_bypass_rw_generic - Bit bang data into by_pass FW * diff --git a/sys/dev/ixgbe/ixgbe_common.h b/sys/dev/ixgbe/ixgbe_common.h index 051af213b628..e5a186f73ea9 100644 --- a/sys/dev/ixgbe/ixgbe_common.h +++ b/sys/dev/ixgbe/ixgbe_common.h @@ -43,12 +43,10 @@ IXGBE_WRITE_REG(hw, reg + 4, (u32) (value >> 32)); \ } while (0) #define IXGBE_REMOVED(a) (0) -#if !defined(NO_READ_PBA_RAW) || !defined(NO_WRITE_PBA_RAW) struct ixgbe_pba { u16 word[2]; u16 *pba_block; }; -#endif void ixgbe_dcb_get_rtrup2tc_generic(struct ixgbe_hw *hw, u8 *map); @@ -180,6 +178,18 @@ extern void ixgbe_stop_mac_link_on_d3_82599(struct ixgbe_hw *hw); bool ixgbe_mng_present(struct ixgbe_hw *hw); bool ixgbe_mng_enabled(struct ixgbe_hw *hw); +#define IXGBE_I2C_THERMAL_SENSOR_ADDR 0xF8 +#define IXGBE_EMC_INTERNAL_DATA 0x00 +#define IXGBE_EMC_INTERNAL_THERM_LIMIT 0x20 +#define IXGBE_EMC_DIODE1_DATA 0x01 +#define IXGBE_EMC_DIODE1_THERM_LIMIT 0x19 +#define IXGBE_EMC_DIODE2_DATA 0x23 +#define IXGBE_EMC_DIODE2_THERM_LIMIT 0x1A +#define IXGBE_EMC_DIODE3_DATA 0x2A +#define IXGBE_EMC_DIODE3_THERM_LIMIT 0x30 + +s32 ixgbe_get_thermal_sensor_data_generic(struct ixgbe_hw *hw); +s32 ixgbe_init_thermal_sensor_thresh_generic(struct ixgbe_hw *hw); void ixgbe_get_etk_id(struct ixgbe_hw *hw, struct ixgbe_nvm_version *nvm_ver); void ixgbe_get_oem_prod_version(struct ixgbe_hw *hw, diff --git a/sys/dev/ixgbe/ixgbe_dcb.c b/sys/dev/ixgbe/ixgbe_dcb.c index d096321b23c1..54102f312dbb 100644 --- a/sys/dev/ixgbe/ixgbe_dcb.c +++ b/sys/dev/ixgbe/ixgbe_dcb.c @@ -409,10 +409,8 @@ s32 ixgbe_dcb_get_tc_stats(struct ixgbe_hw *hw, struct ixgbe_hw_stats *stats, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_get_tc_stats_82599(hw, stats, tc_count); break; -#endif default: break; } @@ -440,10 +438,8 @@ s32 ixgbe_dcb_get_pfc_stats(struct ixgbe_hw *hw, struct ixgbe_hw_stats *stats, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_get_pfc_stats_82599(hw, stats, tc_count); break; -#endif default: break; } @@ -482,11 +478,9 @@ s32 ixgbe_dcb_config_rx_arbiter_cee(struct ixgbe_hw *hw, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_rx_arbiter_82599(hw, refill, max, bwgid, tsa, map); break; -#endif default: break; } @@ -524,11 +518,9 @@ s32 ixgbe_dcb_config_tx_desc_arbiter_cee(struct ixgbe_hw *hw, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_tx_desc_arbiter_82599(hw, refill, max, bwgid, tsa); break; -#endif default: break; } @@ -568,12 +560,10 @@ s32 ixgbe_dcb_config_tx_data_arbiter_cee(struct ixgbe_hw *hw, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_tx_data_arbiter_82599(hw, refill, max, bwgid, tsa, map); break; -#endif default: break; } @@ -606,10 +596,8 @@ s32 ixgbe_dcb_config_pfc_cee(struct ixgbe_hw *hw, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_pfc_82599(hw, pfc_en, map); break; -#endif default: break; } @@ -635,10 +623,8 @@ s32 ixgbe_dcb_config_tc_stats(struct ixgbe_hw *hw) case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_tc_stats_82599(hw, NULL); break; -#endif default: break; } @@ -683,7 +669,6 @@ s32 ixgbe_dcb_hw_config_cee(struct ixgbe_hw *hw, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ixgbe_dcb_config_82599(hw, dcb_config); ret = ixgbe_dcb_hw_config_82599(hw, dcb_config->link_speed, refill, max, bwgid, @@ -691,7 +676,6 @@ s32 ixgbe_dcb_hw_config_cee(struct ixgbe_hw *hw, ixgbe_dcb_config_tc_stats_82599(hw, dcb_config); break; -#endif default: break; } @@ -718,10 +702,8 @@ s32 ixgbe_dcb_config_pfc(struct ixgbe_hw *hw, u8 pfc_en, u8 *map) case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ret = ixgbe_dcb_config_pfc_82599(hw, pfc_en, map); break; -#endif default: break; } @@ -744,7 +726,6 @@ s32 ixgbe_dcb_hw_config(struct ixgbe_hw *hw, u16 *refill, u16 *max, case ixgbe_mac_X550: case ixgbe_mac_X550EM_x: case ixgbe_mac_X550EM_a: -#if !defined(NO_82599_SUPPORT) || !defined(NO_X540_SUPPORT) ixgbe_dcb_config_rx_arbiter_82599(hw, refill, max, bwg_id, tsa, map); ixgbe_dcb_config_tx_desc_arbiter_82599(hw, refill, max, bwg_id, @@ -752,7 +733,6 @@ s32 ixgbe_dcb_hw_config(struct ixgbe_hw *hw, u16 *refill, u16 *max, ixgbe_dcb_config_tx_data_arbiter_82599(hw, refill, max, bwg_id, tsa, map); break; -#endif default: break; } diff --git a/sys/dev/ixgbe/ixgbe_mbx.c b/sys/dev/ixgbe/ixgbe_mbx.c index f72bbf34256a..443ebb478993 100644 --- a/sys/dev/ixgbe/ixgbe_mbx.c +++ b/sys/dev/ixgbe/ixgbe_mbx.c @@ -36,6 +36,118 @@ #include "ixgbe_type.h" #include "ixgbe_mbx.h" +/** + * ixgbe_read_mbx - Reads a message from the mailbox + * @hw: pointer to the HW structure + * @msg: The message buffer + * @size: Length of buffer + * @mbx_id: id of mailbox to read + * + * returns SUCCESS if it successfully read message from buffer + **/ +s32 ixgbe_read_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) +{ + struct ixgbe_mbx_info *mbx = &hw->mbx; + s32 ret_val = IXGBE_ERR_MBX; + + DEBUGFUNC("ixgbe_read_mbx"); + + /* limit read to size of mailbox */ + if (size > mbx->size) + size = mbx->size; + + if (mbx->ops.read) + ret_val = mbx->ops.read(hw, msg, size, mbx_id); + + return ret_val; +} + +/** + * ixgbe_write_mbx - Write a message to the mailbox + * @hw: pointer to the HW structure + * @msg: The message buffer + * @size: Length of buffer + * @mbx_id: id of mailbox to write + * + * returns SUCCESS if it successfully copied message into the buffer + **/ +s32 ixgbe_write_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) +{ + struct ixgbe_mbx_info *mbx = &hw->mbx; + s32 ret_val = IXGBE_SUCCESS; + + DEBUGFUNC("ixgbe_write_mbx"); + + if (size > mbx->size) { + ret_val = IXGBE_ERR_MBX; + ERROR_REPORT2(IXGBE_ERROR_ARGUMENT, + "Invalid mailbox message size %d", size); + } else if (mbx->ops.write) + ret_val = mbx->ops.write(hw, msg, size, mbx_id); + + return ret_val; +} + +/** + * ixgbe_check_for_msg - checks to see if someone sent us mail + * @hw: pointer to the HW structure + * @mbx_id: id of mailbox to check + * + * returns SUCCESS if the Status bit was found or else ERR_MBX + **/ +s32 ixgbe_check_for_msg(struct ixgbe_hw *hw, u16 mbx_id) +{ + struct ixgbe_mbx_info *mbx = &hw->mbx; + s32 ret_val = IXGBE_ERR_MBX; + + DEBUGFUNC("ixgbe_check_for_msg"); + + if (mbx->ops.check_for_msg) + ret_val = mbx->ops.check_for_msg(hw, mbx_id); + + return ret_val; +} + +/** + * ixgbe_check_for_ack - checks to see if someone sent us ACK + * @hw: pointer to the HW structure + * @mbx_id: id of mailbox to check + * + * returns SUCCESS if the Status bit was found or else ERR_MBX + **/ +s32 ixgbe_check_for_ack(struct ixgbe_hw *hw, u16 mbx_id) +{ + struct ixgbe_mbx_info *mbx = &hw->mbx; + s32 ret_val = IXGBE_ERR_MBX; + + DEBUGFUNC("ixgbe_check_for_ack"); + + if (mbx->ops.check_for_ack) + ret_val = mbx->ops.check_for_ack(hw, mbx_id); + + return ret_val; +} + +/** + * ixgbe_check_for_rst - checks to see if other side has reset + * @hw: pointer to the HW structure + * @mbx_id: id of mailbox to check + * + * returns SUCCESS if the Status bit was found or else ERR_MBX + **/ +s32 ixgbe_check_for_rst(struct ixgbe_hw *hw, u16 mbx_id) +{ + struct ixgbe_mbx_info *mbx = &hw->mbx; + s32 ret_val = IXGBE_ERR_MBX; + + DEBUGFUNC("ixgbe_check_for_rst"); + + if (mbx->ops.check_for_rst) + ret_val = mbx->ops.check_for_rst(hw, mbx_id); + + return ret_val; +} + /** * ixgbe_poll_for_msg - Wait for message notification * @hw: pointer to the HW structure @@ -110,7 +222,7 @@ out: * returns SUCCESS if it successfully received a message notification and * copied it into the receive buffer. **/ -static s32 ixgbe_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, +s32 ixgbe_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) { struct ixgbe_mbx_info *mbx = &hw->mbx; @@ -140,7 +252,7 @@ out: * returns SUCCESS if it successfully copied message into the buffer and * received an ack to that message within delay * timeout period **/ -static s32 ixgbe_write_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, +s32 ixgbe_write_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) { struct ixgbe_mbx_info *mbx = &hw->mbx; diff --git a/sys/dev/ixgbe/ixgbe_mbx.h b/sys/dev/ixgbe/ixgbe_mbx.h index 9b3deb28f149..88387ea3f7c2 100644 --- a/sys/dev/ixgbe/ixgbe_mbx.h +++ b/sys/dev/ixgbe/ixgbe_mbx.h @@ -153,6 +153,13 @@ enum ixgbevf_xcast_modes { #define IXGBE_VF_MBX_INIT_TIMEOUT 2000 /* number of retries on mailbox */ #define IXGBE_VF_MBX_INIT_DELAY 500 /* microseconds between retries */ +s32 ixgbe_read_mbx(struct ixgbe_hw *, u32 *, u16, u16); +s32 ixgbe_write_mbx(struct ixgbe_hw *, u32 *, u16, u16); +s32 ixgbe_read_posted_mbx(struct ixgbe_hw *, u32 *, u16, u16); +s32 ixgbe_write_posted_mbx(struct ixgbe_hw *, u32 *, u16, u16); +s32 ixgbe_check_for_msg(struct ixgbe_hw *, u16); +s32 ixgbe_check_for_ack(struct ixgbe_hw *, u16); +s32 ixgbe_check_for_rst(struct ixgbe_hw *, u16); void ixgbe_init_mbx_ops_generic(struct ixgbe_hw *hw); void ixgbe_init_mbx_params_vf(struct ixgbe_hw *); void ixgbe_init_mbx_params_pf(struct ixgbe_hw *); diff --git a/sys/dev/ixgbe/ixgbe_phy.c b/sys/dev/ixgbe/ixgbe_phy.c index 5a2f49e9ebac..eef1d40448d3 100644 --- a/sys/dev/ixgbe/ixgbe_phy.c +++ b/sys/dev/ixgbe/ixgbe_phy.c @@ -1536,7 +1536,10 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) status = IXGBE_SUCCESS; } else { if (hw->allow_unsupported_sfp == true) { - EWARN(hw, "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. Intel Corporation is not responsible for any harm caused by using untested modules.\n"); + EWARN(hw, + "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. " + "Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. " + "Intel Corporation is not responsible for any harm caused by using untested modules.\n"); status = IXGBE_SUCCESS; } else { DEBUGOUT("SFP+ module not supported\n"); @@ -1789,7 +1792,10 @@ s32 ixgbe_identify_qsfp_module_generic(struct ixgbe_hw *hw) status = IXGBE_SUCCESS; } else { if (hw->allow_unsupported_sfp == true) { - EWARN(hw, "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. Intel Corporation is not responsible for any harm caused by using untested modules.\n"); + EWARN(hw, + "WARNING: Intel (R) Network Connections are quality tested using Intel (R) Ethernet Optics. " + "Using untested modules is not supported and may cause unstable operation or damage to the module or the adapter. " + "Intel Corporation is not responsible for any harm caused by using untested modules.\n"); status = IXGBE_SUCCESS; } else { DEBUGOUT("QSFP module not supported\n"); @@ -2571,7 +2577,6 @@ static bool ixgbe_get_i2c_data(struct ixgbe_hw *hw, u32 *i2cctl) { u32 data_oe_bit = IXGBE_I2C_DATA_OE_N_EN_BY_MAC(hw); bool data; - UNREFERENCED_1PARAMETER(hw); DEBUGFUNC("ixgbe_get_i2c_data"); diff --git a/sys/dev/ixgbe/ixgbe_phy.h b/sys/dev/ixgbe/ixgbe_phy.h index 7f51ccc1dd2c..09d7ea4afbc0 100644 --- a/sys/dev/ixgbe/ixgbe_phy.h +++ b/sys/dev/ixgbe/ixgbe_phy.h @@ -147,10 +147,8 @@ #define IXGBE_I2C_T_SU_STO 4 #define IXGBE_I2C_T_BUF 5 -#ifndef IXGBE_SFP_DETECT_RETRIES #define IXGBE_SFP_DETECT_RETRIES 10 -#endif /* IXGBE_SFP_DETECT_RETRIES */ #define IXGBE_TN_LASI_STATUS_REG 0x9005 #define IXGBE_TN_LASI_STATUS_TEMP_ALARM 0x0008 diff --git a/sys/dev/ixgbe/ixgbe_type.h b/sys/dev/ixgbe/ixgbe_type.h index 1c04f09df77c..1eb446184990 100644 --- a/sys/dev/ixgbe/ixgbe_type.h +++ b/sys/dev/ixgbe/ixgbe_type.h @@ -48,8 +48,8 @@ * * - IXGBE_ERROR_POLLING * This category is for errors related to polling/timeout issues and should be - * used in any case where the timeout occurred, or a failure to obtain a lock, or - * failure to receive data within the time limit. + * used in any case where the timeout occurred, or a failure to obtain a lock, + * or failure to receive data within the time limit. * * - IXGBE_ERROR_CAUTION * This category should be used for reporting issues that may be the cause of @@ -157,7 +157,7 @@ #define IXGBE_DEV_ID_X550EM_X_VF 0x15A8 #define IXGBE_DEV_ID_X550EM_X_VF_HV 0x15A9 -#define IXGBE_CAT(r,m) IXGBE_##r##m +#define IXGBE_CAT(r, m) IXGBE_##r##m #define IXGBE_BY_MAC(_hw, r) ((_hw)->mvals[IXGBE_CAT(r, _IDX)]) @@ -284,6 +284,26 @@ #define IXGBE_I2C_CLK_OE_N_EN_BY_MAC(_hw) IXGBE_BY_MAC((_hw), I2C_CLK_OE_N_EN) #define IXGBE_I2C_CLOCK_STRETCHING_TIMEOUT 500 +#define IXGBE_I2C_THERMAL_SENSOR_ADDR 0xF8 +#define IXGBE_EMC_INTERNAL_DATA 0x00 +#define IXGBE_EMC_INTERNAL_THERM_LIMIT 0x20 +#define IXGBE_EMC_DIODE1_DATA 0x01 +#define IXGBE_EMC_DIODE1_THERM_LIMIT 0x19 +#define IXGBE_EMC_DIODE2_DATA 0x23 +#define IXGBE_EMC_DIODE2_THERM_LIMIT 0x1A + +#define IXGBE_MAX_SENSORS 3 + +struct ixgbe_thermal_diode_data { + u8 location; + u8 temp; + u8 caution_thresh; + u8 max_op_thresh; +}; + +struct ixgbe_thermal_sensor_data { + struct ixgbe_thermal_diode_data sensor[IXGBE_MAX_SENSORS]; +}; #define NVM_OROM_OFFSET 0x17 @@ -2358,6 +2378,20 @@ enum { #define IXGBE_ALT_MAC_ADDR_PTR 0x37 #define IXGBE_FREE_SPACE_PTR 0X3E +/* External Thermal Sensor Config */ +#define IXGBE_ETS_CFG 0x26 +#define IXGBE_ETS_LTHRES_DELTA_MASK 0x07C0 +#define IXGBE_ETS_LTHRES_DELTA_SHIFT 6 +#define IXGBE_ETS_TYPE_MASK 0x0038 +#define IXGBE_ETS_TYPE_SHIFT 3 +#define IXGBE_ETS_TYPE_EMC 0x000 +#define IXGBE_ETS_NUM_SENSORS_MASK 0x0007 +#define IXGBE_ETS_DATA_LOC_MASK 0x3C00 +#define IXGBE_ETS_DATA_LOC_SHIFT 10 +#define IXGBE_ETS_DATA_INDEX_MASK 0x0300 +#define IXGBE_ETS_DATA_INDEX_SHIFT 8 +#define IXGBE_ETS_DATA_HTHRESH_MASK 0x00FF + #define IXGBE_SAN_MAC_ADDR_PTR 0x28 #define IXGBE_DEVICE_CAPS 0x2C #define IXGBE_82599_SERIAL_NUMBER_MAC_ADDR 0x11 @@ -2412,9 +2446,7 @@ enum { #define IXGBE_EEPROM_CTRL_2 1 /* EEPROM CTRL word 2 */ #define IXGBE_EEPROM_CCD_BIT 2 -#ifndef IXGBE_EEPROM_GRANT_ATTEMPTS #define IXGBE_EEPROM_GRANT_ATTEMPTS 1000 /* EEPROM attempts to gain grant */ -#endif /* Number of 5 microseconds we wait for EERD read and * EERW write to complete */ @@ -3932,7 +3964,6 @@ struct ixgbe_mac_operations { s32 (*get_fcoe_boot_status)(struct ixgbe_hw *, u16 *); s32 (*stop_adapter)(struct ixgbe_hw *); s32 (*get_bus_info)(struct ixgbe_hw *); - s32 (*negotiate_api_version)(struct ixgbe_hw *, int); void (*set_lan_id)(struct ixgbe_hw *); s32 (*read_analog_reg8)(struct ixgbe_hw*, u32, u8*); s32 (*write_analog_reg8)(struct ixgbe_hw*, u32, u8); @@ -3945,6 +3976,7 @@ struct ixgbe_mac_operations { void (*init_swfw_sync)(struct ixgbe_hw *); s32 (*prot_autoc_read)(struct ixgbe_hw *, bool *, u32 *); s32 (*prot_autoc_write)(struct ixgbe_hw *, u32, bool); + s32 (*negotiate_api_version)(struct ixgbe_hw *hw, int api); /* Link */ void (*disable_tx_laser)(struct ixgbe_hw *); @@ -3980,17 +4012,17 @@ struct ixgbe_mac_operations { ixgbe_mc_addr_itr); s32 (*update_mc_addr_list)(struct ixgbe_hw *, u8 *, u32, ixgbe_mc_addr_itr, bool clear); - s32 (*update_xcast_mode)(struct ixgbe_hw *, int); s32 (*enable_mc)(struct ixgbe_hw *); s32 (*disable_mc)(struct ixgbe_hw *); s32 (*clear_vfta)(struct ixgbe_hw *); s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool, bool); s32 (*set_vlvf)(struct ixgbe_hw *, u32, u32, bool, u32 *, u32, bool); - s32 (*set_rlpml)(struct ixgbe_hw *, u16); s32 (*init_uta_tables)(struct ixgbe_hw *); void (*set_mac_anti_spoofing)(struct ixgbe_hw *, bool, int); void (*set_vlan_anti_spoofing)(struct ixgbe_hw *, bool, int); + s32 (*update_xcast_mode)(struct ixgbe_hw *, int); + s32 (*set_rlpml)(struct ixgbe_hw *, u16); /* Flow Control */ s32 (*fc_enable)(struct ixgbe_hw *); @@ -4000,6 +4032,8 @@ struct ixgbe_mac_operations { /* Manageability interface */ s32 (*set_fw_drv_ver)(struct ixgbe_hw *, u8, u8, u8, u8, u16, const char *); + s32 (*get_thermal_sensor_data)(struct ixgbe_hw *); + s32 (*init_thermal_sensor_thresh)(struct ixgbe_hw *hw); s32 (*bypass_rw) (struct ixgbe_hw *hw, u32 cmd, u32 *status); bool (*bypass_valid_rd) (u32 in_reg, u32 out_reg); s32 (*bypass_set) (struct ixgbe_hw *hw, u32 cmd, u32 event, u32 action); @@ -4107,6 +4141,8 @@ struct ixgbe_mac_info { bool orig_link_settings_stored; bool autotry_restart; u8 flags; + struct ixgbe_thermal_sensor_data thermal_sensor_data; + bool thermal_sensor_enabled; struct ixgbe_dmac_config dmac_config; bool set_lben; u32 max_link_up_time; diff --git a/sys/dev/ixgbe/ixgbe_vf.c b/sys/dev/ixgbe/ixgbe_vf.c index 82800b4a3d87..f70f4d667aee 100644 --- a/sys/dev/ixgbe/ixgbe_vf.c +++ b/sys/dev/ixgbe/ixgbe_vf.c @@ -36,12 +36,8 @@ #include "ixgbe.h" -#ifndef IXGBE_VFWRITE_REG #define IXGBE_VFWRITE_REG IXGBE_WRITE_REG -#endif -#ifndef IXGBE_VFREAD_REG #define IXGBE_VFREAD_REG IXGBE_READ_REG -#endif /** * ixgbe_init_ops_vf - Initialize the pointers for vf diff --git a/sys/dev/ixgbe/ixgbe_x540.c b/sys/dev/ixgbe/ixgbe_x540.c index d03b34ee8135..ea45cd31a4c3 100644 --- a/sys/dev/ixgbe/ixgbe_x540.c +++ b/sys/dev/ixgbe/ixgbe_x540.c @@ -819,7 +819,7 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask) * bits in the SW_FW_SYNC register. */ if (ixgbe_get_swfw_sync_semaphore(hw)) { - DEBUGOUT("Failed to get NVM sempahore and register semaphore while forcefully ignoring FW sempahore bit(s) and setting SW semaphore bit(s), returning IXGBE_ERR_SWFW_SYNC\n"); + DEBUGOUT("Failed to get NVM semaphore and register semaphore while forcefully ignoring FW semaphore bit(s) and setting SW semaphore bit(s), returning IXGBE_ERR_SWFW_SYNC\n"); return IXGBE_ERR_SWFW_SYNC; } swfw_sync = IXGBE_READ_REG(hw, IXGBE_SWFW_SYNC_BY_MAC(hw)); diff --git a/sys/dev/ixgbe/ixgbe_x550.c b/sys/dev/ixgbe/ixgbe_x550.c index 7fc556662b00..3353d91e228e 100644 --- a/sys/dev/ixgbe/ixgbe_x550.c +++ b/sys/dev/ixgbe/ixgbe_x550.c @@ -619,6 +619,10 @@ s32 ixgbe_init_ops_X550EM(struct ixgbe_hw *hw) * the pointers to NULL explicitly here to overwrite * the values being set in the x540 function. */ + /* Thermal sensor not supported in x550EM */ + mac->ops.get_thermal_sensor_data = NULL; + mac->ops.init_thermal_sensor_thresh = NULL; + mac->thermal_sensor_enabled = false; /* Bypass not supported in x550EM */ mac->ops.bypass_rw = NULL; @@ -1135,7 +1139,7 @@ s32 ixgbe_write_iosf_sb_reg_x550(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type, u32 data) { u32 gssr = IXGBE_GSSR_PHY1_SM | IXGBE_GSSR_PHY0_SM; - u32 command, error __unused; + u32 command, error; s32 ret; ret = ixgbe_acquire_swfw_semaphore(hw, gssr); @@ -1181,7 +1185,7 @@ s32 ixgbe_read_iosf_sb_reg_x550(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type, u32 *data) { u32 gssr = IXGBE_GSSR_PHY1_SM | IXGBE_GSSR_PHY0_SM; - u32 command, error __unused; + u32 command, error; s32 ret; ret = ixgbe_acquire_swfw_semaphore(hw, gssr); @@ -2716,7 +2720,7 @@ static s32 ixgbe_setup_sfi_x550a(struct ixgbe_hw *hw, ixgbe_link_speed *speed) * @speed: new link speed * @autoneg_wait_to_complete: unused * - * Configure the the integrated PHY for SFP support. + * Configure the integrated PHY for SFP support. **/ s32 ixgbe_setup_mac_link_sfp_x550a(struct ixgbe_hw *hw, ixgbe_link_speed speed, @@ -3688,7 +3692,7 @@ u64 ixgbe_get_supported_physical_layer_X550em(struct ixgbe_hw *hw) physical_layer = IXGBE_PHYSICAL_LAYER_1000BASE_KX; break; case ixgbe_phy_ext_1g_t: - physical_layer = IXGBE_PHYSICAL_LAYER_1000BASE_T; + physical_layer |= IXGBE_PHYSICAL_LAYER_1000BASE_T; break; default: break; From nobody Thu Oct 7 02:53:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CD0DB12D86EB for ; Thu, 7 Oct 2021 02:53:31 +0000 (UTC) (envelope-from maria.stoller@datasalesprospect.com) Received: from datasalesprospect.com (usermta5.datasalesprospect.com [188.165.1.215]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4HPwqt5JPyz4lGM for ; Thu, 7 Oct 2021 02:53:30 +0000 (UTC) (envelope-from maria.stoller@datasalesprospect.com) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=default; d=datasalesprospect.com; h=From:To:References:In-Reply-To:Subject:Date:Message-ID:MIME-Version:Content-Type; i=maria.stoller@datasalesprospect.com; bh=2Bel3MLpOzLI0+CvkxIDLfrJXfM=; b=D+8y2mzrMMSZWUryk7BNvhkgCtq1vW7pZfC4hlfPlhKID1HwzlPTzuFBYUhgF7k2Kc8mtKkSoPyO vM1IWTDrLu10xWHd9HccbYhUoiK+lya8hduz8isC+7YO2/xrFKkBVadJeNJNkytNaZmIN14kEmGR w59IS+IYvf735b04jkE= DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=default; d=datasalesprospect.com; b=RJkEvFEbPsrKMOkC5g1J3LMnpgkVLt8GpTLCHTUBpwppjP/713uC1ICL+uPbtI0E653J6CT+IU4s BPbYd+Ld2KXLcYlak9iSZli4SfrU+omQCBBeZya2FBrIextRvbKqJQ1ON0FlFYxUOEviR7ajPvFh kAGs2sLSMunOHgOc/vk=; To: References: In-Reply-To: Subject: RE: B2B Contact Info Date: Wed, 6 Oct 2021 22:53:28 -0400 Message-ID: <195b501d7bb26$819bed30$84d3c790$@datasalesprospect.com> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_195B6_01D7BB04.FA8BACC0" Thread-Index: Ade508MfLfGxWv4gRA2aejczflakoABUr1Kg Content-Language: en-us X-Rspamd-Queue-Id: 4HPwqt5JPyz4lGM X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=datasalesprospect.com header.s=default header.b=D+8y2mzr; dmarc=pass (policy=reject) header.from=datasalesprospect.com; spf=pass (mx1.freebsd.org: domain of maria.stoller@datasalesprospect.com designates 188.165.1.215 as permitted sender) smtp.mailfrom=maria.stoller@datasalesprospect.com X-Spamd-Result: default: False [-4.00 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[datasalesprospect.com:s=default]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:188.165.1.215]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; TO_DN_NONE(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCPT_COUNT_ONE(0.00)[1]; DKIM_TRACE(0.00)[datasalesprospect.com:+]; DMARC_POLICY_ALLOW(-0.50)[datasalesprospect.com,reject]; NEURAL_HAM_SHORT(-1.00)[-1.000]; RCVD_COUNT_ZERO(0.00)[0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; ASN(0.00)[asn:16276, ipnet:188.165.0.0/16, country:FR]; MID_RHS_MATCH_FROM(0.00)[] Reply-To: maria.stoller@datasalesprospect.com From: Maria Stoller via dev-commits-src-all X-Original-From: Maria Stoller X-ThisMailContainsUnwantedMimeParts: N This is a multipart message in MIME format. ------=_NextPart_000_195B6_01D7BB04.FA8BACC0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, I hope you're doing good. I'm following up on the below mentioned E-mail,Can you kindly update me on it? If you feel the suggested contact lists is not relevant to your business, Please share your target criteria in the below mentioned format, So that I can revert with counts and pricing details for your review. Target Technology/Industry: _________? Target Geography: __________? Target Job Title: _________? Looking forward to hear from you. Regards, Maria Stoller From: Maria Stoller [mailto:maria.stoller@datasalesprospect.com] Sent: Tuesday, October 05, 2021 6:37 AM To: 'dev-commits-src-all@freebsd.org' Subject: B2B Contact Info Hi, I hope you're having a good day. Respecting your time I will keep this extremely brief We are Business Listed Building Company. Our reach is global covering almost all Industries with every job title. Our services also include appending and cleansing for your old/existing databases. Find Your Ideal Customers from Our Top Selling Contact Lists. . Manufacturing Industry . Healthcare Industry . Hospitality Industry . Pharmaceuticals Industry . Finance Industry . Construction Industry . Food and Beverages Industry . Metals & Mining Industry . Retail Industry . Transportation Industry and many more. Unless you are swamped with back orders, our lists could help you expand your customer base. If you would be interested, I will be happy to send you more details together that you could actually use and base a decision on. For this you would need to share your targeted audiences' criteria with me as per the following parameters: * Target Industry: ___________? * Target Title: ________________? * Target Geography: ______________? * You could add Employee and/or Revenue size filters too. If you are willing to try us out, please fill in your target audiences' criteria above and one of our Business Development Team will be in touch with you shortly with the promised details. Hope I hear from you. Warm Regards, Maria Stoller Marketing Executive If you're not interested in this mailing list please Replay as "Leave Out" in subject line. ------=_NextPart_000_195B6_01D7BB04.FA8BACC0-- From nobody Thu Oct 7 03:03:46 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 69E5312D9B18; Thu, 7 Oct 2021 03:03: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 4HPx3k2dS1z4m8F; Thu, 7 Oct 2021 03:03: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 3A2563AF1; Thu, 7 Oct 2021 03:03: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 19733kbq033801; Thu, 7 Oct 2021 03:03:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19733k8d033800; Thu, 7 Oct 2021 03:03:46 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:03:46 GMT Message-Id: <202110070303.19733k8d033800@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 4d7876aa70e2 - main - build: slap a libtinfo dependency on libncurses List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4d7876aa70e2b7c7c941399a61b6f5e5f8fee088 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4d7876aa70e2b7c7c941399a61b6f5e5f8fee088 commit 4d7876aa70e2b7c7c941399a61b6f5e5f8fee088 Author: Kyle Evans AuthorDate: 2021-10-07 03:01:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:03:37 +0000 build: slap a libtinfo dependency on libncurses This mirrors the SUBDIR_DEPEND in lib/ncurses/Makefile. Reported by: jenkins (e.g., riscv64 build #23984) Fixes: 396851c20aeb ("ncurses: split libtinfo from libncurses") --- Makefile.inc1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.inc1 b/Makefile.inc1 index 6dcfa6a17d3d..9b81d4029608 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -2973,6 +2973,8 @@ lib/libkvm__L: lib/libelf__L _lib_libradius= lib/libradius .endif +lib/ncurses/ncurses__L: lib/ncurses/tinfo__L + .if ${MK_OFED} != "no" _prebuild_libs+= \ lib/ofed/libibverbs \ From nobody Thu Oct 7 03:08:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 907BF12DA568; Thu, 7 Oct 2021 03:08: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 4HPx8s3hcNz4mdD; Thu, 7 Oct 2021 03:08: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 5ECEB412A; Thu, 7 Oct 2021 03:08: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 19738DYb034203; Thu, 7 Oct 2021 03:08:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19738Dts034202; Thu, 7 Oct 2021 03:08:13 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:08:13 GMT Message-Id: <202110070308.19738Dts034202@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eugene Grosbein Subject: git: 7cf79c60fee5 - stable/13 - syslogd: undo regression after r326573 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: eugen X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7cf79c60fee596c03f4e757a713050c9331f0524 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by eugen: URL: https://cgit.FreeBSD.org/src/commit/?id=7cf79c60fee596c03f4e757a713050c9331f0524 commit 7cf79c60fee596c03f4e757a713050c9331f0524 Author: Eugene Grosbein AuthorDate: 2021-09-27 07:25:21 +0000 Commit: Eugene Grosbein CommitDate: 2021-10-07 03:07:32 +0000 syslogd: undo regression after r326573 Restore ability for our syslogd to collect pre-RFC3164 formatted messages from remote hosts that was broken with r326573. Note that parsing of RFC5424 format not changed. (cherry picked from commit 3b4cc56e524ac947ba0e6571e2c455139c2839ec) --- usr.sbin/syslogd/syslogd.c | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index d8a2c0a5680e..9ed0b8098753 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -1357,31 +1357,25 @@ parsemsg(const char *from, char *msg) size_t i; int pri; + i = -1; + pri = DEFUPRI; + /* Parse PRI. */ - if (msg[0] != '<' || !isdigit(msg[1])) { - dprintf("Invalid PRI from %s\n", from); - return; - } - for (i = 2; i <= 4; i++) { - if (msg[i] == '>') - break; - if (!isdigit(msg[i])) { - dprintf("Invalid PRI header from %s\n", from); - return; + if (msg[0] == '<' && isdigit(msg[1])) { + for (i = 2; i <= 4; i++) { + if (msg[i] == '>') { + errno = 0; + n = strtol(msg + 1, &q, 10); + if (errno == 0 && *q == msg[i] && n >= 0 && n <= INT_MAX) { + pri = n; + msg += i + 1; + i = 0; + } + break; } + } } - if (msg[i] != '>') { - dprintf("Invalid PRI header from %s\n", from); - return; - } - errno = 0; - n = strtol(msg + 1, &q, 10); - if (errno != 0 || *q != msg[i] || n < 0 || n >= INT_MAX) { - dprintf("Invalid PRI %ld from %s: %s\n", - n, from, strerror(errno)); - return; - } - pri = n; + if (pri &~ (LOG_FACMASK|LOG_PRIMASK)) pri = DEFUPRI; @@ -1394,8 +1388,7 @@ parsemsg(const char *from, char *msg) pri = LOG_MAKEPRI(LOG_USER, LOG_PRI(pri)); /* Parse VERSION. */ - msg += i + 1; - if (msg[0] == '1' && msg[1] == ' ') + if (i == 0 && msg[0] == '1' && msg[1] == ' ') parsemsg_rfc5424(from, pri, msg + 2); else parsemsg_rfc3164(from, pri, msg); From nobody Thu Oct 7 03:09:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 701F712DB68F; Thu, 7 Oct 2021 03:09: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 4HPxBm2TKRz4nlp; Thu, 7 Oct 2021 03:09: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 2CF5E3E79; Thu, 7 Oct 2021 03:09: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 19739qpQ034420; Thu, 7 Oct 2021 03:09:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19739qI2034419; Thu, 7 Oct 2021 03:09:52 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:09:52 GMT Message-Id: <202110070309.19739qI2034419@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eugene Grosbein Subject: git: 75c6f34fbedd - stable/12 - syslogd: undo regression after r326573 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: eugen X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 75c6f34fbeddab4ec05d0fc0093ef122e73d70dc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by eugen: URL: https://cgit.FreeBSD.org/src/commit/?id=75c6f34fbeddab4ec05d0fc0093ef122e73d70dc commit 75c6f34fbeddab4ec05d0fc0093ef122e73d70dc Author: Eugene Grosbein AuthorDate: 2021-09-27 07:25:21 +0000 Commit: Eugene Grosbein CommitDate: 2021-10-07 03:09:19 +0000 syslogd: undo regression after r326573 Restore ability for our syslogd to collect pre-RFC3164 formatted messages from remote hosts that was broken with r326573. Note that parsing of RFC5424 format not changed. (cherry picked from commit 3b4cc56e524ac947ba0e6571e2c455139c2839ec) --- usr.sbin/syslogd/syslogd.c | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 5404e834f9c8..4b30c27e9e2d 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -1296,31 +1296,25 @@ parsemsg(const char *from, char *msg) size_t i; int pri; + i = -1; + pri = DEFUPRI; + /* Parse PRI. */ - if (msg[0] != '<' || !isdigit(msg[1])) { - dprintf("Invalid PRI from %s\n", from); - return; - } - for (i = 2; i <= 4; i++) { - if (msg[i] == '>') - break; - if (!isdigit(msg[i])) { - dprintf("Invalid PRI header from %s\n", from); - return; + if (msg[0] == '<' && isdigit(msg[1])) { + for (i = 2; i <= 4; i++) { + if (msg[i] == '>') { + errno = 0; + n = strtol(msg + 1, &q, 10); + if (errno == 0 && *q == msg[i] && n >= 0 && n <= INT_MAX) { + pri = n; + msg += i + 1; + i = 0; + } + break; } + } } - if (msg[i] != '>') { - dprintf("Invalid PRI header from %s\n", from); - return; - } - errno = 0; - n = strtol(msg + 1, &q, 10); - if (errno != 0 || *q != msg[i] || n < 0 || n >= INT_MAX) { - dprintf("Invalid PRI %ld from %s: %s\n", - n, from, strerror(errno)); - return; - } - pri = n; + if (pri &~ (LOG_FACMASK|LOG_PRIMASK)) pri = DEFUPRI; @@ -1333,8 +1327,7 @@ parsemsg(const char *from, char *msg) pri = LOG_MAKEPRI(LOG_USER, LOG_PRI(pri)); /* Parse VERSION. */ - msg += i + 1; - if (msg[0] == '1' && msg[1] == ' ') + if (i == 0 && msg[0] == '1' && msg[1] == ' ') parsemsg_rfc5424(from, pri, msg + 2); else parsemsg_rfc3164(from, pri, msg); From nobody Thu Oct 7 03:12:58 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1801D12DC61B; Thu, 7 Oct 2021 03:12: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 4HPxGL72Mzz4pwp; Thu, 7 Oct 2021 03:12: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 D2A5844FB; Thu, 7 Oct 2021 03:12: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 1973CwPZ047158; Thu, 7 Oct 2021 03:12:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973Cw7b047157; Thu, 7 Oct 2021 03:12:58 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:12:58 GMT Message-Id: <202110070312.1973Cw7b047157@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Eugene Grosbein Subject: git: 37381a47e0ff - stable/11 - syslogd: undo regression after r326573 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: eugen X-Git-Repository: src X-Git-Refname: refs/heads/stable/11 X-Git-Reftype: branch X-Git-Commit: 37381a47e0ffa96a729ce9dc5c89965a1cbe4e4e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/11 has been updated by eugen: URL: https://cgit.FreeBSD.org/src/commit/?id=37381a47e0ffa96a729ce9dc5c89965a1cbe4e4e commit 37381a47e0ffa96a729ce9dc5c89965a1cbe4e4e Author: Eugene Grosbein AuthorDate: 2021-09-27 07:25:21 +0000 Commit: Eugene Grosbein CommitDate: 2021-10-07 03:12:51 +0000 syslogd: undo regression after r326573 Restore ability for our syslogd to collect pre-RFC3164 formatted messages from remote hosts that was broken with r326573. Note that parsing of RFC5424 format not changed. (cherry picked from commit 3b4cc56e524ac947ba0e6571e2c455139c2839ec) --- usr.sbin/syslogd/syslogd.c | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c index 253d3367c51b..824a984e670c 100644 --- a/usr.sbin/syslogd/syslogd.c +++ b/usr.sbin/syslogd/syslogd.c @@ -1294,31 +1294,25 @@ parsemsg(const char *from, char *msg) size_t i; int pri; + i = -1; + pri = DEFUPRI; + /* Parse PRI. */ - if (msg[0] != '<' || !isdigit(msg[1])) { - dprintf("Invalid PRI from %s\n", from); - return; - } - for (i = 2; i <= 4; i++) { - if (msg[i] == '>') - break; - if (!isdigit(msg[i])) { - dprintf("Invalid PRI header from %s\n", from); - return; + if (msg[0] == '<' && isdigit(msg[1])) { + for (i = 2; i <= 4; i++) { + if (msg[i] == '>') { + errno = 0; + n = strtol(msg + 1, &q, 10); + if (errno == 0 && *q == msg[i] && n >= 0 && n <= INT_MAX) { + pri = n; + msg += i + 1; + i = 0; + } + break; } + } } - if (msg[i] != '>') { - dprintf("Invalid PRI header from %s\n", from); - return; - } - errno = 0; - n = strtol(msg + 1, &q, 10); - if (errno != 0 || *q != msg[i] || n < 0 || n >= INT_MAX) { - dprintf("Invalid PRI %ld from %s: %s\n", - n, from, strerror(errno)); - return; - } - pri = n; + if (pri &~ (LOG_FACMASK|LOG_PRIMASK)) pri = DEFUPRI; @@ -1331,8 +1325,7 @@ parsemsg(const char *from, char *msg) pri = LOG_MAKEPRI(LOG_USER, LOG_PRI(pri)); /* Parse VERSION. */ - msg += i + 1; - if (msg[0] == '1' && msg[1] == ' ') + if (i == 0 && msg[0] == '1' && msg[1] == ' ') parsemsg_rfc5424(from, pri, msg + 2); else parsemsg_rfc3164(from, pri, msg); From nobody Thu Oct 7 03:28:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9697312DDDBC; Thu, 7 Oct 2021 03:28: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 4HPxbr3hXFz4qfP; Thu, 7 Oct 2021 03:28: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 6023646AA; Thu, 7 Oct 2021 03:28: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 1973S80X060707; Thu, 7 Oct 2021 03:28:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973S8ii060706; Thu, 7 Oct 2021 03:28:08 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:08 GMT Message-Id: <202110070328.1973S8ii060706@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: af147ed09aa4 - stable/12 - sys/dev/cfi: include sys/types.h as well List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: af147ed09aa4d346b8526fb40a7016800664d33c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=af147ed09aa4d346b8526fb40a7016800664d33c commit af147ed09aa4d346b8526fb40a7016800664d33c Author: Kyle Evans AuthorDate: 2020-01-02 22:52:31 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:26 +0000 sys/dev/cfi: include sys/types.h as well This will soon be a dependency for machine/atomic.h on mips with the introduction of 64-bit atomics; the scope here is pretty narrow, so throw it here in the header just before systm.h, which includes machine/atomic.h (cherry picked from commit 85ccd84cb3ce35f830cd4c07154152daf41181ef) --- sys/dev/cfe/cfe_api.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/dev/cfe/cfe_api.h b/sys/dev/cfe/cfe_api.h index a068f58f11b1..6dd851d19aa0 100644 --- a/sys/dev/cfe/cfe_api.h +++ b/sys/dev/cfe/cfe_api.h @@ -63,6 +63,7 @@ * CFE_API_* can be defined here as desired. */ /* Begin customization. */ +#include #include /* All of the typedefs. */ #include /* strlen() prototype. */ From nobody Thu Oct 7 03:28:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C906D12DDEA3; Thu, 7 Oct 2021 03:28: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 4HPxbs4K8Lz4qmT; Thu, 7 Oct 2021 03:28: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 743F045AB; Thu, 7 Oct 2021 03:28: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 1973S94b060731; Thu, 7 Oct 2021 03:28:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973S941060730; Thu, 7 Oct 2021 03:28:09 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:09 GMT Message-Id: <202110070328.1973S941060730@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 0c0fe8a6ff8b - stable/12 - Provide generic sub-word atomic *cmpset List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 0c0fe8a6ff8b01018aa2c0f5a93d4dd52da0dfcd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=0c0fe8a6ff8b01018aa2c0f5a93d4dd52da0dfcd commit 0c0fe8a6ff8b01018aa2c0f5a93d4dd52da0dfcd Author: Kyle Evans AuthorDate: 2019-10-02 17:06:28 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:26 +0000 Provide generic sub-word atomic *cmpset Provide *cmpset_{8,16} as wrappers around atomic_fcmpset_32. Initial users will be mips and sparc64, and perhaps parts of powerpc. This are not for general consumption; machine/atomic.h should include this header as needed to provide atomic_{,f}cmpset_{8,16} and machine/atomic.h should provide acq_ and rel_ variants. (cherry picked from commit b6c5d1ef76cdcfe2103fd2ed8ef8f97e1c740edc) --- sys/sys/_atomic_subword.h | 168 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/sys/sys/_atomic_subword.h b/sys/sys/_atomic_subword.h new file mode 100644 index 000000000000..fd03ea6a6aed --- /dev/null +++ b/sys/sys/_atomic_subword.h @@ -0,0 +1,168 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 Kyle Evans + * + * 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. + * + * $FreeBSD$ + */ +#ifndef _SYS__ATOMIC_SUBWORD_H_ +#define _SYS__ATOMIC_SUBWORD_H_ + +/* + * This header is specifically for platforms that either do not have ways to or + * simply do not do sub-word atomic operations. These are not ideal as they + * require a little more effort to make sure our atomic operations are failing + * because of the bits of the word we're trying to write rather than the rest + * of the word. + */ +#ifndef _MACHINE_ATOMIC_H_ +#error do not include this header, use machine/atomic.h +#endif + +#include + +#ifndef NBBY +#define NBBY 8 +#endif + +#define _ATOMIC_WORD_ALIGNED(p) \ + (uint32_t *)((__uintptr_t)(p) - ((__uintptr_t)(p) % 4)) + +#if _BYTE_ORDER == _BIG_ENDIAN +#define _ATOMIC_BYTE_SHIFT(p) \ + ((3 - ((__uintptr_t)(p) % 4)) * NBBY) + +#define _ATOMIC_HWORD_SHIFT(p) \ + ((2 - ((__uintptr_t)(p) % 4)) * NBBY) +#else +#define _ATOMIC_BYTE_SHIFT(p) \ + ((((__uintptr_t)(p) % 4)) * NBBY) + +#define _ATOMIC_HWORD_SHIFT(p) \ + ((((__uintptr_t)(p) % 4)) * NBBY) +#endif + +/* + * Pass these bad boys a couple words and a mask of the bits you care about, + * they'll loop until we either succeed or fail because of those bits rather + * than the ones we're not masking. old and val should already be preshifted to + * the proper position. + */ +static __inline int +_atomic_cmpset_masked_word(uint32_t *addr, uint32_t old, uint32_t val, + uint32_t mask) +{ + int ret; + uint32_t wcomp; + + wcomp = old; + + /* + * We'll attempt the cmpset on the entire word. Loop here in case the + * operation fails due to the other half-word resident in that word, + * rather than the half-word we're trying to operate on. Ideally we + * only take one trip through here. We'll have to recalculate the old + * value since it's the other part of the word changing. + */ + do { + old = (*addr & ~mask) | wcomp; + ret = atomic_fcmpset_32(addr, &old, (old & ~mask) | val); + } while (ret == 0 && (old & mask) == wcomp); + + return (ret); +} + +static __inline int +_atomic_fcmpset_masked_word(uint32_t *addr, uint32_t *old, uint32_t val, + uint32_t mask) +{ + + /* + * fcmpset_* is documented in atomic(9) to allow spurious failures where + * *old == val on ll/sc architectures because the sc may fail due to + * parallel writes or other reasons. We take advantage of that here + * and only attempt once, because the caller should be compensating for + * that possibility. + */ + *old = (*addr & ~mask) | *old; + return (atomic_fcmpset_32(addr, old, (*old & ~mask) | val)); +} + +static __inline int +atomic_cmpset_8(__volatile uint8_t *addr, uint8_t old, uint8_t val) +{ + int shift; + + shift = _ATOMIC_BYTE_SHIFT(addr); + + return (_atomic_cmpset_masked_word(_ATOMIC_WORD_ALIGNED(addr), + old << shift, val << shift, 0xff << shift)); +} + +static __inline int +atomic_fcmpset_8(__volatile uint8_t *addr, uint8_t *old, uint8_t val) +{ + int ret, shift; + uint32_t wold; + + shift = _ATOMIC_BYTE_SHIFT(addr); + wold = *old << shift; + ret = _atomic_fcmpset_masked_word(_ATOMIC_WORD_ALIGNED(addr), + &wold, val << shift, 0xff << shift); + if (ret == 0) + *old = (wold >> shift) & 0xff; + return (ret); +} + +static __inline int +atomic_cmpset_16(__volatile uint16_t *addr, uint16_t old, uint16_t val) +{ + int shift; + + shift = _ATOMIC_HWORD_SHIFT(addr); + + return (_atomic_cmpset_masked_word(_ATOMIC_WORD_ALIGNED(addr), + old << shift, val << shift, 0xffff << shift)); +} + +static __inline int +atomic_fcmpset_16(__volatile uint16_t *addr, uint16_t *old, uint16_t val) +{ + int ret, shift; + uint32_t wold; + + shift = _ATOMIC_HWORD_SHIFT(addr); + wold = *old << shift; + ret = _atomic_fcmpset_masked_word(_ATOMIC_WORD_ALIGNED(addr), + &wold, val << shift, 0xffff << shift); + if (ret == 0) + *old = (wold >> shift) & 0xffff; + return (ret); +} + +#undef _ATOMIC_WORD_ALIGNED +#undef _ATOMIC_BYTE_SHIFT +#undef _ATOMIC_HWORD_SHIFT + +#endif /* _SYS__ATOMIC_SUBWORD_H_ */ From nobody Thu Oct 7 03:28:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 34EC112DDDC8; Thu, 7 Oct 2021 03:28: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 4HPxbt6ZC5z4qhx; Thu, 7 Oct 2021 03:28: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 94DEE45AC; Thu, 7 Oct 2021 03:28: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 1973SAB4060755; Thu, 7 Oct 2021 03:28:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973SAc9060754; Thu, 7 Oct 2021 03:28:10 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:10 GMT Message-Id: <202110070328.1973SAc9060754@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: fb7485efe6e3 - stable/12 - mips: use generic sub-word atomic *cmpset List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: fb7485efe6e3bdd171861e4e51425ae46823840d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=fb7485efe6e3bdd171861e4e51425ae46823840d commit fb7485efe6e3bdd171861e4e51425ae46823840d Author: Kyle Evans AuthorDate: 2019-10-02 17:07:59 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:26 +0000 mips: use generic sub-word atomic *cmpset Most of this diff is refactoring to reduce duplication between the different acq_ and rel_ variants. (cherry picked from commit 281ec62c977aba21b4aa60ed0f532d6a20b669e0) --- sys/mips/include/atomic.h | 142 ++++++++++++++++++++++++---------------------- 1 file changed, 74 insertions(+), 68 deletions(-) diff --git a/sys/mips/include/atomic.h b/sys/mips/include/atomic.h index 506c686169e4..ad8abf3498f1 100644 --- a/sys/mips/include/atomic.h +++ b/sys/mips/include/atomic.h @@ -85,6 +85,11 @@ void atomic_clear_16(__volatile uint16_t *, uint16_t); void atomic_add_16(__volatile uint16_t *, uint16_t); void atomic_subtract_16(__volatile uint16_t *, uint16_t); +static __inline int atomic_cmpset_8(__volatile uint8_t *, uint8_t, uint8_t); +static __inline int atomic_fcmpset_8(__volatile uint8_t *, uint8_t *, uint8_t); +static __inline int atomic_cmpset_16(__volatile uint16_t *, uint16_t, uint16_t); +static __inline int atomic_fcmpset_16(__volatile uint16_t *, uint16_t *, uint16_t); + static __inline void atomic_set_32(__volatile uint32_t *p, uint32_t v) { @@ -389,23 +394,6 @@ atomic_cmpset_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) * two values are equal, update the value of *p with newval. Returns * zero if the compare failed, nonzero otherwise. */ -static __inline int -atomic_cmpset_acq_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) -{ - int retval; - - retval = atomic_cmpset_32(p, cmpval, newval); - mips_sync(); - return (retval); -} - -static __inline int -atomic_cmpset_rel_32(__volatile uint32_t *p, uint32_t cmpval, uint32_t newval) -{ - mips_sync(); - return (atomic_cmpset_32(p, cmpval, newval)); -} - static __inline int atomic_fcmpset_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) { @@ -436,23 +424,58 @@ atomic_fcmpset_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) return ret; } -static __inline int -atomic_fcmpset_acq_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) -{ - int retval; - - retval = atomic_fcmpset_32(p, cmpval, newval); - mips_sync(); - return (retval); +#define ATOMIC_CMPSET_ACQ_REL(WIDTH) \ +static __inline int \ +atomic_cmpset_acq_##WIDTH(__volatile uint##WIDTH##_t *p, \ + uint##WIDTH##_t cmpval, uint##WIDTH##_t newval) \ +{ \ + int retval; \ + \ + retval = atomic_cmpset_##WIDTH(p, cmpval, newval); \ + mips_sync(); \ + return (retval); \ +} \ + \ +static __inline int \ +atomic_cmpset_rel_##WIDTH(__volatile uint##WIDTH##_t *p, \ + uint##WIDTH##_t cmpval, uint##WIDTH##_t newval) \ +{ \ + mips_sync(); \ + return (atomic_cmpset_##WIDTH(p, cmpval, newval)); \ } -static __inline int -atomic_fcmpset_rel_32(__volatile uint32_t *p, uint32_t *cmpval, uint32_t newval) -{ - mips_sync(); - return (atomic_fcmpset_32(p, cmpval, newval)); +#define ATOMIC_FCMPSET_ACQ_REL(WIDTH) \ +static __inline int \ +atomic_fcmpset_acq_##WIDTH(__volatile uint##WIDTH##_t *p, \ + uint##WIDTH##_t *cmpval, uint##WIDTH##_t newval) \ +{ \ + int retval; \ + \ + retval = atomic_fcmpset_##WIDTH(p, cmpval, newval); \ + mips_sync(); \ + return (retval); \ +} \ + \ +static __inline int \ +atomic_fcmpset_rel_##WIDTH(__volatile uint##WIDTH##_t *p, \ + uint##WIDTH##_t *cmpval, uint##WIDTH##_t newval) \ +{ \ + mips_sync(); \ + return (atomic_fcmpset_##WIDTH(p, cmpval, newval)); \ } +/* + * Atomically compare the value stored at *p with cmpval and if the + * two values are equal, update the value of *p with newval. Returns + * zero if the compare failed, nonzero otherwise. + */ +ATOMIC_CMPSET_ACQ_REL(8); +ATOMIC_CMPSET_ACQ_REL(16); +ATOMIC_CMPSET_ACQ_REL(32); +ATOMIC_FCMPSET_ACQ_REL(8); +ATOMIC_FCMPSET_ACQ_REL(16); +ATOMIC_FCMPSET_ACQ_REL(32); + /* * Atomically add the value of v to the integer pointed to by p and return * the previous value of *p. @@ -501,28 +524,6 @@ atomic_cmpset_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) return ret; } -/* - * Atomically compare the value stored at *p with cmpval and if the - * two values are equal, update the value of *p with newval. Returns - * zero if the compare failed, nonzero otherwise. - */ -static __inline int -atomic_cmpset_acq_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) -{ - int retval; - - retval = atomic_cmpset_64(p, cmpval, newval); - mips_sync(); - return (retval); -} - -static __inline int -atomic_cmpset_rel_64(__volatile uint64_t *p, uint64_t cmpval, uint64_t newval) -{ - mips_sync(); - return (atomic_cmpset_64(p, cmpval, newval)); -} - static __inline int atomic_fcmpset_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) { @@ -546,22 +547,13 @@ atomic_fcmpset_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) return ret; } -static __inline int -atomic_fcmpset_acq_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) -{ - int retval; - - retval = atomic_fcmpset_64(p, cmpval, newval); - mips_sync(); - return (retval); -} - -static __inline int -atomic_fcmpset_rel_64(__volatile uint64_t *p, uint64_t *cmpval, uint64_t newval) -{ - mips_sync(); - return (atomic_fcmpset_64(p, cmpval, newval)); -} +/* + * Atomically compare the value stored at *p with cmpval and if the + * two values are equal, update the value of *p with newval. Returns + * zero if the compare failed, nonzero otherwise. + */ +ATOMIC_CMPSET_ACQ_REL(64); +ATOMIC_FCMPSET_ACQ_REL(64); /* * Atomically add the value of v to the integer pointed to by p and return @@ -625,6 +617,12 @@ atomic_thread_fence_seq_cst(void) #define atomic_subtract_char atomic_subtract_8 #define atomic_subtract_acq_char atomic_subtract_acq_8 #define atomic_subtract_rel_char atomic_subtract_rel_8 +#define atomic_cmpset_char atomic_cmpset_8 +#define atomic_cmpset_acq_char atomic_cmpset_acq_8 +#define atomic_cmpset_rel_char atomic_cmpset_rel_8 +#define atomic_fcmpset_char atomic_fcmpset_8 +#define atomic_fcmpset_acq_char atomic_fcmpset_acq_8 +#define atomic_fcmpset_rel_char atomic_fcmpset_rel_8 /* Operations on shorts. */ #define atomic_set_short atomic_set_16 @@ -639,6 +637,12 @@ atomic_thread_fence_seq_cst(void) #define atomic_subtract_short atomic_subtract_16 #define atomic_subtract_acq_short atomic_subtract_acq_16 #define atomic_subtract_rel_short atomic_subtract_rel_16 +#define atomic_cmpset_short atomic_cmpset_16 +#define atomic_cmpset_acq_short atomic_cmpset_acq_16 +#define atomic_cmpset_rel_short atomic_cmpset_rel_16 +#define atomic_fcmpset_short atomic_fcmpset_16 +#define atomic_fcmpset_acq_short atomic_fcmpset_acq_16 +#define atomic_fcmpset_rel_short atomic_fcmpset_rel_16 /* Operations on ints. */ #define atomic_set_int atomic_set_32 @@ -842,4 +846,6 @@ atomic_swap_long(volatile unsigned long *ptr, const unsigned long value) #endif #define atomic_swap_ptr(ptr, value) atomic_swap_long((unsigned long *)(ptr), value) +#include + #endif /* ! _MACHINE_ATOMIC_H_ */ From nobody Thu Oct 7 03:28:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E1EA412DDF2F; Thu, 7 Oct 2021 03:28: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 4HPxbw0WkNz4qj4; Thu, 7 Oct 2021 03:28: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 B308646AB; Thu, 7 Oct 2021 03:28: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 1973SBfJ060779; Thu, 7 Oct 2021 03:28:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973SBd3060778; Thu, 7 Oct 2021 03:28:11 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:11 GMT Message-Id: <202110070328.1973SBd3060778@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 168a6eee3a2a - stable/12 - powerpc: Implement atomic_(f)cmpset_ for short and char List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 168a6eee3a2a6faa8e3eebafe8f1866b2f170727 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=168a6eee3a2a6faa8e3eebafe8f1866b2f170727 commit 168a6eee3a2a6faa8e3eebafe8f1866b2f170727 Author: Justin Hibbits AuthorDate: 2019-10-08 01:36:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:26 +0000 powerpc: Implement atomic_(f)cmpset_ for short and char This adds two implementations for each atomic_fcmpset_ and atomic_cmpset_ short and char functions, selectable at compile time for the target architecture. By default, it uses a generic shift-and-mask to perform atomic updates to sub-components of 32-bit words from . However, if ISA_206_ATOMICS is defined it uses the ll/sc instructions for halfword and bytes, introduced in PowerISA 2.06. These instructions are supported by all IBM processors from POWER7 on, as well as the Freescale/NXP e6500 core. Although the e5500 and e500mc both implement PowerISA 2.06 they do not implement these instructions. As part of this, clean up the atomic_(f)cmpset_acq and _rel wrappers, by using macros to reduce code duplication. ISA_206_ATOMICS requires clang or newer binutils (2.20 or later). (cherry picked from commit 84046d16eba76392ece41452b6ca3bd5808a1d19) --- sys/powerpc/include/atomic.h | 250 ++++++++++++++++++++++++++++++------------- 1 file changed, 178 insertions(+), 72 deletions(-) diff --git a/sys/powerpc/include/atomic.h b/sys/powerpc/include/atomic.h index e49a8473a747..c72639811e39 100644 --- a/sys/powerpc/include/atomic.h +++ b/sys/powerpc/include/atomic.h @@ -564,6 +564,56 @@ atomic_store_rel_long(volatile u_long *addr, u_long val) * two values are equal, update the value of *p with newval. Returns * zero if the compare failed, nonzero otherwise. */ +#ifdef ISA_206_ATOMICS +static __inline int +atomic_cmpset_char(volatile u_char *p, u_char cmpval, u_char newval) +{ + int ret; + + __asm __volatile ( + "1:\tlbarx %0, 0, %2\n\t" /* load old value */ + "cmplw %3, %0\n\t" /* compare */ + "bne- 2f\n\t" /* exit if not equal */ + "stbcx. %4, 0, %2\n\t" /* attempt to store */ + "bne- 1b\n\t" /* spin if failed */ + "li %0, 1\n\t" /* success - retval = 1 */ + "b 3f\n\t" /* we've succeeded */ + "2:\n\t" + "stbcx. %0, 0, %2\n\t" /* clear reservation (74xx) */ + "li %0, 0\n\t" /* failure - retval = 0 */ + "3:\n\t" + : "=&r" (ret), "=m" (*p) + : "r" (p), "r" (cmpval), "r" (newval), "m" (*p) + : "cr0", "memory"); + + return (ret); +} + +static __inline int +atomic_cmpset_short(volatile u_short *p, u_short cmpval, u_short newval) +{ + int ret; + + __asm __volatile ( + "1:\tlharx %0, 0, %2\n\t" /* load old value */ + "cmplw %3, %0\n\t" /* compare */ + "bne- 2f\n\t" /* exit if not equal */ + "sthcx. %4, 0, %2\n\t" /* attempt to store */ + "bne- 1b\n\t" /* spin if failed */ + "li %0, 1\n\t" /* success - retval = 1 */ + "b 3f\n\t" /* we've succeeded */ + "2:\n\t" + "sthcx. %0, 0, %2\n\t" /* clear reservation (74xx) */ + "li %0, 0\n\t" /* failure - retval = 0 */ + "3:\n\t" + : "=&r" (ret), "=m" (*p) + : "r" (p), "r" (cmpval), "r" (newval), "m" (*p) + : "cr0", "memory"); + + return (ret); +} +#endif + static __inline int atomic_cmpset_int(volatile u_int* p, u_int cmpval, u_int newval) { @@ -622,39 +672,36 @@ atomic_cmpset_long(volatile u_long* p, u_long cmpval, u_long newval) return (ret); } -static __inline int -atomic_cmpset_acq_int(volatile u_int *p, u_int cmpval, u_int newval) -{ - int retval; - - retval = atomic_cmpset_int(p, cmpval, newval); - __ATOMIC_ACQ(); - return (retval); -} - -static __inline int -atomic_cmpset_rel_int(volatile u_int *p, u_int cmpval, u_int newval) -{ - __ATOMIC_REL(); - return (atomic_cmpset_int(p, cmpval, newval)); -} - -static __inline int -atomic_cmpset_acq_long(volatile u_long *p, u_long cmpval, u_long newval) -{ - u_long retval; - - retval = atomic_cmpset_long(p, cmpval, newval); - __ATOMIC_ACQ(); - return (retval); -} - -static __inline int -atomic_cmpset_rel_long(volatile u_long *p, u_long cmpval, u_long newval) -{ - __ATOMIC_REL(); - return (atomic_cmpset_long(p, cmpval, newval)); -} +#define ATOMIC_CMPSET_ACQ_REL(type) \ + static __inline int \ + atomic_cmpset_acq_##type(volatile u_##type *p, \ + u_##type cmpval, u_##type newval)\ + {\ + u_##type retval; \ + retval = atomic_cmpset_##type(p, cmpval, newval);\ + __ATOMIC_ACQ();\ + return (retval);\ + }\ + static __inline int \ + atomic_cmpset_rel_##type(volatile u_##type *p, \ + u_##type cmpval, u_##type newval)\ + {\ + __ATOMIC_ACQ();\ + return (atomic_cmpset_##type(p, cmpval, newval));\ + }\ + struct hack + +ATOMIC_CMPSET_ACQ_REL(int); +ATOMIC_CMPSET_ACQ_REL(long); + + +#define atomic_cmpset_8 atomic_cmpset_char +#define atomic_cmpset_acq_8 atomic_cmpset_acq_char +#define atomic_cmpset_rel_8 atomic_cmpset_rel_char + +#define atomic_cmpset_16 atomic_cmpset_short +#define atomic_cmpset_acq_16 atomic_cmpset_acq_short +#define atomic_cmpset_rel_16 atomic_cmpset_rel_short #define atomic_cmpset_32 atomic_cmpset_int #define atomic_cmpset_acq_32 atomic_cmpset_acq_int @@ -680,13 +727,65 @@ atomic_cmpset_rel_long(volatile u_long *p, u_long cmpval, u_long newval) * zero if the compare failed and sets *cmpval to the read value from *p, * nonzero otherwise. */ +#ifdef ISA_206_ATOMICS +static __inline int +atomic_fcmpset_char(volatile u_char *p, u_char *cmpval, u_char newval) +{ + int ret; + + __asm __volatile ( + "lbarx %0, 0, %3\n\t" /* load old value */ + "cmplw %4, %0\n\t" /* compare */ + "bne- 1f\n\t" /* exit if not equal */ + "stbcx. %5, 0, %3\n\t" /* attempt to store */ + "bne- 1f\n\t" /* exit if failed */ + "li %0, 1\n\t" /* success - retval = 1 */ + "b 2f\n\t" /* we've succeeded */ + "1:\n\t" + "stbcx. %0, 0, %3\n\t" /* clear reservation (74xx) */ + "stwx %0, 0, %7\n\t" + "li %0, 0\n\t" /* failure - retval = 0 */ + "2:\n\t" + : "=&r" (ret), "=m" (*p), "=m" (*cmpval) + : "r" (p), "r" (*cmpval), "r" (newval), "m" (*p), "r"(cmpval) + : "cr0", "memory"); + + return (ret); +} + +static __inline int +atomic_fcmpset_short(volatile u_short *p, u_short *cmpval, u_short newval) +{ + int ret; + + __asm __volatile ( + "lharx %0, 0, %3\n\t" /* load old value */ + "cmplw %4, %0\n\t" /* compare */ + "bne- 1f\n\t" /* exit if not equal */ + "sthcx. %5, 0, %3\n\t" /* attempt to store */ + "bne- 1f\n\t" /* exit if failed */ + "li %0, 1\n\t" /* success - retval = 1 */ + "b 2f\n\t" /* we've succeeded */ + "1:\n\t" + "sthcx. %0, 0, %3\n\t" /* clear reservation (74xx) */ + "stwx %0, 0, %7\n\t" + "li %0, 0\n\t" /* failure - retval = 0 */ + "2:\n\t" + : "=&r" (ret), "=m" (*p), "=m" (*cmpval) + : "r" (p), "r" (*cmpval), "r" (newval), "m" (*p), "r"(cmpval) + : "cr0", "memory"); + + return (ret); +} +#endif /* ISA_206_ATOMICS */ + static __inline int atomic_fcmpset_int(volatile u_int *p, u_int *cmpval, u_int newval) { int ret; __asm __volatile ( - "lwarx %0, 0, %3\n\t" /* load old value */ + "lwarx %0, 0, %3\n\t" /* load old value */ "cmplw %4, %0\n\t" /* compare */ "bne 1f\n\t" /* exit if not equal */ "stwcx. %5, 0, %3\n\t" /* attempt to store */ @@ -711,12 +810,12 @@ atomic_fcmpset_long(volatile u_long *p, u_long *cmpval, u_long newval) __asm __volatile ( #ifdef __powerpc64__ - "ldarx %0, 0, %3\n\t" /* load old value */ + "ldarx %0, 0, %3\n\t" /* load old value */ "cmpld %4, %0\n\t" /* compare */ "bne 1f\n\t" /* exit if not equal */ "stdcx. %5, 0, %3\n\t" /* attempt to store */ #else - "lwarx %0, 0, %3\n\t" /* load old value */ + "lwarx %0, 0, %3\n\t" /* load old value */ "cmplw %4, %0\n\t" /* compare */ "bne 1f\n\t" /* exit if not equal */ "stwcx. %5, 0, %3\n\t" /* attempt to store */ @@ -741,39 +840,35 @@ atomic_fcmpset_long(volatile u_long *p, u_long *cmpval, u_long newval) return (ret); } -static __inline int -atomic_fcmpset_acq_int(volatile u_int *p, u_int *cmpval, u_int newval) -{ - int retval; - - retval = atomic_fcmpset_int(p, cmpval, newval); - __ATOMIC_ACQ(); - return (retval); -} - -static __inline int -atomic_fcmpset_rel_int(volatile u_int *p, u_int *cmpval, u_int newval) -{ - __ATOMIC_REL(); - return (atomic_fcmpset_int(p, cmpval, newval)); -} - -static __inline int -atomic_fcmpset_acq_long(volatile u_long *p, u_long *cmpval, u_long newval) -{ - u_long retval; - - retval = atomic_fcmpset_long(p, cmpval, newval); - __ATOMIC_ACQ(); - return (retval); -} - -static __inline int -atomic_fcmpset_rel_long(volatile u_long *p, u_long *cmpval, u_long newval) -{ - __ATOMIC_REL(); - return (atomic_fcmpset_long(p, cmpval, newval)); -} +#define ATOMIC_FCMPSET_ACQ_REL(type) \ + static __inline int \ + atomic_fcmpset_acq_##type(volatile u_##type *p, \ + u_##type *cmpval, u_##type newval)\ + {\ + u_##type retval; \ + retval = atomic_fcmpset_##type(p, cmpval, newval);\ + __ATOMIC_ACQ();\ + return (retval);\ + }\ + static __inline int \ + atomic_fcmpset_rel_##type(volatile u_##type *p, \ + u_##type *cmpval, u_##type newval)\ + {\ + __ATOMIC_REL();\ + return (atomic_fcmpset_##type(p, cmpval, newval));\ + }\ + struct hack + +ATOMIC_FCMPSET_ACQ_REL(int); +ATOMIC_FCMPSET_ACQ_REL(long); + +#define atomic_fcmpset_8 atomic_fcmpset_char +#define atomic_fcmpset_acq_8 atomic_fcmpset_acq_char +#define atomic_fcmpset_rel_8 atomic_fcmpset_rel_char + +#define atomic_fcmpset_16 atomic_fcmpset_short +#define atomic_fcmpset_acq_16 atomic_fcmpset_acq_short +#define atomic_fcmpset_rel_16 atomic_fcmpset_rel_short #define atomic_fcmpset_32 atomic_fcmpset_int #define atomic_fcmpset_acq_32 atomic_fcmpset_acq_int @@ -861,9 +956,6 @@ atomic_swap_64(volatile u_long *p, u_long v) #define atomic_swap_ptr(p,v) atomic_swap_32((volatile u_int *)(p), v) #endif -#undef __ATOMIC_REL -#undef __ATOMIC_ACQ - static __inline void atomic_thread_fence_acq(void) { @@ -892,4 +984,18 @@ atomic_thread_fence_seq_cst(void) __asm __volatile("sync" : : : "memory"); } +#ifndef ISA_206_ATOMICS +#include +#endif + +/* These need sys/_atomic_subword.h on non-ISA-2.06-atomic platforms. */ +ATOMIC_CMPSET_ACQ_REL(char); +ATOMIC_CMPSET_ACQ_REL(short); + +ATOMIC_FCMPSET_ACQ_REL(char); +ATOMIC_FCMPSET_ACQ_REL(short); + +#undef __ATOMIC_REL +#undef __ATOMIC_ACQ + #endif /* ! _MACHINE_ATOMIC_H_ */ From nobody Thu Oct 7 03:28:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3BEA812DE062; Thu, 7 Oct 2021 03:28: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 4HPxbx28TFz4qw0; Thu, 7 Oct 2021 03:28: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 D20F04881; Thu, 7 Oct 2021 03:28: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 1973SCaL060809; Thu, 7 Oct 2021 03:28:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973SCj8060808; Thu, 7 Oct 2021 03:28:12 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:12 GMT Message-Id: <202110070328.1973SCj8060808@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ec7b80ade997 - stable/12 - powerpc/atomic: Fix atomic_cmpset_rel() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ec7b80ade997c5011bc1f1ccd5a74384b70239f2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ec7b80ade997c5011bc1f1ccd5a74384b70239f2 commit ec7b80ade997c5011bc1f1ccd5a74384b70239f2 Author: Justin Hibbits AuthorDate: 2019-10-15 03:37:21 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:26 +0000 powerpc/atomic: Fix atomic_cmpset_rel() Need a release barrier, not an acquire barrier, else bad things happen. (cherry picked from commit 9551397f51a7041dd0060bae1433d0e802373e35) --- sys/powerpc/include/atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/powerpc/include/atomic.h b/sys/powerpc/include/atomic.h index c72639811e39..788e7520d7bc 100644 --- a/sys/powerpc/include/atomic.h +++ b/sys/powerpc/include/atomic.h @@ -686,7 +686,7 @@ atomic_cmpset_long(volatile u_long* p, u_long cmpval, u_long newval) atomic_cmpset_rel_##type(volatile u_##type *p, \ u_##type cmpval, u_##type newval)\ {\ - __ATOMIC_ACQ();\ + __ATOMIC_REL();\ return (atomic_cmpset_##type(p, cmpval, newval));\ }\ struct hack From nobody Thu Oct 7 03:28:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CEC7312DDF42; Thu, 7 Oct 2021 03:28: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 4HPxby2M23z4r27; Thu, 7 Oct 2021 03:28: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 EA2464741; Thu, 7 Oct 2021 03:28: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 1973SDf2060834; Thu, 7 Oct 2021 03:28:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973SDdI060833; Thu, 7 Oct 2021 03:28:13 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:13 GMT Message-Id: <202110070328.1973SDdI060833@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: e0363a08dc45 - stable/12 - atomic: Add atomic_cmpset_masked to powerpc and use it List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: e0363a08dc453be7b67f38d8a9663ff41dde94ee Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=e0363a08dc453be7b67f38d8a9663ff41dde94ee commit e0363a08dc453be7b67f38d8a9663ff41dde94ee Author: Justin Hibbits AuthorDate: 2019-11-15 04:33:07 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:27 +0000 atomic: Add atomic_cmpset_masked to powerpc and use it Summary: This is a more optimal way of doing atomic_compset_masked() than the fallback in sys/_atomic_subword.h. There's also an override for _atomic_fcmpset_masked_word(), which may or may not be necessary, and is unused for powerpc. (cherry picked from commit d0bdb11139424b9dcfe3b73cd5a003055382de03) --- sys/powerpc/include/atomic.h | 32 ++++++++++++++++++++++++++++++++ sys/sys/_atomic_subword.h | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/sys/powerpc/include/atomic.h b/sys/powerpc/include/atomic.h index 788e7520d7bc..2510160a402a 100644 --- a/sys/powerpc/include/atomic.h +++ b/sys/powerpc/include/atomic.h @@ -612,6 +612,38 @@ atomic_cmpset_short(volatile u_short *p, u_short cmpval, u_short newval) return (ret); } +#else +static __inline int +atomic_cmpset_masked(uint32_t *p, uint32_t cmpval, uint32_t newval, + uint32_t mask) +{ + int ret; + uint32_t tmp; + + __asm __volatile ( + "1:\tlwarx %2, 0, %2\n\t" /* load old value */ + "and %0, %2, %7\n\t" + "cmplw %4, %0\n\t" /* compare */ + "bne- 2f\n\t" /* exit if not equal */ + "andc %2, %2, %7\n\t" + "or %2, %2, %5\n\t" + "stwcx. %2, 0, %3\n\t" /* attempt to store */ + "bne- 1b\n\t" /* spin if failed */ + "li %0, 1\n\t" /* success - retval = 1 */ + "b 3f\n\t" /* we've succeeded */ + "2:\n\t" + "stwcx. %2, 0, %3\n\t" /* clear reservation (74xx) */ + "li %0, 0\n\t" /* failure - retval = 0 */ + "3:\n\t" + : "=&r" (ret), "=m" (*p), "+&r" (tmp) + : "r" (p), "r" (cmpval), "r" (newval), "m" (*p), + "r" (mask) + : "cr0", "memory"); + + return (ret); +} + +#define _atomic_cmpset_masked_word(a,o,v,m) atomic_cmpset_masked(a, o, v, m) #endif static __inline int diff --git a/sys/sys/_atomic_subword.h b/sys/sys/_atomic_subword.h index fd03ea6a6aed..08e54bf519a9 100644 --- a/sys/sys/_atomic_subword.h +++ b/sys/sys/_atomic_subword.h @@ -63,6 +63,7 @@ ((((__uintptr_t)(p) % 4)) * NBBY) #endif +#ifndef _atomic_cmpset_masked_word /* * Pass these bad boys a couple words and a mask of the bits you care about, * they'll loop until we either succeed or fail because of those bits rather @@ -92,7 +93,9 @@ _atomic_cmpset_masked_word(uint32_t *addr, uint32_t old, uint32_t val, return (ret); } +#endif +#ifndef _atomic_fcmpset_masked_word static __inline int _atomic_fcmpset_masked_word(uint32_t *addr, uint32_t *old, uint32_t val, uint32_t mask) @@ -108,6 +111,7 @@ _atomic_fcmpset_masked_word(uint32_t *addr, uint32_t *old, uint32_t val, *old = (*addr & ~mask) | *old; return (atomic_fcmpset_32(addr, old, (*old & ~mask) | val)); } +#endif static __inline int atomic_cmpset_8(__volatile uint8_t *addr, uint8_t old, uint8_t val) From nobody Thu Oct 7 03:28:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3FE3B12DE225; Thu, 7 Oct 2021 03:28: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 4HPxc062NYz4qwF; Thu, 7 Oct 2021 03:28: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 364DC4835; Thu, 7 Oct 2021 03:28: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 1973SG0c060882; Thu, 7 Oct 2021 03:28:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973SG0F060881; Thu, 7 Oct 2021 03:28:16 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:16 GMT Message-Id: <202110070328.1973SG0F060881@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f76c1f3538b7 - stable/12 - Fix build for mips.XLP64 kernel, by re-ordering headers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f76c1f3538b7e2a9a783af0c22283e3a3db3906f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f76c1f3538b7e2a9a783af0c22283e3a3db3906f commit f76c1f3538b7e2a9a783af0c22283e3a3db3906f Author: Ravi Pokala AuthorDate: 2020-03-31 20:09:20 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:27 +0000 Fix build for mips.XLP64 kernel, by re-ordering headers The log for the failure contained errors like this: | In file included from ${SRCTOP}/sys/mips/nlm/dev/net/xlpge.c:34: | In file included from ${SRCTOP}/sys/sys/systm.h:44: | In file included from ./machine/atomic.h:849: | ${SRCTOP}/sys/sys/_atomic_subword.h:222:37: error: unknown type name 'u_long'; did you mean 'long'? | atomic_testandset_acq_long(volatile u_long *p, u_int v) | ^~~~~~ | long And similar "unknown type name" errors for u_int, not recognizing bool as a type, etc. This was caused by including too far down; move it up where it belongs. While here, add a blank line after '__FBSDID()', in keeping with convention. (cherry picked from commit 144af011b4ee87ed3eba4f2c9f6780f4543ba554) --- sys/mips/nlm/dev/net/xlpge.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/mips/nlm/dev/net/xlpge.c b/sys/mips/nlm/dev/net/xlpge.c index ac0c4d6e843d..ec6f42a4a2fb 100644 --- a/sys/mips/nlm/dev/net/xlpge.c +++ b/sys/mips/nlm/dev/net/xlpge.c @@ -30,10 +30,11 @@ #include __FBSDID("$FreeBSD$"); + +#include #include #include #include -#include #include #include #include From nobody Thu Oct 7 03:28:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2A1A912DDD6F; Thu, 7 Oct 2021 03:28: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 4HPxbz547xz4r4C; Thu, 7 Oct 2021 03:28: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 11D174168; Thu, 7 Oct 2021 03:28: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 1973SEvW060858; Thu, 7 Oct 2021 03:28:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973SEUO060857; Thu, 7 Oct 2021 03:28:14 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:28:14 GMT Message-Id: <202110070328.1973SEUO060857@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 716baab384de - stable/12 - [PowerPC] Fix atomic_cmpset_masked(). List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 716baab384ded0d02bad67a4be52e9d2408ae636 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=716baab384ded0d02bad67a4be52e9d2408ae636 commit 716baab384ded0d02bad67a4be52e9d2408ae636 Author: Brandon Bergren AuthorDate: 2020-05-26 19:03:45 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:27:27 +0000 [PowerPC] Fix atomic_cmpset_masked(). A recent kernel change caused the previously unused atomic_cmpset_masked() to be used. It had a typo in it. Instead of reading the old value from an uninitialized variable, read it from the passed-in pointer as intended. This fixes crashes on 64 bit Book-E. Obtained from: jhibbits (cherry picked from commit 9941cb0657d63b4b1570dcf384196bb599bf9024) --- sys/powerpc/include/atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/powerpc/include/atomic.h b/sys/powerpc/include/atomic.h index 2510160a402a..8da4607d71ff 100644 --- a/sys/powerpc/include/atomic.h +++ b/sys/powerpc/include/atomic.h @@ -621,7 +621,7 @@ atomic_cmpset_masked(uint32_t *p, uint32_t cmpval, uint32_t newval, uint32_t tmp; __asm __volatile ( - "1:\tlwarx %2, 0, %2\n\t" /* load old value */ + "1:\tlwarx %2, 0, %3\n\t" /* load old value */ "and %0, %2, %7\n\t" "cmplw %4, %0\n\t" /* compare */ "bne- 2f\n\t" /* exit if not equal */ From nobody Thu Oct 7 03:37:42 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2190317E15EE; Thu, 7 Oct 2021 03:37: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 4HPxpv0LKCz4vBF; Thu, 7 Oct 2021 03:37: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 E030B46E1; Thu, 7 Oct 2021 03:37: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 1973bgVY073901; Thu, 7 Oct 2021 03:37:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973bgRH073900; Thu, 7 Oct 2021 03:37:42 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:37:42 GMT Message-Id: <202110070337.1973bgRH073900@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 000aad3d093a376bb1104a284b4102149db43155 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=000aad3d093a376bb1104a284b4102149db43155 commit 000aad3d093a376bb1104a284b4102149db43155 Author: Toomas Soome AuthorDate: 2020-01-13 18:22:54 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:36:34 +0000 loader: allocate properly aligned buffer for network packet Use memalign(4, size) to ensure we have properly aligned buffer. (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) --- stand/efi/libefi/efinet.c | 2 +- stand/i386/libi386/pxe.c | 2 +- stand/libofw/ofw_net.c | 2 +- stand/uboot/lib/net.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stand/efi/libefi/efinet.c b/stand/efi/libefi/efinet.c index 418790524e4a..989b2efdaac2 100644 --- a/stand/efi/libefi/efinet.c +++ b/stand/efi/libefi/efinet.c @@ -178,7 +178,7 @@ efinet_get(struct iodesc *desc, void **pkt, time_t timeout) return (ret); bufsz = net->Mode->MaxPacketSize + ETHER_HDR_LEN + ETHER_CRC_LEN; - buf = malloc(bufsz + ETHER_ALIGN); + buf = memalign(4, bufsz + ETHER_ALIGN); if (buf == NULL) return (ret); ptr = buf + ETHER_ALIGN; diff --git a/stand/i386/libi386/pxe.c b/stand/i386/libi386/pxe.c index e80a1961e191..e94c63878284 100644 --- a/stand/i386/libi386/pxe.c +++ b/stand/i386/libi386/pxe.c @@ -501,7 +501,7 @@ pxe_netif_receive_isr(t_PXENV_UNDI_ISR *isr, void **pkt, ssize_t *retsize) * multiple GET_NEXT calls. */ size = isr->FrameLength; - buf = malloc(size + ETHER_ALIGN); + buf = memalign(4, size + ETHER_ALIGN); if (buf == NULL) return (ENOMEM); diff --git a/stand/libofw/ofw_net.c b/stand/libofw/ofw_net.c index 14494ecc2b2e..a037c3defaf5 100644 --- a/stand/libofw/ofw_net.c +++ b/stand/libofw/ofw_net.c @@ -142,7 +142,7 @@ ofwn_get(struct iodesc *desc, void **pkt, time_t timeout) * a small shortcut here. */ len = ETHER_MAX_LEN; - buf = malloc(len + ETHER_ALIGN); + buf = memalign(4, len + ETHER_ALIGN); if (buf == NULL) return (-1); ptr = buf + ETHER_ALIGN; diff --git a/stand/uboot/lib/net.c b/stand/uboot/lib/net.c index 81b8c5bc9f5b..3d0ba5fdc6d3 100644 --- a/stand/uboot/lib/net.c +++ b/stand/uboot/lib/net.c @@ -302,7 +302,7 @@ net_get(struct iodesc *desc, void **pkt, time_t timeout) #endif if (rlen > 0) { - buf = malloc(rlen + ETHER_ALIGN); + buf = memalign(4, rlen + ETHER_ALIGN); if (buf == NULL) return (-1); memcpy(buf + ETHER_ALIGN, sc->sc_rxbuf, rlen); From nobody Thu Oct 7 03:37:43 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 73FC917E16E2; Thu, 7 Oct 2021 03:37: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 4HPxpw1dy9z4vBH; Thu, 7 Oct 2021 03:37: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 0C4534A08; Thu, 7 Oct 2021 03:37: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 1973bh79073925; Thu, 7 Oct 2021 03:37:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1973bh7G073924; Thu, 7 Oct 2021 03:37:43 GMT (envelope-from git) Date: Thu, 7 Oct 2021 03:37:43 GMT Message-Id: <202110070337.1973bh7G073924@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: bdf50dc5afbc - stable/12 - Backout 356693. The libsa malloc does provide necessary alignment and memalign by 4 will reduce alignment for some platforms. Thanks for Ian for pointing this out. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: bdf50dc5afbce81cce2d0759ee36108c3cc8614b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=bdf50dc5afbce81cce2d0759ee36108c3cc8614b commit bdf50dc5afbce81cce2d0759ee36108c3cc8614b Author: Toomas Soome AuthorDate: 2020-01-13 20:02:27 +0000 Commit: Kyle Evans CommitDate: 2021-10-07 03:37:10 +0000 Backout 356693. The libsa malloc does provide necessary alignment and memalign by 4 will reduce alignment for some platforms. Thanks for Ian for pointing this out. (cherry picked from commit aaeffe5b7064536dc7f4ea75a58125ec69d2706b) --- stand/efi/libefi/efinet.c | 2 +- stand/i386/libi386/pxe.c | 2 +- stand/libofw/ofw_net.c | 2 +- stand/uboot/lib/net.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stand/efi/libefi/efinet.c b/stand/efi/libefi/efinet.c index 989b2efdaac2..418790524e4a 100644 --- a/stand/efi/libefi/efinet.c +++ b/stand/efi/libefi/efinet.c @@ -178,7 +178,7 @@ efinet_get(struct iodesc *desc, void **pkt, time_t timeout) return (ret); bufsz = net->Mode->MaxPacketSize + ETHER_HDR_LEN + ETHER_CRC_LEN; - buf = memalign(4, bufsz + ETHER_ALIGN); + buf = malloc(bufsz + ETHER_ALIGN); if (buf == NULL) return (ret); ptr = buf + ETHER_ALIGN; diff --git a/stand/i386/libi386/pxe.c b/stand/i386/libi386/pxe.c index e94c63878284..e80a1961e191 100644 --- a/stand/i386/libi386/pxe.c +++ b/stand/i386/libi386/pxe.c @@ -501,7 +501,7 @@ pxe_netif_receive_isr(t_PXENV_UNDI_ISR *isr, void **pkt, ssize_t *retsize) * multiple GET_NEXT calls. */ size = isr->FrameLength; - buf = memalign(4, size + ETHER_ALIGN); + buf = malloc(size + ETHER_ALIGN); if (buf == NULL) return (ENOMEM); diff --git a/stand/libofw/ofw_net.c b/stand/libofw/ofw_net.c index a037c3defaf5..14494ecc2b2e 100644 --- a/stand/libofw/ofw_net.c +++ b/stand/libofw/ofw_net.c @@ -142,7 +142,7 @@ ofwn_get(struct iodesc *desc, void **pkt, time_t timeout) * a small shortcut here. */ len = ETHER_MAX_LEN; - buf = memalign(4, len + ETHER_ALIGN); + buf = malloc(len + ETHER_ALIGN); if (buf == NULL) return (-1); ptr = buf + ETHER_ALIGN; diff --git a/stand/uboot/lib/net.c b/stand/uboot/lib/net.c index 3d0ba5fdc6d3..81b8c5bc9f5b 100644 --- a/stand/uboot/lib/net.c +++ b/stand/uboot/lib/net.c @@ -302,7 +302,7 @@ net_get(struct iodesc *desc, void **pkt, time_t timeout) #endif if (rlen > 0) { - buf = memalign(4, rlen + ETHER_ALIGN); + buf = malloc(rlen + ETHER_ALIGN); if (buf == NULL) return (-1); memcpy(buf + ETHER_ALIGN, sc->sc_rxbuf, rlen); From nobody Thu Oct 7 06:05:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 91B2D17EE6CF; Thu, 7 Oct 2021 06:05: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 4HQ14t3kdMz3M3S; Thu, 7 Oct 2021 06:05: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 5FC8F6998; Thu, 7 Oct 2021 06:05: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 1976529M073372; Thu, 7 Oct 2021 06:05:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1976525Y073371; Thu, 7 Oct 2021 06:05:02 GMT (envelope-from git) Date: Thu, 7 Oct 2021 06:05:02 GMT Message-Id: <202110070605.1976525Y073371@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Wing Subject: git: 67bceb38f463 - main - i2c(8): fix option handling List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 67bceb38f463d8a929c55efdcfcfefc9aedfeff6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rew: URL: https://cgit.FreeBSD.org/src/commit/?id=67bceb38f463d8a929c55efdcfcfefc9aedfeff6 commit 67bceb38f463d8a929c55efdcfcfefc9aedfeff6 Author: Martin Birgmeier AuthorDate: 2021-10-07 05:20:56 +0000 Commit: Robert Wing CommitDate: 2021-10-07 05:56:20 +0000 i2c(8): fix option handling Recognize the '-o' option when processing command line arguments. Fixes: 9c10d00bf8cd ("i2c(8): Add interpreted mode for batch/scripted...") PR: 258572 --- usr.sbin/i2c/i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/i2c/i2c.c b/usr.sbin/i2c/i2c.c index 87bb1f0fe983..2ab7c55772de 100644 --- a/usr.sbin/i2c/i2c.c +++ b/usr.sbin/i2c/i2c.c @@ -744,7 +744,7 @@ main(int argc, char** argv) struct options i2c_opt; const char *dev, *err_msg; int fd, error = 0, ch; - const char *optflags = "a:f:d:o:w:c:m:n:sbvrh"; + const char *optflags = "a:f:d:o:iw:c:m:n:sbvrh"; char do_what = 0; dev = I2C_DEV; @@ -763,7 +763,7 @@ main(int argc, char** argv) /* Find out what we are going to do */ - while ((ch = getopt(argc, argv, "a:f:d:iw:c:m:n:sbvrh")) != -1) { + while ((ch = getopt(argc, argv, optflags)) != -1) { switch(ch) { case 'a': case 'i': From nobody Thu Oct 7 06:06:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 31C2517EF04D; Thu, 7 Oct 2021 06:06:12 +0000 (UTC) (envelope-from danfe@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.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 4HQ16D0q3Vz3MdT; Thu, 7 Oct 2021 06:06:12 +0000 (UTC) (envelope-from danfe@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633586772; 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=djWmFPhpFfKAqKogkAoIypCaq4qM1a0Ct4vkZTGI9Ms=; b=koE1TmKBmVRduWqG01a1Gja/8PCnFr/B9YeNC3SaEaRDnxkbMngavAdu5Gybj4AJFs1P+l 2WGiDoMu2fI9SVvDivuG1Och/p0HRL1ygcQ1FLo9TAtCIGzOgRdwHYOQM1jYLZbgmAf/bN QnoGlo/Mm4ryezq35u/XihRMvCPMg8/VfOOdQeYrfQpuTIIV03MUCSpMHzd6ZUVraxHlT4 jFpjinHDR/tUNYWEoc35Uc9pB7uuU+A7YrK+tkJ+ON+m9aYU9cxnBizyNJoC3k8iFJRK6U o9ngq8KXI3RD9j1/spQbOexdq9NDTaPFWVMTCEVhrSLcp+PetE6i9oNQuPUs8w== Received: by freefall.freebsd.org (Postfix, from userid 1033) id 1575D15677; Thu, 7 Oct 2021 06:06:12 +0000 (UTC) Date: Thu, 7 Oct 2021 06:06:12 +0000 From: Alexey Dokuchaev To: Kyle Evans Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-branches@freebsd.org Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet Message-ID: References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202110070337.1973bgRH073900@gitrepo.freebsd.org> ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633586772; 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=djWmFPhpFfKAqKogkAoIypCaq4qM1a0Ct4vkZTGI9Ms=; b=MckKGEz5Su8Xr8SFN7u+hJmtX7gbiu2GA4m46Z3weYfGP6qfU+v3U0jSlOA1qH+MJKbn2y MNUrHiJLTYO334M1i8wEgFwUpScQOaeAghcLIC8k/QlD/Ljv2OWfuQp5NrXLVWlTPCdBSt WGUyTTrrEM1MEr65YuRxIXdkmXmPPOTh2kIL7+N6kkIR/9IPneYwoRthtH1d7EW7zlXEIQ dUdlBOzwiJExKWSURCkVEhnBHZrUGhS7U3LAn49RTXBUX2rBjx2gTOrzKFsHWGYDjC/Las QraMxYSuAsPN2V1FBQrfORa2LN4Pd/RgghTGHsxNoHJrpTOh2QxPjdeY9vxqeA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1633586772; a=rsa-sha256; cv=none; b=SRJhZIKS4prnpe+pSrV8blnijlo8P3twtilbvSKSM/mcpb5dNl6i0nyEMRW9SDcQfWD8lY 1uawOgK9CsPre63mEyPgm25f32aqCh1b8XHfVUcHCRWcpFRZbVe9lYTDw8phdbIYaEMkzo Z+tPEzMZrgLJKBDt1oNbOUuFecNcxSWcurcuWRZgA/Ss3L+mIvbWZ5AalmyctStrEUT9Oj YilwCALr+R7O9Bk+g4iiFQOHNmL7vgSyaK4VQL1YVXuQWOgEU2uBLsxU5U8Ac7rtw8cG+w dX9ifzMm75EtGAq1TS5vaCWqMTYG5uXjSJ84/a3UCNVrNsVZO15/6L+uj6boMg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: > commit 000aad3d093a376bb1104a284b4102149db43155 > > loader: allocate properly aligned buffer for network packet > > Use memalign(4, size) to ensure we have properly aligned buffer. > > (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) I don't understand, so this is a merge of the commit from master (main) to stablle/12 which had then been reverted? So why do the merge in the first place? ./danfe From nobody Thu Oct 7 06:20:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0166412B898B; Thu, 7 Oct 2021 06:20:17 +0000 (UTC) (envelope-from kevans@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 4HQ1QS6Y2hz3Nnk; Thu, 7 Oct 2021 06:20:16 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) (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 BB333244E6; Thu, 7 Oct 2021 06:20:16 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qt1-f169.google.com with SMTP id r1so5127012qta.12; Wed, 06 Oct 2021 23:20:16 -0700 (PDT) X-Gm-Message-State: AOAM533qJfT4sdAR8XPJ6WTdnB6dD+J7SpH7QpCocEw60ZP1seKMRqlc YxjYs79FXp704LJvepWSdbvKN20jHhQyrJu4pTs= X-Google-Smtp-Source: ABdhPJylCrMuDpE6MwTuVQwXktJJYkNW8MN80J9gRcFDeWXNh+47xeOC5wgVnB9Ka2kF1z0ClbEoohUa7E9Ly4Gci9I= X-Received: by 2002:ac8:490f:: with SMTP id e15mr2867181qtq.132.1633587616224; Wed, 06 Oct 2021 23:20:16 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> In-Reply-To: From: Kyle Evans Date: Thu, 7 Oct 2021 01:20:05 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet To: Alexey Dokuchaev Cc: src-committers , "" , dev-commits-src-branches@freebsd.org Content-Type: text/plain; charset="UTF-8" X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 7, 2021 at 1:06 AM Alexey Dokuchaev wrote: > > On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: > > commit 000aad3d093a376bb1104a284b4102149db43155 > > > > loader: allocate properly aligned buffer for network packet > > > > Use memalign(4, size) to ensure we have properly aligned buffer. > > > > (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) > > I don't understand, so this is a merge of the commit from master (main) to > stablle/12 which had then been reverted? So why do the merge in the first > place? > Because commit + revert pairs are noise in the MFC tracker that distracts from actual candidates for merging. The only feature of svn I miss is --record-only merge. Thanks, Kyle Evans From nobody Thu Oct 7 06:50:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E127B12BB264; Thu, 7 Oct 2021 06:50:21 +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 4HQ2595jHFz3QLT; Thu, 7 Oct 2021 06:50:21 +0000 (UTC) (envelope-from danfe@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633589421; 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=kgxGcA2sKqmevpyKCk0Wak4bgShV9vi5PvIgNtfbdK4=; b=e4zRql9h0pGDZRabUmzqNcVqREe7ciXjA5lgWtO/sXjA7rqXitGxv2TZtQMOJK+/eK5+yv vCUHfXIAfJPqQW0iCj5jDxbteJIc9aWdP3Ag9oGblzg28G1dYd/pQ1IXJgj/RtQFc2ToBC 5jfU2WedC+MEA+1v1/kknkBpcesYpXWKDX5ns+C2Jaz/JLWtzOwpfYHb4Q/F1XP4qSm8uE 0R6MRIxSfM7ETnPnT8w4O38/wDPyQPKzFyLKb5nI1fzabdBRfM+FO3LNQ6fq4kmdlNB6pW nJ7y8HIjM0ou0JM3aIatwukVGXxaNP69BErUz5BRL93e67z+ADzKQ+eSZM5FbQ== Received: by freefall.freebsd.org (Postfix, from userid 1033) id B097D15AC0; Thu, 7 Oct 2021 06:50:21 +0000 (UTC) Date: Thu, 7 Oct 2021 06:50:21 +0000 From: Alexey Dokuchaev To: Kyle Evans Cc: src-committers , "" , dev-commits-src-branches@freebsd.org Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet Message-ID: References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633589421; 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=kgxGcA2sKqmevpyKCk0Wak4bgShV9vi5PvIgNtfbdK4=; b=ZImb254ribe4mmliCejI3poffPO7UAGw+49b/2weUpvHxNE6Ry8Wx2dy7j00baussGaKIE 2QMVCIaSKf4OnT8+V3O5oe4X2HT5n8K+X6sB4gwH90b79LwowtMEGCCsFVfo65SO5OTDO3 cm9CAyRLQO9E5DSMm8owTVCgjOKwgJW4kJ8IgNTARq5u1DRtilky9c1ecba8dxoLb1jdSP gZFdDbvEIHEuQspR2EE5A8oOx+wVKnfjU71IjbfEB08kd/U/B8i6trTMNccjiBHLSZjVfq 234y8OMXLDC+8riaoGyxDESB8yBvHgTMDoQ8sTiixYxc6QhOa/yNCtGAAk130Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1633589421; a=rsa-sha256; cv=none; b=dmb/J4FGYfHSUWinv3GtuLsPtv7mYqp/Thh7ryt9vcDNWooIouhtg/XJKQlTThVhDSr3yr lFgbaWwrKPtDKNXZttU78v7LZwm8AsQiKRtlMwbmM7VAc7YW9cDJ6wSOToOMuMkLTWxR1Y Q54aojVu4Mw6AeqYyw1iSSFi0J8euNNcPry5K2aeho55HUzfB27q/5Mpc18uycrveLAbdi 4m5w69YkNlIcgZ0jvbS3GFWeCIMljAHQLMzChUb3JbZtm0FJpFu8zQIRJNfrWxdPTpvhee qTeCMDtNU0I/SH8JJ69brr/BU1Clzq7a9Xk9m4CphJB+ov1fYFdo3Meilz6r/Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 07, 2021 at 01:20:05AM -0500, Kyle Evans wrote: > On Thu, Oct 7, 2021 at 1:06 AM Alexey Dokuchaev wrote: > > On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: > > > commit 000aad3d093a376bb1104a284b4102149db43155 > > > > > > loader: allocate properly aligned buffer for network packet > > > > > > Use memalign(4, size) to ensure we have properly aligned buffer. > > > > > > (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) > > > > I don't understand, so this is a merge of the commit from master (main) to > > stablle/12 which had then been reverted? So why do the merge in the first > > place? > > Because commit + revert pairs are noise in the MFC tracker that > distracts from actual candidates for merging. Sounds like MFC tracker should be fixed then, as now it is noise in the tool (tracker) vs. noise in the branch. Tools come and go, and code stays forever. ./danfe From nobody Thu Oct 7 07:03:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5E74B12BDA75; Thu, 7 Oct 2021 07:03:44 +0000 (UTC) (envelope-from avg@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 4HQ2Nc2CfDz3jMK; Thu, 7 Oct 2021 07:03:44 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from [192.168.0.88] (unknown [195.64.148.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: avg/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 7B8B625438; Thu, 7 Oct 2021 07:03:43 +0000 (UTC) (envelope-from avg@FreeBSD.org) Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet To: Alexey Dokuchaev , Kyle Evans Cc: src-committers , dev-commits-src-all@freebsd.org, dev-commits-src-branches@freebsd.org References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> From: Andriy Gapon Message-ID: <87d1289f-7478-8cad-addb-e7f36c112a20@FreeBSD.org> Date: Thu, 7 Oct 2021 10:03:40 +0300 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Firefox/78.0 Thunderbird/78.14.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-ThisMailContainsUnwantedMimeParts: N On 07/10/2021 09:50, Alexey Dokuchaev wrote: > On Thu, Oct 07, 2021 at 01:20:05AM -0500, Kyle Evans wrote: >> On Thu, Oct 7, 2021 at 1:06 AM Alexey Dokuchaev wrote: >>> On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: >>>> commit 000aad3d093a376bb1104a284b4102149db43155 >>>> >>>> loader: allocate properly aligned buffer for network packet >>>> >>>> Use memalign(4, size) to ensure we have properly aligned buffer. >>>> >>>> (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) >>> >>> I don't understand, so this is a merge of the commit from master (main) to >>> stablle/12 which had then been reverted? So why do the merge in the first >>> place? >> >> Because commit + revert pairs are noise in the MFC tracker that >> distracts from actual candidates for merging. > > Sounds like MFC tracker should be fixed then, as now it is noise in > the tool (tracker) vs. noise in the branch. Tools come and go, and > code stays forever. I agree. And the MFC tracker (mfc.kernelnomicon.org) has "Never MFC" button if you changed your mind about a commit. -- Andriy Gapon From nobody Thu Oct 7 07:06:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 43F0012BE66A; Thu, 7 Oct 2021 07:06:20 +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 4HQ2Rc1Qdtz3k2S; Thu, 7 Oct 2021 07:06:20 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) (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 1153325781; Thu, 7 Oct 2021 07:06:20 +0000 (UTC) (envelope-from kevans@freebsd.org) Received: by mail-qv1-f45.google.com with SMTP id k3so3549554qve.10; Thu, 07 Oct 2021 00:06:20 -0700 (PDT) X-Gm-Message-State: AOAM532/FdSEw0NbLnCUF9ntNEyFx/O8yQxlUWrtykkonCDsozXshkb9 m+8HV74TUgd2tyQhj/YFLWIPDNHAM+cZf85lzhg= X-Google-Smtp-Source: ABdhPJz2ZO7hr+74kpSj1iEawZDDa+EnxpcrErvxikkyX+WNkOBYyWHe555EbbmXa/eTkOXnhCB4RTmmJN49DsGU+sg= X-Received: by 2002:a05:6214:13ce:: with SMTP id cg14mr2653845qvb.51.1633590379711; Thu, 07 Oct 2021 00:06:19 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> In-Reply-To: From: Kyle Evans Date: Thu, 7 Oct 2021 02:06:08 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet To: Alexey Dokuchaev Cc: src-committers , "" , dev-commits-src-branches@freebsd.org Content-Type: text/plain; charset="UTF-8" X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 7, 2021 at 1:50 AM Alexey Dokuchaev wrote: > > On Thu, Oct 07, 2021 at 01:20:05AM -0500, Kyle Evans wrote: > > On Thu, Oct 7, 2021 at 1:06 AM Alexey Dokuchaev wrote: > > > On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: > > > > commit 000aad3d093a376bb1104a284b4102149db43155 > > > > > > > > loader: allocate properly aligned buffer for network packet > > > > > > > > Use memalign(4, size) to ensure we have properly aligned buffer. > > > > > > > > (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) > > > > > > I don't understand, so this is a merge of the commit from master (main) to > > > stablle/12 which had then been reverted? So why do the merge in the first > > > place? > > > > Because commit + revert pairs are noise in the MFC tracker that > > distracts from actual candidates for merging. > > Sounds like MFC tracker should be fixed then, as now it is noise in > the tool (tracker) vs. noise in the branch. Tools come and go, and > code stays forever. > Nah, the tool's fine. From nobody Thu Oct 7 07:12:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 40F7D12D0A85; Thu, 7 Oct 2021 07:12:24 +0000 (UTC) (envelope-from bapt@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 4HQ2Zc18HQz3mL0; Thu, 7 Oct 2021 07:12:24 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from aniel.nours.eu (nours.eu [IPv6:2001:41d0:8:3a4d::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: bapt) by smtp.freebsd.org (Postfix) with ESMTPSA id E89C8253A6; Thu, 7 Oct 2021 07:12:23 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: by aniel.nours.eu (Postfix, from userid 1001) id F1B2A5A549; Thu, 7 Oct 2021 09:12:21 +0200 (CEST) Date: Thu, 7 Oct 2021 09:12:21 +0200 From: Baptiste Daroussin To: Kyle Evans Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 4d7876aa70e2 - main - build: slap a libtinfo dependency on libncurses Message-ID: <20211007071221.ngdjdip2qosyhumv@aniel.nours.eu> References: <202110070303.19733k8d033800@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202110070303.19733k8d033800@gitrepo.freebsd.org> X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 07, 2021 at 03:03:46AM +0000, Kyle Evans wrote: > The branch main has been updated by kevans: > > URL: https://cgit.FreeBSD.org/src/commit/?id=4d7876aa70e2b7c7c941399a61b6f5e5f8fee088 > > commit 4d7876aa70e2b7c7c941399a61b6f5e5f8fee088 > Author: Kyle Evans > AuthorDate: 2021-10-07 03:01:05 +0000 > Commit: Kyle Evans > CommitDate: 2021-10-07 03:03:37 +0000 > > build: slap a libtinfo dependency on libncurses > > This mirrors the SUBDIR_DEPEND in lib/ncurses/Makefile. > > Reported by: jenkins (e.g., riscv64 build #23984) > Fixes: 396851c20aeb ("ncurses: split libtinfo from libncurses") > --- > Makefile.inc1 | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/Makefile.inc1 b/Makefile.inc1 > index 6dcfa6a17d3d..9b81d4029608 100644 > --- a/Makefile.inc1 > +++ b/Makefile.inc1 > @@ -2973,6 +2973,8 @@ lib/libkvm__L: lib/libelf__L > _lib_libradius= lib/libradius > .endif > > +lib/ncurses/ncurses__L: lib/ncurses/tinfo__L > + > .if ${MK_OFED} != "no" > _prebuild_libs+= \ > lib/ofed/libibverbs \ > Good catch! thank you! Best regards, Bapt From nobody Thu Oct 7 07:33:57 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 387A012D5308; Thu, 7 Oct 2021 07:34:12 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [88.99.82.50]) (using TLSv1.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 4HQ33m0Lf6z3rgQ; Thu, 7 Oct 2021 07:34:12 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2020.home.selasky.org (unknown [178.17.145.105]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 4D4CC260025; Thu, 7 Oct 2021 09:34:10 +0200 (CEST) Subject: Re: git: 903873ce1560 - main - Implement and use new mixer(3) library for FreeBSD. To: Kevin Bowling Cc: Christos Margiolis , Mateusz Piotrowski <0mp@freebsd.org>, src-committers , dev-commits-src-all@freebsd.org, "dev-commits-src-main@FreeBSD.org" References: <202109221803.18MI3gdA013391@gitrepo.freebsd.org> <3d6a23c3-ad2c-4c5b-849e-1ef12dbf8955@FreeBSD.org> <487fa0f2-d845-438f-a035-8b7ccba4285a@selasky.org> <20211004101726.wraje5ol5vwbhjcv@pleb> From: Hans Petter Selasky Message-ID: Date: Thu, 7 Oct 2021 09:33:57 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4HQ33m0Lf6z3rgQ X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N On 10/6/21 11:11 PM, Kevin Bowling wrote: > On Wed, Oct 6, 2021 at 1:43 PM Hans Petter Selasky wrote: >> >> On 10/6/21 10:37 PM, Kevin Bowling wrote: >>> I still get a bunch of spam from rc.d on boot and it doesn't seem to >>> save my mixer settings on shutdown, is there some settings file I >>> should blow away or is there a better way to handle upgrades? >> >> Hi Kevin, >> >> Did you install the new /etc/rc.d/mixer script? >> >> Or do you see this diff: > > There is no diff with 'diff -u /usr/src/libexec/rc/rc.d/mixer > /etc/rc.d/mixer' for me. Could you send those messages to me and Christos off-list? I don't see them. --HPS > >> >>> diff -u /usr/src/libexec/rc/rc.d/mixer /etc/rc.d/mixer >>> --- /usr/src/libexec/rc/rc.d/mixer 2021-09-22 22:09:36.193543000 +0200 >>> +++ /etc/rc.d/mixer 2019-12-26 22:43:45.276389000 +0100 >>> @@ -58,7 +58,7 @@ >>> >>> dev="/dev/${1}" >>> if [ -r ${dev} ]; then >>> - /usr/sbin/mixer -f ${dev} -o > /var/db/${1}-state 2>/dev/null >>> + /usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null >>> fi >>> } >> >> --HPS > From nobody Thu Oct 7 14:05:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 72E5B12DFFF6; Thu, 7 Oct 2021 14:05: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 4HQCkh2ZKyz3GCY; Thu, 7 Oct 2021 14:05: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 3813B14ECF; Thu, 7 Oct 2021 14:05: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 197E509u013835; Thu, 7 Oct 2021 14:05:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197E50qs013834; Thu, 7 Oct 2021 14:05:00 GMT (envelope-from git) Date: Thu, 7 Oct 2021 14:05:00 GMT Message-Id: <202110071405.197E50qs013834@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: f983298883c1 - stable/13 - socket: Rename sb(un)lock() and interlock with listen(2) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: f983298883c1d6c6b1970bb9e19a172932aed3d3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f983298883c1d6c6b1970bb9e19a172932aed3d3 commit f983298883c1d6c6b1970bb9e19a172932aed3d3 Author: Mark Johnston AuthorDate: 2021-09-07 18:49:31 +0000 Commit: Mark Johnston CommitDate: 2021-10-07 13:56:47 +0000 socket: Rename sb(un)lock() and interlock with listen(2) In preparation for moving sockbuf locks into the containing socket, provide alternative macros for the sockbuf I/O locks: SOCK_IO_SEND_(UN)LOCK() and SOCK_IO_RECV_(UN)LOCK(). These operate on a socket rather than a socket buffer. Note that these locks are used only to prevent concurrent readers and writters from interleaving I/O. When locking for I/O, return an error if the socket is a listening socket. Currently the check is racy since the sockbuf sx locks are destroyed during the transition to a listening socket, but that will no longer be true after some follow-up changes. Modify a few places to check for errors from sblock()/SOCK_IO_(SEND|RECV)_LOCK() where they were not before. In particular, add checks to sendfile() and sorflush(). Reviewed by: tuexen, gallatin Sponsored by: The FreeBSD Foundation (cherry picked from commit f94acf52a408316ed61ba94705d7ec0a69ba5ec8) --- sys/dev/cxgbe/tom/t4_cpl_io.c | 18 ++++----- sys/dev/hyperv/hvsock/hv_sock.c | 31 ++++++--------- sys/kern/kern_sendfile.c | 8 ++-- sys/kern/uipc_ktls.c | 10 ++--- sys/kern/uipc_sockbuf.c | 28 ------------- sys/kern/uipc_socket.c | 55 +++++++++++++++++++++----- sys/netinet/sctputil.c | 19 +++++---- sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c | 11 +++--- sys/sys/sockbuf.h | 3 -- sys/sys/socketvar.h | 14 ++++++- 10 files changed, 104 insertions(+), 93 deletions(-) diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c index ee40d0646b71..2ffbbb042131 100644 --- a/sys/dev/cxgbe/tom/t4_cpl_io.c +++ b/sys/dev/cxgbe/tom/t4_cpl_io.c @@ -2064,14 +2064,14 @@ t4_aiotx_process_job(struct toepcb *toep, struct socket *so, struct kaiocb *job) /* Inline sosend_generic(). */ - error = sblock(sb, SBL_WAIT); + error = SOCK_IO_SEND_LOCK(so, SBL_WAIT); MPASS(error == 0); sendanother: SOCKBUF_LOCK(sb); if (so->so_snd.sb_state & SBS_CANTSENDMORE) { SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); if ((so->so_options & SO_NOSIGPIPE) == 0) { PROC_LOCK(job->userproc); kern_psignal(job->userproc, SIGPIPE); @@ -2084,12 +2084,12 @@ sendanother: error = so->so_error; so->so_error = 0; SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); goto out; } if ((so->so_state & SS_ISCONNECTED) == 0) { SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); error = ENOTCONN; goto out; } @@ -2102,13 +2102,13 @@ sendanother: */ if (!aio_set_cancel_function(job, t4_aiotx_cancel)) { SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); error = ECANCELED; goto out; } TAILQ_INSERT_HEAD(&toep->aiotx_jobq, job, list); SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); goto out; } @@ -2135,7 +2135,7 @@ sendanother: m = alloc_aiotx_mbuf(job, len); if (m == NULL) { - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); error = EFAULT; goto out; } @@ -2146,7 +2146,7 @@ sendanother: INP_WLOCK(inp); if (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) { INP_WUNLOCK(inp); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); error = ECONNRESET; goto out; } @@ -2168,7 +2168,7 @@ sendanother: INP_WUNLOCK(inp); if (sendmore) goto sendanother; - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); if (error) goto out; diff --git a/sys/dev/hyperv/hvsock/hv_sock.c b/sys/dev/hyperv/hvsock/hv_sock.c index bdc8974afdbd..5ca00d9f242f 100644 --- a/sys/dev/hyperv/hvsock/hv_sock.c +++ b/sys/dev/hyperv/hvsock/hv_sock.c @@ -662,18 +662,17 @@ hvs_trans_soreceive(struct socket *so, struct sockaddr **paddr, if (uio->uio_resid == 0 || uio->uio_rw != UIO_READ) return (EINVAL); - sb = &so->so_rcv; - orig_resid = uio->uio_resid; /* Prevent other readers from entering the socket. */ - error = sblock(sb, SBLOCKWAIT(flags)); + error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags)); if (error) { HVSOCK_DBG(HVSOCK_DBG_ERR, - "%s: sblock returned error = %d\n", __func__, error); + "%s: soiolock returned error = %d\n", __func__, error); return (error); } + sb = &so->so_rcv; SOCKBUF_LOCK(sb); cbarg.uio = uio; @@ -777,8 +776,7 @@ hvs_trans_soreceive(struct socket *so, struct sockaddr **paddr, out: SOCKBUF_UNLOCK(sb); - - sbunlock(sb); + SOCK_IO_RECV_UNLOCK(so); /* We recieved a FIN in this call */ if (so->so_error == ESHUTDOWN) { @@ -821,18 +819,17 @@ hvs_trans_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, if (uio->uio_resid == 0 || uio->uio_rw != UIO_WRITE) return (EINVAL); - sb = &so->so_snd; - orig_resid = uio->uio_resid; /* Prevent other writers from entering the socket. */ - error = sblock(sb, SBLOCKWAIT(flags)); + error = SOCK_IO_SEND_LOCK(so, SBLOCKWAIT(flags)); if (error) { HVSOCK_DBG(HVSOCK_DBG_ERR, - "%s: sblock returned error = %d\n", __func__, error); + "%s: soiolocak returned error = %d\n", __func__, error); return (error); } + sb = &so->so_snd; SOCKBUF_LOCK(sb); if ((sb->sb_state & SBS_CANTSENDMORE) || @@ -891,7 +888,7 @@ hvs_trans_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, out: SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_SEND_UNLOCK(so); return (error); } @@ -1678,7 +1675,7 @@ hvsock_detach(device_t dev) { struct hvsock_sc *sc = (struct hvsock_sc *)device_get_softc(dev); struct socket *so; - int error, retry; + int retry; if (bootverbose) device_printf(dev, "hvsock_detach called.\n"); @@ -1707,8 +1704,7 @@ hvsock_detach(device_t dev) */ if (so) { retry = 0; - while ((error = sblock(&so->so_rcv, 0)) == - EWOULDBLOCK) { + while (SOCK_IO_RECV_LOCK(so, 0) == EWOULDBLOCK) { /* * Someone is reading, rx br is busy */ @@ -1719,8 +1715,7 @@ hvsock_detach(device_t dev) "retry = %d\n", retry++); } retry = 0; - while ((error = sblock(&so->so_snd, 0)) == - EWOULDBLOCK) { + while (SOCK_IO_SEND_LOCK(so, 0) == EWOULDBLOCK) { /* * Someone is sending, tx br is busy */ @@ -1738,8 +1733,8 @@ hvsock_detach(device_t dev) sc->pcb = NULL; if (so) { - sbunlock(&so->so_rcv); - sbunlock(&so->so_snd); + SOCK_IO_RECV_UNLOCK(so); + SOCK_IO_SEND_UNLOCK(so); so->so_pcb = NULL; } diff --git a/sys/kern/kern_sendfile.c b/sys/kern/kern_sendfile.c index ac1072ca2406..d3043d16f4ec 100644 --- a/sys/kern/kern_sendfile.c +++ b/sys/kern/kern_sendfile.c @@ -741,7 +741,9 @@ vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, * XXXRW: Historically this has assumed non-interruptibility, so now * we implement that, but possibly shouldn't. */ - (void)sblock(&so->so_snd, SBL_WAIT | SBL_NOINTR); + error = SOCK_IO_SEND_LOCK(so, SBL_WAIT | SBL_NOINTR); + if (error != 0) + goto out; #ifdef KERN_TLS tls = ktls_hold(so->so_snd.sb_tls_info); #endif @@ -1211,7 +1213,7 @@ prepend_header: * Send trailers. Wimp out and use writev(2). */ if (trl_uio != NULL) { - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); error = kern_writev(td, sockfd, trl_uio); if (error == 0) sbytes += td->td_retval[0]; @@ -1219,7 +1221,7 @@ prepend_header: } done: - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); out: /* * If there was no error we have to clear td->td_retval[0] diff --git a/sys/kern/uipc_ktls.c b/sys/kern/uipc_ktls.c index 2605fb5b70b7..c6fc33b3109c 100644 --- a/sys/kern/uipc_ktls.c +++ b/sys/kern/uipc_ktls.c @@ -1108,7 +1108,7 @@ ktls_enable_tx(struct socket *so, struct tls_enable *en) return (error); } - error = sblock(&so->so_snd, SBL_WAIT); + error = SOCK_IO_SEND_LOCK(so, SBL_WAIT); if (error) { ktls_cleanup(tls); return (error); @@ -1128,7 +1128,7 @@ ktls_enable_tx(struct socket *so, struct tls_enable *en) so->so_snd.sb_flags |= SB_TLS_IFNET; SOCKBUF_UNLOCK(&so->so_snd); INP_WUNLOCK(inp); - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); counter_u64_add(ktls_offload_total, 1); @@ -1229,7 +1229,7 @@ ktls_set_tx_mode(struct socket *so, int mode) return (error); } - error = sblock(&so->so_snd, SBL_WAIT); + error = SOCK_IO_SEND_LOCK(so, SBL_WAIT); if (error) { counter_u64_add(ktls_switch_failed, 1); ktls_free(tls_new); @@ -1244,7 +1244,7 @@ ktls_set_tx_mode(struct socket *so, int mode) */ if (tls != so->so_snd.sb_tls_info) { counter_u64_add(ktls_switch_failed, 1); - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); ktls_free(tls_new); ktls_free(tls); INP_WLOCK(inp); @@ -1256,7 +1256,7 @@ ktls_set_tx_mode(struct socket *so, int mode) if (tls_new->mode != TCP_TLS_MODE_SW) so->so_snd.sb_flags |= SB_TLS_IFNET; SOCKBUF_UNLOCK(&so->so_snd); - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); /* * Drop two references on 'tls'. The first is for the diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c index b2202fe15192..bb179043682e 100644 --- a/sys/kern/uipc_sockbuf.c +++ b/sys/kern/uipc_sockbuf.c @@ -475,34 +475,6 @@ sbwait(struct sockbuf *sb) sb->sb_timeo, 0, 0)); } -int -sblock(struct sockbuf *sb, int flags) -{ - - KASSERT((flags & SBL_VALID) == flags, - ("sblock: flags invalid (0x%x)", flags)); - - if (flags & SBL_WAIT) { - if ((sb->sb_flags & SB_NOINTR) || - (flags & SBL_NOINTR)) { - sx_xlock(&sb->sb_sx); - return (0); - } - return (sx_xlock_sig(&sb->sb_sx)); - } else { - if (sx_try_xlock(&sb->sb_sx) == 0) - return (EWOULDBLOCK); - return (0); - } -} - -void -sbunlock(struct sockbuf *sb) -{ - - sx_xunlock(&sb->sb_sx); -} - /* * Wakeup processes waiting on a socket buffer. Do asynchronous notification * via SIGIO if the socket has the SS_ASYNC flag set. diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 77c23859cf33..0ba8387763e1 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -1581,7 +1581,7 @@ sosend_generic(struct socket *so, struct sockaddr *addr, struct uio *uio, if (control != NULL) clen = control->m_len; - error = sblock(&so->so_snd, SBLOCKWAIT(flags)); + error = SOCK_IO_SEND_LOCK(so, SBLOCKWAIT(flags)); if (error) goto out; @@ -1779,7 +1779,7 @@ restart: } while (resid); release: - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); out: #ifdef KERN_TLS if (tls != NULL) @@ -1926,7 +1926,7 @@ soreceive_generic(struct socket *so, struct sockaddr **psa, struct uio *uio, (*pr->pr_usrreqs->pru_rcvd)(so, 0); } - error = sblock(&so->so_rcv, SBLOCKWAIT(flags)); + error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags)); if (error) return (error); @@ -2380,7 +2380,7 @@ dontblock: if (flagsp != NULL) *flagsp |= flags; release: - sbunlock(&so->so_rcv); + SOCK_IO_RECV_UNLOCK(so); return (error); } @@ -2427,7 +2427,7 @@ soreceive_stream(struct socket *so, struct sockaddr **psa, struct uio *uio, #endif /* Prevent other readers from entering the socket. */ - error = sblock(sb, SBLOCKWAIT(flags)); + error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags)); if (error) return (error); SOCKBUF_LOCK(sb); @@ -2435,7 +2435,7 @@ soreceive_stream(struct socket *so, struct sockaddr **psa, struct uio *uio, #ifdef KERN_TLS if (sb->sb_tls_info != NULL) { SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_RECV_UNLOCK(so); return (soreceive_generic(so, psa, uio, mp0, controlp, flagsp)); } @@ -2598,11 +2598,10 @@ deliver: if ((flags & MSG_WAITALL) && uio->uio_resid > 0) goto restart; out: - SOCKBUF_LOCK_ASSERT(sb); SBLASTRECORDCHK(sb); SBLASTMBUFCHK(sb); SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_RECV_UNLOCK(so); return (error); } @@ -2869,6 +2868,7 @@ sorflush(struct socket *so) struct sockbuf *sb = &so->so_rcv; struct protosw *pr = so->so_proto; struct socket aso; + int error; VNET_SO_ASSERT(so); @@ -2886,7 +2886,9 @@ sorflush(struct socket *so) * despite any existing socket disposition on interruptable waiting. */ socantrcvmore(so); - (void) sblock(sb, SBL_WAIT | SBL_NOINTR); + error = SOCK_IO_RECV_LOCK(so, SBL_WAIT | SBL_NOINTR); + KASSERT(error == 0, ("%s: cannot lock sock %p recv buffer", + __func__, so)); /* * Invalidate/clear most of the sockbuf structure, but leave selinfo @@ -2900,7 +2902,7 @@ sorflush(struct socket *so) bzero(&sb->sb_startzero, sizeof(*sb) - offsetof(struct sockbuf, sb_startzero)); SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_RECV_UNLOCK(so); /* * Dispose of special rights and flush the copied socket. Don't call @@ -4093,6 +4095,39 @@ soisdisconnected(struct socket *so) wakeup(&so->so_timeo); } +int +soiolock(struct socket *so, struct sx *sx, int flags) +{ + int error; + + KASSERT((flags & SBL_VALID) == flags, + ("soiolock: invalid flags %#x", flags)); + + if ((flags & SBL_WAIT) != 0) { + if ((flags & SBL_NOINTR) != 0) { + sx_xlock(sx); + } else { + error = sx_xlock_sig(sx); + if (error != 0) + return (error); + } + } else if (!sx_try_xlock(sx)) { + return (EWOULDBLOCK); + } + + if (__predict_false(SOLISTENING(so))) { + sx_xunlock(sx); + return (ENOTCONN); + } + return (0); +} + +void +soiounlock(struct sx *sx) +{ + sx_xunlock(sx); +} + /* * Make a copy of a sockaddr in a malloced buffer of type M_SONAME. */ diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index b01ace4d1fb9..a598741f062f 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -4796,10 +4796,10 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, old_so = old_inp->sctp_socket; new_so = new_inp->sctp_socket; TAILQ_INIT(&tmp_queue); - error = sblock(&old_so->so_rcv, waitflags); + error = SOCK_IO_RECV_LOCK(old_so, waitflags); if (error) { /* - * Gak, can't get sblock, we have a problem. data will be + * Gak, can't get I/O lock, we have a problem. data will be * left stranded.. and we don't dare look at it since the * other thread may be reading something. Oh well, its a * screwed up app that does a peeloff OR a accept while @@ -4831,9 +4831,8 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, } } SCTP_INP_READ_UNLOCK(old_inp); - /* Remove the sb-lock on the old socket */ - - sbunlock(&old_so->so_rcv); + /* Remove the recv-lock on the old socket */ + SOCK_IO_RECV_UNLOCK(old_so); /* Now we move them over to the new socket buffer */ SCTP_INP_READ_LOCK(new_inp); TAILQ_FOREACH_SAFE(control, &tmp_queue, next, nctl) { @@ -5586,7 +5585,7 @@ sctp_sorecvmsg(struct socket *so, rwnd_req, block_allowed, so->so_rcv.sb_cc, (uint32_t)uio->uio_resid); } - error = sblock(&so->so_rcv, SBLOCKWAIT(in_flags)); + error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(in_flags)); if (error) { goto release_unlocked; } @@ -6234,8 +6233,8 @@ get_more_data: } /* * We need to wait for more data a few things: - We don't - * sbunlock() so we don't get someone else reading. - We - * must be sure to account for the case where what is added + * release the I/O lock so we don't get someone else reading. + * - We must be sure to account for the case where what is added * is NOT to our control when we wakeup. */ @@ -6383,7 +6382,7 @@ release: hold_sblock = 0; } - sbunlock(&so->so_rcv); + SOCK_IO_RECV_UNLOCK(so); sockbuf_lock = 0; release_unlocked: @@ -6418,7 +6417,7 @@ out: SOCKBUF_UNLOCK(&so->so_rcv); } if (sockbuf_lock) { - sbunlock(&so->so_rcv); + SOCK_IO_RECV_UNLOCK(so); } if (freecnt_applied) { diff --git a/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c b/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c index 62e12f3b477c..973372b21761 100644 --- a/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c @@ -1103,7 +1103,7 @@ sdp_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, td->td_ru.ru_msgsnd++; ssk = sdp_sk(so); - error = sblock(&so->so_snd, SBLOCKWAIT(flags)); + error = SOCK_IO_SEND_LOCK(so, SBLOCKWAIT(flags)); if (error) goto out; @@ -1194,7 +1194,7 @@ restart: } while (resid); release: - sbunlock(&so->so_snd); + SOCK_IO_SEND_UNLOCK(so); out: if (top != NULL) m_freem(top); @@ -1265,9 +1265,9 @@ sdp_sorecv(struct socket *so, struct sockaddr **psa, struct uio *uio, ssk = sdp_sk(so); /* Prevent other readers from entering the socket. */ - error = sblock(sb, SBLOCKWAIT(flags)); + error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags)); if (error) - goto out; + return (error); SOCKBUF_LOCK(sb); /* Easy one, no space to copyout anything. */ @@ -1421,11 +1421,10 @@ deliver: if ((flags & MSG_WAITALL) && uio->uio_resid > 0) goto restart; out: - SOCKBUF_LOCK_ASSERT(sb); SBLASTRECORDCHK(sb); SBLASTMBUFCHK(sb); SOCKBUF_UNLOCK(sb); - sbunlock(sb); + SOCK_IO_RECV_UNLOCK(so); return (error); } diff --git a/sys/sys/sockbuf.h b/sys/sys/sockbuf.h index 4c56f4eaf234..a263555b3a21 100644 --- a/sys/sys/sockbuf.h +++ b/sys/sys/sockbuf.h @@ -78,7 +78,6 @@ struct selinfo; * * Locking key to struct sockbuf: * (a) locked by SOCKBUF_LOCK(). - * (b) locked by sblock() */ struct sockbuf { struct mtx sb_mtx; /* sockbuf lock */ @@ -183,8 +182,6 @@ struct mbuf * struct mbuf * sbsndmbuf(struct sockbuf *sb, u_int off, u_int *moff); int sbwait(struct sockbuf *sb); -int sblock(struct sockbuf *sb, int flags); -void sbunlock(struct sockbuf *sb); void sballoc(struct sockbuf *, struct mbuf *); void sbfree(struct sockbuf *, struct mbuf *); void sballoc_ktls_rx(struct sockbuf *sb, struct mbuf *m); diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h index 6452716d36de..e75251bc054b 100644 --- a/sys/sys/socketvar.h +++ b/sys/sys/socketvar.h @@ -249,14 +249,24 @@ struct socket { */ /* - * Flags to sblock(). + * Flags to soiolock(). */ #define SBL_WAIT 0x00000001 /* Wait if not immediately available. */ #define SBL_NOINTR 0x00000002 /* Force non-interruptible sleep. */ #define SBL_VALID (SBL_WAIT | SBL_NOINTR) + #define SBLOCKWAIT(f) (((f) & MSG_DONTWAIT) ? 0 : SBL_WAIT) +#define SOCK_IO_SEND_LOCK(so, flags) \ + soiolock((so), &(so)->so_snd.sb_sx, (flags)) +#define SOCK_IO_SEND_UNLOCK(so) \ + soiounlock(&(so)->so_snd.sb_sx) +#define SOCK_IO_RECV_LOCK(so, flags) \ + soiolock((so), &(so)->so_rcv.sb_sx, (flags)) +#define SOCK_IO_RECV_UNLOCK(so) \ + soiounlock(&(so)->so_rcv.sb_sx) + /* * Do we need to notify the other side when I/O is possible? */ @@ -486,6 +496,8 @@ void socantsendmore(struct socket *so); void socantsendmore_locked(struct socket *so); void soroverflow(struct socket *so); void soroverflow_locked(struct socket *so); +int soiolock(struct socket *so, struct sx *sx, int flags); +void soiounlock(struct sx *sx); /* * Accept filter functions (duh). From nobody Thu Oct 7 14:05:01 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2D1E417E0507; Thu, 7 Oct 2021 14:05: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 4HQCkj5S77z3G9W; Thu, 7 Oct 2021 14: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 7A15F14ED0; Thu, 7 Oct 2021 14: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 197E5181013859; Thu, 7 Oct 2021 14: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 197E513m013858; Thu, 7 Oct 2021 14:05:01 GMT (envelope-from git) Date: Thu, 7 Oct 2021 14:05:01 GMT Message-Id: <202110071405.197E513m013858@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: 160ed20e623d - stable/13 - socket: Avoid clearing SS_ISCONNECTING if soconnect() fails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 160ed20e623d44756e3e50bd99fbc9aee73e1595 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=160ed20e623d44756e3e50bd99fbc9aee73e1595 commit 160ed20e623d44756e3e50bd99fbc9aee73e1595 Author: Mark Johnston AuthorDate: 2021-09-07 18:51:54 +0000 Commit: Mark Johnston CommitDate: 2021-10-07 13:57:27 +0000 socket: Avoid clearing SS_ISCONNECTING if soconnect() fails This behaviour appears to date from the 4.4 BSD import. It has two problems: 1. The update to so_state is not protected by the socket lock, so concurrent updates to so_state may be lost. 2. Suppose two threads race to call connect(2) on a socket, and one succeeds while the other fails. Then the failing thread may incorrectly clear SS_ISCONNECTING, confusing the state machine. Simply remove the update. It does not appear to be necessary: pru_connect implementations which call soisconnecting() only do so after all failure modes have been handled. For instance, tcp_connect() and tcp6_connect() will never return an error after calling soisconnected(). However, we cannot correctly assert that SS_ISCONNECTED is not set after an error from soconnect() since the socket lock is not held across the pru_connect call, so a concurrent connect(2) may have set the flag. Sponsored by: The FreeBSD Foundation (cherry picked from commit a8aa6f1f784b91acb4ef9387a28c78311493eb66) --- sys/kern/uipc_syscalls.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 3208dc0491dd..44079bae1e9b 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -484,7 +484,7 @@ kern_connectat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) { struct socket *so; struct file *fp; - int error, interrupted = 0; + int error; #ifdef CAPABILITY_MODE if (IN_CAPABILITY_MODE(td) && (dirfd == AT_FDCWD)) @@ -522,11 +522,8 @@ kern_connectat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) { error = msleep(&so->so_timeo, &so->so_lock, PSOCK | PCATCH, "connec", 0); - if (error != 0) { - if (error == EINTR || error == ERESTART) - interrupted = 1; + if (error != 0) break; - } } if (error == 0) { error = so->so_error; @@ -534,8 +531,6 @@ kern_connectat(struct thread *td, int dirfd, int fd, struct sockaddr *sa) } SOCK_UNLOCK(so); bad: - if (!interrupted) - so->so_state &= ~SS_ISCONNECTING; if (error == ERESTART) error = EINTR; done1: From nobody Thu Oct 7 14:05:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E2B2F12E0007; Thu, 7 Oct 2021 14:05: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 4HQCkk5G37z3FxX; Thu, 7 Oct 2021 14:05: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 8A32D14ED1; Thu, 7 Oct 2021 14:05: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 197E52kU013883; Thu, 7 Oct 2021 14:05:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197E525I013882; Thu, 7 Oct 2021 14:05:02 GMT (envelope-from git) Date: Thu, 7 Oct 2021 14:05:02 GMT Message-Id: <202110071405.197E525I013882@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: 6004dc8bc304 - stable/13 - hpen(4): removed leftover hpen_final_digi_cb declaration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 6004dc8bc3048dc70e73b28e3a7542311c2b10e3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=6004dc8bc3048dc70e73b28e3a7542311c2b10e3 commit 6004dc8bc3048dc70e73b28e3a7542311c2b10e3 Author: Mateusz Guzik AuthorDate: 2021-09-05 17:30:51 +0000 Commit: Mark Johnston CommitDate: 2021-10-07 14:00:13 +0000 hpen(4): removed leftover hpen_final_digi_cb declaration (cherry picked from commit 007724cbca6f6d91b8c3450bd4a11f3ea2bb647a) --- sys/dev/hid/hpen.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/dev/hid/hpen.c b/sys/dev/hid/hpen.c index 8a86b95b1020..21a5e28a9827 100644 --- a/sys/dev/hid/hpen.c +++ b/sys/dev/hid/hpen.c @@ -59,7 +59,6 @@ static const uint8_t hpen_graphire3_4x5_report_descr[] = { HID_GRAPHIRE3_4X5_REPORT_DESCR() }; static hidmap_cb_t hpen_battery_strenght_cb; -static hidmap_cb_t hpen_final_digi_cb; static hidmap_cb_t hpen_final_pen_cb; #define HPEN_MAP_BUT(usage, code) \ From nobody Thu Oct 7 14:26:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 67B4517E3409 for ; Thu, 7 Oct 2021 14:26:32 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound3d.ore.mailhop.org (outbound3d.ore.mailhop.org [54.186.57.195]) (using TLSv1.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 4HQDCX0ZVnz3Jpj for ; Thu, 7 Oct 2021 14:26:31 +0000 (UTC) (envelope-from ian@freebsd.org) ARC-Seal: i=1; a=rsa-sha256; t=1633616785; cv=none; d=outbound.mailhop.org; s=arc-outbound20181012; b=bVmRL71ZhCfr/IZcXNMT3PMDjksZhSlQHu3fDUgZQmQqsxJYoOJstX0RaNJjVSpX3PLE8ut6vCikK n56QjByXc7bnDsvO2emR62Pw57gbF8w9YtoWUX1kW3p/4cJXnPZOVLPe51FoU31AQeeeak+60A19Hs qvHrzSFsRKctrRZ0M3aEARidKtbXdhZV/gK8UmJveyrRv+z+r5wnXsoO063H/4mNNz7cQ9B47a0nEF XYwIixHu44gv/vVKaXhdsSOe0mJSVCFK3HMziqwCtlm9i7bRGAcM0n+fZ4YTm9AVw4AL/+PMxip6ra cSfU50dc79zZAjCUbruoXWoev36He9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=arc-outbound20181012; h=content-transfer-encoding:mime-version:content-type:references:in-reply-to: date:cc:to:from:subject:message-id:dkim-signature:from; bh=6jGOxueyemrxrFWzJfT/kIjq9WTOo9s6Y8h+UlBf9Ds=; b=sI1z1kufNEFPzVgQ9+P7h1OaWNbUzCBKvR6DbsZ1sZvByugXdpbbEMthbyf+Ylc8UaiMOPvSQtvwT Js8zOgv+fj/m4urRfsM0fHXgKTyIMLl4b94WBsTeuy9fwkTExPN49RHmjtR3UHlbvT9B1NXDO6WRkC zuAQu6BaoUbwDETVxxdcY3zI/uC76S/0VTbKzUCVuxGKxxUMXQRuj4hHb8+XD/wmSMOCIGCPwlLOrL RonbyL7uzxYyBOPaA69Di2Kt5bYiLzeLWMgfC56G0FDGZIsky9VEiKlBRyFYYF7sc0dlgQwpW5A7Hs 2KzqLsVZpnqp6F5VldkDibUMOWc92Tw== ARC-Authentication-Results: i=1; outbound3.ore.mailhop.org; spf=softfail smtp.mailfrom=freebsd.org smtp.remote-ip=24.8.225.114; dmarc=none header.from=freebsd.org; arc=none header.oldest-pass=0; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=dkim-high; h=content-transfer-encoding:mime-version:content-type:references:in-reply-to: date:cc:to:from:subject:message-id:from; bh=6jGOxueyemrxrFWzJfT/kIjq9WTOo9s6Y8h+UlBf9Ds=; b=MPtbm/jJNa+JL6y+2OLBfSI0QQGwNLNw21/TnitS8WqlrPXf0M5gfw2I06pJYb7i8qmMLCyrSbRK+ h4rlYN8Z5+gUjZ5eVKEOD4+TgRo7JzifCSrRK1mySqRjrZaS6Nw06s4IgE7sPwPsqWbDpVNG14+I05 yd/X8VbOTEW8VNgjxlMdMQdp6wR6Cf3vDFHsIplVntbiGMmjVvquzPryefQ5lAm75Rv2stxz48wAE1 7V4BOJ3rCtaTJraO6gk/gLjq8YBF2kXcGyWpyxt68Pi0Z01qN3XOG8VdA+Ie2VKMkbCAdWDGfgdZU6 jpk/MvFLkgI1s88aV8+GoScysZ2yjIw== X-Originating-IP: 24.8.225.114 X-MHO-RoutePath: aGlwcGll X-MHO-User: 8c230c9b-277a-11ec-9ab5-bf9d68d023b6 X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (c-24-8-225-114.hsd1.co.comcast.net [24.8.225.114]) by outbound3.ore.mailhop.org (Halon) with ESMTPSA id 8c230c9b-277a-11ec-9ab5-bf9d68d023b6; Thu, 07 Oct 2021 14:26:24 +0000 (UTC) Received: from [172.22.42.84] (rev2.hippie.lan [172.22.42.84]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id 197EQMqI020221; Thu, 7 Oct 2021 08:26:22 -0600 (MDT) (envelope-from ian@freebsd.org) X-Authentication-Warning: paranoia.hippie.lan: Host rev2.hippie.lan [172.22.42.84] claimed to be [172.22.42.84] Message-ID: <2898a7a27162e1ba0cd0d93b99b0975f8ad65ff5.camel@freebsd.org> Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet From: Ian Lepore To: Alexey Dokuchaev , Kyle Evans Cc: src-committers , "" , dev-commits-src-branches@freebsd.org Date: Thu, 07 Oct 2021 08:26:22 -0600 In-Reply-To: References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> Content-Type: text/plain; charset="ISO-8859-1" User-Agent: Evolution 3.40.3 FreeBSD GNOME Team List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4HQDCX0ZVnz3Jpj X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Thu, 2021-10-07 at 06:50 +0000, Alexey Dokuchaev wrote: > On Thu, Oct 07, 2021 at 01:20:05AM -0500, Kyle Evans wrote: > > On Thu, Oct 7, 2021 at 1:06 AM Alexey Dokuchaev wrote: > > > On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: > > > > commit 000aad3d093a376bb1104a284b4102149db43155 > > > > > > > >  loader: allocate properly aligned buffer for network packet > > > > > > > >  Use memalign(4, size) to ensure we have properly aligned > > > > buffer. > > > > > > > >  (cherry picked from commit > > > > 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) > > > > > > I don't understand, so this is a merge of the commit from master > > > (main) to > > > stablle/12 which had then been reverted?  So why do the merge in > > > the first > > > place? > > > > Because commit + revert pairs are noise in the MFC tracker that > > distracts from actual candidates for merging. > > Sounds like MFC tracker should be fixed then, as now it is noise in > the tool (tracker) vs. noise in the branch.  Tools come and go, and > code stays forever. > > ./danfe I completely disagree, and used to do this kind of mfc even before the nifty mfc tracker came along. I see merging to older branches as a process of replaying the commits that happened on the main branch, and if that involves reverting and recommitting, I replay those too. -- Ian From nobody Thu Oct 7 14:32:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EF69217E4189 for ; Thu, 7 Oct 2021 14:32:19 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-vs1-xe2b.google.com (mail-vs1-xe2b.google.com [IPv6:2607:f8b0:4864:20::e2b]) (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 4HQDLC5BJPz3Kfd for ; Thu, 7 Oct 2021 14:32:19 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-vs1-xe2b.google.com with SMTP id 188so7065019vsv.0 for ; Thu, 07 Oct 2021 07:32:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=jS2k05FQVpTZwBLkXmMnBPM/kawAMBa+xpvlwzMcCeI=; b=DHbX7mSrAWzXCUbHpvI9Hv4xZgk9tK402+BD2RdPyug5Zv4XR4S4QbVDzB7DUmfyk3 a86b54uIqdZyjrtv27QeSl4CI6PObIwD3CxQkPsq5Y/UEFAghyOSL7U7pZ6wSut2WGPY ZzvH7N7rcdiVbUcb7gSBEkDxpkWTkkDKwbtXkVj4IAqApdMQodujyRG5iKyKJf8Xjq1t 4YqnAUYgSzL81HlR7gvioCkgvBzdajsD/OY6yKRamcXT76JleMsQWJ5J35coh6CvMkds bc7uRObC5yUOn4+fyc5Jxb2XhdB7ygkiRIHWYe+Y8wfpWj2DNekAE/FfNoy8mqBnA3qn Qgtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=jS2k05FQVpTZwBLkXmMnBPM/kawAMBa+xpvlwzMcCeI=; b=I5SwDhCKv4raRPQ6CDqtlnCGm3AYfkzc50eGlUTF9sgRxE9D/FN9FKx5efjLx0aFjR qDPeGCukN7N35NaV9Zl8g5XZP7HWTEEC3TcyA0dmZEwePym0XZsvBCLMKVY1dfHWZnjX 3HZOWpu13PWCvZoX7q1StnYmjaVHEgj8B89P1SHxWxiVvBI+5OzHomqFpMmQN+/aLVPr cu2pSXzf8eX24LtK5pJ85tuZzqxQQR4PuwnIYAo63kKK5jNwGC6mqgSdLmmFDzBDLfHm CcJfWrB0aEUtxXUKz20JHSCPA3XtJkMxF+oYYqji9OF1di5oqJ7gS/7E8cseayWj7DUE cfYw== X-Gm-Message-State: AOAM530H3jjd1+WszUG1L24t+namHLjJqJV84AbvvcOipuhXfai32kFS S9yzLIBY4knAvgoiwJFPJZ4MDXGZE6b2vpJLtkfqO0VR+QA= X-Google-Smtp-Source: ABdhPJxnr+VYqsI6E4elcPB7WMAE3kSx2j1TzCXrQkrgrVY5CnQxIaWogHGyMoMMLLxqBtyqaMV6wd8qI2OIk8hkFEo= X-Received: by 2002:a67:ab48:: with SMTP id k8mr4515976vsh.30.1633617137857; Thu, 07 Oct 2021 07:32:17 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110070337.1973bgRH073900@gitrepo.freebsd.org> <2898a7a27162e1ba0cd0d93b99b0975f8ad65ff5.camel@freebsd.org> In-Reply-To: <2898a7a27162e1ba0cd0d93b99b0975f8ad65ff5.camel@freebsd.org> From: Warner Losh Date: Thu, 7 Oct 2021 08:32:06 -0600 Message-ID: Subject: Re: git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet To: Ian Lepore Cc: Alexey Dokuchaev , Kyle Evans , src-committers , "" , dev-commits-src-branches@freebsd.org Content-Type: multipart/alternative; boundary="00000000000033ee3505cdc42165" X-Rspamd-Queue-Id: 4HQDLC5BJPz3Kfd X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N --00000000000033ee3505cdc42165 Content-Type: text/plain; charset="UTF-8" On Thu, Oct 7, 2021 at 8:26 AM Ian Lepore wrote: > On Thu, 2021-10-07 at 06:50 +0000, Alexey Dokuchaev wrote: > > On Thu, Oct 07, 2021 at 01:20:05AM -0500, Kyle Evans wrote: > > > On Thu, Oct 7, 2021 at 1:06 AM Alexey Dokuchaev wrote: > > > > On Thu, Oct 07, 2021 at 03:37:42AM +0000, Kyle Evans wrote: > > > > > commit 000aad3d093a376bb1104a284b4102149db43155 > > > > > > > > > > loader: allocate properly aligned buffer for network packet > > > > > > > > > > Use memalign(4, size) to ensure we have properly aligned > > > > > buffer. > > > > > > > > > > (cherry picked from commit > > > > > 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) > > > > > > > > I don't understand, so this is a merge of the commit from master > > > > (main) to > > > > stablle/12 which had then been reverted? So why do the merge in > > > > the first > > > > place? > > > > > > Because commit + revert pairs are noise in the MFC tracker that > > > distracts from actual candidates for merging. > > > > Sounds like MFC tracker should be fixed then, as now it is noise in > > the tool (tracker) vs. noise in the branch. Tools come and go, and > > code stays forever. > > > > ./danfe > > I completely disagree, and used to do this kind of mfc even before the > nifty mfc tracker came along. I see merging to older branches as a > process of replaying the commits that happened on the main branch, and > if that involves reverting and recommitting, I replay those too. > With git, though, we can squash the commits together and include muliple cherry-picked lines. This can be part of the replaying process and git supports us improving our process for things like this. Now, one could argue that the MFC track could also be improved, and that's true. However, there's other tools than just the MFC tracker that would need updating and some careful thought to balance all the concerns needs to take place, I think. What Kyle did is fine. It isn't terrible. Neither is it perfect, but it is well within the range of acceptable choices we have today. At the same time, it does highlight we could do a bit better, perhaps. Absent any guidance, though, I don't think we can expect much better. I'll add this as a possible area to explore in the git working group. Warner --00000000000033ee3505cdc42165-- From nobody Thu Oct 7 15:09:46 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 803D017EA4E8; Thu, 7 Oct 2021 15:09: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 4HQF9Q3Bjgz3R7f; Thu, 7 Oct 2021 15:09: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 4D50C15F0D; Thu, 7 Oct 2021 15:09: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 197F9kmJ094489; Thu, 7 Oct 2021 15:09:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197F9kqv094488; Thu, 7 Oct 2021 15:09:46 GMT (envelope-from git) Date: Thu, 7 Oct 2021 15:09:46 GMT Message-Id: <202110071509.197F9kqv094488@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: 824bbb9a4082 - main - diff: consider two files with same inodes as identical List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 824bbb9a40820fb62bde0a91c0f13e0b894da149 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by oshogbo: URL: https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 Author: Mariusz Zaborski AuthorDate: 2021-10-07 15:07:00 +0000 Commit: Mariusz Zaborski CommitDate: 2021-10-07 15:07:00 +0000 diff: consider two files with same inodes as identical Obtained from: OpenBSD MFC after: 1 week --- usr.bin/diff/diffreg.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c index fc3c3406a073..995843f9e539 100644 --- a/usr.bin/diff/diffreg.c +++ b/usr.bin/diff/diffreg.c @@ -440,6 +440,10 @@ files_differ(FILE *f1, FILE *f2, int flags) if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != stb2.st_size || (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT)) return (1); + + if (stb1.st_dev == stb2.st_dev && stb1.st_ino == stb2.st_ino) + return (0); + for (;;) { i = fread(buf1, 1, sizeof(buf1), f1); j = fread(buf2, 1, sizeof(buf2), f2); From nobody Thu Oct 7 15:13:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9A3DB17EAFDA; Thu, 7 Oct 2021 15:13:42 +0000 (UTC) (envelope-from hps@selasky.org) Received: from mail.turbocat.net (turbocat.net [88.99.82.50]) (using TLSv1.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 4HQFFy2y3Wz3hck; Thu, 7 Oct 2021 15:13:42 +0000 (UTC) (envelope-from hps@selasky.org) Received: from hps2020.home.selasky.org (unknown [178.17.145.105]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id B92642604E7; Thu, 7 Oct 2021 17:13:34 +0200 (CEST) Subject: Re: git: 824bbb9a4082 - main - diff: consider two files with same inodes as identical To: Mariusz Zaborski , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202110071509.197F9kqv094488@gitrepo.freebsd.org> From: Hans Petter Selasky Message-ID: <4fd5e142-2fc3-5233-102a-69d5c3a91ea2@selasky.org> Date: Thu, 7 Oct 2021 17:13:22 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: <202110071509.197F9kqv094488@gitrepo.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4HQFFy2y3Wz3hck X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N On 10/7/21 5:09 PM, Mariusz Zaborski wrote: > The branch main has been updated by oshogbo: > > URL: https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 > > commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 > Author: Mariusz Zaborski > AuthorDate: 2021-10-07 15:07:00 +0000 > Commit: Mariusz Zaborski > CommitDate: 2021-10-07 15:07:00 +0000 > > diff: consider two files with same inodes as identical > And mounted on the same filesystem? --HPS From nobody Thu Oct 7 15:15:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4868417EB8C7; Thu, 7 Oct 2021 15:14:25 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 4HQFGn1Jfbz3j7L; Thu, 7 Oct 2021 15:14:25 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: by mail-lf1-f53.google.com with SMTP id j21so8395824lfe.0; Thu, 07 Oct 2021 08:14:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tfwF5EHTkHA2Mc24DUIATUpWC9Yu+QDCuvcWAeBy6jo=; b=v/8WzCpLoPForL6FucG8ZgxjailJ6bkarIaIm3468Jj5BtwXP1co+tQaa6642GatYh l1sfhqDqfUhwpEXetyWYMDCLE7M9zhhYN84S9PZt/jsXVkqBY5QGzurWlWJDJkVsH3sZ OpAw9q+5fiTe0O0BEkFEqPgNPAcUu6qtNnqE15WtrKErj6EdqvVeYgHqCLA907Es/Vsf a9GP5vrxQX1f2HU1MVZqp7ol3I3QN4uURS6PulGdW7njOMisDEsTpclz3fBrG7Euhbee W6Uxb4n1FKX5hKpeOI+wSETzv9AoiJhNMcqEbqKxyq1DiJ+6KgzYcfFBsdyrYTQiArBH BCVA== X-Gm-Message-State: AOAM531tP6w414LwrpxS/F9cE3z0uIciWzXZh/VZRqYZ1vCOgcBwcwBd yJYGwYNR78Zpjq8riFu7v0iVdJds722/FPe394Z6elc9BgE= X-Google-Smtp-Source: ABdhPJybkg8+mZsYHaEWZYa8hVyFdFlXXB8WU7GmoOY/DpoajXC/IIA1dupRFkBU+rAgR+XzDCDi9ZFiZbmnNCc+pm0= X-Received: by 2002:a05:6512:22d5:: with SMTP id g21mr4793490lfu.544.1633619658308; Thu, 07 Oct 2021 08:14:18 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110071509.197F9kqv094488@gitrepo.freebsd.org> <4fd5e142-2fc3-5233-102a-69d5c3a91ea2@selasky.org> In-Reply-To: <4fd5e142-2fc3-5233-102a-69d5c3a91ea2@selasky.org> From: Mariusz Zaborski Date: Thu, 7 Oct 2021 17:15:21 +0200 Message-ID: Subject: Re: git: 824bbb9a4082 - main - diff: consider two files with same inodes as identical To: Hans Petter Selasky Cc: src-committers , dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="0000000000006e7f0c05cdc4b797" X-Rspamd-Queue-Id: 4HQFGn1Jfbz3j7L 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)[] X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N --0000000000006e7f0c05cdc4b797 Content-Type: text/plain; charset="UTF-8" And mounted on the same filesystem. On Thu, 7 Oct 2021 at 17:13, Hans Petter Selasky wrote: > On 10/7/21 5:09 PM, Mariusz Zaborski wrote: > > The branch main has been updated by oshogbo: > > > > URL: > https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 > > > > commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 > > Author: Mariusz Zaborski > > AuthorDate: 2021-10-07 15:07:00 +0000 > > Commit: Mariusz Zaborski > > CommitDate: 2021-10-07 15:07:00 +0000 > > > > diff: consider two files with same inodes as identical > > > > And mounted on the same filesystem? > > --HPS > > --0000000000006e7f0c05cdc4b797-- From nobody Thu Oct 7 15:32:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AEBE117ED416; Thu, 7 Oct 2021 15:32:35 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.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 4HQFgl3hgKz3kSW; Thu, 7 Oct 2021 15:32:35 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-oi1-f179.google.com with SMTP id o83so2062637oif.4; Thu, 07 Oct 2021 08:32:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sL44217jecSciZiR7knXfRVhcyqeiQP3uqs9f6wdvyE=; b=b/Iwl7Q/cmpDktEjujZZuQpiRv/zHnAs8FW/2EHa6/iLnWnv9hUmkxt/RFIddJUXwg 5WP1OuUJ8MP/fZm25nwOmGfzZ6mu55skErU0aqMBgcE/WF4LVDcivFMElVTIgMO/otmV XDoeFIPXPSnMP+EyxBHbBVT7Zz03H+F95KQPhLIyhwQXNG+xTP9kWsYE3iH9NwBMFkgj tUutLC3lS1f8k8+u8At50wAIJaxXJp6u+SLfHjdXY7HgKcXFag2lNe5zQTykGWsXWm7O pIxBgReLNWaBszbcETME2NAJd3jSh1VVCGmXYmmyThDeJYqoIbw/BjliHpTGlwON0l7k kQQg== X-Gm-Message-State: AOAM530nDfawIBOlDzh/siSTuSMQMDhkH1yeM8WOsGDBRZ+TyElt5Xol PiDoTcXjgoKd+80xUFRRmFo1OgAhwPNh2YnOO5yC6U7t X-Google-Smtp-Source: ABdhPJwbin7rMWbpSTf1O+tKnrFPyDsslKSvbqlmSINtSZVXiFPCcUM0biVoy4JbmB5aexcyaDbRj4zFlm3bsh24kx8= X-Received: by 2002:aca:1b09:: with SMTP id b9mr12341542oib.55.1633620748510; Thu, 07 Oct 2021 08:32:28 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110071509.197F9kqv094488@gitrepo.freebsd.org> In-Reply-To: <202110071509.197F9kqv094488@gitrepo.freebsd.org> From: Alan Somers Date: Thu, 7 Oct 2021 09:32:17 -0600 Message-ID: Subject: Re: git: 824bbb9a4082 - main - diff: consider two files with same inodes as identical To: Mariusz Zaborski Cc: src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HQFgl3hgKz3kSW X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 7, 2021 at 9:09 AM Mariusz Zaborski wrote: > > The branch main has been updated by oshogbo: > > URL: https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 > > commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 > Author: Mariusz Zaborski > AuthorDate: 2021-10-07 15:07:00 +0000 > Commit: Mariusz Zaborski > CommitDate: 2021-10-07 15:07:00 +0000 > > diff: consider two files with same inodes as identical > > Obtained from: OpenBSD > MFC after: 1 week > --- > usr.bin/diff/diffreg.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c > index fc3c3406a073..995843f9e539 100644 > --- a/usr.bin/diff/diffreg.c > +++ b/usr.bin/diff/diffreg.c > @@ -440,6 +440,10 @@ files_differ(FILE *f1, FILE *f2, int flags) > if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != stb2.st_size || > (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT)) > return (1); > + > + if (stb1.st_dev == stb2.st_dev && stb1.st_ino == stb2.st_ino) > + return (0); > + Checking st_dev is not correct. It does necessarily bear any relation to the specific mounted file system. It might, but that's up to the file system driver. fusefs, for example, allows the server to populate that field with whatever it damn well pleases. diff should use statfs instead, and check the f_fsid field. That would probably work. -Alan From nobody Thu Oct 7 15:40:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8375B17EE50A for ; Thu, 7 Oct 2021 15:41:04 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1p.ore.mailhop.org (outbound1p.ore.mailhop.org [54.149.210.130]) (using TLSv1.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 4HQFsX0tXLz3lTR for ; Thu, 7 Oct 2021 15:41:03 +0000 (UTC) (envelope-from ian@freebsd.org) ARC-Seal: i=1; a=rsa-sha256; t=1633621258; cv=none; d=outbound.mailhop.org; s=arc-outbound20181012; b=ZOBsm3yzKCmyJ32+K8yZEzt2z9mGRHbwaDrUZTdfIsqKILOQIzzN5UqaxqICjfsN4zqEfUtVXPtyL Zg34o0ktd5GL7w842PkvUb1s7UnvuBE33pzPy3aFVrV9/zdOh7jMaq/GMNtstNoXyLOTD2eTNakrtb NIaIC4fhchCCFLeAundb7PrhVix4nCLSCL69IoaTK7wrKqDR8ENJJJvvywiauUL6yZIGQ7zImiZDHh B6BsjUU4VwDMmJ10BXjzYdCi9Eola9KASyIHKfs7QgI02w53C3aX9+0S+yBwhYvOOgaylim9968gge je4jB+5UFxrmdc/hdlwo07SNLqQXfcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=arc-outbound20181012; h=content-transfer-encoding:mime-version:content-type:references:in-reply-to: date:cc:to:from:subject:message-id:dkim-signature:from; bh=NJt2dyOA9+7japku5TY5cm/4Y4vfx03cL0WGcU30v4E=; b=Sxm1U5EmxamUkNrjts4NyGtBX2ho+j6caw+cuPg4yU6IwMeOoeRSM/Fz2DBFUI+2S9UwLSLsOhW+y ya0xFSvFjFchtD4kMS+OkqSqZCM176I7Y+/GDQuO/53z3O1lRyt+uCwD4/1qmWIV/ty1VmjgM3an5x m6Lyl0WKGZ1FOl/Y3vQrQ3srriH50zgvcnz5Dswz2kpmgzKKsp/70blAmYavwnniaAvLwW1/5V1IBV gGvZE9xDPAJS+t5reppDrn11FhoKaLP2H+BkyeT74yC/uqVWhACsKXo4rfwBrqx4ZwuT4pC++gBZzw UR2kEmjnucxzeYEIagcEGVgxvyhStGQ== ARC-Authentication-Results: i=1; outbound3.ore.mailhop.org; spf=softfail smtp.mailfrom=freebsd.org smtp.remote-ip=24.8.225.114; dmarc=none header.from=freebsd.org; arc=none header.oldest-pass=0; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=dkim-high; h=content-transfer-encoding:mime-version:content-type:references:in-reply-to: date:cc:to:from:subject:message-id:from; bh=NJt2dyOA9+7japku5TY5cm/4Y4vfx03cL0WGcU30v4E=; b=UeughENp/VEf8SaExB+SczFn6amc0VlO2VdFW/8sKdgTTU1zXFwdmBJ36VeKyAX9FsyzrD47RLqLl wlZ84nFluV1p9lupyfvyAhwjx/4f+IsckKb3X5Yyk/gD8rRUDH45ctQYNlqChsG+RCUMRuviVPBXrT M+XfF3WMDOq7tbOro3wlcLgQoT6IhT7x4cmFqpyFiD2Ns6taHe2HIUIPQ/mOtMslR2dJWWJVRqr/rw 5KVJciVQWc2phLtZjyazLP491XyhiODZYNNwHFzkxC1IrDJvwGrC4egr/RleMZU1h/RRiFWaAPiupT hLHjWgHFn0PAifWANh/SRZJG76i2/cQ== X-Originating-IP: 24.8.225.114 X-MHO-RoutePath: aGlwcGll X-MHO-User: f5957079-2784-11ec-9ab6-bf9d68d023b6 X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (c-24-8-225-114.hsd1.co.comcast.net [24.8.225.114]) by outbound3.ore.mailhop.org (Halon) with ESMTPSA id f5957079-2784-11ec-9ab6-bf9d68d023b6; Thu, 07 Oct 2021 15:40:56 +0000 (UTC) Received: from [172.22.42.84] (rev2.hippie.lan [172.22.42.84]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id 197FesYs020432; Thu, 7 Oct 2021 09:40:54 -0600 (MDT) (envelope-from ian@freebsd.org) X-Authentication-Warning: paranoia.hippie.lan: Host rev2.hippie.lan [172.22.42.84] claimed to be [172.22.42.84] Message-ID: Subject: Re: git: 824bbb9a4082 - main - diff: consider two files with same inodes as identical From: Ian Lepore To: Alan Somers , Mariusz Zaborski Cc: src-committers , "" , dev-commits-src-main@freebsd.org Date: Thu, 07 Oct 2021 09:40:54 -0600 In-Reply-To: References: <202110071509.197F9kqv094488@gitrepo.freebsd.org> Content-Type: text/plain; charset="ISO-8859-1" User-Agent: Evolution 3.40.3 FreeBSD GNOME Team List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4HQFsX0tXLz3lTR X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Thu, 2021-10-07 at 09:32 -0600, Alan Somers wrote: > On Thu, Oct 7, 2021 at 9:09 AM Mariusz Zaborski > wrote: > > > > The branch main has been updated by oshogbo: > > > > URL: > > https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 > > > > commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 > > Author:     Mariusz Zaborski > > AuthorDate: 2021-10-07 15:07:00 +0000 > > Commit:     Mariusz Zaborski > > CommitDate: 2021-10-07 15:07:00 +0000 > > > >     diff: consider two files with same inodes as identical > > > >     Obtained from:  OpenBSD > >     MFC after:      1 week > > --- > >  usr.bin/diff/diffreg.c | 4 ++++ > >  1 file changed, 4 insertions(+) > > > > diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c > > index fc3c3406a073..995843f9e539 100644 > > --- a/usr.bin/diff/diffreg.c > > +++ b/usr.bin/diff/diffreg.c > > @@ -440,6 +440,10 @@ files_differ(FILE *f1, FILE *f2, int flags) > >         if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != > > stb2.st_size || > >             (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT)) > >                 return (1); > > + > > +       if (stb1.st_dev == stb2.st_dev && stb1.st_ino == > > stb2.st_ino) > > +               return (0); > > + > > Checking st_dev is not correct.  It does necessarily bear any > relation > to the specific mounted file system.  It might, but that's up to the > file system driver.  fusefs, for example, allows the server to > populate that field with whatever it damn well pleases.  diff should > use statfs instead, and check the f_fsid field.  That would probably > work. > -Alan That may be a fusefs bug, then. Posix states The st_ino and st_dev fields taken together uniquely identify the file within the system. And I've seen real-world code more than once that uses st_dev equality to decide whether to rename versus copy-and-delete a file. -- Ian From nobody Thu Oct 7 15:55:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4616C17EFEFB; Thu, 7 Oct 2021 15:54:43 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 4HQG9H1HwNz3n9j; Thu, 7 Oct 2021 15:54:43 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: by mail-lf1-f49.google.com with SMTP id x27so26905791lfu.5; Thu, 07 Oct 2021 08:54:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AlXfxgOKdK2R+z+NqeAkJAMBrxc6iwM/cURNsplm4r0=; b=Ob2V7QOX1oHTUqljJcecMdLxXjrECBeav8IX7oCeewUF2bRDVXMbimrNzZsSO6k0OH sMOiPU/E4/ekthB36vOwxQYVsUMIQpwJ7a90YH7e02ha6qTmqXhTH18sz4YZ0QvMSVG3 QuZ8Xxg5lFBBRSUqdrYtfnMpldvqIfB6rO/AteZMs9DEAfXCQjVGx0+q881Ie1dID7cd Abyj3/wZmyhdmSv1siL5ejWoeuGJuJQgYrYn71zc/wpgF+YkHTBcke5IHSimyol+vdw3 JJrgFxm76N3H/JjkLWk/QrzjNDA1KYHvtpnyQVjtqZSE0ccCKaqKPia1wdiTOio7AdGp tCag== X-Gm-Message-State: AOAM533udiqBckVZqR130ceSgjRwdCRm/4AmWxp0BEJUvBsY4YwDDtGV StBJ7vV2XpLHUN4KBFoeJG2vJeBumM7LaZCfd8QNGIvGHuk= X-Google-Smtp-Source: ABdhPJxZVtudTqFLtVDxnF+J4wvnRVzgrkWCrnzRyCrkyHVeq7yVbR0FBAqzEJh2oqiL8wTavAPa+2pqrL+8JTAO59k= X-Received: by 2002:a2e:9bd0:: with SMTP id w16mr5542852ljj.390.1633622081997; Thu, 07 Oct 2021 08:54:41 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110071509.197F9kqv094488@gitrepo.freebsd.org> In-Reply-To: From: Mariusz Zaborski Date: Thu, 7 Oct 2021 17:55:44 +0200 Message-ID: Subject: Re: git: 824bbb9a4082 - main - diff: consider two files with same inodes as identical To: Ian Lepore Cc: Alan Somers , src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: multipart/alternative; boundary="000000000000e50eb905cdc54737" X-Rspamd-Queue-Id: 4HQG9H1HwNz3n9j 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)[] X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N --000000000000e50eb905cdc54737 Content-Type: text/plain; charset="UTF-8" Like Ian said from what I know this is the way of uniquely identify the file. We use this technique in flopen(3), pidfile_open(3) or fts(3). On Thu, 7 Oct 2021 at 17:40, Ian Lepore wrote: > On Thu, 2021-10-07 at 09:32 -0600, Alan Somers wrote: > > On Thu, Oct 7, 2021 at 9:09 AM Mariusz Zaborski > > wrote: > > > > > > The branch main has been updated by oshogbo: > > > > > > URL: > > > > https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 > > > > > > commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 > > > Author: Mariusz Zaborski > > > AuthorDate: 2021-10-07 15:07:00 +0000 > > > Commit: Mariusz Zaborski > > > CommitDate: 2021-10-07 15:07:00 +0000 > > > > > > diff: consider two files with same inodes as identical > > > > > > Obtained from: OpenBSD > > > MFC after: 1 week > > > --- > > > usr.bin/diff/diffreg.c | 4 ++++ > > > 1 file changed, 4 insertions(+) > > > > > > diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c > > > index fc3c3406a073..995843f9e539 100644 > > > --- a/usr.bin/diff/diffreg.c > > > +++ b/usr.bin/diff/diffreg.c > > > @@ -440,6 +440,10 @@ files_differ(FILE *f1, FILE *f2, int flags) > > > if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != > > > stb2.st_size || > > > (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT)) > > > return (1); > > > + > > > + if (stb1.st_dev == stb2.st_dev && stb1.st_ino == > > > stb2.st_ino) > > > + return (0); > > > + > > > > Checking st_dev is not correct. It does necessarily bear any > > relation > > to the specific mounted file system. It might, but that's up to the > > file system driver. fusefs, for example, allows the server to > > populate that field with whatever it damn well pleases. diff should > > use statfs instead, and check the f_fsid field. That would probably > > work. > > -Alan > > That may be a fusefs bug, then. Posix states > > The st_ino and st_dev fields taken together uniquely identify the > file within the system. > > And I've seen real-world code more than once that uses st_dev equality > to decide whether to rename versus copy-and-delete a file. > > -- Ian > > > --000000000000e50eb905cdc54737-- From nobody Thu Oct 7 16:11:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B6BBA12B9A41; Thu, 7 Oct 2021 16:11: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 4HQGXK4qLVz3p5p; Thu, 7 Oct 2021 16:11: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 85CF016D34; Thu, 7 Oct 2021 16:11: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 197GBDnC086323; Thu, 7 Oct 2021 16:11:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197GBDkm086322; Thu, 7 Oct 2021 16:11:13 GMT (envelope-from git) Date: Thu, 7 Oct 2021 16:11:13 GMT Message-Id: <202110071611.197GBDkm086322@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marcin Wojtas Subject: git: fb5eed2c4320 - stable/13 - mmc_fdt_helper: correct typo in DT property name List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mw X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: fb5eed2c43202a5524aededa0409a531bd3e6a44 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mw: URL: https://cgit.FreeBSD.org/src/commit/?id=fb5eed2c43202a5524aededa0409a531bd3e6a44 commit fb5eed2c43202a5524aededa0409a531bd3e6a44 Author: Marcin Wojtas AuthorDate: 2021-07-15 15:08:16 +0000 Commit: Marcin Wojtas CommitDate: 2021-10-07 16:09:50 +0000 mmc_fdt_helper: correct typo in DT property name 'no-1-8-v' is a proper name according to the DT binding documentation (https://www.kernel.org/doc/Documentation/devicetree/bindings/mmc/mmc-controller.yaml). Fixes: e63fbd7bb7a25 Submitted by: Bartlomiej Grzesik Sponsored by: Semihalf (cherry picked from commit d8789cd0ae278a86f92247a87d98bb54f15b5592) --- sys/dev/mmc/mmc_fdt_helpers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/mmc/mmc_fdt_helpers.c b/sys/dev/mmc/mmc_fdt_helpers.c index 4e8a1730d240..9ec4e1a8d213 100644 --- a/sys/dev/mmc/mmc_fdt_helpers.c +++ b/sys/dev/mmc/mmc_fdt_helpers.c @@ -56,7 +56,7 @@ mmc_fdt_parse_sd_speed(phandle_t node, struct mmc_host *host) * Parse SD supported modes * All UHS-I modes requires 1.8V signaling. */ - if (OF_hasprop(node, "no1-8-v")) + if (OF_hasprop(node, "no-1-8-v")) no_18v = true; if (OF_hasprop(node, "cap-sd-highspeed")) host->caps |= MMC_CAP_HSPEED; From nobody Thu Oct 7 16:11:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 255D712B9948; Thu, 7 Oct 2021 16:11: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 4HQGXL6G44z3pLy; Thu, 7 Oct 2021 16:11: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 A56A316B2B; Thu, 7 Oct 2021 16:11: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 197GBEOX086347; Thu, 7 Oct 2021 16:11:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197GBEli086346; Thu, 7 Oct 2021 16:11:14 GMT (envelope-from git) Date: Thu, 7 Oct 2021 16:11:14 GMT Message-Id: <202110071611.197GBEli086346@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marcin Wojtas Subject: git: 87ffe5947071 - stable/13 - Upgrade ENA to v2.4.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mw X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 87ffe594707105711e7cbc1fa8d5b4a5a8a67165 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mw: URL: https://cgit.FreeBSD.org/src/commit/?id=87ffe594707105711e7cbc1fa8d5b4a5a8a67165 commit 87ffe594707105711e7cbc1fa8d5b4a5a8a67165 Author: Marcin Wojtas AuthorDate: 2021-06-14 08:57:45 +0000 Commit: Marcin Wojtas CommitDate: 2021-10-07 16:10:21 +0000 Upgrade ENA to v2.4.0 ena: change ENA C++-style comment into C-style According to man style(9), only C-style comments should be used. Submitted by: Michal Krawczyk Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 438c9e3cf89403628ec237cfecdd0538f208087b) ena: add support for the large LLQ headers in ENA Default LLQ (Low-latency queue) maximum header size is 96 bytes and can be too small for some types of packets - like IPv6 packets with multiple extension. This can be fixed, by using large LLQ headers. If the device supports larger LLQ headers, the user can activate this feature by setting sysctl tunable 'hw.ena.force_large_llq_header' to '1' in the /boot/loader.conf file. In case the device isn't supporting this feature, the default value (96B) will be used. Submitted by: Michal Krawczyk Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit beaadec9eaec8e6b266faff3b0880a141728fcef) ena: remove surplus NULL checks when freeing ENA resources Calling free on a NULL pointer is valid, as appropriate check is already done internally: /* free(NULL, ...) does nothing */ if (addr == NULL) return; Submitted by: Artur Rojek Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit ddec69e6a796283497ebada0569f34bd41bbdf37) ena: hide sysctl nodes for unused ENA queues IO queue related attributes are registered statically at driver attach with the rest of the ENA specific sysctl nodes. However, the number of queues can be changed at runtime via the `ena_sysctl_io_queues_nb` request, leading to a potential exposure of attributes for non-existing queues. Introduce a new `ena_sysctl_update_queue_node_nb` function, which updates the sysctl nodes after the number of queues is altered. This happens by either registering or unregistering node specific oids, based on a delta between the previous and current queue count. NOTE: All unregistered oids must be registered again before the driver detach, e.g. by another call to this function. Submitted by: Artur Rojek Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 0e7d31f63b9db869c91228d8ed1e984bdee2b931) Merge tag 'vendor/ena-com/2.4.0' Update the driver in order not to break its compilation and make use of the new ENA logging system Migrate platform code to the new logging system provided by ena_com layer. Make ENA_INFO the new default log level. Remove all explicit use of `device_printf`, all new logs requiring one of the log macros to be used. (cherry picked from commit 3fc5d816f8831d6fc2816ac97bd78dc486cd080c) Update ENA driver man page Bring the obsolete man page up to date: * update diagnostic error messages * add documentation of loader tunables * document netmap support * add a driver history section * update the contact information Submitted by: Artur Rojek Submitted by: Michal Krawczyk Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit e34856a2c44a45512463aed0d1794f34258c66ee) Update ENA version to v2.4.0 Some of the changes in this release: * Large LLQ headers, * Bug/stability fixes, * Change of the README/Documentation. Submitted by: Michal Krawczyk Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 93f0df457bf1d0e5f71839ab969c94d1f95813fb) --- share/man/man4/ena.4 | 271 +++++++++++++++--- sys/contrib/ena-com/ena_com.c | 37 +-- sys/contrib/ena-com/ena_com.h | 6 +- sys/contrib/ena-com/ena_defs/ena_admin_defs.h | 23 +- sys/contrib/ena-com/ena_defs/ena_gen_info.h | 6 +- sys/contrib/ena-com/ena_eth_com.c | 4 +- sys/contrib/ena-com/ena_fbsd_log.h | 74 +++++ sys/contrib/ena-com/ena_plat.h | 37 +-- sys/dev/ena/ena.c | 392 ++++++++++++++------------ sys/dev/ena/ena.h | 5 +- sys/dev/ena/ena_datapath.c | 85 +++--- sys/dev/ena/ena_netmap.c | 73 ++--- sys/dev/ena/ena_sysctl.c | 91 ++++-- sys/dev/ena/ena_sysctl.h | 7 +- 14 files changed, 743 insertions(+), 368 deletions(-) diff --git a/share/man/man4/ena.4 b/share/man/man4/ena.4 index e042ed0a2636..cd98fe2c84ba 100644 --- a/share/man/man4/ena.4 +++ b/share/man/man4/ena.4 @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 16, 2017 +.Dd June 4, 2021 .Dt ENA 4 .Os .Sh NAME @@ -86,7 +86,13 @@ debug logs. .Pp Some of the ENA devices support a working mode called Low-latency Queue (LLQ), which saves several more microseconds. -This feature will be implemented for driver in future releases. +.Pp +Support for the +.Xr netmap 4 +framework is provided by the +.Nm +driver. +Kernel must be built with the DEV_NETMAP option to be able to use this feature. .Sh HARDWARE Supported PCI vendor ID/device IDs: .Pp @@ -100,8 +106,172 @@ Supported PCI vendor ID/device IDs: .It 1d0f:ec21 - ENA VF with LLQ support .El +.Sh LOADER TUNABLES +The +.Nm +driver's behavior can be changed using run-time or boot-time sysctl +arguments. +The boot-time arguments can be set at the +.Xr loader 8 +prompt before booting the kernel, or stored in the +.Xr loader.conf 5 . +The run-time arguments can be set using the +.Xr sysctl 8 +command. +.Pp +Boot-time tunables: +.Bl -tag -width indent +.It Va hw.ena.enable_9k_mbufs +Use 9k mbufs for the Rx descriptors. +The default is 0. +If the node value is set to 1, 9k mbufs will be used for the Rx buffers. +If set to 0, page size mbufs will be used instead. +.Pp +Using 9k buffers for Rx can improve Rx throughput, but in low memory conditions +it might increase allocation time, as the system has to look for 3 contiguous +pages. +This can further lead to OS instability, together with ENA driver reset and NVMe +timeouts. +If network performance is critical and memory capacity is sufficient, the 9k +mbufs can be used. +.It Va hw.ena.force_large_llq_headers +Force the driver to use large LLQ headers (224 bytes). +The default is 0. +If the node value is set to 0, the regular size LLQ header will be used, which +is 96B. +In some cases, the packet header can be bigger than this (for example - +IPv6 with multiple extensions). +In such a situation, the large LLQ headers should be used by setting this node +value to 1. +This will take effect only if the device supports both LLQ and large LLQ +headers. +Otherwise, it will fallback to the no LLQ mode or regular header size. +.Pp +Increasing LLQ header size reduces the size of the Tx queue by half, so it may +affect the number of dropped Tx packets. +.El +.Pp +Run-time tunables: +.Bl -tag -width indent +.It Va hw.ena.log_level +Controls extra logging verbosity of the driver. +The default is 2. +The higher the logging level, the more logs will be printed out. 0 means all +extra logs are disabled and only error logs will be printed out. +Default value (2) reports errors, warnings and is verbose about driver +operation. +.Pp +The possible flags are: +.Pp +.Bl -bullet -compact +.It +0 - ENA_ERR - Enable driver error messages and ena_com error logs. +.It +1 - ENA_WARN - Enable logs for non-critical errors. +.It +2 - ENA_INFO - Make the driver more verbose about its actions. +.It +3 - ENA_DBG - Enable debug logs. +.El +.Pp +NOTE: In order to enable logging on the Tx/Rx data path, driver must be compiled +with ENA_LOG_IO_ENABLE compilation flag. +.Pp +Example: +To enable logs for errors and warnings, the following command should be used: +.Bd -literal -offset indent +sysctl hw.ena.log_level=1 +.Ed +.It Va dev.ena.X.io_queues_nb +Number of the currently allocated and used IO queues. +The default is max_num_io_queues. +Controls the number of IO queue pairs (Tx/Rx). As this call has to reallocate +the queues, it will reset the interface and restart all the queues - this means +that everything, which was currently held in the queue, will be lost, leading to +potential packet drops. +.Pp +This call can fail if the system isn't able to provide the driver with enough +resources. +In that situation, the driver will try to revert the previous number of the IO +queues. +If this also fails, the device reset will be triggered. +.Pp +Example: +To use only 2 Tx and Rx queues for the device ena1, the following command should +be used: +.Bd -literal -offset indent +sysctl dev.ena.1.io_queues_nb=2 +.Ed +.It Va dev.ena.X.rx_queue_size +Size of the Rx queue. +The default is 1024. +Controls the number of IO descriptors for each Rx queue. +The user may want to increase the Rx queue size if they observe a high number of +Rx drops in the driver's statistics. +For performance reasons, the Rx queue size must be a power of 2. +.Pp +This call can fail if the system isn't able to provide the driver with enough +resources. +In that situation, the driver will try to revert to the previous number of the +descriptors. +If this also fails, the device reset will be triggered. +.Pp +Example: +To increase Rx ring size to 8K descriptors for the device ena0, the following +command should be used: +.Bd -literal -offset indent +sysctl dev.ena.0.rx_queue_size=8192 +.Ed +.It Va dev.ena.X.buf_ring_size +Size of the Tx buffer ring (drbr). +The default is 4096. +Input must be a power of 2. +Controls the number of mbufs that can be held in the Tx buffer ring. +The drbr is used as a multiple-producer, single-consumer lockless ring for +buffering extra mbufs coming from the stack in case the Tx procedure is busy +sending the packets, or the Tx ring is full. +Increasing the size of the buffer ring may reduce the number of Tx packets being +dropped in case of a big Tx burst, which cannot be handled by the IO queue +immediately. +Each Tx queue has its own drbr. +.Pp +It is recommended to keep the drbr with at least the default value, but in case +the system lacks the resources, it can be reduced. +This call can fail if the system is not able to provide the driver with enough +resources. +In that situation, the driver will try to revert to the previous number of the +drbr and trigger the device reset. +.Pp +Example: +To set drbr size for interface ena0 to 2048, the following command should +be used: +.Bd -literal -offset indent +sysctl dev.ena.0.buf_ring_size=2048 +.Ed +.It Va dev.ena.X.eni_metrics.sample_interval +Interval in seconds for updating ENI metrics. +The default is 0. +Determines how often (if ever) the ENI metrics should be updated. +The ENI metrics are being updated asynchronously in a timer service in order to +avoid admin queue overload by sysctl node reading. +The value in this node controls the interval between issuing admin commands to +the device, which will update the ENI metrics values. +.Pp +If some application is periodically monitoring the eni_metrics, then the ENI +metrics interval can be adjusted accordingly. +Value 0 turns off the update completely. +Value 1 is the minimum interval and is equal to 1 second. +The maximum allowed update interval is 1 hour. +.Pp +Example: +To update ENI metrics for the device ena1 every 10 seconds, the following +command should be used: +.Bd -literal -offset indent +sysctl dev.ena.1.eni_metrics.sample_interval=10 +.Ed +.El .Sh DIAGNOSTICS -.Ss Device initialization phase: +.Ss Device initialization phase .Bl -diag .It ena%d: failed to init mmio read less .Pp @@ -116,7 +286,7 @@ Device may not be responding or is already during reset. Version of the controller is too old and it is not supported by the driver. .It ena%d: Invalid dma width value %d .Pp -The controller is able to request dma transaction width. +The controller is unable to request dma transaction width. .br Device stopped responding or it demanded invalid value. .It ena%d: Can not initialize ena admin queue with device @@ -132,33 +302,30 @@ Failed to get attributes of the device from the controller. .Pp Errors occurred when trying to configure AENQ groups. .El -.Ss Driver initialisation/shutdown phase: +.Ss Driver initialization/shutdown phase .Bl -diag .It ena%d: PCI resource allocation failed! -.It ena%d: allocating ena_dev failed .It ena%d: failed to pmap registers bar -.It ena%d: Error while setting up bufring -.It ena%d: Error with initialization of IO rings .It ena%d: can not allocate ifnet structure .It ena%d: Error with network interface setup .It ena%d: Failed to enable and set the admin interrupts -.It ena%d: Failed to allocate %d, vectors %d +.It ena%d: Error, MSI-X is already enabled .It ena%d: Failed to enable MSIX, vectors %d rc %d +.It ena%d: Not enough number of MSI-X allocated: %d .It ena%d: Error with MSI-X enablement .It ena%d: could not allocate irq vector: %d -.It ena%d: Unable to allocate bus resource: registers +.It ena%d: unable to allocate bus resource: registers! +.It ena%d: unable to allocate bus resource: msix! .Pp Resource allocation failed when initializing the device. .br Driver will not be attached. .It ena%d: ENA device init failed (err: %d) +.It ena%d: Cannot initialize device .Pp Device initialization failed. .br Driver will not be attached. -.It ena%d: could not activate irq vector: %d -.Pp -Error occurred when trying to activate interrupt vectors for Admin Queue. .It ena%d: failed to register interrupt handler for irq %ju: %d .Pp Error occurred when trying to register Admin Queue interrupt handler. @@ -181,8 +348,7 @@ VLANs must be detached first and then detach routine have to be called again. .It ena%d: Unmapped TX DMA tag associations .Pp Error occurred when trying to destroy RX/TX DMA tag. -.It ena%d: Cannot init RSS -.It ena%d: Cannot fill indirect table +.It ena%d: Cannot init indirect table .It ena%d: Cannot fill indirect table .It ena%d: Cannot fill hash function .It ena%d: Cannot fill hash control @@ -192,20 +358,30 @@ Error occurred during initialization of one of RSS resources. .br The device will work with reduced performance because all RX packets will be passed to queue 0 and there will be no hash information. +.It ena%d: LLQ is not supported. Fallback to host mode policy. +.It ena%d: Failed to configure the device mode. Fallback to host mode policy. +.It ena%d: unable to allocate LLQ bar resource. Fallback to host mode policy. +.Pp +Error occured during Low-latency Queue mode setup. +.br +The device will work, but without the LLQ performance gain. +.It ena%d: failed to enable write combining. +.Pp +Error occured while setting the Write Combining mode, required for the LLQ. .It ena%d: failed to tear down irq: %d .It ena%d: dev has no parent while releasing res for irq: %d Release of the interrupts failed. .El -.Ss Additional diagnostic: +.Ss Additional diagnostic .Bl -diag -.It ena%d: Cannot get attribute for ena device -.Pp -This message appears when trying to change MTU and driver is unable to get -attributes from the device. -.It ena%d: Invalid MTU setting. new_mtu: %d +.It ena%d: Invalid MTU setting. new_mtu: %d max_mtu: %d min mtu: %d .Pp Requested MTU value is not supported and will not be set. -.It ena%d: keep alive watchdog timeout +.It ena%d: Failed to set MTU to %d +.Pp +This message appears when either MTU change feature is not supported, or device +communication error has occured. +.It ena%d: Keep alive watchdog timeout. .Pp Device stopped responding and will be reset. .It ena%d: Found a Tx that wasn't completed on time, qid %d, index %d. @@ -215,18 +391,35 @@ Packet was pushed to the NIC but not sent within given time limit. It may be caused by hang of the IO queue. .It ena%d: The number of lost tx completion is aboce the threshold (%d > %d). Reset the device .Pp -If too many Tx wasn't completed on time the device is going to be reset. +If too many Tx weren't completed on time the device is going to be reset. .br It may be caused by hanged queue or device. -.It ena%d: trigger reset is on +.It ena%d: Trigger reset is on .Pp Device will be reset. .br Reset is triggered either by watchdog or if too many TX packets were not completed on time. -.It ena%d: invalid value recvd +.It ena%d: device reset scheduled but trigger_reset is off +.Pp +Reset task has been triggered, but the driver did not request it. +.br +Device reset will not be performed. +.It ena%d: Device reset failed +.Pp +Error occured while trying to reset the device. +.It ena%d: Cannot initialize device +.It ena%d: Error, mac address are different +.It ena%d: Error, device max mtu is smaller than ifp MTU +.It ena%d: Validation of device parameters failed +.It ena%d: Enable MSI-X failed +.It ena%d: Failed to create I/O queues +.It ena%d: Reset attempt failed. Can not reset the device +.Pp +Error occured while trying to restore the device after reset. +.It ena%d: Device reset completed successfully, Driver info: %s .Pp -Link status received from the device in the AENQ handler is invalid. +Device has been correctly restored after reset and is ready to use. .It ena%d: Allocation for Tx Queue %u failed .It ena%d: Allocation for Rx Queue %u failed .It ena%d: Unable to create Rx DMA map for buffer %d @@ -234,7 +427,6 @@ Link status received from the device in the AENQ handler is invalid. .It ena%d: Failed to get TX queue handlers. TX queue num %d rc: %d .It ena%d: Failed to create io RX queue[%d] rc: %d .It ena%d: Failed to get RX queue handlers. RX queue num %d rc: %d -.It ena%d: failed to request irq .It ena%d: could not allocate irq vector: %d .It ena%d: failed to register interrupt handler for irq %ju: %d .Pp @@ -246,12 +438,20 @@ Interface will not be brought up. Initialization of the LRO for the RX ring failed. .It ena%d: failed to alloc buffer for rx queue .It ena%d: failed to add buffer for rx queue %d -.It ena%d: refilled rx queue %d with %d pages only +.It ena%d: refilled rx qid %d with only %d mbufs (from %d) .Pp Allocation of resources used on RX path failed. .br If happened during initialization of the IO queue, the interface will not be brought up. +.It ena%d: NULL mbuf in rx_info +.Pp +Error occured while assembling mbuf from descriptors. +.It ena%d: tx_info doesn't have valid mbuf +.It ena%d: Invalid req_id: %hu +.It ena%d: failed to prepare tx bufs +.Pp +Error occured while preparing a packet for transmission. .It ena%d: ioctl promisc/allmulti .Pp IOCTL request for the device to work in promiscuous/allmulti mode. @@ -259,22 +459,23 @@ IOCTL request for the device to work in promiscuous/allmulti mode. See .Xr ifconfig 8 for more details. -.It ena%d: too many fragments. Last fragment: %d! -.Pp -Packet with unsupported number of segments was queued for sending to the -device. -.br -Packet will be dropped. .El .Sh SUPPORT If an issue is identified with the released source code with a supported adapter, please email the specific information related to the issue to -.Aq Mt mk@semihalf.com +.Aq Mt mk@semihalf.com , +.Aq Mt ar@semihalf.com and .Aq Mt mw@semihalf.com . .Sh SEE ALSO +.Xr netmap 4 , .Xr vlan 4 , .Xr ifconfig 8 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 11.1 . .Sh AUTHORS The .Nm diff --git a/sys/contrib/ena-com/ena_com.c b/sys/contrib/ena-com/ena_com.c index 8c63c1a03f76..3af3b14eca44 100644 --- a/sys/contrib/ena-com/ena_com.c +++ b/sys/contrib/ena-com/ena_com.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -694,7 +694,7 @@ static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, } else { ena_trc_err(ena_dev, "Invalid header location control, supported: 0x%x\n", supported_feat); - return -EINVAL; + return ENA_COM_INVAL; } if (likely(llq_info->header_location_ctrl == ENA_ADMIN_INLINE_HEADER)) { @@ -709,7 +709,7 @@ static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, } else { ena_trc_err(ena_dev, "Invalid desc_stride_ctrl, supported: 0x%x\n", supported_feat); - return -EINVAL; + return ENA_COM_INVAL; } ena_trc_err(ena_dev, "Default llq stride ctrl is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", @@ -738,7 +738,7 @@ static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, } else { ena_trc_err(ena_dev, "Invalid entry_size_ctrl, supported: 0x%x\n", supported_feat); - return -EINVAL; + return ENA_COM_INVAL; } ena_trc_err(ena_dev, "Default llq ring entry size is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", @@ -752,7 +752,7 @@ static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, */ ena_trc_err(ena_dev, "Illegal entry size %d\n", llq_info->desc_list_entry_size); - return -EINVAL; + return ENA_COM_INVAL; } if (llq_info->desc_stride_ctrl == ENA_ADMIN_MULTIPLE_DESCS_PER_ENTRY) @@ -776,7 +776,7 @@ static int ena_com_config_llq_info(struct ena_com_dev *ena_dev, } else { ena_trc_err(ena_dev, "Invalid descs_num_before_header, supported: 0x%x\n", supported_feat); - return -EINVAL; + return ENA_COM_INVAL; } ena_trc_err(ena_dev, "Default llq num descs before header is not supported, performing fallback, default: 0x%x, supported: 0x%x, used: 0x%x\n", @@ -1409,16 +1409,17 @@ int ena_com_execute_admin_command(struct ena_com_admin_queue *admin_queue, comp_ctx = ena_com_submit_admin_cmd(admin_queue, cmd, cmd_size, comp, comp_size); if (IS_ERR(comp_ctx)) { - if (comp_ctx == ERR_PTR(ENA_COM_NO_DEVICE)) + ret = PTR_ERR(comp_ctx); + if (ret == ENA_COM_NO_DEVICE) ena_trc_dbg(admin_queue->ena_dev, - "Failed to submit command [%ld]\n", - PTR_ERR(comp_ctx)); + "Failed to submit command [%d]\n", + ret); else ena_trc_err(admin_queue->ena_dev, - "Failed to submit command [%ld]\n", - PTR_ERR(comp_ctx)); + "Failed to submit command [%d]\n", + ret); - return (int)PTR_ERR(comp_ctx); + return ret; } ret = ena_com_wait_and_process_admin_cq(comp_ctx, admin_queue); @@ -2034,7 +2035,7 @@ int ena_com_get_dev_attr_feat(struct ena_com_dev *ena_dev, return rc; if (get_resp.u.max_queue_ext.version != ENA_FEATURE_MAX_QUEUE_EXT_VER) - return -EINVAL; + return ENA_COM_INVAL; memcpy(&get_feat_ctx->max_queue_ext, &get_resp.u.max_queue_ext, sizeof(get_resp.u.max_queue_ext)); @@ -2363,7 +2364,7 @@ done: } #endif -int ena_com_set_dev_mtu(struct ena_com_dev *ena_dev, int mtu) +int ena_com_set_dev_mtu(struct ena_com_dev *ena_dev, u32 mtu) { struct ena_com_admin_queue *admin_queue; struct ena_admin_set_feat_cmd cmd; @@ -2381,7 +2382,7 @@ int ena_com_set_dev_mtu(struct ena_com_dev *ena_dev, int mtu) cmd.aq_common_descriptor.opcode = ENA_ADMIN_SET_FEATURE; cmd.aq_common_descriptor.flags = 0; cmd.feat_common.feature_id = ENA_ADMIN_MTU; - cmd.u.mtu.mtu = (u32)mtu; + cmd.u.mtu.mtu = mtu; ret = ena_com_execute_admin_command(admin_queue, (struct ena_admin_aq_entry *)&cmd, @@ -2792,7 +2793,7 @@ int ena_com_indirect_table_set(struct ena_com_dev *ena_dev) return ret; } - cmd.control_buffer.length = (u32)(1ULL << rss->tbl_log_size) * + cmd.control_buffer.length = (1ULL << rss->tbl_log_size) * sizeof(struct ena_admin_rss_ind_table_entry); ret = ena_com_execute_admin_command(admin_queue, @@ -2814,7 +2815,7 @@ int ena_com_indirect_table_get(struct ena_com_dev *ena_dev, u32 *ind_tbl) u32 tbl_size; int i, rc; - tbl_size = (u32)(1ULL << rss->tbl_log_size) * + tbl_size = (1ULL << rss->tbl_log_size) * sizeof(struct ena_admin_rss_ind_table_entry); rc = ena_com_get_feature_ex(ena_dev, &get_resp, @@ -3098,7 +3099,7 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_dev, if (unlikely(ena_dev->tx_max_header_size == 0)) { ena_trc_err(ena_dev, "The size of the LLQ entry is smaller than needed\n"); - return -EINVAL; + return ENA_COM_INVAL; } ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_DEV; diff --git a/sys/contrib/ena-com/ena_com.h b/sys/contrib/ena-com/ena_com.h index 414301bdaf91..7ff0e00c1f17 100644 --- a/sys/contrib/ena-com/ena_com.h +++ b/sys/contrib/ena-com/ena_com.h @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -51,8 +51,6 @@ #define ADMIN_CQ_SIZE(depth) ((depth) * sizeof(struct ena_admin_acq_entry)) #define ADMIN_AENQ_SIZE(depth) ((depth) * sizeof(struct ena_admin_aenq_entry)) -#define ENA_CDESC_RING_SIZE_ALIGNMENT (1 << 12) /* 4K */ - /*****************************************************************************/ /*****************************************************************************/ /* ENA adaptive interrupt moderation settings */ @@ -645,7 +643,7 @@ int ena_com_get_eni_stats(struct ena_com_dev *ena_dev, * * @return: 0 on Success and negative value otherwise. */ -int ena_com_set_dev_mtu(struct ena_com_dev *ena_dev, int mtu); +int ena_com_set_dev_mtu(struct ena_com_dev *ena_dev, u32 mtu); /* ena_com_get_offload_settings - Retrieve the device offloads capabilities * @ena_dev: ENA communication layer struct diff --git a/sys/contrib/ena-com/ena_defs/ena_admin_defs.h b/sys/contrib/ena-com/ena_defs/ena_admin_defs.h index edfdad3473d7..33010bd1a2e8 100644 --- a/sys/contrib/ena-com/ena_defs/ena_admin_defs.h +++ b/sys/contrib/ena-com/ena_defs/ena_admin_defs.h @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -853,7 +853,8 @@ enum ena_admin_os_type { ENA_ADMIN_OS_FREEBSD = 4, ENA_ADMIN_OS_IPXE = 5, ENA_ADMIN_OS_ESXI = 6, - ENA_ADMIN_OS_GROUPS_NUM = 6, + ENA_ADMIN_OS_MACOS = 7, + ENA_ADMIN_OS_GROUPS_NUM = 7, }; struct ena_admin_host_info { @@ -902,7 +903,9 @@ struct ena_admin_host_info { * 2 : interrupt_moderation * 3 : rx_buf_mirroring * 4 : rss_configurable_function_key - * 31:5 : reserved + * 5 : reserved + * 6 : rx_page_reuse + * 31:7 : reserved */ uint32_t driver_supported_features; }; @@ -1092,8 +1095,6 @@ enum ena_admin_aenq_group { }; enum ena_admin_aenq_notification_syndrome { - ENA_ADMIN_SUSPEND = 0, - ENA_ADMIN_RESUME = 1, ENA_ADMIN_UPDATE_HINTS = 2, }; @@ -1228,6 +1229,8 @@ struct ena_admin_ena_mmio_req_read_less_resp { #define ENA_ADMIN_HOST_INFO_RX_BUF_MIRRORING_MASK BIT(3) #define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT 4 #define ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK BIT(4) +#define ENA_ADMIN_HOST_INFO_RX_PAGE_REUSE_SHIFT 6 +#define ENA_ADMIN_HOST_INFO_RX_PAGE_REUSE_MASK BIT(6) /* feature_rss_ind_table */ #define ENA_ADMIN_FEATURE_RSS_IND_TABLE_ONE_ENTRY_UPDATE_MASK BIT(0) @@ -1689,6 +1692,16 @@ static inline void set_ena_admin_host_info_rss_configurable_function_key(struct p->driver_supported_features |= (val << ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_SHIFT) & ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK; } +static inline uint32_t get_ena_admin_host_info_rx_page_reuse(const struct ena_admin_host_info *p) +{ + return (p->driver_supported_features & ENA_ADMIN_HOST_INFO_RX_PAGE_REUSE_MASK) >> ENA_ADMIN_HOST_INFO_RX_PAGE_REUSE_SHIFT; +} + +static inline void set_ena_admin_host_info_rx_page_reuse(struct ena_admin_host_info *p, uint32_t val) +{ + p->driver_supported_features |= (val << ENA_ADMIN_HOST_INFO_RX_PAGE_REUSE_SHIFT) & ENA_ADMIN_HOST_INFO_RX_PAGE_REUSE_MASK; +} + static inline uint8_t get_ena_admin_feature_rss_ind_table_one_entry_update(const struct ena_admin_feature_rss_ind_table *p) { return p->flags & ENA_ADMIN_FEATURE_RSS_IND_TABLE_ONE_ENTRY_UPDATE_MASK; diff --git a/sys/contrib/ena-com/ena_defs/ena_gen_info.h b/sys/contrib/ena-com/ena_defs/ena_gen_info.h index 726750a67d4e..2797239f24ef 100644 --- a/sys/contrib/ena-com/ena_defs/ena_gen_info.h +++ b/sys/contrib/ena-com/ena_defs/ena_gen_info.h @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,5 +30,5 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#define ENA_GEN_DATE "Fri Sep 18 17:09:00 IDT 2020" -#define ENA_GEN_COMMIT "0f80d82" +#define ENA_GEN_DATE "Tue Jan 19 12:45:09 STD 2021" +#define ENA_GEN_COMMIT "f023ae8f" diff --git a/sys/contrib/ena-com/ena_eth_com.c b/sys/contrib/ena-com/ena_eth_com.c index 47ca4e4afdb6..2d66c34c0aa7 100644 --- a/sys/contrib/ena-com/ena_eth_com.c +++ b/sys/contrib/ena-com/ena_eth_com.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -178,7 +178,7 @@ static int ena_com_close_bounce_buffer(struct ena_com_io_sq *io_sq) return ENA_COM_OK; /* bounce buffer was used, so write it and get a new one */ - if (pkt_ctrl->idx) { + if (likely(pkt_ctrl->idx)) { rc = ena_com_write_bounce_buffer_to_dev(io_sq, pkt_ctrl->curr_bounce_buf); if (unlikely(rc)) { diff --git a/sys/contrib/ena-com/ena_fbsd_log.h b/sys/contrib/ena-com/ena_fbsd_log.h new file mode 100644 index 000000000000..311e2f0f280a --- /dev/null +++ b/sys/contrib/ena-com/ena_fbsd_log.h @@ -0,0 +1,74 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of 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 + * OWNER 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. + */ + +#ifndef ENA_FBSD_LOG_H +#define ENA_FBSD_LOG_H + +enum ena_log_t { + ENA_ERR = 0, + ENA_WARN, + ENA_INFO, + ENA_DBG, +}; + +extern int ena_log_level; + +#define ena_log(dev, level, fmt, args...) \ + do { \ + if (ENA_ ## level <= ena_log_level) \ + device_printf((dev), fmt, ##args); \ + } while (0) + +#define ena_log_raw(level, fmt, args...) \ + do { \ + if (ENA_ ## level <= ena_log_level) \ + printf(fmt, ##args); \ + } while (0) + +#define ena_log_unused(dev, level, fmt, args...) \ + do { \ + (void)(dev); \ + } while (0) + +#ifdef ENA_LOG_IO_ENABLE +#define ena_log_io(dev, level, fmt, args...) \ + ena_log((dev), level, fmt, ##args) +#else +#define ena_log_io(dev, level, fmt, args...) \ + ena_log_unused((dev), level, fmt, ##args) +#endif + +#define ena_log_nm(dev, level, fmt, args...) \ + ena_log((dev), level, "[nm] " fmt, ##args) + +#endif /* !(ENA_FBSD_LOG_H) */ diff --git a/sys/contrib/ena-com/ena_plat.h b/sys/contrib/ena-com/ena_plat.h index 8fe1ec9aa731..b31821248398 100644 --- a/sys/contrib/ena-com/ena_plat.h +++ b/sys/contrib/ena-com/ena_plat.h @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-3-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -91,22 +91,12 @@ __FBSDID("$FreeBSD$"); #include #include -extern struct ena_bus_space ebs; +#include "ena_fbsd_log.h" -/* Levels */ -#define ENA_ALERT (1 << 0) /* Alerts are providing more error info. */ -#define ENA_WARNING (1 << 1) /* Driver output is more error sensitive. */ -#define ENA_INFO (1 << 2) /* Provides additional driver info. */ -#define ENA_DBG (1 << 3) /* Driver output for debugging. */ -/* Detailed info that will be printed with ENA_INFO or ENA_DEBUG flag. */ -#define ENA_TXPTH (1 << 4) /* Allows TX path tracing. */ -#define ENA_RXPTH (1 << 5) /* Allows RX path tracing. */ -#define ENA_RSC (1 << 6) /* Goes with TXPTH or RXPTH, free/alloc res. */ -#define ENA_IOQ (1 << 7) /* Detailed info about IO queues. */ -#define ENA_ADMQ (1 << 8) /* Detailed info about admin queue. */ -#define ENA_NETMAP (1 << 9) /* Detailed info about netmap. */ +extern struct ena_bus_space ebs; #define DEFAULT_ALLOC_ALIGNMENT 8 +#define ENA_CDESC_RING_SIZE_ALIGNMENT (1 << 12) /* 4K */ extern int ena_log_level; @@ -116,27 +106,18 @@ extern int ena_log_level; (type *)((uintptr_t)__p - offsetof(type, member)); \ }) -#define ena_trace_raw(ctx, level, fmt, args...) \ - do { \ - ((void)(ctx)); \ - if (((level) & ena_log_level) != (level)) \ - break; \ - printf(fmt, ##args); \ - } while (0) - #define ena_trace(ctx, level, fmt, args...) \ - ena_trace_raw(ctx, level, "%s() [TID:%d]: " \ + ena_log((ctx)->dmadev, level, "%s() [TID:%d]: " \ fmt, __func__, curthread->td_tid, ##args) - #define ena_trc_dbg(ctx, format, arg...) \ - ena_trace(ctx, ENA_DBG, format, ##arg) + ena_trace(ctx, DBG, format, ##arg) #define ena_trc_info(ctx, format, arg...) \ - ena_trace(ctx, ENA_INFO, format, ##arg) + ena_trace(ctx, INFO, format, ##arg) #define ena_trc_warn(ctx, format, arg...) \ - ena_trace(ctx, ENA_WARNING, format, ##arg) + ena_trace(ctx, WARN, format, ##arg) #define ena_trc_err(ctx, format, arg...) \ - ena_trace(ctx, ENA_ALERT, format, ##arg) + ena_trace(ctx, ERR, format, ##arg) #define unlikely(x) __predict_false(!!(x)) #define likely(x) __predict_true(!!(x)) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index 680eb0e9d049..84d58c844332 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -1,7 +1,7 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * - * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2021 Amazon.com, Inc. or its affiliates. * All rights reserved. * *** 2302 LINES SKIPPED *** From nobody Thu Oct 7 16:11:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8F77012B9AB1; Thu, 7 Oct 2021 16:11: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 4HQGXN0BfQz3pDZ; Thu, 7 Oct 2021 16:11: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 BF35B16BD3; Thu, 7 Oct 2021 16:11: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 197GBFp7086371; Thu, 7 Oct 2021 16:11:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197GBFxk086370; Thu, 7 Oct 2021 16:11:15 GMT (envelope-from git) Date: Thu, 7 Oct 2021 16:11:15 GMT Message-Id: <202110071611.197GBFxk086370@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marcin Wojtas Subject: git: 112c1187c29a - stable/13 - Upgrade ENA to v2.4.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mw X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 112c1187c29a0d4a8dc327834dd1dc6acd40c7f7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mw: URL: https://cgit.FreeBSD.org/src/commit/?id=112c1187c29a0d4a8dc327834dd1dc6acd40c7f7 commit 112c1187c29a0d4a8dc327834dd1dc6acd40c7f7 Author: Marcin Wojtas AuthorDate: 2021-07-23 22:31:32 +0000 Commit: Marcin Wojtas CommitDate: 2021-10-07 16:10:32 +0000 Upgrade ENA to v2.4.1 ena: Remove redundant declaration of ena_log_level. GCC6 raises a -Wredundant-decl error due to duplicate declarations in ena_fbsd_log.h and ena_plat.h. Sponsored by: Chelsio Communications (cherry picked from commit 8843787aa1bdbd10de6ba47a04489179ec2d2d3c) ena: Avoid unnecessary mbuf collapses for LLQ condition In case of Low-latency Queue, one small enough descriptor can be pushed directly to the ENA hw, thus saving one fragment. Check for this condition before performing collapse. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit c81f8c26115a64b9a97ecdb2a64e824dd839ee73) ena: Trigger reset on ena_com_prepare_tx failure All ena_com_prepare_tx errors other than ENA_COM_NO_MEM are fatal and require device reset. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 36130d2979d695dd439bc607feb00dcdb9a1937b) ena: Prevent reset after device destruction Check for ENA_FLAG_TRIGGER_RESET inside a locked context in order to avoid potential race conditions with ena_destroy_device. This aligns the reset task logic with the Linux driver. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 433ab9b6987b42b3e5b25b8b5dc7e5178c7ef9bb) ena: Add extra log messages Stay aligned with the Linux driver by adding the following logs: * inform the user about retrying queue creation * warn on non-empty ena_tx_buffer.mbuf prior to ena_tx_map_mbuf Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 77160654a162b5faa8ad7a02e18d2bef2589f868) ena: Add locking assertions ENA silently assumed that ena_up, ena_down and ena_start_xmit routines should be called within locked context. Driver's logic heavily assumes on concurrent access to those routines, so for safety and better documentation about this assumption, the locking assertions were added to the above functions. The assertion was added only for the main steps (skipping the helper functions) which can be called from multiple places including the kernel and the driver itself. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit cb98c439d66c303353a9f4abbbe9ddb51559c638) ena: Move RSS logic into its own source files Delegate RSS related functionality into separate .c/.h files in preparation for the full RSS support. While at it, reorder functions and remove prototypes for ones with internal linkage. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 986e7b9227668caf9620f207e3c1d708c87b634d) ena: Disable meta descriptor caching for netmap If LLQ is being used, `ena_tx_ctx.meta_valid` must stay enabled. This fixes netmap support on latest generation ENA HW and aligns it with the core driver behavior. As netmap doesn't support any csum offloads, the `adapter->disable_meta_caching` value can be simply passed to the HW. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit a831466830de6ab55fc03170290b313157196e81) ena: Share ena_global_lock between driver instances In order to use `ena_global_lock` in sysctl context, it must be kept outside the driver instance's software context, as sysctls can be called before attach and after detach, leading to lock use before sx_init and after sx_destroy otherwise. Solve this issue by turning `ena_global_lock` into a file scope variable, shared between all instances of the driver and associated sysctl context, and in turn initialized/destroyed in dedicated SYSINIT/SYSUNINIT functions. As a side effect, this change also fixes existing race in the reset routine, when simultaneously accessing sysctl exposed properties. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 07aff471c0de2de9a1dc5c7749c46b525bdd0201) ena: Add missing statistics Provide the following sysctl statistics in order to stay aligned with the Linux driver: * rx_ring.csum_good * tx_ring.unmask_interrupt_num Also rename the 'bad_csum' statistic name to 'csum_bad' for alignment. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 223c8cb12e951c63807300a0cbdc4a1569520b4b) ena: Implement full RSS reconfiguration Bind RX/TX queues and MSI-X vectors to matching CPUs based on the RSS bucket entries. Introduce sysctls for the following RSS functionality: - rss.indir_table: indirection table mapping - rss.indir_table_size: indirection table size - rss.key: RSS hash key (if Toeplitz used) Said sysctls are only available when compiled without `option RSS`, as kernel-side RSS support currently doesn't offer RSS reconfiguration. Migrate the hash algorithm from CRC32 to Toeplitz and change the initial hash value to 0x0 in order to match the standard Toeplitz implementation. Provide helpers for hash key inversion required for HW operations. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 6d1ef2abd330fac4057f092abbbdc28a568b4327) ena: fix building in-kernel driver When building ENA as compiled into the kernel, the driver would fail to build. Resolve the problem by introducing the following changes: 1. Add missing `ena_rss.c` entry in `sys/conf/files`. 2. Prevent SYSCTL_ADD_INT from throwing an assert due to an extra CTLTYPE_INT flag. Fixes: 986e7b92276 ("ena: Move RSS logic into its own source files") Fixes: 6d1ef2abd33 ("ena: Implement full RSS reconfiguration") Obtained from: Semihalf Sponsored by: Amazon, Inc. MFC after: 1 week (cherry picked from commit a3f0d18237bdcf272461d3b4b682de384c572144) ena: Update driver version to v2.4.1 Some of the changes in this release: * Hardware RSS hash key reconfiguration and indirection table reconfiguration support. * Full kernel RSS support. * Extra statistic counters. * Netmap support for ENAv3. * Locking assertions. * Extra log messages. * Reset handling fixes. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 42c7760be3ea420668f625f2064ae347aa7e818e) --- share/man/man4/ena.4 | 51 +++++++ sys/conf/files | 2 + sys/contrib/ena-com/ena_plat.h | 2 - sys/dev/ena/ena.c | 302 +++++++++++++------------------------ sys/dev/ena/ena.h | 34 +++-- sys/dev/ena/ena_datapath.c | 32 +++- sys/dev/ena/ena_netmap.c | 7 +- sys/dev/ena/ena_rss.c | 300 +++++++++++++++++++++++++++++++++++++ sys/dev/ena/ena_rss.h | 73 +++++++++ sys/dev/ena/ena_sysctl.c | 329 +++++++++++++++++++++++++++++++++++++++-- sys/modules/ena/Makefile | 2 +- 11 files changed, 900 insertions(+), 234 deletions(-) diff --git a/share/man/man4/ena.4 b/share/man/man4/ena.4 index cd98fe2c84ba..aacf7956c9f8 100644 --- a/share/man/man4/ena.4 +++ b/share/man/man4/ena.4 @@ -269,6 +269,57 @@ command should be used: .Bd -literal -offset indent sysctl dev.ena.1.eni_metrics.sample_interval=10 .Ed +.It Va dev.ena.X.rss.indir_table_size +RSS indirection table size. +The default is 128. +Returns the number of entries in the RSS indirection table. +.Pp +Example: +To read the RSS indirection table size, the following command should be used: +.Bd -literal -offset indent +sysctl dev.ena.0.rss.indir_table_size +.Ed +.It Va dev.ena.X.rss.indir_table +RSS indirection table mapping. +The default is x:y key-pairs of indir_table_size length. +Updates selected indices of the RSS indirection table. +.Pp +The entry string consists of one or more x:y keypairs, where x stands for +the table index and y for its new value. Table indices that don't need to be +updated can be omitted from the string and will retain their existing values. +.Pp +If an index is entered more than once, the last value is used. +.Pp +Example: +To update two selected indices in the RSS indirection table, e.g. setting index +0 to queue 5 and then index 5 to queue 0, the following command should be used: +.Bd -literal -offset indent +sysctl dev.ena.0.rss.indir_table="0:5 5:0" +.Ed +.It Va dev.ena.X.rss.key +RSS hash key. +The default is 40 bytes long randomly generated hash key. +Controls the RSS Toeplitz hash algorithm key value. +.Pp +Only available when driver compiled without the kernel side RSS support. +.Pp +Example: +To change the RSS hash key value to +.Pp +0x6d, 0x5a, 0x56, 0xda, 0x25, 0x5b, 0x0e, 0xc2, +.br +0x41, 0x67, 0x25, 0x3d, 0x43, 0xa3, 0x8f, 0xb0, +.br +0xd0, 0xca, 0x2b, 0xcb, 0xae, 0x7b, 0x30, 0xb4, +.br +0x77, 0xcb, 0x2d, 0xa3, 0x80, 0x30, 0xf2, 0x0c, +.br +0x6a, 0x42, 0xb7, 0x3b, 0xbe, 0xac, 0x01, 0xfa +.Pp +the following command should be used: +.Bd -literal -offset indent +sysctl dev.ena.0.rss.key=6d5a56da255b0ec24167253d43a38fb0d0ca2bcbae7b30b477cb2da38030f20c6a42b73bbeac01fa +.Ed .El .Sh DIAGNOSTICS .Ss Device initialization phase diff --git a/sys/conf/files b/sys/conf/files index 21239c31e83f..69ebfe39340d 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1700,6 +1700,8 @@ dev/ena/ena_datapath.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" dev/ena/ena_netmap.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" +dev/ena/ena_rss.c optional ena \ + compile-with "${NORMAL_C} -I$S/contrib" dev/ena/ena_sysctl.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" contrib/ena-com/ena_com.c optional ena diff --git a/sys/contrib/ena-com/ena_plat.h b/sys/contrib/ena-com/ena_plat.h index b31821248398..274f795950c0 100644 --- a/sys/contrib/ena-com/ena_plat.h +++ b/sys/contrib/ena-com/ena_plat.h @@ -98,8 +98,6 @@ extern struct ena_bus_space ebs; #define DEFAULT_ALLOC_ALIGNMENT 8 #define ENA_CDESC_RING_SIZE_ALIGNMENT (1 << 12) /* 4K */ -extern int ena_log_level; - #define container_of(ptr, type, member) \ ({ \ const __typeof(((type *)0)->member) *__p = (ptr); \ diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index 84d58c844332..84ef234cd937 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -63,9 +63,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef RSS -#include -#endif #include #include @@ -84,6 +81,7 @@ __FBSDID("$FreeBSD$"); #include "ena_datapath.h" #include "ena.h" #include "ena_sysctl.h" +#include "ena_rss.h" #ifdef DEV_NETMAP #include "ena_netmap.h" @@ -143,7 +141,6 @@ static void ena_free_io_irq(struct ena_adapter *); static void ena_free_irqs(struct ena_adapter*); static void ena_disable_msix(struct ena_adapter *); static void ena_unmask_all_io_irqs(struct ena_adapter *); -static int ena_rss_configure(struct ena_adapter *); static int ena_up_complete(struct ena_adapter *); static uint64_t ena_get_counter(if_t, ift_counter); static int ena_media_change(if_t); @@ -161,8 +158,6 @@ static int ena_set_queues_placement_policy(device_t, struct ena_com_dev *, static uint32_t ena_calc_max_io_queue_num(device_t, struct ena_com_dev *, struct ena_com_dev_get_features_ctx *); static int ena_calc_io_queue_size(struct ena_calc_queue_size_ctx *); -static int ena_rss_init_default(struct ena_adapter *); -static void ena_rss_init_default_deferred(void *); static void ena_config_host_info(struct ena_com_dev *, device_t); static int ena_attach(device_t); static int ena_detach(device_t); @@ -186,6 +181,8 @@ static ena_vendor_info_t ena_vendor_info_array[] = { { 0, 0, 0 } }; +struct sx ena_global_lock; + /* * Contains pointers to event handlers, e.g. link state chage. */ @@ -265,27 +262,6 @@ fail_tag: return (error); } -/* - * This function should generate unique key for the whole driver. - * If the key was already genereated in the previous call (for example - * for another adapter), then it should be returned instead. - */ -void -ena_rss_key_fill(void *key, size_t size) -{ - static bool key_generated; - static uint8_t default_key[ENA_HASH_KEY_SIZE]; - - KASSERT(size <= ENA_HASH_KEY_SIZE, ("Requested more bytes than ENA RSS key can hold")); - - if (!key_generated) { - arc4random_buf(default_key, ENA_HASH_KEY_SIZE); - key_generated = true; - } - - memcpy(key, default_key, size); -} - static void ena_free_pci_resources(struct ena_adapter *adapter) { @@ -625,8 +601,10 @@ static int ena_setup_tx_resources(struct ena_adapter *adapter, int qid) { device_t pdev = adapter->pdev; + char thread_name[MAXCOMLEN + 1]; struct ena_que *que = &adapter->que[qid]; struct ena_ring *tx_ring = que->tx_ring; + cpuset_t *cpu_mask = NULL; int size, i, err; #ifdef DEV_NETMAP bus_dmamap_t *map; @@ -710,8 +688,16 @@ ena_setup_tx_resources(struct ena_adapter *adapter, int qid) tx_ring->running = true; - taskqueue_start_threads(&tx_ring->enqueue_tq, 1, PI_NET, - "%s txeq %d", device_get_nameunit(adapter->pdev), que->cpu); +#ifdef RSS + cpu_mask = &que->cpu_mask; + snprintf(thread_name, sizeof(thread_name), "%s txeq %d", + device_get_nameunit(adapter->pdev), que->cpu); +#else + snprintf(thread_name, sizeof(thread_name), "%s txeq %d", + device_get_nameunit(adapter->pdev), que->id); +#endif + taskqueue_start_threads_cpuset(&tx_ring->enqueue_tq, 1, PI_NET, + cpu_mask, "%s", thread_name); return (0); @@ -1153,8 +1139,6 @@ ena_update_buf_ring_size(struct ena_adapter *adapter, int rc = 0; bool dev_was_up; - ENA_LOCK_LOCK(adapter); - old_buf_ring_size = adapter->buf_ring_size; adapter->buf_ring_size = new_buf_ring_size; @@ -1189,8 +1173,6 @@ ena_update_buf_ring_size(struct ena_adapter *adapter, } } - ENA_LOCK_UNLOCK(adapter); - return (rc); } @@ -1202,8 +1184,6 @@ ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, int rc = 0; bool dev_was_up; - ENA_LOCK_LOCK(adapter); - old_tx_size = adapter->requested_tx_ring_size; old_rx_size = adapter->requested_rx_ring_size; adapter->requested_tx_ring_size = new_tx_size; @@ -1244,8 +1224,6 @@ ena_update_queue_size(struct ena_adapter *adapter, uint32_t new_tx_size, } } - ENA_LOCK_UNLOCK(adapter); - return (rc); } @@ -1268,8 +1246,6 @@ ena_update_io_queue_nb(struct ena_adapter *adapter, uint32_t new_num) int rc = 0; bool dev_was_up; - ENA_LOCK_LOCK(adapter); - dev_was_up = ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter); old_num = adapter->num_io_queues; ena_down(adapter); @@ -1299,8 +1275,6 @@ ena_update_io_queue_nb(struct ena_adapter *adapter, uint32_t new_num) } } - ENA_LOCK_UNLOCK(adapter); - return (rc); } @@ -1459,6 +1433,7 @@ ena_create_io_queues(struct ena_adapter *adapter) struct ena_que *queue; uint16_t ena_qid; uint32_t msix_vector; + cpuset_t *cpu_mask = NULL; int rc, i; /* Create TX queues */ @@ -1525,7 +1500,11 @@ ena_create_io_queues(struct ena_adapter *adapter) queue->cleanup_tq = taskqueue_create_fast("ena cleanup", M_WAITOK, taskqueue_thread_enqueue, &queue->cleanup_tq); - taskqueue_start_threads(&queue->cleanup_tq, 1, PI_NET, +#ifdef RSS + cpu_mask = &queue->cpu_mask; +#endif + taskqueue_start_threads_cpuset(&queue->cleanup_tq, 1, PI_NET, + cpu_mask, "%s queue %d cleanup", device_get_nameunit(adapter->pdev), i); } @@ -1664,7 +1643,10 @@ ena_setup_mgmnt_intr(struct ena_adapter *adapter) static int ena_setup_io_intr(struct ena_adapter *adapter) { - static int last_bind_cpu = -1; +#ifdef RSS + int num_buckets = rss_getnumbuckets(); + static int last_bind = 0; +#endif int irq_idx; if (adapter->msix_entries == NULL) @@ -1682,15 +1664,12 @@ ena_setup_io_intr(struct ena_adapter *adapter) ena_log(adapter->pdev, DBG, "ena_setup_io_intr vector: %d\n", adapter->msix_entries[irq_idx].vector); - /* - * We want to bind rings to the corresponding cpu - * using something similar to the RSS round-robin technique. - */ - if (unlikely(last_bind_cpu < 0)) - last_bind_cpu = CPU_FIRST(); +#ifdef RSS adapter->que[i].cpu = adapter->irq_tbl[irq_idx].cpu = - last_bind_cpu; - last_bind_cpu = CPU_NEXT(last_bind_cpu); + rss_getcpu(last_bind); + last_bind = (last_bind + 1) % num_buckets; + CPU_SETOF(adapter->que[i].cpu, &adapter->que[i].cpu_mask); +#endif } return (0); @@ -1782,6 +1761,19 @@ ena_request_io_irq(struct ena_adapter *adapter) goto err; } irq->requested = true; + +#ifdef RSS + rc = bus_bind_intr(adapter->pdev, irq->res, irq->cpu); + if (unlikely(rc != 0)) { + ena_log(pdev, ERR, "failed to bind " + "interrupt handler for irq %ju to cpu %d: %d\n", + rman_get_start(irq->res), irq->cpu, rc); + goto err; + } + + ena_log(pdev, INFO, "queue %d - cpu %d\n", + i - ENA_IO_IRQ_FIRST_IDX, irq->cpu); +#endif } return (rc); @@ -1910,6 +1902,7 @@ ena_unmask_all_io_irqs(struct ena_adapter *adapter) { struct ena_com_io_cq* io_cq; struct ena_eth_io_intr_reg intr_reg; + struct ena_ring *tx_ring; uint16_t ena_qid; int i; @@ -1918,47 +1911,12 @@ ena_unmask_all_io_irqs(struct ena_adapter *adapter) ena_qid = ENA_IO_TXQ_IDX(i); io_cq = &adapter->ena_dev->io_cq_queues[ena_qid]; ena_com_update_intr_reg(&intr_reg, 0, 0, true); + tx_ring = &adapter->tx_ring[i]; + counter_u64_add(tx_ring->tx_stats.unmask_interrupt_num, 1); ena_com_unmask_intr(io_cq, &intr_reg); } } -/* Configure the Rx forwarding */ -static int -ena_rss_configure(struct ena_adapter *adapter) -{ - struct ena_com_dev *ena_dev = adapter->ena_dev; - int rc; - - /* In case the RSS table was destroyed */ - if (!ena_dev->rss.tbl_log_size) { - rc = ena_rss_init_default(adapter); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) { - ena_log(adapter->pdev, ERR, - "WARNING: RSS was not properly re-initialized," - " it will affect bandwidth\n"); - ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_RSS_ACTIVE, adapter); - return (rc); - } - } - - /* Set indirect table */ - rc = ena_com_indirect_table_set(ena_dev); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) - return (rc); - - /* Configure hash function (if supported) */ - rc = ena_com_set_hash_function(ena_dev); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) - return (rc); - - /* Configure hash inputs (if supported) */ - rc = ena_com_set_hash_ctrl(ena_dev); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) - return (rc); - - return (0); -} - static int ena_up_complete(struct ena_adapter *adapter) { @@ -2079,6 +2037,10 @@ err_setup_tx: return (rc); } + ena_log(pdev, INFO, + "Retrying queue creation with sizes TX=%d, RX=%d\n", + new_tx_ring_size, new_rx_ring_size); + set_io_rings_size(adapter, new_tx_ring_size, new_rx_ring_size); } } @@ -2088,6 +2050,8 @@ ena_up(struct ena_adapter *adapter) { int rc = 0; + ENA_LOCK_ASSERT(); + if (unlikely(device_is_attached(adapter->pdev) == 0)) { ena_log(adapter->pdev, ERR, "device is not attached!\n"); return (ENXIO); @@ -2205,13 +2169,13 @@ ena_media_status(if_t ifp, struct ifmediareq *ifmr) struct ena_adapter *adapter = if_getsoftc(ifp); ena_log(adapter->pdev, DBG, "Media status update\n"); - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); ifmr->ifm_status = IFM_AVALID; ifmr->ifm_active = IFM_ETHER; if (!ENA_FLAG_ISSET(ENA_FLAG_LINK_UP, adapter)) { - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); ena_log(adapter->pdev, INFO, "Link is down\n"); return; } @@ -2219,7 +2183,7 @@ ena_media_status(if_t ifp, struct ifmediareq *ifmr) ifmr->ifm_status |= IFM_ACTIVE; ifmr->ifm_active |= IFM_UNKNOWN | IFM_FDX; - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); } static void @@ -2228,9 +2192,9 @@ ena_init(void *arg) struct ena_adapter *adapter = (struct ena_adapter *)arg; if (!ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) { - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); ena_up(adapter); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); } } @@ -2252,13 +2216,13 @@ ena_ioctl(if_t ifp, u_long command, caddr_t data) case SIOCSIFMTU: if (ifp->if_mtu == ifr->ifr_mtu) break; - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); ena_down(adapter); ena_change_mtu(ifp, ifr->ifr_mtu); rc = ena_up(adapter); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); break; case SIOCSIFFLAGS: @@ -2270,15 +2234,15 @@ ena_ioctl(if_t ifp, u_long command, caddr_t data) "ioctl promisc/allmulti\n"); } } else { - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); rc = ena_up(adapter); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); } } else { if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) { - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); ena_down(adapter); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); } } break; @@ -2303,10 +2267,10 @@ ena_ioctl(if_t ifp, u_long command, caddr_t data) if ((reinit != 0) && ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)) { - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); ena_down(adapter); rc = ena_up(adapter); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); } } @@ -2461,6 +2425,8 @@ ena_down(struct ena_adapter *adapter) { int rc; + ENA_LOCK_ASSERT(); + if (!ENA_FLAG_ISSET(ENA_FLAG_DEV_UP, adapter)) return; @@ -2526,6 +2492,10 @@ ena_calc_max_io_queue_num(device_t pdev, struct ena_com_dev *ena_dev, /* 1 IRQ for for mgmnt and 1 IRQ for each TX/RX pair */ max_num_io_queues = min_t(uint32_t, max_num_io_queues, pci_msix_count(pdev) - 1); +#ifdef RSS + max_num_io_queues = min_t(uint32_t, max_num_io_queues, + rss_getnumbuckets()); +#endif return (max_num_io_queues); } @@ -2722,90 +2692,6 @@ ena_calc_io_queue_size(struct ena_calc_queue_size_ctx *ctx) return (0); } -static int -ena_rss_init_default(struct ena_adapter *adapter) -{ - struct ena_com_dev *ena_dev = adapter->ena_dev; - device_t dev = adapter->pdev; - int qid, rc, i; - - rc = ena_com_rss_init(ena_dev, ENA_RX_RSS_TABLE_LOG_SIZE); - if (unlikely(rc != 0)) { - ena_log(dev, ERR, "Cannot init indirect table\n"); - return (rc); - } - - for (i = 0; i < ENA_RX_RSS_TABLE_SIZE; i++) { - qid = i % adapter->num_io_queues; - rc = ena_com_indirect_table_fill_entry(ena_dev, i, - ENA_IO_RXQ_IDX(qid)); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) { - ena_log(dev, ERR, "Cannot fill indirect table\n"); - goto err_rss_destroy; - } - } - -#ifdef RSS - uint8_t rss_algo = rss_gethashalgo(); - if (rss_algo == RSS_HASH_TOEPLITZ) { - uint8_t hash_key[RSS_KEYSIZE]; - - rss_getkey(hash_key); - rc = ena_com_fill_hash_function(ena_dev, ENA_ADMIN_TOEPLITZ, - hash_key, RSS_KEYSIZE, 0xFFFFFFFF); - } else -#endif - rc = ena_com_fill_hash_function(ena_dev, ENA_ADMIN_CRC32, NULL, - ENA_HASH_KEY_SIZE, 0xFFFFFFFF); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) { - ena_log(dev, ERR, "Cannot fill hash function\n"); - goto err_rss_destroy; - } - - rc = ena_com_set_default_hash_ctrl(ena_dev); - if (unlikely((rc != 0) && (rc != EOPNOTSUPP))) { - ena_log(dev, ERR, "Cannot fill hash control\n"); - goto err_rss_destroy; - } - - return (0); - -err_rss_destroy: - ena_com_rss_destroy(ena_dev); - return (rc); -} - -static void -ena_rss_init_default_deferred(void *arg) -{ - struct ena_adapter *adapter; - devclass_t dc; - int max; - int rc; - - dc = devclass_find("ena"); - if (unlikely(dc == NULL)) { - ena_log_raw(ERR, "SYSINIT: %s: No devclass ena\n", __func__); - return; - } - - max = devclass_get_maxunit(dc); - while (max-- >= 0) { - adapter = devclass_get_softc(dc, max); - if (adapter != NULL) { - rc = ena_rss_init_default(adapter); - ENA_FLAG_SET_ATOMIC(ENA_FLAG_RSS_ACTIVE, adapter); - if (unlikely(rc != 0)) { - ena_log(adapter->pdev, WARN, - "WARNING: RSS was not properly initialized," - " it will affect bandwidth\n"); - ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_RSS_ACTIVE, adapter); - } - } - } -} -SYSINIT(ena_rss_init, SI_SUB_KICK_SCHEDULER, SI_ORDER_SECOND, ena_rss_init_default_deferred, NULL); - static void ena_config_host_info(struct ena_com_dev *ena_dev, device_t dev) { @@ -2838,7 +2724,8 @@ ena_config_host_info(struct ena_com_dev *ena_dev, device_t dev) (DRV_MODULE_VER_SUBMINOR << ENA_ADMIN_HOST_INFO_SUB_MINOR_SHIFT); host_info->num_cpus = mp_ncpus; host_info->driver_supported_features = - ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK; + ENA_ADMIN_HOST_INFO_RX_OFFSET_MASK | + ENA_ADMIN_HOST_INFO_RSS_CONFIGURABLE_FUNCTION_KEY_MASK; rc = ena_com_set_host_attributes(ena_dev); if (unlikely(rc != 0)) { @@ -3539,16 +3426,12 @@ ena_reset_task(void *arg, int pending) { struct ena_adapter *adapter = (struct ena_adapter *)arg; - if (unlikely(!ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { - ena_log(adapter->pdev, WARN, - "device reset scheduled but trigger_reset is off\n"); - return; + ENA_LOCK_LOCK(); + if (likely(ENA_FLAG_ISSET(ENA_FLAG_TRIGGER_RESET, adapter))) { + ena_destroy_device(adapter, false); + ena_restore_device(adapter); } - - ENA_LOCK_LOCK(adapter); - ena_destroy_device(adapter, false); - ena_restore_device(adapter); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); } /** @@ -3577,8 +3460,6 @@ ena_attach(device_t pdev) adapter = device_get_softc(pdev); adapter->pdev = pdev; - ENA_LOCK_INIT(adapter); - /* * Set up the timer service - driver is responsible for avoiding * concurrency, as the callout won't be using any locking inside. @@ -3820,19 +3701,19 @@ ena_detach(device_t pdev) ether_ifdetach(adapter->ifp); /* Stop timer service */ - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); callout_drain(&adapter->timer_service); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); /* Release reset task */ while (taskqueue_cancel(adapter->reset_tq, &adapter->reset_task, NULL)) taskqueue_drain(adapter->reset_tq, &adapter->reset_task); taskqueue_free(adapter->reset_tq); - ENA_LOCK_LOCK(adapter); + ENA_LOCK_LOCK(); ena_down(adapter); ena_destroy_device(adapter, true); - ENA_LOCK_UNLOCK(adapter); + ENA_LOCK_UNLOCK(); /* Restore unregistered sysctl queue nodes. */ ena_sysctl_update_queue_node_nb(adapter, adapter->num_io_queues, @@ -3861,13 +3742,14 @@ ena_detach(device_t pdev) ena_free_pci_resources(adapter); + if (adapter->rss_indir != NULL) + free(adapter->rss_indir, M_DEVBUF); + if (likely(ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter))) ena_com_rss_destroy(ena_dev); ena_com_delete_host_info(ena_dev); - ENA_LOCK_DESTROY(adapter); - if_free(adapter->ifp); free(ena_dev->bus, M_DEVBUF); @@ -3933,6 +3815,20 @@ static void ena_notification(void *adapter_data, } } +static void +ena_lock_init(void *arg) +{ + ENA_LOCK_INIT(); +} +SYSINIT(ena_lock_init, SI_SUB_LOCK, SI_ORDER_FIRST, ena_lock_init, NULL); + +static void +ena_lock_uninit(void *arg) +{ + ENA_LOCK_DESTROY(); +} +SYSUNINIT(ena_lock_uninit, SI_SUB_LOCK, SI_ORDER_FIRST, ena_lock_uninit, NULL); + /** * This handler will called for unknown event group or unimplemented handlers **/ diff --git a/sys/dev/ena/ena.h b/sys/dev/ena/ena.h index 1d06a3cb56de..f559f9127c11 100644 --- a/sys/dev/ena/ena.h +++ b/sys/dev/ena/ena.h @@ -34,14 +34,14 @@ #ifndef ENA_H #define ENA_H -#include +#include "opt_rss.h" #include "ena-com/ena_com.h" #include "ena-com/ena_eth_com.h" #define DRV_MODULE_VER_MAJOR 2 #define DRV_MODULE_VER_MINOR 4 -#define DRV_MODULE_VER_SUBMINOR 0 +#define DRV_MODULE_VER_SUBMINOR 1 #define DRV_MODULE_NAME "ena" @@ -123,6 +123,8 @@ #define ENA_IO_TXQ_IDX(q) (2 * (q)) #define ENA_IO_RXQ_IDX(q) (2 * (q) + 1) +#define ENA_IO_TXQ_IDX_TO_COMBINED_IDX(q) ((q) / 2) +#define ENA_IO_RXQ_IDX_TO_COMBINED_IDX(q) (((q) - 1) / 2) #define ENA_MGMNT_IRQ_IDX 0 #define ENA_IO_IRQ_FIRST_IDX 1 @@ -201,7 +203,9 @@ struct ena_irq { void *cookie; unsigned int vector; bool requested; +#ifdef RSS int cpu; +#endif char name[ENA_IRQNAME_SIZE]; }; @@ -214,7 +218,10 @@ struct ena_que { struct taskqueue *cleanup_tq; uint32_t id; +#ifdef RSS int cpu; + cpuset_t cpu_mask; +#endif struct sysctl_oid *oid; }; @@ -281,19 +288,21 @@ struct ena_stats_tx { counter_u64_t queue_wakeup; counter_u64_t queue_stop; counter_u64_t llq_buffer_copy; + counter_u64_t unmask_interrupt_num; }; struct ena_stats_rx { counter_u64_t cnt; counter_u64_t bytes; counter_u64_t refil_partial; - counter_u64_t bad_csum; + counter_u64_t csum_bad; counter_u64_t mjum_alloc_fail; counter_u64_t mbuf_alloc_fail; counter_u64_t dma_mapping_err; *** 1108 LINES SKIPPED *** From nobody Thu Oct 7 16:34:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3D05612BC4D2; Thu, 7 Oct 2021 16:34: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 4HQH2g00Hdz3rjy; Thu, 7 Oct 2021 16:34: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 D3F1B16A73; Thu, 7 Oct 2021 16:34: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 197GY2sG013879; Thu, 7 Oct 2021 16:34:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197GY2BF013878; Thu, 7 Oct 2021 16:34:02 GMT (envelope-from git) Date: Thu, 7 Oct 2021 16:34:02 GMT Message-Id: <202110071634.197GY2BF013878@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jamie Gritton Subject: git: 13cb61f9723e - stable/13 - MFC uipc_shm: Fix kern.ipc.posix_shm_list for jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 13cb61f9723e4b4d1cd7d14850837a4cfe5bc15f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jamie: URL: https://cgit.FreeBSD.org/src/commit/?id=13cb61f9723e4b4d1cd7d14850837a4cfe5bc15f commit 13cb61f9723e4b4d1cd7d14850837a4cfe5bc15f Author: Jamie Gritton AuthorDate: 2021-09-29 17:20:36 +0000 Commit: Jamie Gritton CommitDate: 2021-10-07 16:29:30 +0000 MFC uipc_shm: Fix kern.ipc.posix_shm_list for jails Fix error return of kern.ipc.posix_shm_list, which caused it (and thus "posixshmcontrol ls") to fail for all jails that didn't happen to own the last shm object in the list. (cherry picked from commit 747a47261eee59b6e9c437cd2c1b3979df5c32ac) --- sys/kern/uipc_shm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c index 58c9f8cec239..622886e15e58 100644 --- a/sys/kern/uipc_shm.c +++ b/sys/kern/uipc_shm.c @@ -1926,8 +1926,10 @@ sysctl_posix_shm_list(SYSCTL_HANDLER_ARGS) LIST_FOREACH(shmm, &shm_dictionary[i], sm_link) { error = shm_fill_kinfo_locked(shmm->sm_shmfd, &kif, true); - if (error == EPERM) + if (error == EPERM) { + error = 0; continue; + } if (error != 0) break; pack_kinfo(&kif); From nobody Thu Oct 7 16:38:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4D02512BCEB4; Thu, 7 Oct 2021 16:38:06 +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 4HQH7L1bTfz3rtn; Thu, 7 Oct 2021 16:38:06 +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 9F36B29DA3; Thu, 7 Oct 2021 16:38:05 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: git: d586c978b9b4 - main - stand: fix build after recent opencrypto changes To: Kyle Evans , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202110070124.1971OZIh099106@gitrepo.freebsd.org> From: John Baldwin Message-ID: <826605dd-ae91-f8c5-9d59-76072a34f927@FreeBSD.org> Date: Thu, 7 Oct 2021 09:38:04 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: <202110070124.1971OZIh099106@gitrepo.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-ThisMailContainsUnwantedMimeParts: N On 10/6/21 6:24 PM, Kyle Evans wrote: > The branch main has been updated by kevans: > > URL: https://cgit.FreeBSD.org/src/commit/?id=d586c978b9b4216869e589daa5bbcc33225a0e35 > > commit d586c978b9b4216869e589daa5bbcc33225a0e35 > Author: Kyle Evans > AuthorDate: 2021-10-07 01:19:47 +0000 > Commit: Kyle Evans > CommitDate: 2021-10-07 01:23:44 +0000 > > stand: fix build after recent opencrypto changes > > Pass the ivlen along through, and just drop this KASSERT() if we're > building _STANDALONE for the time being. > > Fixes: 1833d6042c9a ("crypto: Permit variable-sized IVs ...") Oof, thanks for fixing. -- John Baldwin From nobody Thu Oct 7 16:40:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6FBBB12BDCDB; Thu, 7 Oct 2021 16:40: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 4HQHB12jwqz3sZF; Thu, 7 Oct 2021 16:40: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 395F017233; Thu, 7 Oct 2021 16:40: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 197GeP7o022614; Thu, 7 Oct 2021 16:40:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197GePK7022613; Thu, 7 Oct 2021 16:40:25 GMT (envelope-from git) Date: Thu, 7 Oct 2021 16:40:25 GMT Message-Id: <202110071640.197GePK7022613@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jamie Gritton Subject: git: 1ee0746e1af0 - stable/12 - MFC uipc_shm: Fix kern.ipc.posix_shm_list for jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: 1ee0746e1af042f5c02f4121652f4ea0ec3788d3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by jamie: URL: https://cgit.FreeBSD.org/src/commit/?id=1ee0746e1af042f5c02f4121652f4ea0ec3788d3 commit 1ee0746e1af042f5c02f4121652f4ea0ec3788d3 Author: Jamie Gritton AuthorDate: 2021-09-29 17:20:36 +0000 Commit: Jamie Gritton CommitDate: 2021-10-07 16:40:16 +0000 MFC uipc_shm: Fix kern.ipc.posix_shm_list for jails Fix error return of kern.ipc.posix_shm_list, which caused it (and thus "posixshmcontrol ls") to fail for all jails that didn't happen to own the last shm object in the list. (cherry picked from commit 747a47261eee59b6e9c437cd2c1b3979df5c32ac) --- sys/kern/uipc_shm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c index 07925baa3390..ee13692d2f1c 100644 --- a/sys/kern/uipc_shm.c +++ b/sys/kern/uipc_shm.c @@ -1174,8 +1174,10 @@ sysctl_posix_shm_list(SYSCTL_HANDLER_ARGS) LIST_FOREACH(shmm, &shm_dictionary[i], sm_link) { error = shm_fill_kinfo_locked(shmm->sm_shmfd, &kif, true); - if (error == EPERM) + if (error == EPERM) { + error = 0; continue; + } if (error != 0) break; pack_kinfo(&kif); From nobody Thu Oct 7 16:56:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A2FA212BFC77; Thu, 7 Oct 2021 16:56:32 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) (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 4HQHXc3zFxz3vDC; Thu, 7 Oct 2021 16:56:32 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-oi1-f175.google.com with SMTP id o204so1670233oih.13; Thu, 07 Oct 2021 09:56:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2IpyZMv3JRGOui2WkENFUhSFHKUWrAtTBPD3fi0e+Cs=; b=craZBfK6dvytakVL62R/KZCxoGhvCZ3De4xgFRjhIP5O6L1xCwDJ5cnl1Py0FghhhD KGMaEqZdvac1xW7/5jjI0T2OJpmifHsWEMD5tQ3IfTLxTru0eUCjThVfBKWWsyMvLkJI alku2XyuNQYU1Oppv8M/FqpcPONLYZKciIFiKk95gVDCnIwsmhrbFUWxEtblUwfcroqB lg8H/rST4hCSNb0xs78eOCeT2xVC4LmsNZUXUU8w/+nAbW74hu8LOAn6EjUYEu4F/6xn TNG/Zppasz8d/53mCq5/nAtsObihiua/OuANJESg65/Il3fJhKA1OAhWhmnGhlVByz82 vcCQ== X-Gm-Message-State: AOAM533VWU6E3qGmMkhJe2zszZ2uo2R2HdYImAl+O7y1Ss54MM2tdlYQ z+sYf4C3fjp4SjanAVL/C2eU/sWCt7HV936iznUDKeIV X-Google-Smtp-Source: ABdhPJwnyVT48SHA++nYySk2jrcazGQBn4HGjdAtOGwX2GOuMe6Zqdz+3q8PHQF4uswo1VL3ea8Sz2POLl8diRxax6g= X-Received: by 2002:a54:4e94:: with SMTP id c20mr3912293oiy.57.1633625786341; Thu, 07 Oct 2021 09:56:26 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110071509.197F9kqv094488@gitrepo.freebsd.org> In-Reply-To: From: Alan Somers Date: Thu, 7 Oct 2021 10:56:15 -0600 Message-ID: Subject: Re: git: 824bbb9a4082 - main - diff: consider two files with same inodes as identical To: Mariusz Zaborski Cc: Ian Lepore , src-committers , "" , dev-commits-src-main@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4HQHXc3zFxz3vDC X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Thu, Oct 7, 2021 at 9:54 AM Mariusz Zaborski wrote: > > Like Ian said from what I know this is the way of uniquely identify the file. > We use this technique in flopen(3), pidfile_open(3) or fts(3). > > On Thu, 7 Oct 2021 at 17:40, Ian Lepore wrote: >> >> On Thu, 2021-10-07 at 09:32 -0600, Alan Somers wrote: >> > On Thu, Oct 7, 2021 at 9:09 AM Mariusz Zaborski >> > wrote: >> > > >> > > The branch main has been updated by oshogbo: >> > > >> > > URL: >> > > https://cgit.FreeBSD.org/src/commit/?id=824bbb9a40820fb62bde0a91c0f13e0b894da149 >> > > >> > > commit 824bbb9a40820fb62bde0a91c0f13e0b894da149 >> > > Author: Mariusz Zaborski >> > > AuthorDate: 2021-10-07 15:07:00 +0000 >> > > Commit: Mariusz Zaborski >> > > CommitDate: 2021-10-07 15:07:00 +0000 >> > > >> > > diff: consider two files with same inodes as identical >> > > >> > > Obtained from: OpenBSD >> > > MFC after: 1 week >> > > --- >> > > usr.bin/diff/diffreg.c | 4 ++++ >> > > 1 file changed, 4 insertions(+) >> > > >> > > diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c >> > > index fc3c3406a073..995843f9e539 100644 >> > > --- a/usr.bin/diff/diffreg.c >> > > +++ b/usr.bin/diff/diffreg.c >> > > @@ -440,6 +440,10 @@ files_differ(FILE *f1, FILE *f2, int flags) >> > > if ((flags & (D_EMPTY1|D_EMPTY2)) || stb1.st_size != >> > > stb2.st_size || >> > > (stb1.st_mode & S_IFMT) != (stb2.st_mode & S_IFMT)) >> > > return (1); >> > > + >> > > + if (stb1.st_dev == stb2.st_dev && stb1.st_ino == >> > > stb2.st_ino) >> > > + return (0); >> > > + >> > >> > Checking st_dev is not correct. It does necessarily bear any >> > relation >> > to the specific mounted file system. It might, but that's up to the >> > file system driver. fusefs, for example, allows the server to >> > populate that field with whatever it damn well pleases. diff should >> > use statfs instead, and check the f_fsid field. That would probably >> > work. >> > -Alan >> >> That may be a fusefs bug, then. Posix states >> >> The st_ino and st_dev fields taken together uniquely identify the >> file within the system. >> >> And I've seen real-world code more than once that uses st_dev equality >> to decide whether to rename versus copy-and-delete a file. >> >> -- Ian Nevermind, I was confusing st_dev with st_rdev. Everything's fine, and this looks like a good optimization. From nobody Thu Oct 7 17:41:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CB35812D4E6B; Thu, 7 Oct 2021 17:41: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 4HQJXd5SGsz4TZ4; Thu, 7 Oct 2021 17:41: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 9C8A417E3E; Thu, 7 Oct 2021 17:41: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 197Hfblr003359; Thu, 7 Oct 2021 17:41:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197HfbxF003358; Thu, 7 Oct 2021 17:41:37 GMT (envelope-from git) Date: Thu, 7 Oct 2021 17:41:37 GMT Message-Id: <202110071741.197HfbxF003358@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: d55574c91830 - stable/12 - ICMP checksum test: Fix for big endian List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: d55574c91830d12b308664e4a165accffad22e06 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=d55574c91830d12b308664e4a165accffad22e06 commit d55574c91830d12b308664e4a165accffad22e06 Author: Charlie Root AuthorDate: 2021-01-12 01:56:12 +0000 Commit: Alan Somers CommitDate: 2021-10-07 17:38:50 +0000 ICMP checksum test: Fix for big endian The in_cksum tests originally tried to simulate a BE environment by swapping the byte order of the input. But that's overcomplicated, and didn't actually work on real BE hardware. The correct testing strategy is just to test on the native endianness, and run the tests in both BE and LE environments. Submitted by: Renato Riolino Reviewed By: asomers Differential Revision: https://reviews.freebsd.org/D23193 (cherry picked from commit 292808246db702b9194deb8938e40fd06914aea9) --- sbin/ping/tests/in_cksum_test.c | 84 ++++++++++------------------------------- 1 file changed, 20 insertions(+), 64 deletions(-) diff --git a/sbin/ping/tests/in_cksum_test.c b/sbin/ping/tests/in_cksum_test.c index fc266545b432..597f6ac20722 100644 --- a/sbin/ping/tests/in_cksum_test.c +++ b/sbin/ping/tests/in_cksum_test.c @@ -39,92 +39,52 @@ __FBSDID("$FreeBSD$"); * Test cases. */ -ATF_TC_WITHOUT_HEAD(aligned_even_length_big_endian); -ATF_TC_BODY(aligned_even_length_big_endian, tc) +ATF_TC_WITHOUT_HEAD(aligned_even_length); +ATF_TC_BODY(aligned_even_length, tc) { u_char data[] __aligned(sizeof(u_short)) = {0x12, 0x34, 0x56, 0x78}; u_short sum; sum = in_cksum(data, nitems(data)); - ATF_REQUIRE(sum == 0x5397); + u_char *c_sum = (u_char *)∑ + ATF_REQUIRE(c_sum[0] == 0x97 && c_sum[1] == 0x53); } -ATF_TC_WITHOUT_HEAD(aligned_odd_length_big_endian); -ATF_TC_BODY(aligned_odd_length_big_endian, tc) +ATF_TC_WITHOUT_HEAD(aligned_odd_length); +ATF_TC_BODY(aligned_odd_length, tc) { u_char data[] __aligned(sizeof(u_short)) = {0x12, 0x34, 0x56, 0x78, 0x9a}; u_short sum; sum = in_cksum(data, nitems(data)); - ATF_REQUIRE(sum == 0x52fd); + u_char *c_sum = (u_char *)∑ + ATF_REQUIRE(c_sum[0] == 0xfd && c_sum[1] == 0x52); } -ATF_TC_WITHOUT_HEAD(aligned_even_length_little_endian); -ATF_TC_BODY(aligned_even_length_little_endian, tc) -{ - u_char data[] __aligned(sizeof(u_short)) = - {0x34, 0x12, 0x78, 0x56}; - u_short sum; - - sum = in_cksum(data, nitems(data)); - ATF_REQUIRE_MSG(sum == 0x9753, "%d", sum); -} - -ATF_TC_WITHOUT_HEAD(aligned_odd_length_little_endian); -ATF_TC_BODY(aligned_odd_length_little_endian, tc) -{ - u_char data[] __aligned(sizeof(u_short)) = - {0x34, 0x12, 0x78, 0x56, 0x00, 0x9a}; - u_short sum; - - sum = in_cksum(data, nitems(data)); - ATF_REQUIRE(sum == 0xfd52); -} - -ATF_TC_WITHOUT_HEAD(unaligned_even_length_big_endian); -ATF_TC_BODY(unaligned_even_length_big_endian, tc) +ATF_TC_WITHOUT_HEAD(unaligned_even_length); +ATF_TC_BODY(unaligned_even_length, tc) { u_char data[] __aligned(sizeof(u_short)) = {0x00, 0x12, 0x34, 0x56, 0x78}; u_short sum; sum = in_cksum(data + 1, nitems(data) - 1); - ATF_REQUIRE(sum == 0x5397); + u_char *c_sum = (u_char *)∑ + ATF_REQUIRE(c_sum[0] == 0x97 && c_sum[1] == 0x53); } -ATF_TC_WITHOUT_HEAD(unaligned_odd_length_big_endian); -ATF_TC_BODY(unaligned_odd_length_big_endian, tc) +ATF_TC_WITHOUT_HEAD(unaligned_odd_length); +ATF_TC_BODY(unaligned_odd_length, tc) { u_char data[] __aligned(sizeof(u_short)) = {0x00, 0x12, 0x34, 0x56, 0x78, 0x9a}; u_short sum; sum = in_cksum(data + 1, nitems(data) - 1); - ATF_REQUIRE(sum == 0x52fd); -} - -ATF_TC_WITHOUT_HEAD(unaligned_even_length_little_endian); -ATF_TC_BODY(unaligned_even_length_little_endian, tc) -{ - u_char data[] __aligned(sizeof(u_short)) = - {0x00, 0x34, 0x12, 0x78, 0x56}; - u_short sum; - - sum = in_cksum(data + 1, nitems(data) - 1); - ATF_REQUIRE_MSG(sum == 0x9753, "%d", sum); -} - -ATF_TC_WITHOUT_HEAD(unaligned_odd_length_little_endian); -ATF_TC_BODY(unaligned_odd_length_little_endian, tc) -{ - u_char data[] __aligned(sizeof(u_short)) = - {0x00, 0x34, 0x12, 0x78, 0x56, 0x00, 0x9a}; - u_short sum; - - sum = in_cksum(data + 1, nitems(data) - 1); - ATF_REQUIRE(sum == 0xfd52); + u_char *c_sum = (u_char *)∑ + ATF_REQUIRE(c_sum[0] == 0xfd && c_sum[1] == 0x52); } /* @@ -133,14 +93,10 @@ ATF_TC_BODY(unaligned_odd_length_little_endian, tc) ATF_TP_ADD_TCS(tp) { - ATF_TP_ADD_TC(tp, aligned_even_length_big_endian); - ATF_TP_ADD_TC(tp, aligned_odd_length_big_endian); - ATF_TP_ADD_TC(tp, aligned_even_length_little_endian); - ATF_TP_ADD_TC(tp, aligned_odd_length_little_endian); - ATF_TP_ADD_TC(tp, unaligned_even_length_big_endian); - ATF_TP_ADD_TC(tp, unaligned_odd_length_big_endian); - ATF_TP_ADD_TC(tp, unaligned_even_length_little_endian); - ATF_TP_ADD_TC(tp, unaligned_odd_length_little_endian); + ATF_TP_ADD_TC(tp, aligned_even_length); + ATF_TP_ADD_TC(tp, aligned_odd_length); + ATF_TP_ADD_TC(tp, unaligned_even_length); + ATF_TP_ADD_TC(tp, unaligned_odd_length); return (atf_no_error()); } From nobody Thu Oct 7 19:01:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DF24812DFACC; Thu, 7 Oct 2021 19:01: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 4HQLKG623qz4g6K; Thu, 7 Oct 2021 19:01: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 AEBE118F3E; Thu, 7 Oct 2021 19:01: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 197J1sKE013954; Thu, 7 Oct 2021 19:01:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197J1sNS013953; Thu, 7 Oct 2021 19:01:54 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:01:54 GMT Message-Id: <202110071901.197J1sNS013953@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: 90dedf0fef71 - main - pfctl: Remove unused variable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 90dedf0fef71d3e3081015525665bf335f9c7ee3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=90dedf0fef71d3e3081015525665bf335f9c7ee3 commit 90dedf0fef71d3e3081015525665bf335f9c7ee3 Author: Kristof Provost AuthorDate: 2021-09-30 15:25:45 +0000 Commit: Kristof Provost CommitDate: 2021-10-07 17:50:01 +0000 pfctl: Remove unused variable MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sbin/pfctl/parse.y | 1 - sbin/pfctl/pfctl_parser.h | 1 - 2 files changed, 2 deletions(-) diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y index 89d5f330da47..4be7bd16649a 100644 --- a/sbin/pfctl/parse.y +++ b/sbin/pfctl/parse.y @@ -858,7 +858,6 @@ pfa_anchor : '{' /* steping into a brace anchor */ pf->asd++; pf->bn++; - pf->brace = 1; /* create a holding ruleset in the root */ snprintf(ta, PF_ANCHOR_NAME_SIZE, "_%d", pf->bn); diff --git a/sbin/pfctl/pfctl_parser.h b/sbin/pfctl/pfctl_parser.h index 484830c61791..4e144b97567b 100644 --- a/sbin/pfctl/pfctl_parser.h +++ b/sbin/pfctl/pfctl_parser.h @@ -82,7 +82,6 @@ struct pfctl { int loadopt; int asd; /* anchor stack depth */ int bn; /* brace number */ - int brace; int tdirty; /* kernel dirty */ #define PFCTL_ANCHOR_STACK_DEPTH 64 struct pfctl_anchor *astack[PFCTL_ANCHOR_STACK_DEPTH]; From nobody Thu Oct 7 19:01:55 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4EBF812DF7FF; Thu, 7 Oct 2021 19:01: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 4HQLKJ0hbnz4fwG; Thu, 7 Oct 2021 19:01: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 CF476190B8; Thu, 7 Oct 2021 19:01: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 197J1tna013982; Thu, 7 Oct 2021 19:01:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197J1tkZ013981; Thu, 7 Oct 2021 19:01:55 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:01:55 GMT Message-Id: <202110071901.197J1tkZ013981@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: 76c2e71c4c65 - main - pf: remove unused field from pf_kanchor List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 76c2e71c4c65a85279505005716aa43101c47bf7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=76c2e71c4c65a85279505005716aa43101c47bf7 commit 76c2e71c4c65a85279505005716aa43101c47bf7 Author: Kristof Provost AuthorDate: 2021-10-04 08:58:27 +0000 Commit: Kristof Provost CommitDate: 2021-10-07 17:50:22 +0000 pf: remove unused field from pf_kanchor The 'match' field is only used in the userspace version of the struct (pf_anchor). MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/net/pfvar.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h index ba5a2d341172..9fa1da8b5c07 100644 --- a/sys/net/pfvar.h +++ b/sys/net/pfvar.h @@ -1057,7 +1057,6 @@ struct pf_kanchor { char path[MAXPATHLEN]; struct pf_kruleset ruleset; int refcnt; /* anchor rules */ - int match; /* XXX: used for pfctl black magic */ }; RB_PROTOTYPE(pf_kanchor_global, pf_kanchor, entry_global, pf_anchor_compare); RB_PROTOTYPE(pf_kanchor_node, pf_kanchor, entry_node, pf_kanchor_compare); From nobody Thu Oct 7 19:26:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C9B8517E26EA; Thu, 7 Oct 2021 19:26: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 4HQLsn54wKz4jDN; Thu, 7 Oct 2021 19:26: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 8AEE51933B; Thu, 7 Oct 2021 19:26: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 197JQbmo041121; Thu, 7 Oct 2021 19:26:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197JQbZg041120; Thu, 7 Oct 2021 19:26:37 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:26:37 GMT Message-Id: <202110071926.197JQbZg041120@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: a09e037bc30b - stable/12 - daemon: add some basic tests List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: a09e037bc30b8a76cb7007bc4883d62e64c90e0b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=a09e037bc30b8a76cb7007bc4883d62e64c90e0b commit a09e037bc30b8a76cb7007bc4883d62e64c90e0b Author: Alan Somers AuthorDate: 2021-03-17 16:35:00 +0000 Commit: Alan Somers CommitDate: 2021-10-07 17:42:37 +0000 daemon: add some basic tests Sponsored by: Axcient Differential Revision: https://reviews.freebsd.org/D29316 (cherry picked from commit 3b57d80c7aa924ed0fad565591f5292c2ac88da5) --- etc/mtree/BSD.tests.dist | 2 + usr.sbin/daemon/Makefile | 5 + usr.sbin/daemon/tests/Makefile | 7 ++ usr.sbin/daemon/tests/daemon_test.sh | 224 +++++++++++++++++++++++++++++++++++ 4 files changed, 238 insertions(+) diff --git a/etc/mtree/BSD.tests.dist b/etc/mtree/BSD.tests.dist index 207020665689..b25dfe78f0a2 100644 --- a/etc/mtree/BSD.tests.dist +++ b/etc/mtree/BSD.tests.dist @@ -1084,6 +1084,8 @@ usr.sbin chown .. + daemon + .. etcupdate .. extattr diff --git a/usr.sbin/daemon/Makefile b/usr.sbin/daemon/Makefile index eb0d50280161..0bf34c351932 100644 --- a/usr.sbin/daemon/Makefile +++ b/usr.sbin/daemon/Makefile @@ -5,4 +5,9 @@ MAN= daemon.8 LIBADD= util +.include + +HAS_TESTS= +SUBDIR.${MK_TESTS}+= tests + .include diff --git a/usr.sbin/daemon/tests/Makefile b/usr.sbin/daemon/tests/Makefile new file mode 100644 index 000000000000..c687361ec4e7 --- /dev/null +++ b/usr.sbin/daemon/tests/Makefile @@ -0,0 +1,7 @@ +# $FreeBSD$ + +PACKAGE= tests + +ATF_TESTS_SH= daemon_test + +.include diff --git a/usr.sbin/daemon/tests/daemon_test.sh b/usr.sbin/daemon/tests/daemon_test.sh new file mode 100644 index 000000000000..ab5d86e0e71b --- /dev/null +++ b/usr.sbin/daemon/tests/daemon_test.sh @@ -0,0 +1,224 @@ +#!/bin/sh +# +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# Copyright (c) 2021 Axcient +# +# 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. + +# $FreeBSD$ + +atf_test_case both_pidfile cleanup +both_pidfile_head() { + atf_set "descr" "daemon should write pid files for itself and its child" +} +both_pidfile_body() { + daemon -P daemon.pid -p sleep.pid sleep 300 + atf_check -s exit:0 test -f daemon.pid + atf_check -s exit:0 -o match:"daemon: sleep" ps -p `cat daemon.pid` + atf_check -s exit:0 test -f sleep.pid + atf_check -s exit:0 -o match:"[0-9] sleep 300$" ps -p `cat sleep.pid` +} +both_pidfile_cleanup() { + if [ -f daemon.pid ]; then + daemon_pid=`cat daemon.pid` + fi + if [ -f sleep_pid ]; then + sleep_pid=`cat sleep.pid` + fi + [ -n "$sleep_pid" ] && kill $sleep_pid + # NB: killing the sleep should kill the daemon too, so we musn't fail + # the test if the second kill fails with ESRCH + [ -n "$daemon_pid" ] && kill $daemon_pid || true +} + +atf_test_case chdir cleanup +chdir_head() { + atf_set "descr" "daemon should chdir to /" +} +chdir_body() { + # Executing sleep by relative path will only work from / + daemon -p ${PWD}/sleep.pid -c bin/sleep 300 + atf_check -s exit:0 test -f sleep.pid + atf_check -s exit:0 -o match:"[0-9] bin/sleep 300$" \ + ps -p `cat sleep.pid` +} +chdir_cleanup() { + [ -f sleep.pid ] && kill `cat sleep.pid` +} + +atf_test_case child_pidfile cleanup +child_pidfile_head() { + atf_set "descr" "daemon should write its child's pid to a pidfile" +} +child_pidfile_body() { + daemon -p sleep.pid sleep 300 + atf_check -s exit:0 test -f sleep.pid + atf_check -s exit:0 -o match:"[0-9] sleep 300$" ps -p `cat sleep.pid` +} +child_pidfile_cleanup() { + [ -f sleep.pid ] && kill `cat sleep.pid` +} + +atf_test_case child_pidfile_lock cleanup +child_pidfile_lock_head() { + atf_set "descr" "daemon should refuse to clobber an existing child" +} +child_pidfile_lock_body() { + daemon -p sleep.pid sleep 300 + atf_check -s exit:0 test -f sleep.pid + atf_check -s not-exit:0 -e match:"process already running" \ + daemon -p sleep.pid sleep 300 +} +child_pidfile_lock_cleanup() { + [ -f sleep.pid ] && kill `cat sleep.pid` +} + +atf_test_case newsyslog cleanup +newsyslog_head() { + atf_set "descr" "daemon should close and reopen the output file on SIGHUP" +} +newsyslog_body() { + cat > child.sh < expected_file + atf_check -s exit:0 cmp output_file expected_file +} + +atf_test_case restart_child cleanup +restart_child_head() { + atf_set "descr" "daemon should restart a dead child" +} +restart_child_body() { + daemon -rP daemon.pid -p sleep.pid sleep 300 + atf_check -s exit:0 test -f daemon.pid + atf_check -s exit:0 test -f sleep.pid + orig_sleep_pid=`cat sleep.pid` + kill $orig_sleep_pid + # Wait up to 10s for the daemon to restart the child. + for t in `seq 0 0.1 10`; do + new_sleep_pid=`cat sleep.pid` + [ "$orig_sleep_pid" -ne "$new_sleep_pid" ] && break + sleep 0.1 + done + [ "$orig_sleep_pid" -ne "$new_sleep_pid" ] || \ + atf_fail "child was not restarted" + +} +restart_child_cleanup() { + [ -f daemon.pid ] && kill `cat daemon.pid` +} + +atf_test_case supervisor_pidfile cleanup +supervisor_pidfile_head() { + atf_set "descr" "daemon should write its own pid to a pidfile" +} +supervisor_pidfile_body() { + daemon -P daemon.pid sleep 300 + atf_check -s exit:0 test -f daemon.pid + atf_check -s exit:0 -o match:"daemon: sleep" ps -p `cat daemon.pid` +} +supervisor_pidfile_cleanup() { + [ -f daemon.pid ] && kill `cat daemon.pid` +} + +atf_test_case supervisor_pidfile_lock cleanup +supervisor_pidfile_lock_head() { + atf_set "descr" "daemon should refuse to clobber an existing instance" +} +supervisor_pidfile_lock_body() { + daemon -P daemon.pid sleep 300 + atf_check -s exit:0 test -f daemon.pid + atf_check -s not-exit:0 -e match:"process already running" \ + daemon -p daemon.pid sleep 300 +} +supervisor_pidfile_lock_cleanup() { + [ -f daemon.pid ] && kill `cat daemon.pid` +} + +atf_test_case title cleanup +title_head() { + atf_set "descr" "daemon should change its process title" +} +title_body() { + daemon -P daemon.pid -t "I'm a title!" sleep 300 + atf_check -s exit:0 test -f daemon.pid + atf_check -s exit:0 -o match:"daemon: I'm a title!" \ + ps -p `cat daemon.pid` +} +title_cleanup() { + [ -f daemon.pid ] && kill `cat daemon.pid` +} + +atf_test_case user cleanup +user_head() { + atf_set "descr" "daemon should drop privileges" + atf_set "require.user" "root" +} +user_body() { + daemon -p sleep.pid -u nobody sleep 300 + atf_check -s exit:0 test -f sleep.pid + atf_check -s exit:0 -o match:"^nobody" ps -up `cat sleep.pid` +} +user_cleanup() { + [ -f sleep.pid ] && kill `cat sleep.pid` +} + + +atf_init_test_cases() { + atf_add_test_case both_pidfile + atf_add_test_case chdir + atf_add_test_case child_pidfile + atf_add_test_case child_pidfile_lock + atf_add_test_case newsyslog + atf_add_test_case output_file + atf_add_test_case restart_child + atf_add_test_case supervisor_pidfile + atf_add_test_case supervisor_pidfile_lock + atf_add_test_case title + atf_add_test_case user +} From nobody Thu Oct 7 19:31:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6831317E3E3E; Thu, 7 Oct 2021 19:31: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 4HQLzR27fMz4ksQ; Thu, 7 Oct 2021 19:31: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 1F2CB195B1; Thu, 7 Oct 2021 19:31: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 197JVVMi053515; Thu, 7 Oct 2021 19:31:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197JVVI9053514; Thu, 7 Oct 2021 19:31:31 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:31:31 GMT Message-Id: <202110071931.197JVVI9053514@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: 09be14a7b80d - stable/12 - gmultipath: make physpath distinct from the underlying providers' List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: 09be14a7b80d75e39faf01596583ad4ed18e3232 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=09be14a7b80d75e39faf01596583ad4ed18e3232 commit 09be14a7b80d75e39faf01596583ad4ed18e3232 Author: Alan Somers AuthorDate: 2021-04-22 21:09:03 +0000 Commit: Alan Somers CommitDate: 2021-10-07 19:27:13 +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 f5fe539a879c..7a8c88ab61fc 100644 --- a/sys/geom/multipath/g_multipath.c +++ b/sys/geom/multipath/g_multipath.c @@ -393,6 +393,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 nobody Thu Oct 7 19:41:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2AD4817E619B; Thu, 7 Oct 2021 19:41: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 4HQMCK0Yr0z4mYX; Thu, 7 Oct 2021 19:41: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 E8CBA19A51; Thu, 7 Oct 2021 19:41: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 197Jfmfl067060; Thu, 7 Oct 2021 19:41:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197JfmOk067059; Thu, 7 Oct 2021 19:41:48 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:41:48 GMT Message-Id: <202110071941.197JfmOk067059@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: 7dcb5db451b6 - stable/12 - vinvalbuf: do not panic if we were unable to flush dirty buffers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: 7dcb5db451b66aa277bd59c61c18a5053c658915 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=7dcb5db451b66aa277bd59c61c18a5053c658915 commit 7dcb5db451b66aa277bd59c61c18a5053c658915 Author: Konstantin Belousov AuthorDate: 2021-05-30 16:52:42 +0000 Commit: Alan Somers CommitDate: 2021-10-07 19:34:19 +0000 vinvalbuf: do not panic if we were unable to flush dirty buffers Return EBUSY instead and let caller to handle the issue. For vgone()/vnode reclamation, caller first does vinvalbuf(V_SAVE), which return EBUSY in case dirty buffers where not flushed. Then caller calls vinvalbuf(0) due to non-zero return, which gets rid of all dirty buffers without dependencies. PR: 238565 Reviewed by: asomers, mckusick Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D30555 (cherry picked from commit 27006229f7a40a18a61a0e8fd270bc583326b690) fusefs: reenable the WriteCluster.cluster_write_err test The underlying panic was just fixed by revision 27006229f7a40a18a61a0e8fd270bc583326b690 PR: 238565 (cherry picked from commit 425bbe9e64f7af6bdb30a099bd90a32885de1ab8) --- sys/kern/vfs_subr.c | 10 ++++------ tests/sys/fs/fusefs/write.cc | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 15ea8a1275c9..5f0c467c87e6 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1742,13 +1742,11 @@ bufobj_invalbuf(struct bufobj *bo, int flags, int slpflag, int slptimeo) BO_UNLOCK(bo); if ((error = BO_SYNC(bo, MNT_WAIT)) != 0) return (error); - /* - * XXX We could save a lock/unlock if this was only - * enabled under INVARIANTS - */ BO_LOCK(bo); - if (bo->bo_numoutput > 0 || bo->bo_dirty.bv_cnt > 0) - panic("vinvalbuf: dirty bufs"); + if (bo->bo_numoutput > 0 || bo->bo_dirty.bv_cnt > 0) { + BO_UNLOCK(bo); + return (EBUSY); + } } } /* diff --git a/tests/sys/fs/fusefs/write.cc b/tests/sys/fs/fusefs/write.cc index e9bf17c5c4d6..e3fbbf072911 100644 --- a/tests/sys/fs/fusefs/write.cc +++ b/tests/sys/fs/fusefs/write.cc @@ -793,10 +793,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 nobody Thu Oct 7 19:45:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 85ED217E7694; Thu, 7 Oct 2021 19:45: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 4HQMHm3N05z4p7H; Thu, 7 Oct 2021 19:45: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 4FC7819A69; Thu, 7 Oct 2021 19:45: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 197Jjebn068206; Thu, 7 Oct 2021 19:45:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197JjePm068205; Thu, 7 Oct 2021 19:45:40 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:45:40 GMT Message-Id: <202110071945.197JjePm068205@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: 8461b8f7efa2 - stable/12 - periodic: by default, skip 221.backup-gpart in jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: 8461b8f7efa2ea118e19e6702dd3a3f1de9b1a69 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=8461b8f7efa2ea118e19e6702dd3a3f1de9b1a69 commit 8461b8f7efa2ea118e19e6702dd3a3f1de9b1a69 Author: Alan Somers AuthorDate: 2021-06-18 14:33:08 +0000 Commit: Alan Somers CommitDate: 2021-10-07 19:45:32 +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> (cherry picked from commit fcf2227a557552e45646bbcf2422a98baab5c8a8) --- 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 nobody Thu Oct 7 19:46:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6D6BA17E79E4; Thu, 7 Oct 2021 19: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 4HQMK92fY4z4pdK; Thu, 7 Oct 2021 19: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 3B12C19AA8; Thu, 7 Oct 2021 19: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 197JkrM7068418; Thu, 7 Oct 2021 19: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 197Jkrl9068417; Thu, 7 Oct 2021 19:46:53 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:46:53 GMT Message-Id: <202110071946.197Jkrl9068417@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: 0cd92f24011b - stable/12 - ses: Correct spelling of "Temperature Sensor" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: 0cd92f24011ba3aa400c5fdf906f9bf6e30976c8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=0cd92f24011ba3aa400c5fdf906f9bf6e30976c8 commit 0cd92f24011ba3aa400c5fdf906f9bf6e30976c8 Author: Alan Somers AuthorDate: 2021-08-30 19:59:32 +0000 Commit: Alan Somers CommitDate: 2021-10-07 19:46:31 +0000 ses: Correct spelling of "Temperature Sensor" According to SES 4 revision 2 table 71, it should be singular. Sponsored by: Axcient (cherry picked from commit 1fb52e4373e7f645d71059a6a403469f059044c8) --- share/examples/ses/srcs/eltsub.c | 2 +- sys/cam/scsi/scsi_enc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/share/examples/ses/srcs/eltsub.c b/share/examples/ses/srcs/eltsub.c index c664895b054c..0dfded94a583 100644 --- a/share/examples/ses/srcs/eltsub.c +++ b/share/examples/ses/srcs/eltsub.c @@ -62,7 +62,7 @@ geteltnm(int type) sprintf(rbuf, "Cooling"); break; case ELMTYP_THERM: - sprintf(rbuf, "Temperature Sensors"); + sprintf(rbuf, "Temperature Sensor"); break; case ELMTYP_DOORLOCK: sprintf(rbuf, "Door Lock"); diff --git a/sys/cam/scsi/scsi_enc.h b/sys/cam/scsi/scsi_enc.h index f9abe099e337..cafec644bde4 100644 --- a/sys/cam/scsi/scsi_enc.h +++ b/sys/cam/scsi/scsi_enc.h @@ -130,7 +130,7 @@ typedef enum { "Device Slot", \ "Power Supply", \ "Cooling", \ - "Temperature Sensors", \ + "Temperature Sensor", \ "Door", \ "Audible alarm", \ "Enclosure Services Controller Electronics", \ From nobody Thu Oct 7 19:49:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6583117E7FEA; Thu, 7 Oct 2021 19:49: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 4HQMN00z4Hz4px3; Thu, 7 Oct 2021 19:49: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 F182B19A6B; Thu, 7 Oct 2021 19:49: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 197JnJS7068683; Thu, 7 Oct 2021 19:49:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197JnJX7068682; Thu, 7 Oct 2021 19:49:19 GMT (envelope-from git) Date: Thu, 7 Oct 2021 19:49:19 GMT Message-Id: <202110071949.197JnJX7068682@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: 4bfc58be8696 - stable/12 - ses: Guard the elm_type_names declaration by _KERNEL List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: 4bfc58be8696f50390aeaa25d26709fc6a7646a8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=4bfc58be8696f50390aeaa25d26709fc6a7646a8 commit 4bfc58be8696f50390aeaa25d26709fc6a7646a8 Author: Alan Somers AuthorDate: 2021-08-30 20:45:13 +0000 Commit: Alan Somers CommitDate: 2021-10-07 19:47:27 +0000 ses: Guard the elm_type_names declaration by _KERNEL Sponsored by: Axcient (cherry picked from commit cc2d08d3880c2e726849ab2aa23b3d15f8aa3938) --- sys/cam/scsi/scsi_enc.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/cam/scsi/scsi_enc.h b/sys/cam/scsi/scsi_enc.h index cafec644bde4..b816a6a5d4cd 100644 --- a/sys/cam/scsi/scsi_enc.h +++ b/sys/cam/scsi/scsi_enc.h @@ -154,7 +154,9 @@ typedef enum { "SAS Connector" \ } +#ifdef _KERNEL extern const char *elm_type_names[]; +#endif typedef struct encioc_element { /* Element Index */ From nobody Thu Oct 7 20:00:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A55AF17EAAFD; Thu, 7 Oct 2021 20:00: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 4HQMd04LTqz4rrk; Thu, 7 Oct 2021 20:00: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 7607819B36; Thu, 7 Oct 2021 20:00: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 197K0agi091072; Thu, 7 Oct 2021 20:00:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197K0aYs091071; Thu, 7 Oct 2021 20:00:36 GMT (envelope-from git) Date: Thu, 7 Oct 2021 20:00:36 GMT Message-Id: <202110072000.197K0aYs091071@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: c858f3d89b3c - stable/12 - fusefs: don't panic if FUSE_GETATTR fails durint VOP_GETPAGES List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/12 X-Git-Reftype: branch X-Git-Commit: c858f3d89b3c92cf3c0962c976dc6bd322ad8b9b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=c858f3d89b3c92cf3c0962c976dc6bd322ad8b9b commit c858f3d89b3c92cf3c0962c976dc6bd322ad8b9b Author: Konstantin Belousov AuthorDate: 2021-09-16 23:53:58 +0000 Commit: Alan Somers CommitDate: 2021-10-07 19:51:35 +0000 fusefs: don't panic if FUSE_GETATTR fails durint VOP_GETPAGES During VOP_GETPAGES, fusefs needs to determine the file's length, which could require a FUSE_GETATTR operation. If that fails, it's better to SIGBUS than panic. Sponsored by: Axcient Reviewed by: markj, kib Differential Revision: https://reviews.freebsd.org/D31994 (cherry picked from commit 4f917847c9037d9b76de188c03e13b81224431b2) buffer pager: allow get_blksize method to return error Reported and reviewed by: asomers Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D31998 (cherry picked from commit 197a4f29f39e6ae6215a6dbd28ef449d305e6d49) --- sys/fs/cd9660/cd9660_vnops.c | 5 +- sys/fs/fuse/fuse_vnops.c | 21 +++--- sys/fs/msdosfs/msdosfs_vnops.c | 5 +- sys/fs/nfsclient/nfs_clbio.c | 5 +- sys/kern/vfs_bio.c | 16 +++-- sys/sys/buf.h | 2 +- sys/ufs/ffs/ffs_vnops.c | 5 +- tests/sys/fs/fusefs/read.cc | 156 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 189 insertions(+), 26 deletions(-) diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c index 27a186964a80..2007b62087a4 100644 --- a/sys/fs/cd9660/cd9660_vnops.c +++ b/sys/fs/cd9660/cd9660_vnops.c @@ -859,12 +859,13 @@ cd9660_gbp_getblkno(struct vnode *vp, vm_ooffset_t off) } static int -cd9660_gbp_getblksz(struct vnode *vp, daddr_t lbn) +cd9660_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *sz) { struct iso_node *ip; ip = VTOI(vp); - return (blksize(ip->i_mnt, ip, lbn)); + *sz = blksize(ip->i_mnt, ip, lbn); + return (0); } static int diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index 9e79a376cccd..d13ae257e0a8 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -1961,25 +1961,24 @@ fuse_gbp_getblkno(struct vnode *vp, vm_ooffset_t off) } static int -fuse_gbp_getblksz(struct vnode *vp, daddr_t lbn) +fuse_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *blksz) { off_t filesize; - int blksz, err; + int err; const int biosize = fuse_iosize(vp); err = fuse_vnode_size(vp, &filesize, NULL, NULL); - KASSERT(err == 0, ("vfs_bio_getpages can't handle errors here")); - if (err) - return biosize; - - if ((off_t)lbn * biosize >= filesize) { - blksz = 0; + if (err) { + /* This will turn into a SIGBUS */ + return (EIO); + } else if ((off_t)lbn * biosize >= filesize) { + *blksz = 0; } else if ((off_t)(lbn + 1) * biosize > filesize) { - blksz = filesize - (off_t)lbn *biosize; + *blksz = filesize - (off_t)lbn *biosize; } else { - blksz = biosize; + *blksz = biosize; } - return (blksz); + return (0); } /* diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c index d700f6a62d5c..c93754a0e251 100644 --- a/sys/fs/msdosfs/msdosfs_vnops.c +++ b/sys/fs/msdosfs/msdosfs_vnops.c @@ -1805,10 +1805,11 @@ msdosfs_gbp_getblkno(struct vnode *vp, vm_ooffset_t off) } static int -msdosfs_gbp_getblksz(struct vnode *vp, daddr_t lbn) +msdosfs_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *sz) { - return (VTODE(vp)->de_pmp->pm_bpcluster); + *sz = VTODE(vp)->de_pmp->pm_bpcluster; + return (0); } static int diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index 5ba75491a800..c61cb1db9b95 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -94,7 +94,7 @@ ncl_gbp_getblkno(struct vnode *vp, vm_ooffset_t off) } static int -ncl_gbp_getblksz(struct vnode *vp, daddr_t lbn) +ncl_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *sz) { struct nfsnode *np; u_quad_t nsize; @@ -111,7 +111,8 @@ ncl_gbp_getblksz(struct vnode *vp, daddr_t lbn) bcount = 0; else if ((off_t)(lbn + 1) * biosize > nsize) bcount = nsize - (off_t)lbn * biosize; - return (bcount); + *sz = bcount; + return (0); } int diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 6c5286d30871..d58a13cf43e1 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -5143,8 +5143,8 @@ vfs_bio_getpages(struct vnode *vp, vm_page_t *ma, int count, struct mount *mp; daddr_t lbn, lbnp; vm_ooffset_t la, lb, poff, poffe; - long bsize; - int bo_bs, br_flags, error, i, pgsin, pgsin_a, pgsin_b; + long bo_bs, bsize; + int br_flags, error, i, pgsin, pgsin_a, pgsin_b; bool redo, lpart; object = vp->v_object; @@ -5161,7 +5161,10 @@ vfs_bio_getpages(struct vnode *vp, vm_page_t *ma, int count, */ la += PAGE_SIZE; lpart = la > object->un_pager.vnp.vnp_size; - bo_bs = get_blksize(vp, get_lblkno(vp, IDX_TO_OFF(ma[0]->pindex))); + error = get_blksize(vp, get_lblkno(vp, IDX_TO_OFF(ma[0]->pindex)), + &bo_bs); + if (error != 0) + return (VM_PAGER_ERROR); /* * Calculate read-ahead, behind and total pages. @@ -5219,9 +5222,10 @@ again: goto next_page; lbnp = lbn; - bsize = get_blksize(vp, lbn); - error = bread_gb(vp, lbn, bsize, curthread->td_ucred, - br_flags, &bp); + error = get_blksize(vp, lbn, &bsize); + if (error == 0) + error = bread_gb(vp, lbn, bsize, + curthread->td_ucred, br_flags, &bp); if (error != 0) goto end_pages; if (bp->b_rcred == curthread->td_ucred) { diff --git a/sys/sys/buf.h b/sys/sys/buf.h index 89c11a36bb42..2530a3540c23 100644 --- a/sys/sys/buf.h +++ b/sys/sys/buf.h @@ -576,7 +576,7 @@ void bwait(struct buf *, u_char, const char *); void bdone(struct buf *); typedef daddr_t (vbg_get_lblkno_t)(struct vnode *, vm_ooffset_t); -typedef int (vbg_get_blksize_t)(struct vnode *, daddr_t); +typedef int (vbg_get_blksize_t)(struct vnode *, daddr_t, long *); int vfs_bio_getpages(struct vnode *vp, struct vm_page **ma, int count, int *rbehind, int *rahead, vbg_get_lblkno_t get_lblkno, vbg_get_blksize_t get_blksize); diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index 9dae437f9a76..b7357cf0ecab 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -1739,10 +1739,11 @@ ffs_gbp_getblkno(struct vnode *vp, vm_ooffset_t off) } static int -ffs_gbp_getblksz(struct vnode *vp, daddr_t lbn) +ffs_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *sz) { - return (blksize(VFSTOUFS(vp->v_mount)->um_fs, VTOI(vp), lbn)); + *sz = blksize(VFSTOUFS(vp->v_mount)->um_fs, VTOI(vp), lbn); + return (0); } static int diff --git a/tests/sys/fs/fusefs/read.cc b/tests/sys/fs/fusefs/read.cc index 22a26c2701fd..cb82d0a43b06 100644 --- a/tests/sys/fs/fusefs/read.cc +++ b/tests/sys/fs/fusefs/read.cc @@ -40,6 +40,8 @@ extern "C" { #include #include #include +#include +#include #include } @@ -103,6 +105,33 @@ class ReadAhead: public Read, } }; +class ReadSigbus: public Read +{ +public: +static jmp_buf s_jmpbuf; +static sig_atomic_t s_si_addr; + +void TearDown() { + struct sigaction sa; + + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sigaction(SIGBUS, &sa, NULL); + + FuseTest::TearDown(); +} + +}; + +static void +handle_sigbus(int signo __unused, siginfo_t *info, void *uap __unused) { + ReadSigbus::s_si_addr = (sig_atomic_t)info->si_addr; + longjmp(ReadSigbus::s_jmpbuf, 1); +} + +jmp_buf ReadSigbus::s_jmpbuf; +sig_atomic_t ReadSigbus::s_si_addr; + /* AIO reads need to set the header's pid field correctly */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ TEST_F(AioRead, aio_read) @@ -584,6 +613,56 @@ TEST_F(Read, mmap) leak(fd); } +/* Read of an mmap()ed file fails */ +TEST_F(ReadSigbus, mmap_eio) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefgh"; + struct sigaction sa; + uint64_t ino = 42; + int fd; + ssize_t len; + size_t bufsize = strlen(CONTENTS); + void *p; + + len = getpagesize(); + + expect_lookup(RELPATH, ino, bufsize); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_READ && + in.header.nodeid == ino && + in.body.read.fh == Read::FH); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnErrno(EIO))); + + fd = open(FULLPATH, O_RDONLY); + ASSERT_LE(0, fd) << strerror(errno); + + p = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + ASSERT_NE(MAP_FAILED, p) << strerror(errno); + + /* Accessing the mapped page should return SIGBUS. */ + + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sa.sa_sigaction = handle_sigbus; + sa.sa_flags = SA_RESETHAND | SA_SIGINFO; + ASSERT_EQ(0, sigaction(SIGBUS, &sa, NULL)) << strerror(errno); + if (setjmp(ReadSigbus::s_jmpbuf) == 0) { + atomic_signal_fence(std::memory_order::memory_order_seq_cst); + volatile char x __unused = *(volatile char*)p; + FAIL() << "shouldn't get here"; + } + + ASSERT_EQ(p, (void*)ReadSigbus::s_si_addr); + ASSERT_EQ(0, munmap(p, len)) << strerror(errno); + leak(fd); +} + /* * A read via mmap comes up short, indicating that the file was truncated * server-side. @@ -634,6 +713,83 @@ TEST_F(Read, mmap_eof) leak(fd); } +/* + * During VOP_GETPAGES, the FUSE server fails a FUSE_GETATTR operation. This + * almost certainly indicates a buggy FUSE server, and our goal should be not + * to panic. Instead, generate SIGBUS. + */ +TEST_F(ReadSigbus, mmap_getblksz_fail) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefgh"; + struct sigaction sa; + Sequence seq; + uint64_t ino = 42; + int fd; + ssize_t len; + size_t bufsize = strlen(CONTENTS); + mode_t mode = S_IFREG | 0644; + void *p; + + len = getpagesize(); + + FuseTest::expect_lookup(RELPATH, ino, mode, bufsize, 1, 0); + /* Expect two GETATTR calls that succeed, followed by one that fail. */ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).Times(2) + .InSequence(seq) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.ino = ino; + out.body.attr.attr.mode = mode; + out.body.attr.attr.size = bufsize; + out.body.attr.attr_valid = 0; + }))); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).InSequence(seq) + .WillRepeatedly(Invoke(ReturnErrno(EIO))); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_READ); + }, Eq(true)), + _) + ).Times(0); + + fd = open(FULLPATH, O_RDONLY); + ASSERT_LE(0, fd) << strerror(errno); + + p = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + ASSERT_NE(MAP_FAILED, p) << strerror(errno); + + /* Accessing the mapped page should return SIGBUS. */ + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sa.sa_sigaction = handle_sigbus; + sa.sa_flags = SA_RESETHAND | SA_SIGINFO; + ASSERT_EQ(0, sigaction(SIGBUS, &sa, NULL)) << strerror(errno); + if (setjmp(ReadSigbus::s_jmpbuf) == 0) { + atomic_signal_fence(std::memory_order::memory_order_seq_cst); + volatile char x __unused = *(volatile char*)p; + FAIL() << "shouldn't get here"; + } + + ASSERT_EQ(p, (void*)ReadSigbus::s_si_addr); + ASSERT_EQ(0, munmap(p, len)) << strerror(errno); + leak(fd); +} + /* * Just as when FOPEN_DIRECT_IO is used, reads with O_DIRECT should bypass * cache and to straight to the daemon From nobody Thu Oct 7 21:18:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3A86E12BE8A0; Thu, 7 Oct 2021 21:18: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 4HQPLS1CL4z54pc; Thu, 7 Oct 2021 21:18: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 0970E1A9D0; Thu, 7 Oct 2021 21:18: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 197LI7om090112; Thu, 7 Oct 2021 21:18:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197LI7gw090111; Thu, 7 Oct 2021 21:18:07 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:18:07 GMT Message-Id: <202110072118.197LI7gw090111@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 4a9f2f8b07c2 - main - riscv: handle page faults in the unmappable region List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4a9f2f8b07c2d1a1c12f4aabdccd36f56b20cfda Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=4a9f2f8b07c2d1a1c12f4aabdccd36f56b20cfda commit 4a9f2f8b07c2d1a1c12f4aabdccd36f56b20cfda Author: Mitchell Horne AuthorDate: 2021-10-07 21:05:38 +0000 Commit: Mitchell Horne CommitDate: 2021-10-07 21:12:17 +0000 riscv: handle page faults in the unmappable region When handling a kernel page fault, check explicitly that stval resides in either the user or kernel address spaces, and make the page fault fatal if not. Otherwise, a properly crafted address may appear to pmap_fault() as a valid and present page in the kernel map, causing the page fault to be retried continuously. This is mainly due to the fact that the upper bits of virtual addresses are not validated by most of the pmap code. Faults of this nature should only occur due to some kind of bug in the kernel, but it is best to handle them gracefully when they do. Handle user page faults in the same way, sending a SIGSEGV immediately when a malformed address is encountered. Add an assertion to pmap_l1(), which should help catch other bugs of this kind that make it this far. Reviewed by: jrtc27, markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31208 --- sys/riscv/include/vmparam.h | 4 ++++ sys/riscv/riscv/pmap.c | 2 ++ sys/riscv/riscv/trap.c | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/sys/riscv/include/vmparam.h b/sys/riscv/include/vmparam.h index 94782da779f7..4ed95def2caa 100644 --- a/sys/riscv/include/vmparam.h +++ b/sys/riscv/include/vmparam.h @@ -186,6 +186,10 @@ #define VM_MINUSER_ADDRESS (VM_MIN_USER_ADDRESS) #define VM_MAXUSER_ADDRESS (VM_MAX_USER_ADDRESS) +/* Check if an address resides in a mappable region. */ +#define VIRT_IS_VALID(va) \ + (((va) < VM_MAX_USER_ADDRESS) || ((va) >= VM_MIN_KERNEL_ADDRESS)) + #define KERNBASE (VM_MIN_KERNEL_ADDRESS) #define SHAREDPAGE (VM_MAXUSER_ADDRESS - PAGE_SIZE) #define USRSTACK SHAREDPAGE diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index df80f07df0ca..0918325c13fb 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -351,6 +351,8 @@ static __inline pd_entry_t * pmap_l1(pmap_t pmap, vm_offset_t va) { + KASSERT(VIRT_IS_VALID(va), + ("%s: malformed virtual address %#lx", __func__, va)); return (&pmap->pm_l1[pmap_l1_index(va)]); } diff --git a/sys/riscv/riscv/trap.c b/sys/riscv/riscv/trap.c index 8844638c8204..8eb52fcc5337 100644 --- a/sys/riscv/riscv/trap.c +++ b/sys/riscv/riscv/trap.c @@ -200,6 +200,11 @@ page_fault_handler(struct trapframe *frame, int usermode) goto fatal; if (usermode) { + if (!VIRT_IS_VALID(stval)) { + call_trapsignal(td, SIGSEGV, SEGV_MAPERR, (void *)stval, + frame->tf_scause & SCAUSE_CODE); + goto done; + } map = &td->td_proc->p_vmspace->vm_map; } else { /* @@ -208,6 +213,9 @@ page_fault_handler(struct trapframe *frame, int usermode) */ intr_enable(); + if (!VIRT_IS_VALID(stval)) + goto fatal; + if (stval >= VM_MAX_USER_ADDRESS) { map = kernel_map; } else { From nobody Thu Oct 7 21:18:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8B97212BE7CD; Thu, 7 Oct 2021 21:18: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 4HQPLT2z0Kz554w; Thu, 7 Oct 2021 21:18: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 2F8101A9D1; Thu, 7 Oct 2021 21:18: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 197LI9xC090142; Thu, 7 Oct 2021 21:18:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197LI9Mq090141; Thu, 7 Oct 2021 21:18:09 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:18:09 GMT Message-Id: <202110072118.197LI9Mq090141@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 8babb5582eed - main - riscv: fix VM_MAXUSER_ADDRESS checks in asm routines List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8babb5582eed2250309084d76898798409a2aae0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=8babb5582eed2250309084d76898798409a2aae0 commit 8babb5582eed2250309084d76898798409a2aae0 Author: Mitchell Horne AuthorDate: 2021-10-07 21:12:30 +0000 Commit: Mitchell Horne CommitDate: 2021-10-07 21:12:30 +0000 riscv: fix VM_MAXUSER_ADDRESS checks in asm routines There are two issues with the checks against VM_MAXUSER_ADDRESS. First, the comparison should consider the values as unsigned, otherwise addresses with the high bit set will fail to branch. Second, the value of VM_MAXUSER_ADDRESS is, by convention, one larger than the maximum mappable user address and invalid itself. Thus, use the bgeu instruction for these comparisons. Add a regression test case for copyin(9). PR: 257193 Reported by: Robert Morris Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D31209 --- sys/riscv/riscv/copyinout.S | 6 +++--- sys/riscv/riscv/support.S | 20 ++++++++++---------- tests/sys/kern/kern_copyin.c | 24 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/sys/riscv/riscv/copyinout.S b/sys/riscv/riscv/copyinout.S index 1f2a44121ecd..5a171f5a5e17 100644 --- a/sys/riscv/riscv/copyinout.S +++ b/sys/riscv/riscv/copyinout.S @@ -118,7 +118,7 @@ ENTRY(copyout) beqz a2, copyout_end /* If len == 0 then skip loop */ add a3, a1, a2 li a4, VM_MAXUSER_ADDRESS - bgt a3, a4, copyio_fault_nopcb + bgeu a3, a4, copyio_fault_nopcb copycommon @@ -136,7 +136,7 @@ ENTRY(copyin) beqz a2, copyin_end /* If len == 0 then skip loop */ add a3, a0, a2 li a4, VM_MAXUSER_ADDRESS - bgt a3, a4, copyio_fault_nopcb + bgeu a3, a4, copyio_fault_nopcb copycommon @@ -159,7 +159,7 @@ ENTRY(copyinstr) ENTER_USER_ACCESS(a7) li a7, VM_MAXUSER_ADDRESS -1: bgt a0, a7, copyio_fault +1: bgeu a0, a7, copyio_fault lb a4, 0(a0) /* Load from uaddr */ addi a0, a0, 1 sb a4, 0(a1) /* Store in kaddr */ diff --git a/sys/riscv/riscv/support.S b/sys/riscv/riscv/support.S index 3f0ec08ac768..7fcd6af283b7 100644 --- a/sys/riscv/riscv/support.S +++ b/sys/riscv/riscv/support.S @@ -56,7 +56,7 @@ END(fsu_fault) */ ENTRY(casueword32) li a4, (VM_MAXUSER_ADDRESS-3) - bgt a0, a4, fsu_fault_nopcb + bgeu a0, a4, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a4) /* And set it */ ENTER_USER_ACCESS(a4) @@ -77,7 +77,7 @@ END(casueword32) */ ENTRY(casueword) li a4, (VM_MAXUSER_ADDRESS-7) - bgt a0, a4, fsu_fault_nopcb + bgeu a0, a4, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a4) /* And set it */ ENTER_USER_ACCESS(a4) @@ -98,7 +98,7 @@ END(casueword) */ ENTRY(fubyte) li a1, VM_MAXUSER_ADDRESS - bgt a0, a1, fsu_fault_nopcb + bgeu a0, a1, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a1) /* And set it */ ENTER_USER_ACCESS(a1) @@ -113,7 +113,7 @@ END(fubyte) */ ENTRY(fuword16) li a1, (VM_MAXUSER_ADDRESS-1) - bgt a0, a1, fsu_fault_nopcb + bgeu a0, a1, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a1) /* And set it */ ENTER_USER_ACCESS(a1) @@ -128,7 +128,7 @@ END(fuword16) */ ENTRY(fueword32) li a2, (VM_MAXUSER_ADDRESS-3) - bgt a0, a2, fsu_fault_nopcb + bgeu a0, a2, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a2) /* And set it */ ENTER_USER_ACCESS(a2) @@ -147,7 +147,7 @@ END(fueword32) ENTRY(fueword) EENTRY(fueword64) li a2, (VM_MAXUSER_ADDRESS-7) - bgt a0, a2, fsu_fault_nopcb + bgeu a0, a2, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a2) /* And set it */ ENTER_USER_ACCESS(a2) @@ -165,7 +165,7 @@ END(fueword) */ ENTRY(subyte) li a2, VM_MAXUSER_ADDRESS - bgt a0, a2, fsu_fault_nopcb + bgeu a0, a2, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a2) /* And set it */ ENTER_USER_ACCESS(a2) @@ -181,7 +181,7 @@ END(subyte) */ ENTRY(suword16) li a2, (VM_MAXUSER_ADDRESS-1) - bgt a0, a2, fsu_fault_nopcb + bgeu a0, a2, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a2) /* And set it */ ENTER_USER_ACCESS(a2) @@ -197,7 +197,7 @@ END(suword16) */ ENTRY(suword32) li a2, (VM_MAXUSER_ADDRESS-3) - bgt a0, a2, fsu_fault_nopcb + bgeu a0, a2, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a2) /* And set it */ ENTER_USER_ACCESS(a2) @@ -214,7 +214,7 @@ END(suword32) ENTRY(suword) EENTRY(suword64) li a2, (VM_MAXUSER_ADDRESS-7) - bgt a0, a2, fsu_fault_nopcb + bgeu a0, a2, fsu_fault_nopcb la a6, fsu_fault /* Load the fault handler */ SET_FAULT_HANDLER(a6, a2) /* And set it */ ENTER_USER_ACCESS(a2) diff --git a/tests/sys/kern/kern_copyin.c b/tests/sys/kern/kern_copyin.c index b77360e928fd..eb1fea315b5a 100644 --- a/tests/sys/kern/kern_copyin.c +++ b/tests/sys/kern/kern_copyin.c @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -54,6 +55,21 @@ copyin_checker(uintptr_t uaddr, size_t len) return (ret == -1 ? errno : 0); } +#if __SIZEOF_POINTER__ == 8 +/* + * A slightly more direct path to calling copyin(), but without the ability + * to specify a length. + */ +static int +copyin_checker2(uintptr_t uaddr) +{ + int ret; + + ret = fcntl(scratch_file, F_GETLK, (const void *)uaddr); + return (ret == -1 ? errno : 0); +} +#endif + #ifdef __amd64__ static uintptr_t get_maxuser_address(void) @@ -83,6 +99,10 @@ get_maxuser_address(void) #endif #define FMAX ULONG_MAX +#if __SIZEOF_POINTER__ == 8 +/* PR 257193 */ +#define ADDR_SIGNED 0x800000c000000000 +#endif ATF_TC_WITHOUT_HEAD(kern_copyin); ATF_TC_BODY(kern_copyin, tc) @@ -122,6 +142,10 @@ ATF_TC_BODY(kern_copyin, tc) ATF_CHECK(copyin_checker(FMAX - 10, 9) == EFAULT); ATF_CHECK(copyin_checker(FMAX - 10, 10) == EFAULT); ATF_CHECK(copyin_checker(FMAX - 10, 11) == EFAULT); +#if __SIZEOF_POINTER__ == 8 + ATF_CHECK(copyin_checker(ADDR_SIGNED, 1) == EFAULT); + ATF_CHECK(copyin_checker2(ADDR_SIGNED) == EFAULT); +#endif } ATF_TP_ADD_TCS(tp) From nobody Thu Oct 7 21:38:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5BDAA12D0FB7; Thu, 7 Oct 2021 21:38: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 4HQPnX272Gz56pv; Thu, 7 Oct 2021 21:38: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 289381B317; Thu, 7 Oct 2021 21:38: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 197Lc8rQ016955; Thu, 7 Oct 2021 21:38:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197Lc80U016954; Thu, 7 Oct 2021 21:38:08 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:38:08 GMT Message-Id: <202110072138.197Lc80U016954@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: 8dff6ae8591b - stable/13 - [skip ci] unix(4): LOCAL_PEERCRED works on SOCK_SEQPACKET, too. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 8dff6ae8591b07e15ca52512c8844a834d2d94b0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=8dff6ae8591b07e15ca52512c8844a834d2d94b0 commit 8dff6ae8591b07e15ca52512c8844a834d2d94b0 Author: Alan Somers AuthorDate: 2021-08-10 13:29:06 +0000 Commit: Alan Somers CommitDate: 2021-10-07 21:37:41 +0000 [skip ci] unix(4): LOCAL_PEERCRED works on SOCK_SEQPACKET, too. MFC after: 2 weeks Reviewed By: dchagin Differential Revision: https://reviews.freebsd.org/D31456 (cherry picked from commit 518e697f2accf3769dc986e254a4c79db7ec5a06) --- share/man/man4/unix.4 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/man/man4/unix.4 b/share/man/man4/unix.4 index bfce382456ef..cae33f9e8710 100644 --- a/share/man/man4/unix.4 +++ b/share/man/man4/unix.4 @@ -28,7 +28,7 @@ .\" @(#)unix.4 8.1 (Berkeley) 6/9/93 .\" $FreeBSD$ .\" -.Dd November 9, 2020 +.Dd August 7, 2021 .Dt UNIX 4 .Os .Sh NAME @@ -348,6 +348,8 @@ Requested via .Xr getsockopt 2 on a .Dv SOCK_STREAM +or +.Dv SOCK_SEQPACKET socket returns credentials of the remote side. These will arrive in the form of a filled in .Vt xucred From nobody Thu Oct 7 21:40:46 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 615AD12D156C; Thu, 7 Oct 2021 21:40: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 4HQPrZ2MYQz57V2; Thu, 7 Oct 2021 21:40: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 31EA21B2AD; Thu, 7 Oct 2021 21:40: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 197LekFX025572; Thu, 7 Oct 2021 21:40:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197LeksI025571; Thu, 7 Oct 2021 21:40:46 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:40:46 GMT Message-Id: <202110072140.197LeksI025571@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: 4bfd530cca28 - stable/13 - aio: revert the workaround for bug 251828 in the tests List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 4bfd530cca28c8e24de3f9a0d8b138f4644ffca9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=4bfd530cca28c8e24de3f9a0d8b138f4644ffca9 commit 4bfd530cca28c8e24de3f9a0d8b138f4644ffca9 Author: Alan Somers AuthorDate: 2021-08-13 22:59:10 +0000 Commit: Alan Somers CommitDate: 2021-10-07 21:38:25 +0000 aio: revert the workaround for bug 251828 in the tests This bug is no longer reproducible in 14.0-CURRENT and 13.0-RELEASE PR: 251828 Reported by: markj Reviewed by: markj Sponsored by: Axcient Differential Revision: https://reviews.freebsd.org/D31535 (cherry picked from commit 825fb07c55986971b1a20e40a73c12eb0ff432e0) --- tests/sys/aio/aio_test.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/sys/aio/aio_test.c b/tests/sys/aio/aio_test.c index 05351b849a0a..86c41fa469ea 100644 --- a/tests/sys/aio/aio_test.c +++ b/tests/sys/aio/aio_test.c @@ -919,13 +919,6 @@ aio_zvol_setup(void) ZVOL_SIZE " %s", zvol_name); ATF_REQUIRE_EQ_MSG(0, system(cmd), "zfs create failed: %s", strerror(errno)); - /* - * XXX Due to bug 251828, we need an extra "zfs set" here - * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251828 - */ - snprintf(cmd, sizeof(cmd), "zfs set volmode=dev %s", zvol_name); - ATF_REQUIRE_EQ_MSG(0, system(cmd), - "zfs set failed: %s", strerror(errno)); snprintf(devname, sizeof(devname), "/dev/zvol/%s", zvol_name); do { From nobody Thu Oct 7 21:41:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 072A612D19B5; Thu, 7 Oct 2021 21:41: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 4HQPrw6hx5z57q0; Thu, 7 Oct 2021 21:41: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 C68F11B405; Thu, 7 Oct 2021 21:41: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 197Lf4wG025712; Thu, 7 Oct 2021 21:41:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197Lf4G5025711; Thu, 7 Oct 2021 21:41:04 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:41:04 GMT Message-Id: <202110072141.197Lf4G5025711@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: 617c72adf855 - stable/13 - ses: Correct spelling of "Temperature Sensor" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 617c72adf85584a2b85b7203b1cc0a868236041a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=617c72adf85584a2b85b7203b1cc0a868236041a commit 617c72adf85584a2b85b7203b1cc0a868236041a Author: Alan Somers AuthorDate: 2021-08-30 19:59:32 +0000 Commit: Alan Somers CommitDate: 2021-10-07 21:40:56 +0000 ses: Correct spelling of "Temperature Sensor" According to SES 4 revision 2 table 71, it should be singular. Sponsored by: Axcient (cherry picked from commit 1fb52e4373e7f645d71059a6a403469f059044c8) --- share/examples/ses/srcs/eltsub.c | 2 +- sys/cam/scsi/scsi_enc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/share/examples/ses/srcs/eltsub.c b/share/examples/ses/srcs/eltsub.c index c664895b054c..0dfded94a583 100644 --- a/share/examples/ses/srcs/eltsub.c +++ b/share/examples/ses/srcs/eltsub.c @@ -62,7 +62,7 @@ geteltnm(int type) sprintf(rbuf, "Cooling"); break; case ELMTYP_THERM: - sprintf(rbuf, "Temperature Sensors"); + sprintf(rbuf, "Temperature Sensor"); break; case ELMTYP_DOORLOCK: sprintf(rbuf, "Door Lock"); diff --git a/sys/cam/scsi/scsi_enc.h b/sys/cam/scsi/scsi_enc.h index f9abe099e337..cafec644bde4 100644 --- a/sys/cam/scsi/scsi_enc.h +++ b/sys/cam/scsi/scsi_enc.h @@ -130,7 +130,7 @@ typedef enum { "Device Slot", \ "Power Supply", \ "Cooling", \ - "Temperature Sensors", \ + "Temperature Sensor", \ "Door", \ "Audible alarm", \ "Enclosure Services Controller Electronics", \ From nobody Thu Oct 7 21:41:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E3D0F12D1EA8; Thu, 7 Oct 2021 21:41: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 4HQPsB5rVVz580W; Thu, 7 Oct 2021 21:41: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 A65EA1B392; Thu, 7 Oct 2021 21:41: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 197LfISD025845; Thu, 7 Oct 2021 21:41:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197LfIYB025844; Thu, 7 Oct 2021 21:41:18 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:41:18 GMT Message-Id: <202110072141.197LfIYB025844@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: 5060e3d2dae2 - stable/13 - ses: Guard the elm_type_names declaration by _KERNEL List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 5060e3d2dae25914e8b89caa71039621c552bc76 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=5060e3d2dae25914e8b89caa71039621c552bc76 commit 5060e3d2dae25914e8b89caa71039621c552bc76 Author: Alan Somers AuthorDate: 2021-08-30 20:45:13 +0000 Commit: Alan Somers CommitDate: 2021-10-07 21:41:12 +0000 ses: Guard the elm_type_names declaration by _KERNEL Sponsored by: Axcient (cherry picked from commit cc2d08d3880c2e726849ab2aa23b3d15f8aa3938) --- sys/cam/scsi/scsi_enc.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/cam/scsi/scsi_enc.h b/sys/cam/scsi/scsi_enc.h index cafec644bde4..b816a6a5d4cd 100644 --- a/sys/cam/scsi/scsi_enc.h +++ b/sys/cam/scsi/scsi_enc.h @@ -154,7 +154,9 @@ typedef enum { "SAS Connector" \ } +#ifdef _KERNEL extern const char *elm_type_names[]; +#endif typedef struct encioc_element { /* Element Index */ From nobody Thu Oct 7 21:41:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 83BA712D2E45; Thu, 7 Oct 2021 21:42: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 4HQPt017wkz58qF; Thu, 7 Oct 2021 21:41: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 C30B11B425; Thu, 7 Oct 2021 21:41: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 197LfxlG029260; Thu, 7 Oct 2021 21:41:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197LfxFp029259; Thu, 7 Oct 2021 21:41:59 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:41:59 GMT Message-Id: <202110072141.197LfxFp029259@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: ce10852cb3a0 - stable/13 - tools/test/upsdl: fix compiler warnings List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: ce10852cb3a03a1233cff0a54b2d1c67d16d1ee6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=ce10852cb3a03a1233cff0a54b2d1c67d16d1ee6 commit ce10852cb3a03a1233cff0a54b2d1c67d16d1ee6 Author: Alan Somers AuthorDate: 2021-09-14 20:50:01 +0000 Commit: Alan Somers CommitDate: 2021-10-07 21:41:47 +0000 tools/test/upsdl: fix compiler warnings Sponsored by: Axcient (cherry picked from commit 5dc5f849be9047309d32c4df8e7ee617c27ec43f) --- tools/test/upsdl/upsdl.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/test/upsdl/upsdl.c b/tools/test/upsdl/upsdl.c index fc4a761e450b..960b034ffcfe 100644 --- a/tools/test/upsdl/upsdl.c +++ b/tools/test/upsdl/upsdl.c @@ -32,20 +32,21 @@ #include #include #include +#include #include -int prepareFile(char* filename,int* fdp); +int prepareFile(const char* filename,int* fdp); int mapBuffer(char** bufferp,int fd1,int fd2); int startIO(int fd,char *buffer); -int pagesize; +static int pagesize; #define FILESIZE (32*1024) -char wbuffer[FILESIZE]; +static char wbuffer[FILESIZE]; /* Create a FILESIZE sized file - then remove file data from the cache*/ -int prepareFile(char* filename,int* fdp) +int prepareFile(const char* filename,int* fdp) { int fd; int len; @@ -134,7 +135,7 @@ int startIO(int fd,char *buffer) } -int main(int argc,char *argv[],char *envp[]) +int main(int argc __unused, char *argv[] __unused) { int fdA,fdB,fdDelayA,fdDelayB; From nobody Thu Oct 7 21:54:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 692BC12D53EB; Thu, 7 Oct 2021 21:54: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 4HQQ8X2SPbz3D5M; Thu, 7 Oct 2021 21:54: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 343EA1B6AD; Thu, 7 Oct 2021 21:54: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 197Lsaa0043221; Thu, 7 Oct 2021 21:54:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197LsaIO043220; Thu, 7 Oct 2021 21:54:36 GMT (envelope-from git) Date: Thu, 7 Oct 2021 21:54:36 GMT Message-Id: <202110072154.197LsaIO043220@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: 5dc6fedeb40a - stable/13 - fusefs: don't panic if FUSE_GETATTR fails durint VOP_GETPAGES List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 5dc6fedeb40a2a5a99ef35ed390ba2dbdc28c0bf Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=5dc6fedeb40a2a5a99ef35ed390ba2dbdc28c0bf commit 5dc6fedeb40a2a5a99ef35ed390ba2dbdc28c0bf Author: Alan Somers AuthorDate: 2021-09-16 19:19:21 +0000 Commit: Alan Somers CommitDate: 2021-10-07 21:43:45 +0000 fusefs: don't panic if FUSE_GETATTR fails durint VOP_GETPAGES During VOP_GETPAGES, fusefs needs to determine the file's length, which could require a FUSE_GETATTR operation. If that fails, it's better to SIGBUS than panic. Sponsored by: Axcient Reviewed by: markj, kib Differential Revision: https://reviews.freebsd.org/D31994 (cherry picked from commit 4f917847c9037d9b76de188c03e13b81224431b2) --- sys/fs/fuse/fuse_vnops.c | 20 +++--- tests/sys/fs/fusefs/read.cc | 156 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+), 11 deletions(-) diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index 1216c1252f2b..4c8c8c1d4461 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -2199,25 +2199,23 @@ fuse_gbp_getblkno(struct vnode *vp, vm_ooffset_t off) } static int -fuse_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *sz) +fuse_gbp_getblksz(struct vnode *vp, daddr_t lbn, long *blksz) { off_t filesize; - int blksz, err; + int err; const int biosize = fuse_iosize(vp); err = fuse_vnode_size(vp, &filesize, NULL, NULL); - KASSERT(err == 0, ("vfs_bio_getpages can't handle errors here")); - if (err) - return biosize; - - if ((off_t)lbn * biosize >= filesize) { - blksz = 0; + if (err) { + /* This will turn into a SIGBUS */ + return (EIO); + } else if ((off_t)lbn * biosize >= filesize) { + *blksz = 0; } else if ((off_t)(lbn + 1) * biosize > filesize) { - blksz = filesize - (off_t)lbn *biosize; + *blksz = filesize - (off_t)lbn *biosize; } else { - blksz = biosize; + *blksz = biosize; } - *sz = blksz; return (0); } diff --git a/tests/sys/fs/fusefs/read.cc b/tests/sys/fs/fusefs/read.cc index 22a26c2701fd..cb82d0a43b06 100644 --- a/tests/sys/fs/fusefs/read.cc +++ b/tests/sys/fs/fusefs/read.cc @@ -40,6 +40,8 @@ extern "C" { #include #include #include +#include +#include #include } @@ -103,6 +105,33 @@ class ReadAhead: public Read, } }; +class ReadSigbus: public Read +{ +public: +static jmp_buf s_jmpbuf; +static sig_atomic_t s_si_addr; + +void TearDown() { + struct sigaction sa; + + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sigaction(SIGBUS, &sa, NULL); + + FuseTest::TearDown(); +} + +}; + +static void +handle_sigbus(int signo __unused, siginfo_t *info, void *uap __unused) { + ReadSigbus::s_si_addr = (sig_atomic_t)info->si_addr; + longjmp(ReadSigbus::s_jmpbuf, 1); +} + +jmp_buf ReadSigbus::s_jmpbuf; +sig_atomic_t ReadSigbus::s_si_addr; + /* AIO reads need to set the header's pid field correctly */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ TEST_F(AioRead, aio_read) @@ -584,6 +613,56 @@ TEST_F(Read, mmap) leak(fd); } +/* Read of an mmap()ed file fails */ +TEST_F(ReadSigbus, mmap_eio) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefgh"; + struct sigaction sa; + uint64_t ino = 42; + int fd; + ssize_t len; + size_t bufsize = strlen(CONTENTS); + void *p; + + len = getpagesize(); + + expect_lookup(RELPATH, ino, bufsize); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_READ && + in.header.nodeid == ino && + in.body.read.fh == Read::FH); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnErrno(EIO))); + + fd = open(FULLPATH, O_RDONLY); + ASSERT_LE(0, fd) << strerror(errno); + + p = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + ASSERT_NE(MAP_FAILED, p) << strerror(errno); + + /* Accessing the mapped page should return SIGBUS. */ + + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sa.sa_sigaction = handle_sigbus; + sa.sa_flags = SA_RESETHAND | SA_SIGINFO; + ASSERT_EQ(0, sigaction(SIGBUS, &sa, NULL)) << strerror(errno); + if (setjmp(ReadSigbus::s_jmpbuf) == 0) { + atomic_signal_fence(std::memory_order::memory_order_seq_cst); + volatile char x __unused = *(volatile char*)p; + FAIL() << "shouldn't get here"; + } + + ASSERT_EQ(p, (void*)ReadSigbus::s_si_addr); + ASSERT_EQ(0, munmap(p, len)) << strerror(errno); + leak(fd); +} + /* * A read via mmap comes up short, indicating that the file was truncated * server-side. @@ -634,6 +713,83 @@ TEST_F(Read, mmap_eof) leak(fd); } +/* + * During VOP_GETPAGES, the FUSE server fails a FUSE_GETATTR operation. This + * almost certainly indicates a buggy FUSE server, and our goal should be not + * to panic. Instead, generate SIGBUS. + */ +TEST_F(ReadSigbus, mmap_getblksz_fail) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefgh"; + struct sigaction sa; + Sequence seq; + uint64_t ino = 42; + int fd; + ssize_t len; + size_t bufsize = strlen(CONTENTS); + mode_t mode = S_IFREG | 0644; + void *p; + + len = getpagesize(); + + FuseTest::expect_lookup(RELPATH, ino, mode, bufsize, 1, 0); + /* Expect two GETATTR calls that succeed, followed by one that fail. */ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).Times(2) + .InSequence(seq) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.ino = ino; + out.body.attr.attr.mode = mode; + out.body.attr.attr.size = bufsize; + out.body.attr.attr_valid = 0; + }))); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).InSequence(seq) + .WillRepeatedly(Invoke(ReturnErrno(EIO))); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_READ); + }, Eq(true)), + _) + ).Times(0); + + fd = open(FULLPATH, O_RDONLY); + ASSERT_LE(0, fd) << strerror(errno); + + p = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + ASSERT_NE(MAP_FAILED, p) << strerror(errno); + + /* Accessing the mapped page should return SIGBUS. */ + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sa.sa_sigaction = handle_sigbus; + sa.sa_flags = SA_RESETHAND | SA_SIGINFO; + ASSERT_EQ(0, sigaction(SIGBUS, &sa, NULL)) << strerror(errno); + if (setjmp(ReadSigbus::s_jmpbuf) == 0) { + atomic_signal_fence(std::memory_order::memory_order_seq_cst); + volatile char x __unused = *(volatile char*)p; + FAIL() << "shouldn't get here"; + } + + ASSERT_EQ(p, (void*)ReadSigbus::s_si_addr); + ASSERT_EQ(0, munmap(p, len)) << strerror(errno); + leak(fd); +} + /* * Just as when FOPEN_DIRECT_IO is used, reads with O_DIRECT should bypass * cache and to straight to the daemon From nobody Thu Oct 7 22:53:43 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B9C2712DAB0A; Thu, 7 Oct 2021 22: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 4HQRSl4s4sz3HLf; Thu, 7 Oct 2021 22: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 865811C0E3; Thu, 7 Oct 2021 22: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 197MrhpT023101; Thu, 7 Oct 2021 22: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 197MrhTj023100; Thu, 7 Oct 2021 22:53:43 GMT (envelope-from git) Date: Thu, 7 Oct 2021 22:53:43 GMT Message-Id: <202110072253.197MrhTj023100@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kirk McKusick Subject: git: 4313e2ae44ba - main - Avoid lost buffers in fsck_ffs. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4313e2ae44ba4e416a7ddaeaccf8ad311902f1c8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=4313e2ae44ba4e416a7ddaeaccf8ad311902f1c8 commit 4313e2ae44ba4e416a7ddaeaccf8ad311902f1c8 Author: Kirk McKusick AuthorDate: 2021-10-07 22:51:56 +0000 Commit: Kirk McKusick CommitDate: 2021-10-07 22:52:58 +0000 Avoid lost buffers in fsck_ffs. The ino_blkatoff() and indir_blkatoff() functions failed to release the buffers holding second and third level indirect blocks. This commit ensures that these buffers are now properly released. MFC after: 1 week Sponsored by: Netflix --- sbin/fsck_ffs/inode.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c index ba2d5892238e..dafc99bd92da 100644 --- a/sbin/fsck_ffs/inode.c +++ b/sbin/fsck_ffs/inode.c @@ -264,6 +264,8 @@ ino_blkatoff(union dinode *dp, ino_t ino, ufs_lbn_t lbn, int *frags, int i; *frags = 0; + if (bpp != NULL) + *bpp = NULL; /* * Handle extattr blocks first. */ @@ -300,6 +302,8 @@ ino_blkatoff(union dinode *dp, ino_t ino, ufs_lbn_t lbn, int *frags, continue; if (lbn > 0 && lbn >= next) continue; + if (DIP(dp, di_ib[i]) == 0) + return (0); return (indir_blkatoff(DIP(dp, di_ib[i]), ino, -cur - i, lbn, bpp)); } @@ -321,8 +325,6 @@ indir_blkatoff(ufs2_daddr_t blk, ino_t ino, ufs_lbn_t cur, ufs_lbn_t lbn, ufs_lbn_t base; int i, level; - if (blk == 0) - return (0); level = lbn_level(cur); if (level == -1) pfatal("Invalid indir lbn %jd in ino %ju\n", @@ -352,12 +354,14 @@ indir_blkatoff(ufs2_daddr_t blk, ino_t ino, ufs_lbn_t cur, ufs_lbn_t lbn, return (0); blk = IBLK(bp, i); bp->b_index = i; - if (bpp != NULL) - *bpp = bp; - else - brelse(bp); - if (cur == lbn) + if (cur == lbn || blk == 0) { + if (bpp != NULL) + *bpp = bp; + else + brelse(bp); return (blk); + } + brelse(bp); if (level == 0) pfatal("Invalid lbn %jd at level 0 for ino %ju\n", lbn, (uintmax_t)ino); From nobody Thu Oct 7 23:03:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 67FCC12DBE93; Thu, 7 Oct 2021 23:03: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 4HQRhJ2Y6Fz3Hmb; Thu, 7 Oct 2021 23:03: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 37E621C788; Thu, 7 Oct 2021 23:03: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 197N3i0B036891; Thu, 7 Oct 2021 23:03:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197N3ijw036890; Thu, 7 Oct 2021 23:03:44 GMT (envelope-from git) Date: Thu, 7 Oct 2021 23:03:44 GMT Message-Id: <202110072303.197N3ijw036890@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kirk McKusick Subject: git: 55c0af86ce74 - stable/13 - Bring the tags and links entries for amd64 up to date. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 55c0af86ce740747e8f5d79131d2ef02d31f97c4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=55c0af86ce740747e8f5d79131d2ef02d31f97c4 commit 55c0af86ce740747e8f5d79131d2ef02d31f97c4 Author: Kirk McKusick AuthorDate: 2021-09-23 23:38:37 +0000 Commit: Kirk McKusick CommitDate: 2021-10-07 23:01:46 +0000 Bring the tags and links entries for amd64 up to date. Sponsored by: Netflix (cherry picked from commit 1c8d670cb633d39cea68cdeecab507d2ee264705) --- sys/amd64/Makefile | 8 +++++--- sys/kern/Make.tags.inc | 6 ------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/sys/amd64/Makefile b/sys/amd64/Makefile index 2e87b95895e7..0f1367f859f2 100644 --- a/sys/amd64/Makefile +++ b/sys/amd64/Makefile @@ -14,7 +14,7 @@ all: @echo "make links or tags only" # Directories in which to place amd64 tags links -DAMD64= acpica amd64 ia32 include linux linux32 pci vmm +DAMD64= acpica amd64 ia32 include linux linux32 pci sgx vmm links:: -for i in ${COMMDIR1}; do \ @@ -22,13 +22,13 @@ links:: -for i in ${COMMDIR2}; do \ (cd $$i && { rm -f tags; ln -s ../../${TAGDIR}/tags tags; }) done -for i in ${DAMD64}; do \ - (cd $$i && { rm -f tags; ln -s ../tags tags; }) done + (cd ${SYS}/amd64/$$i && { rm -f tags; ln -s ../tags tags; }) done SAMD64= ${SYS}/amd64/acpica/*.[ch] \ ${SYS}/amd64/amd64/*.[ch] ${SYS}/amd64/ia32/*.[ch] \ ${SYS}/amd64/include/*.[ch] ${SYS}/amd64/linux/*.[ch] \ ${SYS}/amd64/linux32/*.[ch] ${SYS}/amd64/pci/*.[ch] \ - ${SYS}/amd64/vmm/*.[ch] + ${SYS}/amd64/sgx/*.[ch] ${SYS}/amd64/vmm/*.[ch] AAMD64= ${SYS}/amd64/amd64/*.S tags:: @@ -38,3 +38,5 @@ tags:: >> tags sort -o tags tags chmod 444 tags + rm -f ${SYS}/amd64/tags + mv tags ${SYS}/amd64/tags diff --git a/sys/kern/Make.tags.inc b/sys/kern/Make.tags.inc index cdefa98a32f6..23a85150c19a 100644 --- a/sys/kern/Make.tags.inc +++ b/sys/kern/Make.tags.inc @@ -12,12 +12,10 @@ SYS?= ${.CURDIR}/.. COMM= ${SYS}/sys/vnode.h \ ${SYS}/dev/alc/*.[ch] \ - ${SYS}/dev/en/*.[ch] \ ${SYS}/dev/iicbus/*.[ch] \ ${SYS}/dev/isp/*.[ch] \ ${SYS}/dev/ppbus/*.[ch] \ ${SYS}/dev/smbus/*.[ch] \ - ${SYS}/dev/vx/*.[ch] \ ${SYS}/fs/autofs/*.[ch] \ ${SYS}/fs/cd9660/*.[ch] \ ${SYS}/fs/cuse/*.[ch] \ @@ -44,7 +42,6 @@ COMM= ${SYS}/sys/vnode.h \ ${SYS}/netinet/*.[ch] \ ${SYS}/netinet6/*.[ch] \ ${SYS}/netipsec/*.[ch] \ - ${SYS}/netnatm/*.[ch] \ ${SYS}/ddb/*.[ch] \ ${SYS}/ufs/ffs/*.[ch] \ ${SYS}/ufs/ufs/*.[ch] \ @@ -58,19 +55,16 @@ COMMDIR1= ${SYS}/conf \ ${SYS}/netinet \ ${SYS}/netinet6 \ ${SYS}/netipsec \ - ${SYS}/netnatm \ ${SYS}/ddb \ ${SYS}/vm \ ${SYS}/sys COMMDIR2= ${SYS}/dev/alc \ - ${SYS}/dev/en \ ${SYS}/dev/iicbus \ ${SYS}/dev/isp \ ${SYS}/dev/md \ ${SYS}/dev/ppbus \ ${SYS}/dev/smbus \ - ${SYS}/dev/vx \ ${SYS}/fs/autofs \ ${SYS}/fs/cd9660 \ ${SYS}/fs/cuse \ From nobody Thu Oct 7 23:08:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5487912DC42B; Thu, 7 Oct 2021 23:08: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 4HQRnJ1vmwz3JWw; Thu, 7 Oct 2021 23:08: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 1DA561C42D; Thu, 7 Oct 2021 23:08: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 197N83nN037274; Thu, 7 Oct 2021 23:08:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 197N833D037273; Thu, 7 Oct 2021 23:08:03 GMT (envelope-from git) Date: Thu, 7 Oct 2021 23:08:03 GMT Message-Id: <202110072308.197N833D037273@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kirk McKusick Subject: git: b72d51cfffab - stable/13 - Avoid "consumer not attached in g_io_request" panic when disk lost while using a UFS snapshot. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b72d51cfffab35f43cd05ee385047f222e0ab8e0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=b72d51cfffab35f43cd05ee385047f222e0ab8e0 commit b72d51cfffab35f43cd05ee385047f222e0ab8e0 Author: Kirk McKusick AuthorDate: 2021-09-28 03:03:43 +0000 Commit: Kirk McKusick CommitDate: 2021-10-07 23:05:39 +0000 Avoid "consumer not attached in g_io_request" panic when disk lost while using a UFS snapshot. Differential revision: https://reviews.freebsd.org/D32150 Sponsored by: Netflix (cherry picked from commit 4a365e863f209b0c82641c909a858dab53b19134) --- sys/ufs/ffs/ffs_snapshot.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index baad50cab2ba..5855a679ab84 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -2554,22 +2555,16 @@ readblock(vp, bp, lbn) ufs2_daddr_t lbn; { struct inode *ip; - struct bio *bip; struct fs *fs; ip = VTOI(vp); fs = ITOFS(ip); - bip = g_alloc_bio(); - bip->bio_cmd = BIO_READ; - bip->bio_offset = dbtob(fsbtodb(fs, blkstofrags(fs, lbn))); - bip->bio_data = bp->b_data; - bip->bio_length = bp->b_bcount; - bip->bio_done = NULL; - - g_io_request(bip, ITODEVVP(ip)->v_bufobj.bo_private); - bp->b_error = biowait(bip, "snaprdb"); - g_destroy_bio(bip); + bp->b_iocmd = BIO_READ; + bp->b_iooffset = dbtob(fsbtodb(fs, blkstofrags(fs, lbn))); + bp->b_iodone = bdone; + g_vfs_strategy(&ITODEVVP(ip)->v_bufobj, bp); + bufwait(bp); return (bp->b_error); } From nobody Fri Oct 8 00:21:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 703A617E3D5B; Fri, 8 Oct 2021 00:21: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 4HQTPn2d1hz3QKq; Fri, 8 Oct 2021 00:21: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 3B4A81D523; Fri, 8 Oct 2021 00:21: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 1980LHer038916; Fri, 8 Oct 2021 00:21:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980LHPh038915; Fri, 8 Oct 2021 00:21:17 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:21:17 GMT Message-Id: <202110080021.1980LHPh038915@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: 4c5bf591522c - main - i386: move signal delivery code to exec_machdep.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 4c5bf591522c5449d017b7ea496488c42f847963 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=4c5bf591522c5449d017b7ea496488c42f847963 commit 4c5bf591522c5449d017b7ea496488c42f847963 Author: Konstantin Belousov AuthorDate: 2021-10-04 01:29:26 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:20:42 +0000 i386: move signal delivery code to exec_machdep.c also move ptrace-related helpers to ptrace_machdep.c Apply some style. Use ANSI C function definitions. Remove MPSAFE annotations. Reviewed by: emaste, imp Discussed with: jrtc27 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32310 --- sys/conf/files.i386 | 1 + sys/i386/i386/exec_machdep.c | 1443 ++++++++++++++++++++++++++++++++++++++++ sys/i386/i386/machdep.c | 1391 -------------------------------------- sys/i386/i386/ptrace_machdep.c | 32 + 4 files changed, 1476 insertions(+), 1391 deletions(-) diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index 3522b04c464a..e22ce97eee4f 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -104,6 +104,7 @@ i386/i386/copyout.c standard i386/i386/db_disasm.c optional ddb i386/i386/db_interface.c optional ddb i386/i386/db_trace.c optional ddb +i386/i386/exec_machdep.c standard i386/i386/elan-mmcr.c optional cpu_elan | cpu_soekris i386/i386/elf_machdep.c standard i386/i386/exception.s standard diff --git a/sys/i386/i386/exec_machdep.c b/sys/i386/i386/exec_machdep.c new file mode 100644 index 000000000000..7d3022fbc406 --- /dev/null +++ b/sys/i386/i386/exec_machdep.c @@ -0,0 +1,1443 @@ +/*- + * SPDX-License-Identifier: BSD-4-Clause + * + * Copyright (c) 2018 The FreeBSD Foundation + * Copyright (c) 1992 Terrence R. Lambert. + * Copyright (c) 1982, 1987, 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * Portions of this software were developed by A. Joseph Koshy under + * sponsorship from the FreeBSD Foundation and Google, 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. + * + * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_cpu.h" +#include "opt_ddb.h" +#include "opt_kstack_pages.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef DDB +#ifndef KDB +#error KDB must be enabled in order for DDB to work! +#endif +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void fpstate_drop(struct thread *td); +static void get_fpcontext(struct thread *td, mcontext_t *mcp, + char *xfpusave, size_t xfpusave_len); +static int set_fpcontext(struct thread *td, mcontext_t *mcp, + char *xfpustate, size_t xfpustate_len); +#ifdef COMPAT_43 +static void osendsig(sig_t catcher, ksiginfo_t *, sigset_t *mask); +#endif +#ifdef COMPAT_FREEBSD4 +static void freebsd4_sendsig(sig_t catcher, ksiginfo_t *, sigset_t *mask); +#endif + +extern struct sysentvec elf32_freebsd_sysvec; + +/* + * Send an interrupt to process. + * + * Stack is set up to allow sigcode stored at top to call routine, + * followed by call to sigreturn routine below. After sigreturn + * resets the signal mask, the stack, and the frame pointer, it + * returns to the user specified pc, psl. + */ +#ifdef COMPAT_43 +static void +osendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct osigframe sf, *fp; + struct proc *p; + struct thread *td; + struct sigacts *psp; + struct trapframe *regs; + int sig; + int oonstack; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig = ksi->ksi_signo; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + regs = td->td_frame; + oonstack = sigonstack(regs->tf_esp); + + /* Allocate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) && !oonstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + fp = (struct osigframe *)((uintptr_t)td->td_sigstk.ss_sp + + td->td_sigstk.ss_size - sizeof(struct osigframe)); +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else + fp = (struct osigframe *)regs->tf_esp - 1; + + /* Build the argument list for the signal handler. */ + sf.sf_signum = sig; + sf.sf_scp = (register_t)&fp->sf_siginfo.si_sc; + bzero(&sf.sf_siginfo, sizeof(sf.sf_siginfo)); + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + sf.sf_arg2 = (register_t)&fp->sf_siginfo; + sf.sf_siginfo.si_signo = sig; + sf.sf_siginfo.si_code = ksi->ksi_code; + sf.sf_ahu.sf_action = (__osiginfohandler_t *)catcher; + sf.sf_addr = 0; + } else { + /* Old FreeBSD-style arguments. */ + sf.sf_arg2 = ksi->ksi_code; + sf.sf_addr = (register_t)ksi->ksi_addr; + sf.sf_ahu.sf_handler = catcher; + } + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(p); + + /* Save most if not all of trap frame. */ + sf.sf_siginfo.si_sc.sc_eax = regs->tf_eax; + sf.sf_siginfo.si_sc.sc_ebx = regs->tf_ebx; + sf.sf_siginfo.si_sc.sc_ecx = regs->tf_ecx; + sf.sf_siginfo.si_sc.sc_edx = regs->tf_edx; + sf.sf_siginfo.si_sc.sc_esi = regs->tf_esi; + sf.sf_siginfo.si_sc.sc_edi = regs->tf_edi; + sf.sf_siginfo.si_sc.sc_cs = regs->tf_cs; + sf.sf_siginfo.si_sc.sc_ds = regs->tf_ds; + sf.sf_siginfo.si_sc.sc_ss = regs->tf_ss; + sf.sf_siginfo.si_sc.sc_es = regs->tf_es; + sf.sf_siginfo.si_sc.sc_fs = regs->tf_fs; + sf.sf_siginfo.si_sc.sc_gs = rgs(); + sf.sf_siginfo.si_sc.sc_isp = regs->tf_isp; + + /* Build the signal context to be used by osigreturn(). */ + sf.sf_siginfo.si_sc.sc_onstack = (oonstack) ? 1 : 0; + SIG2OSIG(*mask, sf.sf_siginfo.si_sc.sc_mask); + sf.sf_siginfo.si_sc.sc_sp = regs->tf_esp; + sf.sf_siginfo.si_sc.sc_fp = regs->tf_ebp; + sf.sf_siginfo.si_sc.sc_pc = regs->tf_eip; + sf.sf_siginfo.si_sc.sc_ps = regs->tf_eflags; + sf.sf_siginfo.si_sc.sc_trapno = regs->tf_trapno; + sf.sf_siginfo.si_sc.sc_err = regs->tf_err; + + /* + * If we're a vm86 process, we want to save the segment registers. + * We also change eflags to be our emulated eflags, not the actual + * eflags. + */ + if (regs->tf_eflags & PSL_VM) { + /* XXX confusing names: `tf' isn't a trapframe; `regs' is. */ + struct trapframe_vm86 *tf = (struct trapframe_vm86 *)regs; + struct vm86_kernel *vm86 = &td->td_pcb->pcb_ext->ext_vm86; + + sf.sf_siginfo.si_sc.sc_gs = tf->tf_vm86_gs; + sf.sf_siginfo.si_sc.sc_fs = tf->tf_vm86_fs; + sf.sf_siginfo.si_sc.sc_es = tf->tf_vm86_es; + sf.sf_siginfo.si_sc.sc_ds = tf->tf_vm86_ds; + + if (vm86->vm86_has_vme == 0) + sf.sf_siginfo.si_sc.sc_ps = + (tf->tf_eflags & ~(PSL_VIF | PSL_VIP)) | + (vm86->vm86_eflags & (PSL_VIF | PSL_VIP)); + + /* See sendsig() for comments. */ + tf->tf_eflags &= ~(PSL_VM | PSL_NT | PSL_VIF | PSL_VIP); + } + + /* + * Copy the sigframe out to the user's stack. + */ + if (copyout(&sf, fp, sizeof(*fp)) != 0) { + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + regs->tf_esp = (int)fp; + if (p->p_sysent->sv_sigcode_base != 0) { + regs->tf_eip = p->p_sysent->sv_sigcode_base + szsigcode - + szosigcode; + } else { + /* a.out sysentvec does not use shared page */ + regs->tf_eip = p->p_sysent->sv_psstrings - szosigcode; + } + regs->tf_eflags &= ~(PSL_T | PSL_D); + regs->tf_cs = _ucodesel; + regs->tf_ds = _udatasel; + regs->tf_es = _udatasel; + regs->tf_fs = _udatasel; + load_gs(_udatasel); + regs->tf_ss = _udatasel; + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} +#endif /* COMPAT_43 */ + +#ifdef COMPAT_FREEBSD4 +static void +freebsd4_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct sigframe4 sf, *sfp; + struct proc *p; + struct thread *td; + struct sigacts *psp; + struct trapframe *regs; + int sig; + int oonstack; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig = ksi->ksi_signo; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + regs = td->td_frame; + oonstack = sigonstack(regs->tf_esp); + + /* Save user context. */ + bzero(&sf, sizeof(sf)); + sf.sf_uc.uc_sigmask = *mask; + sf.sf_uc.uc_stack = td->td_sigstk; + sf.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) + ? ((oonstack) ? SS_ONSTACK : 0) : SS_DISABLE; + sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; + sf.sf_uc.uc_mcontext.mc_gs = rgs(); + bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs)); + bzero(sf.sf_uc.uc_mcontext.mc_fpregs, + sizeof(sf.sf_uc.uc_mcontext.mc_fpregs)); + bzero(sf.sf_uc.uc_mcontext.__spare__, + sizeof(sf.sf_uc.uc_mcontext.__spare__)); + bzero(sf.sf_uc.__spare__, sizeof(sf.sf_uc.__spare__)); + + /* Allocate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + sfp = (struct sigframe4 *)((uintptr_t)td->td_sigstk.ss_sp + + td->td_sigstk.ss_size - sizeof(struct sigframe4)); +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else + sfp = (struct sigframe4 *)regs->tf_esp - 1; + + /* Build the argument list for the signal handler. */ + sf.sf_signum = sig; + sf.sf_ucontext = (register_t)&sfp->sf_uc; + bzero(&sf.sf_si, sizeof(sf.sf_si)); + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + sf.sf_siginfo = (register_t)&sfp->sf_si; + sf.sf_ahu.sf_action = (__siginfohandler_t *)catcher; + + /* Fill in POSIX parts */ + sf.sf_si.si_signo = sig; + sf.sf_si.si_code = ksi->ksi_code; + sf.sf_si.si_addr = ksi->ksi_addr; + } else { + /* Old FreeBSD-style arguments. */ + sf.sf_siginfo = ksi->ksi_code; + sf.sf_addr = (register_t)ksi->ksi_addr; + sf.sf_ahu.sf_handler = catcher; + } + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(p); + + /* + * If we're a vm86 process, we want to save the segment registers. + * We also change eflags to be our emulated eflags, not the actual + * eflags. + */ + if (regs->tf_eflags & PSL_VM) { + struct trapframe_vm86 *tf = (struct trapframe_vm86 *)regs; + struct vm86_kernel *vm86 = &td->td_pcb->pcb_ext->ext_vm86; + + sf.sf_uc.uc_mcontext.mc_gs = tf->tf_vm86_gs; + sf.sf_uc.uc_mcontext.mc_fs = tf->tf_vm86_fs; + sf.sf_uc.uc_mcontext.mc_es = tf->tf_vm86_es; + sf.sf_uc.uc_mcontext.mc_ds = tf->tf_vm86_ds; + + if (vm86->vm86_has_vme == 0) + sf.sf_uc.uc_mcontext.mc_eflags = + (tf->tf_eflags & ~(PSL_VIF | PSL_VIP)) | + (vm86->vm86_eflags & (PSL_VIF | PSL_VIP)); + + /* + * Clear PSL_NT to inhibit T_TSSFLT faults on return from + * syscalls made by the signal handler. This just avoids + * wasting time for our lazy fixup of such faults. PSL_NT + * does nothing in vm86 mode, but vm86 programs can set it + * almost legitimately in probes for old cpu types. + */ + tf->tf_eflags &= ~(PSL_VM | PSL_NT | PSL_VIF | PSL_VIP); + } + + /* + * Copy the sigframe out to the user's stack. + */ + if (copyout(&sf, sfp, sizeof(*sfp)) != 0) { + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + regs->tf_esp = (int)sfp; + regs->tf_eip = p->p_sysent->sv_sigcode_base + szsigcode - + szfreebsd4_sigcode; + regs->tf_eflags &= ~(PSL_T | PSL_D); + regs->tf_cs = _ucodesel; + regs->tf_ds = _udatasel; + regs->tf_es = _udatasel; + regs->tf_fs = _udatasel; + regs->tf_ss = _udatasel; + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} +#endif /* COMPAT_FREEBSD4 */ + +void +sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct sigframe sf, *sfp; + struct proc *p; + struct thread *td; + struct sigacts *psp; + char *sp; + struct trapframe *regs; + struct segment_descriptor *sdp; + char *xfpusave; + size_t xfpusave_len; + int sig; + int oonstack; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig = ksi->ksi_signo; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); +#ifdef COMPAT_FREEBSD4 + if (SIGISMEMBER(psp->ps_freebsd4, sig)) { + freebsd4_sendsig(catcher, ksi, mask); + return; + } +#endif +#ifdef COMPAT_43 + if (SIGISMEMBER(psp->ps_osigset, sig)) { + osendsig(catcher, ksi, mask); + return; + } +#endif + regs = td->td_frame; + oonstack = sigonstack(regs->tf_esp); + + if (cpu_max_ext_state_size > sizeof(union savefpu) && use_xsave) { + xfpusave_len = cpu_max_ext_state_size - sizeof(union savefpu); + xfpusave = __builtin_alloca(xfpusave_len); + } else { + xfpusave_len = 0; + xfpusave = NULL; + } + + /* Save user context. */ + bzero(&sf, sizeof(sf)); + sf.sf_uc.uc_sigmask = *mask; + sf.sf_uc.uc_stack = td->td_sigstk; + sf.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) + ? ((oonstack) ? SS_ONSTACK : 0) : SS_DISABLE; + sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; + sf.sf_uc.uc_mcontext.mc_gs = rgs(); + bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs)); + sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ + get_fpcontext(td, &sf.sf_uc.uc_mcontext, xfpusave, xfpusave_len); + fpstate_drop(td); + /* + * Unconditionally fill the fsbase and gsbase into the mcontext. + */ + sdp = &td->td_pcb->pcb_fsd; + sf.sf_uc.uc_mcontext.mc_fsbase = sdp->sd_hibase << 24 | + sdp->sd_lobase; + sdp = &td->td_pcb->pcb_gsd; + sf.sf_uc.uc_mcontext.mc_gsbase = sdp->sd_hibase << 24 | + sdp->sd_lobase; + bzero(sf.sf_uc.uc_mcontext.mc_spare2, + sizeof(sf.sf_uc.uc_mcontext.mc_spare2)); + + /* Allocate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + sp = (char *)td->td_sigstk.ss_sp + td->td_sigstk.ss_size; +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else + sp = (char *)regs->tf_esp - 128; + if (xfpusave != NULL) { + sp -= xfpusave_len; + sp = (char *)((unsigned int)sp & ~0x3F); + sf.sf_uc.uc_mcontext.mc_xfpustate = (register_t)sp; + } + sp -= sizeof(struct sigframe); + + /* Align to 16 bytes. */ + sfp = (struct sigframe *)((unsigned int)sp & ~0xF); + + /* Build the argument list for the signal handler. */ + sf.sf_signum = sig; + sf.sf_ucontext = (register_t)&sfp->sf_uc; + bzero(&sf.sf_si, sizeof(sf.sf_si)); + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + sf.sf_siginfo = (register_t)&sfp->sf_si; + sf.sf_ahu.sf_action = (__siginfohandler_t *)catcher; + + /* Fill in POSIX parts */ + sf.sf_si = ksi->ksi_info; + sf.sf_si.si_signo = sig; /* maybe a translated signal */ + } else { + /* Old FreeBSD-style arguments. */ + sf.sf_siginfo = ksi->ksi_code; + sf.sf_addr = (register_t)ksi->ksi_addr; + sf.sf_ahu.sf_handler = catcher; + } + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(p); + + /* + * If we're a vm86 process, we want to save the segment registers. + * We also change eflags to be our emulated eflags, not the actual + * eflags. + */ + if (regs->tf_eflags & PSL_VM) { + struct trapframe_vm86 *tf = (struct trapframe_vm86 *)regs; + struct vm86_kernel *vm86 = &td->td_pcb->pcb_ext->ext_vm86; + + sf.sf_uc.uc_mcontext.mc_gs = tf->tf_vm86_gs; + sf.sf_uc.uc_mcontext.mc_fs = tf->tf_vm86_fs; + sf.sf_uc.uc_mcontext.mc_es = tf->tf_vm86_es; + sf.sf_uc.uc_mcontext.mc_ds = tf->tf_vm86_ds; + + if (vm86->vm86_has_vme == 0) + sf.sf_uc.uc_mcontext.mc_eflags = + (tf->tf_eflags & ~(PSL_VIF | PSL_VIP)) | + (vm86->vm86_eflags & (PSL_VIF | PSL_VIP)); + + /* + * Clear PSL_NT to inhibit T_TSSFLT faults on return from + * syscalls made by the signal handler. This just avoids + * wasting time for our lazy fixup of such faults. PSL_NT + * does nothing in vm86 mode, but vm86 programs can set it + * almost legitimately in probes for old cpu types. + */ + tf->tf_eflags &= ~(PSL_VM | PSL_NT | PSL_VIF | PSL_VIP); + } + + /* + * Copy the sigframe out to the user's stack. + */ + if (copyout(&sf, sfp, sizeof(*sfp)) != 0 || + (xfpusave != NULL && copyout(xfpusave, + (void *)sf.sf_uc.uc_mcontext.mc_xfpustate, xfpusave_len) + != 0)) { + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + regs->tf_esp = (int)sfp; + regs->tf_eip = p->p_sysent->sv_sigcode_base; + if (regs->tf_eip == 0) + regs->tf_eip = p->p_sysent->sv_psstrings - szsigcode; + regs->tf_eflags &= ~(PSL_T | PSL_D); + regs->tf_cs = _ucodesel; + regs->tf_ds = _udatasel; + regs->tf_es = _udatasel; + regs->tf_fs = _udatasel; + regs->tf_ss = _udatasel; + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} + +/* + * System call to cleanup state after a signal has been taken. Reset + * signal mask and stack state from context left by sendsig (above). + * Return to previous pc and psl as specified by context left by + * sendsig. Check carefully to make sure that the user has not + * modified the state to gain improper privileges. + */ +#ifdef COMPAT_43 +int +osigreturn(struct thread *td, struct osigreturn_args *uap) +{ + struct osigcontext sc; + struct trapframe *regs; + struct osigcontext *scp; + int eflags, error; + ksiginfo_t ksi; + + regs = td->td_frame; + error = copyin(uap->sigcntxp, &sc, sizeof(sc)); + if (error != 0) + return (error); + scp = ≻ + eflags = scp->sc_ps; + if (eflags & PSL_VM) { + struct trapframe_vm86 *tf = (struct trapframe_vm86 *)regs; + struct vm86_kernel *vm86; + + /* + * if pcb_ext == 0 or vm86_inited == 0, the user hasn't + * set up the vm86 area, and we can't enter vm86 mode. + */ + if (td->td_pcb->pcb_ext == 0) + return (EINVAL); + vm86 = &td->td_pcb->pcb_ext->ext_vm86; + if (vm86->vm86_inited == 0) + return (EINVAL); + + /* Go back to user mode if both flags are set. */ + if ((eflags & PSL_VIP) && (eflags & PSL_VIF)) { + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_addr = (void *)regs->tf_eip; + trapsignal(td, &ksi); + } + + if (vm86->vm86_has_vme) { + eflags = (tf->tf_eflags & ~VME_USERCHANGE) | + (eflags & VME_USERCHANGE) | PSL_VM; + } else { + vm86->vm86_eflags = eflags; /* save VIF, VIP */ + eflags = (tf->tf_eflags & ~VM_USERCHANGE) | + (eflags & VM_USERCHANGE) | PSL_VM; + } + tf->tf_vm86_ds = scp->sc_ds; + tf->tf_vm86_es = scp->sc_es; + tf->tf_vm86_fs = scp->sc_fs; + tf->tf_vm86_gs = scp->sc_gs; + tf->tf_ds = _udatasel; + tf->tf_es = _udatasel; + tf->tf_fs = _udatasel; + } else { + /* + * Don't allow users to change privileged or reserved flags. + */ + if (!EFL_SECURE(eflags, regs->tf_eflags)) { + return (EINVAL); + } + + /* + * Don't allow users to load a valid privileged %cs. Let the + * hardware check for invalid selectors, excess privilege in + * other selectors, invalid %eip's and invalid %esp's. + */ + if (!CS_SECURE(scp->sc_cs)) { + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_trapno = T_PROTFLT; + ksi.ksi_addr = (void *)regs->tf_eip; + trapsignal(td, &ksi); + return (EINVAL); + } + regs->tf_ds = scp->sc_ds; + regs->tf_es = scp->sc_es; + regs->tf_fs = scp->sc_fs; + } + + /* Restore remaining registers. */ + regs->tf_eax = scp->sc_eax; + regs->tf_ebx = scp->sc_ebx; + regs->tf_ecx = scp->sc_ecx; + regs->tf_edx = scp->sc_edx; + regs->tf_esi = scp->sc_esi; + regs->tf_edi = scp->sc_edi; + regs->tf_cs = scp->sc_cs; + regs->tf_ss = scp->sc_ss; + regs->tf_isp = scp->sc_isp; + regs->tf_ebp = scp->sc_fp; + regs->tf_esp = scp->sc_sp; + regs->tf_eip = scp->sc_pc; + regs->tf_eflags = eflags; + +#if defined(COMPAT_43) + if (scp->sc_onstack & 1) + td->td_sigstk.ss_flags |= SS_ONSTACK; + else + td->td_sigstk.ss_flags &= ~SS_ONSTACK; +#endif + kern_sigprocmask(td, SIG_SETMASK, (sigset_t *)&scp->sc_mask, NULL, + SIGPROCMASK_OLD); + return (EJUSTRETURN); +} +#endif /* COMPAT_43 */ + +#ifdef COMPAT_FREEBSD4 +int +freebsd4_sigreturn(struct thread *td, struct freebsd4_sigreturn_args *uap) +{ + struct ucontext4 uc; + struct trapframe *regs; + struct ucontext4 *ucp; + int cs, eflags, error; + ksiginfo_t ksi; + + error = copyin(uap->sigcntxp, &uc, sizeof(uc)); + if (error != 0) + return (error); + ucp = &uc; + regs = td->td_frame; + eflags = ucp->uc_mcontext.mc_eflags; + if (eflags & PSL_VM) { + struct trapframe_vm86 *tf = (struct trapframe_vm86 *)regs; + struct vm86_kernel *vm86; + + /* + * if pcb_ext == 0 or vm86_inited == 0, the user hasn't + * set up the vm86 area, and we can't enter vm86 mode. + */ + if (td->td_pcb->pcb_ext == 0) + return (EINVAL); + vm86 = &td->td_pcb->pcb_ext->ext_vm86; + if (vm86->vm86_inited == 0) + return (EINVAL); + + /* Go back to user mode if both flags are set. */ + if ((eflags & PSL_VIP) && (eflags & PSL_VIF)) { + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_addr = (void *)regs->tf_eip; + trapsignal(td, &ksi); + } + if (vm86->vm86_has_vme) { + eflags = (tf->tf_eflags & ~VME_USERCHANGE) | + (eflags & VME_USERCHANGE) | PSL_VM; + } else { + vm86->vm86_eflags = eflags; /* save VIF, VIP */ + eflags = (tf->tf_eflags & ~VM_USERCHANGE) | + (eflags & VM_USERCHANGE) | PSL_VM; + } + bcopy(&ucp->uc_mcontext.mc_fs, tf, sizeof(struct trapframe)); + tf->tf_eflags = eflags; + tf->tf_vm86_ds = tf->tf_ds; + tf->tf_vm86_es = tf->tf_es; + tf->tf_vm86_fs = tf->tf_fs; + tf->tf_vm86_gs = ucp->uc_mcontext.mc_gs; + tf->tf_ds = _udatasel; + tf->tf_es = _udatasel; + tf->tf_fs = _udatasel; + } else { + /* + * Don't allow users to change privileged or reserved flags. + */ + if (!EFL_SECURE(eflags, regs->tf_eflags)) { + uprintf( + "pid %d (%s): freebsd4_sigreturn eflags = 0x%x\n", + td->td_proc->p_pid, td->td_name, eflags); + return (EINVAL); + } + + /* + * Don't allow users to load a valid privileged %cs. Let the + * hardware check for invalid selectors, excess privilege in + * other selectors, invalid %eip's and invalid %esp's. + */ + cs = ucp->uc_mcontext.mc_cs; + if (!CS_SECURE(cs)) { + uprintf("pid %d (%s): freebsd4_sigreturn cs = 0x%x\n", + td->td_proc->p_pid, td->td_name, cs); + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_trapno = T_PROTFLT; + ksi.ksi_addr = (void *)regs->tf_eip; + trapsignal(td, &ksi); + return (EINVAL); + } + + bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs)); + } + +#if defined(COMPAT_43) + if (ucp->uc_mcontext.mc_onstack & 1) + td->td_sigstk.ss_flags |= SS_ONSTACK; + else + td->td_sigstk.ss_flags &= ~SS_ONSTACK; +#endif + kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0); + return (EJUSTRETURN); +} +#endif /* COMPAT_FREEBSD4 */ + +int +sys_sigreturn(struct thread *td, struct sigreturn_args *uap) +{ + ucontext_t uc; + struct proc *p; + struct trapframe *regs; + ucontext_t *ucp; + char *xfpustate; + size_t xfpustate_len; + int cs, eflags, error, ret; + ksiginfo_t ksi; + + p = td->td_proc; + + error = copyin(uap->sigcntxp, &uc, sizeof(uc)); + if (error != 0) + return (error); + ucp = &uc; + if ((ucp->uc_mcontext.mc_flags & ~_MC_FLAG_MASK) != 0) { + uprintf("pid %d (%s): sigreturn mc_flags %x\n", p->p_pid, + td->td_name, ucp->uc_mcontext.mc_flags); + return (EINVAL); + } + regs = td->td_frame; + eflags = ucp->uc_mcontext.mc_eflags; + if (eflags & PSL_VM) { + struct trapframe_vm86 *tf = (struct trapframe_vm86 *)regs; + struct vm86_kernel *vm86; + + /* + * if pcb_ext == 0 or vm86_inited == 0, the user hasn't + * set up the vm86 area, and we can't enter vm86 mode. + */ + if (td->td_pcb->pcb_ext == 0) + return (EINVAL); + vm86 = &td->td_pcb->pcb_ext->ext_vm86; + if (vm86->vm86_inited == 0) + return (EINVAL); + + /* Go back to user mode if both flags are set. */ + if ((eflags & PSL_VIP) && (eflags & PSL_VIF)) { + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_addr = (void *)regs->tf_eip; + trapsignal(td, &ksi); + } + + if (vm86->vm86_has_vme) { + eflags = (tf->tf_eflags & ~VME_USERCHANGE) | + (eflags & VME_USERCHANGE) | PSL_VM; + } else { + vm86->vm86_eflags = eflags; /* save VIF, VIP */ + eflags = (tf->tf_eflags & ~VM_USERCHANGE) | + (eflags & VM_USERCHANGE) | PSL_VM; + } + bcopy(&ucp->uc_mcontext.mc_fs, tf, sizeof(struct trapframe)); + tf->tf_eflags = eflags; + tf->tf_vm86_ds = tf->tf_ds; + tf->tf_vm86_es = tf->tf_es; + tf->tf_vm86_fs = tf->tf_fs; + tf->tf_vm86_gs = ucp->uc_mcontext.mc_gs; + tf->tf_ds = _udatasel; + tf->tf_es = _udatasel; + tf->tf_fs = _udatasel; + } else { + /* + * Don't allow users to change privileged or reserved flags. + */ + if (!EFL_SECURE(eflags, regs->tf_eflags)) { + uprintf("pid %d (%s): sigreturn eflags = 0x%x\n", + td->td_proc->p_pid, td->td_name, eflags); + return (EINVAL); + } + + /* + * Don't allow users to load a valid privileged %cs. Let the + * hardware check for invalid selectors, excess privilege in + * other selectors, invalid %eip's and invalid %esp's. + */ + cs = ucp->uc_mcontext.mc_cs; + if (!CS_SECURE(cs)) { + uprintf("pid %d (%s): sigreturn cs = 0x%x\n", + td->td_proc->p_pid, td->td_name, cs); + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_trapno = T_PROTFLT; + ksi.ksi_addr = (void *)regs->tf_eip; + trapsignal(td, &ksi); + return (EINVAL); + } + + if ((uc.uc_mcontext.mc_flags & _MC_HASFPXSTATE) != 0) { + xfpustate_len = uc.uc_mcontext.mc_xfpustate_len; + if (xfpustate_len > cpu_max_ext_state_size - + sizeof(union savefpu)) { + uprintf( + "pid %d (%s): sigreturn xfpusave_len = 0x%zx\n", + p->p_pid, td->td_name, xfpustate_len); + return (EINVAL); + } + xfpustate = __builtin_alloca(xfpustate_len); + error = copyin( + (const void *)uc.uc_mcontext.mc_xfpustate, + xfpustate, xfpustate_len); + if (error != 0) { + uprintf( + "pid %d (%s): sigreturn copying xfpustate failed\n", + p->p_pid, td->td_name); + return (error); + } + } else { + xfpustate = NULL; + xfpustate_len = 0; + } + ret = set_fpcontext(td, &ucp->uc_mcontext, xfpustate, + xfpustate_len); + if (ret != 0) + return (ret); + bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs)); + } + +#if defined(COMPAT_43) + if (ucp->uc_mcontext.mc_onstack & 1) + td->td_sigstk.ss_flags |= SS_ONSTACK; + else + td->td_sigstk.ss_flags &= ~SS_ONSTACK; +#endif + + kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0); + return (EJUSTRETURN); +} + +/* + * Reset the hardware debug registers if they were in use. + * They won't have any meaning for the newly exec'd process. + */ +void +x86_clear_dbregs(struct pcb *pcb) +{ + if ((pcb->pcb_flags & PCB_DBREGS) == 0) + return; + + pcb->pcb_dr0 = 0; + pcb->pcb_dr1 = 0; + pcb->pcb_dr2 = 0; + pcb->pcb_dr3 = 0; + pcb->pcb_dr6 = 0; + pcb->pcb_dr7 = 0; + + if (pcb == curpcb) { + /* + * Clear the debug registers on the running CPU, + * otherwise they will end up affecting the next + * process we switch to. + */ + reset_dbregs(); + } + pcb->pcb_flags &= ~PCB_DBREGS; +} + +#ifdef COMPAT_43 +static void +setup_priv_lcall_gate(struct proc *p) +{ + struct i386_ldt_args uap; + union descriptor desc; + u_int lcall_addr; + + bzero(&uap, sizeof(uap)); + uap.start = 0; + uap.num = 1; + lcall_addr = p->p_sysent->sv_psstrings - sz_lcall_tramp; + bzero(&desc, sizeof(desc)); + desc.sd.sd_type = SDT_MEMERA; + desc.sd.sd_dpl = SEL_UPL; + desc.sd.sd_p = 1; + desc.sd.sd_def32 = 1; + desc.sd.sd_gran = 1; + desc.sd.sd_lolimit = 0xffff; + desc.sd.sd_hilimit = 0xf; + desc.sd.sd_lobase = lcall_addr; + desc.sd.sd_hibase = lcall_addr >> 24; + i386_set_ldt(curthread, &uap, &desc); +} +#endif + +/* + * Reset registers to default values on exec. + */ +void *** 1973 LINES SKIPPED *** From nobody Fri Oct 8 00:21:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C4C9B17E3CB7; Fri, 8 Oct 2021 00:21: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 4HQTPp44hLz3Q8p; Fri, 8 Oct 2021 00:21: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 533161D681; Fri, 8 Oct 2021 00:21: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 1980LIWF038940; Fri, 8 Oct 2021 00:21:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980LIP9038939; Fri, 8 Oct 2021 00:21:18 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:21:18 GMT Message-Id: <202110080021.1980LIP9038939@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: b4ae6b166066 - main - arm64: move signal delivery code to exec_machdep.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: b4ae6b166066a789641e4a579020ca6b10b40cfa Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b4ae6b166066a789641e4a579020ca6b10b40cfa commit b4ae6b166066a789641e4a579020ca6b10b40cfa Author: Konstantin Belousov AuthorDate: 2021-10-04 06:55:51 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:20:42 +0000 arm64: move signal delivery code to exec_machdep.c also move ptrace-related helpers to ptrace_machdep.c. Reviewed by: emaste, imp Discussed with: jrtc27 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32310 --- sys/arm64/arm64/exec_machdep.c | 617 +++++++++++++++++++++++++++++++++++++++ sys/arm64/arm64/machdep.c | 588 ------------------------------------- sys/arm64/arm64/ptrace_machdep.c | 76 +++++ sys/conf/files.arm64 | 2 + 4 files changed, 695 insertions(+), 588 deletions(-) diff --git a/sys/arm64/arm64/exec_machdep.c b/sys/arm64/arm64/exec_machdep.c new file mode 100644 index 000000000000..25fd9401df8c --- /dev/null +++ b/sys/arm64/arm64/exec_machdep.c @@ -0,0 +1,617 @@ +/*- + * Copyright (c) 2014 Andrew Turner + * 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 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. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#ifdef VFP +#include +#endif + +static void get_fpcontext(struct thread *td, mcontext_t *mcp); +static void set_fpcontext(struct thread *td, mcontext_t *mcp); + +int +fill_regs(struct thread *td, struct reg *regs) +{ + struct trapframe *frame; + + frame = td->td_frame; + regs->sp = frame->tf_sp; + regs->lr = frame->tf_lr; + regs->elr = frame->tf_elr; + regs->spsr = frame->tf_spsr; + + memcpy(regs->x, frame->tf_x, sizeof(regs->x)); + +#ifdef COMPAT_FREEBSD32 + /* + * We may be called here for a 32bits process, if we're using a + * 64bits debugger. If so, put PC and SPSR where it expects it. + */ + if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { + regs->x[15] = frame->tf_elr; + regs->x[16] = frame->tf_spsr; + } +#endif + return (0); +} + +int +set_regs(struct thread *td, struct reg *regs) +{ + struct trapframe *frame; + + frame = td->td_frame; + frame->tf_sp = regs->sp; + frame->tf_lr = regs->lr; + frame->tf_spsr &= ~PSR_FLAGS; + + memcpy(frame->tf_x, regs->x, sizeof(frame->tf_x)); + +#ifdef COMPAT_FREEBSD32 + if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { + /* + * We may be called for a 32bits process if we're using + * a 64bits debugger. If so, get PC and SPSR from where + * it put it. + */ + frame->tf_elr = regs->x[15]; + frame->tf_spsr |= regs->x[16] & PSR_FLAGS; + } else +#endif + { + frame->tf_elr = regs->elr; + frame->tf_spsr |= regs->spsr & PSR_FLAGS; + } + return (0); +} + +int +fill_fpregs(struct thread *td, struct fpreg *regs) +{ +#ifdef VFP + struct pcb *pcb; + + pcb = td->td_pcb; + if ((pcb->pcb_fpflags & PCB_FP_STARTED) != 0) { + /* + * If we have just been running VFP instructions we will + * need to save the state to memcpy it below. + */ + if (td == curthread) + vfp_save_state(td, pcb); + + KASSERT(pcb->pcb_fpusaved == &pcb->pcb_fpustate, + ("Called fill_fpregs while the kernel is using the VFP")); + memcpy(regs->fp_q, pcb->pcb_fpustate.vfp_regs, + sizeof(regs->fp_q)); + regs->fp_cr = pcb->pcb_fpustate.vfp_fpcr; + regs->fp_sr = pcb->pcb_fpustate.vfp_fpsr; + } else +#endif + memset(regs, 0, sizeof(*regs)); + return (0); +} + +int +set_fpregs(struct thread *td, struct fpreg *regs) +{ +#ifdef VFP + struct pcb *pcb; + + pcb = td->td_pcb; + KASSERT(pcb->pcb_fpusaved == &pcb->pcb_fpustate, + ("Called set_fpregs while the kernel is using the VFP")); + memcpy(pcb->pcb_fpustate.vfp_regs, regs->fp_q, sizeof(regs->fp_q)); + pcb->pcb_fpustate.vfp_fpcr = regs->fp_cr; + pcb->pcb_fpustate.vfp_fpsr = regs->fp_sr; +#endif + return (0); +} + +int +fill_dbregs(struct thread *td, struct dbreg *regs) +{ + struct debug_monitor_state *monitor; + int i; + uint8_t debug_ver, nbkpts, nwtpts; + + memset(regs, 0, sizeof(*regs)); + + extract_user_id_field(ID_AA64DFR0_EL1, ID_AA64DFR0_DebugVer_SHIFT, + &debug_ver); + extract_user_id_field(ID_AA64DFR0_EL1, ID_AA64DFR0_BRPs_SHIFT, + &nbkpts); + extract_user_id_field(ID_AA64DFR0_EL1, ID_AA64DFR0_WRPs_SHIFT, + &nwtpts); + + /* + * The BRPs field contains the number of breakpoints - 1. Armv8-A + * allows the hardware to provide 2-16 breakpoints so this won't + * overflow an 8 bit value. The same applies to the WRPs field. + */ + nbkpts++; + nwtpts++; + + regs->db_debug_ver = debug_ver; + regs->db_nbkpts = nbkpts; + regs->db_nwtpts = nwtpts; + + monitor = &td->td_pcb->pcb_dbg_regs; + if ((monitor->dbg_flags & DBGMON_ENABLED) != 0) { + for (i = 0; i < nbkpts; i++) { + regs->db_breakregs[i].dbr_addr = monitor->dbg_bvr[i]; + regs->db_breakregs[i].dbr_ctrl = monitor->dbg_bcr[i]; + } + for (i = 0; i < nwtpts; i++) { + regs->db_watchregs[i].dbw_addr = monitor->dbg_wvr[i]; + regs->db_watchregs[i].dbw_ctrl = monitor->dbg_wcr[i]; + } + } + + return (0); +} + +int +set_dbregs(struct thread *td, struct dbreg *regs) +{ + struct debug_monitor_state *monitor; + uint64_t addr; + uint32_t ctrl; + int count; + int i; + + monitor = &td->td_pcb->pcb_dbg_regs; + count = 0; + monitor->dbg_enable_count = 0; + + for (i = 0; i < DBG_BRP_MAX; i++) { + addr = regs->db_breakregs[i].dbr_addr; + ctrl = regs->db_breakregs[i].dbr_ctrl; + + /* + * Don't let the user set a breakpoint on a kernel or + * non-canonical user address. + */ + if (addr >= VM_MAXUSER_ADDRESS) + return (EINVAL); + + /* + * The lowest 2 bits are ignored, so record the effective + * address. + */ + addr = rounddown2(addr, 4); + + /* + * Some control fields are ignored, and other bits reserved. + * Only unlinked, address-matching breakpoints are supported. + * + * XXX: fields that appear unvalidated, such as BAS, have + * constrained undefined behaviour. If the user mis-programs + * these, there is no risk to the system. + */ + ctrl &= DBG_BCR_EN | DBG_BCR_PMC | DBG_BCR_BAS; + if ((ctrl & DBG_BCR_EN) != 0) { + /* Only target EL0. */ + if ((ctrl & DBG_BCR_PMC) != DBG_BCR_PMC_EL0) + return (EINVAL); + + monitor->dbg_enable_count++; + } + + monitor->dbg_bvr[i] = addr; + monitor->dbg_bcr[i] = ctrl; + } + + for (i = 0; i < DBG_WRP_MAX; i++) { + addr = regs->db_watchregs[i].dbw_addr; + ctrl = regs->db_watchregs[i].dbw_ctrl; + + /* + * Don't let the user set a watchpoint on a kernel or + * non-canonical user address. + */ + if (addr >= VM_MAXUSER_ADDRESS) + return (EINVAL); + + /* + * Some control fields are ignored, and other bits reserved. + * Only unlinked watchpoints are supported. + */ + ctrl &= DBG_WCR_EN | DBG_WCR_PAC | DBG_WCR_LSC | DBG_WCR_BAS | + DBG_WCR_MASK; + + if ((ctrl & DBG_WCR_EN) != 0) { + /* Only target EL0. */ + if ((ctrl & DBG_WCR_PAC) != DBG_WCR_PAC_EL0) + return (EINVAL); + + /* Must set at least one of the load/store bits. */ + if ((ctrl & DBG_WCR_LSC) == 0) + return (EINVAL); + + /* + * When specifying the address range with BAS, the MASK + * field must be zero. + */ + if ((ctrl & DBG_WCR_BAS) != DBG_WCR_BAS_MASK && + (ctrl & DBG_WCR_MASK) != 0) + return (EINVAL); + + monitor->dbg_enable_count++; + } + monitor->dbg_wvr[i] = addr; + monitor->dbg_wcr[i] = ctrl; + } + + if (monitor->dbg_enable_count > 0) + monitor->dbg_flags |= DBGMON_ENABLED; + + return (0); +} + +#ifdef COMPAT_FREEBSD32 +int +fill_regs32(struct thread *td, struct reg32 *regs) +{ + int i; + struct trapframe *tf; + + tf = td->td_frame; + for (i = 0; i < 13; i++) + regs->r[i] = tf->tf_x[i]; + /* For arm32, SP is r13 and LR is r14 */ + regs->r_sp = tf->tf_x[13]; + regs->r_lr = tf->tf_x[14]; + regs->r_pc = tf->tf_elr; + regs->r_cpsr = tf->tf_spsr; + + return (0); +} + +int +set_regs32(struct thread *td, struct reg32 *regs) +{ + int i; + struct trapframe *tf; + + tf = td->td_frame; + for (i = 0; i < 13; i++) + tf->tf_x[i] = regs->r[i]; + /* For arm 32, SP is r13 an LR is r14 */ + tf->tf_x[13] = regs->r_sp; + tf->tf_x[14] = regs->r_lr; + tf->tf_elr = regs->r_pc; + tf->tf_spsr &= ~PSR_FLAGS; + tf->tf_spsr |= regs->r_cpsr & PSR_FLAGS; + + return (0); +} + +/* XXX fill/set dbregs/fpregs are stubbed on 32-bit arm. */ +int +fill_fpregs32(struct thread *td, struct fpreg32 *regs) +{ + + memset(regs, 0, sizeof(*regs)); + return (0); +} + +int +set_fpregs32(struct thread *td, struct fpreg32 *regs) +{ + + return (0); +} + +int +fill_dbregs32(struct thread *td, struct dbreg32 *regs) +{ + + memset(regs, 0, sizeof(*regs)); + return (0); +} + +int +set_dbregs32(struct thread *td, struct dbreg32 *regs) +{ + + return (0); +} +#endif + +void +exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) +{ + struct trapframe *tf = td->td_frame; + struct pcb *pcb = td->td_pcb; + + memset(tf, 0, sizeof(struct trapframe)); + + tf->tf_x[0] = stack; + tf->tf_sp = STACKALIGN(stack); + tf->tf_lr = imgp->entry_addr; + tf->tf_elr = imgp->entry_addr; + + td->td_pcb->pcb_tpidr_el0 = 0; + td->td_pcb->pcb_tpidrro_el0 = 0; + WRITE_SPECIALREG(tpidrro_el0, 0); + WRITE_SPECIALREG(tpidr_el0, 0); + +#ifdef VFP + vfp_reset_state(td, pcb); +#endif + + /* + * Clear debug register state. It is not applicable to the new process. + */ + bzero(&pcb->pcb_dbg_regs, sizeof(pcb->pcb_dbg_regs)); +} + +/* Sanity check these are the same size, they will be memcpy'd to and from */ +CTASSERT(sizeof(((struct trapframe *)0)->tf_x) == + sizeof((struct gpregs *)0)->gp_x); +CTASSERT(sizeof(((struct trapframe *)0)->tf_x) == + sizeof((struct reg *)0)->x); + +int +get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +{ + struct trapframe *tf = td->td_frame; + + if (clear_ret & GET_MC_CLEAR_RET) { + mcp->mc_gpregs.gp_x[0] = 0; + mcp->mc_gpregs.gp_spsr = tf->tf_spsr & ~PSR_C; + } else { + mcp->mc_gpregs.gp_x[0] = tf->tf_x[0]; + mcp->mc_gpregs.gp_spsr = tf->tf_spsr; + } + + memcpy(&mcp->mc_gpregs.gp_x[1], &tf->tf_x[1], + sizeof(mcp->mc_gpregs.gp_x[1]) * (nitems(mcp->mc_gpregs.gp_x) - 1)); + + mcp->mc_gpregs.gp_sp = tf->tf_sp; + mcp->mc_gpregs.gp_lr = tf->tf_lr; + mcp->mc_gpregs.gp_elr = tf->tf_elr; + get_fpcontext(td, mcp); + + return (0); +} + +int +set_mcontext(struct thread *td, mcontext_t *mcp) +{ + struct trapframe *tf = td->td_frame; + uint32_t spsr; + + spsr = mcp->mc_gpregs.gp_spsr; + if ((spsr & PSR_M_MASK) != PSR_M_EL0t || + (spsr & PSR_AARCH32) != 0 || + (spsr & PSR_DAIF) != (td->td_frame->tf_spsr & PSR_DAIF)) + return (EINVAL); + + memcpy(tf->tf_x, mcp->mc_gpregs.gp_x, sizeof(tf->tf_x)); + + tf->tf_sp = mcp->mc_gpregs.gp_sp; + tf->tf_lr = mcp->mc_gpregs.gp_lr; + tf->tf_elr = mcp->mc_gpregs.gp_elr; + tf->tf_spsr = mcp->mc_gpregs.gp_spsr; + set_fpcontext(td, mcp); + + return (0); +} + +static void +get_fpcontext(struct thread *td, mcontext_t *mcp) +{ +#ifdef VFP + struct pcb *curpcb; + + critical_enter(); + + curpcb = curthread->td_pcb; + + if ((curpcb->pcb_fpflags & PCB_FP_STARTED) != 0) { + /* + * If we have just been running VFP instructions we will + * need to save the state to memcpy it below. + */ + vfp_save_state(td, curpcb); + + KASSERT(curpcb->pcb_fpusaved == &curpcb->pcb_fpustate, + ("Called get_fpcontext while the kernel is using the VFP")); + 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.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; + mcp->mc_flags |= _MC_FP_VALID; + } + + critical_exit(); +#endif +} + +static void +set_fpcontext(struct thread *td, mcontext_t *mcp) +{ +#ifdef VFP + struct pcb *curpcb; + + critical_enter(); + + if ((mcp->mc_flags & _MC_FP_VALID) != 0) { + curpcb = curthread->td_pcb; + + /* + * Discard any vfp state for the current thread, we + * are about to override it. + */ + vfp_discard(td); + + 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.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; + } + + critical_exit(); +#endif +} + +int +sys_sigreturn(struct thread *td, struct sigreturn_args *uap) +{ + ucontext_t uc; + int error; + + if (copyin(uap->sigcntxp, &uc, sizeof(uc))) + return (EFAULT); + + error = set_mcontext(td, &uc.uc_mcontext); + if (error != 0) + return (error); + + /* Restore signal mask. */ + kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0); + + return (EJUSTRETURN); +} + +void +sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct thread *td; + struct proc *p; + struct trapframe *tf; + struct sigframe *fp, frame; + struct sigacts *psp; + struct sysentvec *sysent; + int onstack, sig; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + + sig = ksi->ksi_signo; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + + tf = td->td_frame; + onstack = sigonstack(tf->tf_sp); + + CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, + catcher, sig); + + /* Allocate and validate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !onstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + + td->td_sigstk.ss_size); +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else { + fp = (struct sigframe *)td->td_frame->tf_sp; + } + + /* Make room, keeping the stack aligned */ + fp--; + fp = (struct sigframe *)STACKALIGN(fp); + + /* Fill in the frame to copy out */ + bzero(&frame, sizeof(frame)); + get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); + frame.sf_si = ksi->ksi_info; + frame.sf_uc.uc_sigmask = *mask; + frame.sf_uc.uc_stack = td->td_sigstk; + frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) != 0 ? + (onstack ? SS_ONSTACK : 0) : SS_DISABLE; + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(td->td_proc); + + /* Copy the sigframe out to the user's stack. */ + if (copyout(&frame, fp, sizeof(*fp)) != 0) { + /* Process has trashed its stack. Kill it. */ + CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + tf->tf_x[0]= sig; + tf->tf_x[1] = (register_t)&fp->sf_si; + tf->tf_x[2] = (register_t)&fp->sf_uc; + + tf->tf_elr = (register_t)catcher; + tf->tf_sp = (register_t)fp; + sysent = p->p_sysent; + if (sysent->sv_sigcode_base != 0) + tf->tf_lr = (register_t)sysent->sv_sigcode_base; + else + tf->tf_lr = (register_t)(sysent->sv_psstrings - + *(sysent->sv_szsigcode)); + + CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_elr, + tf->tf_sp); + + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c index 30f07bce5551..bca5a9e045cd 100644 --- a/sys/arm64/arm64/machdep.c +++ b/sys/arm64/arm64/machdep.c @@ -100,9 +100,6 @@ __FBSDID("$FreeBSD$"); #include #endif -static void get_fpcontext(struct thread *td, mcontext_t *mcp); -static void set_fpcontext(struct thread *td, mcontext_t *mcp); - enum arm64_bus arm64_bus_method = ARM64_BUS_NONE; struct pcpu __pcpu[MAXCPU]; @@ -220,486 +217,6 @@ cpu_idle_wakeup(int cpu) return (0); } -int -fill_regs(struct thread *td, struct reg *regs) -{ - struct trapframe *frame; - - frame = td->td_frame; - regs->sp = frame->tf_sp; - regs->lr = frame->tf_lr; - regs->elr = frame->tf_elr; - regs->spsr = frame->tf_spsr; - - memcpy(regs->x, frame->tf_x, sizeof(regs->x)); - -#ifdef COMPAT_FREEBSD32 - /* - * We may be called here for a 32bits process, if we're using a - * 64bits debugger. If so, put PC and SPSR where it expects it. - */ - if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { - regs->x[15] = frame->tf_elr; - regs->x[16] = frame->tf_spsr; - } -#endif - return (0); -} - -int -set_regs(struct thread *td, struct reg *regs) -{ - struct trapframe *frame; - - frame = td->td_frame; - frame->tf_sp = regs->sp; - frame->tf_lr = regs->lr; - frame->tf_spsr &= ~PSR_FLAGS; - - memcpy(frame->tf_x, regs->x, sizeof(frame->tf_x)); - -#ifdef COMPAT_FREEBSD32 - if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { - /* - * We may be called for a 32bits process if we're using - * a 64bits debugger. If so, get PC and SPSR from where - * it put it. - */ - frame->tf_elr = regs->x[15]; - frame->tf_spsr |= regs->x[16] & PSR_FLAGS; - } else -#endif - { - frame->tf_elr = regs->elr; - frame->tf_spsr |= regs->spsr & PSR_FLAGS; - } - return (0); -} - -int -fill_fpregs(struct thread *td, struct fpreg *regs) -{ -#ifdef VFP - struct pcb *pcb; - - pcb = td->td_pcb; - if ((pcb->pcb_fpflags & PCB_FP_STARTED) != 0) { - /* - * If we have just been running VFP instructions we will - * need to save the state to memcpy it below. - */ - if (td == curthread) - vfp_save_state(td, pcb); - - KASSERT(pcb->pcb_fpusaved == &pcb->pcb_fpustate, - ("Called fill_fpregs while the kernel is using the VFP")); - memcpy(regs->fp_q, pcb->pcb_fpustate.vfp_regs, - sizeof(regs->fp_q)); - regs->fp_cr = pcb->pcb_fpustate.vfp_fpcr; - regs->fp_sr = pcb->pcb_fpustate.vfp_fpsr; - } else -#endif - memset(regs, 0, sizeof(*regs)); - return (0); -} - -int -set_fpregs(struct thread *td, struct fpreg *regs) -{ -#ifdef VFP - struct pcb *pcb; - - pcb = td->td_pcb; - KASSERT(pcb->pcb_fpusaved == &pcb->pcb_fpustate, - ("Called set_fpregs while the kernel is using the VFP")); - memcpy(pcb->pcb_fpustate.vfp_regs, regs->fp_q, sizeof(regs->fp_q)); - pcb->pcb_fpustate.vfp_fpcr = regs->fp_cr; - pcb->pcb_fpustate.vfp_fpsr = regs->fp_sr; -#endif - return (0); -} - -int -fill_dbregs(struct thread *td, struct dbreg *regs) -{ - struct debug_monitor_state *monitor; - int i; - uint8_t debug_ver, nbkpts, nwtpts; - - memset(regs, 0, sizeof(*regs)); - - extract_user_id_field(ID_AA64DFR0_EL1, ID_AA64DFR0_DebugVer_SHIFT, - &debug_ver); - extract_user_id_field(ID_AA64DFR0_EL1, ID_AA64DFR0_BRPs_SHIFT, - &nbkpts); - extract_user_id_field(ID_AA64DFR0_EL1, ID_AA64DFR0_WRPs_SHIFT, - &nwtpts); - - /* - * The BRPs field contains the number of breakpoints - 1. Armv8-A - * allows the hardware to provide 2-16 breakpoints so this won't - * overflow an 8 bit value. The same applies to the WRPs field. - */ - nbkpts++; - nwtpts++; - - regs->db_debug_ver = debug_ver; - regs->db_nbkpts = nbkpts; - regs->db_nwtpts = nwtpts; - - monitor = &td->td_pcb->pcb_dbg_regs; - if ((monitor->dbg_flags & DBGMON_ENABLED) != 0) { - for (i = 0; i < nbkpts; i++) { - regs->db_breakregs[i].dbr_addr = monitor->dbg_bvr[i]; - regs->db_breakregs[i].dbr_ctrl = monitor->dbg_bcr[i]; - } - for (i = 0; i < nwtpts; i++) { - regs->db_watchregs[i].dbw_addr = monitor->dbg_wvr[i]; - regs->db_watchregs[i].dbw_ctrl = monitor->dbg_wcr[i]; - } - } - - return (0); -} - -int -set_dbregs(struct thread *td, struct dbreg *regs) -{ - struct debug_monitor_state *monitor; - uint64_t addr; - uint32_t ctrl; - int count; - int i; - - monitor = &td->td_pcb->pcb_dbg_regs; - count = 0; - monitor->dbg_enable_count = 0; - - for (i = 0; i < DBG_BRP_MAX; i++) { - addr = regs->db_breakregs[i].dbr_addr; - ctrl = regs->db_breakregs[i].dbr_ctrl; - - /* - * Don't let the user set a breakpoint on a kernel or - * non-canonical user address. - */ - if (addr >= VM_MAXUSER_ADDRESS) - return (EINVAL); - - /* - * The lowest 2 bits are ignored, so record the effective - * address. - */ - addr = rounddown2(addr, 4); - - /* - * Some control fields are ignored, and other bits reserved. - * Only unlinked, address-matching breakpoints are supported. - * - * XXX: fields that appear unvalidated, such as BAS, have - * constrained undefined behaviour. If the user mis-programs - * these, there is no risk to the system. - */ - ctrl &= DBG_BCR_EN | DBG_BCR_PMC | DBG_BCR_BAS; - if ((ctrl & DBG_BCR_EN) != 0) { - /* Only target EL0. */ - if ((ctrl & DBG_BCR_PMC) != DBG_BCR_PMC_EL0) - return (EINVAL); - - monitor->dbg_enable_count++; - } - - monitor->dbg_bvr[i] = addr; - monitor->dbg_bcr[i] = ctrl; - } - - for (i = 0; i < DBG_WRP_MAX; i++) { - addr = regs->db_watchregs[i].dbw_addr; - ctrl = regs->db_watchregs[i].dbw_ctrl; - - /* - * Don't let the user set a watchpoint on a kernel or - * non-canonical user address. - */ - if (addr >= VM_MAXUSER_ADDRESS) - return (EINVAL); - - /* - * Some control fields are ignored, and other bits reserved. - * Only unlinked watchpoints are supported. - */ - ctrl &= DBG_WCR_EN | DBG_WCR_PAC | DBG_WCR_LSC | DBG_WCR_BAS | - DBG_WCR_MASK; - - if ((ctrl & DBG_WCR_EN) != 0) { - /* Only target EL0. */ - if ((ctrl & DBG_WCR_PAC) != DBG_WCR_PAC_EL0) - return (EINVAL); - - /* Must set at least one of the load/store bits. */ - if ((ctrl & DBG_WCR_LSC) == 0) - return (EINVAL); - - /* - * When specifying the address range with BAS, the MASK - * field must be zero. - */ - if ((ctrl & DBG_WCR_BAS) != DBG_WCR_BAS_MASK && - (ctrl & DBG_WCR_MASK) != 0) - return (EINVAL); - - monitor->dbg_enable_count++; - } - monitor->dbg_wvr[i] = addr; - monitor->dbg_wcr[i] = ctrl; - } - - if (monitor->dbg_enable_count > 0) - monitor->dbg_flags |= DBGMON_ENABLED; - - return (0); -} - -#ifdef COMPAT_FREEBSD32 -int -fill_regs32(struct thread *td, struct reg32 *regs) -{ - int i; - struct trapframe *tf; - - tf = td->td_frame; - for (i = 0; i < 13; i++) - regs->r[i] = tf->tf_x[i]; - /* For arm32, SP is r13 and LR is r14 */ - regs->r_sp = tf->tf_x[13]; - regs->r_lr = tf->tf_x[14]; - regs->r_pc = tf->tf_elr; - regs->r_cpsr = tf->tf_spsr; - - return (0); -} - -int -set_regs32(struct thread *td, struct reg32 *regs) -{ - int i; - struct trapframe *tf; - - tf = td->td_frame; - for (i = 0; i < 13; i++) - tf->tf_x[i] = regs->r[i]; - /* For arm 32, SP is r13 an LR is r14 */ - tf->tf_x[13] = regs->r_sp; - tf->tf_x[14] = regs->r_lr; - tf->tf_elr = regs->r_pc; - tf->tf_spsr &= ~PSR_FLAGS; - tf->tf_spsr |= regs->r_cpsr & PSR_FLAGS; - - return (0); -} - -/* XXX fill/set dbregs/fpregs are stubbed on 32-bit arm. */ -int -fill_fpregs32(struct thread *td, struct fpreg32 *regs) -{ - - memset(regs, 0, sizeof(*regs)); - return (0); -} - -int -set_fpregs32(struct thread *td, struct fpreg32 *regs) -{ - - return (0); -} - -int -fill_dbregs32(struct thread *td, struct dbreg32 *regs) -{ - - memset(regs, 0, sizeof(*regs)); - return (0); -} - -int -set_dbregs32(struct thread *td, struct dbreg32 *regs) -{ - - return (0); -} -#endif - -int -ptrace_set_pc(struct thread *td, u_long addr) -{ - - td->td_frame->tf_elr = addr; - return (0); -} - -int -ptrace_single_step(struct thread *td) *** 384 LINES SKIPPED *** From nobody Fri Oct 8 00:21:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 08D9D17E4087; Fri, 8 Oct 2021 00:21: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 4HQTPr4BzGz3Q6M; Fri, 8 Oct 2021 00:21: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 7CE231D4E0; Fri, 8 Oct 2021 00:21: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 1980LJP0038970; Fri, 8 Oct 2021 00:21:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980LJY3038969; Fri, 8 Oct 2021 00:21:19 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:21:19 GMT Message-Id: <202110080021.1980LJY3038969@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: dfaf65023ef0 - main - arm: move signal delivery code to exec_machdep.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: dfaf65023ef0d9f68da856f3795448596751a69d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=dfaf65023ef0d9f68da856f3795448596751a69d commit dfaf65023ef0d9f68da856f3795448596751a69d Author: Konstantin Belousov AuthorDate: 2021-10-04 11:39:11 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:20:42 +0000 arm: move signal delivery code to exec_machdep.c Reviewed by: emaste, imp Discussed with: jrtc27 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32310 --- sys/arm/arm/exec_machdep.c | 379 +++++++++++++++++++++++++++++++++++++++++++++ sys/arm/arm/machdep.c | 322 -------------------------------------- sys/conf/files.arm | 1 + 3 files changed, 380 insertions(+), 322 deletions(-) diff --git a/sys/arm/arm/exec_machdep.c b/sys/arm/arm/exec_machdep.c new file mode 100644 index 000000000000..3b952463b1ad --- /dev/null +++ b/sys/arm/arm/exec_machdep.c @@ -0,0 +1,379 @@ +/* $NetBSD: arm32_machdep.c,v 1.44 2004/03/24 15:34:47 atatat Exp $ */ + +/*- + * SPDX-License-Identifier: BSD-4-Clause + * + * Copyright (c) 2004 Olivier Houchard + * Copyright (c) 1994-1998 Mark Brinicombe. + * Copyright (c) 1994 Brini. + * All rights reserved. + * + * This code is derived from software written for Brini by Mark Brinicombe + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Mark Brinicombe + * for the NetBSD Project. + * 4. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +/* + * Clear registers on exec + */ +void +exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) +{ + struct trapframe *tf = td->td_frame; + + memset(tf, 0, sizeof(*tf)); + tf->tf_usr_sp = stack; + tf->tf_usr_lr = imgp->entry_addr; + tf->tf_svc_lr = 0x77777777; + tf->tf_pc = imgp->entry_addr; + tf->tf_spsr = PSR_USR32_MODE; + if ((register_t)imgp->entry_addr & 1) + tf->tf_spsr |= PSR_T; +} + +#ifdef VFP +/* + * Get machine VFP context. + */ +void +get_vfpcontext(struct thread *td, mcontext_vfp_t *vfp) +{ + struct pcb *pcb; + + pcb = td->td_pcb; + if (td == curthread) { + critical_enter(); + vfp_store(&pcb->pcb_vfpstate, false); + critical_exit(); + } else + MPASS(TD_IS_SUSPENDED(td)); + memcpy(vfp->mcv_reg, pcb->pcb_vfpstate.reg, + sizeof(vfp->mcv_reg)); + vfp->mcv_fpscr = pcb->pcb_vfpstate.fpscr; +} + +/* + * Set machine VFP context. + */ +void +set_vfpcontext(struct thread *td, mcontext_vfp_t *vfp) +{ + struct pcb *pcb; + + pcb = td->td_pcb; + if (td == curthread) { + critical_enter(); + vfp_discard(td); + critical_exit(); + } else + MPASS(TD_IS_SUSPENDED(td)); + memcpy(pcb->pcb_vfpstate.reg, vfp->mcv_reg, + sizeof(pcb->pcb_vfpstate.reg)); + pcb->pcb_vfpstate.fpscr = vfp->mcv_fpscr; +} +#endif + +int +arm_get_vfpstate(struct thread *td, void *args) +{ + int rv; + struct arm_get_vfpstate_args ua; + mcontext_vfp_t mcontext_vfp; + + rv = copyin(args, &ua, sizeof(ua)); + if (rv != 0) + return (rv); + if (ua.mc_vfp_size != sizeof(mcontext_vfp_t)) + return (EINVAL); +#ifdef VFP + get_vfpcontext(td, &mcontext_vfp); +#else + bzero(&mcontext_vfp, sizeof(mcontext_vfp)); +#endif + + rv = copyout(&mcontext_vfp, ua.mc_vfp, sizeof(mcontext_vfp)); + if (rv != 0) + return (rv); + return (0); +} + +/* + * Get machine context. + */ +int +get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +{ + struct trapframe *tf = td->td_frame; + __greg_t *gr = mcp->__gregs; + + if (clear_ret & GET_MC_CLEAR_RET) { + gr[_REG_R0] = 0; + gr[_REG_CPSR] = tf->tf_spsr & ~PSR_C; + } else { + gr[_REG_R0] = tf->tf_r0; + gr[_REG_CPSR] = tf->tf_spsr; + } + gr[_REG_R1] = tf->tf_r1; + gr[_REG_R2] = tf->tf_r2; + gr[_REG_R3] = tf->tf_r3; + gr[_REG_R4] = tf->tf_r4; + gr[_REG_R5] = tf->tf_r5; + gr[_REG_R6] = tf->tf_r6; + gr[_REG_R7] = tf->tf_r7; + gr[_REG_R8] = tf->tf_r8; + gr[_REG_R9] = tf->tf_r9; + gr[_REG_R10] = tf->tf_r10; + gr[_REG_R11] = tf->tf_r11; + gr[_REG_R12] = tf->tf_r12; + gr[_REG_SP] = tf->tf_usr_sp; + gr[_REG_LR] = tf->tf_usr_lr; + gr[_REG_PC] = tf->tf_pc; + + mcp->mc_vfp_size = 0; + mcp->mc_vfp_ptr = NULL; + memset(&mcp->mc_spare, 0, sizeof(mcp->mc_spare)); + + return (0); +} + +/* + * Set machine context. + * + * However, we don't set any but the user modifiable flags, and we won't + * touch the cs selector. + */ +int +set_mcontext(struct thread *td, mcontext_t *mcp) +{ + mcontext_vfp_t mc_vfp, *vfp; + struct trapframe *tf = td->td_frame; + const __greg_t *gr = mcp->__gregs; + int spsr; + + /* + * Make sure the processor mode has not been tampered with and + * interrupts have not been disabled. + */ + spsr = gr[_REG_CPSR]; + if ((spsr & PSR_MODE) != PSR_USR32_MODE || + (spsr & (PSR_I | PSR_F)) != 0) + return (EINVAL); + +#ifdef WITNESS + if (mcp->mc_vfp_size != 0 && mcp->mc_vfp_size != sizeof(mc_vfp)) { + printf("%s: %s: Malformed mc_vfp_size: %d (0x%08X)\n", + td->td_proc->p_comm, __func__, + mcp->mc_vfp_size, mcp->mc_vfp_size); + } else if (mcp->mc_vfp_size != 0 && mcp->mc_vfp_ptr == NULL) { + printf("%s: %s: c_vfp_size != 0 but mc_vfp_ptr == NULL\n", + td->td_proc->p_comm, __func__); + } +#endif + + if (mcp->mc_vfp_size == sizeof(mc_vfp) && mcp->mc_vfp_ptr != NULL) { + if (copyin(mcp->mc_vfp_ptr, &mc_vfp, sizeof(mc_vfp)) != 0) + return (EFAULT); + vfp = &mc_vfp; + } else { + vfp = NULL; + } + + tf->tf_r0 = gr[_REG_R0]; + tf->tf_r1 = gr[_REG_R1]; + tf->tf_r2 = gr[_REG_R2]; + tf->tf_r3 = gr[_REG_R3]; + tf->tf_r4 = gr[_REG_R4]; + tf->tf_r5 = gr[_REG_R5]; + tf->tf_r6 = gr[_REG_R6]; + tf->tf_r7 = gr[_REG_R7]; + tf->tf_r8 = gr[_REG_R8]; + tf->tf_r9 = gr[_REG_R9]; + tf->tf_r10 = gr[_REG_R10]; + tf->tf_r11 = gr[_REG_R11]; + tf->tf_r12 = gr[_REG_R12]; + tf->tf_usr_sp = gr[_REG_SP]; + tf->tf_usr_lr = gr[_REG_LR]; + tf->tf_pc = gr[_REG_PC]; + tf->tf_spsr = gr[_REG_CPSR]; +#ifdef VFP + if (vfp != NULL) + set_vfpcontext(td, vfp); +#endif + return (0); +} + +void +sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct thread *td; + struct proc *p; + struct trapframe *tf; + struct sigframe *fp, frame; + struct sigacts *psp; + struct sysentvec *sysent; + int onstack; + int sig; + int code; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig = ksi->ksi_signo; + code = ksi->ksi_code; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + tf = td->td_frame; + onstack = sigonstack(tf->tf_usr_sp); + + CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, + catcher, sig); + + /* Allocate and validate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !(onstack) && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + + td->td_sigstk.ss_size); +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else + fp = (struct sigframe *)td->td_frame->tf_usr_sp; + + /* make room on the stack */ + fp--; + + /* make the stack aligned */ + fp = (struct sigframe *)STACKALIGN(fp); + /* Populate the siginfo frame. */ + bzero(&frame, sizeof(frame)); + get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); +#ifdef VFP + get_vfpcontext(td, &frame.sf_vfp); + frame.sf_uc.uc_mcontext.mc_vfp_size = sizeof(fp->sf_vfp); + frame.sf_uc.uc_mcontext.mc_vfp_ptr = &fp->sf_vfp; +#else + frame.sf_uc.uc_mcontext.mc_vfp_size = 0; + frame.sf_uc.uc_mcontext.mc_vfp_ptr = NULL; +#endif + frame.sf_si = ksi->ksi_info; + frame.sf_uc.uc_sigmask = *mask; + frame.sf_uc.uc_stack = td->td_sigstk; + frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) != 0 ? + (onstack ? SS_ONSTACK : 0) : SS_DISABLE; + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(td->td_proc); + + /* Copy the sigframe out to the user's stack. */ + if (copyout(&frame, fp, sizeof(*fp)) != 0) { + /* Process has trashed its stack. Kill it. */ + CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + /* + * Build context to run handler in. We invoke the handler + * directly, only returning via the trampoline. Note the + * trampoline version numbers are coordinated with machine- + * dependent code in libc. + */ + + tf->tf_r0 = sig; + tf->tf_r1 = (register_t)&fp->sf_si; + tf->tf_r2 = (register_t)&fp->sf_uc; + + /* the trampoline uses r5 as the uc address */ + tf->tf_r5 = (register_t)&fp->sf_uc; + tf->tf_pc = (register_t)catcher; + tf->tf_usr_sp = (register_t)fp; + sysent = p->p_sysent; + if (sysent->sv_sigcode_base != 0) + tf->tf_usr_lr = (register_t)sysent->sv_sigcode_base; + else + tf->tf_usr_lr = (register_t)(sysent->sv_psstrings - + *(sysent->sv_szsigcode)); + /* Set the mode to enter in the signal handler */ +#if __ARM_ARCH >= 7 + if ((register_t)catcher & 1) + tf->tf_spsr |= PSR_T; + else + tf->tf_spsr &= ~PSR_T; +#endif + + CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_usr_lr, + tf->tf_usr_sp); + + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} + +int +sys_sigreturn(struct thread *td, struct sigreturn_args *uap) +{ + ucontext_t uc; + int error; + + if (uap == NULL) + return (EFAULT); + if (copyin(uap->sigcntxp, &uc, sizeof(uc))) + return (EFAULT); + /* Restore register context. */ + error = set_mcontext(td, &uc.uc_mcontext); + if (error != 0) + return (error); + + /* Restore signal mask. */ + kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0); + + return (EJUSTRETURN); +} diff --git a/sys/arm/arm/machdep.c b/sys/arm/arm/machdep.c index c852187087b3..933edfb0dc84 100644 --- a/sys/arm/arm/machdep.c +++ b/sys/arm/arm/machdep.c @@ -332,328 +332,6 @@ spinlock_exit(void) } } -/* - * Clear registers on exec - */ -void -exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) -{ - struct trapframe *tf = td->td_frame; - - memset(tf, 0, sizeof(*tf)); - tf->tf_usr_sp = stack; - tf->tf_usr_lr = imgp->entry_addr; - tf->tf_svc_lr = 0x77777777; - tf->tf_pc = imgp->entry_addr; - tf->tf_spsr = PSR_USR32_MODE; - if ((register_t)imgp->entry_addr & 1) - tf->tf_spsr |= PSR_T; -} - -#ifdef VFP -/* - * Get machine VFP context. - */ -void -get_vfpcontext(struct thread *td, mcontext_vfp_t *vfp) -{ - struct pcb *pcb; - - pcb = td->td_pcb; - if (td == curthread) { - critical_enter(); - vfp_store(&pcb->pcb_vfpstate, false); - critical_exit(); - } else - MPASS(TD_IS_SUSPENDED(td)); - memcpy(vfp->mcv_reg, pcb->pcb_vfpstate.reg, - sizeof(vfp->mcv_reg)); - vfp->mcv_fpscr = pcb->pcb_vfpstate.fpscr; -} - -/* - * Set machine VFP context. - */ -void -set_vfpcontext(struct thread *td, mcontext_vfp_t *vfp) -{ - struct pcb *pcb; - - pcb = td->td_pcb; - if (td == curthread) { - critical_enter(); - vfp_discard(td); - critical_exit(); - } else - MPASS(TD_IS_SUSPENDED(td)); - memcpy(pcb->pcb_vfpstate.reg, vfp->mcv_reg, - sizeof(pcb->pcb_vfpstate.reg)); - pcb->pcb_vfpstate.fpscr = vfp->mcv_fpscr; -} -#endif - -int -arm_get_vfpstate(struct thread *td, void *args) -{ - int rv; - struct arm_get_vfpstate_args ua; - mcontext_vfp_t mcontext_vfp; - - rv = copyin(args, &ua, sizeof(ua)); - if (rv != 0) - return (rv); - if (ua.mc_vfp_size != sizeof(mcontext_vfp_t)) - return (EINVAL); -#ifdef VFP - get_vfpcontext(td, &mcontext_vfp); -#else - bzero(&mcontext_vfp, sizeof(mcontext_vfp)); -#endif - - rv = copyout(&mcontext_vfp, ua.mc_vfp, sizeof(mcontext_vfp)); - if (rv != 0) - return (rv); - return (0); -} - -/* - * Get machine context. - */ -int -get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) -{ - struct trapframe *tf = td->td_frame; - __greg_t *gr = mcp->__gregs; - - if (clear_ret & GET_MC_CLEAR_RET) { - gr[_REG_R0] = 0; - gr[_REG_CPSR] = tf->tf_spsr & ~PSR_C; - } else { - gr[_REG_R0] = tf->tf_r0; - gr[_REG_CPSR] = tf->tf_spsr; - } - gr[_REG_R1] = tf->tf_r1; - gr[_REG_R2] = tf->tf_r2; - gr[_REG_R3] = tf->tf_r3; - gr[_REG_R4] = tf->tf_r4; - gr[_REG_R5] = tf->tf_r5; - gr[_REG_R6] = tf->tf_r6; - gr[_REG_R7] = tf->tf_r7; - gr[_REG_R8] = tf->tf_r8; - gr[_REG_R9] = tf->tf_r9; - gr[_REG_R10] = tf->tf_r10; - gr[_REG_R11] = tf->tf_r11; - gr[_REG_R12] = tf->tf_r12; - gr[_REG_SP] = tf->tf_usr_sp; - gr[_REG_LR] = tf->tf_usr_lr; - gr[_REG_PC] = tf->tf_pc; - - mcp->mc_vfp_size = 0; - mcp->mc_vfp_ptr = NULL; - memset(&mcp->mc_spare, 0, sizeof(mcp->mc_spare)); - - return (0); -} - -/* - * Set machine context. - * - * However, we don't set any but the user modifiable flags, and we won't - * touch the cs selector. - */ -int -set_mcontext(struct thread *td, mcontext_t *mcp) -{ - mcontext_vfp_t mc_vfp, *vfp; - struct trapframe *tf = td->td_frame; - const __greg_t *gr = mcp->__gregs; - int spsr; - - /* - * Make sure the processor mode has not been tampered with and - * interrupts have not been disabled. - */ - spsr = gr[_REG_CPSR]; - if ((spsr & PSR_MODE) != PSR_USR32_MODE || - (spsr & (PSR_I | PSR_F)) != 0) - return (EINVAL); - -#ifdef WITNESS - if (mcp->mc_vfp_size != 0 && mcp->mc_vfp_size != sizeof(mc_vfp)) { - printf("%s: %s: Malformed mc_vfp_size: %d (0x%08X)\n", - td->td_proc->p_comm, __func__, - mcp->mc_vfp_size, mcp->mc_vfp_size); - } else if (mcp->mc_vfp_size != 0 && mcp->mc_vfp_ptr == NULL) { - printf("%s: %s: c_vfp_size != 0 but mc_vfp_ptr == NULL\n", - td->td_proc->p_comm, __func__); - } -#endif - - if (mcp->mc_vfp_size == sizeof(mc_vfp) && mcp->mc_vfp_ptr != NULL) { - if (copyin(mcp->mc_vfp_ptr, &mc_vfp, sizeof(mc_vfp)) != 0) - return (EFAULT); - vfp = &mc_vfp; - } else { - vfp = NULL; - } - - tf->tf_r0 = gr[_REG_R0]; - tf->tf_r1 = gr[_REG_R1]; - tf->tf_r2 = gr[_REG_R2]; - tf->tf_r3 = gr[_REG_R3]; - tf->tf_r4 = gr[_REG_R4]; - tf->tf_r5 = gr[_REG_R5]; - tf->tf_r6 = gr[_REG_R6]; - tf->tf_r7 = gr[_REG_R7]; - tf->tf_r8 = gr[_REG_R8]; - tf->tf_r9 = gr[_REG_R9]; - tf->tf_r10 = gr[_REG_R10]; - tf->tf_r11 = gr[_REG_R11]; - tf->tf_r12 = gr[_REG_R12]; - tf->tf_usr_sp = gr[_REG_SP]; - tf->tf_usr_lr = gr[_REG_LR]; - tf->tf_pc = gr[_REG_PC]; - tf->tf_spsr = gr[_REG_CPSR]; -#ifdef VFP - if (vfp != NULL) - set_vfpcontext(td, vfp); -#endif - return (0); -} - -void -sendsig(catcher, ksi, mask) - sig_t catcher; - ksiginfo_t *ksi; - sigset_t *mask; -{ - struct thread *td; - struct proc *p; - struct trapframe *tf; - struct sigframe *fp, frame; - struct sigacts *psp; - struct sysentvec *sysent; - int onstack; - int sig; - int code; - - td = curthread; - p = td->td_proc; - PROC_LOCK_ASSERT(p, MA_OWNED); - sig = ksi->ksi_signo; - code = ksi->ksi_code; - psp = p->p_sigacts; - mtx_assert(&psp->ps_mtx, MA_OWNED); - tf = td->td_frame; - onstack = sigonstack(tf->tf_usr_sp); - - CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, - catcher, sig); - - /* Allocate and validate space for the signal handler context. */ - if ((td->td_pflags & TDP_ALTSTACK) != 0 && !(onstack) && - SIGISMEMBER(psp->ps_sigonstack, sig)) { - fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + - td->td_sigstk.ss_size); -#if defined(COMPAT_43) - td->td_sigstk.ss_flags |= SS_ONSTACK; -#endif - } else - fp = (struct sigframe *)td->td_frame->tf_usr_sp; - - /* make room on the stack */ - fp--; - - /* make the stack aligned */ - fp = (struct sigframe *)STACKALIGN(fp); - /* Populate the siginfo frame. */ - bzero(&frame, sizeof(frame)); - get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); -#ifdef VFP - get_vfpcontext(td, &frame.sf_vfp); - frame.sf_uc.uc_mcontext.mc_vfp_size = sizeof(fp->sf_vfp); - frame.sf_uc.uc_mcontext.mc_vfp_ptr = &fp->sf_vfp; -#else - frame.sf_uc.uc_mcontext.mc_vfp_size = 0; - frame.sf_uc.uc_mcontext.mc_vfp_ptr = NULL; -#endif - frame.sf_si = ksi->ksi_info; - frame.sf_uc.uc_sigmask = *mask; - frame.sf_uc.uc_stack = td->td_sigstk; - frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) != 0 ? - (onstack ? SS_ONSTACK : 0) : SS_DISABLE; - mtx_unlock(&psp->ps_mtx); - PROC_UNLOCK(td->td_proc); - - /* Copy the sigframe out to the user's stack. */ - if (copyout(&frame, fp, sizeof(*fp)) != 0) { - /* Process has trashed its stack. Kill it. */ - CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); - PROC_LOCK(p); - sigexit(td, SIGILL); - } - - /* - * Build context to run handler in. We invoke the handler - * directly, only returning via the trampoline. Note the - * trampoline version numbers are coordinated with machine- - * dependent code in libc. - */ - - tf->tf_r0 = sig; - tf->tf_r1 = (register_t)&fp->sf_si; - tf->tf_r2 = (register_t)&fp->sf_uc; - - /* the trampoline uses r5 as the uc address */ - tf->tf_r5 = (register_t)&fp->sf_uc; - tf->tf_pc = (register_t)catcher; - tf->tf_usr_sp = (register_t)fp; - sysent = p->p_sysent; - if (sysent->sv_sigcode_base != 0) - tf->tf_usr_lr = (register_t)sysent->sv_sigcode_base; - else - tf->tf_usr_lr = (register_t)(sysent->sv_psstrings - - *(sysent->sv_szsigcode)); - /* Set the mode to enter in the signal handler */ -#if __ARM_ARCH >= 7 - if ((register_t)catcher & 1) - tf->tf_spsr |= PSR_T; - else - tf->tf_spsr &= ~PSR_T; -#endif - - CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_usr_lr, - tf->tf_usr_sp); - - PROC_LOCK(p); - mtx_lock(&psp->ps_mtx); -} - -int -sys_sigreturn(td, uap) - struct thread *td; - struct sigreturn_args /* { - const struct __ucontext *sigcntxp; - } */ *uap; -{ - ucontext_t uc; - int error; - - if (uap == NULL) - return (EFAULT); - if (copyin(uap->sigcntxp, &uc, sizeof(uc))) - return (EFAULT); - /* Restore register context. */ - error = set_mcontext(td, &uc.uc_mcontext); - if (error != 0) - return (error); - - /* Restore signal mask. */ - kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0); - - return (EJUSTRETURN); -} - /* * Construct a PCB from a trapframe. This is called from kdb_trap() where * we want to start a backtrace from the function that caused us to enter diff --git a/sys/conf/files.arm b/sys/conf/files.arm index 76f62eb2e14e..ce9c4933a024 100644 --- a/sys/conf/files.arm +++ b/sys/conf/files.arm @@ -25,6 +25,7 @@ arm/arm/dump_machdep.c standard arm/arm/elf_machdep.c standard arm/arm/elf_note.S standard arm/arm/exception.S standard +arm/arm/exec_machdep.c standard arm/arm/fiq.c standard arm/arm/fiq_subr.S standard arm/arm/fusu.S standard From nobody Fri Oct 8 00:21:20 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 68FE017E3E32; Fri, 8 Oct 2021 00:21: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 4HQTPs09dXz3Q48; Fri, 8 Oct 2021 00:21: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 84E281D526; Fri, 8 Oct 2021 00:21: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 1980LKSg038994; Fri, 8 Oct 2021 00:21:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980LKca038993; Fri, 8 Oct 2021 00:21:20 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:21:20 GMT Message-Id: <202110080021.1980LKca038993@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: aba66031f27c - main - riscv: move signal delivery code to exec_machdep.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: aba66031f27cec0bf9f6c6bc5d857e03eaf97d4f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=aba66031f27cec0bf9f6c6bc5d857e03eaf97d4f commit aba66031f27cec0bf9f6c6bc5d857e03eaf97d4f Author: Konstantin Belousov AuthorDate: 2021-10-04 15:15:17 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:20:42 +0000 riscv: move signal delivery code to exec_machdep.c Reviewed by: emaste, imp Discussed with: jrtc27 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32310 --- sys/conf/files.riscv | 2 + sys/riscv/riscv/exec_machdep.c | 420 +++++++++++++++++++++++++++++++++++++++ sys/riscv/riscv/machdep.c | 386 +---------------------------------- sys/riscv/riscv/ptrace_machdep.c | 90 +++++++++ 4 files changed, 515 insertions(+), 383 deletions(-) diff --git a/sys/conf/files.riscv b/sys/conf/files.riscv index c5eef10f3519..72939b42d67d 100644 --- a/sys/conf/files.riscv +++ b/sys/conf/files.riscv @@ -45,6 +45,7 @@ riscv/riscv/db_trace.c optional ddb riscv/riscv/dump_machdep.c standard riscv/riscv/elf_machdep.c standard riscv/riscv/exception.S standard +riscv/riscv/exec_machdep.c standard riscv/riscv/intr_machdep.c standard riscv/riscv/in_cksum.c optional inet | inet6 riscv/riscv/identcpu.c standard @@ -57,6 +58,7 @@ riscv/riscv/nexus.c standard riscv/riscv/ofw_machdep.c optional fdt riscv/riscv/plic.c standard riscv/riscv/pmap.c standard +riscv/riscv/ptrace_machdep.c standard riscv/riscv/riscv_console.c optional rcons riscv/riscv/riscv_syscon.c optional ext_resources syscon riscv_syscon fdt riscv/riscv/sbi.c standard diff --git a/sys/riscv/riscv/exec_machdep.c b/sys/riscv/riscv/exec_machdep.c new file mode 100644 index 000000000000..8bc9ba1df568 --- /dev/null +++ b/sys/riscv/riscv/exec_machdep.c @@ -0,0 +1,420 @@ +/*- + * Copyright (c) 2014 Andrew Turner + * Copyright (c) 2015-2017 Ruslan Bukin + * All rights reserved. + * + * Portions of this software were developed by SRI International and the + * University of Cambridge Computer Laboratory under DARPA/AFRL contract + * FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme. + * + * Portions of this software were developed by the University of Cambridge + * Computer Laboratory as part of the CTSRD Project, with support from the + * UK Higher Education Innovation Fund (HEIF). + * + * 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef FPE +#include +#endif + +static void get_fpcontext(struct thread *td, mcontext_t *mcp); +static void set_fpcontext(struct thread *td, mcontext_t *mcp); + +int +fill_regs(struct thread *td, struct reg *regs) +{ + struct trapframe *frame; + + frame = td->td_frame; + regs->sepc = frame->tf_sepc; + regs->sstatus = frame->tf_sstatus; + regs->ra = frame->tf_ra; + regs->sp = frame->tf_sp; + regs->gp = frame->tf_gp; + regs->tp = frame->tf_tp; + + memcpy(regs->t, frame->tf_t, sizeof(regs->t)); + memcpy(regs->s, frame->tf_s, sizeof(regs->s)); + memcpy(regs->a, frame->tf_a, sizeof(regs->a)); + + return (0); +} + +int +set_regs(struct thread *td, struct reg *regs) +{ + struct trapframe *frame; + + frame = td->td_frame; + frame->tf_sepc = regs->sepc; + frame->tf_ra = regs->ra; + frame->tf_sp = regs->sp; + frame->tf_gp = regs->gp; + frame->tf_tp = regs->tp; + + memcpy(frame->tf_t, regs->t, sizeof(frame->tf_t)); + memcpy(frame->tf_s, regs->s, sizeof(frame->tf_s)); + memcpy(frame->tf_a, regs->a, sizeof(frame->tf_a)); + + return (0); +} + +int +fill_fpregs(struct thread *td, struct fpreg *regs) +{ +#ifdef FPE + struct pcb *pcb; + + pcb = td->td_pcb; + + if ((pcb->pcb_fpflags & PCB_FP_STARTED) != 0) { + /* + * If we have just been running FPE instructions we will + * need to save the state to memcpy it below. + */ + if (td == curthread) + fpe_state_save(td); + + memcpy(regs->fp_x, pcb->pcb_x, sizeof(regs->fp_x)); + regs->fp_fcsr = pcb->pcb_fcsr; + } else +#endif + memset(regs, 0, sizeof(*regs)); + + return (0); +} + +int +set_fpregs(struct thread *td, struct fpreg *regs) +{ +#ifdef FPE + struct trapframe *frame; + struct pcb *pcb; + + frame = td->td_frame; + pcb = td->td_pcb; + + memcpy(pcb->pcb_x, regs->fp_x, sizeof(regs->fp_x)); + pcb->pcb_fcsr = regs->fp_fcsr; + pcb->pcb_fpflags |= PCB_FP_STARTED; + frame->tf_sstatus &= ~SSTATUS_FS_MASK; + frame->tf_sstatus |= SSTATUS_FS_CLEAN; +#endif + + return (0); +} + +int +fill_dbregs(struct thread *td, struct dbreg *regs) +{ + + panic("fill_dbregs"); +} + +int +set_dbregs(struct thread *td, struct dbreg *regs) +{ + + panic("set_dbregs"); +} + +void +exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) +{ + struct trapframe *tf; + struct pcb *pcb; + + tf = td->td_frame; + pcb = td->td_pcb; + + memset(tf, 0, sizeof(struct trapframe)); + + tf->tf_a[0] = stack; + tf->tf_sp = STACKALIGN(stack); + tf->tf_ra = imgp->entry_addr; + tf->tf_sepc = imgp->entry_addr; + + pcb->pcb_fpflags &= ~PCB_FP_STARTED; +} + +/* Sanity check these are the same size, they will be memcpy'd to and from */ +CTASSERT(sizeof(((struct trapframe *)0)->tf_a) == + sizeof((struct gpregs *)0)->gp_a); +CTASSERT(sizeof(((struct trapframe *)0)->tf_s) == + sizeof((struct gpregs *)0)->gp_s); +CTASSERT(sizeof(((struct trapframe *)0)->tf_t) == + sizeof((struct gpregs *)0)->gp_t); +CTASSERT(sizeof(((struct trapframe *)0)->tf_a) == + sizeof((struct reg *)0)->a); +CTASSERT(sizeof(((struct trapframe *)0)->tf_s) == + sizeof((struct reg *)0)->s); +CTASSERT(sizeof(((struct trapframe *)0)->tf_t) == + sizeof((struct reg *)0)->t); + +int +get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) +{ + struct trapframe *tf = td->td_frame; + + memcpy(mcp->mc_gpregs.gp_t, tf->tf_t, sizeof(mcp->mc_gpregs.gp_t)); + memcpy(mcp->mc_gpregs.gp_s, tf->tf_s, sizeof(mcp->mc_gpregs.gp_s)); + memcpy(mcp->mc_gpregs.gp_a, tf->tf_a, sizeof(mcp->mc_gpregs.gp_a)); + + if (clear_ret & GET_MC_CLEAR_RET) { + mcp->mc_gpregs.gp_a[0] = 0; + mcp->mc_gpregs.gp_t[0] = 0; /* clear syscall error */ + } + + mcp->mc_gpregs.gp_ra = tf->tf_ra; + mcp->mc_gpregs.gp_sp = tf->tf_sp; + mcp->mc_gpregs.gp_gp = tf->tf_gp; + mcp->mc_gpregs.gp_tp = tf->tf_tp; + mcp->mc_gpregs.gp_sepc = tf->tf_sepc; + mcp->mc_gpregs.gp_sstatus = tf->tf_sstatus; + get_fpcontext(td, mcp); + + return (0); +} + +int +set_mcontext(struct thread *td, mcontext_t *mcp) +{ + struct trapframe *tf; + + tf = td->td_frame; + + /* + * Permit changes to the USTATUS bits of SSTATUS. + * + * Ignore writes to read-only bits (SD, XS). + * + * Ignore writes to the FS field as set_fpcontext() will set + * it explicitly. + */ + if (((mcp->mc_gpregs.gp_sstatus ^ tf->tf_sstatus) & + ~(SSTATUS_SD | SSTATUS_XS_MASK | SSTATUS_FS_MASK | SSTATUS_UPIE | + SSTATUS_UIE)) != 0) + return (EINVAL); + + memcpy(tf->tf_t, mcp->mc_gpregs.gp_t, sizeof(tf->tf_t)); + memcpy(tf->tf_s, mcp->mc_gpregs.gp_s, sizeof(tf->tf_s)); + memcpy(tf->tf_a, mcp->mc_gpregs.gp_a, sizeof(tf->tf_a)); + + tf->tf_ra = mcp->mc_gpregs.gp_ra; + tf->tf_sp = mcp->mc_gpregs.gp_sp; + tf->tf_gp = mcp->mc_gpregs.gp_gp; + tf->tf_sepc = mcp->mc_gpregs.gp_sepc; + tf->tf_sstatus = mcp->mc_gpregs.gp_sstatus; + set_fpcontext(td, mcp); + + return (0); +} + +static void +get_fpcontext(struct thread *td, mcontext_t *mcp) +{ +#ifdef FPE + struct pcb *curpcb; + + critical_enter(); + + curpcb = curthread->td_pcb; + + KASSERT(td->td_pcb == curpcb, ("Invalid fpe pcb")); + + if ((curpcb->pcb_fpflags & PCB_FP_STARTED) != 0) { + /* + * If we have just been running FPE instructions we will + * need to save the state to memcpy it below. + */ + fpe_state_save(td); + + KASSERT((curpcb->pcb_fpflags & ~PCB_FP_USERMASK) == 0, + ("Non-userspace FPE flags set in get_fpcontext")); + memcpy(mcp->mc_fpregs.fp_x, curpcb->pcb_x, + sizeof(mcp->mc_fpregs.fp_x)); + mcp->mc_fpregs.fp_fcsr = curpcb->pcb_fcsr; + mcp->mc_fpregs.fp_flags = curpcb->pcb_fpflags; + mcp->mc_flags |= _MC_FP_VALID; + } + + critical_exit(); +#endif +} + +static void +set_fpcontext(struct thread *td, mcontext_t *mcp) +{ +#ifdef FPE + struct pcb *curpcb; +#endif + + td->td_frame->tf_sstatus &= ~SSTATUS_FS_MASK; + td->td_frame->tf_sstatus |= SSTATUS_FS_OFF; + +#ifdef FPE + critical_enter(); + + if ((mcp->mc_flags & _MC_FP_VALID) != 0) { + curpcb = curthread->td_pcb; + /* FPE usage is enabled, override registers. */ + memcpy(curpcb->pcb_x, mcp->mc_fpregs.fp_x, + sizeof(mcp->mc_fpregs.fp_x)); + curpcb->pcb_fcsr = mcp->mc_fpregs.fp_fcsr; + curpcb->pcb_fpflags = mcp->mc_fpregs.fp_flags & PCB_FP_USERMASK; + td->td_frame->tf_sstatus |= SSTATUS_FS_CLEAN; + } + + critical_exit(); +#endif +} + +int +sys_sigreturn(struct thread *td, struct sigreturn_args *uap) +{ + ucontext_t uc; + int error; + + if (copyin(uap->sigcntxp, &uc, sizeof(uc))) + return (EFAULT); + + error = set_mcontext(td, &uc.uc_mcontext); + if (error != 0) + return (error); + + /* Restore signal mask. */ + kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0); + + return (EJUSTRETURN); +} + +void +sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct sigframe *fp, frame; + struct sysentvec *sysent; + struct trapframe *tf; + struct sigacts *psp; + struct thread *td; + struct proc *p; + int onstack; + int sig; + + td = curthread; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + + sig = ksi->ksi_signo; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + + tf = td->td_frame; + onstack = sigonstack(tf->tf_sp); + + CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, + catcher, sig); + + /* Allocate and validate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !onstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + + td->td_sigstk.ss_size); + } else { + fp = (struct sigframe *)td->td_frame->tf_sp; + } + + /* Make room, keeping the stack aligned */ + fp--; + fp = (struct sigframe *)STACKALIGN(fp); + + /* Fill in the frame to copy out */ + bzero(&frame, sizeof(frame)); + get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); + frame.sf_si = ksi->ksi_info; + frame.sf_uc.uc_sigmask = *mask; + frame.sf_uc.uc_stack = td->td_sigstk; + frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) != 0 ? + (onstack ? SS_ONSTACK : 0) : SS_DISABLE; + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(td->td_proc); + + /* Copy the sigframe out to the user's stack. */ + if (copyout(&frame, fp, sizeof(*fp)) != 0) { + /* Process has trashed its stack. Kill it. */ + CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + tf->tf_a[0] = sig; + tf->tf_a[1] = (register_t)&fp->sf_si; + tf->tf_a[2] = (register_t)&fp->sf_uc; + + tf->tf_sepc = (register_t)catcher; + tf->tf_sp = (register_t)fp; + + sysent = p->p_sysent; + if (sysent->sv_sigcode_base != 0) + tf->tf_ra = (register_t)sysent->sv_sigcode_base; + else + tf->tf_ra = (register_t)(sysent->sv_psstrings - + *(sysent->sv_szsigcode)); + + CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_sepc, + tf->tf_sp); + + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} diff --git a/sys/riscv/riscv/machdep.c b/sys/riscv/riscv/machdep.c index ad57e8339c7d..340b94448cfe 100644 --- a/sys/riscv/riscv/machdep.c +++ b/sys/riscv/riscv/machdep.c @@ -102,9 +102,6 @@ __FBSDID("$FreeBSD$"); #include #endif -static void get_fpcontext(struct thread *td, mcontext_t *mcp); -static void set_fpcontext(struct thread *td, mcontext_t *mcp); - struct pcpu __pcpu[MAXCPU]; static struct trapframe proc0_tf; @@ -182,282 +179,6 @@ cpu_idle_wakeup(int cpu) return (0); } -int -fill_regs(struct thread *td, struct reg *regs) -{ - struct trapframe *frame; - - frame = td->td_frame; - regs->sepc = frame->tf_sepc; - regs->sstatus = frame->tf_sstatus; - regs->ra = frame->tf_ra; - regs->sp = frame->tf_sp; - regs->gp = frame->tf_gp; - regs->tp = frame->tf_tp; - - memcpy(regs->t, frame->tf_t, sizeof(regs->t)); - memcpy(regs->s, frame->tf_s, sizeof(regs->s)); - memcpy(regs->a, frame->tf_a, sizeof(regs->a)); - - return (0); -} - -int -set_regs(struct thread *td, struct reg *regs) -{ - struct trapframe *frame; - - frame = td->td_frame; - frame->tf_sepc = regs->sepc; - frame->tf_ra = regs->ra; - frame->tf_sp = regs->sp; - frame->tf_gp = regs->gp; - frame->tf_tp = regs->tp; - - memcpy(frame->tf_t, regs->t, sizeof(frame->tf_t)); - memcpy(frame->tf_s, regs->s, sizeof(frame->tf_s)); - memcpy(frame->tf_a, regs->a, sizeof(frame->tf_a)); - - return (0); -} - -int -fill_fpregs(struct thread *td, struct fpreg *regs) -{ -#ifdef FPE - struct pcb *pcb; - - pcb = td->td_pcb; - - if ((pcb->pcb_fpflags & PCB_FP_STARTED) != 0) { - /* - * If we have just been running FPE instructions we will - * need to save the state to memcpy it below. - */ - if (td == curthread) - fpe_state_save(td); - - memcpy(regs->fp_x, pcb->pcb_x, sizeof(regs->fp_x)); - regs->fp_fcsr = pcb->pcb_fcsr; - } else -#endif - memset(regs, 0, sizeof(*regs)); - - return (0); -} - -int -set_fpregs(struct thread *td, struct fpreg *regs) -{ -#ifdef FPE - struct trapframe *frame; - struct pcb *pcb; - - frame = td->td_frame; - pcb = td->td_pcb; - - memcpy(pcb->pcb_x, regs->fp_x, sizeof(regs->fp_x)); - pcb->pcb_fcsr = regs->fp_fcsr; - pcb->pcb_fpflags |= PCB_FP_STARTED; - frame->tf_sstatus &= ~SSTATUS_FS_MASK; - frame->tf_sstatus |= SSTATUS_FS_CLEAN; -#endif - - return (0); -} - -int -fill_dbregs(struct thread *td, struct dbreg *regs) -{ - - panic("fill_dbregs"); -} - -int -set_dbregs(struct thread *td, struct dbreg *regs) -{ - - panic("set_dbregs"); -} - -int -ptrace_set_pc(struct thread *td, u_long addr) -{ - - td->td_frame->tf_sepc = addr; - return (0); -} - -int -ptrace_single_step(struct thread *td) -{ - - /* TODO; */ - return (EOPNOTSUPP); -} - -int -ptrace_clear_single_step(struct thread *td) -{ - - /* TODO; */ - return (EOPNOTSUPP); -} - -void -exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) -{ - struct trapframe *tf; - struct pcb *pcb; - - tf = td->td_frame; - pcb = td->td_pcb; - - memset(tf, 0, sizeof(struct trapframe)); - - tf->tf_a[0] = stack; - tf->tf_sp = STACKALIGN(stack); - tf->tf_ra = imgp->entry_addr; - tf->tf_sepc = imgp->entry_addr; - - pcb->pcb_fpflags &= ~PCB_FP_STARTED; -} - -/* Sanity check these are the same size, they will be memcpy'd to and fro */ -CTASSERT(sizeof(((struct trapframe *)0)->tf_a) == - sizeof((struct gpregs *)0)->gp_a); -CTASSERT(sizeof(((struct trapframe *)0)->tf_s) == - sizeof((struct gpregs *)0)->gp_s); -CTASSERT(sizeof(((struct trapframe *)0)->tf_t) == - sizeof((struct gpregs *)0)->gp_t); -CTASSERT(sizeof(((struct trapframe *)0)->tf_a) == - sizeof((struct reg *)0)->a); -CTASSERT(sizeof(((struct trapframe *)0)->tf_s) == - sizeof((struct reg *)0)->s); -CTASSERT(sizeof(((struct trapframe *)0)->tf_t) == - sizeof((struct reg *)0)->t); - -/* Support for FDT configurations only. */ -CTASSERT(FDT); - -int -get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret) -{ - struct trapframe *tf = td->td_frame; - - memcpy(mcp->mc_gpregs.gp_t, tf->tf_t, sizeof(mcp->mc_gpregs.gp_t)); - memcpy(mcp->mc_gpregs.gp_s, tf->tf_s, sizeof(mcp->mc_gpregs.gp_s)); - memcpy(mcp->mc_gpregs.gp_a, tf->tf_a, sizeof(mcp->mc_gpregs.gp_a)); - - if (clear_ret & GET_MC_CLEAR_RET) { - mcp->mc_gpregs.gp_a[0] = 0; - mcp->mc_gpregs.gp_t[0] = 0; /* clear syscall error */ - } - - mcp->mc_gpregs.gp_ra = tf->tf_ra; - mcp->mc_gpregs.gp_sp = tf->tf_sp; - mcp->mc_gpregs.gp_gp = tf->tf_gp; - mcp->mc_gpregs.gp_tp = tf->tf_tp; - mcp->mc_gpregs.gp_sepc = tf->tf_sepc; - mcp->mc_gpregs.gp_sstatus = tf->tf_sstatus; - get_fpcontext(td, mcp); - - return (0); -} - -int -set_mcontext(struct thread *td, mcontext_t *mcp) -{ - struct trapframe *tf; - - tf = td->td_frame; - - /* - * Permit changes to the USTATUS bits of SSTATUS. - * - * Ignore writes to read-only bits (SD, XS). - * - * Ignore writes to the FS field as set_fpcontext() will set - * it explicitly. - */ - if (((mcp->mc_gpregs.gp_sstatus ^ tf->tf_sstatus) & - ~(SSTATUS_SD | SSTATUS_XS_MASK | SSTATUS_FS_MASK | SSTATUS_UPIE | - SSTATUS_UIE)) != 0) - return (EINVAL); - - memcpy(tf->tf_t, mcp->mc_gpregs.gp_t, sizeof(tf->tf_t)); - memcpy(tf->tf_s, mcp->mc_gpregs.gp_s, sizeof(tf->tf_s)); - memcpy(tf->tf_a, mcp->mc_gpregs.gp_a, sizeof(tf->tf_a)); - - tf->tf_ra = mcp->mc_gpregs.gp_ra; - tf->tf_sp = mcp->mc_gpregs.gp_sp; - tf->tf_gp = mcp->mc_gpregs.gp_gp; - tf->tf_sepc = mcp->mc_gpregs.gp_sepc; - tf->tf_sstatus = mcp->mc_gpregs.gp_sstatus; - set_fpcontext(td, mcp); - - return (0); -} - -static void -get_fpcontext(struct thread *td, mcontext_t *mcp) -{ -#ifdef FPE - struct pcb *curpcb; - - critical_enter(); - - curpcb = curthread->td_pcb; - - KASSERT(td->td_pcb == curpcb, ("Invalid fpe pcb")); - - if ((curpcb->pcb_fpflags & PCB_FP_STARTED) != 0) { - /* - * If we have just been running FPE instructions we will - * need to save the state to memcpy it below. - */ - fpe_state_save(td); - - KASSERT((curpcb->pcb_fpflags & ~PCB_FP_USERMASK) == 0, - ("Non-userspace FPE flags set in get_fpcontext")); - memcpy(mcp->mc_fpregs.fp_x, curpcb->pcb_x, - sizeof(mcp->mc_fpregs.fp_x)); - mcp->mc_fpregs.fp_fcsr = curpcb->pcb_fcsr; - mcp->mc_fpregs.fp_flags = curpcb->pcb_fpflags; - mcp->mc_flags |= _MC_FP_VALID; - } - - critical_exit(); -#endif -} - -static void -set_fpcontext(struct thread *td, mcontext_t *mcp) -{ -#ifdef FPE - struct pcb *curpcb; -#endif - - td->td_frame->tf_sstatus &= ~SSTATUS_FS_MASK; - td->td_frame->tf_sstatus |= SSTATUS_FS_OFF; - -#ifdef FPE - critical_enter(); - - if ((mcp->mc_flags & _MC_FP_VALID) != 0) { - curpcb = curthread->td_pcb; - /* FPE usage is enabled, override registers. */ - memcpy(curpcb->pcb_x, mcp->mc_fpregs.fp_x, - sizeof(mcp->mc_fpregs.fp_x)); - curpcb->pcb_fcsr = mcp->mc_fpregs.fp_fcsr; - curpcb->pcb_fpflags = mcp->mc_fpregs.fp_flags & PCB_FP_USERMASK; - td->td_frame->tf_sstatus |= SSTATUS_FS_CLEAN; - } - - critical_exit(); -#endif -} - void cpu_idle(int busy) { @@ -545,31 +266,6 @@ spinlock_exit(void) } } -#ifndef _SYS_SYSPROTO_H_ -struct sigreturn_args { - ucontext_t *ucp; -}; -#endif - -int -sys_sigreturn(struct thread *td, struct sigreturn_args *uap) -{ - ucontext_t uc; - int error; - - if (copyin(uap->sigcntxp, &uc, sizeof(uc))) - return (EFAULT); - - error = set_mcontext(td, &uc.uc_mcontext); - if (error != 0) - return (error); - - /* Restore signal mask. */ - kern_sigprocmask(td, SIG_SETMASK, &uc.uc_sigmask, NULL, 0); - - return (EJUSTRETURN); -} - /* * Construct a PCB from a trapframe. This is called from kdb_trap() where * we want to start a backtrace from the function that caused us to enter @@ -589,85 +285,6 @@ makectx(struct trapframe *tf, struct pcb *pcb) pcb->pcb_tp = tf->tf_tp; } -void -sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) -{ - struct sigframe *fp, frame; - struct sysentvec *sysent; - struct trapframe *tf; - struct sigacts *psp; - struct thread *td; - struct proc *p; - int onstack; - int sig; - - td = curthread; - p = td->td_proc; - PROC_LOCK_ASSERT(p, MA_OWNED); - - sig = ksi->ksi_signo; - psp = p->p_sigacts; - mtx_assert(&psp->ps_mtx, MA_OWNED); - - tf = td->td_frame; - onstack = sigonstack(tf->tf_sp); - - CTR4(KTR_SIG, "sendsig: td=%p (%s) catcher=%p sig=%d", td, p->p_comm, - catcher, sig); - - /* Allocate and validate space for the signal handler context. */ - if ((td->td_pflags & TDP_ALTSTACK) != 0 && !onstack && - SIGISMEMBER(psp->ps_sigonstack, sig)) { - fp = (struct sigframe *)((uintptr_t)td->td_sigstk.ss_sp + - td->td_sigstk.ss_size); - } else { - fp = (struct sigframe *)td->td_frame->tf_sp; - } - - /* Make room, keeping the stack aligned */ - fp--; - fp = (struct sigframe *)STACKALIGN(fp); - - /* Fill in the frame to copy out */ - bzero(&frame, sizeof(frame)); - get_mcontext(td, &frame.sf_uc.uc_mcontext, 0); - frame.sf_si = ksi->ksi_info; - frame.sf_uc.uc_sigmask = *mask; - frame.sf_uc.uc_stack = td->td_sigstk; - frame.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) != 0 ? - (onstack ? SS_ONSTACK : 0) : SS_DISABLE; - mtx_unlock(&psp->ps_mtx); - PROC_UNLOCK(td->td_proc); - - /* Copy the sigframe out to the user's stack. */ - if (copyout(&frame, fp, sizeof(*fp)) != 0) { - /* Process has trashed its stack. Kill it. */ - CTR2(KTR_SIG, "sendsig: sigexit td=%p fp=%p", td, fp); - PROC_LOCK(p); - sigexit(td, SIGILL); - } - - tf->tf_a[0] = sig; - tf->tf_a[1] = (register_t)&fp->sf_si; - tf->tf_a[2] = (register_t)&fp->sf_uc; - - tf->tf_sepc = (register_t)catcher; - tf->tf_sp = (register_t)fp; - - sysent = p->p_sysent; - if (sysent->sv_sigcode_base != 0) - tf->tf_ra = (register_t)sysent->sv_sigcode_base; - else - tf->tf_ra = (register_t)(sysent->sv_psstrings - - *(sysent->sv_szsigcode)); - - CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_sepc, - tf->tf_sp); - - PROC_LOCK(p); - mtx_lock(&psp->ps_mtx); -} - static void init_proc0(vm_offset_t kstack) { @@ -803,6 +420,9 @@ fake_preload_metadata(struct riscv_bootparams *rvbp) rvbp->kern_phys, rvbp->kern_phys + (lastaddr - KERNBASE)); } +/* Support for FDT configurations only. */ +CTASSERT(FDT); + #ifdef FDT static void parse_fdt_bootargs(void) diff --git a/sys/riscv/riscv/ptrace_machdep.c b/sys/riscv/riscv/ptrace_machdep.c new file mode 100644 index 000000000000..e42bc8bf6b1b --- /dev/null +++ b/sys/riscv/riscv/ptrace_machdep.c @@ -0,0 +1,90 @@ +/*- + * Copyright (c) 2014 Andrew Turner + * Copyright (c) 2015-2017 Ruslan Bukin + * All rights reserved. + * + * Portions of this software were developed by SRI International and the + * University of Cambridge Computer Laboratory under DARPA/AFRL contract + * FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme. + * + * Portions of this software were developed by the University of Cambridge + * Computer Laboratory as part of the CTSRD Project, with support from the + * UK Higher Education Innovation Fund (HEIF). + * + * 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +int +ptrace_set_pc(struct thread *td, u_long addr) +{ + + td->td_frame->tf_sepc = addr; + return (0); +} + +int +ptrace_single_step(struct thread *td) +{ + + /* TODO; */ + return (EOPNOTSUPP); +} + +int +ptrace_clear_single_step(struct thread *td) +{ + *** 4 LINES SKIPPED *** From nobody Fri Oct 8 00:22:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7B1BA17E529A; Fri, 8 Oct 2021 00:22: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 4HQTQj5xQNz3R55; Fri, 8 Oct 2021 00:22: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 3058F1D3C8; Fri, 8 Oct 2021 00:22: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 1980M5Xf042197; Fri, 8 Oct 2021 00:22:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980M5gi042182; Fri, 8 Oct 2021 00:22:05 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:22:05 GMT Message-Id: <202110080022.1980M5gi042182@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: dc2d0899bba6 - main - kern_sig.c: Remove unused SIGPROP_CANTMASK List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: dc2d0899bba62d79083daeb83c6fac49abf28c3b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=dc2d0899bba62d79083daeb83c6fac49abf28c3b commit dc2d0899bba62d79083daeb83c6fac49abf28c3b Author: Konstantin Belousov AuthorDate: 2021-10-05 04:55:54 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:21:42 +0000 kern_sig.c: Remove unused SIGPROP_CANTMASK Reviewed by: imp, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32313 --- sys/kern/kern_sig.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index b88556f2954d..c891cc1fbbad 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -214,7 +214,6 @@ SYSCTL_INT(_kern, OID_AUTO, coredump_devctl, CTLFLAG_RW, &coredump_devctl, #define SIGPROP_TTYSTOP 0x08 /* ditto, from tty */ #define SIGPROP_IGNORE 0x10 /* ignore by default */ #define SIGPROP_CONT 0x20 /* continue if suspended */ -#define SIGPROP_CANTMASK 0x40 /* non-maskable, catchable */ static int sigproptbl[NSIG] = { [SIGHUP] = SIGPROP_KILL, From nobody Fri Oct 8 00:22:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D28BE17E52A0; Fri, 8 Oct 2021 00:22: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 4HQTQk3FVlz3R9D; Fri, 8 Oct 2021 00:22: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 4BBB21CEE1; Fri, 8 Oct 2021 00:22: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 1980M6hd042990; Fri, 8 Oct 2021 00:22:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980M645042980; Fri, 8 Oct 2021 00:22:06 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:22:06 GMT Message-Id: <202110080022.1980M645042980@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: 7a9775e9d06f - main - sys/proc.h: remove dead prototype List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 7a9775e9d06f629c5441124204d68d43a9f326dc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=7a9775e9d06f629c5441124204d68d43a9f326dc commit 7a9775e9d06f629c5441124204d68d43a9f326dc Author: Konstantin Belousov AuthorDate: 2021-10-05 05:07:27 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:21:43 +0000 sys/proc.h: remove dead prototype Reviewed by: imp, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32313 --- sys/sys/proc.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 8fa9406bd378..a9cef631529d 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -1161,7 +1161,6 @@ int cpu_idle_wakeup(int); extern void (*cpu_idle_hook)(sbintime_t); /* Hook to machdep CPU idler. */ void cpu_switch(struct thread *, struct thread *, struct mtx *); void cpu_throw(struct thread *, struct thread *) __dead2; -void unsleep(struct thread *); void userret(struct thread *, struct trapframe *); void cpu_exit(struct thread *); From nobody Fri Oct 8 00:22:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 809E717E50EA; Fri, 8 Oct 2021 00:22: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 4HQTQm0CNZz3RCx; Fri, 8 Oct 2021 00:22: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 70EF01D536; Fri, 8 Oct 2021 00:22: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 1980M71s043243; Fri, 8 Oct 2021 00:22:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980M704043242; Fri, 8 Oct 2021 00:22:07 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:22:07 GMT Message-Id: <202110080022.1980M704043242@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: 244ab56611c1 - main - Add curproc_sigkilled() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 244ab56611c15e737b76cb3950c32e37b67c26fc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=244ab56611c15e737b76cb3950c32e37b67c26fc commit 244ab56611c15e737b76cb3950c32e37b67c26fc Author: Konstantin Belousov AuthorDate: 2021-10-05 05:08:51 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:21:43 +0000 Add curproc_sigkilled() Function returns an indicator that the process was killed with SIGKILL Reviewed by: imp, markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32313 --- sys/kern/kern_sig.c | 23 +++++++++++++++++++++++ sys/sys/proc.h | 1 + 2 files changed, 24 insertions(+) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index c891cc1fbbad..edafa7eda57a 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -3296,6 +3296,29 @@ sig_intr(void) return (ret); } +bool +curproc_sigkilled(void) +{ + struct thread *td; + struct proc *p; + struct sigacts *ps; + bool res; + + td = curthread; + if ((td->td_flags & TDF_NEEDSIGCHK) == 0) + return (false); + + p = td->td_proc; + PROC_LOCK(p); + ps = p->p_sigacts; + mtx_lock(&ps->ps_mtx); + res = SIGISMEMBER(td->td_sigqueue.sq_signals, SIGKILL) || + SIGISMEMBER(p->p_sigqueue.sq_signals, SIGKILL); + mtx_unlock(&ps->ps_mtx); + PROC_UNLOCK(p); + return (res); +} + void proc_wkilled(struct proc *p) { diff --git a/sys/sys/proc.h b/sys/sys/proc.h index a9cef631529d..691bdae8b41a 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -1161,6 +1161,7 @@ int cpu_idle_wakeup(int); extern void (*cpu_idle_hook)(sbintime_t); /* Hook to machdep CPU idler. */ void cpu_switch(struct thread *, struct thread *, struct mtx *); void cpu_throw(struct thread *, struct thread *) __dead2; +bool curproc_sigkilled(void); void userret(struct thread *, struct trapframe *); void cpu_exit(struct thread *); From nobody Fri Oct 8 00:22:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 84AB217E5163; Fri, 8 Oct 2021 00:22: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 4HQTQn4CrHz3R9P; Fri, 8 Oct 2021 00:22: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 883EC1D695; Fri, 8 Oct 2021 00:22: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 1980M8Gl043267; Fri, 8 Oct 2021 00:22:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980M8il043266; Fri, 8 Oct 2021 00:22:08 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:22:08 GMT Message-Id: <202110080022.1980M8il043266@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: 2ec505d2b863 - main - core(5): explicitly mention the core file size limit name List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 2ec505d2b863ca03d542a94e8417358e48e2606d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2ec505d2b863ca03d542a94e8417358e48e2606d commit 2ec505d2b863ca03d542a94e8417358e48e2606d Author: Konstantin Belousov AuthorDate: 2021-10-05 14:52:44 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:21:43 +0000 core(5): explicitly mention the core file size limit name Reviewed by: imp, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32313 --- share/man/man5/core.5 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/share/man/man5/core.5 b/share/man/man5/core.5 index 500da31a310c..d176548d1570 100644 --- a/share/man/man5/core.5 +++ b/share/man/man5/core.5 @@ -51,8 +51,10 @@ a system crash. (In this event, the decision to save the core file is arbitrary, see .Xr savecore 8 . ) .Pp -The maximum size of a core file is limited by -.Xr setrlimit 2 . +The maximum size of a core file is limited by the +.Dv RLIMIT_CORE +.Xr setrlimit 2 +limit. Files which would be larger than the limit are not created. .Pp The name of the file is controlled via the From nobody Fri Oct 8 00:22:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BDF7D17E5328; Fri, 8 Oct 2021 00:22: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 4HQTQp3mjcz3RG8; Fri, 8 Oct 2021 00:22: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 B3B7A1D698; Fri, 8 Oct 2021 00:22: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 1980M906043291; Fri, 8 Oct 2021 00:22:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980M9HS043290; Fri, 8 Oct 2021 00:22:09 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:22:09 GMT Message-Id: <202110080022.1980M9HS043290@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: b5cadc643e85 - main - Make core dump writes interruptible with SIGKILL List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: b5cadc643e853fa4cb23e5315e6f40bf9979a9c0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b5cadc643e853fa4cb23e5315e6f40bf9979a9c0 commit b5cadc643e853fa4cb23e5315e6f40bf9979a9c0 Author: Konstantin Belousov AuthorDate: 2021-10-05 05:11:32 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:21:43 +0000 Make core dump writes interruptible with SIGKILL This can be disabled by sysctl kern.core_dump_can_intr Reported and tested by: pho Reviewed by: imp, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32313 --- share/man/man5/core.5 | 16 +++++++++++++++- sys/kern/kern_exec.c | 7 +++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/share/man/man5/core.5 b/share/man/man5/core.5 index d176548d1570..0af1b2b7e8bf 100644 --- a/share/man/man5/core.5 +++ b/share/man/man5/core.5 @@ -28,7 +28,7 @@ .\" @(#)core.5 8.3 (Berkeley) 12/11/93 .\" $FreeBSD$ .\" -.Dd August 2, 2020 +.Dd October 5, 2021 .Dt CORE 5 .Os .Sh NAME @@ -57,6 +57,20 @@ The maximum size of a core file is limited by the limit. Files which would be larger than the limit are not created. .Pp +With a large limit, a process that had mapped a very large, +and perhaps sparsely populated, virtual memory region, could take +a very long time to create core dumps. +The system ignores all signals sent to a process writing a core file, except +.Dv SIGKILL +which terminates the writing and causes immediate exit of the process. +The behavior of +.Dv SIGKILL +can be disabled by setting tunable +.Xr sysctl 8 +variable +.Va kern.core_dump_can_intr +to zero. +.Pp The name of the file is controlled via the .Xr sysctl 8 variable diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 4b3035cb7e08..7ec405ee6a62 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -151,6 +151,11 @@ static int map_at_zero = 0; SYSCTL_INT(_security_bsd, OID_AUTO, map_at_zero, CTLFLAG_RWTUN, &map_at_zero, 0, "Permit processes to map an object at virtual address 0."); +static int core_dump_can_intr = 1; +SYSCTL_INT(_kern, OID_AUTO, core_dump_can_intr, CTLFLAG_RWTUN, + &core_dump_can_intr, 0, + "Core dumping interruptible with SIGKILL"); + static int sysctl_kern_ps_strings(SYSCTL_HANDLER_ARGS) { @@ -1943,6 +1948,8 @@ core_output(char *base, size_t len, off_t offset, struct coredump_params *cp, * anonymous memory or truncated files, for example. */ for (runlen = 0; runlen < len; runlen += PAGE_SIZE) { + if (core_dump_can_intr && curproc_sigkilled()) + return (EINTR); error = vm_fault(map, (uintptr_t)base + runlen, VM_PROT_READ, VM_FAULT_NOFILL, NULL); if (runlen == 0) From nobody Fri Oct 8 00:43:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D7AAA17EA468; Fri, 8 Oct 2021 00:43: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 4HQTv45bbcz3mdj; Fri, 8 Oct 2021 00:43: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 A0C861DC0A; Fri, 8 Oct 2021 00:43: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 1980hCux069357; Fri, 8 Oct 2021 00:43:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980hCd9069355; Fri, 8 Oct 2021 00:43:12 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:43:12 GMT Message-Id: <202110080043.1980hCd9069355@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 93464e745c0b - stable/13 - pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 93464e745c0b2a76c97ac62ae933d9fea0733f9f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=93464e745c0b2a76c97ac62ae933d9fea0733f9f commit 93464e745c0b2a76c97ac62ae933d9fea0733f9f Author: Konstantin Belousov AuthorDate: 2021-10-01 00:40:19 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:42:37 +0000 pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines (cherry picked from commit 9f3b6cdbe87cf92d4099f3f5ff8eff3030a8076b) --- share/man/man3/pthread_barrierattr.3 | 8 ++++++-- share/man/man3/pthread_condattr.3 | 8 ++++++-- share/man/man3/pthread_mutexattr.3 | 16 ++++++++++++---- share/man/man3/pthread_rwlockattr_getpshared.3 | 4 +++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/share/man/man3/pthread_barrierattr.3 b/share/man/man3/pthread_barrierattr.3 index 74c3c4f63335..3836186ef4fd 100644 --- a/share/man/man3/pthread_barrierattr.3 +++ b/share/man/man3/pthread_barrierattr.3 @@ -38,11 +38,15 @@ .Ft int .Fn pthread_barrierattr_destroy "pthread_barrierattr_t *attr" .Ft int -.Fn pthread_barrierattr_getpshared "const pthread_barrierattr_t *restrict attr" "int *restrict pshared" +.Fo pthread_barrierattr_getpshared +.Fa "const pthread_barrierattr_t *restrict attr" "int *restrict pshared" +.Fc .Ft int .Fn pthread_barrierattr_init "pthread_barrierattr_t *attr" .Ft int -.Fn pthread_barrierattr_setpshared "pthread_barrierattr_t *attr" "int pshared" +.Fo pthread_barrierattr_setpshared +.Fa "pthread_barrierattr_t *attr" "int pshared" +.Fc .Sh DESCRIPTION The .Fn pthread_barrierattr_init diff --git a/share/man/man3/pthread_condattr.3 b/share/man/man3/pthread_condattr.3 index dfabc6f10f37..b2f14c5452d0 100644 --- a/share/man/man3/pthread_condattr.3 +++ b/share/man/man3/pthread_condattr.3 @@ -46,11 +46,15 @@ .Ft int .Fn pthread_condattr_destroy "pthread_condattr_t *attr" .Ft int -.Fn pthread_condattr_getclock "pthread_condattr_t * restrict attr" "clockid_t * restrict clock_id" +.Fo pthread_condattr_getclock +.Fa "pthread_condattr_t * restrict attr" "clockid_t * restrict clock_id" +.Fc .Ft int .Fn pthread_condattr_setclock "pthread_condattr_t *attr" "clockid_t clock_id" .Ft int -.Fn pthread_condattr_getpshared "pthread_condattr_t * restrict attr" "int * restrict pshared" +.Fo pthread_condattr_getpshared +.Fa "pthread_condattr_t * restrict attr" "int * restrict pshared" +.Fc .Ft int .Fn pthread_condattr_setpshared "pthread_condattr_t *attr" "int pshared" .Sh DESCRIPTION diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 61773a4e2eb3..1afde4302457 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -50,13 +50,19 @@ .Ft int .Fn pthread_mutexattr_destroy "pthread_mutexattr_t *attr" .Ft int -.Fn pthread_mutexattr_setprioceiling "pthread_mutexattr_t *attr" "int prioceiling" +.Fo pthread_mutexattr_setprioceiling +.Fa "pthread_mutexattr_t *attr" "int prioceiling" +.Fc .Ft int -.Fn pthread_mutexattr_getprioceiling "const pthread_mutexattr_t *attr" "int *prioceiling" +.Fo pthread_mutexattr_getprioceiling +.Fa "const pthread_mutexattr_t *attr" "int *prioceiling" +.Fc .Ft int .Fn pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol" .Ft int -.Fn pthread_mutexattr_getprotocol "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" +.Fo pthread_mutexattr_getprotocol +.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" +.Fc .Ft int .Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" .Ft int @@ -64,7 +70,9 @@ .Ft int .Fn pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type" .Ft int -.Fn pthread_mutexattr_gettype "const pthread_mutexattr_t *restrict attr" "int *restrict type" +.Fo pthread_mutexattr_gettype +.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict type" +.Fc .Sh DESCRIPTION Mutex attributes are used to specify parameters to .Fn pthread_mutex_init . diff --git a/share/man/man3/pthread_rwlockattr_getpshared.3 b/share/man/man3/pthread_rwlockattr_getpshared.3 index 63ef52409392..8e65be3ce391 100644 --- a/share/man/man3/pthread_rwlockattr_getpshared.3 +++ b/share/man/man3/pthread_rwlockattr_getpshared.3 @@ -35,7 +35,9 @@ .Sh SYNOPSIS .In pthread.h .Ft int -.Fn pthread_rwlockattr_getpshared "const pthread_rwlockattr_t *restrict attr" "int *restrict pshared" +.Fo pthread_rwlockattr_getpshared +.Fa "const pthread_rwlockattr_t *restrict attr" "int *restrict pshared" +.Fc .Sh DESCRIPTION The .Fn pthread_rwlockattr_getpshared From nobody Fri Oct 8 00:43:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3D1E017EA262; Fri, 8 Oct 2021 00:43: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 4HQTv60Hltz3mSD; Fri, 8 Oct 2021 00:43: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 C939B1DC80; Fri, 8 Oct 2021 00:43: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 1980hDdf069385; Fri, 8 Oct 2021 00:43:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980hDLF069384; Fri, 8 Oct 2021 00:43:13 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:43:13 GMT Message-Id: <202110080043.1980hDLF069384@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: d557ca8ceae5 - stable/13 - pthread_mutexattr(3): document pthread_mutexattr_set/getpshared List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: d557ca8ceae53eed22bc51eda33b22ecaff7bfd6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=d557ca8ceae53eed22bc51eda33b22ecaff7bfd6 commit d557ca8ceae53eed22bc51eda33b22ecaff7bfd6 Author: Konstantin Belousov AuthorDate: 2021-10-01 00:46:16 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:42:37 +0000 pthread_mutexattr(3): document pthread_mutexattr_set/getpshared (cherry picked from commit 0a6e5fc29b43778bd004f7754c730e41a9ce2675) --- share/man/man3/pthread_mutexattr.3 | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 1afde4302457..41f386804151 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -26,7 +26,7 @@ .\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd August 17, 2018 +.Dd October 1, 2021 .Dt PTHREAD_MUTEXATTR 3 .Os .Sh NAME @@ -36,6 +36,8 @@ .Nm pthread_mutexattr_getprioceiling , .Nm pthread_mutexattr_setprotocol , .Nm pthread_mutexattr_getprotocol , +.Nm pthread_mutexattr_setpshared , +.Nm pthread_mutexattr_getpshared , .Nm pthread_mutexattr_setrobust , .Nm pthread_mutexattr_getrobust , .Nm pthread_mutexattr_settype , @@ -64,6 +66,14 @@ .Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" .Fc .Ft int +.Fo pthread_mutexattr_setpshared +.Fa "pthread_mutexattr_t *attr" "int shared" +.Fc +.Ft int +.Fo pthread_mutexattr_getpshared +.Fa "const pthread_mutexattr_t *attr" "int *shared" +.Fc +.Ft int .Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" .Ft int .Fn pthread_mutexattr_getrobust "pthread_mutexattr_t *attr" "int *robust" @@ -161,6 +171,26 @@ Invalid value for .El .Pp The +.Fn pthread_mutexattr_setpshared +function will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Invalid value for +.Fa attr , +or invalid value for +.Fa shared . +.El +.Pp +The +.Fn pthread_mutexattr_getpshared +function will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Invalid value for +.Fa attr . +.El +.Pp +The .Fn pthread_mutexattr_settype function will fail if: .Bl -tag -width Er @@ -214,6 +244,8 @@ The .Fn pthread_mutexattr_getprioceiling , .Fn pthread_mutexattr_setprotocol , .Fn pthread_mutexattr_getprotocol , +.Fn pthread_mutexattr_setpshared , +.Fn pthread_mutexattr_getpshared , .Fn pthread_mutexattr_settype , and .Fn pthread_mutexattr_gettype From nobody Fri Oct 8 00:43:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5359D17EA12C; Fri, 8 Oct 2021 00:43: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 4HQTv71rfmz3mdt; Fri, 8 Oct 2021 00:43: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 EEC671D915; Fri, 8 Oct 2021 00:43: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 1980hEhr069409; Fri, 8 Oct 2021 00:43:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980hEVT069408; Fri, 8 Oct 2021 00:43:14 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:43:14 GMT Message-Id: <202110080043.1980hEVT069408@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: bf76759edcd6 - stable/13 - pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: bf76759edcd6c7f74954e46c945520738bf87dbd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=bf76759edcd6c7f74954e46c945520738bf87dbd commit bf76759edcd6c7f74954e46c945520738bf87dbd Author: Konstantin Belousov AuthorDate: 2021-10-01 00:53:44 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:42:38 +0000 pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links (cherry picked from commit 6bda192013fc8e6c994098fe262f2a74f424cb57) --- share/man/man3/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile index d33c0d63ea0d..ea01c2169100 100644 --- a/share/man/man3/Makefile +++ b/share/man/man3/Makefile @@ -480,11 +480,13 @@ PTHREAD_MLINKS+=pthread_multi_np.3 pthread_single_np.3 PTHREAD_MLINKS+=pthread_mutexattr.3 pthread_mutexattr_destroy.3 \ pthread_mutexattr.3 pthread_mutexattr_getprioceiling.3 \ pthread_mutexattr.3 pthread_mutexattr_getprotocol.3 \ + pthread_mutexattr.3 pthread_mutexattr_getpshared.3 \ pthread_mutexattr.3 pthread_mutexattr_getrobust.3 \ pthread_mutexattr.3 pthread_mutexattr_gettype.3 \ pthread_mutexattr.3 pthread_mutexattr_init.3 \ pthread_mutexattr.3 pthread_mutexattr_setprioceiling.3 \ pthread_mutexattr.3 pthread_mutexattr_setprotocol.3 \ + pthread_mutexattr.3 pthread_mutexattr_setpshared.3 \ pthread_mutexattr.3 pthread_mutexattr_setrobust.3 \ pthread_mutexattr.3 pthread_mutexattr_settype.3 PTHREAD_MLINKS+=pthread_mutexattr_getkind_np.3 pthread_mutexattr_setkind_np.3 From nobody Fri Oct 8 00:43:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2612B17EA51A; Fri, 8 Oct 2021 00:43: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 4HQTv81lpCz3m4t; Fri, 8 Oct 2021 00:43: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 0EB231DB89; Fri, 8 Oct 2021 00:43: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 1980hF2d069433; Fri, 8 Oct 2021 00:43:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980hFer069432; Fri, 8 Oct 2021 00:43:15 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:43:15 GMT Message-Id: <202110080043.1980hFer069432@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 8e915bdea540 - stable/13 - libthr(3): explain some internals of the locks implementation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 8e915bdea5406ff2266a18945829407feb465f63 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8e915bdea5406ff2266a18945829407feb465f63 commit 8e915bdea5406ff2266a18945829407feb465f63 Author: Konstantin Belousov AuthorDate: 2021-10-01 01:17:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:42:38 +0000 libthr(3): explain some internals of the locks implementation (cherry picked from commit f5b9747075a9b489226e2a911f8a1597f4b9d072) --- lib/libthr/libthr.3 | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/lib/libthr/libthr.3 b/lib/libthr/libthr.3 index 2b41187cdb7c..3018a6f20b86 100644 --- a/lib/libthr/libthr.3 +++ b/lib/libthr/libthr.3 @@ -1,5 +1,5 @@ .\" Copyright (c) 2005 Robert N. M. Watson -.\" Copyright (c) 2014,2015 The FreeBSD Foundation, Inc. +.\" Copyright (c) 2014,2015,2021 The FreeBSD Foundation, Inc. .\" All rights reserved. .\" .\" Part of this documentation was written by @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 5, 2020 +.Dd October 1, 2021 .Dt LIBTHR 3 .Os .Sh NAME @@ -259,6 +259,65 @@ the critical section. This should be taken into account when interpreting .Xr ktrace 1 logs. +.Sh PROCESS-SHARED SYNCHRONIZATION OBJECTS +In the +.Li libthr +implementation, +user-visible types for all synchronization objects (e.g. pthread_mutex_t) +are pointers to internal structures, allocated either by the corresponding +.Fn pthread__init +method call, or implicitly on first use when a static initializer +was specified. +The initial implementation of process-private locking object used this +model with internal allocation, and the addition of process-shared objects +was done in a way that did not break the application binary interface. +.Pp +For process-private objects, the internal structure is allocated using +either +.Xr malloc 3 +or, for +.Xr pthread_mutex_init 3 , +an internal memory allocator implemented in +.Nm . +The internal allocator for mutexes is used to avoid bootstrap issues +with many +.Xr malloc 3 +implementations which need working mutexes to function. +The same allocator is used for thread-specific data, see +.Xr pthread_setspecific 3 , +for the same reason. +.Pp +For process-shared objects, the internal structure is created by first +allocating a shared memory segment using +.Xr _umtx_op 2 +operation +.Dv UMTX_OP_SHM , +and then mapping it into process address space with +.Xr mmap 2 +with the +.Dv MAP_SHARED +flag. +The POSIX standard requires that: +.Bd -literal +only the process-shared synchronization object itself can be used for +performing synchronization. It need not be referenced at the address +used to initialize it (that is, another mapping of the same object can +be used). +.Ed +.Pp +With the +.Fx +implementation, process-shared objects require initialization +in each process that use them. +In particular, if you map the shared memory containing the user portion of +a process-shared object already initialized in different process, locking +functions do not work on it. +.Pp +Another broken case is a forked child creating the object in memory shared +with the parent, which cannot be used from parent. +Note that processes should not use non-async-signal safe functions after +.Xr fork 2 +anyway. .Sh SEE ALSO .Xr ktrace 1 , .Xr ld-elf.so.1 1 , From nobody Fri Oct 8 00:43:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 557CD17EA4BB; Fri, 8 Oct 2021 00:43: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 4HQTv94zfnz3m51; Fri, 8 Oct 2021 00:43: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 3A0CB1DB26; Fri, 8 Oct 2021 00:43: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 1980hHfN069457; Fri, 8 Oct 2021 00:43:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980hHLO069456; Fri, 8 Oct 2021 00:43:17 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:43:17 GMT Message-Id: <202110080043.1980hHLO069456@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 659035b40935 - stable/13 - pthread_mutexattr(3): document each pthread_mutexattr_set/get* function List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 659035b40935e8ea4e11ce8491e6f5233aea5c2f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=659035b40935e8ea4e11ce8491e6f5233aea5c2f commit 659035b40935e8ea4e11ce8491e6f5233aea5c2f Author: Konstantin Belousov AuthorDate: 2021-10-01 01:39:39 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:42:38 +0000 pthread_mutexattr(3): document each pthread_mutexattr_set/get* function (cherry picked from commit be6116fdfc4d292b77b3df7d4dda029d26a73d65) --- share/man/man3/pthread_mutexattr.3 | 90 +++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 41f386804151..2a2c5c8d133e 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -1,6 +1,11 @@ .\" Copyright (C) 2000 Jason Evans . +.\" Copyright (c) 2021 The FreeBSD Foundation, Inc. .\" All rights reserved. .\" +.\" Part of this documentation was written by +.\" Konstantin Belousov 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 .\" are met: @@ -102,8 +107,89 @@ function destroys .Fa attr . .Pp The -.Fn pthread_mutexattr_set* -functions set the attribute that corresponds to each function name. +.Fn pthread_mutexattr_setprioceiling +function sets the priority ceiling for the mutex, used +by threads executed under the +.Dv PTHREAD_PRIO_PROTECT +protocol. +.Pp +The +.Fn pthread_mutexattr_setprotocol +function specifies the protocol to be followed in utilizing mutexes. +The +.Fa protocol +argument can take one of the following values: +.Bl -tag -width PTHREAD_PRIO_PROTECT +.It PTHREAD_PRIO_NONE +Priority and scheduling of the thread owning this mutex is not +affected by its mutex ownership. +.It PTHREAD_PRIO_INHERIT +Request priority-inheritance protocol, where the thread owning the mutex +is executed at the highest priority among priorities of all threads waiting +on any mutex owned by this thread. +.It PTHREAD_PRIO_PROTECT +Request priority-inheritance protocol, where the thread owning the mutex +is executed at highest priority among priorities or priority ceilings of +all threads waiting on any mutex owned by this thread. +.El +.Pp +The +.Fn pthread_mutexattr_setrobust +function specifies robustness attribute of the mutex. +Possible values for the +.Fa robust +argument are +.Bl -tag -width PTHREAD_MUTEX_STALLED +.It PTHREAD_MUTEX_STALLED +No special actions are taken if the thread owning the mutex is terminated +without unlocking the mutex lock. +This can lead to deadlocks if no other thread can unlock the mutex. +This is the default value. +.It PTHREAD_MUTEX_ROBUST +If the process containing the owning thread of a robust mutex, or owning +thread, terminates while holding the mutex lock, the next thread that +acquires the mutex is notified about the termination +by the return value +.Ev EOWNERDEAD +from the locking function. +Then, either +.Xr pthread_mutex_consistent 3 +can be used to repair the mutex lock state, or +.Xr pthread_mutex_unlock 3 +can unlock the mutex lock but also put it an unusable state, +where all further attempts to acquire it result in the +.Ev ENOTRECOVERABLE +error. +.El +.Pp +The +.Fn pthread_mutexattr_settype +function sets the type of the mutex. +The type affects the behavior of calls which lock and unlock the mutex. +The possible values for the +.Fa type +argument are +.Bl -tag -width PTHREAD_MUTEX_ERRORCHECK +.It PTHREAD_MUTEX_NORMAL +Both recursive locking, and unlocking when the lock is not owned by the current +thread, cause an error to be returned from the corresponding functions. +This matches +.Dv PTHREAD_MUTEX_ERRORCHECK +but somewhat contradicts the behavior mandated by POSIX. +.It PTHREAD_MUTEX_ERRORCHECK +Both recursive locking, and unlocking when the lock is not owned by the current +thread, cause an error returned from the corresponding functions. +.It PTHREAD_MUTEX_RECURSIVE +Recursive locking is allowed. +Attempt to unlock when current thread is not an owner of the lock causes +an error to be returned. +.It PTHREAD_MUTEX_DEFAULT +The +.Fx +implementation maps this type to +.Dv PTHREAD_MUTEX_ERRORCHECK +type. +.El .Pp The .Fn pthread_mutexattr_get* From nobody Fri Oct 8 00:46:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9013517EBF42; Fri, 8 Oct 2021 00:46: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 4HQTz13gSYz3pc0; Fri, 8 Oct 2021 00:46: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 5E9F91DC81; Fri, 8 Oct 2021 00:46: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 1980kb0P069876; Fri, 8 Oct 2021 00:46:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980kb7u069875; Fri, 8 Oct 2021 00:46:37 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:46:37 GMT Message-Id: <202110080046.1980kb7u069875@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 861e60310bb8 - stable/12 - pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: 861e60310bb8067e160194d2719e54fe5986ece3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=861e60310bb8067e160194d2719e54fe5986ece3 commit 861e60310bb8067e160194d2719e54fe5986ece3 Author: Konstantin Belousov AuthorDate: 2021-10-01 00:40:19 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:46:21 +0000 pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines (cherry picked from commit 9f3b6cdbe87cf92d4099f3f5ff8eff3030a8076b) --- share/man/man3/pthread_barrierattr.3 | 8 ++++++-- share/man/man3/pthread_condattr.3 | 8 ++++++-- share/man/man3/pthread_mutexattr.3 | 16 ++++++++++++---- share/man/man3/pthread_rwlockattr_getpshared.3 | 4 +++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/share/man/man3/pthread_barrierattr.3 b/share/man/man3/pthread_barrierattr.3 index 74c3c4f63335..3836186ef4fd 100644 --- a/share/man/man3/pthread_barrierattr.3 +++ b/share/man/man3/pthread_barrierattr.3 @@ -38,11 +38,15 @@ .Ft int .Fn pthread_barrierattr_destroy "pthread_barrierattr_t *attr" .Ft int -.Fn pthread_barrierattr_getpshared "const pthread_barrierattr_t *restrict attr" "int *restrict pshared" +.Fo pthread_barrierattr_getpshared +.Fa "const pthread_barrierattr_t *restrict attr" "int *restrict pshared" +.Fc .Ft int .Fn pthread_barrierattr_init "pthread_barrierattr_t *attr" .Ft int -.Fn pthread_barrierattr_setpshared "pthread_barrierattr_t *attr" "int pshared" +.Fo pthread_barrierattr_setpshared +.Fa "pthread_barrierattr_t *attr" "int pshared" +.Fc .Sh DESCRIPTION The .Fn pthread_barrierattr_init diff --git a/share/man/man3/pthread_condattr.3 b/share/man/man3/pthread_condattr.3 index dfabc6f10f37..b2f14c5452d0 100644 --- a/share/man/man3/pthread_condattr.3 +++ b/share/man/man3/pthread_condattr.3 @@ -46,11 +46,15 @@ .Ft int .Fn pthread_condattr_destroy "pthread_condattr_t *attr" .Ft int -.Fn pthread_condattr_getclock "pthread_condattr_t * restrict attr" "clockid_t * restrict clock_id" +.Fo pthread_condattr_getclock +.Fa "pthread_condattr_t * restrict attr" "clockid_t * restrict clock_id" +.Fc .Ft int .Fn pthread_condattr_setclock "pthread_condattr_t *attr" "clockid_t clock_id" .Ft int -.Fn pthread_condattr_getpshared "pthread_condattr_t * restrict attr" "int * restrict pshared" +.Fo pthread_condattr_getpshared +.Fa "pthread_condattr_t * restrict attr" "int * restrict pshared" +.Fc .Ft int .Fn pthread_condattr_setpshared "pthread_condattr_t *attr" "int pshared" .Sh DESCRIPTION diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 61773a4e2eb3..1afde4302457 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -50,13 +50,19 @@ .Ft int .Fn pthread_mutexattr_destroy "pthread_mutexattr_t *attr" .Ft int -.Fn pthread_mutexattr_setprioceiling "pthread_mutexattr_t *attr" "int prioceiling" +.Fo pthread_mutexattr_setprioceiling +.Fa "pthread_mutexattr_t *attr" "int prioceiling" +.Fc .Ft int -.Fn pthread_mutexattr_getprioceiling "const pthread_mutexattr_t *attr" "int *prioceiling" +.Fo pthread_mutexattr_getprioceiling +.Fa "const pthread_mutexattr_t *attr" "int *prioceiling" +.Fc .Ft int .Fn pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol" .Ft int -.Fn pthread_mutexattr_getprotocol "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" +.Fo pthread_mutexattr_getprotocol +.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" +.Fc .Ft int .Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" .Ft int @@ -64,7 +70,9 @@ .Ft int .Fn pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type" .Ft int -.Fn pthread_mutexattr_gettype "const pthread_mutexattr_t *restrict attr" "int *restrict type" +.Fo pthread_mutexattr_gettype +.Fa "const pthread_mutexattr_t *restrict attr" "int *restrict type" +.Fc .Sh DESCRIPTION Mutex attributes are used to specify parameters to .Fn pthread_mutex_init . diff --git a/share/man/man3/pthread_rwlockattr_getpshared.3 b/share/man/man3/pthread_rwlockattr_getpshared.3 index 63ef52409392..8e65be3ce391 100644 --- a/share/man/man3/pthread_rwlockattr_getpshared.3 +++ b/share/man/man3/pthread_rwlockattr_getpshared.3 @@ -35,7 +35,9 @@ .Sh SYNOPSIS .In pthread.h .Ft int -.Fn pthread_rwlockattr_getpshared "const pthread_rwlockattr_t *restrict attr" "int *restrict pshared" +.Fo pthread_rwlockattr_getpshared +.Fa "const pthread_rwlockattr_t *restrict attr" "int *restrict pshared" +.Fc .Sh DESCRIPTION The .Fn pthread_rwlockattr_getpshared From nobody Fri Oct 8 00:46:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EE0F517EC222; Fri, 8 Oct 2021 00:46: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 4HQTz25VZgz3phs; Fri, 8 Oct 2021 00:46: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 8CCF61DB29; Fri, 8 Oct 2021 00:46: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 1980kckb069901; Fri, 8 Oct 2021 00:46:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980kc4L069900; Fri, 8 Oct 2021 00:46:38 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:46:38 GMT Message-Id: <202110080046.1980kc4L069900@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 43b8eec6cf2e - stable/12 - pthread_mutexattr(3): document pthread_mutexattr_set/getpshared List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: 43b8eec6cf2eeb55da9e253e8e08efd44c696600 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=43b8eec6cf2eeb55da9e253e8e08efd44c696600 commit 43b8eec6cf2eeb55da9e253e8e08efd44c696600 Author: Konstantin Belousov AuthorDate: 2021-10-01 00:46:16 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:46:21 +0000 pthread_mutexattr(3): document pthread_mutexattr_set/getpshared (cherry picked from commit 0a6e5fc29b43778bd004f7754c730e41a9ce2675) --- share/man/man3/pthread_mutexattr.3 | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 1afde4302457..41f386804151 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -26,7 +26,7 @@ .\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd August 17, 2018 +.Dd October 1, 2021 .Dt PTHREAD_MUTEXATTR 3 .Os .Sh NAME @@ -36,6 +36,8 @@ .Nm pthread_mutexattr_getprioceiling , .Nm pthread_mutexattr_setprotocol , .Nm pthread_mutexattr_getprotocol , +.Nm pthread_mutexattr_setpshared , +.Nm pthread_mutexattr_getpshared , .Nm pthread_mutexattr_setrobust , .Nm pthread_mutexattr_getrobust , .Nm pthread_mutexattr_settype , @@ -64,6 +66,14 @@ .Fa "const pthread_mutexattr_t *restrict attr" "int *restrict protocol" .Fc .Ft int +.Fo pthread_mutexattr_setpshared +.Fa "pthread_mutexattr_t *attr" "int shared" +.Fc +.Ft int +.Fo pthread_mutexattr_getpshared +.Fa "const pthread_mutexattr_t *attr" "int *shared" +.Fc +.Ft int .Fn pthread_mutexattr_setrobust "pthread_mutexattr_t *attr" "int robust" .Ft int .Fn pthread_mutexattr_getrobust "pthread_mutexattr_t *attr" "int *robust" @@ -161,6 +171,26 @@ Invalid value for .El .Pp The +.Fn pthread_mutexattr_setpshared +function will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Invalid value for +.Fa attr , +or invalid value for +.Fa shared . +.El +.Pp +The +.Fn pthread_mutexattr_getpshared +function will fail if: +.Bl -tag -width Er +.It Bq Er EINVAL +Invalid value for +.Fa attr . +.El +.Pp +The .Fn pthread_mutexattr_settype function will fail if: .Bl -tag -width Er @@ -214,6 +244,8 @@ The .Fn pthread_mutexattr_getprioceiling , .Fn pthread_mutexattr_setprotocol , .Fn pthread_mutexattr_getprotocol , +.Fn pthread_mutexattr_setpshared , +.Fn pthread_mutexattr_getpshared , .Fn pthread_mutexattr_settype , and .Fn pthread_mutexattr_gettype From nobody Fri Oct 8 00:46:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3CD6917EC076; Fri, 8 Oct 2021 00:46: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 4HQTz36jQ5z3pWT; Fri, 8 Oct 2021 00:46: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 AC9F11D75D; Fri, 8 Oct 2021 00:46: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 1980kdIi069925; Fri, 8 Oct 2021 00:46:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980kdca069924; Fri, 8 Oct 2021 00:46:39 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:46:39 GMT Message-Id: <202110080046.1980kdca069924@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: dbfde6870781 - stable/12 - pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: dbfde68707811876754304b94861ea6d65919f07 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=dbfde68707811876754304b94861ea6d65919f07 commit dbfde68707811876754304b94861ea6d65919f07 Author: Konstantin Belousov AuthorDate: 2021-10-01 00:53:44 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:46:21 +0000 pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links (cherry picked from commit 6bda192013fc8e6c994098fe262f2a74f424cb57) --- share/man/man3/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile index 8c1833c03b72..f64047b4b83c 100644 --- a/share/man/man3/Makefile +++ b/share/man/man3/Makefile @@ -349,11 +349,13 @@ PTHREAD_MLINKS+=pthread_multi_np.3 pthread_single_np.3 PTHREAD_MLINKS+=pthread_mutexattr.3 pthread_mutexattr_destroy.3 \ pthread_mutexattr.3 pthread_mutexattr_getprioceiling.3 \ pthread_mutexattr.3 pthread_mutexattr_getprotocol.3 \ + pthread_mutexattr.3 pthread_mutexattr_getpshared.3 \ pthread_mutexattr.3 pthread_mutexattr_getrobust.3 \ pthread_mutexattr.3 pthread_mutexattr_gettype.3 \ pthread_mutexattr.3 pthread_mutexattr_init.3 \ pthread_mutexattr.3 pthread_mutexattr_setprioceiling.3 \ pthread_mutexattr.3 pthread_mutexattr_setprotocol.3 \ + pthread_mutexattr.3 pthread_mutexattr_setpshared.3 \ pthread_mutexattr.3 pthread_mutexattr_setrobust.3 \ pthread_mutexattr.3 pthread_mutexattr_settype.3 PTHREAD_MLINKS+=pthread_mutexattr_getkind_np.3 pthread_mutexattr_setkind_np.3 From nobody Fri Oct 8 00:46:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 68E0A17EBFFE; Fri, 8 Oct 2021 00:46:41 +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 4HQTz50B8Kz3pj9; Fri, 8 Oct 2021 00:46:41 +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 CCF7F1DC0E; Fri, 8 Oct 2021 00:46: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 1980kenb069949; Fri, 8 Oct 2021 00:46:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980keeI069948; Fri, 8 Oct 2021 00:46:40 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:46:40 GMT Message-Id: <202110080046.1980keeI069948@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: d90db5033848 - stable/12 - libthr(3): explain some internals of the locks implementation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: d90db5033848d11f5f8a8542acbbaef663e6eabb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=d90db5033848d11f5f8a8542acbbaef663e6eabb commit d90db5033848d11f5f8a8542acbbaef663e6eabb Author: Konstantin Belousov AuthorDate: 2021-10-01 01:17:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:46:21 +0000 libthr(3): explain some internals of the locks implementation (cherry picked from commit f5b9747075a9b489226e2a911f8a1597f4b9d072) --- lib/libthr/libthr.3 | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/lib/libthr/libthr.3 b/lib/libthr/libthr.3 index 6828a6e7d43b..201a21307f04 100644 --- a/lib/libthr/libthr.3 +++ b/lib/libthr/libthr.3 @@ -1,5 +1,5 @@ .\" Copyright (c) 2005 Robert N. M. Watson -.\" Copyright (c) 2014,2015 The FreeBSD Foundation, Inc. +.\" Copyright (c) 2014,2015,2021 The FreeBSD Foundation, Inc. .\" All rights reserved. .\" .\" Part of this documentation was written by @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 17, 2016 +.Dd October 1, 2021 .Dt LIBTHR 3 .Os .Sh NAME @@ -259,6 +259,65 @@ the critical section. This should be taken into account when interpreting .Xr ktrace 1 logs. +.Sh PROCESS-SHARED SYNCHRONIZATION OBJECTS +In the +.Li libthr +implementation, +user-visible types for all synchronization objects (e.g. pthread_mutex_t) +are pointers to internal structures, allocated either by the corresponding +.Fn pthread__init +method call, or implicitly on first use when a static initializer +was specified. +The initial implementation of process-private locking object used this +model with internal allocation, and the addition of process-shared objects +was done in a way that did not break the application binary interface. +.Pp +For process-private objects, the internal structure is allocated using +either +.Xr malloc 3 +or, for +.Xr pthread_mutex_init 3 , +an internal memory allocator implemented in +.Nm . +The internal allocator for mutexes is used to avoid bootstrap issues +with many +.Xr malloc 3 +implementations which need working mutexes to function. +The same allocator is used for thread-specific data, see +.Xr pthread_setspecific 3 , +for the same reason. +.Pp +For process-shared objects, the internal structure is created by first +allocating a shared memory segment using +.Xr _umtx_op 2 +operation +.Dv UMTX_OP_SHM , +and then mapping it into process address space with +.Xr mmap 2 +with the +.Dv MAP_SHARED +flag. +The POSIX standard requires that: +.Bd -literal +only the process-shared synchronization object itself can be used for +performing synchronization. It need not be referenced at the address +used to initialize it (that is, another mapping of the same object can +be used). +.Ed +.Pp +With the +.Fx +implementation, process-shared objects require initialization +in each process that use them. +In particular, if you map the shared memory containing the user portion of +a process-shared object already initialized in different process, locking +functions do not work on it. +.Pp +Another broken case is a forked child creating the object in memory shared +with the parent, which cannot be used from parent. +Note that processes should not use non-async-signal safe functions after +.Xr fork 2 +anyway. .Sh SEE ALSO .Xr ktrace 1 , .Xr ld-elf.so.1 1 , From nobody Fri Oct 8 00:46:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6D8DC17EC41A; Fri, 8 Oct 2021 00:46: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 4HQTz66gRzz3pnW; Fri, 8 Oct 2021 00: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 013591D916; Fri, 8 Oct 2021 00: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 1980kfkm069973; Fri, 8 Oct 2021 00:46:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1980kf2t069972; Fri, 8 Oct 2021 00:46:41 GMT (envelope-from git) Date: Fri, 8 Oct 2021 00:46:41 GMT Message-Id: <202110080046.1980kf2t069972@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 1848d0154ebb - stable/12 - pthread_mutexattr(3): document each pthread_mutexattr_set/get* function List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/12 X-Git-Reftype: branch X-Git-Commit: 1848d0154ebbf2d16b3c4db5d2345935a97ad6b7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1848d0154ebbf2d16b3c4db5d2345935a97ad6b7 commit 1848d0154ebbf2d16b3c4db5d2345935a97ad6b7 Author: Konstantin Belousov AuthorDate: 2021-10-01 01:39:39 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 00:46:21 +0000 pthread_mutexattr(3): document each pthread_mutexattr_set/get* function (cherry picked from commit be6116fdfc4d292b77b3df7d4dda029d26a73d65) --- share/man/man3/pthread_mutexattr.3 | 90 +++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3 index 41f386804151..2a2c5c8d133e 100644 --- a/share/man/man3/pthread_mutexattr.3 +++ b/share/man/man3/pthread_mutexattr.3 @@ -1,6 +1,11 @@ .\" Copyright (C) 2000 Jason Evans . +.\" Copyright (c) 2021 The FreeBSD Foundation, Inc. .\" All rights reserved. .\" +.\" Part of this documentation was written by +.\" Konstantin Belousov 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 .\" are met: @@ -102,8 +107,89 @@ function destroys .Fa attr . .Pp The -.Fn pthread_mutexattr_set* -functions set the attribute that corresponds to each function name. +.Fn pthread_mutexattr_setprioceiling +function sets the priority ceiling for the mutex, used +by threads executed under the +.Dv PTHREAD_PRIO_PROTECT +protocol. +.Pp +The +.Fn pthread_mutexattr_setprotocol +function specifies the protocol to be followed in utilizing mutexes. +The +.Fa protocol +argument can take one of the following values: +.Bl -tag -width PTHREAD_PRIO_PROTECT +.It PTHREAD_PRIO_NONE +Priority and scheduling of the thread owning this mutex is not +affected by its mutex ownership. +.It PTHREAD_PRIO_INHERIT +Request priority-inheritance protocol, where the thread owning the mutex +is executed at the highest priority among priorities of all threads waiting +on any mutex owned by this thread. +.It PTHREAD_PRIO_PROTECT +Request priority-inheritance protocol, where the thread owning the mutex +is executed at highest priority among priorities or priority ceilings of +all threads waiting on any mutex owned by this thread. +.El +.Pp +The +.Fn pthread_mutexattr_setrobust +function specifies robustness attribute of the mutex. +Possible values for the +.Fa robust +argument are +.Bl -tag -width PTHREAD_MUTEX_STALLED +.It PTHREAD_MUTEX_STALLED +No special actions are taken if the thread owning the mutex is terminated +without unlocking the mutex lock. +This can lead to deadlocks if no other thread can unlock the mutex. +This is the default value. +.It PTHREAD_MUTEX_ROBUST +If the process containing the owning thread of a robust mutex, or owning +thread, terminates while holding the mutex lock, the next thread that +acquires the mutex is notified about the termination +by the return value +.Ev EOWNERDEAD +from the locking function. +Then, either +.Xr pthread_mutex_consistent 3 +can be used to repair the mutex lock state, or +.Xr pthread_mutex_unlock 3 +can unlock the mutex lock but also put it an unusable state, +where all further attempts to acquire it result in the +.Ev ENOTRECOVERABLE +error. +.El +.Pp +The +.Fn pthread_mutexattr_settype +function sets the type of the mutex. +The type affects the behavior of calls which lock and unlock the mutex. +The possible values for the +.Fa type +argument are +.Bl -tag -width PTHREAD_MUTEX_ERRORCHECK +.It PTHREAD_MUTEX_NORMAL +Both recursive locking, and unlocking when the lock is not owned by the current +thread, cause an error to be returned from the corresponding functions. +This matches +.Dv PTHREAD_MUTEX_ERRORCHECK +but somewhat contradicts the behavior mandated by POSIX. +.It PTHREAD_MUTEX_ERRORCHECK +Both recursive locking, and unlocking when the lock is not owned by the current +thread, cause an error returned from the corresponding functions. +.It PTHREAD_MUTEX_RECURSIVE +Recursive locking is allowed. +Attempt to unlock when current thread is not an owner of the lock causes +an error to be returned. +.It PTHREAD_MUTEX_DEFAULT +The +.Fx +implementation maps this type to +.Dv PTHREAD_MUTEX_ERRORCHECK +type. +.El .Pp The .Fn pthread_mutexattr_get* From nobody Fri Oct 8 01:09:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6A51E17EF3DE; Fri, 8 Oct 2021 01:09: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 4HQVTq2YfSz3sMC; Fri, 8 Oct 2021 01:09: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 344A61DE2B; Fri, 8 Oct 2021 01:09: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 19819p9K097414; Fri, 8 Oct 2021 01:09:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19819pKt097413; Fri, 8 Oct 2021 01:09:51 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:09:51 GMT Message-Id: <202110080109.19819pKt097413@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a010f7b2adbc - stable/13 - Reverted: Split out the loader efifb setup to a new function List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a010f7b2adbcd544c425a00a9a346d435145760c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a010f7b2adbcd544c425a00a9a346d435145760c commit a010f7b2adbcd544c425a00a9a346d435145760c Author: Andrew Turner AuthorDate: 2021-02-26 11:47:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:09:22 +0000 Reverted: Split out the loader efifb setup to a new function (cherry picked from commit c8db60c0673d4bb7a3a3e2c043804e1ed1108c2f) (cherry picked from commit 773fc43fb060149f8e59c183e5da79feaf118c8c) From nobody Fri Oct 8 01:16:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7371212D09AA; Fri, 8 Oct 2021 01:16: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 4HQVdK2txWz3tGs; Fri, 8 Oct 2021 01:16: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 43C6E1DE59; Fri, 8 Oct 2021 01:16:21 +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 1981GLjh010447; Fri, 8 Oct 2021 01:16:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GLVf010446; Fri, 8 Oct 2021 01:16:21 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:21 GMT Message-Id: <202110080116.1981GLVf010446@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9c81001f8d16 - stable/12 - loader: userboot/test should accept more than one disk List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9c81001f8d16cd80952f47a326bdf664180e3941 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9c81001f8d16cd80952f47a326bdf664180e3941 commit 9c81001f8d16cd80952f47a326bdf664180e3941 Author: Toomas Soome AuthorDate: 2019-11-03 09:14:29 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 loader: userboot/test should accept more than one disk allow to specify multiple -d options, test -d disk1 -d disk2 .. (cherry picked from commit bcbb1e60a1c181310a7ce36af2c202fa789d03e5) --- stand/userboot/test/test.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/stand/userboot/test/test.c b/stand/userboot/test/test.c index f2fee82663d6..4dc67548c546 100644 --- a/stand/userboot/test/test.c +++ b/stand/userboot/test/test.c @@ -50,10 +50,11 @@ char *host_base = NULL; struct termios term, oldterm; char *image; size_t image_size; -int disk_fd = -1; uint64_t regs[16]; uint64_t pc; +int *disk_fd; +int disk_index = -1; void test_exit(void *arg, int v); @@ -250,9 +251,9 @@ test_diskread(void *arg, int unit, uint64_t offset, void *dst, size_t size, { ssize_t n; - if (unit != 0 || disk_fd == -1) + if (unit > disk_index || disk_fd[unit] == -1) return (EIO); - n = pread(disk_fd, dst, size, offset); + n = pread(disk_fd[unit], dst, size, offset); if (n < 0) return (errno); *resid_return = size - n; @@ -264,14 +265,14 @@ test_diskioctl(void *arg, int unit, u_long cmd, void *data) { struct stat sb; - if (unit != 0 || disk_fd == -1) + if (unit > disk_index || disk_fd[unit] == -1) return (EBADF); switch (cmd) { case DIOCGSECTORSIZE: *(u_int *)data = 512; break; case DIOCGMEDIASIZE: - if (fstat(disk_fd, &sb) == 0) + if (fstat(disk_fd[unit], &sb) == 0) *(off_t *)data = sb.st_size; else return (ENOTTY); @@ -429,7 +430,6 @@ main(int argc, char** argv) void *h; void (*func)(struct loader_callbacks *, void *, int, int) __dead2; int opt; - char *disk_image = NULL; const char *userboot_obj = "/boot/userboot.so"; while ((opt = getopt(argc, argv, "b:d:h:")) != -1) { @@ -439,7 +439,12 @@ main(int argc, char** argv) break; case 'd': - disk_image = optarg; + disk_index++; + disk_fd = reallocarray(disk_fd, disk_index + 1, + sizeof (int)); + disk_fd[disk_index] = open(optarg, O_RDONLY); + if (disk_fd[disk_index] < 0) + err(1, "Can't open disk image '%s'", optarg); break; case 'h': @@ -464,11 +469,6 @@ main(int argc, char** argv) image_size = 128*1024*1024; image = malloc(image_size); - if (disk_image) { - disk_fd = open(disk_image, O_RDONLY); - if (disk_fd < 0) - err(1, "Can't open disk image '%s'", disk_image); - } tcgetattr(0, &term); oldterm = term; @@ -476,5 +476,5 @@ main(int argc, char** argv) term.c_lflag &= ~(ICANON|ECHO); tcsetattr(0, TCSAFLUSH, &term); - func(&cb, NULL, USERBOOT_VERSION_3, disk_fd >= 0); + func(&cb, NULL, USERBOOT_VERSION_3, disk_index + 1); } From nobody Fri Oct 8 01:16:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BDE3112D09AF; Fri, 8 Oct 2021 01:16: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 4HQVdL4FZqz3tXl; Fri, 8 Oct 2021 01:16: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 679561DCD9; Fri, 8 Oct 2021 01:16: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 1981GMGu010471; Fri, 8 Oct 2021 01:16:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GMmJ010470; Fri, 8 Oct 2021 01:16:22 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:22 GMT Message-Id: <202110080116.1981GMmJ010470@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 16608adccae5 - stable/12 - loader: should check malloc in zfs_dev_open List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 16608adccae5bac11367c71a964d374631ef6a5f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=16608adccae5bac11367c71a964d374631ef6a5f commit 16608adccae5bac11367c71a964d374631ef6a5f Author: Toomas Soome AuthorDate: 2019-11-03 13:03:47 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 loader: should check malloc in zfs_dev_open malloc can return NULL. (cherry picked from commit f4ed0045735d88aa681b4933072ff35a890a86a0) --- stand/libsa/zfs/zfs.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index 3393bcc45052..9386dd7b3729 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -683,6 +683,8 @@ zfs_dev_open(struct open_file *f, ...) if (!spa) return (ENXIO); mount = malloc(sizeof(*mount)); + if (mount == NULL) + return (ENOMEM); rv = zfs_mount(spa, dev->root_guid, mount); if (rv != 0) { free(mount); From nobody Fri Oct 8 01:16:24 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EB66912D087F; Fri, 8 Oct 2021 01:16: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 4HQVdP1M1Fz3tN4; Fri, 8 Oct 2021 01:16: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 AFF091E038; Fri, 8 Oct 2021 01:16: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 1981GOOW010525; Fri, 8 Oct 2021 01:16:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GOll010524; Fri, 8 Oct 2021 01:16:24 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:24 GMT Message-Id: <202110080116.1981GOll010524@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: af0a40e211b8 - stable/12 - loader: show APFS partition type name List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: af0a40e211b8f9fe37b4bbbe77436377768ca49d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=af0a40e211b8f9fe37b4bbbe77436377768ca49d commit af0a40e211b8f9fe37b4bbbe77436377768ca49d Author: Toomas Soome AuthorDate: 2019-11-04 12:20:19 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 loader: show APFS partition type name Add small visual aid in lsdev output. (cherry picked from commit 124003d5870a2da22648cfd8d9a71fda4f0d64a7) --- stand/common/part.c | 4 ++++ stand/common/part.h | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/stand/common/part.c b/stand/common/part.c index e4caa21307e3..b84678efd3cc 100644 --- a/stand/common/part.c +++ b/stand/common/part.c @@ -61,6 +61,7 @@ static const uuid_t gpt_uuid_freebsd_nandfs = GPT_ENT_TYPE_FREEBSD_NANDFS; static const uuid_t gpt_uuid_freebsd_swap = GPT_ENT_TYPE_FREEBSD_SWAP; static const uuid_t gpt_uuid_freebsd_zfs = GPT_ENT_TYPE_FREEBSD_ZFS; static const uuid_t gpt_uuid_freebsd_vinum = GPT_ENT_TYPE_FREEBSD_VINUM; +static const uuid_t gpt_uuid_apple_apfs = GPT_ENT_TYPE_APPLE_APFS; #endif struct pentry { @@ -100,6 +101,7 @@ static struct parttypes { { PART_LINUX_SWAP, "Linux swap" }, { PART_DOS, "DOS/Windows" }, { PART_ISO9660, "ISO9660" }, + { PART_APFS, "APFS" }, }; const char * @@ -145,6 +147,8 @@ gpt_parttype(uuid_t type) return (PART_FREEBSD_NANDFS); else if (uuid_equal(&type, &gpt_uuid_freebsd, NULL)) return (PART_FREEBSD); + else if (uuid_equal(&type, &gpt_uuid_apple_apfs, NULL)) + return (PART_APFS); return (PART_UNKNOWN); } diff --git a/stand/common/part.h b/stand/common/part.h index 3eac476b6d66..6ac435b1d21b 100644 --- a/stand/common/part.h +++ b/stand/common/part.h @@ -53,7 +53,8 @@ enum partition_type { PART_LINUX, PART_LINUX_SWAP, PART_DOS, - PART_ISO9660 + PART_ISO9660, + PART_APFS }; struct ptable_entry { From nobody Fri Oct 8 01:16:23 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 16FDD12D065D; Fri, 8 Oct 2021 01:16: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 4HQVdN150Sz3tH4; Fri, 8 Oct 2021 01:16: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 913821D94F; Fri, 8 Oct 2021 01:16: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 1981GNeL010501; Fri, 8 Oct 2021 01:16:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GNaG010500; Fri, 8 Oct 2021 01:16:23 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:23 GMT Message-Id: <202110080116.1981GNaG010500@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 2f6799782529 - stable/12 - loader: zfs.c is missing malloc checks, fix it List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 2f6799782529d18e13eb9bb102b942338a2829c8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=2f6799782529d18e13eb9bb102b942338a2829c8 commit 2f6799782529d18e13eb9bb102b942338a2829c8 Author: Toomas Soome AuthorDate: 2019-11-03 14:36:16 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 loader: zfs.c is missing malloc checks, fix it malloc() can return NULL, we need to check the return value. (cherry picked from commit 21da9f14f6144429874a286bfe21a16cbb0dbabd) --- stand/libsa/zfs/zfs.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index 9386dd7b3729..a8a02c5697cb 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -110,9 +110,10 @@ zfs_open(const char *upath, struct open_file *f) return (EINVAL); /* allocate file system specific data structure */ - fp = malloc(sizeof(struct file)); - bzero(fp, sizeof(struct file)); - f->f_fsdata = (void *)fp; + fp = calloc(1, sizeof(struct file)); + if (fp == NULL) + return (ENOMEM); + f->f_fsdata = fp; rc = zfs_lookup(mount, upath, &fp->f_dnode); fp->f_seekp = 0; @@ -129,9 +130,7 @@ zfs_close(struct open_file *f) struct file *fp = (struct file *)f->f_fsdata; dnode_cache_obj = NULL; - f->f_fsdata = (void *)0; - if (fp == (struct file *)0) - return (0); + f->f_fsdata = NULL; free(fp); return (0); @@ -250,7 +249,9 @@ zfs_readdir(struct open_file *f, struct dirent *d) return (rc); fp->f_seekp = bsize; - fp->f_zap_leaf = (zap_leaf_phys_t *)malloc(bsize); + fp->f_zap_leaf = malloc(bsize); + if (fp->f_zap_leaf == NULL) + return (ENOMEM); rc = dnode_read(spa, &fp->f_dnode, fp->f_seekp, fp->f_zap_leaf, @@ -684,8 +685,9 @@ zfs_dev_open(struct open_file *f, ...) return (ENXIO); mount = malloc(sizeof(*mount)); if (mount == NULL) - return (ENOMEM); - rv = zfs_mount(spa, dev->root_guid, mount); + rv = ENOMEM; + else + rv = zfs_mount(spa, dev->root_guid, mount); if (rv != 0) { free(mount); return (rv); From nobody Fri Oct 8 01:16:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4681012D0B82; Fri, 8 Oct 2021 01:16: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 4HQVdQ0XxVz3tKV; Fri, 8 Oct 2021 01:16: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 D35061DFBD; Fri, 8 Oct 2021 01:16: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 1981GPpN010549; Fri, 8 Oct 2021 01:16:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GPId010548; Fri, 8 Oct 2021 01:16:25 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:25 GMT Message-Id: <202110080116.1981GPId010548@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 339040c40385 - stable/12 - loader.efi: Default to serial if we don't have a ConOut variable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 339040c40385f5aedf0562f3feef637e945dc29b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=339040c40385f5aedf0562f3feef637e945dc29b commit 339040c40385f5aedf0562f3feef637e945dc29b Author: Emmanuel Vadot AuthorDate: 2019-11-08 20:08:44 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 loader.efi: Default to serial if we don't have a ConOut variable In the EFI implementation in U-Boot no ConOut efi variable is created, this cause loader to fallback to TERM_EMU implementation which is very very very slow (and uses the ConOut device in the system table anyway). The UEFI spec aren't clear as if this variable needs to exists or not. (cherry picked from commit 14fb9485a4dc9c8212bfae6c2049cb4930f4b8e5) --- stand/efi/loader/main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index 7440018a15db..a2fba0c57184 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -716,8 +716,11 @@ parse_uefi_con_out(void) how = 0; sz = sizeof(buf); rv = efi_global_getenv("ConOut", buf, &sz); - if (rv != EFI_SUCCESS) + if (rv != EFI_SUCCESS) { + /* If we don't have any ConOut default to serial */ + how = RB_SERIAL; goto out; + } ep = buf + sz; node = (EFI_DEVICE_PATH *)buf; while ((char *)node < ep) { From nobody Fri Oct 8 01:16:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B1D3512D0B3C; Fri, 8 Oct 2021 01:16: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 4HQVdR28HVz3tW6; Fri, 8 Oct 2021 01:16: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 004E81E0B1; Fri, 8 Oct 2021 01:16: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 1981GQLF010573; Fri, 8 Oct 2021 01:16:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GQnM010572; Fri, 8 Oct 2021 01:16:26 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:26 GMT Message-Id: <202110080116.1981GQnM010572@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1e07e20d96d9 - stable/12 - loader.efi: print ImageBase so we know where we are List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1e07e20d96d98d10b04d2d09345f091dda0e7761 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1e07e20d96d98d10b04d2d09345f091dda0e7761 commit 1e07e20d96d98d10b04d2d09345f091dda0e7761 Author: Toomas Soome AuthorDate: 2019-12-06 09:50:29 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 loader.efi: print ImageBase so we know where we are Output a bit of debugging aid. (cherry picked from commit fed13eb3e8d6091dcfae45e7652835d519306abe) --- stand/efi/loader/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index a2fba0c57184..95a00d72b6a4 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -1014,6 +1014,7 @@ main(int argc, CHAR16 *argv[]) printf(" %S", argv[i]); printf("\n"); + printf(" Image base: 0x%lx\n", (unsigned long)boot_img->ImageBase); printf(" EFI version: %d.%02d\n", ST->Hdr.Revision >> 16, ST->Hdr.Revision & 0xffff); printf(" EFI Firmware: %S (rev %d.%02d)\n", ST->FirmwareVendor, From nobody Fri Oct 8 01:16:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E74E812D0BFA; Fri, 8 Oct 2021 01:16: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 4HQVdT0FRKz3tND; Fri, 8 Oct 2021 01:16: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 22D571DBC8; Fri, 8 Oct 2021 01:16: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 1981GSge010597; Fri, 8 Oct 2021 01:16:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GSjO010596; Fri, 8 Oct 2021 01:16:28 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:28 GMT Message-Id: <202110080116.1981GSjO010596@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 017912879876 - stable/12 - Use symbolic names for int13 calls List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 01791287987664b5db4a362dc817f7081553aca2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=01791287987664b5db4a362dc817f7081553aca2 commit 01791287987664b5db4a362dc817f7081553aca2 Author: Warner Losh AuthorDate: 2019-12-16 21:52:12 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 Use symbolic names for int13 calls For all the INT13 calls, use symbolic names instead of magic numbers. This makes it easier to understand what the code is doing w/o a trip to google to find what these numbers mean. (cherry picked from commit 7f5499972e115cafc861ec438cd7237422cd9b7c) --- stand/i386/common/edd.h | 3 ++ stand/i386/libi386/biosdisk.c | 65 ++++++++++++++++++++++++++----------------- 2 files changed, 43 insertions(+), 25 deletions(-) diff --git a/stand/i386/common/edd.h b/stand/i386/common/edd.h index 7d1f45020f9d..9739c45b0f38 100644 --- a/stand/i386/common/edd.h +++ b/stand/i386/common/edd.h @@ -107,4 +107,7 @@ struct edd_params_v4 { #define EDD_DEVICE_PATH_KEY 0xbedd +#define EDD_QUERY_MAGIC 0x55aa +#define EDD_INSTALLED 0xaa55 + #endif /* !_EDD_H_ */ diff --git a/stand/i386/libi386/biosdisk.c b/stand/i386/libi386/biosdisk.c index c2d95e81161f..00d2de5de418 100644 --- a/stand/i386/libi386/biosdisk.c +++ b/stand/i386/libi386/biosdisk.c @@ -64,6 +64,22 @@ __FBSDID("$FreeBSD$"); #define ACDMAJOR 117 #define CDMAJOR 15 +/* + * INT13 commands + */ +#define CMD_RESET 0x0000 +#define CMD_READ_CHS 0x0200 +#define CMD_WRITE_CHS 0x0300 +#define CMD_READ_PARAM 0x0800 +#define CMD_DRIVE_TYPE 0x1500 +#define CMD_CHECK_EDD 0x4100 +#define CMD_READ_LBA 0x4200 +#define CMD_WRITE_LBA 0x4300 +#define CMD_EXT_PARAM 0x4800 +#define CMD_CD_GET_STATUS 0x4b01 + +#define DISK_BIOS 0x13 + #ifdef DISK_DEBUG #define DPRINTF(fmt, args...) printf("%s: " fmt "\n", __func__, ## args) #else @@ -266,8 +282,8 @@ fd_count(void) bd_reset_disk(drive); v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x1500; + v86.addr = DISK_BIOS; + v86.eax = CMD_DRIVE_TYPE; v86.edx = drive; v86int(); @@ -371,8 +387,8 @@ bd_get_diskinfo_cd(struct bdinfo *bd) bc_sp.sp_size = sizeof (bc_sp) - sizeof (bc_sp.sp_dummy); v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x4b01; + v86.addr = DISK_BIOS; + v86.eax = CMD_CD_GET_STATUS; v86.edx = bd->bd_unit; v86.ds = VTOPSEG(&bc_sp); v86.esi = VTOPOFF(&bc_sp); @@ -462,14 +478,14 @@ bd_check_extensions(int unit) /* Determine if we can use EDD with this device. */ v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x4100; + v86.addr = DISK_BIOS; + v86.eax = CMD_CHECK_EDD; v86.edx = unit; - v86.ebx = 0x55aa; + v86.ebx = EDD_QUERY_MAGIC; v86int(); if (V86_CY(v86.efl) || /* carry set */ - (v86.ebx & 0xffff) != 0xaa55) /* signature */ + (v86.ebx & 0xffff) != EDD_INSTALLED) /* signature */ return (0); /* extended disk access functions (AH=42h-44h,47h,48h) supported */ @@ -484,8 +500,8 @@ bd_reset_disk(int unit) { /* reset disk */ v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0; + v86.addr = DISK_BIOS; + v86.eax = CMD_RESET; v86.edx = unit; v86int(); } @@ -498,8 +514,8 @@ bd_get_diskinfo_std(struct bdinfo *bd) { bzero(&v86, sizeof(v86)); v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x800; + v86.addr = DISK_BIOS; + v86.eax = CMD_READ_PARAM; v86.edx = bd->bd_unit; v86int(); @@ -543,8 +559,8 @@ bd_get_diskinfo_ext(struct bdinfo *bd) bzero(&dparams, sizeof(dparams)); params->len = sizeof(struct edd_params_v3); v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x4800; + v86.addr = DISK_BIOS; + v86.eax = CMD_EXT_PARAM; v86.edx = bd->bd_unit; v86.ds = VTOPSEG(&dparams); v86.esi = VTOPOFF(&dparams); @@ -615,8 +631,8 @@ bd_int13probe(bdinfo_t *bd) /* Get disk type */ v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x1500; + v86.addr = DISK_BIOS; + v86.eax = CMD_DRIVE_TYPE; v86.edx = bd->bd_unit; v86int(); if (V86_CY(v86.efl) || (v86.eax & 0x300) == 0) @@ -1125,12 +1141,11 @@ bd_edd_io(bdinfo_t *bd, daddr_t dblk, int blks, caddr_t dest, packet.seg = VTOPSEG(dest); packet.lba = dblk; v86.ctl = V86_FLAGS; - v86.addr = 0x13; - /* Should we Write with verify ?? 0x4302 ? */ + v86.addr = DISK_BIOS; if (dowrite == BD_WR) - v86.eax = 0x4300; + v86.eax = CMD_WRITE_LBA; /* maybe Write with verify 0x4302? */ else - v86.eax = 0x4200; + v86.eax = CMD_READ_LBA; v86.edx = bd->bd_unit; v86.ds = VTOPSEG(&packet); v86.esi = VTOPOFF(&packet); @@ -1162,11 +1177,11 @@ bd_chs_io(bdinfo_t *bd, daddr_t dblk, int blks, caddr_t dest, } v86.ctl = V86_FLAGS; - v86.addr = 0x13; + v86.addr = DISK_BIOS; if (dowrite == BD_WR) - v86.eax = 0x300 | blks; + v86.eax = CMD_WRITE_CHS | blks; else - v86.eax = 0x200 | blks; + v86.eax = CMD_READ_CHS | blks; v86.ecx = ((cyl & 0xff) << 8) | ((cyl & 0x300) >> 2) | sec; v86.edx = (hd << 8) | bd->bd_unit; v86.es = VTOPSEG(dest); @@ -1271,8 +1286,8 @@ bd_getbigeom(int bunit) { v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x800; + v86.addr = DISK_BIOS; + v86.eax = CMD_READ_PARAM; v86.edx = 0x80 + bunit; v86int(); if (V86_CY(v86.efl)) From nobody Fri Oct 8 01:16:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 980FE12D0A88; Fri, 8 Oct 2021 01:16: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 4HQVdT4nNRz3tHV; Fri, 8 Oct 2021 01:16: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 45EA91E039; Fri, 8 Oct 2021 01:16: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 1981GTGN010621; Fri, 8 Oct 2021 01:16:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GTIo010620; Fri, 8 Oct 2021 01:16:29 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:29 GMT Message-Id: <202110080116.1981GTIo010620@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: dd80f75e6647 - stable/12 - In gptboot, don't assume a partition number is a single digit, 1-9. GPT partitions can have 128 partitions, so parse contiguous digits and then validate that the number is between 1-128 inclusive. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: dd80f75e664760479f55a2197448c014cfdd3025 Auto-Submitted: auto-generated X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=dd80f75e664760479f55a2197448c014cfdd3025 commit dd80f75e664760479f55a2197448c014cfdd3025 Author: Ian Lepore AuthorDate: 2019-12-22 22:33:22 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 In gptboot, don't assume a partition number is a single digit, 1-9. GPT partitions can have 128 partitions, so parse contiguous digits and then validate that the number is between 1-128 inclusive. I'm not sure 128 is a hard limit in the GPT standard, but it's the common number in use, and it's a better upper limit than 9. (cherry picked from commit 42e08952bb84aa86dfdcc7b80c95b58e515bdce7) --- stand/i386/gptboot/gptboot.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/stand/i386/gptboot/gptboot.c b/stand/i386/gptboot/gptboot.c index 68ef55073ecb..7b5423ede6d8 100644 --- a/stand/i386/gptboot/gptboot.c +++ b/stand/i386/gptboot/gptboot.c @@ -574,10 +574,12 @@ parse_cmds(char *cmdstr, int *dskupdated) if (arg[1] != 'p' || gdsk.dsk.unit > 9) return (-1); arg += 2; - gdsk.dsk.part = *arg - '0'; - if (gdsk.dsk.part < 1 || gdsk.dsk.part > 9) + j = 0; + while (*arg >= '0' && *arg <= '9') + j = j * 10 + *arg++ - '0'; + gdsk.dsk.part = j; + if (gdsk.dsk.part < 1 || gdsk.dsk.part > 128) return (-1); - arg++; if (arg[0] != ')') return (-1); arg++; From nobody Fri Oct 8 01:16:30 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1512812D0E19; Fri, 8 Oct 2021 01:16: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 4HQVdV6j8dz3tHY; Fri, 8 Oct 2021 01:16: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 6AAE71E03A; Fri, 8 Oct 2021 01:16: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 1981GUnv010645; Fri, 8 Oct 2021 01:16:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GUVB010644; Fri, 8 Oct 2021 01:16:30 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:30 GMT Message-Id: <202110080116.1981GUVB010644@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 3a1bfbb50409 - stable/12 - efinet_dev_init() is missing NULL pointer check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 3a1bfbb504099b533a6574f5e72fe739346ab191 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3a1bfbb504099b533a6574f5e72fe739346ab191 commit 3a1bfbb504099b533a6574f5e72fe739346ab191 Author: Toomas Soome AuthorDate: 2020-02-20 08:48:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 efinet_dev_init() is missing NULL pointer check Add missing check of malloc() result. (cherry picked from commit 860545e20b8f09881973b828863f55141fb2250e) --- stand/efi/libefi/efinet.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/efi/libefi/efinet.c b/stand/efi/libefi/efinet.c index 418790524e4a..c52b11d32ec8 100644 --- a/stand/efi/libefi/efinet.c +++ b/stand/efi/libefi/efinet.c @@ -371,6 +371,8 @@ efinet_dev_init() status = BS->LocateHandle(ByProtocol, &sn_guid, NULL, &sz, NULL); if (status == EFI_BUFFER_TOO_SMALL) { handles = (EFI_HANDLE *)malloc(sz); + if (handles == NULL) + return (ENOMEM); status = BS->LocateHandle(ByProtocol, &sn_guid, NULL, &sz, handles); if (EFI_ERROR(status)) From nobody Fri Oct 8 01:16:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 36F0412D0CE9; Fri, 8 Oct 2021 01:16: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 4HQVdX0kFmz3tWM; Fri, 8 Oct 2021 01:16: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 9AC561E1E2; Fri, 8 Oct 2021 01:16: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 1981GV2D010669; Fri, 8 Oct 2021 01:16:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GV1G010668; Fri, 8 Oct 2021 01:16:31 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:31 GMT Message-Id: <202110080116.1981GV1G010668@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 32394e97c350 - stable/12 - efihttp_fs_seek() is missing NULL pointer check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 32394e97c350c1837d2c232db54c0bd081351c62 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=32394e97c350c1837d2c232db54c0bd081351c62 commit 32394e97c350c1837d2c232db54c0bd081351c62 Author: Toomas Soome AuthorDate: 2020-02-20 08:53:04 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 efihttp_fs_seek() is missing NULL pointer check Add missing check of malloc() result. (cherry picked from commit 8abc11f65c828a58263e4b4a8eac70fdf7082792) --- stand/efi/libefi/efihttp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/efi/libefi/efihttp.c b/stand/efi/libefi/efihttp.c index 12d445c55b67..074c85dcdef0 100644 --- a/stand/efi/libefi/efihttp.c +++ b/stand/efi/libefi/efihttp.c @@ -702,6 +702,8 @@ efihttp_fs_seek(struct open_file *f, off_t offset, int where) return (0); if (where == SEEK_SET && fh->offset < offset) { buf = malloc(1500); + if (buf == NULL) + return (ENOMEM); res = offset - fh->offset; while (res > 0) { err = _efihttp_fs_read(f, buf, min(1500, res), &res2); From nobody Fri Oct 8 01:16:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3D55612D1007; Fri, 8 Oct 2021 01:16: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 4HQVdY284wz3tc9; Fri, 8 Oct 2021 01:16: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 B942A1DFBE; Fri, 8 Oct 2021 01:16: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 1981GWjt010693; Fri, 8 Oct 2021 01:16:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GWwg010692; Fri, 8 Oct 2021 01:16:32 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:32 GMT Message-Id: <202110080116.1981GWwg010692@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 8b18746cb1bd - stable/12 - connect_controllers() is missing NULL pointer check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 8b18746cb1bdfc89e831a023dd3dcb04c6f9e439 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=8b18746cb1bdfc89e831a023dd3dcb04c6f9e439 commit 8b18746cb1bdfc89e831a023dd3dcb04c6f9e439 Author: Toomas Soome AuthorDate: 2020-02-20 08:55:18 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:58 +0000 connect_controllers() is missing NULL pointer check Add missing check of malloc() result. (cherry picked from commit ef91a071ac534ed1293f624e4e205916da8f30a4) --- stand/efi/libefi/efi_driver_utils.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/efi/libefi/efi_driver_utils.c b/stand/efi/libefi/efi_driver_utils.c index 0edea5c1e0d8..e5034c2e34d6 100644 --- a/stand/efi/libefi/efi_driver_utils.c +++ b/stand/efi/libefi/efi_driver_utils.c @@ -52,6 +52,8 @@ connect_controllers(EFI_GUID *filter) } handles = malloc(hsize); + if (handles == NULL) + return (EFI_OUT_OF_RESOURCES); nhandles = hsize / sizeof(EFI_HANDLE); status = BS->LocateHandle(ByProtocol, filter, NULL, From nobody Fri Oct 8 01:16:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8288E12D0EF9; Fri, 8 Oct 2021 01:16: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 4HQVdb21rdz3tkT; Fri, 8 Oct 2021 01:16: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 E1B1B1E03B; Fri, 8 Oct 2021 01:16: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 1981GX2l010717; Fri, 8 Oct 2021 01:16:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GXqj010716; Fri, 8 Oct 2021 01:16:33 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:33 GMT Message-Id: <202110080116.1981GXqj010716@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9e05a1578650 - stable/12 - efipart_inithandles() is missing NULL pointer check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9e05a157865009dc23e93753cfa09efd7bbbd738 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9e05a157865009dc23e93753cfa09efd7bbbd738 commit 9e05a157865009dc23e93753cfa09efd7bbbd738 Author: Toomas Soome AuthorDate: 2020-02-20 08:56:56 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 efipart_inithandles() is missing NULL pointer check Add missing check of malloc() result. (cherry picked from commit 79cbcdcf3ececdb45f02c528d00e53e9600a4f48) --- stand/efi/libefi/efipart.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/efi/libefi/efipart.c b/stand/efi/libefi/efipart.c index 0710a33fdf93..424df7d2e423 100644 --- a/stand/efi/libefi/efipart.c +++ b/stand/efi/libefi/efipart.c @@ -363,6 +363,8 @@ efipart_inithandles(void) status = BS->LocateHandle(ByProtocol, &blkio_guid, 0, &sz, hin); if (status == EFI_BUFFER_TOO_SMALL) { hin = malloc(sz); + if (hin == NULL) + return (ENOMEM); status = BS->LocateHandle(ByProtocol, &blkio_guid, 0, &sz, hin); if (EFI_ERROR(status)) From nobody Fri Oct 8 01:16:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D6E9412D0DF1; Fri, 8 Oct 2021 01:16: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 4HQVdd3ffzz3tcN; Fri, 8 Oct 2021 01:16: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 08B411DFBF; Fri, 8 Oct 2021 01:16: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 1981GYnx010741; Fri, 8 Oct 2021 01:16:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GY7u010740; Fri, 8 Oct 2021 01:16:34 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:34 GMT Message-Id: <202110080116.1981GY7u010740@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: bce9319884e6 - stable/12 - insert_zfs() is missing NULL pointer check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: bce9319884e6300a55445423bf5451f74d44c989 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=bce9319884e6300a55445423bf5451f74d44c989 commit bce9319884e6300a55445423bf5451f74d44c989 Author: Toomas Soome AuthorDate: 2020-02-20 09:00:20 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 insert_zfs() is missing NULL pointer check Add missing check of malloc() result. (cherry picked from commit 7afa0d95e212a612b2990c975082757c44c3b50f) --- stand/efi/libefi/efizfs.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/stand/efi/libefi/efizfs.c b/stand/efi/libefi/efizfs.c index 8b28250f109b..aedb9c2294cd 100644 --- a/stand/efi/libefi/efizfs.c +++ b/stand/efi/libefi/efizfs.c @@ -86,9 +86,11 @@ insert_zfs(EFI_HANDLE handle, uint64_t guid) zfsinfo_t *zi; zi = malloc(sizeof(zfsinfo_t)); - zi->zi_handle = handle; - zi->zi_pool_guid = guid; - STAILQ_INSERT_TAIL(&zfsinfo, zi, zi_link); + if (zi != NULL) { + zi->zi_handle = handle; + zi->zi_pool_guid = guid; + STAILQ_INSERT_TAIL(&zfsinfo, zi, zi_link); + } } void From nobody Fri Oct 8 01:16:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B02B512D1172; Fri, 8 Oct 2021 01:16: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 4HQVdg1jcnz3tZ8; Fri, 8 Oct 2021 01:16: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 3C4C21DBC9; Fri, 8 Oct 2021 01:16: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 1981GamY010765; Fri, 8 Oct 2021 01:16:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GaSg010764; Fri, 8 Oct 2021 01:16:36 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:36 GMT Message-Id: <202110080116.1981GaSg010764@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 91da922301a2 - stable/12 - efi_register_handles() is missing NULL pointer check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 91da922301a27520671a4a4a83389fc46ad3bb8a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=91da922301a27520671a4a4a83389fc46ad3bb8a commit 91da922301a27520671a4a4a83389fc46ad3bb8a Author: Toomas Soome AuthorDate: 2020-02-20 09:02:59 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 efi_register_handles() is missing NULL pointer check Add missing check of malloc() result. (cherry picked from commit 4a82db5fe718a6b4abaf4de7f5d82563dc2f98df) --- stand/efi/libefi/handles.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/efi/libefi/handles.c b/stand/efi/libefi/handles.c index 1e4ef6ffbd50..a55239dbec8c 100644 --- a/stand/efi/libefi/handles.c +++ b/stand/efi/libefi/handles.c @@ -52,6 +52,8 @@ efi_register_handles(struct devsw *sw, EFI_HANDLE *handles, nentries += count; sz = nentries * sizeof(struct entry); entry = (entry == NULL) ? malloc(sz) : realloc(entry, sz); + if (entry == NULL) + return (ENOMEM); for (unit = 0; idx < nentries; idx++, unit++) { entry[idx].handle = handles[unit]; if (aliases != NULL) From nobody Fri Oct 8 01:16:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 984BF12D127A; Fri, 8 Oct 2021 01:16: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 4HQVdl74Zdz3tlD; Fri, 8 Oct 2021 01:16: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 5FC6C1E0B2; Fri, 8 Oct 2021 01:16: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 1981Gb2r010789; Fri, 8 Oct 2021 01:16:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gbct010788; Fri, 8 Oct 2021 01:16:37 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:37 GMT Message-Id: <202110080116.1981Gbct010788@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 90603ee8e051 - stable/12 - loader: alloc_pread() should set errno if malloc fails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 90603ee8e051807c5469e51b547d9dc856d9b6c8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=90603ee8e051807c5469e51b547d9dc856d9b6c8 commit 90603ee8e051807c5469e51b547d9dc856d9b6c8 Author: Toomas Soome AuthorDate: 2020-02-23 15:21:15 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 loader: alloc_pread() should set errno if malloc fails We may want to find out why alloc_pread() failed. (cherry picked from commit 91e697162c272aa81f375d3294e43cea97e8c4cd) --- stand/common/misc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/stand/common/misc.c b/stand/common/misc.c index 315cbe8ce3bf..d85597522f8a 100644 --- a/stand/common/misc.c +++ b/stand/common/misc.c @@ -149,6 +149,7 @@ alloc_pread(readin_handle_t fd, off_t off, size_t len) #ifdef DEBUG printf("\nmalloc(%d) failed\n", (int)len); #endif + errno = ENOMEM; return (NULL); } if (VECTX_LSEEK(fd, off, SEEK_SET) == -1) { From nobody Fri Oct 8 01:16:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B6E9212D13A6; Fri, 8 Oct 2021 01:16: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 4HQVdn0M7Lz3thw; Fri, 8 Oct 2021 01:16: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 7E02E1E03C; Fri, 8 Oct 2021 01:16: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 1981GcBe010813; Fri, 8 Oct 2021 01:16:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GchB010812; Fri, 8 Oct 2021 01:16:38 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:38 GMT Message-Id: <202110080116.1981GchB010812@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 51ddd2851e4a - stable/12 - loader: misaligned access of dos_partition structure List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 51ddd2851e4a36e28cf78dfe06125723f7d2b113 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=51ddd2851e4a36e28cf78dfe06125723f7d2b113 commit 51ddd2851e4a36e28cf78dfe06125723f7d2b113 Author: Toomas Soome AuthorDate: 2020-03-19 17:27:08 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 loader: misaligned access of dos_partition structure armv7 crash due to misligned access of dos_partition dp_start field. Allocate and make copy of dos_partition array to make sure the data is aligned. (cherry picked from commit 87d8d5ea3dd0a8ad2c0468660805017d6d45d937) --- stand/common/part.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/stand/common/part.c b/stand/common/part.c index b84678efd3cc..69df57abb175 100644 --- a/stand/common/part.c +++ b/stand/common/part.c @@ -662,6 +662,7 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize, int has_ext; #endif table = NULL; + dp = NULL; buf = malloc(sectorsize); if (buf == NULL) return (NULL); @@ -716,7 +717,11 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize, goto out; } /* Check that we have PMBR. Also do some validation. */ - dp = (struct dos_partition *)(buf + DOSPARTOFF); + dp = malloc(NDOSPART * sizeof(struct dos_partition)); + if (dp == NULL) + goto out; + bcopy(buf + DOSPARTOFF, dp, NDOSPART * sizeof(struct dos_partition)); + /* * In mac we can have PMBR partition in hybrid MBR; * that is, MBR partition which has DOSPTYP_PMBR entry defined as @@ -778,6 +783,7 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize, #endif /* LOADER_MBR_SUPPORT */ #endif /* LOADER_MBR_SUPPORT || LOADER_GPT_SUPPORT */ out: + free(dp); free(buf); return (table); } From nobody Fri Oct 8 01:16:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 917D612D1348; Fri, 8 Oct 2021 01:16: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 4HQVdp5W33z3tr4; Fri, 8 Oct 2021 01:16: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 CC21A1DE5A; Fri, 8 Oct 2021 01:16: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 1981Geji010861; Fri, 8 Oct 2021 01:16:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GerW010860; Fri, 8 Oct 2021 01:16:40 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:40 GMT Message-Id: <202110080116.1981GerW010860@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 5a6dd8690100 - stable/12 - As with r352446 align blocks in boot1.efi List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 5a6dd8690100ff19cdd8072d068db260cacebc3d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=5a6dd8690100ff19cdd8072d068db260cacebc3d commit 5a6dd8690100ff19cdd8072d068db260cacebc3d Author: Andrew Turner AuthorDate: 2020-05-05 09:42:26 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 As with r352446 align blocks in boot1.efi We need to ensure the buffers are aligned before passing them to ReadBlocks. Assume 512 bytes is enough for now. (cherry picked from commit 3d5e12ebce94791aa0d6df3e81e7a8ac48ee4b51) --- stand/efi/boot1/ufs_module.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stand/efi/boot1/ufs_module.c b/stand/efi/boot1/ufs_module.c index fa0e5fc051a0..edd7918e00b6 100644 --- a/stand/efi/boot1/ufs_module.c +++ b/stand/efi/boot1/ufs_module.c @@ -73,12 +73,12 @@ dskread(void *buf, uint64_t lba, int nblk) #include "ufsread.c" -static struct dmadat __dmadat; +static struct dmadat __dmadat __aligned(512); +static char ufs_buffer[BSD_LABEL_BUFFER] __aligned(512); static int init_dev(dev_info_t* dev) { - char buffer[BSD_LABEL_BUFFER]; struct disklabel *dl; uint64_t bs; int ok; @@ -109,14 +109,14 @@ init_dev(dev_info_t* dev) * will retry fsread(0) only if there's a label found with a non-zero * offset. */ - if (dskread(buffer, 0, BSD_LABEL_BUFFER / DEV_BSIZE) != 0) + if (dskread(ufs_buffer, 0, BSD_LABEL_BUFFER / DEV_BSIZE) != 0) return (-1); dl = NULL; bs = devinfo->dev->Media->BlockSize; if (bs != 0 && bs <= BSD_LABEL_BUFFER / 2) - dl = (struct disklabel *)&buffer[bs]; + dl = (struct disklabel *)&ufs_buffer[bs]; if (dl == NULL || dl->d_magic != BSD_MAGIC || dl->d_magic2 != BSD_MAGIC) - dl = (struct disklabel *)&buffer[BSD_LABEL_OFFSET]; + dl = (struct disklabel *)&ufs_buffer[BSD_LABEL_OFFSET]; if (dl->d_magic != BSD_MAGIC || dl->d_magic2 != BSD_MAGIC || dl->d_partitions[0].p_offset == 0) return (-1); From nobody Fri Oct 8 01:16:43 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A293D12D1358; Fri, 8 Oct 2021 01:16: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 4HQVds0PcGz3tjK; Fri, 8 Oct 2021 01:16: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 2551A1E03D; Fri, 8 Oct 2021 01:16: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 1981GhB7010909; Fri, 8 Oct 2021 01:16:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gh7q010908; Fri, 8 Oct 2021 01:16:43 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:43 GMT Message-Id: <202110080116.1981Gh7q010908@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: c494a0c50da9 - stable/12 - Fix compilation error for install.c in loader List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: c494a0c50da9cdbbbb178aee222ec8e21213e545 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=c494a0c50da9cdbbbb178aee222ec8e21213e545 commit c494a0c50da9cdbbbb178aee222ec8e21213e545 Author: Stephen J. Kiernan AuthorDate: 2020-07-31 16:08:25 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 Fix compilation error for install.c in loader Fix typo in interp_include() invocation (missing 'p') Remove setting tftpip, as servip is used by the tftp code in libsa. There is no separate tftpip global variable any more. (cherry picked from commit fafe230db0cd8d96ac5f3f74643e0c71e949d623) --- stand/common/install.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/stand/common/install.c b/stand/common/install.c index de0fd88fc4e3..ea6eaaa7cebc 100644 --- a/stand/common/install.c +++ b/stand/common/install.c @@ -286,10 +286,6 @@ install(char *pkgname) setenv("serverip", inet_ntoa(servip), 1); - if (proto == &tftp_fsops) { - tftpip.s_addr = servip.s_addr; - } - *pkgname = '/'; } else pkgname = s; @@ -340,7 +336,7 @@ install(char *pkgname) fd = open(s, O_RDONLY); if (fd != -1) { close(fd); - error = inter_include(s); + error = interp_include(s); if (error == CMD_ERROR) goto fail; } From nobody Fri Oct 8 01:16:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A849612D1793; Fri, 8 Oct 2021 01:16: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 4HQVds1Nv7z3tlj; Fri, 8 Oct 2021 01:16: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 4B57F1DE5B; Fri, 8 Oct 2021 01:16: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 1981GiYF010933; Fri, 8 Oct 2021 01:16:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GidM010932; Fri, 8 Oct 2021 01:16:44 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:44 GMT Message-Id: <202110080116.1981GidM010932@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1b6c96c6034a - stable/12 - Fix stand/newvers.sh with zsh in sh mode List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1b6c96c6034a71662bf4ffcd4d79489e5526afd6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1b6c96c6034a71662bf4ffcd4d79489e5526afd6 commit 1b6c96c6034a71662bf4ffcd4d79489e5526afd6 Author: Alex Richardson AuthorDate: 2020-08-12 15:49:10 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 Fix stand/newvers.sh with zsh in sh mode When building on macOS with sh==zsh, newvers.sh was producing an unterminated string literal due to \\n being turned as a newline. Fix this by using a here document instead. (cherry picked from commit cad2917baf6e8d90720f5bfb2463dfa7be35f568) --- stand/common/newvers.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stand/common/newvers.sh b/stand/common/newvers.sh index 75efeceab26b..714adba6c9cb 100755 --- a/stand/common/newvers.sh +++ b/stand/common/newvers.sh @@ -55,6 +55,8 @@ if [ -n "${include_metadata}" ]; then bootprog_info="$bootprog_info(${t} ${u}@${h})\\n" fi -echo "char bootprog_info[] = \"$bootprog_info\";" > $tempfile -echo "unsigned bootprog_rev = ${r%%.*}${r##*.};" >> $tempfile +cat > $tempfile < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f7ad7b5a1e5d - stable/12 - ZFS: remove duplicate "com.datto:encryption" from loader List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f7ad7b5a1e5da5fa611e578dfa978de66cc6e87b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f7ad7b5a1e5da5fa611e578dfa978de66cc6e87b commit f7ad7b5a1e5da5fa611e578dfa978de66cc6e87b Author: Matt Macy AuthorDate: 2020-08-27 21:37:35 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 ZFS: remove duplicate "com.datto:encryption" from loader (cherry picked from commit 962619075c531f333b51161b4ec011e1e987ad5a) --- stand/libsa/zfs/zfsimpl.c | 1 - 1 file changed, 1 deletion(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 2fee84ce4906..e4d9be20dc5e 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -128,7 +128,6 @@ static const char *features_for_read[] = { "com.delphix:obsolete_counts", "com.intel:allocation_classes", "org.freebsd:zstd_compress", - "com.datto:encryption", NULL }; From nobody Fri Oct 8 01:16:47 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1F3D112D17E6; Fri, 8 Oct 2021 01:16: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 4HQVdx1Ydwz3tx5; Fri, 8 Oct 2021 01:16: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 B51731E03E; Fri, 8 Oct 2021 01:16: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 1981GlKr011006; Fri, 8 Oct 2021 01:16:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gl4h011005; Fri, 8 Oct 2021 01:16:47 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:47 GMT Message-Id: <202110080116.1981Gl4h011005@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: b9696aebdb18 - stable/12 - stand/reloc_elf: Handle relative relocations for arm{,64} and riscv List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: b9696aebdb184108286f22e59a01dd60932b5ca9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=b9696aebdb184108286f22e59a01dd60932b5ca9 commit b9696aebdb184108286f22e59a01dd60932b5ca9 Author: D Scott Phillips AuthorDate: 2020-09-21 22:24:46 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 stand/reloc_elf: Handle relative relocations for arm{,64} and riscv Extend the powerpc relative relocation handling from r240782 to a handful of other architectures. This is needed to properly read dependency information from kernel modules. (cherry picked from commit 987eabdc2ae1c0beba77e4d3b538155e81c7a7d5) --- stand/common/reloc_elf.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/stand/common/reloc_elf.c b/stand/common/reloc_elf.c index ce44b275ab02..388fea218aac 100644 --- a/stand/common/reloc_elf.c +++ b/stand/common/reloc_elf.c @@ -200,7 +200,8 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, } return (0); -#elif defined(__powerpc__) +#elif defined(__aarch64__) || defined(__arm__) || defined(__powerpc__) || \ + defined(__riscv) Elf_Size w; const Elf_Rela *rela; @@ -210,7 +211,15 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, if (relbase + rela->r_offset >= dataaddr && relbase + rela->r_offset < dataaddr + len) { switch (ELF_R_TYPE(rela->r_info)) { +#if defined(__aarch64__) + case R_AARCH64_RELATIVE: +#elif defined(__arm__) + case R_ARM_RELATIVE: +#elif defined(__powerpc__) case R_PPC_RELATIVE: +#elif defined(__riscv) + case R_RISCV_RELATIVE: +#endif w = relbase + rela->r_addend; bcopy(&w, (u_char *)data + (relbase + rela->r_offset - dataaddr), sizeof(w)); From nobody Fri Oct 8 01:16:46 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1FBF212D18D4; Fri, 8 Oct 2021 01:16: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 4HQVdw6lPQz3tpK; Fri, 8 Oct 2021 01:16: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 912931DFC1; Fri, 8 Oct 2021 01:16: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 1981GkvO010981; Fri, 8 Oct 2021 01:16:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GkfR010980; Fri, 8 Oct 2021 01:16:46 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:46 GMT Message-Id: <202110080116.1981GkfR010980@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: b87ad4f2db6d - stable/12 - stand/efihttp: Work around a bug in edk2 http instance reconfiguration List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: b87ad4f2db6dfc3b66464a689c399f666fa64d39 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=b87ad4f2db6dfc3b66464a689c399f666fa64d39 commit b87ad4f2db6dfc3b66464a689c399f666fa64d39 Author: D Scott Phillips AuthorDate: 2020-09-09 16:35:51 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 stand/efihttp: Work around a bug in edk2 http instance reconfiguration A bug in the EFI HTTP driver of TianoCore EDK2 causes memory corruption when an http instance that uses tls is reconfigured, leading to a crash. Work around this by forcing a new http instance for each request instead of reconfiguring the existing one. The upstream bug report is https://bugzilla.tianocore.org/show_bug.cgi?id=1917 (cherry picked from commit d455cd5ac36f4c1ac76f04e2c2bb4bfb00fe8bcd) --- stand/efi/libefi/efihttp.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/stand/efi/libefi/efihttp.c b/stand/efi/libefi/efihttp.c index 074c85dcdef0..05d338fbaf04 100644 --- a/stand/efi/libefi/efihttp.c +++ b/stand/efi/libefi/efihttp.c @@ -576,6 +576,14 @@ efihttp_fs_open(const char *path, struct open_file *f) */ err = _efihttp_fs_open(path, f); if (err != 0) { + /* + * Work around a bug in the EFI HTTP implementation which + * causes a crash if the http instance isn't torn down + * between requests. + * See https://bugzilla.tianocore.org/show_bug.cgi?id=1917 + */ + efihttp_dev_close(f); + efihttp_dev_open(f); path_slash = malloc(strlen(path) + 2); if (path_slash == NULL) return (ENOMEM); @@ -719,6 +727,14 @@ efihttp_fs_seek(struct open_file *f, off_t offset, int where) path = fh->path; fh->path = NULL; efihttp_fs_close(f); + /* + * Work around a bug in the EFI HTTP implementation which + * causes a crash if the http instance isn't torn down + * between requests. + * See https://bugzilla.tianocore.org/show_bug.cgi?id=1917 + */ + efihttp_dev_close(f); + efihttp_dev_open(f); err = efihttp_fs_open(path, f); free(path); if (err != 0) From nobody Fri Oct 8 01:16:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A08FD12D187C; Fri, 8 Oct 2021 01:16: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 4HQVdz248Bz3tpb; Fri, 8 Oct 2021 01:16: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 C7C361E0B4; Fri, 8 Oct 2021 01:16: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 1981GmND011030; Fri, 8 Oct 2021 01:16:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gm2W011029; Fri, 8 Oct 2021 01:16:48 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:48 GMT Message-Id: <202110080116.1981Gm2W011029@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 969b06fdff5d - stable/12 - loader: Partial revert of 987eabdc2ae1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 969b06fdff5d54e6b0b130fd974ef683c075b7f3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=969b06fdff5d54e6b0b130fd974ef683c075b7f3 commit 969b06fdff5d54e6b0b130fd974ef683c075b7f3 Author: Emmanuel Vadot AuthorDate: 2021-01-17 16:41:25 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 loader: Partial revert of 987eabdc2ae1 The arm relocation code doesn't not work and make loader not loading dependancies. Reported by: Dr. Rolf Jansen (cherry picked from commit 0f2434ea000e02e6b1f7f40f489c346c64445242) --- stand/common/reloc_elf.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/stand/common/reloc_elf.c b/stand/common/reloc_elf.c index 388fea218aac..b45c3295966e 100644 --- a/stand/common/reloc_elf.c +++ b/stand/common/reloc_elf.c @@ -200,8 +200,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, } return (0); -#elif defined(__aarch64__) || defined(__arm__) || defined(__powerpc__) || \ - defined(__riscv) +#elif defined(__aarch64__) || defined(__powerpc__) || defined(__riscv) Elf_Size w; const Elf_Rela *rela; @@ -213,8 +212,6 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, switch (ELF_R_TYPE(rela->r_info)) { #if defined(__aarch64__) case R_AARCH64_RELATIVE: -#elif defined(__arm__) - case R_ARM_RELATIVE: #elif defined(__powerpc__) case R_PPC_RELATIVE: #elif defined(__riscv) From nobody Fri Oct 8 01:16:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4AB5A12D1B88; Fri, 8 Oct 2021 01:16: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 4HQVdz66xpz3trx; Fri, 8 Oct 2021 01:16: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 1DC211DCDA; Fri, 8 Oct 2021 01:16: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 1981GprX011078; Fri, 8 Oct 2021 01:16:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GpZq011077; Fri, 8 Oct 2021 01:16:51 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:51 GMT Message-Id: <202110080116.1981GpZq011077@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 4d1e0b5bcd81 - stable/12 - Loader: support booting OS from memory disk (MD) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4d1e0b5bcd819c0f0061d85aebb5e3c408df7946 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4d1e0b5bcd819c0f0061d85aebb5e3c408df7946 commit 4d1e0b5bcd819c0f0061d85aebb5e3c408df7946 Author: Yongbo Yao AuthorDate: 2021-04-07 18:33:22 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 Loader: support booting OS from memory disk (MD) Until now, the boot image can be embedded into the loader with /sys/tools/embed_mfs.sh, and memory disk (MD) is already supported in loader source. But due to memory disk (MD) driver isn't registered to the loader yet, the boot image can't be boot from embedded memory disk. (cherry picked from commit 5984246f9626fbc3d356ee2d3b3cd159f6d0a7c2) --- stand/efi/loader/conf.c | 7 +++++++ stand/efi/loader/main.c | 24 ++++++++++++++++++++++++ stand/man/loader.8 | 19 ++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/stand/efi/loader/conf.c b/stand/efi/loader/conf.c index a5d2ad7c613f..b112cc2f8c0b 100644 --- a/stand/efi/loader/conf.c +++ b/stand/efi/loader/conf.c @@ -35,6 +35,10 @@ __FBSDID("$FreeBSD$"); extern struct devsw vdisk_dev; +#ifdef MD_IMAGE_SIZE +extern struct devsw md_dev; +#endif + struct devsw *devsw[] = { &efipart_fddev, &efipart_cddev, @@ -46,6 +50,9 @@ struct devsw *devsw[] = { &vdisk_dev, #ifdef EFI_ZFS_BOOT &zfs_dev, +#endif +#ifdef MD_IMAGE_SIZE + &md_dev, #endif NULL }; diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index 95a00d72b6a4..cf0a041b6432 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -277,6 +277,21 @@ probe_zfs_currdev(uint64_t guid) } #endif +#ifdef MD_IMAGE_SIZE +static bool +probe_md_currdev(void) +{ + extern struct devsw md_dev; + bool rv; + + set_currdev_devsw(&md_dev, 0); + rv = sanity_check_currdev(); + if (!rv) + printf("MD not present\n"); + return (rv); +} +#endif + static bool try_as_currdev(pdinfo_t *hd, pdinfo_t *pp) { @@ -550,6 +565,15 @@ find_currdev(bool do_bootmgr, bool is_last, } #endif /* EFI_ZFS_BOOT */ +#ifdef MD_IMAGE_SIZE + /* + * If there is an embedded MD, try to use that. + */ + printf("Trying MD\n"); + if (probe_md_currdev()) + return (0); +#endif /* MD_IMAGE_SIZE */ + /* * Try to find the block device by its handle based on the * image we're booting. If we can't find a sane partition, diff --git a/stand/man/loader.8 b/stand/man/loader.8 index 0a32125681a6..b5f770803bff 100644 --- a/stand/man/loader.8 +++ b/stand/man/loader.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 2, 2020 +.Dd April 7, 2021 .Dt LOADER 8 .Os .Sh NAME @@ -981,6 +981,23 @@ See for details. In order for this to be effective, one should also configure the firmware (BIOS or UEFI) to prevent booting from unauthorized devices. +.Sh MD +Memory disk (MD) can be used when the +.Nm +was compiled with +.Va MD_IMAGE_SIZE . +The size of the memory disk is determined by +.Va MD_IMAGE_SIZE . +If MD available, a file system can be embedded into the +.Nm +with +.Pa /sys/tools/embed_mfs.sh . +Then, MD will be probed and be set to +.Va currdev +during initialization. +.Pp +Currently, MD is only supported in +.Xr loader.efi 8 . .Sh FILES .Bl -tag -width /usr/share/examples/bootforth/ -compact .It Pa /boot/loader From nobody Fri Oct 8 01:16:49 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5929F12D1AAA; Fri, 8 Oct 2021 01:16: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 4HQVdz5HHgz3tv0; Fri, 8 Oct 2021 01:16: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 EF7241D951; Fri, 8 Oct 2021 01:16: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 1981Gnl2011054; Fri, 8 Oct 2021 01:16:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gnqb011053; Fri, 8 Oct 2021 01:16:49 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:49 GMT Message-Id: <202110080116.1981Gnqb011053@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 72f29c6a1e45 - stable/12 - Reuse the amd64 loader relocation code on arm64 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 72f29c6a1e45d7dab25a8a32c483265e3fb41c15 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=72f29c6a1e45d7dab25a8a32c483265e3fb41c15 commit 72f29c6a1e45d7dab25a8a32c483265e3fb41c15 Author: Andrew Turner AuthorDate: 2021-01-17 18:11:11 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 Reuse the amd64 loader relocation code on arm64 There is no need to keep multiple copies of the relocation code. The amd64 code works on arm64 with a few small changes to relocation types. (cherry picked from commit f6f0b849fb2683feebf2416a793964be0bd05cc5) --- stand/common/reloc_elf.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/stand/common/reloc_elf.c b/stand/common/reloc_elf.c index b45c3295966e..c7dd11eac904 100644 --- a/stand/common/reloc_elf.c +++ b/stand/common/reloc_elf.c @@ -77,7 +77,8 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, } return (0); -#elif (defined(__i386__) || defined(__amd64__)) && __ELF_WORD_SIZE == 64 +#elif (defined(__aarch64__) || defined(__amd64__) || defined(__i386__)) && \ + __ELF_WORD_SIZE == 64 Elf64_Addr *where, val; Elf_Addr addend, addr; Elf_Size rtype, symidx; @@ -112,12 +113,29 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, if (reltype == ELF_RELOC_REL) addend = *where; +#if defined(__aarch64__) +#define RELOC_RELATIVE R_AARCH64_RELATIVE +#define RELOC_IRELATIVE R_AARCH64_IRELATIVE +#elif defined(__amd64__) || defined(__i386__) /* XXX, definitions not available on i386. */ #define R_X86_64_64 1 #define R_X86_64_RELATIVE 8 #define R_X86_64_IRELATIVE 37 +#define RELOC_RELATIVE R_X86_64_RELATIVE +#define RELOC_IRELATIVE R_X86_64_IRELATIVE +#endif + switch (rtype) { + case RELOC_RELATIVE: + addr = (Elf_Addr)addend + relbase; + val = addr; + memcpy(where, &val, sizeof(val)); + break; + case RELOC_IRELATIVE: + /* leave it to kernel */ + break; +#if defined(__amd64__) || defined(__i386__) case R_X86_64_64: /* S + A */ addr = symaddr(ef, symidx); if (addr == 0) @@ -125,14 +143,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, val = addr + addend; *where = val; break; - case R_X86_64_RELATIVE: - addr = (Elf_Addr)addend + relbase; - val = addr; - *where = val; - break; - case R_X86_64_IRELATIVE: - /* leave it to kernel */ - break; +#endif default: printf("\nunhandled relocation type %u\n", (u_int)rtype); return (EFTYPE); @@ -200,7 +211,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, } return (0); -#elif defined(__aarch64__) || defined(__powerpc__) || defined(__riscv) +#elif defined(__powerpc__) || defined(__riscv) Elf_Size w; const Elf_Rela *rela; @@ -210,9 +221,7 @@ __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, if (relbase + rela->r_offset >= dataaddr && relbase + rela->r_offset < dataaddr + len) { switch (ELF_R_TYPE(rela->r_info)) { -#if defined(__aarch64__) - case R_AARCH64_RELATIVE: -#elif defined(__powerpc__) +#if defined(__powerpc__) case R_PPC_RELATIVE: #elif defined(__riscv) case R_RISCV_RELATIVE: From nobody Fri Oct 8 01:16:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8AE7712D1A6E; Fri, 8 Oct 2021 01:16: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 4HQVf146jpz3tvF; Fri, 8 Oct 2021 01:16: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 4E2AF1DE5C; Fri, 8 Oct 2021 01:16: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 1981GqHD011102; Fri, 8 Oct 2021 01:16:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gqje011101; Fri, 8 Oct 2021 01:16:52 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:52 GMT Message-Id: <202110080116.1981Gqje011101@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 869ec7d90917 - stable/12 - Update the EFI timer to be called once a second List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 869ec7d90917e3f6c6c7829e0e47703a2a27c69e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=869ec7d90917e3f6c6c7829e0e47703a2a27c69e commit 869ec7d90917e3f6c6c7829e0e47703a2a27c69e Author: Andrew Turner AuthorDate: 2021-05-12 08:59:04 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 Update the EFI timer to be called once a second There is no need to call it evert 10ms when we need 1s granularity. Update to update the time every second. (cherry picked from commit 93f7be080f3ad0bd71190d87aa2043d714270206) --- stand/efi/libefi/time_event.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stand/efi/libefi/time_event.c b/stand/efi/libefi/time_event.c index f96f1d845f6a..f171bf997078 100644 --- a/stand/efi/libefi/time_event.c +++ b/stand/efi/libefi/time_event.c @@ -40,7 +40,7 @@ static void time_update(EFI_EVENT event, void *context) { - curtime += 10; + curtime++; } void @@ -50,8 +50,8 @@ efi_time_init(void) /* Create a timer event */ BS->CreateEvent(EVT_TIMER | EVT_NOTIFY_SIGNAL, TPL_CALLBACK, time_update, 0, &time_event); - /* Use a 10ms timer */ - BS->SetTimer(time_event, TimerPeriodic, 100000); + /* Use a 1s timer */ + BS->SetTimer(time_event, TimerPeriodic, 10000000); } void @@ -68,7 +68,7 @@ time(time_t *tloc) { time_t t; - t = curtime / 1000; + t = curtime; if (tloc != NULL) *tloc = t; From nobody Fri Oct 8 01:16:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B559412D1ACB; Fri, 8 Oct 2021 01:16: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 4HQVf21dsvz3v0Z; Fri, 8 Oct 2021 01:16: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 6E9541E1E4; Fri, 8 Oct 2021 01:16: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 1981GrkM011126; Fri, 8 Oct 2021 01:16:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GrWD011125; Fri, 8 Oct 2021 01:16:53 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:53 GMT Message-Id: <202110080116.1981GrWD011125@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1748f0c6e190 - stable/12 - loader: Fix dtb loading List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1748f0c6e1902a45f4148a2b2157a1f4dbdc7748 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1748f0c6e1902a45f4148a2b2157a1f4dbdc7748 commit 1748f0c6e1902a45f4148a2b2157a1f4dbdc7748 Author: Emmanuel Vadot AuthorDate: 2021-07-05 13:50:39 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 loader: Fix dtb loading When calling file_findfile with only a type it returns the first file matching the type. But in fdt_apply_overlays we then iterate on the next files and try loading them as dtb overlays. Fix this by checking the type one more time. Reported by: Mark Millard (cherry picked from commit b464c459eaf4e63a3abaaa1ecf51c9d6e9f7521e) --- stand/fdt/fdt_loader_cmd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/fdt/fdt_loader_cmd.c b/stand/fdt/fdt_loader_cmd.c index 7580eceedb05..c14b99768d70 100644 --- a/stand/fdt/fdt_loader_cmd.c +++ b/stand/fdt/fdt_loader_cmd.c @@ -466,6 +466,8 @@ fdt_apply_overlays() current_fdtp_size = fdtp_size; overlays_applied = 0; for (fp = file_findfile(NULL, "dtbo"); fp != NULL; fp = fp->f_next) { + if (strcmp(fp->f_type, "dtbo") != 0) + continue; COPYOUT(fp->f_addr, overlay, fp->f_size); /* Check compatible first to avoid unnecessary allocation */ rv = fdt_check_overlay_compatible(current_fdtp, overlay); From nobody Fri Oct 8 01:16:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8153812D1BCF; Fri, 8 Oct 2021 01:17: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 4HQVf43Rmdz3v4y; Fri, 8 Oct 2021 01:17: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 8B3AA1DCDB; Fri, 8 Oct 2021 01:16: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 1981Gsmj011150; Fri, 8 Oct 2021 01:16:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GsKl011149; Fri, 8 Oct 2021 01:16:54 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:54 GMT Message-Id: <202110080116.1981GsKl011149@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 0ad2e9eac9c3 - stable/12 - loader: Don't reserve space for symbols twice. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 0ad2e9eac9c318d9e2422750646d668a0b8fef07 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=0ad2e9eac9c318d9e2422750646d668a0b8fef07 commit 0ad2e9eac9c318d9e2422750646d668a0b8fef07 Author: Warner Losh AuthorDate: 2021-07-12 21:17:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 loader: Don't reserve space for symbols twice. The current code bumps lastaddr twice for the symbol table location. However, the first bump is bogus and results in wasted space. Remove it. PR: 110995 (cherry picked from commit 297e9f364b5aa243572ee52b1faef9b3542c1c9e) --- stand/common/load_elf_obj.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/stand/common/load_elf_obj.c b/stand/common/load_elf_obj.c index 4bff74764922..7df88678a015 100644 --- a/stand/common/load_elf_obj.c +++ b/stand/common/load_elf_obj.c @@ -280,8 +280,6 @@ __elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, uint64_t off) case SHT_SYMTAB: nsym++; ef->symtabindex = i; - shdr[i].sh_addr = (Elf_Addr)lastaddr; - lastaddr += shdr[i].sh_size; break; } } From nobody Fri Oct 8 01:16:55 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CF38712D1D93; Fri, 8 Oct 2021 01:17: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 4HQVf54j6Sz3v56; Fri, 8 Oct 2021 01:17: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 B96431DE5D; Fri, 8 Oct 2021 01:16: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 1981GtJ3011174; Fri, 8 Oct 2021 01:16:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GtKo011173; Fri, 8 Oct 2021 01:16:55 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:55 GMT Message-Id: <202110080116.1981GtKo011173@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f2c6540dfa36 - stable/12 - loader: tftp client should use server address from rootip List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f2c6540dfa3674b3724b6a0b8cf02f8a6435081a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f2c6540dfa3674b3724b6a0b8cf02f8a6435081a commit f2c6540dfa3674b3724b6a0b8cf02f8a6435081a Author: Toomas Soome AuthorDate: 2021-08-02 12:27:38 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 loader: tftp client should use server address from rootip servip is set from bootp bp_siaddr (if present) and rootip is set immediately from servip in tha sane bootp code. However, the common/dev_net.c does only set rootip (based on url processing etc). Therefore, we should also use rootip in tftp reader. Fixes hung tftp based boot when bp_siaddr is not provided. (cherry picked from commit 1b1bb6f178802a4522824e0268634a99cdbda098) --- stand/libsa/tftp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/stand/libsa/tftp.c b/stand/libsa/tftp.c index 3892f2aad86a..22e03ab58da1 100644 --- a/stand/libsa/tftp.c +++ b/stand/libsa/tftp.c @@ -38,7 +38,7 @@ __FBSDID("$FreeBSD$"); * Simple TFTP implementation for libsa. * Assumes: * - socket descriptor (int) at open_file->f_devdata - * - server host IP in global servip + * - server host IP in global rootip * Restrictions: * - read only * - lseek only with SEEK_SET or SEEK_CUR @@ -83,8 +83,6 @@ struct fs_ops tftp_fsops = { .fo_readdir = null_readdir }; -extern struct in_addr servip; - static int tftpport = 2000; static int is_open = 0; @@ -460,7 +458,7 @@ tftp_open(const char *path, struct open_file *f) return (EINVAL); } - io->destip = servip; + io->destip = rootip; tftpfile->off = 0; pathsize = (strlen(rootpath) + 1 + strlen(path) + 1) * sizeof(char); tftpfile->path = malloc(pathsize); From nobody Fri Oct 8 01:16:56 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 25A4E12DA6C8; Fri, 8 Oct 2021 01:22: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 4HQVlq3mhWz4V72; Fri, 8 Oct 2021 01:21: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 CAC551D952; Fri, 8 Oct 2021 01:16: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 1981GuW6011198; Fri, 8 Oct 2021 01:16:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GuVp011197; Fri, 8 Oct 2021 01:16:56 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:56 GMT Message-Id: <202110080116.1981GuVp011197@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: aef33b8ca5a3 - stable/12 - Reverted: Split out the loader efifb setup to a new function List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: aef33b8ca5a3dc843a31cf1645a4502565908b2e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=aef33b8ca5a3dc843a31cf1645a4502565908b2e commit aef33b8ca5a3dc843a31cf1645a4502565908b2e Author: Andrew Turner AuthorDate: 2021-02-26 11:47:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:16:00 +0000 Reverted: Split out the loader efifb setup to a new function (cherry picked from commit c8db60c0673d4bb7a3a3e2c043804e1ed1108c2f) (cherry picked from commit 773fc43fb060149f8e59c183e5da79feaf118c8c) From nobody Fri Oct 8 01:16:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2B59412DA7E0; Fri, 8 Oct 2021 01:22: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 4HQVlr3PXXz4Tw9; Fri, 8 Oct 2021 01:22: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 A096C1E1E3; Fri, 8 Oct 2021 01:16: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 1981GdRE010837; Fri, 8 Oct 2021 01:16:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981Gd7e010836; Fri, 8 Oct 2021 01:16:39 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:39 GMT Message-Id: <202110080116.1981Gd7e010836@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: c6bbaf794d11 - stable/12 - Build the arm64 loader with -ffixed-x18 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: c6bbaf794d11bc2d80b00eda20a0ce761ac9d656 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=c6bbaf794d11bc2d80b00eda20a0ce761ac9d656 commit c6bbaf794d11bc2d80b00eda20a0ce761ac9d656 Author: Andrew Turner AuthorDate: 2020-04-24 10:03:11 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 Build the arm64 loader with -ffixed-x18 This stops the compiler from using the x18 register. Some UEFI implementations assume this will be preserved when calling the Boot Services. (cherry picked from commit a2e2311a40696e39eb24ff4a4d4c0968bba42c8c) --- stand/defs.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/defs.mk b/stand/defs.mk index 9e291639e877..6fba2051301b 100644 --- a/stand/defs.mk +++ b/stand/defs.mk @@ -126,7 +126,7 @@ AFLAGS+= --32 # currently has no /boot/loader, but may soon. CFLAGS+= -ffreestanding ${CFLAGS_NO_SIMD} .if ${MACHINE_CPUARCH} == "aarch64" -CFLAGS+= -mgeneral-regs-only -fPIC +CFLAGS+= -mgeneral-regs-only -ffixed-x18 -fPIC .elif ${MACHINE_CPUARCH} == "riscv" CFLAGS+= -march=rv64imac -mabi=lp64 .else From nobody Fri Oct 8 01:16:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3111112DA833; Fri, 8 Oct 2021 01:22: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 4HQVlr3R6Zz4V5S; Fri, 8 Oct 2021 01:22: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 067EC1E0B3; Fri, 8 Oct 2021 01:16: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 1981GfpL010885; Fri, 8 Oct 2021 01:16:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981GfQU010884; Fri, 8 Oct 2021 01:16:41 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:16:41 GMT Message-Id: <202110080116.1981GfQU010884@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 06d16b8e9ba9 - stable/12 - loader: geli_dev_ioctl does return huge mediasize List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 06d16b8e9ba9f1ad0540c54402485081e0dbf93e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=06d16b8e9ba9f1ad0540c54402485081e0dbf93e commit 06d16b8e9ba9f1ad0540c54402485081e0dbf93e Author: Toomas Soome AuthorDate: 2020-07-07 12:24:40 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:15:59 +0000 loader: geli_dev_ioctl does return huge mediasize The DIOCGMEDIASIZE is calculated md->md_sectorsize * md->md_provsize, and for boot disk, the md_sectorsize is 4k. However, the md_provsize is already in units of bytes. (cherry picked from commit 0d1a62068123df267e20530c86d2fc7a4e1aaa2e) --- stand/libsa/geli/gelidev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/geli/gelidev.c b/stand/libsa/geli/gelidev.c index 8c1359c0b49a..751255636112 100644 --- a/stand/libsa/geli/gelidev.c +++ b/stand/libsa/geli/gelidev.c @@ -219,7 +219,7 @@ geli_dev_ioctl(struct open_file *f, u_long cmd, void *data) *(u_int *)data = md->md_sectorsize; break; case DIOCGMEDIASIZE: - *(uint64_t *)data = md->md_sectorsize * md->md_provsize; + *(uint64_t *)data = md->md_provsize; break; default: return (ENOTTY); From nobody Fri Oct 8 01:26:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3EF6A12DC2E8; Fri, 8 Oct 2021 01:26: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 4HQVrq3494z4bDM; Fri, 8 Oct 2021 01: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 D51211DCF4; Fri, 8 Oct 2021 01: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 1981QIgU024301; Fri, 8 Oct 2021 01: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 1981QIJq024300; Fri, 8 Oct 2021 01:26:18 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:26:18 GMT Message-Id: <202110080126.1981QIJq024300@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Robert Wing Subject: git: 8ff2b5224140 - main - prometheus_sysctl_exporter(8): filter output using a regex List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 8ff2b52241400f2b5c2287b91e6e12b97ffd5773 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rew: URL: https://cgit.FreeBSD.org/src/commit/?id=8ff2b52241400f2b5c2287b91e6e12b97ffd5773 commit 8ff2b52241400f2b5c2287b91e6e12b97ffd5773 Author: Robert Wing AuthorDate: 2021-10-08 01:00:27 +0000 Commit: Robert Wing CommitDate: 2021-10-08 01:02:57 +0000 prometheus_sysctl_exporter(8): filter output using a regex Add two options, -i and -e, for filtering prometheus metrics. Each option takes a regular expression as an argument. The provided regex will be tested against the prometheus metric name. The -i option includes metrics matching the given regex. The -e option excludes metrics matching the given regex. Sponsored by: Modirum MDPay Sponsored by: Klara Inc. Reviewed by: 0mp, debdrup Differential Revision: https://reviews.freebsd.org/D32269 --- .../prometheus_sysctl_exporter.8 | 18 ++++- .../prometheus_sysctl_exporter.c | 88 ++++++++++++++++------ 2 files changed, 80 insertions(+), 26 deletions(-) diff --git a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 index f4ac44891ecb..7d73e3cab8cd 100644 --- a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 +++ b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 @@ -22,7 +22,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd December 18, 2016 +.Dd October 7, 2021 .Dt PROMETHEUS_SYSCTL_EXPORTER 8 .Os .Sh NAME @@ -31,6 +31,8 @@ .Sh SYNOPSIS .Nm prometheus_sysctl_exporter .Op Fl dgh +.Op Fl e Ar pattern +.Op Fl i Ar pattern .Op Ar prefix ... .Sh DESCRIPTION Prometheus is a monitoring system that gathers metrics from its targets @@ -74,12 +76,26 @@ The following options are available: .Bl -tag -width indent .It Fl d Print descriptions of metrics when available. +.It Fl e Ar pattern +Same as +.Fl i , +except exclude metrics that match +.Ar pattern . .It Fl g Gzip compresses the HTTP response body. .It Fl h Precede the output with a HTTP response header. This flag is required when running this utility through .Xr inetd 8 . +.It Fl i Ar pattern +If specified, include metrics that match +.Ar pattern . +The format of +.Ar pattern +is to be a regular expression as described in +.Xr re_format 7 . +The provided regular expression is tested against the Prometheus +metric name. .El .Sh SEE ALSO .Xr cron 8 , diff --git a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c index b1f24ddf203a..25e60f5dddbe 100644 --- a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c +++ b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -44,6 +45,10 @@ __FBSDID("$FreeBSD$"); #include #include +/* Regular expressions for filtering output. */ +static regex_t inc_regex; +static regex_t exc_regex; + /* * Cursor for iterating over all of the system's sysctl OIDs. */ @@ -370,25 +375,27 @@ oid_get_name(const struct oid *o, struct oidname *on) on->oid = *o; } -/* Prints the name and labels of an OID to a file stream. */ +/* Populates the name and labels of an OID to a buffer. */ static void -oidname_print(const struct oidname *on, const struct oidformat *of, - FILE *fp) +oid_get_metric(const struct oidname *on, const struct oidformat *of, + char *metric, size_t mlen) { const char *name, *label; size_t i; - char separator; + char separator, buf[BUFSIZ]; /* Print the name of the metric. */ - fprintf(fp, "sysctl"); + snprintf(metric, mlen, "%s", "sysctl"); name = on->names; label = on->labels; for (i = 0; i < on->oid.len; ++i) { if (*label == '\0') { - fputc('_', fp); + strlcat(metric, "_", mlen); while (*name != '\0') { /* Map unsupported characters to underscores. */ - fputc(isalnum(*name) ? *name : '_', fp); + snprintf(buf, sizeof(buf), "%c", + isalnum(*name) ? *name : '_'); + strlcat(metric, buf, mlen); ++name; } } @@ -396,9 +403,9 @@ oidname_print(const struct oidname *on, const struct oidformat *of, label += strlen(label) + 1; } if (oidformat_is_temperature(of)) - fprintf(fp, "_celcius"); + strlcat(metric, "_celcius", mlen); else if (oidformat_is_timeval(of)) - fprintf(fp, "_seconds"); + strlcat(metric, "_seconds", mlen); /* Print the labels of the metric. */ name = on->names; @@ -410,21 +417,23 @@ oidname_print(const struct oidname *on, const struct oidformat *of, "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789_")] == '\0'); - fprintf(fp, "%c%s=\"", separator, label); + snprintf(buf, sizeof(buf), "%c%s=\"", separator, label); + strlcat(metric, buf, mlen); while (*name != '\0') { /* Escape backslashes and double quotes. */ if (*name == '\\' || *name == '"') - fputc('\\', fp); - fputc(*name++, fp); + strlcat(metric, "\\", mlen); + snprintf(buf, sizeof(buf), "%c", *name++); + strlcat(metric, buf, mlen); } - fputc('"', fp); + strlcat(metric, "\"", mlen); separator = ','; } name += strlen(name) + 1; label += strlen(label) + 1; } if (separator != '{') - fputc('}', fp); + strlcat(metric, "}", mlen); } /* Returns whether the OID name has any labels associated to it. */ @@ -483,16 +492,25 @@ oiddescription_print(const struct oiddescription *od, FILE *fp) static void oid_print(const struct oid *o, struct oidname *on, bool print_description, - FILE *fp) + bool exclude, bool include, FILE *fp) { struct oidformat of; struct oidvalue ov; struct oiddescription od; + char metric[BUFSIZ]; if (!oid_get_format(o, &of) || !oid_get_value(o, &of, &ov)) return; oid_get_name(o, on); + oid_get_metric(on, &of, metric, sizeof(metric)); + + if (exclude && regexec(&exc_regex, metric, 0, NULL, 0) == 0) + return; + + if (include && regexec(&inc_regex, metric, 0, NULL, 0) != 0) + return; + /* * Print the line with the description. Prometheus expects a * single unique description for every metric, which cannot be @@ -502,14 +520,14 @@ oid_print(const struct oid *o, struct oidname *on, bool print_description, if (print_description && !oidname_has_labels(on) && oid_get_description(o, &od)) { fprintf(fp, "# HELP "); - oidname_print(on, &of, fp); + fprintf(fp, "%s", metric); fputc(' ', fp); oiddescription_print(&od, fp); fputc('\n', fp); } /* Print the line with the value. */ - oidname_print(on, &of, fp); + fprintf(fp, "%s", metric); fputc(' ', fp); oidvalue_print(&ov, fp); fputc('\n', fp); @@ -539,8 +557,9 @@ static void usage(void) { - fprintf(stderr, - "usage: prometheus_sysctl_exporter [-dgh] [prefix ...]\n"); + fprintf(stderr, "%s", + "usage: prometheus_sysctl_exporter [-dgh] [-e pattern] [-i pattern]\n" + "\t[prefix ...]\n"); exit(1); } @@ -551,22 +570,41 @@ main(int argc, char *argv[]) char *http_buf; FILE *fp; size_t http_buflen; - int ch; - bool gzip_mode, http_mode, print_descriptions; + int ch, error; + bool exclude, include, gzip_mode, http_mode, print_descriptions; + char errbuf[BUFSIZ]; /* Parse command line flags. */ - gzip_mode = http_mode = print_descriptions = false; - while ((ch = getopt(argc, argv, "dgh")) != -1) { + include = exclude = gzip_mode = http_mode = print_descriptions = false; + while ((ch = getopt(argc, argv, "de:ghi:")) != -1) { switch (ch) { case 'd': print_descriptions = true; break; + case 'e': + error = regcomp(&exc_regex, optarg, REG_EXTENDED); + if (error != 0) { + regerror(error, &exc_regex, errbuf, sizeof(errbuf)); + errx(1, "bad regular expression '%s': %s", + optarg, errbuf); + } + exclude = true; + break; case 'g': gzip_mode = true; break; case 'h': http_mode = true; break; + case 'i': + error = regcomp(&inc_regex, optarg, REG_EXTENDED); + if (error != 0) { + regerror(error, &inc_regex, errbuf, sizeof(errbuf)); + errx(1, "bad regular expression '%s': %s", + optarg, errbuf); + } + include = true; + break; default: usage(); } @@ -590,7 +628,7 @@ main(int argc, char *argv[]) /* Print all OIDs. */ oid_get_root(&o); do { - oid_print(&o, &on, print_descriptions, fp); + oid_print(&o, &on, print_descriptions, exclude, include, fp); } while (oid_get_next(&o, &o)); } else { int i; @@ -602,7 +640,7 @@ main(int argc, char *argv[]) oid_get_by_name(&root, argv[i]); o = root; do { - oid_print(&o, &on, print_descriptions, fp); + oid_print(&o, &on, print_descriptions, exclude, include, fp); } while (oid_get_next(&o, &o) && oid_is_beneath(&o, &root)); } From nobody Fri Oct 8 01:31:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1E37012DEDC1; Fri, 8 Oct 2021 01: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 4HQVys6cY7z4gky; Fri, 8 Oct 2021 01:31: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 C3E5F1E58D; Fri, 8 Oct 2021 01: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 1981VXKe034660; Fri, 8 Oct 2021 01: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 1981VX2G034658; Fri, 8 Oct 2021 01:31:33 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:31:33 GMT Message-Id: <202110080131.1981VX2G034658@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 48192a2e3628 - stable/12 - Reverted: loader: use struct initializer in vdev_probe(). List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 48192a2e3628b2503441e70362389f99f4ee568f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=48192a2e3628b2503441e70362389f99f4ee568f commit 48192a2e3628b2503441e70362389f99f4ee568f Author: Toomas Soome AuthorDate: 2019-11-10 15:07:36 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:30:52 +0000 Reverted: loader: use struct initializer in vdev_probe(). (cherry picked from commit e5d9d0794881cb6cef879304c35b6d00b499b444) (cherry picked from commit c082b391b0e24ce69b33482cf77ff13bd1fefe29) From nobody Fri Oct 8 01:38:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5BB4212DFEAE for ; Fri, 8 Oct 2021 01:38:17 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-vs1-xe35.google.com (mail-vs1-xe35.google.com [IPv6:2607:f8b0:4864:20::e35]) (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 4HQW6d1mrhz4hS5 for ; Fri, 8 Oct 2021 01:38:17 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-vs1-xe35.google.com with SMTP id p2so8820357vst.10 for ; Thu, 07 Oct 2021 18:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=kvtcartuW+PuVg9pb0fLlbRkiGf80o9X3P4xgXlhYy0=; b=dUgcLi8zUz0vig/GYOeTnqpMGaIhl1XmAQ6QTAGyJDNcAF9cEgvnAXWwcH+TyiqE2E oFcIFkq8hDE8ueog77AhpG+Bz5caa0nu5uR9GfIzA1ZR/+1lrFclw0LcUY4YeWWOmhw2 8fmWnMNI1BTISmAYFlzgzVtNGs/e1NO6uu324eLmmhHx1zJjpHZJYLjfA/r2ZIwDGcPq Zgoirk3G4emlWysgCtLxjYvhvdAkVU3i/sPbnXVJL39pVTNJDiS+J4EExj1V/UryQE9L lUFKSL9a3+ZH9lfqz8hfiJyQNoHT6uV5rRE30XQ439X8ArOFkcMJAZsqrU9nLBlBJ9Xw 7egQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kvtcartuW+PuVg9pb0fLlbRkiGf80o9X3P4xgXlhYy0=; b=C0kh94ANJL0/jlOVOCcM6xjM55NMC2JsX3vKNSkCdSIe9Dt3R+BwmHICRzqv8CNwPd FSMgyl/tMq5xboFO5y3Q/kwo3ulRXKbTMHLd0xFYVs0BsDh1Am5csMFifzF1HNJ8meAk q9ImJXu4NPy+lYQFCO2fsnleJ/6j11v14cb+dSTqZ8Jm+/tqGrEj7QZaeGOA/B2/tjoC at32gQNDyxWpeWj/LcSbznKM8PNoSssHSAGhCKIBoNgeyn/r3MNVefH7ucijUe0ArwG0 xDAee2RWYx1XccCrBvHjlniSO1+rMpDjWBEcJZ0njtEPEtzM3X560v1AHpuxxsvDtdrf 880w== X-Gm-Message-State: AOAM5322C0muef6bCivEeCtQbC22McxdAohcZQXc/QIbdDIGtnD/dUcp SHpz+RNWNi7QPgatiV9Fptx8W4DPeSRN7vc6tRFUKA== X-Google-Smtp-Source: ABdhPJz1EB5pMvTNM17Vh100XrCQQUOKWlD7OwS5XnyWKdf1qpfeOZn766FSstVbuKZlYb/6cQYUbuGqLNsvjAtOUb4= X-Received: by 2002:a67:c903:: with SMTP id w3mr8552593vsk.6.1633657096553; Thu, 07 Oct 2021 18:38:16 -0700 (PDT) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 References: <202110080131.1981VX2G034658@gitrepo.freebsd.org> In-Reply-To: <202110080131.1981VX2G034658@gitrepo.freebsd.org> From: Warner Losh Date: Thu, 7 Oct 2021 19:38:04 -0600 Message-ID: Subject: Re: git: 48192a2e3628 - stable/12 - Reverted: loader: use struct initializer in vdev_probe(). To: Kyle Evans Cc: src-committers , "" , dev-commits-src-branches@freebsd.org Content-Type: multipart/alternative; boundary="000000000000ecd9e305cdcd6ecf" X-Rspamd-Queue-Id: 4HQW6d1mrhz4hS5 X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N --000000000000ecd9e305cdcd6ecf Content-Type: text/plain; charset="UTF-8" On Thu, Oct 7, 2021, 7:31 PM Kyle Evans wrote: > The branch stable/12 has been updated by kevans: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=48192a2e3628b2503441e70362389f99f4ee568f > > commit 48192a2e3628b2503441e70362389f99f4ee568f > Author: Toomas Soome > AuthorDate: 2019-11-10 15:07:36 +0000 > Commit: Kyle Evans > CommitDate: 2021-10-08 01:30:52 +0000 > > Reverted: loader: use struct initializer in vdev_probe(). > > (cherry picked from commit e5d9d0794881cb6cef879304c35b6d00b499b444) > (cherry picked from commit c082b391b0e24ce69b33482cf77ff13bd1fefe29) > I suggested this as the least bad way to cope with our current tools. Warner > --000000000000ecd9e305cdcd6ecf-- From nobody Fri Oct 8 01:59:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 39943179A8A7; Fri, 8 Oct 2021 01:59: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 4HQWbB70MJz4kH8; Fri, 8 Oct 2021 01:59: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 D0B3A1EB8E; Fri, 8 Oct 2021 01:59: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 1981xYn7064652; Fri, 8 Oct 2021 01:59:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1981xY0f064651; Fri, 8 Oct 2021 01:59:34 GMT (envelope-from git) Date: Fri, 8 Oct 2021 01:59:34 GMT Message-Id: <202110080159.1981xY0f064651@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9aeadd3b8683 - stable/12 - Reverted: loader: allow booting from pool with log device List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9aeadd3b8683218a3be9fcf41d5ae751f6497ac3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9aeadd3b8683218a3be9fcf41d5ae751f6497ac3 commit 9aeadd3b8683218a3be9fcf41d5ae751f6497ac3 Author: Toomas Soome AuthorDate: 2019-11-03 21:36:29 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 01:59:08 +0000 Reverted: loader: allow booting from pool with log device Apparently people are using log with boot pool, so we can not just error out there. Still we will need to investigate how to handle log properly. (cherry picked from commit f331eb7d346b5e6b33b7e180fc876bfd853ba6ef) (cherry picked from commit ae3f74e7638b91bdc778fbaee9caeab917190a82) From nobody Fri Oct 8 05:15:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 12C6117E58A9; Fri, 8 Oct 2021 05:15: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 4HQbx975HHz3Ft1; Fri, 8 Oct 2021 05:15: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 CF35020CE4; Fri, 8 Oct 2021 05:15: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 1985FPC7030818; Fri, 8 Oct 2021 05:15:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1985FPMi030817; Fri, 8 Oct 2021 05:15:25 GMT (envelope-from git) Date: Fri, 8 Oct 2021 05:15:25 GMT Message-Id: <202110080515.1985FPMi030817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 5018dfb90fb3 - stable/13 - tests/sys/fs/fusefs/read.cc: fix build on powerpc64 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5018dfb90fb3631531f1305392c34d89fbfab96a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=5018dfb90fb3631531f1305392c34d89fbfab96a commit 5018dfb90fb3631531f1305392c34d89fbfab96a Author: Konstantin Belousov AuthorDate: 2021-09-22 22:47:10 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:15:05 +0000 tests/sys/fs/fusefs/read.cc: fix build on powerpc64 There sig_atomic_t is shorter than void *. As result, it cannot keep pointer. Assigning to void * is actually safe for us in a signal handler. (cherry picked from commit 3fcbde5e883a253f631082b128dcdf77c840d4c0) --- tests/sys/fs/fusefs/read.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/sys/fs/fusefs/read.cc b/tests/sys/fs/fusefs/read.cc index cb82d0a43b06..3cba564affcf 100644 --- a/tests/sys/fs/fusefs/read.cc +++ b/tests/sys/fs/fusefs/read.cc @@ -109,7 +109,7 @@ class ReadSigbus: public Read { public: static jmp_buf s_jmpbuf; -static sig_atomic_t s_si_addr; +static void *s_si_addr; void TearDown() { struct sigaction sa; @@ -125,12 +125,12 @@ void TearDown() { static void handle_sigbus(int signo __unused, siginfo_t *info, void *uap __unused) { - ReadSigbus::s_si_addr = (sig_atomic_t)info->si_addr; + ReadSigbus::s_si_addr = info->si_addr; longjmp(ReadSigbus::s_jmpbuf, 1); } jmp_buf ReadSigbus::s_jmpbuf; -sig_atomic_t ReadSigbus::s_si_addr; +void *ReadSigbus::s_si_addr; /* AIO reads need to set the header's pid field correctly */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ @@ -658,7 +658,7 @@ TEST_F(ReadSigbus, mmap_eio) FAIL() << "shouldn't get here"; } - ASSERT_EQ(p, (void*)ReadSigbus::s_si_addr); + ASSERT_EQ(p, ReadSigbus::s_si_addr); ASSERT_EQ(0, munmap(p, len)) << strerror(errno); leak(fd); } @@ -785,7 +785,7 @@ TEST_F(ReadSigbus, mmap_getblksz_fail) FAIL() << "shouldn't get here"; } - ASSERT_EQ(p, (void*)ReadSigbus::s_si_addr); + ASSERT_EQ(p, ReadSigbus::s_si_addr); ASSERT_EQ(0, munmap(p, len)) << strerror(errno); leak(fd); } From nobody Fri Oct 8 06:10:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 498DF12D2732; Fri, 8 Oct 2021 06:10: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 4HQd8Z18jWz3Kr7; Fri, 8 Oct 2021 06:10: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 0783221FC3; Fri, 8 Oct 2021 06:10: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 1986AMrT006409; Fri, 8 Oct 2021 06:10:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ALAJ006402; Fri, 8 Oct 2021 06:10:21 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:21 GMT Message-Id: <202110080610.1986ALAJ006402@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: de406844ebab - stable/12 - loader: zfsimpl.c cstyle cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: de406844ebab732f2f802a72888ec362f65136fb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=de406844ebab732f2f802a72888ec362f65136fb commit de406844ebab732f2f802a72888ec362f65136fb Author: Toomas Soome AuthorDate: 2019-12-15 14:09:49 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:40:32 +0000 loader: zfsimpl.c cstyle cleanup No functional changes intended. (cherry picked from commit 2e6bb6553b04d80cf85c9728df6aa4dc66dc020a) --- stand/libsa/zfs/zfsimpl.c | 206 +++++++++++++++++++++++++--------------------- 1 file changed, 114 insertions(+), 92 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index e4d9be20dc5e..68a22ba3f3f3 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -105,7 +105,7 @@ typedef struct indirect_vsd { */ static vdev_list_t zfs_vdevs; - /* +/* * List of ZFS features supported for read */ static const char *features_for_read[] = { @@ -142,7 +142,7 @@ static char *dnode_cache_buf; static char *zap_scratch; static char *zfs_temp_buf, *zfs_temp_end, *zfs_temp_ptr; -#define TEMP_SIZE (1024 * 1024) +#define TEMP_SIZE (1024 * 1024) static int zio_read(const spa_t *spa, const blkptr_t *bp, void *buf); static int zfs_get_root(const spa_t *spa, uint64_t *objid); @@ -225,13 +225,13 @@ xdr_uint64_t(const unsigned char **xdr, uint64_t *lp) xdr_u_int(xdr, &hi); xdr_u_int(xdr, &lo); - *lp = (((uint64_t) hi) << 32) | lo; + *lp = (((uint64_t)hi) << 32) | lo; return (0); } static int nvlist_find(const unsigned char *nvlist, const char *name, int type, - int *elementsp, void *valuep) + int *elementsp, void *valuep) { const unsigned char *p, *pair; int junk; @@ -253,12 +253,12 @@ nvlist_find(const unsigned char *nvlist, const char *name, int type, p += roundup(namelen, 4); xdr_int(&p, &pairtype); - if (!memcmp(name, pairname, namelen) && type == pairtype) { + if (memcmp(name, pairname, namelen) == 0 && type == pairtype) { xdr_int(&p, &elements); if (elementsp) *elementsp = elements; if (type == DATA_TYPE_UINT64) { - xdr_uint64_t(&p, (uint64_t *) valuep); + xdr_uint64_t(&p, (uint64_t *)valuep); return (0); } else if (type == DATA_TYPE_STRING) { int len; @@ -275,7 +275,8 @@ nvlist_find(const unsigned char *nvlist, const char *name, int type, } } else { /* - * Not the pair we are looking for, skip to the next one. + * Not the pair we are looking for, skip to the + * next one. */ p = pair + encoded_size; } @@ -318,7 +319,8 @@ nvlist_check_features_for_read(const unsigned char *nvlist) xdr_int(&p, &pairtype); for (i = 0; features_for_read[i] != NULL; i++) { - if (!memcmp(pairname, features_for_read[i], namelen)) { + if (memcmp(pairname, features_for_read[i], + namelen) == 0) { found = 1; break; } @@ -364,7 +366,7 @@ nvlist_next(const unsigned char *nvlist) xdr_int(&p, &decoded_size); } - return p; + return (p); } #ifdef TEST @@ -372,7 +374,7 @@ nvlist_next(const unsigned char *nvlist) static const unsigned char * nvlist_print(const unsigned char *nvlist, unsigned int indent) { - static const char* typenames[] = { + static const char *typenames[] = { "DATA_TYPE_UNKNOWN", "DATA_TYPE_BOOLEAN", "DATA_TYPE_BYTE", @@ -455,7 +457,8 @@ nvlist_print(const unsigned char *nvlist, unsigned int indent) if (j != elements - 1) { for (i = 0; i < indent; i++) printf(" "); - printf("%s %s", typenames[pairtype], pairname); + printf("%s %s", typenames[pairtype], + pairname); } } break; @@ -471,7 +474,7 @@ nvlist_print(const unsigned char *nvlist, unsigned int indent) xdr_int(&p, &decoded_size); } - return p; + return (p); } #endif @@ -492,7 +495,6 @@ vdev_read_phys(vdev_t *vdev, const blkptr_t *bp, void *buf, psize = size; } - /*printf("ZFS: reading %zu bytes at 0x%jx to %p\n", psize, (uintmax_t)offset, buf);*/ rc = vdev->v_phys_read(vdev, vdev->v_read_priv, offset, buf, psize); if (rc == 0) { if (bp != NULL) @@ -856,7 +858,7 @@ vdev_indirect_remap(vdev_t *vd, uint64_t offset, uint64_t asize, void *arg) printf("vdev_indirect_remap: out of memory.\n"); zio->io_error = ENOMEM; } - for ( ; rs != NULL; rs = list_remove_head(&stack)) { + for (; rs != NULL; rs = list_remove_head(&stack)) { vdev_t *v = rs->rs_vd; uint64_t num_entries = 0; /* vdev_indirect_mapping_t *vim = v->v_mapping; */ @@ -1027,7 +1029,7 @@ vdev_disk_read(vdev_t *vdev, const blkptr_t *bp, void *buf, { return (vdev_read_phys(vdev, bp, buf, - offset + VDEV_LABEL_START_SIZE, bytes)); + offset + VDEV_LABEL_START_SIZE, bytes)); } @@ -1158,15 +1160,16 @@ vdev_init(uint64_t guid, const unsigned char *nvlist, vdev_t **vdevp) return (ENOENT); } - if (strcmp(type, VDEV_TYPE_MIRROR) - && strcmp(type, VDEV_TYPE_DISK) + if (strcmp(type, VDEV_TYPE_MIRROR) != 0 && + strcmp(type, VDEV_TYPE_DISK) != 0 && #ifdef ZFS_TEST - && strcmp(type, VDEV_TYPE_FILE) + strcmp(type, VDEV_TYPE_FILE) != 0 && #endif - && strcmp(type, VDEV_TYPE_RAIDZ) - && strcmp(type, VDEV_TYPE_INDIRECT) - && strcmp(type, VDEV_TYPE_REPLACING)) { - printf("ZFS: can only boot from disk, mirror, raidz1, raidz2 and raidz3 vdevs\n"); + strcmp(type, VDEV_TYPE_RAIDZ) != 0 && + strcmp(type, VDEV_TYPE_INDIRECT) != 0 && + strcmp(type, VDEV_TYPE_REPLACING) != 0) { + printf("ZFS: can only boot from disk, mirror, raidz1, " + "raidz2 and raidz3 vdevs\n"); return (EIO); } @@ -1540,7 +1543,7 @@ spa_find_by_guid(uint64_t guid) if (spa->spa_guid == guid) return (spa); - return (0); + return (NULL); } static spa_t * @@ -1549,10 +1552,10 @@ spa_find_by_name(const char *name) spa_t *spa; STAILQ_FOREACH(spa, &zfs_pools, spa_link) - if (!strcmp(spa->spa_name, name)) + if (strcmp(spa->spa_name, name) == 0) return (spa); - return (0); + return (NULL); } #ifdef BOOT2 @@ -1577,7 +1580,7 @@ spa_get_primary_vdev(const spa_t *spa) if (vdev == NULL) return (NULL); for (kid = STAILQ_FIRST(&vdev->v_children); kid != NULL; - kid = STAILQ_FIRST(&vdev->v_children)) + kid = STAILQ_FIRST(&vdev->v_children)) vdev = kid; return (vdev); } @@ -1610,7 +1613,7 @@ spa_create(uint64_t guid, const char *name) static const char * state_name(vdev_state_t state) { - static const char* names[] = { + static const char *names[] = { "UNKNOWN", "CLOSED", "OFFLINE", @@ -1620,7 +1623,7 @@ state_name(vdev_state_t state) "DEGRADED", "ONLINE" }; - return names[state]; + return (names[state]); } #ifdef BOOT2 @@ -1643,7 +1646,7 @@ pager_printf(const char *fmt, ...) #endif -#define STATUS_FORMAT " %s %s\n" +#define STATUS_FORMAT " %s %s\n" static int print_state(int indent, const char *name, vdev_state_t state) @@ -1665,7 +1668,7 @@ vdev_status(vdev_t *vdev, int indent) int ret; if (vdev->v_islog) { - (void)pager_output(" logs\n"); + (void) pager_output(" logs\n"); indent++; } @@ -1962,7 +1965,7 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) if (!SPA_VERSION_IS_SUPPORTED(val)) { printf("ZFS: unsupported ZFS version %u (should be %u)\n", - (unsigned) val, (unsigned) SPA_VERSION); + (unsigned)val, (unsigned)SPA_VERSION); free(nvlist); return (EIO); } @@ -2087,8 +2090,8 @@ ilog2(int n) for (v = 0; v < 32; v++) if (n == (1 << v)) - return v; - return -1; + return (v); + return (-1); } static int @@ -2159,8 +2162,8 @@ zio_read(const spa_t *spa, const blkptr_t *bp, void *buf) zfs_free(pbuf, size); } if (error != 0) - printf("ZFS: i/o error - unable to decompress block pointer data, error %d\n", - error); + printf("ZFS: i/o error - unable to decompress " + "block pointer data, error %d\n", error); return (error); } @@ -2219,7 +2222,8 @@ zio_read(const spa_t *spa, const blkptr_t *bp, void *buf) } static int -dnode_read(const spa_t *spa, const dnode_phys_t *dnode, off_t offset, void *buf, size_t buflen) +dnode_read(const spa_t *spa, const dnode_phys_t *dnode, off_t offset, + void *buf, size_t buflen) { int ibshift = dnode->dn_indblkshift - SPA_BLKPTRSHIFT; int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; @@ -2310,7 +2314,7 @@ mzap_lookup(const dnode_phys_t *dnode, const char *name, uint64_t *value) for (i = 0; i < chunks; i++) { mze = &mz->mz_chunk[i]; - if (!strcmp(mze->mze_name, name)) { + if (strcmp(mze->mze_name, name) == 0) { *value = mze->mze_value; return (0); } @@ -2324,7 +2328,8 @@ mzap_lookup(const dnode_phys_t *dnode, const char *name, uint64_t *value) * matches. */ static int -fzap_name_equal(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc, const char *name) +fzap_name_equal(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc, + const char *name) { size_t namelen; const zap_leaf_chunk_t *nc; @@ -2336,6 +2341,7 @@ fzap_name_equal(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc, const char *na p = name; while (namelen > 0) { size_t len; + len = namelen; if (len > ZAP_LEAF_ARRAY_BYTES) len = ZAP_LEAF_ARRAY_BYTES; @@ -2346,7 +2352,7 @@ fzap_name_equal(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc, const char *na nc = &ZAP_LEAF_CHUNK(zl, nc->l_array.la_next); } - return 1; + return (1); } /* @@ -2365,7 +2371,7 @@ fzap_leaf_value(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc) value = (value << 8) | p[i]; } - return value; + return (value); } static void @@ -2457,7 +2463,7 @@ fzap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, uint64_t integer_size, uint64_t num_integers, void *value) { int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; - zap_phys_t zh = *(zap_phys_t *) zap_scratch; + zap_phys_t zh = *(zap_phys_t *)zap_scratch; fat_zap_t z; uint64_t *ptrtbl; uint64_t hash; @@ -2470,17 +2476,17 @@ fzap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, return (rc); z.zap_block_shift = ilog2(bsize); - z.zap_phys = (zap_phys_t *) zap_scratch; + z.zap_phys = (zap_phys_t *)zap_scratch; /* * Figure out where the pointer table is and read it in if necessary. */ if (zh.zap_ptrtbl.zt_blk) { rc = dnode_read(spa, dnode, zh.zap_ptrtbl.zt_blk * bsize, - zap_scratch, bsize); + zap_scratch, bsize); if (rc) return (rc); - ptrtbl = (uint64_t *) zap_scratch; + ptrtbl = (uint64_t *)zap_scratch; } else { ptrtbl = &ZAP_EMBEDDED_PTRTBL_ENT(&z, 0); } @@ -2497,20 +2503,21 @@ fzap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, if (rc) return (rc); - zl.l_phys = (zap_leaf_phys_t *) zap_scratch; + zl.l_phys = (zap_leaf_phys_t *)zap_scratch; /* * Make sure this chunk matches our hash. */ - if (zl.l_phys->l_hdr.lh_prefix_len > 0 - && zl.l_phys->l_hdr.lh_prefix - != hash >> (64 - zl.l_phys->l_hdr.lh_prefix_len)) + if (zl.l_phys->l_hdr.lh_prefix_len > 0 && + zl.l_phys->l_hdr.lh_prefix != + hash >> (64 - zl.l_phys->l_hdr.lh_prefix_len)) return (ENOENT); /* * Hash within the chunk to find our entry. */ - int shift = (64 - ZAP_LEAF_HASH_SHIFT(&zl) - zl.l_phys->l_hdr.lh_prefix_len); + int shift = (64 - ZAP_LEAF_HASH_SHIFT(&zl) - + zl.l_phys->l_hdr.lh_prefix_len); int h = (hash >> shift) & ((1 << ZAP_LEAF_HASH_SHIFT(&zl)) - 1); h = zl.l_phys->l_hash[h]; if (h == 0xffff) @@ -2547,12 +2554,12 @@ zap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, if (rc) return (rc); - zap_type = *(uint64_t *) zap_scratch; + zap_type = *(uint64_t *)zap_scratch; if (zap_type == ZBT_MICRO) - return mzap_lookup(dnode, name, value); + return (mzap_lookup(dnode, name, value)); else if (zap_type == ZBT_HEADER) { - return fzap_lookup(spa, dnode, name, integer_size, - num_integers, value); + return (fzap_lookup(spa, dnode, name, integer_size, + num_integers, value)); } printf("ZFS: invalid zap_type=%d\n", (int)zap_type); return (EIO); @@ -2595,10 +2602,11 @@ mzap_list(const dnode_phys_t *dnode, int (*callback)(const char *, uint64_t)) * the directory header. */ static int -fzap_list(const spa_t *spa, const dnode_phys_t *dnode, int (*callback)(const char *, uint64_t)) +fzap_list(const spa_t *spa, const dnode_phys_t *dnode, + int (*callback)(const char *, uint64_t)) { int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; - zap_phys_t zh = *(zap_phys_t *) zap_scratch; + zap_phys_t zh = *(zap_phys_t *)zap_scratch; fat_zap_t z; int i, j, rc; @@ -2606,7 +2614,7 @@ fzap_list(const spa_t *spa, const dnode_phys_t *dnode, int (*callback)(const cha return (EIO); z.zap_block_shift = ilog2(bsize); - z.zap_phys = (zap_phys_t *) zap_scratch; + z.zap_phys = (zap_phys_t *)zap_scratch; /* * This assumes that the leaf blocks start at block 1. The @@ -2622,7 +2630,7 @@ fzap_list(const spa_t *spa, const dnode_phys_t *dnode, int (*callback)(const cha if (dnode_read(spa, dnode, off, zap_scratch, bsize)) return (EIO); - zl.l_phys = (zap_leaf_phys_t *) zap_scratch; + zl.l_phys = (zap_leaf_phys_t *)zap_scratch; for (j = 0; j < ZAP_LEAF_NUMCHUNKS(&zl); j++) { zap_leaf_chunk_t *zc, *nc; @@ -2657,7 +2665,7 @@ fzap_list(const spa_t *spa, const dnode_phys_t *dnode, int (*callback)(const cha */ value = fzap_leaf_value(&zl, zc); - //printf("%s 0x%jx\n", name, (uintmax_t)value); + /* printf("%s 0x%jx\n", name, (uintmax_t)value); */ rc = callback((const char *)name, value); if (rc != 0) return (rc); @@ -2687,15 +2695,16 @@ zap_list(const spa_t *spa, const dnode_phys_t *dnode) if (dnode_read(spa, dnode, 0, zap_scratch, size)) return (EIO); - zap_type = *(uint64_t *) zap_scratch; + zap_type = *(uint64_t *)zap_scratch; if (zap_type == ZBT_MICRO) - return mzap_list(dnode, zfs_printf); + return (mzap_list(dnode, zfs_printf)); else - return fzap_list(spa, dnode, zfs_printf); + return (fzap_list(spa, dnode, zfs_printf)); } static int -objset_get_dnode(const spa_t *spa, const objset_phys_t *os, uint64_t objnum, dnode_phys_t *dnode) +objset_get_dnode(const spa_t *spa, const objset_phys_t *os, uint64_t objnum, + dnode_phys_t *dnode) { off_t offset; @@ -2705,7 +2714,8 @@ objset_get_dnode(const spa_t *spa, const objset_phys_t *os, uint64_t objnum, dno } static int -mzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t value) +mzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, + uint64_t value) { const mzap_phys_t *mz; const mzap_ent_phys_t *mze; @@ -2718,7 +2728,7 @@ mzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t v */ size = dnode->dn_datablkszsec * 512; - mz = (const mzap_phys_t *) zap_scratch; + mz = (const mzap_phys_t *)zap_scratch; chunks = size / MZAP_ENT_LEN - 1; for (i = 0; i < chunks; i++) { @@ -2758,7 +2768,8 @@ fzap_name_copy(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc, char *name) } static int -fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t value) +fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, + uint64_t value) { int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; zap_phys_t zh = *(zap_phys_t *)zap_scratch; @@ -2769,7 +2780,7 @@ fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t v return (EIO); z.zap_block_shift = ilog2(bsize); - z.zap_phys = (zap_phys_t *) zap_scratch; + z.zap_phys = (zap_phys_t *)zap_scratch; /* * This assumes that the leaf blocks start at block 1. The @@ -2783,7 +2794,7 @@ fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t v if (dnode_read(spa, dnode, off, zap_scratch, bsize)) return (EIO); - zl.l_phys = (zap_leaf_phys_t *) zap_scratch; + zl.l_phys = (zap_leaf_phys_t *)zap_scratch; for (j = 0; j < ZAP_LEAF_NUMCHUNKS(&zl); j++) { zap_leaf_chunk_t *zc; @@ -2806,7 +2817,8 @@ fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t v } static int -zap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t value) +zap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, + uint64_t value) { int rc; uint64_t zap_type; @@ -2816,11 +2828,11 @@ zap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t va if (rc) return (rc); - zap_type = *(uint64_t *) zap_scratch; + zap_type = *(uint64_t *)zap_scratch; if (zap_type == ZBT_MICRO) - return mzap_rlookup(spa, dnode, name, value); + return (mzap_rlookup(spa, dnode, name, value)); else - return fzap_rlookup(spa, dnode, name, value); + return (fzap_rlookup(spa, dnode, name, value)); } static int @@ -2851,15 +2863,17 @@ zfs_rlookup(const spa_t *spa, uint64_t objnum, char *result) dd = (dsl_dir_phys_t *)&dir.dn_bonus; /* Actual loop condition. */ - parent_obj = dd->dd_parent_obj; + parent_obj = dd->dd_parent_obj; if (parent_obj == 0) break; - if (objset_get_dnode(spa, &spa->spa_mos, parent_obj, &parent) != 0) + if (objset_get_dnode(spa, &spa->spa_mos, parent_obj, + &parent) != 0) return (EIO); dd = (dsl_dir_phys_t *)&parent.dn_bonus; child_dir_zapobj = dd->dd_child_dir_zapobj; - if (objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, &child_dir_zap) != 0) + if (objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, + &child_dir_zap) != 0) return (EIO); if (zap_rlookup(spa, &child_dir_zap, component, dir_obj) != 0) return (EIO); @@ -2890,7 +2904,8 @@ zfs_lookup_dataset(const spa_t *spa, const char *name, uint64_t *objnum) dsl_dir_phys_t *dd; const char *p, *q; - if (objset_get_dnode(spa, &spa->spa_mos, DMU_POOL_DIRECTORY_OBJECT, &dir)) + if (objset_get_dnode(spa, &spa->spa_mos, + DMU_POOL_DIRECTORY_OBJECT, &dir)) return (EIO); if (zap_lookup(spa, &dir, DMU_POOL_ROOT_DATASET, sizeof (dir_obj), 1, &dir_obj)) @@ -2919,7 +2934,8 @@ zfs_lookup_dataset(const spa_t *spa, const char *name, uint64_t *objnum) } child_dir_zapobj = dd->dd_child_dir_zapobj; - if (objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, &child_dir_zap) != 0) + if (objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, + &child_dir_zap) != 0) return (EIO); /* Actual loop condition #2. */ @@ -2945,7 +2961,7 @@ zfs_list_dataset(const spa_t *spa, uint64_t objnum/*, int pos, char *entry*/) printf("ZFS: can't find dataset %ju\n", (uintmax_t)objnum); return (EIO); } - ds = (dsl_dataset_phys_t *) &dataset.dn_bonus; + ds = (dsl_dataset_phys_t *)&dataset.dn_bonus; dir_obj = ds->ds_dir_obj; if (objset_get_dnode(spa, &spa->spa_mos, dir_obj, &dir)) { @@ -2955,7 +2971,8 @@ zfs_list_dataset(const spa_t *spa, uint64_t objnum/*, int pos, char *entry*/) dd = (dsl_dir_phys_t *)&dir.dn_bonus; child_dir_zapobj = dd->dd_child_dir_zapobj; - if (objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, &child_dir_zap) != 0) { + if (objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, + &child_dir_zap) != 0) { printf("ZFS: can't find child zap %ju\n", (uintmax_t)dir_obj); return (EIO); } @@ -2964,7 +2981,8 @@ zfs_list_dataset(const spa_t *spa, uint64_t objnum/*, int pos, char *entry*/) } int -zfs_callback_dataset(const spa_t *spa, uint64_t objnum, int (*callback)(const char *, uint64_t)) +zfs_callback_dataset(const spa_t *spa, uint64_t objnum, + int (*callback)(const char *, uint64_t)) { uint64_t dir_obj, child_dir_zapobj, zap_type; dnode_phys_t child_dir_zap, dir, dataset; @@ -2977,7 +2995,7 @@ zfs_callback_dataset(const spa_t *spa, uint64_t objnum, int (*callback)(const ch printf("ZFS: can't find dataset %ju\n", (uintmax_t)objnum); return (err); } - ds = (dsl_dataset_phys_t *) &dataset.dn_bonus; + ds = (dsl_dataset_phys_t *)&dataset.dn_bonus; dir_obj = ds->ds_dir_obj; err = objset_get_dnode(spa, &spa->spa_mos, dir_obj, &dir); @@ -2988,21 +3006,23 @@ zfs_callback_dataset(const spa_t *spa, uint64_t objnum, int (*callback)(const ch dd = (dsl_dir_phys_t *)&dir.dn_bonus; child_dir_zapobj = dd->dd_child_dir_zapobj; - err = objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, &child_dir_zap); + err = objset_get_dnode(spa, &spa->spa_mos, child_dir_zapobj, + &child_dir_zap); if (err != 0) { printf("ZFS: can't find child zap %ju\n", (uintmax_t)dir_obj); return (err); } - err = dnode_read(spa, &child_dir_zap, 0, zap_scratch, child_dir_zap.dn_datablkszsec * 512); + err = dnode_read(spa, &child_dir_zap, 0, zap_scratch, + child_dir_zap.dn_datablkszsec * 512); if (err != 0) return (err); - zap_type = *(uint64_t *) zap_scratch; + zap_type = *(uint64_t *)zap_scratch; if (zap_type == ZBT_MICRO) - return mzap_list(&child_dir_zap, callback); + return (mzap_list(&child_dir_zap, callback)); else - return fzap_list(spa, &child_dir_zap, callback); + return (fzap_list(spa, &child_dir_zap, callback)); } #endif @@ -3021,7 +3041,7 @@ zfs_mount_dataset(const spa_t *spa, uint64_t objnum, objset_phys_t *objset) return (EIO); } - ds = (dsl_dataset_phys_t *) &dataset.dn_bonus; + ds = (dsl_dataset_phys_t *)&dataset.dn_bonus; if (zio_read(spa, &ds->ds_bp, objset)) { printf("ZFS: can't read object set for dataset %ju\n", (uintmax_t)objnum); @@ -3046,7 +3066,8 @@ zfs_get_root(const spa_t *spa, uint64_t *objid) /* * Start with the MOS directory object. */ - if (objset_get_dnode(spa, &spa->spa_mos, DMU_POOL_DIRECTORY_OBJECT, &dir)) { + if (objset_get_dnode(spa, &spa->spa_mos, + DMU_POOL_DIRECTORY_OBJECT, &dir)) { printf("ZFS: can't read MOS object directory\n"); return (EIO); } @@ -3065,8 +3086,9 @@ zfs_get_root(const spa_t *spa, uint64_t *objid) /* * Lookup the root dataset directory */ - if (zap_lookup(spa, &dir, DMU_POOL_ROOT_DATASET, sizeof (root), 1, &root) - || objset_get_dnode(spa, &spa->spa_mos, root, &dir)) { + if (zap_lookup(spa, &dir, DMU_POOL_ROOT_DATASET, + sizeof(root), 1, &root) || + objset_get_dnode(spa, &spa->spa_mos, root, &dir)) { printf("ZFS: can't find root dsl_dir\n"); return (EIO); } @@ -3075,7 +3097,7 @@ zfs_get_root(const spa_t *spa, uint64_t *objid) * Use the information from the dataset directory's bonus buffer * to find the dataset object and from that the object set itself. */ - dsl_dir_phys_t *dd = (dsl_dir_phys_t *) &dir.dn_bonus; + dsl_dir_phys_t *dd = (dsl_dir_phys_t *)&dir.dn_bonus; *objid = dd->dd_head_dataset_obj; return (0); } @@ -3158,7 +3180,7 @@ check_mos_features(const spa_t *spa) if (dnode_read(spa, &dir, 0, zap_scratch, size)) return (EIO); - zap_type = *(uint64_t *) zap_scratch; + zap_type = *(uint64_t *)zap_scratch; if (zap_type == ZBT_MICRO) rc = mzap_list(&dir, check_feature); else @@ -3395,7 +3417,7 @@ zfs_lookup(const struct zfsmount *mount, const char *upath, dnode_phys_t *dnode) return (rc); } - rc = zap_lookup(spa, &dn, ZFS_ROOT_OBJ, sizeof (objnum), 1, &objnum); + rc = zap_lookup(spa, &dn, ZFS_ROOT_OBJ, sizeof(objnum), 1, &objnum); if (rc) { free(entry); return (rc); From nobody Fri Oct 8 06:10:23 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 61A7612D25D0; Fri, 8 Oct 2021 06:10: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 4HQd8b28p7z3Klf; Fri, 8 Oct 2021 06:10: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 2B7DF21FC4; Fri, 8 Oct 2021 06:10: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 1986ANL2006646; Fri, 8 Oct 2021 06:10:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ANNX006645; Fri, 8 Oct 2021 06:10:23 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:23 GMT Message-Id: <202110080610.1986ANNX006645@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 72004aae0c33 - stable/12 - Nuke out buffer overflow safety marker code. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 72004aae0c335e6cb51923d6b80b372fca0f66e8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=72004aae0c335e6cb51923d6b80b372fca0f66e8 commit 72004aae0c335e6cb51923d6b80b372fca0f66e8 Author: Maxim Sobolev AuthorDate: 2018-11-23 22:36:56 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:40:36 +0000 Nuke out buffer overflow safety marker code. It duplicates similar code in the malloc()/free() as well as having potential of softening the handling in case error is detected down to a mere warning as compared to hard panic in free(). (cherry picked from commit 6c81fe160cb922d35cc740e2fa8be1a9467d139f) --- stand/common/bcache.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/stand/common/bcache.c b/stand/common/bcache.c index bd83b1427693..a020f3c3c53c 100644 --- a/stand/common/bcache.c +++ b/stand/common/bcache.c @@ -86,7 +86,6 @@ static u_int bcache_rablks; ((bc)->bcache_ctl[BHASH((bc), (blkno))].bc_blkno != (blkno)) #define BCACHE_READAHEAD 256 #define BCACHE_MINREADAHEAD 32 -#define BCACHE_MARKER 0xdeadbeef static void bcache_invalidate(struct bcache *bc, daddr_t blkno); static void bcache_insert(struct bcache *bc, daddr_t blkno); @@ -123,7 +122,6 @@ bcache_allocate(void) u_int i; struct bcache *bc = malloc(sizeof (struct bcache)); int disks = bcache_numdev; - uint32_t *marker; if (disks == 0) disks = 1; /* safe guard */ @@ -142,8 +140,7 @@ bcache_allocate(void) bc->bcache_nblks = bcache_total_nblks >> i; bcache_unit_nblks = bc->bcache_nblks; - bc->bcache_data = malloc(bc->bcache_nblks * bcache_blksize + - sizeof(uint32_t)); + bc->bcache_data = malloc(bc->bcache_nblks * bcache_blksize); if (bc->bcache_data == NULL) { /* dont error out yet. fall back to 32 blocks and try again */ bc->bcache_nblks = 32; @@ -158,9 +155,6 @@ bcache_allocate(void) errno = ENOMEM; return (NULL); } - /* Insert cache end marker. */ - marker = (uint32_t *)(bc->bcache_data + bc->bcache_nblks * bcache_blksize); - *marker = BCACHE_MARKER; /* Flush the cache */ for (i = 0; i < bc->bcache_nblks; i++) { @@ -222,15 +216,12 @@ read_strategy(void *devdata, int rw, daddr_t blk, size_t size, int result; daddr_t p_blk; caddr_t p_buf; - uint32_t *marker; if (bc == NULL) { errno = ENODEV; return (-1); } - marker = (uint32_t *)(bc->bcache_data + bc->bcache_nblks * bcache_blksize); - if (rsize != NULL) *rsize = 0; @@ -350,12 +341,6 @@ read_strategy(void *devdata, int rw, daddr_t blk, size_t size, result = 0; } - if (*marker != BCACHE_MARKER) { - printf("BUG: bcache corruption detected: nblks: %zu p_blk: %lu, " - "p_size: %zu, ra: %zu\n", bc->bcache_nblks, - (long unsigned)BHASH(bc, p_blk), p_size, ra); - } - done: if ((result == 0) && (rsize != NULL)) *rsize = size; From nobody Fri Oct 8 06:10:24 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5076712D2893; Fri, 8 Oct 2021 06:10: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 4HQd8c5fkpz3Kd6; Fri, 8 Oct 2021 06:10: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 5F2B921FC5; Fri, 8 Oct 2021 06:10: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 1986AOl0006676; Fri, 8 Oct 2021 06:10:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AOAb006675; Fri, 8 Oct 2021 06:10:24 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:24 GMT Message-Id: <202110080610.1986AOAb006675@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: c3c739c25663 - stable/12 - Wait a maximum of 300 seconds for network send/recv in libsa List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: c3c739c25663dec34369027edfe3cd0d85693096 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=c3c739c25663dec34369027edfe3cd0d85693096 commit c3c739c25663dec34369027edfe3cd0d85693096 Author: Rebecca Cran AuthorDate: 2018-12-20 19:27:46 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:01 +0000 Wait a maximum of 300 seconds for network send/recv in libsa The reason for this change is that currently, a send/recv takes many hours to time out. This is suboptimal in the bootloader because it means for example that NFS will take hours to fail before allowing subsequent access methods such as gzip to be tried. Setting MAXWAIT to 300 seconds (5 minutes) still allows slow connections of 1Mb to be used to download a 30MB kernel file. (cherry picked from commit d5cee48f3e65662051e15c85e4fc1841d72977fe) --- stand/libsa/net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/net.c b/stand/libsa/net.c index 1834a7525e76..3142616a5bf0 100644 --- a/stand/libsa/net.c +++ b/stand/libsa/net.c @@ -63,7 +63,7 @@ __FBSDID("$FreeBSD$"); * timeout is hit. */ #ifndef MAXWAIT -#define MAXWAIT 0 /* seconds */ +#define MAXWAIT 300 /* seconds */ #endif #if MAXWAIT < 0 From nobody Fri Oct 8 06:10:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E6FDF12D25E7; Fri, 8 Oct 2021 06:10: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 4HQd8f1f4Xz3Kg0; Fri, 8 Oct 2021 06:10: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 800FF21B7B; Fri, 8 Oct 2021 06:10: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 1986APeP006701; Fri, 8 Oct 2021 06:10:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986APAq006700; Fri, 8 Oct 2021 06:10:25 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:25 GMT Message-Id: <202110080610.1986APAq006700@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 053b95d94896 - stable/12 - Remove whole-disk vdev support from zfsboot List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 053b95d94896a234a334ba0fb3dc610352ed22c5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=053b95d94896a234a334ba0fb3dc610352ed22c5 commit 053b95d94896a234a334ba0fb3dc610352ed22c5 Author: Patrick Kelsey AuthorDate: 2019-02-17 03:52:44 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:05 +0000 Remove whole-disk vdev support from zfsboot This is consistent with the removal of whole-disk vdev support from libsa/zfs/zfs.c in r342151, and is part way to having the LBAs read during probe be fully constrained by partition tables when present. (cherry picked from commit 861729a32e1a723ecfd2c5ba009d108879aa661b) --- stand/i386/zfsboot/zfsboot.c | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index d46934a4f059..25c0c1d8407a 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -595,32 +595,19 @@ probe_drive(struct zfsdsk *zdsk) char *sec; unsigned i; - /* - * If we find a vdev on the whole disk, stop here. - */ - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) - return; - #ifdef LOADER_GELI_SUPPORT /* - * Taste the disk, if it is GELI encrypted, decrypt it and check to see if - * it is a usable vdev then. Otherwise dig - * out the partition table and probe each slice/partition - * in turn for a vdev or GELI encrypted vdev. + * Taste the disk, if it is GELI encrypted, decrypt it then dig out the + * partition table and probe each slice/partition in turn for a vdev or + * GELI encrypted vdev. */ elba = drvsize_ext(zdsk); if (elba > 0) { elba--; } zdsk->gdev = geli_taste(vdev_read, zdsk, elba, "disk%u:0:"); - if (zdsk->gdev != NULL) { - if (geli_havekey(zdsk->gdev) == 0 || - geli_passphrase(zdsk->gdev, gelipw) == 0) { - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - return; - } - } - } + if ((zdsk->gdev != NULL) && (geli_havekey(zdsk->gdev) == 0)) + geli_passphrase(zdsk->gdev, gelipw); #endif /* LOADER_GELI_SUPPORT */ sec = dmadat->secbuf; From nobody Fri Oct 8 06:10:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D6B0212D262B; Fri, 8 Oct 2021 06:10: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 4HQd8g0z3Tz3Km6; Fri, 8 Oct 2021 06:10: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 AA49A21E1B; Fri, 8 Oct 2021 06:10: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 1986AQCN006725; Fri, 8 Oct 2021 06:10:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AQRU006724; Fri, 8 Oct 2021 06:10:26 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:26 GMT Message-Id: <202110080610.1986AQRU006724@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: bd403d1a2db2 - stable/12 - userboot/test should use PRIx64 as one would expect from prefix 0x List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: bd403d1a2db2566ab0e5207185c693e2cbf90b85 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=bd403d1a2db2566ab0e5207185c693e2cbf90b85 commit bd403d1a2db2566ab0e5207185c693e2cbf90b85 Author: Toomas Soome AuthorDate: 2019-10-24 07:49:33 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:09 +0000 userboot/test should use PRIx64 as one would expect from prefix 0x Test is printing decimal value after prefix 0x. (cherry picked from commit 96b2f9c996c82941b58eceaafe55eb696e8a5a4d) --- stand/userboot/test/test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/userboot/test/test.c b/stand/userboot/test/test.c index 4dc67548c546..301069a4d953 100644 --- a/stand/userboot/test/test.c +++ b/stand/userboot/test/test.c @@ -342,7 +342,7 @@ test_setgdt(void *arg, uint64_t v, size_t sz) void test_exec(void *arg, uint64_t pc) { - printf("Execute at 0x%"PRIu64"\n", pc); + printf("Execute at 0x%"PRIx64"\n", pc); test_exit(arg, 0); } From nobody Fri Oct 8 06:10:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D500312D2762; Fri, 8 Oct 2021 06:10: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 4HQd8h1KZYz3KmC; Fri, 8 Oct 2021 06:10: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 BD53C21FC6; Fri, 8 Oct 2021 06:10: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 1986ARAr006749; Fri, 8 Oct 2021 06:10:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ARGB006748; Fri, 8 Oct 2021 06:10:27 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:27 GMT Message-Id: <202110080610.1986ARGB006748@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: c4b652b7e629 - stable/12 - cstyle cleanup for i386_copy.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: c4b652b7e629207b39e53cafbc16d691233dd434 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=c4b652b7e629207b39e53cafbc16d691233dd434 commit c4b652b7e629207b39e53cafbc16d691233dd434 Author: Toomas Soome AuthorDate: 2019-11-08 12:19:03 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:11 +0000 cstyle cleanup for i386_copy.c No functional changes are intended. (cherry picked from commit 1113c41fef7b1b0ff02d816908f553f4699d9bd1) --- stand/i386/libi386/i386_copy.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/stand/i386/libi386/i386_copy.c b/stand/i386/libi386/i386_copy.c index c46e2b118976..a1e7c734ebf3 100644 --- a/stand/i386/libi386/i386_copy.c +++ b/stand/i386/libi386/i386_copy.c @@ -40,25 +40,25 @@ __FBSDID("$FreeBSD$"); ssize_t i386_copyin(const void *src, vm_offset_t dest, const size_t len) { - if (dest + len >= memtop) { - errno = EFBIG; - return(-1); - } + if (dest + len >= memtop) { + errno = EFBIG; + return (-1); + } - bcopy(src, PTOV(dest), len); - return(len); + bcopy(src, PTOV(dest), len); + return (len); } ssize_t i386_copyout(const vm_offset_t src, void *dest, const size_t len) { - if (src + len >= memtop) { - errno = EFBIG; - return(-1); - } - - bcopy(PTOV(src), dest, len); - return(len); + if (src + len >= memtop) { + errno = EFBIG; + return (-1); + } + + bcopy(PTOV(src), dest, len); + return (len); } @@ -66,10 +66,10 @@ ssize_t i386_readin(readin_handle_t fd, vm_offset_t dest, const size_t len) { - if (dest + len >= memtop_copyin) { - errno = EFBIG; - return(-1); - } + if (dest + len >= memtop_copyin) { + errno = EFBIG; + return (-1); + } - return (VECTX_READ(fd, PTOV(dest), len)); + return (VECTX_READ(fd, PTOV(dest), len)); } From nobody Fri Oct 8 06:10:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D32D512D29A2; Fri, 8 Oct 2021 06:10: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 4HQd8k1TCtz3KjT; Fri, 8 Oct 2021 06:10: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 EC23B21ECD; Fri, 8 Oct 2021 06:10: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 1986AScS006773; Fri, 8 Oct 2021 06:10:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ASGc006772; Fri, 8 Oct 2021 06:10:28 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:28 GMT Message-Id: <202110080610.1986ASGc006772@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9a8ace087d8f - stable/12 - Remove comment. We're just going to the next node here. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9a8ace087d8f170ab9ab14338341fcca001ef400 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9a8ace087d8f170ab9ab14338341fcca001ef400 commit 9a8ace087d8f170ab9ab14338341fcca001ef400 Author: Warner Losh AuthorDate: 2019-11-28 05:40:10 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:13 +0000 Remove comment. We're just going to the next node here. (cherry picked from commit 79cb1bf26f78a580a3cb639f3e45dcd8171be14d) --- stand/efi/loader/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index cf0a041b6432..b7225965a383 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -782,7 +782,7 @@ parse_uefi_con_out(void) */ pci_pending = true; } - node = NextDevicePathNode(node); /* Skip the end node */ + node = NextDevicePathNode(node); } /* From nobody Fri Oct 8 06:10:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 16B6512D2A95; Fri, 8 Oct 2021 06:10: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 4HQd8k3Kjnz3Kmc; Fri, 8 Oct 2021 06:10: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 0DE1F21E1C; Fri, 8 Oct 2021 06:10: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 1986ATc0006797; Fri, 8 Oct 2021 06:10:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ATJS006796; Fri, 8 Oct 2021 06:10:29 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:29 GMT Message-Id: <202110080610.1986ATJS006796@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 19500a2c4aba - stable/12 - loader: rewrite zfs reader zap code to use malloc List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 19500a2c4aba92a0d5a018749197608216ab7a6e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=19500a2c4aba92a0d5a018749197608216ab7a6e commit 19500a2c4aba92a0d5a018749197608216ab7a6e Author: Toomas Soome AuthorDate: 2020-02-04 07:37:55 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:14 +0000 loader: rewrite zfs reader zap code to use malloc First step on removing zfs_alloc. (cherry picked from commit 4d297e7035a4c3e367fd995767ceabaa75bec1ca) --- stand/i386/zfsboot/zfsboot.c | 29 ++- stand/libsa/zfs/zfsimpl.c | 434 +++++++++++++++++++++++++++---------------- sys/cddl/boot/zfs/zfsimpl.h | 13 +- 3 files changed, 302 insertions(+), 174 deletions(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index 25c0c1d8407a..c6b69867b0f4 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -317,30 +317,41 @@ static int vdev_read_pad2(vdev_t *vdev, char *buf, size_t size) { blkptr_t bp; - char *tmp = zap_scratch; + char *tmp; off_t off = offsetof(vdev_label_t, vl_pad2); + int rc; if (size > VDEV_PAD_SIZE) size = VDEV_PAD_SIZE; + tmp = malloc(size); + if (tmp == NULL) + return (ENOMEM); + BP_ZERO(&bp); BP_SET_LSIZE(&bp, VDEV_PAD_SIZE); BP_SET_PSIZE(&bp, VDEV_PAD_SIZE); BP_SET_CHECKSUM(&bp, ZIO_CHECKSUM_LABEL); BP_SET_COMPRESS(&bp, ZIO_COMPRESS_OFF); DVA_SET_OFFSET(BP_IDENTITY(&bp), off); - if (vdev_read_phys(vdev, &bp, tmp, off, 0)) - return (EIO); - memcpy(buf, tmp, size); - return (0); + rc = vdev_read_phys(vdev, &bp, tmp, off, 0); + if (rc == 0) + memcpy(buf, tmp, size); + free(buf); + return (rc); } static int vdev_clear_pad2(vdev_t *vdev) { - char *zeroes = zap_scratch; + char *zeroes; uint64_t *end; off_t off = offsetof(vdev_label_t, vl_pad2); + int rc; + + zeroes = malloc(VDEV_PAD_SIZE); + if (zeroes == NULL) + return (ENOMEM); memset(zeroes, 0, VDEV_PAD_SIZE); end = (uint64_t *)(zeroes + VDEV_PAD_SIZE); @@ -350,9 +361,9 @@ vdev_clear_pad2(vdev_t *vdev) end[-3] = 0xaf909f1658aacefc; end[-2] = 0xcbd1ea57ff6db48b; end[-1] = 0x6ec692db0d465fab; - if (vdev_write(vdev, vdev->v_read_priv, off, zeroes, VDEV_PAD_SIZE)) - return (EIO); - return (0); + rc = vdev_write(vdev, vdev->v_read_priv, off, zeroes, VDEV_PAD_SIZE); + free(zeroes); + return (rc); } static void diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 68a22ba3f3f3..b1ba6e46e91d 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -139,7 +139,6 @@ static spa_list_t zfs_pools; static const dnode_phys_t *dnode_cache_obj; static uint64_t dnode_cache_bn; static char *dnode_cache_buf; -static char *zap_scratch; static char *zfs_temp_buf, *zfs_temp_end, *zfs_temp_ptr; #define TEMP_SIZE (1024 * 1024) @@ -173,7 +172,6 @@ zfs_init(void) zfs_temp_end = zfs_temp_buf + TEMP_SIZE; zfs_temp_ptr = zfs_temp_buf; dnode_cache_buf = malloc(SPA_MAXBLOCKSIZE); - zap_scratch = malloc(SPA_MAXBLOCKSIZE); zfs_init_crc(); } @@ -2296,22 +2294,17 @@ dnode_read(const spa_t *spa, const dnode_phys_t *dnode, off_t offset, * scratch buffer contains the directory contents. */ static int -mzap_lookup(const dnode_phys_t *dnode, const char *name, uint64_t *value) +mzap_lookup(const mzap_phys_t *mz, size_t size, const char *name, + uint64_t *value) { - const mzap_phys_t *mz; const mzap_ent_phys_t *mze; - size_t size; int chunks, i; /* * Microzap objects use exactly one block. Read the whole * thing. */ - size = dnode->dn_datablkszsec * 512; - - mz = (const mzap_phys_t *) zap_scratch; chunks = size / MZAP_ENT_LEN - 1; - for (i = 0; i < chunks; i++) { mze = &mz->mz_chunk[i]; if (strcmp(mze->mze_name, name) == 0) { @@ -2454,89 +2447,166 @@ fzap_check_size(uint64_t integer_size, uint64_t num_integers) return (0); } -/* - * Lookup a value in a fatzap directory. Assumes that the zap scratch - * buffer contains the directory header. - */ +static void +zap_leaf_free(zap_leaf_t *leaf) +{ + free(leaf->l_phys); + free(leaf); +} + static int -fzap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, - uint64_t integer_size, uint64_t num_integers, void *value) +zap_get_leaf_byblk(fat_zap_t *zap, uint64_t blk, zap_leaf_t **lp) { - int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; - zap_phys_t zh = *(zap_phys_t *)zap_scratch; - fat_zap_t z; - uint64_t *ptrtbl; - uint64_t hash; - int rc; + int bs = FZAP_BLOCK_SHIFT(zap); + int err; - if (zh.zap_magic != ZAP_MAGIC) - return (EIO); + *lp = malloc(sizeof(**lp)); + if (*lp == NULL) + return (ENOMEM); - if ((rc = fzap_check_size(integer_size, num_integers)) != 0) - return (rc); + (*lp)->l_bs = bs; + (*lp)->l_phys = malloc(1 << bs); - z.zap_block_shift = ilog2(bsize); - z.zap_phys = (zap_phys_t *)zap_scratch; + if ((*lp)->l_phys == NULL) { + free(*lp); + return (ENOMEM); + } + err = dnode_read(zap->zap_spa, zap->zap_dnode, blk << bs, (*lp)->l_phys, + 1 << bs); + if (err != 0) { + zap_leaf_free(*lp); + } + return (err); +} - /* - * Figure out where the pointer table is and read it in if necessary. - */ - if (zh.zap_ptrtbl.zt_blk) { - rc = dnode_read(spa, dnode, zh.zap_ptrtbl.zt_blk * bsize, - zap_scratch, bsize); - if (rc) - return (rc); - ptrtbl = (uint64_t *)zap_scratch; +static int +zap_table_load(fat_zap_t *zap, zap_table_phys_t *tbl, uint64_t idx, + uint64_t *valp) +{ + int bs = FZAP_BLOCK_SHIFT(zap); + uint64_t blk = idx >> (bs - 3); + uint64_t off = idx & ((1 << (bs - 3)) - 1); + uint64_t *buf; + int rc; + + buf = malloc(1 << zap->zap_block_shift); + if (buf == NULL) + return (ENOMEM); + rc = dnode_read(zap->zap_spa, zap->zap_dnode, (tbl->zt_blk + blk) << bs, + buf, 1 << zap->zap_block_shift); + if (rc == 0) + *valp = buf[off]; + free(buf); + return (rc); +} + +static int +zap_idx_to_blk(fat_zap_t *zap, uint64_t idx, uint64_t *valp) +{ + if (zap->zap_phys->zap_ptrtbl.zt_numblks == 0) { + *valp = ZAP_EMBEDDED_PTRTBL_ENT(zap, idx); + return (0); } else { - ptrtbl = &ZAP_EMBEDDED_PTRTBL_ENT(&z, 0); + return (zap_table_load(zap, &zap->zap_phys->zap_ptrtbl, + idx, valp)); } +} - hash = zap_hash(zh.zap_salt, name); - - zap_leaf_t zl; - zl.l_bs = z.zap_block_shift; +#define ZAP_HASH_IDX(hash, n) (((n) == 0) ? 0 : ((hash) >> (64 - (n)))) +static int +zap_deref_leaf(fat_zap_t *zap, uint64_t h, zap_leaf_t **lp) +{ + uint64_t idx, blk; + int err; - off_t off = ptrtbl[hash >> (64 - zh.zap_ptrtbl.zt_shift)] << zl.l_bs; - zap_leaf_chunk_t *zc; + idx = ZAP_HASH_IDX(h, zap->zap_phys->zap_ptrtbl.zt_shift); + err = zap_idx_to_blk(zap, idx, &blk); + if (err != 0) + return (err); + return (zap_get_leaf_byblk(zap, blk, lp)); +} - rc = dnode_read(spa, dnode, off, zap_scratch, bsize); - if (rc) - return (rc); +#define CHAIN_END 0xffff /* end of the chunk chain */ +#define LEAF_HASH(l, h) \ + ((ZAP_LEAF_HASH_NUMENTRIES(l)-1) & \ + ((h) >> \ + (64 - ZAP_LEAF_HASH_SHIFT(l) - (l)->l_phys->l_hdr.lh_prefix_len))) +#define LEAF_HASH_ENTPTR(l, h) (&(l)->l_phys->l_hash[LEAF_HASH(l, h)]) - zl.l_phys = (zap_leaf_phys_t *)zap_scratch; +static int +zap_leaf_lookup(zap_leaf_t *zl, uint64_t hash, const char *name, + uint64_t integer_size, uint64_t num_integers, void *value) +{ + int rc; + uint16_t *chunkp; + struct zap_leaf_entry *le; /* * Make sure this chunk matches our hash. */ - if (zl.l_phys->l_hdr.lh_prefix_len > 0 && - zl.l_phys->l_hdr.lh_prefix != - hash >> (64 - zl.l_phys->l_hdr.lh_prefix_len)) - return (ENOENT); + if (zl->l_phys->l_hdr.lh_prefix_len > 0 && + zl->l_phys->l_hdr.lh_prefix != + hash >> (64 - zl->l_phys->l_hdr.lh_prefix_len)) + return (EIO); - /* - * Hash within the chunk to find our entry. - */ - int shift = (64 - ZAP_LEAF_HASH_SHIFT(&zl) - - zl.l_phys->l_hdr.lh_prefix_len); - int h = (hash >> shift) & ((1 << ZAP_LEAF_HASH_SHIFT(&zl)) - 1); - h = zl.l_phys->l_hash[h]; - if (h == 0xffff) - return (ENOENT); - zc = &ZAP_LEAF_CHUNK(&zl, h); - while (zc->l_entry.le_hash != hash) { - if (zc->l_entry.le_next == 0xffff) - return (ENOENT); - zc = &ZAP_LEAF_CHUNK(&zl, zc->l_entry.le_next); - } - if (fzap_name_equal(&zl, zc, name)) { - if (zc->l_entry.le_value_intlen * zc->l_entry.le_value_numints > - integer_size * num_integers) - return (E2BIG); - fzap_leaf_array(&zl, zc, integer_size, num_integers, value); - return (0); + rc = ENOENT; + for (chunkp = LEAF_HASH_ENTPTR(zl, hash); + *chunkp != CHAIN_END; chunkp = &le->le_next) { + zap_leaf_chunk_t *zc; + uint16_t chunk = *chunkp; + + le = ZAP_LEAF_ENTRY(zl, chunk); + if (le->le_hash != hash) + continue; + zc = &ZAP_LEAF_CHUNK(zl, chunk); + if (fzap_name_equal(zl, zc, name)) { + if (zc->l_entry.le_value_intlen > integer_size) { + rc = EINVAL; + } else { + fzap_leaf_array(zl, zc, integer_size, + num_integers, value); + rc = 0; + } + break; + } } + return (rc); +} - return (ENOENT); +/* + * Lookup a value in a fatzap directory. + */ +static int +fzap_lookup(const spa_t *spa, const dnode_phys_t *dnode, zap_phys_t *zh, + const char *name, uint64_t integer_size, uint64_t num_integers, + void *value) +{ + int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; + fat_zap_t z; + zap_leaf_t *zl; + uint64_t hash; + int rc; + + if (zh->zap_magic != ZAP_MAGIC) + return (EIO); + + if ((rc = fzap_check_size(integer_size, num_integers)) != 0) + return (rc); + + z.zap_block_shift = ilog2(bsize); + z.zap_phys = zh; + z.zap_spa = spa; + z.zap_dnode = dnode; + + hash = zap_hash(zh->zap_salt, name); + rc = zap_deref_leaf(&z, hash, &zl); + if (rc != 0) + return (rc); + + rc = zap_leaf_lookup(zl, hash, name, integer_size, num_integers, value); + + zap_leaf_free(zl); + return (rc); } /* @@ -2547,74 +2617,80 @@ zap_lookup(const spa_t *spa, const dnode_phys_t *dnode, const char *name, uint64_t integer_size, uint64_t num_integers, void *value) { int rc; - uint64_t zap_type; + zap_phys_t *zap; size_t size = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; - rc = dnode_read(spa, dnode, 0, zap_scratch, size); + zap = malloc(size); + if (zap == NULL) + return (ENOMEM); + + rc = dnode_read(spa, dnode, 0, zap, size); if (rc) - return (rc); + goto done; - zap_type = *(uint64_t *)zap_scratch; - if (zap_type == ZBT_MICRO) - return (mzap_lookup(dnode, name, value)); - else if (zap_type == ZBT_HEADER) { - return (fzap_lookup(spa, dnode, name, integer_size, - num_integers, value)); + switch (zap->zap_block_type) { + case ZBT_MICRO: + rc = mzap_lookup((const mzap_phys_t *)zap, size, name, value); + break; + case ZBT_HEADER: + rc = fzap_lookup(spa, dnode, zap, name, integer_size, + num_integers, value); + break; + default: + printf("ZFS: invalid zap_type=%" PRIx64 "\n", + zap->zap_block_type); + rc = EIO; } - printf("ZFS: invalid zap_type=%d\n", (int)zap_type); - return (EIO); +done: + free(zap); + return (rc); } /* - * List a microzap directory. Assumes that the zap scratch buffer contains - * the directory contents. + * List a microzap directory. */ static int -mzap_list(const dnode_phys_t *dnode, int (*callback)(const char *, uint64_t)) +mzap_list(const mzap_phys_t *mz, size_t size, + int (*callback)(const char *, uint64_t)) { - const mzap_phys_t *mz; const mzap_ent_phys_t *mze; - size_t size; int chunks, i, rc; /* * Microzap objects use exactly one block. Read the whole * thing. */ - size = dnode->dn_datablkszsec * 512; - mz = (const mzap_phys_t *) zap_scratch; + rc = 0; chunks = size / MZAP_ENT_LEN - 1; - for (i = 0; i < chunks; i++) { mze = &mz->mz_chunk[i]; if (mze->mze_name[0]) { rc = callback(mze->mze_name, mze->mze_value); if (rc != 0) - return (rc); + break; } } - return (0); + return (rc); } /* - * List a fatzap directory. Assumes that the zap scratch buffer contains - * the directory header. + * List a fatzap directory. */ static int -fzap_list(const spa_t *spa, const dnode_phys_t *dnode, +fzap_list(const spa_t *spa, const dnode_phys_t *dnode, zap_phys_t *zh, int (*callback)(const char *, uint64_t)) { int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; - zap_phys_t zh = *(zap_phys_t *)zap_scratch; fat_zap_t z; - int i, j, rc; + uint64_t i; + int j, rc; - if (zh.zap_magic != ZAP_MAGIC) + if (zh->zap_magic != ZAP_MAGIC) return (EIO); z.zap_block_shift = ilog2(bsize); - z.zap_phys = (zap_phys_t *)zap_scratch; + z.zap_phys = zh; /* * This assumes that the leaf blocks start at block 1. The @@ -2622,15 +2698,19 @@ fzap_list(const spa_t *spa, const dnode_phys_t *dnode, */ zap_leaf_t zl; zl.l_bs = z.zap_block_shift; - for (i = 0; i < zh.zap_num_leafs; i++) { + zl.l_phys = malloc(bsize); + if (zl.l_phys == NULL) + return (ENOMEM); + + for (i = 0; i < zh->zap_num_leafs; i++) { off_t off = ((off_t)(i + 1)) << zl.l_bs; char name[256], *p; uint64_t value; - if (dnode_read(spa, dnode, off, zap_scratch, bsize)) + if (dnode_read(spa, dnode, off, zl.l_phys, bsize)) { + free(zl.l_phys); return (EIO); - - zl.l_phys = (zap_leaf_phys_t *)zap_scratch; + } for (j = 0; j < ZAP_LEAF_NUMCHUNKS(&zl); j++) { zap_leaf_chunk_t *zc, *nc; @@ -2667,11 +2747,14 @@ fzap_list(const spa_t *spa, const dnode_phys_t *dnode, /* printf("%s 0x%jx\n", name, (uintmax_t)value); */ rc = callback((const char *)name, value); - if (rc != 0) + if (rc != 0) { + free(zl.l_phys); return (rc); + } } } + free(zl.l_phys); return (0); } @@ -2689,17 +2772,24 @@ static int zfs_printf(const char *name, uint64_t value __unused) static int zap_list(const spa_t *spa, const dnode_phys_t *dnode) { - uint64_t zap_type; + zap_phys_t *zap; size_t size = dnode->dn_datablkszsec * 512; + int rc; - if (dnode_read(spa, dnode, 0, zap_scratch, size)) - return (EIO); + zap = malloc(size); + if (zap == NULL) + return (ENOMEM); - zap_type = *(uint64_t *)zap_scratch; - if (zap_type == ZBT_MICRO) - return (mzap_list(dnode, zfs_printf)); - else - return (fzap_list(spa, dnode, zfs_printf)); + rc = dnode_read(spa, dnode, 0, zap, size); + if (rc == 0) { + if (zap->zap_block_type == ZBT_MICRO) + rc = mzap_list((const mzap_phys_t *)zap, size, + zfs_printf); + else + rc = fzap_list(spa, dnode, zap, zfs_printf); + } + free(zap); + return (rc); } static int @@ -2713,24 +2803,20 @@ objset_get_dnode(const spa_t *spa, const objset_phys_t *os, uint64_t objnum, dnode, sizeof(dnode_phys_t)); } +/* + * Lookup a name in a microzap directory. + */ static int -mzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, - uint64_t value) +mzap_rlookup(const mzap_phys_t *mz, size_t size, char *name, uint64_t value) { - const mzap_phys_t *mz; const mzap_ent_phys_t *mze; - size_t size; int chunks, i; /* * Microzap objects use exactly one block. Read the whole * thing. */ - size = dnode->dn_datablkszsec * 512; - - mz = (const mzap_phys_t *)zap_scratch; chunks = size / MZAP_ENT_LEN - 1; - for (i = 0; i < chunks; i++) { mze = &mz->mz_chunk[i]; if (value == mze->mze_value) { @@ -2768,19 +2854,19 @@ fzap_name_copy(const zap_leaf_t *zl, const zap_leaf_chunk_t *zc, char *name) } static int -fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, - uint64_t value) +fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, zap_phys_t *zh, + char *name, uint64_t value) { int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; - zap_phys_t zh = *(zap_phys_t *)zap_scratch; fat_zap_t z; - int i, j; + uint64_t i; + int j, rc; - if (zh.zap_magic != ZAP_MAGIC) + if (zh->zap_magic != ZAP_MAGIC) return (EIO); z.zap_block_shift = ilog2(bsize); - z.zap_phys = (zap_phys_t *)zap_scratch; + z.zap_phys = zh; /* * This assumes that the leaf blocks start at block 1. The @@ -2788,13 +2874,16 @@ fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, */ zap_leaf_t zl; zl.l_bs = z.zap_block_shift; - for (i = 0; i < zh.zap_num_leafs; i++) { - off_t off = ((off_t)(i + 1)) << zl.l_bs; + zl.l_phys = malloc(bsize); + if (zl.l_phys == NULL) + return (ENOMEM); - if (dnode_read(spa, dnode, off, zap_scratch, bsize)) - return (EIO); + for (i = 0; i < zh->zap_num_leafs; i++) { + off_t off = ((off_t)(i + 1)) << zl.l_bs; - zl.l_phys = (zap_leaf_phys_t *)zap_scratch; + rc = dnode_read(spa, dnode, off, zl.l_phys, bsize); + if (rc != 0) + goto done; for (j = 0; j < ZAP_LEAF_NUMCHUNKS(&zl); j++) { zap_leaf_chunk_t *zc; @@ -2808,31 +2897,39 @@ fzap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, if (fzap_leaf_value(&zl, zc) == value) { fzap_name_copy(&zl, zc, name); - return (0); + goto done; } } } - return (ENOENT); + rc = ENOENT; +done: + free(zl.l_phys); + return (rc); } static int zap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t value) { - int rc; - uint64_t zap_type; + zap_phys_t *zap; size_t size = dnode->dn_datablkszsec * 512; + int rc; - rc = dnode_read(spa, dnode, 0, zap_scratch, size); - if (rc) - return (rc); + zap = malloc(size); + if (zap == NULL) + return (ENOMEM); - zap_type = *(uint64_t *)zap_scratch; - if (zap_type == ZBT_MICRO) - return (mzap_rlookup(spa, dnode, name, value)); - else - return (fzap_rlookup(spa, dnode, name, value)); + rc = dnode_read(spa, dnode, 0, zap, size); + if (rc == 0) { + if (zap->zap_block_type == ZBT_MICRO) + rc = mzap_rlookup((const mzap_phys_t *)zap, size, + name, value); + else + rc = fzap_rlookup(spa, dnode, zap, name, value); + } + free(zap); + return (rc); } static int @@ -2984,10 +3081,12 @@ int zfs_callback_dataset(const spa_t *spa, uint64_t objnum, int (*callback)(const char *, uint64_t)) { - uint64_t dir_obj, child_dir_zapobj, zap_type; + uint64_t dir_obj, child_dir_zapobj; dnode_phys_t child_dir_zap, dir, dataset; dsl_dataset_phys_t *ds; dsl_dir_phys_t *dd; + zap_phys_t *zap; + size_t size; int err; err = objset_get_dnode(spa, &spa->spa_mos, objnum, &dataset); @@ -3013,16 +3112,22 @@ zfs_callback_dataset(const spa_t *spa, uint64_t objnum, return (err); } - err = dnode_read(spa, &child_dir_zap, 0, zap_scratch, - child_dir_zap.dn_datablkszsec * 512); - if (err != 0) - return (err); + size = child_dir_zap.dn_datablkszsec * 512; + zap = malloc(size); + if (zap != NULL) { + err = dnode_read(spa, &child_dir_zap, 0, zap, size); + if (err != 0) + goto done; - zap_type = *(uint64_t *)zap_scratch; - if (zap_type == ZBT_MICRO) - return (mzap_list(&child_dir_zap, callback)); - else - return (fzap_list(spa, &child_dir_zap, callback)); + if (zap->zap_block_type == ZBT_MICRO) + err = mzap_list((const mzap_phys_t *)zap, size, + callback); + else + err = fzap_list(spa, &child_dir_zap, zap, callback); + } +done: + free(zap); + return (err); } #endif @@ -3154,7 +3259,8 @@ static int check_mos_features(const spa_t *spa) { dnode_phys_t dir; - uint64_t objnum, zap_type; + zap_phys_t *zap; + uint64_t objnum; size_t size; int rc; @@ -3177,15 +3283,21 @@ check_mos_features(const spa_t *spa) return (EIO); size = dir.dn_datablkszsec * 512; - if (dnode_read(spa, &dir, 0, zap_scratch, size)) + zap = malloc(size); + if (zap == NULL) + return (ENOMEM); + + if (dnode_read(spa, &dir, 0, zap, size)) { + free(zap); return (EIO); + } - zap_type = *(uint64_t *)zap_scratch; - if (zap_type == ZBT_MICRO) - rc = mzap_list(&dir, check_feature); + if (zap->zap_block_type == ZBT_MICRO) + rc = mzap_list((const mzap_phys_t *)zap, size, check_feature); else - rc = fzap_list(spa, &dir, check_feature); + rc = fzap_list(spa, &dir, zap, check_feature); + free(zap); return (rc); } diff --git a/sys/cddl/boot/zfs/zfsimpl.h b/sys/cddl/boot/zfs/zfsimpl.h index 4f3d8e69b2aa..65b5bcfbf90d 100644 --- a/sys/cddl/boot/zfs/zfsimpl.h +++ b/sys/cddl/boot/zfs/zfsimpl.h @@ -1174,7 +1174,7 @@ typedef enum dmu_objset_type { DMU_OST_NUMTYPES } dmu_objset_type_t; -#define ZAP_MAXVALUELEN (1024 * 8) +#define ZAP_MAXVALUELEN (1024 * 8) /* * header for all bonus and spill buffers. @@ -1333,8 +1333,7 @@ typedef struct dsl_dataset_phys { #define ZAP_HASHBITS 28 #define MZAP_ENT_LEN 64 #define MZAP_NAME_LEN (MZAP_ENT_LEN - 8 - 4 - 2) -#define MZAP_MAX_BLKSHIFT SPA_MAXBLOCKSHIFT -#define MZAP_MAX_BLKSZ (1 << MZAP_MAX_BLKSHIFT) +#define MZAP_MAX_BLKSZ SPA_OLD_MAXBLOCKSIZE typedef struct mzap_ent_phys { uint64_t mze_value; @@ -1346,7 +1345,8 @@ typedef struct mzap_ent_phys { typedef struct mzap_phys { uint64_t mz_block_type; /* ZBT_MICRO */ uint64_t mz_salt; - uint64_t mz_pad[6]; + uint64_t mz_normflags; + uint64_t mz_pad[5]; mzap_ent_phys_t mz_chunk[1]; /* actually variable size depending on block size */ } mzap_phys_t; @@ -1403,6 +1403,8 @@ typedef struct zap_phys { uint64_t zap_num_leafs; /* number of leafs */ uint64_t zap_num_entries; /* number of entries */ uint64_t zap_salt; /* salt to stir into hash function */ + uint64_t zap_normflags; /* flags for u8_textprep_str() */ + uint64_t zap_flags; /* zap_flags_t */ /* * This structure is followed by padding, and then the embedded * pointer table. The embedded pointer table takes up second @@ -1413,9 +1415,12 @@ typedef struct zap_phys { typedef struct zap_table_phys zap_table_phys_t; +struct spa; typedef struct fat_zap { int zap_block_shift; /* block size shift */ zap_phys_t *zap_phys; + const struct spa *zap_spa; + const dnode_phys_t *zap_dnode; } fat_zap_t; #define ZAP_LEAF_MAGIC 0x2AB1EAF From nobody Fri Oct 8 06:10:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C0F2212D27E7; Fri, 8 Oct 2021 06:10: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 4HQd8l4bjtz3KpY; Fri, 8 Oct 2021 06:10: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 3754B21BEB; Fri, 8 Oct 2021 06:10: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 1986AVrM006827; Fri, 8 Oct 2021 06:10:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AVZD006826; Fri, 8 Oct 2021 06:10:31 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:31 GMT Message-Id: <202110080610.1986AVZD006826@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 51b4c4751acd - stable/12 - vdev_read_pad2: freeing wrong pointer List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 51b4c4751acd3730b1ce0c8fa937f51beacde920 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=51b4c4751acd3730b1ce0c8fa937f51beacde920 commit 51b4c4751acd3730b1ce0c8fa937f51beacde920 Author: Toomas Soome AuthorDate: 2020-02-05 05:42:42 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:17 +0000 vdev_read_pad2: freeing wrong pointer Shoud free previously allocated tmp buffer instead. Issue introduced in r357497. (cherry picked from commit a1746b25837c2df4367eed7e8c3665e26e0dc6bb) --- stand/i386/zfsboot/zfsboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index c6b69867b0f4..e5da51b13b7d 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -337,7 +337,7 @@ vdev_read_pad2(vdev_t *vdev, char *buf, size_t size) rc = vdev_read_phys(vdev, &bp, tmp, off, 0); if (rc == 0) memcpy(buf, tmp, size); - free(buf); + free(tmp); return (rc); } From nobody Fri Oct 8 06:10:32 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DF8D412D2AB5; Fri, 8 Oct 2021 06:10: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 4HQd8m5nctz3KbS; Fri, 8 Oct 2021 06:10: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 5C80E21FC7; Fri, 8 Oct 2021 06:10: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 1986AWXt006851; Fri, 8 Oct 2021 06:10:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AWdq006850; Fri, 8 Oct 2021 06:10:32 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:32 GMT Message-Id: <202110080610.1986AWdq006850@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 985d95fb1447 - stable/12 - zfsboot: vdev_read_pad2 does allocate buffer with wrong size List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 985d95fb1447b459fd0616bae5ac241b1ca60d33 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=985d95fb1447b459fd0616bae5ac241b1ca60d33 commit 985d95fb1447b459fd0616bae5ac241b1ca60d33 Author: Toomas Soome AuthorDate: 2020-02-05 11:02:00 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:41:22 +0000 zfsboot: vdev_read_pad2 does allocate buffer with wrong size vdev_read_pad2() does read VDEV_PAD_SIZE of data, and will copy size bytes of it, hence, we need buffer of VDEV_PAD_SIZE bytes. Issue introduced in r357497. (cherry picked from commit 7503958e4cd57bcfc2b611594906b56c6645e5f4) --- stand/i386/zfsboot/zfsboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index e5da51b13b7d..03edb08409c6 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -324,7 +324,7 @@ vdev_read_pad2(vdev_t *vdev, char *buf, size_t size) if (size > VDEV_PAD_SIZE) size = VDEV_PAD_SIZE; - tmp = malloc(size); + tmp = malloc(VDEV_PAD_SIZE); if (tmp == NULL) return (ENOMEM); From nobody Fri Oct 8 06:10:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4B54912D2CA3; Fri, 8 Oct 2021 06: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 4HQd8p0BcDz3KvY; Fri, 8 Oct 2021 06:10: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 77ADA21FC8; Fri, 8 Oct 2021 06:10: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 1986AXAL006875; Fri, 8 Oct 2021 06:10:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AXeW006874; Fri, 8 Oct 2021 06:10:33 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:33 GMT Message-Id: <202110080610.1986AXeW006874@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 90e5f7232f3d - stable/12 - followup on r357497: clean obsolete comment and use shift instead of multiplication List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 90e5f7232f3d38b4fd9620381317c25226b73201 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=90e5f7232f3d38b4fd9620381317c25226b73201 commit 90e5f7232f3d38b4fd9620381317c25226b73201 Author: Toomas Soome AuthorDate: 2020-02-05 13:08:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:04 +0000 followup on r357497: clean obsolete comment and use shift instead of multiplication Based on illumos review feedback: leftover comment, but also have consistent block size calculation and add missing else leg to if statement. (cherry picked from commit 380977d55797c67c052759a9789a4120bd12f792) --- stand/libsa/zfs/zfsimpl.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index b1ba6e46e91d..6019c6352341 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -2290,8 +2290,7 @@ dnode_read(const spa_t *spa, const dnode_phys_t *dnode, off_t offset, } /* - * Lookup a value in a microzap directory. Assumes that the zap - * scratch buffer contains the directory contents. + * Lookup a value in a microzap directory. */ static int mzap_lookup(const mzap_phys_t *mz, size_t size, const char *name, @@ -2773,7 +2772,7 @@ static int zap_list(const spa_t *spa, const dnode_phys_t *dnode) { zap_phys_t *zap; - size_t size = dnode->dn_datablkszsec * 512; + size_t size = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; int rc; zap = malloc(size); @@ -2913,7 +2912,7 @@ zap_rlookup(const spa_t *spa, const dnode_phys_t *dnode, char *name, uint64_t value) { zap_phys_t *zap; - size_t size = dnode->dn_datablkszsec * 512; + size_t size = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT; int rc; zap = malloc(size); @@ -3112,7 +3111,7 @@ zfs_callback_dataset(const spa_t *spa, uint64_t objnum, return (err); } - size = child_dir_zap.dn_datablkszsec * 512; + size = child_dir_zap.dn_datablkszsec << SPA_MINBLOCKSHIFT; zap = malloc(size); if (zap != NULL) { err = dnode_read(spa, &child_dir_zap, 0, zap, size); @@ -3124,6 +3123,8 @@ zfs_callback_dataset(const spa_t *spa, uint64_t objnum, callback); else err = fzap_list(spa, &child_dir_zap, zap, callback); + } else { + err = ENOMEM; } done: free(zap); @@ -3282,7 +3283,7 @@ check_mos_features(const spa_t *spa) if (dir.dn_type != DMU_OTN_ZAP_METADATA) return (EIO); - size = dir.dn_datablkszsec * 512; + size = dir.dn_datablkszsec << SPA_MINBLOCKSHIFT; zap = malloc(size); if (zap == NULL) return (ENOMEM); From nobody Fri Oct 8 06:10:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5A1BA12D2C44; Fri, 8 Oct 2021 06:10: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 4HQd8q5DF2z3Kx9; Fri, 8 Oct 2021 06: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 A83FB21B7D; Fri, 8 Oct 2021 06: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 1986AYiv006899; Fri, 8 Oct 2021 06: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 1986AYLU006898; Fri, 8 Oct 2021 06:10:34 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:34 GMT Message-Id: <202110080610.1986AYLU006898@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 19f8884afeb8 - stable/12 - Create ptov() function. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 19f8884afeb822d3cde7915dd1f4e231ffc443b3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=19f8884afeb822d3cde7915dd1f4e231ffc443b3 commit 19f8884afeb822d3cde7915dd1f4e231ffc443b3 Author: Warner Losh AuthorDate: 2020-02-20 00:46:16 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:05 +0000 Create ptov() function. Create a ptov() function. It's basically the same as the btx PTOV macro, but works everywhere. smbios needs this to translate addresses, but the translation differs between BIOS booting and EFI booting. Make it a function so one smbios.o can be used everywhere. Provide definitions for it in the two loaders affected. (cherry picked from commit ed2a65769a5d04fcfc2acff3fa11d6b69394fd88) --- stand/efi/loader/main.c | 6 +++++- stand/i386/libi386/smbios.c | 9 +-------- stand/i386/loader/main.c | 6 ++++++ stand/libsa/stand.h | 5 +++++ 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index b7225965a383..b391f091b1e4 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -882,7 +882,11 @@ read_loader_env(const char *name, char *def_fn, bool once) } } - +caddr_t +ptov(uintptr_t x) +{ + return ((caddr_t)x); +} EFI_STATUS main(int argc, CHAR16 *argv[]) diff --git a/stand/i386/libi386/smbios.c b/stand/i386/libi386/smbios.c index 2aa62fa85df7..c621114d9107 100644 --- a/stand/i386/libi386/smbios.c +++ b/stand/i386/libi386/smbios.c @@ -28,16 +28,9 @@ __FBSDID("$FreeBSD$"); #include -#include #include -#ifdef EFI -/* In EFI, we don't need PTOV(). */ -#define PTOV(x) (caddr_t)(x) -#else -#include "btxv86.h" -#endif -#include "smbios.h" +#define PTOV(x) ptov(x) /* * Detect SMBIOS and export information about the SMBIOS into the diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c index 5265769cd0d9..67d1fe1b2b20 100644 --- a/stand/i386/loader/main.c +++ b/stand/i386/loader/main.c @@ -86,6 +86,12 @@ extern char end[]; static void *heap_top; static void *heap_bottom; +caddr_t +ptov(uintptr_t x) +{ + return (PTOV(x)); +} + int main(void) { diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h index 81b1882d71f0..14e1703326a4 100644 --- a/stand/libsa/stand.h +++ b/stand/libsa/stand.h @@ -453,4 +453,9 @@ const char *x86_hypervisor(void); #define reallocf(x, y) Reallocf(x, y, NULL, 0) #endif +/* + * va <-> pa routines. MD code must supply. + */ +caddr_t ptov(uintptr_t); + #endif /* STAND_H */ From nobody Fri Oct 8 06:10:35 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A9F2D12D2B44; Fri, 8 Oct 2021 06:10: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 4HQd8r46khz3Kpv; Fri, 8 Oct 2021 06:10: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 D4D9D21FCA; Fri, 8 Oct 2021 06:10: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 1986AZ2H006923; Fri, 8 Oct 2021 06:10:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AZUx006922; Fri, 8 Oct 2021 06:10:35 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:35 GMT Message-Id: <202110080610.1986AZUx006922@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 7f31297d105c - stable/12 - Move smbios.c to libsa. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 7f31297d105cd0dae9d862c814dfa75cca331bb3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7f31297d105cd0dae9d862c814dfa75cca331bb3 commit 7f31297d105cd0dae9d862c814dfa75cca331bb3 Author: Warner Losh AuthorDate: 2020-02-20 00:46:22 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:13 +0000 Move smbios.c to libsa. smbios used to be an i386 only kinda weird quirk to the x86 architecture. But UEFI picked it up, dusted it off and now it's many other locations. Make it base technology by moving it to libsa and fixing up the compliation. The code has issues with unaligned access still, but that will be addressed in a followup commit. (cherry picked from commit a64f0b83e5ee1c9f7ac5782a3d3f9f1c7b368e41) --- stand/efi/loader/Makefile | 15 --------------- stand/i386/libi386/Makefile | 14 +------------- stand/i386/loader/main.c | 2 +- stand/libsa/Makefile | 14 ++++++++++++++ stand/{i386/libi386 => libsa}/smbios.c | 0 stand/{i386/libi386 => libsa}/smbios.h | 0 6 files changed, 16 insertions(+), 29 deletions(-) diff --git a/stand/efi/loader/Makefile b/stand/efi/loader/Makefile index d290cae5d4c8..6ee613e7bfea 100644 --- a/stand/efi/loader/Makefile +++ b/stand/efi/loader/Makefile @@ -22,7 +22,6 @@ SRCS= autoload.c \ framebuffer.c \ main.c \ self_reloc.c \ - smbios.c \ vers.c CFLAGS+= -I${.CURDIR}/../loader @@ -45,8 +44,6 @@ CWARNFLAGS.main.c+= -Wno-format .PATH: ${.CURDIR}/../loader .PATH: ${.CURDIR}/../loader/arch/${MACHINE} -# For smbios.c XXX need to abstract properly -.PATH: ${BOOTSRC}/i386/libi386 .include "${.CURDIR}/../loader/arch/${MACHINE}/Makefile.inc" CFLAGS+= -I${.CURDIR} @@ -57,18 +54,6 @@ CFLAGS+= -I${SYSDIR}/contrib/dev/acpica/include CFLAGS+= -I${BOOTSRC}/i386/libi386 CFLAGS+= -DEFI -.if !defined(BOOT_HIDE_SERIAL_NUMBERS) -# Export serial numbers, UUID, and asset tag from loader. -CFLAGS+= -DSMBIOS_SERIAL_NUMBERS -.if defined(BOOT_LITTLE_ENDIAN_UUID) -# Use little-endian UUID format as defined in SMBIOS 2.6. -CFLAGS+= -DSMBIOS_LITTLE_ENDIAN_UUID -.elif defined(BOOT_NETWORK_ENDIAN_UUID) -# Use network-endian UUID format for backward compatibility. -CFLAGS+= -DSMBIOS_NETWORK_ENDIAN_UUID -.endif -.endif - .if defined(HAVE_FDT) && ${MK_FDT} != "no" .include "${BOOTSRC}/fdt.mk" LIBEFI_FDT= ${BOOTOBJ}/efi/fdt/libefi_fdt.a diff --git a/stand/i386/libi386/Makefile b/stand/i386/libi386/Makefile index 58128e962822..75e6448ca717 100644 --- a/stand/i386/libi386/Makefile +++ b/stand/i386/libi386/Makefile @@ -9,7 +9,7 @@ SRCS= bio.c biosacpi.c biosdisk.c biosmem.c biospnp.c \ comconsole.c devicename.c elf32_freebsd.c \ elf64_freebsd.c multiboot.c multiboot_tramp.S relocater_tramp.S \ i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \ - smbios.c time.c vidconsole.c amd64_tramp.S spinconsole.c + time.c vidconsole.c amd64_tramp.S spinconsole.c .PATH: ${ZFSSRC} SRCS+= devicename_stubs.c CFLAGS+= -I${ZFSSRC} @@ -25,18 +25,6 @@ CFLAGS+= -DCOMSPEED=${BOOT_COMCONSOLE_SPEED} CFLAGS+= -DDISK_DEBUG .endif -.if !defined(BOOT_HIDE_SERIAL_NUMBERS) -# Export serial numbers, UUID, and asset tag from loader. -CFLAGS+= -DSMBIOS_SERIAL_NUMBERS -.if defined(BOOT_LITTLE_ENDIAN_UUID) -# Use little-endian UUID format as defined in SMBIOS 2.6. -CFLAGS+= -DSMBIOS_LITTLE_ENDIAN_UUID -.elif defined(BOOT_NETWORK_ENDIAN_UUID) -# Use network-endian UUID format for backward compatibility. -CFLAGS+= -DSMBIOS_NETWORK_ENDIAN_UUID -.endif -.endif - # Include simple terminal emulation (cons25-compatible) CFLAGS+= -DTERM_EMU diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c index 67d1fe1b2b20..a4a3bde3cc7c 100644 --- a/stand/i386/loader/main.c +++ b/stand/i386/loader/main.c @@ -45,7 +45,7 @@ __FBSDID("$FreeBSD$"); #include "bootstrap.h" #include "common/bootargs.h" #include "libi386/libi386.h" -#include "libi386/smbios.h" +#include #include "btxv86.h" #ifdef LOADER_ZFS_SUPPORT diff --git a/stand/libsa/Makefile b/stand/libsa/Makefile index 0ca994386f47..63dbc6e7414c 100644 --- a/stand/libsa/Makefile +++ b/stand/libsa/Makefile @@ -137,6 +137,20 @@ CLEANFILES+= ${SAFE_INCS} ${STAND_H_INC} ${OTHER_INC} SRCS+= closeall.c dev.c ioctl.c nullfs.c stat.c \ fstat.c close.c lseek.c open.c read.c write.c readdir.c +# SMBios routines +SRCS+= smbios.c +.if !defined(BOOT_HIDE_SERIAL_NUMBERS) +# Export serial numbers, UUID, and asset tag from loader. +CFLAGS.smbios.c+= -DSMBIOS_SERIAL_NUMBERS +.if defined(BOOT_LITTLE_ENDIAN_UUID) +# Use little-endian UUID format as defined in SMBIOS 2.6. +CFLAGS.smbios.c+= -DSMBIOS_LITTLE_ENDIAN_UUID +.elif defined(BOOT_NETWORK_ENDIAN_UUID) +# Use network-endian UUID format for backward compatibility. +CFLAGS.smbios.c+= -DSMBIOS_NETWORK_ENDIAN_UUID +.endif +.endif + # network routines SRCS+= arp.c ether.c ip.c inet_ntoa.c in_cksum.c net.c udp.c netif.c rpc.c diff --git a/stand/i386/libi386/smbios.c b/stand/libsa/smbios.c similarity index 100% rename from stand/i386/libi386/smbios.c rename to stand/libsa/smbios.c diff --git a/stand/i386/libi386/smbios.h b/stand/libsa/smbios.h similarity index 100% rename from stand/i386/libi386/smbios.h rename to stand/libsa/smbios.h From nobody Fri Oct 8 06:10:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A833112D2D34; Fri, 8 Oct 2021 06:10: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 4HQd8t5zjBz3Kgd; Fri, 8 Oct 2021 06: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 085D321C3F; Fri, 8 Oct 2021 06:10: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 1986AaM8006953; Fri, 8 Oct 2021 06:10:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Aa2d006952; Fri, 8 Oct 2021 06:10:36 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:36 GMT Message-Id: <202110080610.1986Aa2d006952@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 4253aad557e7 - stable/12 - loader: replace zfs_alloc/zfs_free with malloc/free List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4253aad557e750ac02ff109b59bc81a9416f2689 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4253aad557e750ac02ff109b59bc81a9416f2689 commit 4253aad557e750ac02ff109b59bc81a9416f2689 Author: Toomas Soome AuthorDate: 2020-02-26 18:12:12 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:15 +0000 loader: replace zfs_alloc/zfs_free with malloc/free Use common memory management. (cherry picked from commit c1c4c81fd75a7d0c14011ea1cf6113ecdd80e16a) --- stand/libsa/zfs/zfs.c | 5 ++- stand/libsa/zfs/zfsimpl.c | 76 ++++++++++++++++++--------------------------- sys/cddl/boot/zfs/zfssubr.c | 65 +++++++++++++++++++++++++------------- 3 files changed, 76 insertions(+), 70 deletions(-) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index a8a02c5697cb..f54e68de578c 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -419,7 +419,7 @@ vdev_read(vdev_t *vdev, void *priv, off_t offset, void *buf, size_t bytes) /* Return of partial sector data requires a bounce buffer. */ if ((head > 0) || do_tail_read || bytes < secsz) { - bouncebuf = zfs_alloc(secsz); + bouncebuf = malloc(secsz); if (bouncebuf == NULL) { printf("vdev_read: out of memory\n"); return (ENOMEM); @@ -478,8 +478,7 @@ vdev_read(vdev_t *vdev, void *priv, off_t offset, void *buf, size_t bytes) ret = 0; error: - if (bouncebuf != NULL) - zfs_free(bouncebuf, secsz); + free(bouncebuf); return (ret); } diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 6019c6352341..64cae5eaeefb 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -139,9 +139,6 @@ static spa_list_t zfs_pools; static const dnode_phys_t *dnode_cache_obj; static uint64_t dnode_cache_bn; static char *dnode_cache_buf; -static char *zfs_temp_buf, *zfs_temp_end, *zfs_temp_ptr; - -#define TEMP_SIZE (1024 * 1024) static int zio_read(const spa_t *spa, const blkptr_t *bp, void *buf); static int zfs_get_root(const spa_t *spa, uint64_t *objid); @@ -168,38 +165,11 @@ zfs_init(void) STAILQ_INIT(&zfs_vdevs); STAILQ_INIT(&zfs_pools); - zfs_temp_buf = malloc(TEMP_SIZE); - zfs_temp_end = zfs_temp_buf + TEMP_SIZE; - zfs_temp_ptr = zfs_temp_buf; dnode_cache_buf = malloc(SPA_MAXBLOCKSIZE); zfs_init_crc(); } -static void * -zfs_alloc(size_t size) -{ - char *ptr; - - if (zfs_temp_ptr + size > zfs_temp_end) { - panic("ZFS: out of temporary buffer space"); - } - ptr = zfs_temp_ptr; - zfs_temp_ptr += size; - - return (ptr); -} - -static void -zfs_free(void *ptr, size_t size) -{ - - zfs_temp_ptr -= size; - if (zfs_temp_ptr != ptr) { - panic("ZFS: zfs_alloc()/zfs_free() mismatch"); - } -} - static int xdr_int(const unsigned char **xdr, int *ip) { @@ -2147,17 +2117,20 @@ zio_read(const spa_t *spa, const blkptr_t *bp, void *buf) ASSERT(size <= BPE_PAYLOAD_SIZE); if (cpfunc != ZIO_COMPRESS_OFF) - pbuf = zfs_alloc(size); + pbuf = malloc(size); else pbuf = buf; + if (pbuf == NULL) + return (ENOMEM); + decode_embedded_bp_compressed(bp, pbuf); error = 0; if (cpfunc != ZIO_COMPRESS_OFF) { error = zio_decompress_data(cpfunc, pbuf, size, buf, BP_GET_LSIZE(bp)); - zfs_free(pbuf, size); + free(pbuf); } if (error != 0) printf("ZFS: i/o error - unable to decompress " @@ -2194,10 +2167,15 @@ zio_read(const spa_t *spa, const blkptr_t *bp, void *buf) size = P2ROUNDUP(size, align); } if (size != BP_GET_PSIZE(bp) || cpfunc != ZIO_COMPRESS_OFF) - pbuf = zfs_alloc(size); + pbuf = malloc(size); else pbuf = buf; + if (pbuf == NULL) { + error = ENOMEM; + break; + } + if (DVA_GET_GANG(dva)) error = zio_read_gang(spa, bp, pbuf); else @@ -2210,12 +2188,13 @@ zio_read(const spa_t *spa, const blkptr_t *bp, void *buf) bcopy(pbuf, buf, BP_GET_PSIZE(bp)); } if (buf != pbuf) - zfs_free(pbuf, size); + free(pbuf); if (error == 0) break; } if (error != 0) printf("ZFS: i/o error - all block copies unavailable\n"); + return (error); } @@ -3411,10 +3390,14 @@ zfs_dnode_stat(const spa_t *spa, dnode_phys_t *dn, struct stat *sb) int error; size = BP_GET_LSIZE(bp); - buf = zfs_alloc(size); - error = zio_read(spa, bp, buf); + buf = malloc(size); + if (buf == NULL) + error = ENOMEM; + else + error = zio_read(spa, bp, buf); + if (error != 0) { - zfs_free(buf, size); + free(buf); return (error); } sahdrp = buf; @@ -3431,8 +3414,7 @@ zfs_dnode_stat(const spa_t *spa, dnode_phys_t *dn, struct stat *sb) SA_GID_OFFSET); sb->st_size = *(uint64_t *)((char *)sahdrp + hdrsize + SA_SIZE_OFFSET); - if (buf != NULL) - zfs_free(buf, size); + free(buf); } return (0); @@ -3450,9 +3432,9 @@ zfs_dnode_readlink(const spa_t *spa, dnode_phys_t *dn, char *path, size_t psize) int hdrsize; char *p; - if (dn->dn_bonuslen != 0) + if (dn->dn_bonuslen != 0) { sahdrp = (sa_hdr_phys_t *)DN_BONUS(dn); - else { + } else { blkptr_t *bp; if ((dn->dn_flags & DNODE_FLAG_SPILL_BLKPTR) == 0) @@ -3460,10 +3442,13 @@ zfs_dnode_readlink(const spa_t *spa, dnode_phys_t *dn, char *path, size_t psize) bp = DN_SPILL_BLKPTR(dn); size = BP_GET_LSIZE(bp); - buf = zfs_alloc(size); - rc = zio_read(spa, bp, buf); + buf = malloc(size); + if (buf == NULL) + rc = ENOMEM; + else + rc = zio_read(spa, bp, buf); if (rc != 0) { - zfs_free(buf, size); + free(buf); return (rc); } sahdrp = buf; @@ -3471,8 +3456,7 @@ zfs_dnode_readlink(const spa_t *spa, dnode_phys_t *dn, char *path, size_t psize) hdrsize = SA_HDR_SIZE(sahdrp); p = (char *)((uintptr_t)sahdrp + hdrsize + SA_SYMLINK_OFFSET); memcpy(path, p, psize); - if (buf != NULL) - zfs_free(buf, size); + free(buf); return (0); } /* diff --git a/sys/cddl/boot/zfs/zfssubr.c b/sys/cddl/boot/zfs/zfssubr.c index e15cae438d71..0588764535b7 100644 --- a/sys/cddl/boot/zfs/zfssubr.c +++ b/sys/cddl/boot/zfs/zfssubr.c @@ -43,9 +43,6 @@ static uint64_t zfs_crc64_table[256]; for (;;) ; \ } while (0) -#define kmem_alloc(size, flag) zfs_alloc((size)) -#define kmem_free(ptr, size) zfs_free((ptr), (size)) - static void zfs_init_crc(void) { @@ -376,9 +373,6 @@ zap_hash(uint64_t salt, const char *name) return (crc); } -static void *zfs_alloc(size_t size); -static void zfs_free(void *ptr, size_t size); - typedef struct raidz_col { uint64_t rc_devidx; /* child device index for I/O */ uint64_t rc_offset; /* device offset */ @@ -981,7 +975,11 @@ vdev_raidz_matrix_reconstruct(raidz_map_t *rm, int n, int nmissing, log = 0; /* gcc */ psize = sizeof (invlog[0][0]) * n * nmissing; - p = zfs_alloc(psize); + p = malloc(psize); + if (p == NULL) { + printf("Out of memory\n"); + return; + } for (pp = p, i = 0; i < nmissing; i++) { invlog[i] = pp; @@ -1037,7 +1035,7 @@ vdev_raidz_matrix_reconstruct(raidz_map_t *rm, int n, int nmissing, } } - zfs_free(p, psize); + free(p); } static int @@ -1098,7 +1096,11 @@ vdev_raidz_reconstruct_general(raidz_map_t *rm, int *tgts, int ntgts) psize = (sizeof (rows[0][0]) + sizeof (invrows[0][0])) * nmissing_rows * n + sizeof (used[0]) * n; - p = kmem_alloc(psize, KM_SLEEP); + p = malloc(psize); + if (p == NULL) { + printf("Out of memory\n"); + return (code); + } for (pp = p, i = 0; i < nmissing_rows; i++) { rows[i] = pp; @@ -1141,7 +1143,7 @@ vdev_raidz_reconstruct_general(raidz_map_t *rm, int *tgts, int ntgts) vdev_raidz_matrix_reconstruct(rm, n, nmissing_rows, missing_rows, invrows, used); - kmem_free(p, psize); + free(p); return (code); } @@ -1214,7 +1216,9 @@ vdev_raidz_map_alloc(void *data, off_t offset, size_t size, uint64_t unit_shift, ASSERT3U(acols, <=, scols); - rm = zfs_alloc(offsetof(raidz_map_t, rm_col[scols])); + rm = malloc(offsetof(raidz_map_t, rm_col[scols])); + if (rm == NULL) + return (rm); rm->rm_cols = acols; rm->rm_scols = scols; @@ -1259,8 +1263,16 @@ vdev_raidz_map_alloc(void *data, off_t offset, size_t size, uint64_t unit_shift, ASSERT3U(rm->rm_asize - asize, ==, rm->rm_nskip << unit_shift); ASSERT3U(rm->rm_nskip, <=, nparity); - for (c = 0; c < rm->rm_firstdatacol; c++) - rm->rm_col[c].rc_data = zfs_alloc(rm->rm_col[c].rc_size); + for (c = 0; c < rm->rm_firstdatacol; c++) { + rm->rm_col[c].rc_data = malloc(rm->rm_col[c].rc_size); + if (rm->rm_col[c].rc_data == NULL) { + c++; + while (c != 0) + free(rm->rm_col[--c].rc_data); + free(rm); + return (NULL); + } + } rm->rm_col[c].rc_data = data; @@ -1312,9 +1324,9 @@ vdev_raidz_map_free(raidz_map_t *rm) int c; for (c = rm->rm_firstdatacol - 1; c >= 0; c--) - zfs_free(rm->rm_col[c].rc_data, rm->rm_col[c].rc_size); + free(rm->rm_col[c].rc_data); - zfs_free(rm, offsetof(raidz_map_t, rm_col[rm->rm_scols])); + free(rm); } static vdev_t * @@ -1358,8 +1370,12 @@ raidz_parity_verify(raidz_map_t *rm) rc = &rm->rm_col[c]; if (!rc->rc_tried || rc->rc_error != 0) continue; - orig[c] = zfs_alloc(rc->rc_size); - bcopy(rc->rc_data, orig[c], rc->rc_size); + orig[c] = malloc(rc->rc_size); + if (orig[c] != NULL) { + bcopy(rc->rc_data, orig[c], rc->rc_size); + } else { + printf("Out of memory\n"); + } } vdev_raidz_generate_parity(rm); @@ -1368,11 +1384,12 @@ raidz_parity_verify(raidz_map_t *rm) rc = &rm->rm_col[c]; if (!rc->rc_tried || rc->rc_error != 0) continue; - if (bcmp(orig[c], rc->rc_data, rc->rc_size) != 0) { + if (orig[c] == NULL || + bcmp(orig[c], rc->rc_data, rc->rc_size) != 0) { rc->rc_error = ECKSUM; ret++; } - zfs_free(orig[c], rc->rc_size); + free(orig[c]); } return (ret); @@ -1440,7 +1457,11 @@ vdev_raidz_combrec(const spa_t *spa, raidz_map_t *rm, const blkptr_t *bp, ASSERT(orig[i] != NULL); } - orig[n - 1] = zfs_alloc(rm->rm_col[0].rc_size); + orig[n - 1] = malloc(rm->rm_col[0].rc_size); + if (orig[n - 1] == NULL) { + ret = ENOMEM; + goto done; + } current = 0; next = tgts[current]; @@ -1523,7 +1544,7 @@ vdev_raidz_combrec(const spa_t *spa, raidz_map_t *rm, const blkptr_t *bp, n--; done: for (i = n - 1; i >= 0; i--) { - zfs_free(orig[i], rm->rm_col[0].rc_size); + free(orig[i]); } return (ret); @@ -1552,6 +1573,8 @@ vdev_raidz_read(vdev_t *vd, const blkptr_t *bp, void *data, rm = vdev_raidz_map_alloc(data, offset, bytes, tvd->v_ashift, vd->v_nchildren, vd->v_nparity); + if (rm == NULL) + return (ENOMEM); /* * Iterate over the columns in reverse order so that we hit the parity From nobody Fri Oct 8 06:10:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8EA6612D2DE2; Fri, 8 Oct 2021 06:10: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 4HQd8v5v3Nz3Kw3; Fri, 8 Oct 2021 06:10: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 2B36621ECE; Fri, 8 Oct 2021 06: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 1986Acrj006977; Fri, 8 Oct 2021 06: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 1986AcUJ006976; Fri, 8 Oct 2021 06:10:38 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:38 GMT Message-Id: <202110080610.1986AcUJ006976@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 2cdb7756262d - stable/12 - loader: remove libsa/crc32.c and use version from zlib List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 2cdb7756262dcfc9ccad903d405d7e5dba78e1a7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=2cdb7756262dcfc9ccad903d405d7e5dba78e1a7 commit 2cdb7756262dcfc9ccad903d405d7e5dba78e1a7 Author: Toomas Soome AuthorDate: 2020-03-19 21:05:11 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:16 +0000 loader: remove libsa/crc32.c and use version from zlib we have crc32(const void *, size_t) in libsa. Unfortunately zlib has crc32(long, const unigned char *, unsigned) and we have conflict. Since we do build libsa with zlib, we can use zlib version instead. (cherry picked from commit 27bae6150a9fd352796b5ff775eb464a2cf6dac9) --- stand/common/part.c | 8 +-- stand/efi/gptboot/Makefile | 1 + stand/i386/gptboot/Makefile | 1 + stand/i386/gptzfsboot/Makefile | 1 + stand/libsa/crc32.c | 108 ----------------------------------------- stand/libsa/crc32.h | 13 ----- stand/libsa/gpt.c | 28 +++++++---- stand/loader.mk | 1 + stand/uboot/lib/Makefile | 2 + stand/uboot/lib/glue.c | 6 +-- 10 files changed, 31 insertions(+), 138 deletions(-) diff --git a/stand/common/part.c b/stand/common/part.c index 69df57abb175..b13db2abd35a 100644 --- a/stand/common/part.c +++ b/stand/common/part.c @@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$"); #include -#include +#include #include #include @@ -168,8 +168,8 @@ gpt_checkhdr(struct gpt_hdr *hdr, uint64_t lba_self, uint64_t lba_last, return (NULL); } crc = le32toh(hdr->hdr_crc_self); - hdr->hdr_crc_self = 0; - if (crc32(hdr, sz) != crc) { + hdr->hdr_crc_self = crc32(0, Z_NULL, 0); + if (crc32(hdr->hdr_crc_self, (const Bytef *)hdr, sz) != crc) { DPRINTF("GPT header's CRC doesn't match"); return (NULL); } @@ -217,7 +217,7 @@ gpt_checktbl(const struct gpt_hdr *hdr, uint8_t *tbl, size_t size, cnt = hdr->hdr_entries; /* Check CRC only when buffer size is enough for table. */ if (hdr->hdr_crc_table != - crc32(tbl, hdr->hdr_entries * hdr->hdr_entsz)) { + crc32(0, tbl, hdr->hdr_entries * hdr->hdr_entsz)) { DPRINTF("GPT table's CRC doesn't match"); return (-1); } diff --git a/stand/efi/gptboot/Makefile b/stand/efi/gptboot/Makefile index fc444955ac08..f1087e3ba80c 100644 --- a/stand/efi/gptboot/Makefile +++ b/stand/efi/gptboot/Makefile @@ -11,6 +11,7 @@ BOOT1?= gptboot CFLAGS+= -I${SRCTOP}/stand/efi/boot1 CFLAGS+= -I${.CURDIR} CFLAGS+= -DBOOTPROG=\"gptboot.efi\" +CFLAGS+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib SRCS+= gpt.c CWARNFLAGS.gpt.c+= -Wno-sign-compare -Wno-cast-align WARNS?=6 diff --git a/stand/i386/gptboot/Makefile b/stand/i386/gptboot/Makefile index ed9031c335d5..ea656da635ab 100644 --- a/stand/i386/gptboot/Makefile +++ b/stand/i386/gptboot/Makefile @@ -30,6 +30,7 @@ CFLAGS+=-DBOOTPROG=\"gptboot\" \ -I${LDRSRC} \ -I${BOOTSRC}/i386/common \ -I${BOOTSRC}/i386/boot2 \ + -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib \ -Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ diff --git a/stand/i386/gptzfsboot/Makefile b/stand/i386/gptzfsboot/Makefile index ecb24e10c6d4..fb5c801d8bcd 100644 --- a/stand/i386/gptzfsboot/Makefile +++ b/stand/i386/gptzfsboot/Makefile @@ -32,6 +32,7 @@ CFLAGS+=-DBOOTPROG=\"gptzfsboot\" \ -I${SYSDIR}/cddl/contrib/opensolaris/common/lz4 \ -I${BOOTSRC}/i386/btx/lib \ -I${BOOTSRC}/i386/boot2 \ + -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib \ -Wall -Waggregate-return -Wbad-function-cast \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ diff --git a/stand/libsa/crc32.c b/stand/libsa/crc32.c deleted file mode 100644 index 1a3e3a3329fe..000000000000 --- a/stand/libsa/crc32.c +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or - * code or tables extracted from it, as desired without restriction. - */ - -/* - * First, the polynomial itself and its table of feedback terms. The - * polynomial is - * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 - * - * Note that we take it "backwards" and put the highest-order term in - * the lowest-order bit. The X^32 term is "implied"; the LSB is the - * X^31 term, etc. The X^0 term (usually shown as "+1") results in - * the MSB being 1 - * - * Note that the usual hardware shift register implementation, which - * is what we're using (we're merely optimizing it by doing eight-bit - * chunks at a time) shifts bits into the lowest-order term. In our - * implementation, that means shifting towards the right. Why do we - * do it this way? Because the calculated CRC must be transmitted in - * order from highest-order term to lowest-order term. UARTs transmit - * characters in order from LSB to MSB. By storing the CRC this way - * we hand it to the UART in the order low-byte to high-byte; the UART - * sends each low-bit to hight-bit; and the result is transmission bit - * by bit from highest- to lowest-order term without requiring any bit - * shuffling on our part. Reception works similarly - * - * The feedback terms table consists of 256, 32-bit entries. Notes - * - * The table can be generated at runtime if desired; code to do so - * is shown later. It might not be obvious, but the feedback - * terms simply represent the results of eight shift/xor opera - * tions for all combinations of data and CRC register values - * - * The values must be right-shifted by eight bits by the "updcrc - * logic; the shift must be unsigned (bring in zeroes). On some - * hardware you could probably optimize the shift in assembler by - * using byte-swap instructions - * polynomial $edb88320 - * - * - * CRC32 code derived from work by Gary S. Brown. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include - -#include "crc32.h" - -static const uint32_t crc32_tab[] = { - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, - 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, - 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, - 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, - 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, - 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, - 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, - 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, - 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, - 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, - 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, - 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, - 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, - 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, - 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, - 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, - 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, - 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, - 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, - 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, - 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, - 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, - 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, - 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, - 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, - 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, - 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d -}; - -uint32_t -crc32(const void *buf, size_t size) -{ - const uint8_t *p = buf; - uint32_t crc; - - crc = ~0U; - while (size--) - crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); - return (crc ^ ~0U); -} diff --git a/stand/libsa/crc32.h b/stand/libsa/crc32.h deleted file mode 100644 index adfd628671aa..000000000000 --- a/stand/libsa/crc32.h +++ /dev/null @@ -1,13 +0,0 @@ -/*- - * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or - * code or tables extracted from it, as desired without restriction. - * - * $FreeBSD$ - */ - -#ifndef _CRC32_H_ -#define _CRC32_H_ - -uint32_t crc32(const void *buf, size_t size); - -#endif /* !_CRC32_H_ */ diff --git a/stand/libsa/gpt.c b/stand/libsa/gpt.c index 25db6b6d7d9c..46e67a9c9a2d 100644 --- a/stand/libsa/gpt.c +++ b/stand/libsa/gpt.c @@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$"); #endif #include "stand.h" -#include "crc32.h" +#include "zlib.h" #include "drv.h" #include "gpt.h" @@ -76,9 +76,12 @@ gptupdate(const char *which, struct dsk *dskp, struct gpt_hdr *hdr, BOOTPROG, which); return; } - hdr->hdr_crc_table = crc32(table, hdr->hdr_entries * hdr->hdr_entsz); - hdr->hdr_crc_self = 0; - hdr->hdr_crc_self = crc32(hdr, hdr->hdr_size); + hdr->hdr_crc_table = crc32(0, Z_NULL, 0); + hdr->hdr_crc_table = crc32(hdr->hdr_crc_table, (const Bytef *)table, + hdr->hdr_entries * hdr->hdr_entsz); + hdr->hdr_crc_self = crc32(0, Z_NULL, 0);; + hdr->hdr_crc_self = crc32(hdr->hdr_crc_self, (const Bytef *)hdr, + hdr->hdr_size); bzero(secbuf, DEV_BSIZE); bcopy(hdr, secbuf, hdr->hdr_size); if (drvwrite(dskp, secbuf, hdr->hdr_lba_self, 1)) { @@ -198,8 +201,9 @@ gptread_hdr(const char *which, struct dsk *dskp, struct gpt_hdr *hdr, return (-1); } crc = hdr->hdr_crc_self; - hdr->hdr_crc_self = 0; - if (crc32(hdr, hdr->hdr_size) != crc) { + hdr->hdr_crc_self = crc32(0, Z_NULL, 0); + if (crc32(hdr->hdr_crc_self, (const Bytef *)hdr, hdr->hdr_size) != + crc) { printf("%s: %s GPT header checksum mismatch\n", BOOTPROG, which); return (-1); @@ -265,9 +269,12 @@ gptbootconv(const char *which, struct dsk *dskp, struct gpt_hdr *hdr, } if (!table_updated) return; - hdr->hdr_crc_table = crc32(table, hdr->hdr_entries * hdr->hdr_entsz); - hdr->hdr_crc_self = 0; - hdr->hdr_crc_self = crc32(hdr, hdr->hdr_size); + hdr->hdr_crc_table = crc32(0, Z_NULL, 0); + hdr->hdr_crc_table = crc32(hdr->hdr_crc_table, (const Bytef *)table, + hdr->hdr_entries * hdr->hdr_entsz); + hdr->hdr_crc_self = crc32(0, Z_NULL, 0); + hdr->hdr_crc_self = crc32(hdr->hdr_crc_self, (const Bytef *)hdr, + hdr->hdr_size); bzero(secbuf, DEV_BSIZE); bcopy(hdr, secbuf, hdr->hdr_size); if (drvwrite(dskp, secbuf, hdr->hdr_lba_self, 1)) @@ -305,7 +312,8 @@ gptread_table(const char *which, struct dsk *dskp, struct gpt_hdr *hdr, break; slba++; } - if (crc32(table, nent * hdr->hdr_entsz) != hdr->hdr_crc_table) { + if (crc32(0, (const Bytef *)table, nent * hdr->hdr_entsz) != + hdr->hdr_crc_table) { printf("%s: %s GPT table checksum mismatch\n", BOOTPROG, which); return (-1); } diff --git a/stand/loader.mk b/stand/loader.mk index fc580f578997..d5b8b478fa14 100644 --- a/stand/loader.mk +++ b/stand/loader.mk @@ -31,6 +31,7 @@ SRCS+= metadata.c .endif .if ${LOADER_DISK_SUPPORT:Uyes} == "yes" +CFLAGS.part.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib SRCS+= disk.c part.c vdisk.c .endif diff --git a/stand/uboot/lib/Makefile b/stand/uboot/lib/Makefile index 19644842a8d8..e56cf4f0b370 100644 --- a/stand/uboot/lib/Makefile +++ b/stand/uboot/lib/Makefile @@ -10,6 +10,8 @@ WARNS?= 2 SRCS= console.c copy.c devicename.c elf_freebsd.c glue.c SRCS+= module.c net.c reboot.c time.c +CFLAGS.glue.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib + .if ${LOADER_DISK_SUPPORT:Uyes} == "yes" SRCS+= disk.c .endif diff --git a/stand/uboot/lib/glue.c b/stand/uboot/lib/glue.c index 016d435b345e..83c0e3da41a5 100644 --- a/stand/uboot/lib/glue.c +++ b/stand/uboot/lib/glue.c @@ -29,7 +29,7 @@ __FBSDID("$FreeBSD$"); #include -#include +#include #include #include "api_public.h" #include "glue.h" @@ -57,9 +57,9 @@ valid_sig(struct api_signature *sig) * produced */ s = *sig; - s.checksum = 0; + s.checksum = crc32(0, Z_NULL, 0); - checksum = crc32((void *)&s, sizeof(struct api_signature)); + checksum = crc32(s.checksum, (void *)&s, sizeof(struct api_signature)); if (checksum != sig->checksum) return (0); From nobody Fri Oct 8 06:10:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A7E4212D2E1B; Fri, 8 Oct 2021 06:10: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 4HQd8x06x7z3KsS; Fri, 8 Oct 2021 06:10: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 50C5A21ECF; Fri, 8 Oct 2021 06:10: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 1986AdH1007001; Fri, 8 Oct 2021 06:10:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Adnx007000; Fri, 8 Oct 2021 06:10:39 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:39 GMT Message-Id: <202110080610.1986Adnx007000@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 7b47621aac4d - stable/12 - loader: add knob to build with user malloc List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 7b47621aac4db952d9ec239114d3eec2fe53c5c8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7b47621aac4db952d9ec239114d3eec2fe53c5c8 commit 7b47621aac4db952d9ec239114d3eec2fe53c5c8 Author: Toomas Soome AuthorDate: 2020-03-28 21:47:44 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:20 +0000 loader: add knob to build with user malloc This option is intended to aid development, to allow building with user malloc. The use case would be to build userboot & test with libc (or other) malloc and use extra malloc debug features. (cherry picked from commit c907ec9e16745e3dacd15982f71dea21a06de53c) --- stand/libsa/stand.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h index 14e1703326a4..086e1d298a49 100644 --- a/stand/libsa/stand.h +++ b/stand/libsa/stand.h @@ -437,7 +437,14 @@ extern void mallocstats(void); const char *x86_hypervisor(void); -#ifdef DEBUG_MALLOC +#ifdef USER_MALLOC +extern void *malloc(size_t); +extern void *memalign(size_t, size_t); +extern void *calloc(size_t, size_t); +extern void free(void *); +extern void *realloc(void *, size_t); +extern void *reallocf(void *, size_t); +#elif DEBUG_MALLOC #define malloc(x) Malloc(x, __FILE__, __LINE__) #define memalign(x, y) Memalign(x, y, __FILE__, __LINE__) #define calloc(x, y) Calloc(x, y, __FILE__, __LINE__) From nobody Fri Oct 8 06:10:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5466E12D2FCA; Fri, 8 Oct 2021 06:10: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 4HQd8z3D3Fz3L38; Fri, 8 Oct 2021 06:10: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 7D18C21ED2; Fri, 8 Oct 2021 06:10: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 1986AeMf007025; Fri, 8 Oct 2021 06:10:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AeOb007024; Fri, 8 Oct 2021 06:10:40 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:40 GMT Message-Id: <202110080610.1986AeOb007024@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 3f92fa796181 - stable/12 - loader: strdup name strings from dataset walker List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 3f92fa796181e754ca930e3e5f8a84db25b9d432 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3f92fa796181e754ca930e3e5f8a84db25b9d432 commit 3f92fa796181e754ca930e3e5f8a84db25b9d432 Author: Toomas Soome AuthorDate: 2020-03-28 21:50:27 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:32 +0000 loader: strdup name strings from dataset walker The removal of zfs scratch buffer did miss the fact the dataset lookup was picking up the names from zap list. (cherry picked from commit 215597f05fc6cf9e218d26ef37063ec58451a259) --- stand/libsa/zfs/zfs.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index f54e68de578c..9bcf4b35a84e 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -92,7 +92,7 @@ static int zfs_env_count; SLIST_HEAD(zfs_be_list, zfs_be_entry) zfs_be_head = SLIST_HEAD_INITIALIZER(zfs_be_head); struct zfs_be_list *zfs_be_headp; struct zfs_be_entry { - const char *name; + cha *name; SLIST_ENTRY(zfs_be_entry) entries; } *zfs_be, *zfs_be_tmp; @@ -920,6 +920,7 @@ zfs_bootenv_initial(const char *name) while (!SLIST_EMPTY(&zfs_be_head)) { zfs_be = SLIST_FIRST(&zfs_be_head); SLIST_REMOVE_HEAD(&zfs_be_head, entries); + free(zfs_be->name); free(zfs_be); } @@ -987,6 +988,7 @@ zfs_bootenv(const char *name) while (!SLIST_EMPTY(&zfs_be_head)) { zfs_be = SLIST_FIRST(&zfs_be_head); SLIST_REMOVE_HEAD(&zfs_be_head, entries); + free(zfs_be->name); free(zfs_be); } @@ -1006,7 +1008,11 @@ zfs_belist_add(const char *name, uint64_t value __unused) if (zfs_be == NULL) { return (ENOMEM); } - zfs_be->name = name; + zfs_be->name = strdup(name); + if (zfs_be->name == NULL) { + free(zfs_be); + return (ENOMEM); + } SLIST_INSERT_HEAD(&zfs_be_head, zfs_be, entries); zfs_env_count++; From nobody Fri Oct 8 06:10:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0213612D3120; Fri, 8 Oct 2021 06:10: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 4HQd913zbrz3L3G; Fri, 8 Oct 2021 06:10:45 +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 8D99C21FCE; Fri, 8 Oct 2021 06:10:41 +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 1986AfLb007049; Fri, 8 Oct 2021 06:10:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AfPx007048; Fri, 8 Oct 2021 06:10:41 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:41 GMT Message-Id: <202110080610.1986AfPx007048@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 6a4f6cff7659 - stable/12 - loader: typo did slip into 359408 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 6a4f6cff7659648f847f690fc31d3980e92cfe2c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=6a4f6cff7659648f847f690fc31d3980e92cfe2c commit 6a4f6cff7659648f847f690fc31d3980e92cfe2c Author: Toomas Soome AuthorDate: 2020-03-28 21:55:42 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:34 +0000 loader: typo did slip into 359408 somehow r was lost from 'char'. (cherry picked from commit 6c01b7102de4ef77fb886df410f70171f04b3fae) --- stand/libsa/zfs/zfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index 9bcf4b35a84e..d94072d80628 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -92,7 +92,7 @@ static int zfs_env_count; SLIST_HEAD(zfs_be_list, zfs_be_entry) zfs_be_head = SLIST_HEAD_INITIALIZER(zfs_be_head); struct zfs_be_list *zfs_be_headp; struct zfs_be_entry { - cha *name; + char *name; SLIST_ENTRY(zfs_be_entry) entries; } *zfs_be, *zfs_be_tmp; From nobody Fri Oct 8 06:10:42 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2DB7E12D3156; Fri, 8 Oct 2021 06:10: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 4HQd930J40z3Ky2; Fri, 8 Oct 2021 06:10: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 AE701217E7; Fri, 8 Oct 2021 06:10: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 1986Agnh007079; Fri, 8 Oct 2021 06:10:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Aga2007078; Fri, 8 Oct 2021 06:10:42 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:42 GMT Message-Id: <202110080610.1986Aga2007078@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 3b93fb61a9f9 - stable/12 - loader: use #elif defined() in stand.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 3b93fb61a9f99898fdf5e48e8386e773df0d44cb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3b93fb61a9f99898fdf5e48e8386e773df0d44cb commit 3b93fb61a9f99898fdf5e48e8386e773df0d44cb Author: Toomas Soome AuthorDate: 2020-03-29 06:48:59 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:36 +0000 loader: use #elif defined() in stand.h Small cleanup. (cherry picked from commit 5292d0a7f308907bd9c3b37d42d348a144d05978) --- stand/libsa/stand.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h index 086e1d298a49..7f0967fb5079 100644 --- a/stand/libsa/stand.h +++ b/stand/libsa/stand.h @@ -444,7 +444,7 @@ extern void *calloc(size_t, size_t); extern void free(void *); extern void *realloc(void *, size_t); extern void *reallocf(void *, size_t); -#elif DEBUG_MALLOC +#elif defined(DEBUG_MALLOC) #define malloc(x) Malloc(x, __FILE__, __LINE__) #define memalign(x, y) Memalign(x, y, __FILE__, __LINE__) #define calloc(x, y) Calloc(x, y, __FILE__, __LINE__) From nobody Fri Oct 8 06:10:43 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EF5CF12D32FB; Fri, 8 Oct 2021 06:10: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 4HQd956dNXz3L3g; Fri, 8 Oct 2021 06:10: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 CBE6C21BED; Fri, 8 Oct 2021 06:10: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 1986AhSt007103; Fri, 8 Oct 2021 06:10:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Ahdd007102; Fri, 8 Oct 2021 06:10:43 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:43 GMT Message-Id: <202110080610.1986Ahdd007102@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: fd85a041dce1 - stable/12 - Fix the EFI_DEBUG case, prio_str is only used when EFI_DEBUG is unset. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: fd85a041dce194a1f74b306c897c351fe2e22d45 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=fd85a041dce194a1f74b306c897c351fe2e22d45 commit fd85a041dce194a1f74b306c897c351fe2e22d45 Author: Andrew Turner AuthorDate: 2020-05-05 10:01:10 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:39 +0000 Fix the EFI_DEBUG case, prio_str is only used when EFI_DEBUG is unset. (cherry picked from commit 4495f3687484e93a55031c415459ca19b030404f) --- stand/efi/boot1/proto.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/efi/boot1/proto.c b/stand/efi/boot1/proto.c index 7511cc4cf416..eeb3cd9568a4 100644 --- a/stand/efi/boot1/proto.c +++ b/stand/efi/boot1/proto.c @@ -38,12 +38,14 @@ __FBSDID("$FreeBSD$"); static EFI_GUID BlockIoProtocolGUID = BLOCK_IO_PROTOCOL; static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL; +#ifndef EFI_DEBUG static const char *prio_str[] = { "error", "not supported", "good", "better" }; +#endif /* * probe_handle determines if the passed handle represents a logical partition From nobody Fri Oct 8 06:10:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3E8F912D349B; Fri, 8 Oct 2021 06:10: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 4HQd976HZvz3L1g; Fri, 8 Oct 2021 06:10: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 F1B8521BEE; Fri, 8 Oct 2021 06:10: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 1986AiYj007127; Fri, 8 Oct 2021 06:10:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AiHH007126; Fri, 8 Oct 2021 06:10:44 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:44 GMT Message-Id: <202110080610.1986AiHH007126@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ace42fe8afaf - stable/12 - Avoid using non-portable dd conv=osync option List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ace42fe8afaf1f988c871775509463bb48c52f6d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ace42fe8afaf1f988c871775509463bb48c52f6d commit ace42fe8afaf1f988c871775509463bb48c52f6d Author: Alex Richardson AuthorDate: 2020-05-11 08:40:33 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:42 +0000 Avoid using non-portable dd conv=osync option The same thing can be achieved using the bs=$SIZE and conv=sync options. Unlike conv=osync, conv=sync is support on both Linux and macOS. (cherry picked from commit 87c5e64c64e43be532cb703e96c0776309aab337) --- stand/i386/boot2/Makefile | 2 +- stand/i386/pxeldr/Makefile | 2 +- stand/i386/zfsboot/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stand/i386/boot2/Makefile b/stand/i386/boot2/Makefile index 3830199b2c4b..9bb31275b9c6 100644 --- a/stand/i386/boot2/Makefile +++ b/stand/i386/boot2/Makefile @@ -66,7 +66,7 @@ BOOT2SIZE= 7680 boot2: boot2.ld @set -- `ls -l ${.ALLSRC}`; x=$$((${BOOT2SIZE}-$$5)); \ echo "$$x bytes available"; test $$x -ge 0 - ${DD} if=${.ALLSRC} of=${.TARGET} obs=${BOOT2SIZE} conv=osync + ${DD} if=${.ALLSRC} of=${.TARGET} bs=${BOOT2SIZE} conv=sync boot2.ld: boot2.ldr boot2.bin ${BTXKERN} btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l boot2.ldr \ diff --git a/stand/i386/pxeldr/Makefile b/stand/i386/pxeldr/Makefile index e1bcccc69112..2184d391937f 100644 --- a/stand/i386/pxeldr/Makefile +++ b/stand/i386/pxeldr/Makefile @@ -31,7 +31,7 @@ CLEANFILES+= ${BOOT}.tmp ${BOOT}: ${LDR} ${LOADER} cat ${LDR} ${LOADER} > ${.TARGET}.tmp - ${DD} if=${.TARGET}.tmp of=${.TARGET} obs=2k conv=osync + ${DD} if=${.TARGET}.tmp of=${.TARGET} bs=2048 conv=sync rm ${.TARGET}.tmp LDFLAGS+=${LDFLAGS_BIN} diff --git a/stand/i386/zfsboot/Makefile b/stand/i386/zfsboot/Makefile index 422bce0e5b88..80303cb8fde0 100644 --- a/stand/i386/zfsboot/Makefile +++ b/stand/i386/zfsboot/Makefile @@ -62,7 +62,7 @@ BOOT2SIZE= 262144 zfsboot2: zfsboot.ld @set -- `ls -l ${.ALLSRC}`; x=$$((${BOOT2SIZE}-$$5)); \ echo "$$x bytes available"; test $$x -ge 0 - ${DD} if=${.ALLSRC} of=${.TARGET} obs=${BOOT2SIZE} conv=osync + ${DD} if=${.ALLSRC} of=${.TARGET} bs=${BOOT2SIZE} conv=sync zfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ From nobody Fri Oct 8 06:10:46 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B71E812D369F; Fri, 8 Oct 2021 06:10: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 4HQd986SMKz3KtN; Fri, 8 Oct 2021 06:10: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 219BD21ED6; Fri, 8 Oct 2021 06:10: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 1986Akol007151; Fri, 8 Oct 2021 06:10:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Akn6007150; Fri, 8 Oct 2021 06:10:46 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:46 GMT Message-Id: <202110080610.1986Akn6007150@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ce05cad71c23 - stable/12 - zfsboot: cstyle cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ce05cad71c235a8dd4ee787648080ee5d11792b0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ce05cad71c235a8dd4ee787648080ee5d11792b0 commit ce05cad71c235a8dd4ee787648080ee5d11792b0 Author: Toomas Soome AuthorDate: 2020-06-14 20:57:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:46 +0000 zfsboot: cstyle cleanup No functional changes intended. (cherry picked from commit dfdeb45425cf025ce32c517ec3f85a8dd9fdff54) --- stand/i386/zfsboot/zfsboot.c | 1317 +++++++++++++++++++++--------------------- 1 file changed, 673 insertions(+), 644 deletions(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index 03edb08409c6..a51c69267fbc 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -48,20 +48,20 @@ __FBSDID("$FreeBSD$"); #include "libzfs.h" -#define ARGS 0x900 -#define NOPT 14 -#define NDEV 3 +#define ARGS 0x900 +#define NOPT 14 +#define NDEV 3 -#define BIOS_NUMDRIVES 0x475 -#define DRV_HARD 0x80 -#define DRV_MASK 0x7f +#define BIOS_NUMDRIVES 0x475 +#define DRV_HARD 0x80 +#define DRV_MASK 0x7f -#define TYPE_AD 0 -#define TYPE_DA 1 -#define TYPE_MAXHARD TYPE_DA -#define TYPE_FD 2 +#define TYPE_AD 0 +#define TYPE_DA 1 +#define TYPE_MAXHARD TYPE_DA +#define TYPE_FD 2 -#define DEV_GELIBOOT_BSIZE 4096 +#define DEV_GELIBOOT_BSIZE 4096 extern uint32_t _end; @@ -97,12 +97,12 @@ uint32_t opts; * If no loader is found, try to load a kernel directly instead. */ static const struct string { - const char *p; - size_t len; + const char *p; + size_t len; } loadpath[] = { - { PATH_LOADER_ZFS, sizeof(PATH_LOADER_ZFS) }, - { PATH_LOADER, sizeof(PATH_LOADER) }, - { PATH_KERNEL, sizeof(PATH_KERNEL) }, + { PATH_LOADER_ZFS, sizeof(PATH_LOADER_ZFS) }, + { PATH_LOADER, sizeof(PATH_LOADER) }, + { PATH_KERNEL, sizeof(PATH_KERNEL) }, }; static const unsigned char dev_maj[NDEV] = {30, 4, 2}; @@ -130,7 +130,7 @@ static char *heap_next; static char *heap_end; /* Buffers that must not span a 64k boundary. */ -#define READ_BUF_SIZE 8192 +#define READ_BUF_SIZE 8192 struct dmadat { char rdbuf[READ_BUF_SIZE]; /* for reading large things */ char secbuf[READ_BUF_SIZE]; /* for MBR/disklabel */ @@ -150,9 +150,9 @@ static char gelipw[GELI_PW_MAXLEN]; #endif struct zfsdsk { - struct dsk dsk; + struct dsk dsk; #ifdef LOADER_GELI_SUPPORT - struct geli_dev *gdev; + struct geli_dev *gdev; #endif }; @@ -162,7 +162,8 @@ struct zfsdsk { * Read from a dnode (which must be from a ZPL filesystem). */ static int -zfs_read(spa_t *spa, const dnode_phys_t *dnode, off_t *offp, void *start, size_t size) +zfs_read(spa_t *spa, const dnode_phys_t *dnode, off_t *offp, void *start, + size_t size) { const znode_phys_t *zp = (const znode_phys_t *) dnode->dn_bonus; size_t n; @@ -198,10 +199,10 @@ vdev_read(void *xvdev, void *priv, off_t off, void *buf, size_t bytes) daddr_t lba, alignlba; off_t diff; unsigned int nb, alignnb; - struct zfsdsk *zdsk = (struct zfsdsk *) priv; + struct zfsdsk *zdsk = priv; if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1))) - return -1; + return (-1); p = buf; lba = off / DEV_BSIZE; @@ -242,12 +243,13 @@ vdev_read(void *xvdev, void *priv, off_t off, void *buf, size_t bytes) } if (drvread(&zdsk->dsk, dmadat->rdbuf, alignlba, alignnb)) - return -1; + return (-1); #ifdef LOADER_GELI_SUPPORT /* decrypt */ if (zdsk->gdev != NULL) { - if (geli_read(zdsk->gdev, ((alignlba - zdsk->dsk.start) * - DEV_BSIZE), dmadat->rdbuf, alignnb * DEV_BSIZE)) + if (geli_read(zdsk->gdev, + ((alignlba - zdsk->dsk.start) * DEV_BSIZE), + dmadat->rdbuf, alignnb * DEV_BSIZE)) return (-1); } #endif @@ -260,13 +262,13 @@ vdev_read(void *xvdev, void *priv, off_t off, void *buf, size_t bytes) diff = 0; } - return 0; + return (0); } /* Match the signature exactly due to signature madness */ static int vdev_read2(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) { - return vdev_read(vdev, priv, off, buf, bytes); + return (vdev_read(vdev, priv, off, buf, bytes)); } @@ -276,10 +278,10 @@ vdev_write(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) char *p; daddr_t lba; unsigned int nb; - struct zfsdsk *zdsk = (struct zfsdsk *) priv; + struct zfsdsk *zdsk = priv; if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1))) - return -1; + return (-1); p = buf; lba = off / DEV_BSIZE; @@ -290,23 +292,23 @@ vdev_write(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) nb = READ_BUF_SIZE / DEV_BSIZE; memcpy(dmadat->rdbuf, p, nb * DEV_BSIZE); if (drvwrite(&zdsk->dsk, dmadat->rdbuf, lba, nb)) - return -1; + return (-1); p += nb * DEV_BSIZE; lba += nb; bytes -= nb * DEV_BSIZE; } - return 0; + return (0); } static int xfsread(const dnode_phys_t *dnode, off_t *offp, void *buf, size_t nbyte) { - if ((size_t)zfs_read(spa, dnode, offp, buf, nbyte) != nbyte) { - printf("Invalid format\n"); - return -1; - } - return 0; + if ((size_t)zfs_read(spa, dnode, offp, buf, nbyte) != nbyte) { + printf("Invalid format\n"); + return (-1); + } + return (0); } /* @@ -369,87 +371,93 @@ vdev_clear_pad2(vdev_t *vdev) static void bios_getmem(void) { - uint64_t size; + uint64_t size; + + /* Parse system memory map */ + v86.ebx = 0; + do { + v86.ctl = V86_FLAGS; + v86.addr = 0x15; /* int 0x15 function 0xe820 */ + v86.eax = 0xe820; + v86.ecx = sizeof(struct bios_smap); + v86.edx = SMAP_SIG; + v86.es = VTOPSEG(&smap); + v86.edi = VTOPOFF(&smap); + v86int(); + if (V86_CY(v86.efl) || (v86.eax != SMAP_SIG)) + break; + /* look for a low-memory segment that's large enough */ + if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base == 0) && + (smap.length >= (512 * 1024))) + bios_basemem = smap.length; + /* look for the first segment in 'extended' memory */ + if ((smap.type == SMAP_TYPE_MEMORY) && + (smap.base == 0x100000)) { + bios_extmem = smap.length; + } - /* Parse system memory map */ - v86.ebx = 0; - do { - v86.ctl = V86_FLAGS; - v86.addr = 0x15; /* int 0x15 function 0xe820*/ - v86.eax = 0xe820; - v86.ecx = sizeof(struct bios_smap); - v86.edx = SMAP_SIG; - v86.es = VTOPSEG(&smap); - v86.edi = VTOPOFF(&smap); - v86int(); - if (V86_CY(v86.efl) || (v86.eax != SMAP_SIG)) - break; - /* look for a low-memory segment that's large enough */ - if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base == 0) && - (smap.length >= (512 * 1024))) - bios_basemem = smap.length; - /* look for the first segment in 'extended' memory */ - if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base == 0x100000)) { - bios_extmem = smap.length; + /* + * Look for the largest segment in 'extended' memory beyond + * 1MB but below 4GB. + */ + if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base > 0x100000) && + (smap.base < 0x100000000ull)) { + size = smap.length; + + /* + * If this segment crosses the 4GB boundary, + * truncate it. + */ + if (smap.base + size > 0x100000000ull) + size = 0x100000000ull - smap.base; + + if (size > high_heap_size) { + high_heap_size = size; + high_heap_base = smap.base; + } + } + } while (v86.ebx != 0); + + /* Fall back to the old compatibility function for base memory */ + if (bios_basemem == 0) { + v86.ctl = 0; + v86.addr = 0x12; /* int 0x12 */ + v86int(); + + bios_basemem = (v86.eax & 0xffff) * 1024; } /* - * Look for the largest segment in 'extended' memory beyond - * 1MB but below 4GB. + * Fall back through several compatibility functions for extended + * memory. */ - if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base > 0x100000) && - (smap.base < 0x100000000ull)) { - size = smap.length; - - /* - * If this segment crosses the 4GB boundary, truncate it. - */ - if (smap.base + size > 0x100000000ull) - size = 0x100000000ull - smap.base; - - if (size > high_heap_size) { - high_heap_size = size; - high_heap_base = smap.base; - } + if (bios_extmem == 0) { + v86.ctl = V86_FLAGS; + v86.addr = 0x15; /* int 0x15 function 0xe801 */ + v86.eax = 0xe801; + v86int(); + if (!V86_CY(v86.efl)) { + bios_extmem = ((v86.ecx & 0xffff) + + ((v86.edx & 0xffff) * 64)) * 1024; + } + } + if (bios_extmem == 0) { + v86.ctl = 0; + v86.addr = 0x15; /* int 0x15 function 0x88 */ + v86.eax = 0x8800; + v86int(); + bios_extmem = (v86.eax & 0xffff) * 1024; } - } while (v86.ebx != 0); - - /* Fall back to the old compatibility function for base memory */ - if (bios_basemem == 0) { - v86.ctl = 0; - v86.addr = 0x12; /* int 0x12 */ - v86int(); - - bios_basemem = (v86.eax & 0xffff) * 1024; - } - /* Fall back through several compatibility functions for extended memory */ - if (bios_extmem == 0) { - v86.ctl = V86_FLAGS; - v86.addr = 0x15; /* int 0x15 function 0xe801*/ - v86.eax = 0xe801; - v86int(); - if (!V86_CY(v86.efl)) { - bios_extmem = ((v86.ecx & 0xffff) + ((v86.edx & 0xffff) * 64)) * 1024; + /* + * If we have extended memory and did not find a suitable heap + * region in the SMAP, use the last 3MB of 'extended' memory as a + * high heap candidate. + */ + if (bios_extmem >= HEAP_MIN && high_heap_size < HEAP_MIN) { + high_heap_size = HEAP_MIN; + high_heap_base = bios_extmem + 0x100000 - HEAP_MIN; } - } - if (bios_extmem == 0) { - v86.ctl = 0; - v86.addr = 0x15; /* int 0x15 function 0x88*/ - v86.eax = 0x8800; - v86int(); - bios_extmem = (v86.eax & 0xffff) * 1024; - } - - /* - * If we have extended memory and did not find a suitable heap - * region in the SMAP, use the last 3MB of 'extended' memory as a - * high heap candidate. - */ - if (bios_extmem >= HEAP_MIN && high_heap_size < HEAP_MIN) { - high_heap_size = HEAP_MIN; - high_heap_base = bios_extmem + 0x100000 - HEAP_MIN; - } } /* @@ -458,20 +466,20 @@ bios_getmem(void) static int int13probe(int drive) { - v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x800; - v86.edx = drive; - v86int(); - - if (!V86_CY(v86.efl) && /* carry clear */ - ((v86.edx & 0xff) != (drive & DRV_MASK))) { /* unit # OK */ - if ((v86.ecx & 0x3f) == 0) { /* absurd sector size */ - return(0); /* skip device */ + v86.ctl = V86_FLAGS; + v86.addr = 0x13; + v86.eax = 0x800; + v86.edx = drive; + v86int(); + + if (!V86_CY(v86.efl) && /* carry clear */ + ((v86.edx & 0xff) != (drive & DRV_MASK))) { /* unit # OK */ + if ((v86.ecx & 0x3f) == 0) { /* absurd sector size */ + return (0); /* skip device */ + } + return (1); } - return (1); - } - return(0); + return (0); } /* @@ -481,11 +489,11 @@ int13probe(int drive) static struct zfsdsk * copy_dsk(struct zfsdsk *zdsk) { - struct zfsdsk *newdsk; + struct zfsdsk *newdsk; - newdsk = malloc(sizeof(struct zfsdsk)); - *newdsk = *zdsk; - return (newdsk); + newdsk = malloc(sizeof(struct zfsdsk)); + *newdsk = *zdsk; + return (newdsk); } /* @@ -560,8 +568,8 @@ drvsize_ext(struct zfsdsk *zdsk) v86.edx = dskp->drive; v86.ebx = 0x55aa; v86int(); - if (V86_CY(v86.efl) || /* carry set */ - (v86.ebx & 0xffff) != 0xaa55 || /* signature */ + if (V86_CY(v86.efl) || /* carry set */ + (v86.ebx & 0xffff) != 0xaa55 || /* signature */ (v86.ecx & EDD_INTERFACE_FIXED_DISK) == 0) return (size); @@ -593,598 +601,619 @@ static void probe_drive(struct zfsdsk *zdsk) { #ifdef GPT - struct gpt_hdr hdr; - struct gpt_ent *ent; - unsigned part, entries_per_sec; - daddr_t slba; + struct gpt_hdr hdr; + struct gpt_ent *ent; + unsigned part, entries_per_sec; + daddr_t slba; #endif #if defined(GPT) || defined(LOADER_GELI_SUPPORT) - daddr_t elba; + daddr_t elba; #endif - struct dos_partition *dp; - char *sec; - unsigned i; + struct dos_partition *dp; + char *sec; + unsigned i; #ifdef LOADER_GELI_SUPPORT - /* - * Taste the disk, if it is GELI encrypted, decrypt it then dig out the - * partition table and probe each slice/partition in turn for a vdev or - * GELI encrypted vdev. - */ - elba = drvsize_ext(zdsk); - if (elba > 0) { - elba--; - } - zdsk->gdev = geli_taste(vdev_read, zdsk, elba, "disk%u:0:"); - if ((zdsk->gdev != NULL) && (geli_havekey(zdsk->gdev) == 0)) - geli_passphrase(zdsk->gdev, gelipw); + /* + * Taste the disk, if it is GELI encrypted, decrypt it then dig out the + * partition table and probe each slice/partition in turn for a vdev or + * GELI encrypted vdev. + */ + elba = drvsize_ext(zdsk); + if (elba > 0) { + elba--; + } + zdsk->gdev = geli_taste(vdev_read, zdsk, elba, "disk%u:0:"); + if ((zdsk->gdev != NULL) && (geli_havekey(zdsk->gdev) == 0)) + geli_passphrase(zdsk->gdev, gelipw); #endif /* LOADER_GELI_SUPPORT */ - sec = dmadat->secbuf; - zdsk->dsk.start = 0; + sec = dmadat->secbuf; + zdsk->dsk.start = 0; #ifdef GPT - /* - * First check for GPT. - */ - if (drvread(&zdsk->dsk, sec, 1, 1)) { - return; - } - memcpy(&hdr, sec, sizeof(hdr)); - if (memcmp(hdr.hdr_sig, GPT_HDR_SIG, sizeof(hdr.hdr_sig)) != 0 || - hdr.hdr_lba_self != 1 || hdr.hdr_revision < 0x00010000 || - hdr.hdr_entsz < sizeof(*ent) || DEV_BSIZE % hdr.hdr_entsz != 0) { - goto trymbr; - } - - /* - * Probe all GPT partitions for the presence of ZFS pools. We - * return the spa_t for the first we find (if requested). This - * will have the effect of booting from the first pool on the - * disk. - * - * If no vdev is found, GELI decrypting the device and try again - */ - entries_per_sec = DEV_BSIZE / hdr.hdr_entsz; - slba = hdr.hdr_lba_table; - elba = slba + hdr.hdr_entries / entries_per_sec; - while (slba < elba) { - zdsk->dsk.start = 0; - if (drvread(&zdsk->dsk, sec, slba, 1)) - return; - for (part = 0; part < entries_per_sec; part++) { - ent = (struct gpt_ent *)(sec + part * hdr.hdr_entsz); - if (memcmp(&ent->ent_type, &freebsd_zfs_uuid, - sizeof(uuid_t)) == 0) { - zdsk->dsk.start = ent->ent_lba_start; - zdsk->dsk.size = ent->ent_lba_end - ent->ent_lba_start + 1; - zdsk->dsk.slice = part + 1; - zdsk->dsk.part = 255; - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - /* - * This slice had a vdev. We need a new dsk - * structure now since the vdev now owns this one. - */ - zdsk = copy_dsk(zdsk); - } + /* + * First check for GPT. + */ + if (drvread(&zdsk->dsk, sec, 1, 1)) { + return; + } + memcpy(&hdr, sec, sizeof(hdr)); + if (memcmp(hdr.hdr_sig, GPT_HDR_SIG, sizeof(hdr.hdr_sig)) != 0 || + hdr.hdr_lba_self != 1 || hdr.hdr_revision < 0x00010000 || + hdr.hdr_entsz < sizeof(*ent) || DEV_BSIZE % hdr.hdr_entsz != 0) { + goto trymbr; + } + + /* + * Probe all GPT partitions for the presence of ZFS pools. We + * return the spa_t for the first we find (if requested). This + * will have the effect of booting from the first pool on the + * disk. + * + * If no vdev is found, GELI decrypting the device and try again + */ + entries_per_sec = DEV_BSIZE / hdr.hdr_entsz; + slba = hdr.hdr_lba_table; + elba = slba + hdr.hdr_entries / entries_per_sec; + while (slba < elba) { + zdsk->dsk.start = 0; + if (drvread(&zdsk->dsk, sec, slba, 1)) + return; + for (part = 0; part < entries_per_sec; part++) { + ent = (struct gpt_ent *)(sec + part * hdr.hdr_entsz); + if (memcmp(&ent->ent_type, &freebsd_zfs_uuid, + sizeof(uuid_t)) == 0) { + zdsk->dsk.start = ent->ent_lba_start; + zdsk->dsk.size = + ent->ent_lba_end - ent->ent_lba_start + 1; + zdsk->dsk.slice = part + 1; + zdsk->dsk.part = 255; + if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { + /* + * This slice had a vdev. We need a new + * dsk structure now since the vdev now + * owns this one. + */ + zdsk = copy_dsk(zdsk); + } #ifdef LOADER_GELI_SUPPORT - else if ((zdsk->gdev = geli_taste(vdev_read, zdsk, - ent->ent_lba_end - ent->ent_lba_start, "disk%up%u:", - zdsk->dsk.unit, zdsk->dsk.slice)) != NULL) { - if (geli_havekey(zdsk->gdev) == 0 || - geli_passphrase(zdsk->gdev, gelipw) == 0) { - /* - * This slice has GELI, check it for ZFS. - */ - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - /* - * This slice had a vdev. We need a new dsk - * structure now since the vdev now owns this one. - */ - zdsk = copy_dsk(zdsk); + else if ((zdsk->gdev = geli_taste(vdev_read, + zdsk, ent->ent_lba_end - ent->ent_lba_start, + "disk%up%u:", zdsk->dsk.unit, + zdsk->dsk.slice)) != NULL) { + if (geli_havekey(zdsk->gdev) == 0 || + geli_passphrase(zdsk->gdev, gelipw) + == 0) { + /* + * This slice has GELI, + * check it for ZFS. + */ + if (vdev_probe(vdev_read2, + zdsk, NULL) == 0) { + /* + * This slice had a + * vdev. We need a new + * dsk structure now + * since the vdev now + * owns this one. + */ + zdsk = copy_dsk(zdsk); + } + break; + } + } +#endif /* LOADER_GELI_SUPPORT */ } - break; - } } -#endif /* LOADER_GELI_SUPPORT */ - } + slba++; } - slba++; - } - return; + return; trymbr: #endif /* GPT */ - if (drvread(&zdsk->dsk, sec, DOSBBSECTOR, 1)) - return; - dp = (void *)(sec + DOSPARTOFF); - - for (i = 0; i < NDOSPART; i++) { - if (!dp[i].dp_typ) - continue; - zdsk->dsk.start = dp[i].dp_start; - zdsk->dsk.size = dp[i].dp_size; - zdsk->dsk.slice = i + 1; - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - zdsk = copy_dsk(zdsk); - } -#ifdef LOADER_GELI_SUPPORT - else if ((zdsk->gdev = geli_taste(vdev_read, zdsk, dp[i].dp_size - - dp[i].dp_start, "disk%us%u:")) != NULL) { - if (geli_havekey(zdsk->gdev) == 0 || - geli_passphrase(zdsk->gdev, gelipw) == 0) { - /* - * This slice has GELI, check it for ZFS. - */ + if (drvread(&zdsk->dsk, sec, DOSBBSECTOR, 1)) + return; + dp = (void *)(sec + DOSPARTOFF); + + for (i = 0; i < NDOSPART; i++) { + if (!dp[i].dp_typ) + continue; + zdsk->dsk.start = dp[i].dp_start; + zdsk->dsk.size = dp[i].dp_size; + zdsk->dsk.slice = i + 1; if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - /* - * This slice had a vdev. We need a new dsk - * structure now since the vdev now owns this one. - */ - zdsk = copy_dsk(zdsk); + zdsk = copy_dsk(zdsk); + } +#ifdef LOADER_GELI_SUPPORT + else if ((zdsk->gdev = geli_taste(vdev_read, zdsk, + dp[i].dp_size - dp[i].dp_start, "disk%us%u:")) != NULL) { + if (geli_havekey(zdsk->gdev) == 0 || + geli_passphrase(zdsk->gdev, gelipw) == 0) { + /* + * This slice has GELI, check it for ZFS. + */ + if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { + /* + * This slice had a vdev. We need a new + * dsk structure now since the vdev now + * owns this one. + */ + zdsk = copy_dsk(zdsk); + } + break; + } } - break; - } - } #endif /* LOADER_GELI_SUPPORT */ - } + } } int main(void) { - dnode_phys_t dn; - off_t off; - struct zfsdsk *zdsk; - int autoboot, i; - int nextboot; - int rc; - - dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base); - - bios_getmem(); - - if (high_heap_size > 0) { - heap_end = PTOV(high_heap_base + high_heap_size); - heap_next = PTOV(high_heap_base); - } else { - heap_next = (char *)dmadat + sizeof(*dmadat); - heap_end = (char *)PTOV(bios_basemem); - } - setheap(heap_next, heap_end); - - zdsk = calloc(1, sizeof(struct zfsdsk)); - zdsk->dsk.drive = *(uint8_t *)PTOV(ARGS); - zdsk->dsk.type = zdsk->dsk.drive & DRV_HARD ? TYPE_AD : TYPE_FD; - zdsk->dsk.unit = zdsk->dsk.drive & DRV_MASK; - zdsk->dsk.slice = *(uint8_t *)PTOV(ARGS + 1) + 1; - zdsk->dsk.part = 0; - zdsk->dsk.start = 0; - zdsk->dsk.size = drvsize_ext(zdsk); - - bootinfo.bi_version = BOOTINFO_VERSION; - bootinfo.bi_size = sizeof(bootinfo); - bootinfo.bi_basemem = bios_basemem / 1024; - bootinfo.bi_extmem = bios_extmem / 1024; - bootinfo.bi_memsizes_valid++; - bootinfo.bi_bios_dev = zdsk->dsk.drive; - - bootdev = MAKEBOOTDEV(dev_maj[zdsk->dsk.type], - zdsk->dsk.slice, zdsk->dsk.unit, zdsk->dsk.part); - - /* Process configuration file */ - - autoboot = 1; - - zfs_init(); - - /* - * Probe the boot drive first - we will try to boot from whatever - * pool we find on that drive. - */ - probe_drive(zdsk); - - /* - * Probe the rest of the drives that the bios knows about. This - * will find any other available pools and it may fill in missing - * vdevs for the boot pool. - */ -#ifndef VIRTUALBOX - for (i = 0; i < *(unsigned char *)PTOV(BIOS_NUMDRIVES); i++) -#else - for (i = 0; i < MAXBDDEV; i++) -#endif - { - if ((i | DRV_HARD) == *(uint8_t *)PTOV(ARGS)) - continue; + dnode_phys_t dn; + off_t off; + struct zfsdsk *zdsk; + int autoboot, i; + int nextboot; + int rc; + + dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base); - if (!int13probe(i | DRV_HARD)) - break; + bios_getmem(); + + if (high_heap_size > 0) { + heap_end = PTOV(high_heap_base + high_heap_size); + heap_next = PTOV(high_heap_base); + } else { + heap_next = (char *)dmadat + sizeof(*dmadat); + heap_end = (char *)PTOV(bios_basemem); + } + setheap(heap_next, heap_end); zdsk = calloc(1, sizeof(struct zfsdsk)); - zdsk->dsk.drive = i | DRV_HARD; - zdsk->dsk.type = zdsk->dsk.drive & TYPE_AD; - zdsk->dsk.unit = i; - zdsk->dsk.slice = 0; + zdsk->dsk.drive = *(uint8_t *)PTOV(ARGS); + zdsk->dsk.type = zdsk->dsk.drive & DRV_HARD ? TYPE_AD : TYPE_FD; + zdsk->dsk.unit = zdsk->dsk.drive & DRV_MASK; + zdsk->dsk.slice = *(uint8_t *)PTOV(ARGS + 1) + 1; zdsk->dsk.part = 0; zdsk->dsk.start = 0; zdsk->dsk.size = drvsize_ext(zdsk); + + bootinfo.bi_version = BOOTINFO_VERSION; + bootinfo.bi_size = sizeof(bootinfo); + bootinfo.bi_basemem = bios_basemem / 1024; + bootinfo.bi_extmem = bios_extmem / 1024; + bootinfo.bi_memsizes_valid++; + bootinfo.bi_bios_dev = zdsk->dsk.drive; + + bootdev = MAKEBOOTDEV(dev_maj[zdsk->dsk.type], + zdsk->dsk.slice, zdsk->dsk.unit, zdsk->dsk.part); + + /* Process configuration file */ + + autoboot = 1; + + zfs_init(); + + /* + * Probe the boot drive first - we will try to boot from whatever + * pool we find on that drive. + */ probe_drive(zdsk); - } - - /* - * The first discovered pool, if any, is the pool. - */ - spa = spa_get_primary(); - if (!spa) { - printf("%s: No ZFS pools located, can't boot\n", BOOTPROG); - for (;;) - ; - } - - primary_spa = spa; - primary_vdev = spa_get_primary_vdev(spa); - - nextboot = 0; - rc = vdev_read_pad2(primary_vdev, cmd, sizeof(cmd)); - if (vdev_clear_pad2(primary_vdev)) - printf("failed to clear pad2 area of primary vdev\n"); - if (rc == 0) { + + /* + * Probe the rest of the drives that the bios knows about. This + * will find any other available pools and it may fill in missing + * vdevs for the boot pool. + */ +#ifndef VIRTUALBOX + for (i = 0; i < *(unsigned char *)PTOV(BIOS_NUMDRIVES); i++) +#else + for (i = 0; i < MAXBDDEV; i++) +#endif + { + if ((i | DRV_HARD) == *(uint8_t *)PTOV(ARGS)) + continue; + + if (!int13probe(i | DRV_HARD)) + break; + + zdsk = calloc(1, sizeof(struct zfsdsk)); + zdsk->dsk.drive = i | DRV_HARD; + zdsk->dsk.type = zdsk->dsk.drive & TYPE_AD; + zdsk->dsk.unit = i; + zdsk->dsk.slice = 0; + zdsk->dsk.part = 0; + zdsk->dsk.start = 0; + zdsk->dsk.size = drvsize_ext(zdsk); + probe_drive(zdsk); + } + + /* + * The first discovered pool, if any, is the pool. + */ + spa = spa_get_primary(); + if (!spa) { + printf("%s: No ZFS pools located, can't boot\n", BOOTPROG); + for (;;) + ; + } + + primary_spa = spa; + primary_vdev = spa_get_primary_vdev(spa); + + nextboot = 0; + rc = vdev_read_pad2(primary_vdev, cmd, sizeof(cmd)); + if (vdev_clear_pad2(primary_vdev)) + printf("failed to clear pad2 area of primary vdev\n"); + if (rc == 0) { + if (*cmd) { + /* + * We could find an old-style ZFS Boot Block header + * here. Simply ignore it. + */ + if (*(uint64_t *)cmd != 0x2f5b007b10c) { + /* + * Note that parse() is destructive to cmd[] + * and we also want to honor RBX_QUIET option + * that could be present in cmd[]. + */ + nextboot = 1; + memcpy(cmddup, cmd, sizeof(cmd)); + if (parse_cmd()) { + printf("failed to parse pad2 area of " + "primary vdev\n"); + reboot(); + } + if (!OPT_CHECK(RBX_QUIET)) + printf("zfs nextboot: %s\n", cmddup); + } + /* Do not process this command twice */ + *cmd = 0; + } + } else + printf("failed to read pad2 area of primary vdev\n"); + + /* Mount ZFS only if it's not already mounted via nextboot parsing. */ + if (zfsmount.spa == NULL && + (zfs_spa_init(spa) != 0 || zfs_mount(spa, 0, &zfsmount) != 0)) { + printf("%s: failed to mount default pool %s\n", + BOOTPROG, spa->spa_name); + autoboot = 0; + } else if (zfs_lookup(&zfsmount, PATH_CONFIG, &dn) == 0 || + zfs_lookup(&zfsmount, PATH_DOTCONFIG, &dn) == 0) { + off = 0; + zfs_read(spa, &dn, &off, cmd, sizeof(cmd)); + } + if (*cmd) { - /* - * We could find an old-style ZFS Boot Block header here. - * Simply ignore it. - */ - if (*(uint64_t *)cmd != 0x2f5b007b10c) { /* - * Note that parse() is destructive to cmd[] and we also want - * to honor RBX_QUIET option that could be present in cmd[]. + * Note that parse_cmd() is destructive to cmd[] and we also + * want to honor RBX_QUIET option that could be present in + * cmd[]. */ - nextboot = 1; memcpy(cmddup, cmd, sizeof(cmd)); - if (parse_cmd()) { - printf("failed to parse pad2 area of primary vdev\n"); - reboot(); - } + if (parse_cmd()) + autoboot = 0; if (!OPT_CHECK(RBX_QUIET)) - printf("zfs nextboot: %s\n", cmddup); - } - /* Do not process this command twice */ - *cmd = 0; + printf("%s: %s\n", PATH_CONFIG, cmddup); + /* Do not process this command twice */ + *cmd = 0; } - } else - printf("failed to read pad2 area of primary vdev\n"); - - /* Mount ZFS only if it's not already mounted via nextboot parsing. */ - if (zfsmount.spa == NULL && - (zfs_spa_init(spa) != 0 || zfs_mount(spa, 0, &zfsmount) != 0)) { - printf("%s: failed to mount default pool %s\n", - BOOTPROG, spa->spa_name); - autoboot = 0; - } else if (zfs_lookup(&zfsmount, PATH_CONFIG, &dn) == 0 || - zfs_lookup(&zfsmount, PATH_DOTCONFIG, &dn) == 0) { - off = 0; - zfs_read(spa, &dn, &off, cmd, sizeof(cmd)); - } - if (*cmd) { - /* - * Note that parse_cmd() is destructive to cmd[] and we also want - * to honor RBX_QUIET option that could be present in cmd[]. - */ - memcpy(cmddup, cmd, sizeof(cmd)); - if (parse_cmd()) - autoboot = 0; - if (!OPT_CHECK(RBX_QUIET)) - printf("%s: %s\n", PATH_CONFIG, cmddup); - /* Do not process this command twice */ - *cmd = 0; - } - - /* Do not risk waiting at the prompt forever. */ - if (nextboot && !autoboot) - reboot(); - - if (autoboot && !*kname) { - /* - * Iterate through the list of loader and kernel paths, trying to load. - * If interrupted by a keypress, or in case of failure, drop the user - * to the boot2 prompt. *** 571 LINES SKIPPED *** From nobody Fri Oct 8 06:10:47 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 126D712D36A8; Fri, 8 Oct 2021 06:10: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 4HQd996JbLz3Kwy; Fri, 8 Oct 2021 06:10: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 46E6F21DA0; Fri, 8 Oct 2021 06:10: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 1986AlWE007175; Fri, 8 Oct 2021 06:10:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AloM007174; Fri, 8 Oct 2021 06:10:47 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:47 GMT Message-Id: <202110080610.1986AloM007174@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: fa6918f70475 - stable/12 - loader: variable i is unused without MBR/GPT support built in List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: fa6918f704754dc1bc3451c6e637103c7ffcce37 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=fa6918f704754dc1bc3451c6e637103c7ffcce37 commit fa6918f704754dc1bc3451c6e637103c7ffcce37 Author: Toomas Soome AuthorDate: 2020-06-16 07:05:03 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:48 +0000 loader: variable i is unused without MBR/GPT support built in Because i is only used as index in for loop, declare it in for statement. (cherry picked from commit f44c441ee680e1456fba0e8c52f93a49e6f6695b) --- stand/common/part.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/stand/common/part.c b/stand/common/part.c index b13db2abd35a..8baa029c1606 100644 --- a/stand/common/part.c +++ b/stand/common/part.c @@ -655,7 +655,6 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize, struct dos_partition *dp; struct ptable *table; uint8_t *buf; - int i; #ifdef LOADER_MBR_SUPPORT struct pentry *entry; uint32_t start, end; @@ -728,7 +727,7 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize, * start sector 1. After DOSPTYP_PMBR, there may be other partitions. * UEFI compliant PMBR has no other partitions. */ - for (i = 0; i < NDOSPART; i++) { + for (int i = 0; i < NDOSPART; i++) { if (dp[i].dp_flag != 0 && dp[i].dp_flag != 0x80) { DPRINTF("invalid partition flag %x", dp[i].dp_flag); goto out; @@ -750,7 +749,7 @@ ptable_open(void *dev, uint64_t sectors, uint16_t sectorsize, /* Read MBR. */ DPRINTF("MBR detected"); table->type = PTABLE_MBR; - for (i = has_ext = 0; i < NDOSPART; i++) { + for (int i = has_ext = 0; i < NDOSPART; i++) { if (dp[i].dp_typ == 0) continue; start = le32dec(&(dp[i].dp_start)); From nobody Fri Oct 8 06:10:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E017212D35C4; Fri, 8 Oct 2021 06:10: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 4HQd9B6ZTMz3L4J; Fri, 8 Oct 2021 06:10: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 64EC421DA1; Fri, 8 Oct 2021 06:10: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 1986AmsQ007205; Fri, 8 Oct 2021 06:10:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AmCV007204; Fri, 8 Oct 2021 06:10:48 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:48 GMT Message-Id: <202110080610.1986AmCV007204@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f55a620a8d3c - stable/12 - loader: zfs_cmd.c does not really compile without libzfs.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f55a620a8d3caab91484fc932bda64af21d93c22 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f55a620a8d3caab91484fc932bda64af21d93c22 commit f55a620a8d3caab91484fc932bda64af21d93c22 Author: Toomas Soome AuthorDate: 2020-06-16 07:30:34 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:51 +0000 loader: zfs_cmd.c does not really compile without libzfs.h Having libzfs.h wrapped in LOADER_ZFS_SUPPORT check does not really make sense, because we do need function declarations with C99. (cherry picked from commit 467535dcfaa6be42efe0fe8be9582cafc5dfb812) --- stand/common/zfs_cmd.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/stand/common/zfs_cmd.c b/stand/common/zfs_cmd.c index cb98f7256268..3f6718f1850d 100644 --- a/stand/common/zfs_cmd.c +++ b/stand/common/zfs_cmd.c @@ -37,10 +37,7 @@ __FBSDID("$FreeBSD$"); #include #include "bootstrap.h" - -#ifdef LOADER_ZFS_SUPPORT #include "libzfs.h" -#endif COMMAND_SET(lszfs, "lszfs", "list child datasets of a zfs dataset", command_lszfs); From nobody Fri Oct 8 06:10:49 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0015112D35F7; Fri, 8 Oct 2021 06:10: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 4HQd9G2pH2z3L4W; Fri, 8 Oct 2021 06:10: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 7AC7C217EA; Fri, 8 Oct 2021 06:10: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 1986An2s007229; Fri, 8 Oct 2021 06:10:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AnkC007228; Fri, 8 Oct 2021 06:10:49 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:49 GMT Message-Id: <202110080610.1986AnkC007228@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: b38c8d4c6d69 - stable/12 - boot2: need to expand tab output and mask getchar List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: b38c8d4c6d691a3a65f90a7023c99bf64790caa4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=b38c8d4c6d691a3a65f90a7023c99bf64790caa4 commit b38c8d4c6d691a3a65f90a7023c99bf64790caa4 Author: Toomas Soome AuthorDate: 2020-06-16 20:35:00 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:54 +0000 boot2: need to expand tab output and mask getchar The BIOS ouput char function does not expand tab. Mask getchar with 0xFF. (cherry picked from commit 6469d2b422960de4b1253cc63b11fa67f896604f) --- stand/i386/common/cons.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/stand/i386/common/cons.c b/stand/i386/common/cons.c index 96e782fda5c9..25dda1ce7405 100644 --- a/stand/i386/common/cons.c +++ b/stand/i386/common/cons.c @@ -53,12 +53,38 @@ xputc(int c) sio_putc(c); } +static void +getcursor(int *row, int *col) +{ + v86.ctl = V86_FLAGS; + v86.addr = 0x10; + v86.eax = 0x300; + v86.ebx = 0x7; + v86int(); + + if (row != NULL) + *row = v86.edx >> 8; + if (col != NULL) + *col = v86.edx & 0xff; +} + void putchar(int c) { + int i, col; - if (c == '\n') + switch (c) { + case '\n': xputc('\r'); + break; + case '\t': + col = 0; + getcursor(NULL, &col); + col = 8 - (col % 8); + for (i = 0; i < col; i++) + xputc(' '); + return; + } xputc(c); } @@ -100,7 +126,7 @@ int getchar(void) { - return (xgetc(0)); + return (xgetc(0) & 0xff); } int From nobody Fri Oct 8 06:10:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CA86F12D377A; Fri, 8 Oct 2021 06:11: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 4HQd9K1b98z3LPh; Fri, 8 Oct 2021 06:11: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 B51B521FD0; Fri, 8 Oct 2021 06:10: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 1986ApAZ007277; Fri, 8 Oct 2021 06:10:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ApYv007276; Fri, 8 Oct 2021 06:10:51 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:51 GMT Message-Id: <202110080610.1986ApYv007276@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 759bd6630be1 - stable/12 - loader: r362262 did miss the pathlen check List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 759bd6630be149492871ef851b7f10921fab2cf2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=759bd6630be149492871ef851b7f10921fab2cf2 commit 759bd6630be149492871ef851b7f10921fab2cf2 Author: Toomas Soome AuthorDate: 2020-06-17 10:56:58 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:59 +0000 loader: r362262 did miss the pathlen check While we are checking the "/dev/" prefix, we can skip the paths shorter than this prefix. (cherry picked from commit aba2397e74a2eff55e2507c27ba31813d6b2a95e) --- stand/libsa/zfs/zfsimpl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 276c4d8bc70b..b6a906e9f50d 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -1201,7 +1201,7 @@ vdev_init(uint64_t guid, const unsigned char *nvlist, vdev_t **vdevp) char prefix[] = "/dev/"; len = strlen(prefix); - if (memcmp(path, prefix, len) == 0) { + if (len < pathlen && memcmp(path, prefix, len) == 0) { path += len; pathlen -= len; } From nobody Fri Oct 8 06:10:50 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 44C4012D3999; Fri, 8 Oct 2021 06: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 4HQd9K23jSz3LPj; Fri, 8 Oct 2021 06:11: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 98E6B21DA5; Fri, 8 Oct 2021 06:10: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 1986AoKj007253; Fri, 8 Oct 2021 06:10:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Aowg007252; Fri, 8 Oct 2021 06:10:50 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:50 GMT Message-Id: <202110080610.1986Aowg007252@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: d760091fdc20 - stable/12 - loader: strings in nvlist are counted strings, not c-strings List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: d760091fdc20a6f06b9143d4d1d25ed1f775cb7c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d760091fdc20a6f06b9143d4d1d25ed1f775cb7c commit d760091fdc20a6f06b9143d4d1d25ed1f775cb7c Author: Toomas Soome AuthorDate: 2020-06-17 10:41:01 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 02:42:56 +0000 loader: strings in nvlist are counted strings, not c-strings We need to fetch both string size and data, then handle the data. (cherry picked from commit c98740b5e252d1cefd6d33d93fc1015d16afc1b8) --- stand/libsa/zfs/zfsimpl.c | 145 ++++++++++++++++++++++++++-------------------- 1 file changed, 83 insertions(+), 62 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 64cae5eaeefb..276c4d8bc70b 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -199,7 +199,7 @@ xdr_uint64_t(const unsigned char **xdr, uint64_t *lp) static int nvlist_find(const unsigned char *nvlist, const char *name, int type, - int *elementsp, void *valuep) + int *elementsp, void *valuep, int *sizep) { const unsigned char *p, *pair; int junk; @@ -231,6 +231,8 @@ nvlist_find(const unsigned char *nvlist, const char *name, int type, } else if (type == DATA_TYPE_STRING) { int len; xdr_int(&p, &len); + if (sizep != NULL) + *sizep = len; (*(const char **)valuep) = (const char *)p; return (0); } else if (type == DATA_TYPE_NVLIST || @@ -395,7 +397,7 @@ nvlist_print(const unsigned char *nvlist, unsigned int indent) for (i = 0; i < indent; i++) printf(" "); - printf("%s %s", typenames[pairtype], pairname); + printf("%s %.*s", typenames[pairtype], namelen, pairname); xdr_int(&p, &elements); switch (pairtype) { @@ -409,7 +411,7 @@ nvlist_print(const unsigned char *nvlist, unsigned int indent) case DATA_TYPE_STRING: { int len; xdr_int(&p, &len); - printf(" = \"%s\"\n", p); + printf(" = \"%.*s\"\n", len, p); break; } @@ -425,8 +427,8 @@ nvlist_print(const unsigned char *nvlist, unsigned int indent) if (j != elements - 1) { for (i = 0; i < indent; i++) printf(" "); - printf("%s %s", typenames[pairtype], - pairname); + printf("%s %.*s", typenames[pairtype], + namelen, pairname); } } break; @@ -1088,17 +1090,17 @@ vdev_set_initial_state(vdev_t *vdev, const unsigned char *nvlist) is_offline = is_removed = is_faulted = is_degraded = isnt_present = 0; is_log = 0; (void) nvlist_find(nvlist, ZPOOL_CONFIG_OFFLINE, DATA_TYPE_UINT64, NULL, - &is_offline); + &is_offline, NULL); (void) nvlist_find(nvlist, ZPOOL_CONFIG_REMOVED, DATA_TYPE_UINT64, NULL, - &is_removed); + &is_removed, NULL); (void) nvlist_find(nvlist, ZPOOL_CONFIG_FAULTED, DATA_TYPE_UINT64, NULL, - &is_faulted); + &is_faulted, NULL); (void) nvlist_find(nvlist, ZPOOL_CONFIG_DEGRADED, DATA_TYPE_UINT64, - NULL, &is_degraded); + NULL, &is_degraded, NULL); (void) nvlist_find(nvlist, ZPOOL_CONFIG_NOT_PRESENT, DATA_TYPE_UINT64, - NULL, &isnt_present); + NULL, &isnt_present, NULL); (void) nvlist_find(nvlist, ZPOOL_CONFIG_IS_LOG, DATA_TYPE_UINT64, NULL, - &is_log); + &is_log, NULL); if (is_offline != 0) vdev->v_state = VDEV_STATE_OFFLINE; @@ -1120,34 +1122,37 @@ vdev_init(uint64_t guid, const unsigned char *nvlist, vdev_t **vdevp) uint64_t id, ashift, asize, nparity; const char *path; const char *type; + int len, pathlen; + char *name; vdev_t *vdev; - if (nvlist_find(nvlist, ZPOOL_CONFIG_ID, DATA_TYPE_UINT64, NULL, &id) || + if (nvlist_find(nvlist, ZPOOL_CONFIG_ID, DATA_TYPE_UINT64, NULL, &id, + NULL) || nvlist_find(nvlist, ZPOOL_CONFIG_TYPE, DATA_TYPE_STRING, - NULL, &type)) { + NULL, &type, &len)) { return (ENOENT); } - if (strcmp(type, VDEV_TYPE_MIRROR) != 0 && - strcmp(type, VDEV_TYPE_DISK) != 0 && + if (memcmp(type, VDEV_TYPE_MIRROR, len) != 0 && + memcmp(type, VDEV_TYPE_DISK, len) != 0 && #ifdef ZFS_TEST - strcmp(type, VDEV_TYPE_FILE) != 0 && + memcmp(type, VDEV_TYPE_FILE, len) != 0 && #endif - strcmp(type, VDEV_TYPE_RAIDZ) != 0 && - strcmp(type, VDEV_TYPE_INDIRECT) != 0 && - strcmp(type, VDEV_TYPE_REPLACING) != 0) { + memcmp(type, VDEV_TYPE_RAIDZ, len) != 0 && + memcmp(type, VDEV_TYPE_INDIRECT, len) != 0 && + memcmp(type, VDEV_TYPE_REPLACING, len) != 0) { printf("ZFS: can only boot from disk, mirror, raidz1, " "raidz2 and raidz3 vdevs\n"); return (EIO); } - if (strcmp(type, VDEV_TYPE_MIRROR) == 0) + if (memcmp(type, VDEV_TYPE_MIRROR, len) == 0) vdev = vdev_create(guid, vdev_mirror_read); - else if (strcmp(type, VDEV_TYPE_RAIDZ) == 0) + else if (memcmp(type, VDEV_TYPE_RAIDZ, len) == 0) vdev = vdev_create(guid, vdev_raidz_read); - else if (strcmp(type, VDEV_TYPE_REPLACING) == 0) + else if (memcmp(type, VDEV_TYPE_REPLACING, len) == 0) vdev = vdev_create(guid, vdev_replacing_read); - else if (strcmp(type, VDEV_TYPE_INDIRECT) == 0) { + else if (memcmp(type, VDEV_TYPE_INDIRECT, len) == 0) { vdev_indirect_config_t *vic; vdev = vdev_create(guid, vdev_indirect_read); @@ -1158,15 +1163,15 @@ vdev_init(uint64_t guid, const unsigned char *nvlist, vdev_t **vdevp) nvlist_find(nvlist, ZPOOL_CONFIG_INDIRECT_OBJECT, DATA_TYPE_UINT64, - NULL, &vic->vic_mapping_object); + NULL, &vic->vic_mapping_object, NULL); nvlist_find(nvlist, ZPOOL_CONFIG_INDIRECT_BIRTHS, DATA_TYPE_UINT64, - NULL, &vic->vic_births_object); + NULL, &vic->vic_births_object, NULL); nvlist_find(nvlist, ZPOOL_CONFIG_PREV_INDIRECT_VDEV, DATA_TYPE_UINT64, - NULL, &vic->vic_prev_indirect_vdev); + NULL, &vic->vic_prev_indirect_vdev, NULL); } } else { vdev = vdev_create(guid, vdev_disk_read); @@ -1178,29 +1183,35 @@ vdev_init(uint64_t guid, const unsigned char *nvlist, vdev_t **vdevp) vdev_set_initial_state(vdev, nvlist); vdev->v_id = id; if (nvlist_find(nvlist, ZPOOL_CONFIG_ASHIFT, - DATA_TYPE_UINT64, NULL, &ashift) == 0) + DATA_TYPE_UINT64, NULL, &ashift, NULL) == 0) vdev->v_ashift = ashift; if (nvlist_find(nvlist, ZPOOL_CONFIG_ASIZE, - DATA_TYPE_UINT64, NULL, &asize) == 0) { + DATA_TYPE_UINT64, NULL, &asize, NULL) == 0) { vdev->v_psize = asize + VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE; } if (nvlist_find(nvlist, ZPOOL_CONFIG_NPARITY, - DATA_TYPE_UINT64, NULL, &nparity) == 0) + DATA_TYPE_UINT64, NULL, &nparity, NULL) == 0) vdev->v_nparity = nparity; if (nvlist_find(nvlist, ZPOOL_CONFIG_PATH, - DATA_TYPE_STRING, NULL, &path) == 0) { - if (strncmp(path, "/dev/", 5) == 0) - path += 5; - vdev->v_name = strdup(path); - } else { - char *name; + DATA_TYPE_STRING, NULL, &path, &pathlen) == 0) { + char prefix[] = "/dev/"; + len = strlen(prefix); + if (memcmp(path, prefix, len) == 0) { + path += len; + pathlen -= len; + } + name = malloc(pathlen + 1); + bcopy(path, name, pathlen); + name[pathlen] = '\0'; + vdev->v_name = name; + } else { name = NULL; - if (strcmp(type, "raidz") == 0) { + if (memcmp(type, VDEV_TYPE_RAIDZ, len) == 0) { if (vdev->v_nparity < 1 || vdev->v_nparity > 3) { printf("ZFS: can only boot from disk, " @@ -1208,10 +1219,10 @@ vdev_init(uint64_t guid, const unsigned char *nvlist, vdev_t **vdevp) "vdevs\n"); return (EIO); } - (void) asprintf(&name, "%s%d-%" PRIu64, type, + (void) asprintf(&name, "%.*s%d-%" PRIu64, len, type, vdev->v_nparity, id); } else { - (void) asprintf(&name, "%s-%" PRIu64, type, id); + (void) asprintf(&name, "%.*s-%" PRIu64, len, type, id); } vdev->v_name = name; } @@ -1314,13 +1325,13 @@ vdev_from_nvlist(spa_t *spa, uint64_t top_guid, const unsigned char *nvlist) /* Add children if there are any. */ rc = nvlist_find(nvlist, ZPOOL_CONFIG_CHILDREN, DATA_TYPE_NVLIST_ARRAY, - &nkids, &kids); + &nkids, &kids, NULL); if (rc == 0) { for (int i = 0; i < nkids; i++) { uint64_t guid; rc = nvlist_find(kids, ZPOOL_CONFIG_GUID, - DATA_TYPE_UINT64, NULL, &guid); + DATA_TYPE_UINT64, NULL, &guid, NULL); if (rc != 0) return (rc); rc = vdev_init(guid, kids, &vdev); @@ -1347,11 +1358,11 @@ vdev_init_from_label(spa_t *spa, const unsigned char *nvlist) const unsigned char *vdevs; if (nvlist_find(nvlist, ZPOOL_CONFIG_POOL_GUID, DATA_TYPE_UINT64, - NULL, &pool_guid) || + NULL, &pool_guid, NULL) || nvlist_find(nvlist, ZPOOL_CONFIG_TOP_GUID, DATA_TYPE_UINT64, - NULL, &top_guid) || + NULL, &top_guid, NULL) || nvlist_find(nvlist, ZPOOL_CONFIG_VDEV_TREE, DATA_TYPE_NVLIST, - NULL, &vdevs)) { + NULL, &vdevs, NULL)) { printf("ZFS: can't find vdev details\n"); return (ENOENT); } @@ -1418,13 +1429,13 @@ vdev_update_from_nvlist(uint64_t top_guid, const unsigned char *nvlist) /* Update children if there are any. */ rc = nvlist_find(nvlist, ZPOOL_CONFIG_CHILDREN, DATA_TYPE_NVLIST_ARRAY, - &nkids, &kids); + &nkids, &kids, NULL); if (rc == 0) { for (int i = 0; i < nkids; i++) { uint64_t guid; rc = nvlist_find(kids, ZPOOL_CONFIG_GUID, - DATA_TYPE_UINT64, NULL, &guid); + DATA_TYPE_UINT64, NULL, &guid, NULL); if (rc != 0) break; @@ -1449,11 +1460,11 @@ vdev_init_from_nvlist(spa_t *spa, const unsigned char *nvlist) int rc, nkids; if (nvlist_find(nvlist, ZPOOL_CONFIG_POOL_GUID, DATA_TYPE_UINT64, - NULL, &pool_guid) || + NULL, &pool_guid, NULL) || nvlist_find(nvlist, ZPOOL_CONFIG_VDEV_CHILDREN, DATA_TYPE_UINT64, - NULL, &vdev_children) || + NULL, &vdev_children, NULL) || nvlist_find(nvlist, ZPOOL_CONFIG_VDEV_TREE, DATA_TYPE_NVLIST, - NULL, &vdevs)) { + NULL, &vdevs, NULL)) { printf("ZFS: can't find vdev details\n"); return (ENOENT); } @@ -1465,7 +1476,7 @@ vdev_init_from_nvlist(spa_t *spa, const unsigned char *nvlist) spa->spa_root_vdev->v_nchildren = vdev_children; rc = nvlist_find(vdevs, ZPOOL_CONFIG_CHILDREN, DATA_TYPE_NVLIST_ARRAY, - &nkids, &kids); + &nkids, &kids, NULL); /* * MOS config has at least one child for root vdev. @@ -1478,7 +1489,7 @@ vdev_init_from_nvlist(spa_t *spa, const unsigned char *nvlist) vdev_t *vdev; rc = nvlist_find(kids, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64, - NULL, &guid); + NULL, &guid, NULL); if (rc != 0) break; vdev = vdev_find(guid); @@ -1837,7 +1848,7 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg) nvlist = (const unsigned char *) label->vp_nvlist + 4; error = nvlist_find(nvlist, ZPOOL_CONFIG_POOL_TXG, - DATA_TYPE_UINT64, NULL, &label_txg); + DATA_TYPE_UINT64, NULL, &label_txg, NULL); if (error != 0 || label_txg == 0) { memcpy(nvl, nvlist, nvl_size); goto done; @@ -1852,7 +1863,7 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg) * because we can get bad value from BIOS. */ if (nvlist_find(nvlist, ZPOOL_CONFIG_ASIZE, - DATA_TYPE_UINT64, NULL, &asize) == 0) { + DATA_TYPE_UINT64, NULL, &asize, NULL) == 0) { vd->v_psize = asize + VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE; } @@ -1905,7 +1916,7 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) uint64_t pool_txg, pool_guid; const char *pool_name; const unsigned char *features; - int rc; + int rc, namelen; /* * Load the vdev label and figure out which @@ -1926,7 +1937,7 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) return (EIO); if (nvlist_find(nvlist, ZPOOL_CONFIG_VERSION, DATA_TYPE_UINT64, - NULL, &val) != 0) { + NULL, &val, NULL) != 0) { free(nvlist); return (EIO); } @@ -1940,14 +1951,14 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) /* Check ZFS features for read */ if (nvlist_find(nvlist, ZPOOL_CONFIG_FEATURES_FOR_READ, - DATA_TYPE_NVLIST, NULL, &features) == 0 && + DATA_TYPE_NVLIST, NULL, &features, NULL) == 0 && nvlist_check_features_for_read(features) != 0) { free(nvlist); return (EIO); } if (nvlist_find(nvlist, ZPOOL_CONFIG_POOL_STATE, DATA_TYPE_UINT64, - NULL, &val) != 0) { + NULL, &val, NULL) != 0) { free(nvlist); return (EIO); } @@ -1959,11 +1970,11 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) } if (nvlist_find(nvlist, ZPOOL_CONFIG_POOL_TXG, DATA_TYPE_UINT64, - NULL, &pool_txg) != 0 || + NULL, &pool_txg, NULL) != 0 || nvlist_find(nvlist, ZPOOL_CONFIG_POOL_GUID, DATA_TYPE_UINT64, - NULL, &pool_guid) != 0 || + NULL, &pool_guid, NULL) != 0 || nvlist_find(nvlist, ZPOOL_CONFIG_POOL_NAME, DATA_TYPE_STRING, - NULL, &pool_name) != 0) { + NULL, &pool_name, &namelen) != 0) { /* * Cache and spare devices end up here - just ignore * them. @@ -1977,9 +1988,19 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) */ spa = spa_find_by_guid(pool_guid); if (spa == NULL) { + char *name; + nvlist_find(nvlist, ZPOOL_CONFIG_VDEV_CHILDREN, - DATA_TYPE_UINT64, NULL, &vdev_children); - spa = spa_create(pool_guid, pool_name); + DATA_TYPE_UINT64, NULL, &vdev_children, NULL); + name = malloc(namelen + 1); + if (name == NULL) { + free(nvlist); + return (ENOMEM); + } + bcopy(pool_name, name, namelen); + name[namelen] = '\0'; + spa = spa_create(pool_guid, name); + free(name); if (spa == NULL) { free(nvlist); return (ENOMEM); @@ -1996,7 +2017,7 @@ vdev_probe(vdev_phys_read_t *_read, void *read_priv, spa_t **spap) * disks etc). */ if (nvlist_find(nvlist, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64, - NULL, &guid) != 0) { + NULL, &guid, NULL) != 0) { free(nvlist); return (EIO); } From nobody Fri Oct 8 06:10:52 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2A07C12D37E5; Fri, 8 Oct 2021 06:11: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 4HQd9K6SVBz3L97; Fri, 8 Oct 2021 06:11: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 F243E217EC; Fri, 8 Oct 2021 06:10: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 1986Aq01007301; Fri, 8 Oct 2021 06:10:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AqIr007300; Fri, 8 Oct 2021 06:10:52 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:52 GMT Message-Id: <202110080610.1986AqIr007300@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 7313f59b8680 - stable/12 - loader: create single zfs nextboot implementation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 7313f59b868025caa34453591e5d24cd75cd9076 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7313f59b868025caa34453591e5d24cd75cd9076 commit 7313f59b868025caa34453591e5d24cd75cd9076 Author: Toomas Soome AuthorDate: 2020-06-20 06:23:31 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:20 +0000 loader: create single zfs nextboot implementation We should have nextboot feature implemented in libsa zfs code. To get there, I have created zfs_nextboot() implementation based on two sources, our current simple textual string based approach with added structured boot label PAD structure from OpenZFS. Secondly, all nvlist details are moved to separate source file and restructured a bit. This is done to provide base support to add nvlist add/update feature in followup updates. And finally, the zfsboot/gptzfsboot disk access functions are swapped to use libi386 and libsa. (cherry picked from commit 3830659e99640001c09d26dfc0e1bbd77d919a62) (cherry picked from commit a137f7997efc8a34da75a7643c8fade4be67e82c) (cherry picked from commit 4583682ec14cc63f063b6769b7706af1891b0934) --- stand/efi/libefi/Makefile | 2 + stand/efi/loader/main.c | 15 +- stand/i386/gptzfsboot/Makefile | 19 +- stand/i386/libi386/Makefile | 2 + stand/i386/zfsboot/Makefile | 22 +- stand/i386/zfsboot/zfsboot.c | 1158 +++++++++++--------------------------- stand/libofw/Makefile | 3 +- stand/libsa/zfs/Makefile.inc | 2 +- stand/libsa/zfs/libzfs.h | 79 ++- stand/libsa/zfs/nvlist.c | 601 ++++++++++++++++++++ stand/libsa/zfs/zfs.c | 264 ++++++++- stand/libsa/zfs/zfsimpl.c | 415 ++++---------- stand/loader.mk | 1 + stand/sparc64/loader/Makefile | 3 + stand/sparc64/loader/main.c | 9 +- stand/userboot/userboot/Makefile | 1 + sys/cddl/boot/zfs/zfsimpl.h | 35 +- sys/vm/vm.h | 2 + 18 files changed, 1446 insertions(+), 1187 deletions(-) diff --git a/stand/efi/libefi/Makefile b/stand/efi/libefi/Makefile index 7ca1a1f92fd7..788583215f0b 100644 --- a/stand/efi/libefi/Makefile +++ b/stand/efi/libefi/Makefile @@ -47,6 +47,8 @@ CFLAGS+= -I${EFIINC} CFLAGS+= -I${EFIINCMD} .if ${MK_LOADER_ZFS} != "no" CFLAGS+= -I${ZFSSRC} +CFLAGS+= -I${SYSDIR}/cddl/boot/zfs +CFLAGS+= -I${SYSDIR}/cddl/contrib/opensolaris/uts/common CFLAGS+= -DEFI_ZFS_BOOT .endif diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index b391f091b1e4..58e5763f14ff 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -264,6 +264,8 @@ probe_zfs_currdev(uint64_t guid) { char *devname; struct zfs_devdesc currdev; + char *buf = NULL; + bool rv; currdev.dd.d_dev = &zfs_dev; currdev.dd.d_unit = 0; @@ -273,7 +275,18 @@ probe_zfs_currdev(uint64_t guid) devname = efi_fmtdev(&currdev); init_zfs_bootenv(devname); - return (sanity_check_currdev()); + rv = sanity_check_currdev(); + if (rv) { + buf = malloc(VDEV_PAD_SIZE); + if (buf != NULL) { + if (zfs_nextboot(&currdev, buf, VDEV_PAD_SIZE) == 0) { + printf("zfs nextboot: %s\n", buf); + set_currdev(buf); + } + free(buf); + } + } + return (rv); } #endif diff --git a/stand/i386/gptzfsboot/Makefile b/stand/i386/gptzfsboot/Makefile index fb5c801d8bcd..6aa7464e1503 100644 --- a/stand/i386/gptzfsboot/Makefile +++ b/stand/i386/gptzfsboot/Makefile @@ -4,7 +4,7 @@ .PATH: ${BOOTSRC}/i386/boot2 ${BOOTSRC}/i386/gptboot \ ${BOOTSRC}/i386/zfsboot ${BOOTSRC}/i386/common \ - ${SASRC} + ${BOOTSRC}/common FILES= gptzfsboot MAN= gptzfsboot.8 @@ -19,12 +19,16 @@ ORG2= 0x0 CFLAGS+=-DBOOTPROG=\"gptzfsboot\" \ -O1 \ - -DGPT -DZFS -DBOOT2 \ + -DBOOT2 \ + -DLOADER_GPT_SUPPORT \ + -DLOADER_MBR_SUPPORT \ + -DLOADER_ZFS_SUPPORT \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ -DSIOFMT=${B2SIOFMT} \ -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ -I${LDRSRC} \ -I${BOOTSRC}/i386/common \ + -I${BOOTSRC}/i386/libi386 \ -I${ZFSSRC} \ -I${SYSDIR}/crypto/skein \ -I${SYSDIR}/cddl/boot/zfs \ @@ -60,15 +64,18 @@ gptldr.bin: gptldr.out gptldr.out: gptldr.o ${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} gptldr.o -CLEANFILES+= gptzfsboot.bin gptzfsboot.out zfsboot.o sio.o cons.o \ - drv.o gpt.o ${OPENCRYPTO_XTS} +OBJS= zfsboot.o sio.o cons.o bcache.o devopen.o disk.o part.o zfs_cmd.o +CLEANFILES+= gptzfsboot.bin gptzfsboot.out ${OBJS} ${OPENCRYPTO_XTS} + +# i386 standalone support library +LIBI386= ${BOOTOBJ}/i386/libi386/libi386.a gptzfsboot.bin: gptzfsboot.out ${OBJCOPY} -S -O binary gptzfsboot.out ${.TARGET} -gptzfsboot.out: ${BTXCRT} zfsboot.o sio.o gpt.o drv.o cons.o \ +gptzfsboot.out: ${BTXCRT} ${OBJS} \ ${OPENCRYPTO_XTS} - ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBSA32} + ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBI386} ${LIBSA32} zfsboot.o: ${ZFSSRC}/zfsimpl.c diff --git a/stand/i386/libi386/Makefile b/stand/i386/libi386/Makefile index 75e6448ca717..f3bec563ff48 100644 --- a/stand/i386/libi386/Makefile +++ b/stand/i386/libi386/Makefile @@ -33,6 +33,8 @@ CFLAGS+= -Dalloca=__builtin_alloca CFLAGS+= -I${BOOTSRC}/ficl -I${BOOTSRC}/ficl/i386 \ -I${LDRSRC} -I${BOOTSRC}/i386/common \ + -I${SYSDIR}/cddl/boot/zfs \ + -I${SYSDIR}/cddl/contrib/opensolaris/uts/common \ -I${SYSDIR}/contrib/dev/acpica/include # Handle FreeBSD specific %b and %D printf format specifiers diff --git a/stand/i386/zfsboot/Makefile b/stand/i386/zfsboot/Makefile index 80303cb8fde0..8c0527848478 100644 --- a/stand/i386/zfsboot/Makefile +++ b/stand/i386/zfsboot/Makefile @@ -2,7 +2,7 @@ .include -.PATH: ${BOOTSRC}/i386/boot2 ${BOOTSRC}/i386/common ${SASRC} +.PATH: ${BOOTSRC}/i386/boot2 ${BOOTSRC}/i386/common ${BOOTSRC}/common FILES= zfsboot MAN= zfsboot.8 @@ -17,13 +17,17 @@ ORG2= 0x2000 CFLAGS+=-DBOOTPROG=\"zfsboot\" \ -O1 \ - -DZFS -DBOOT2 \ + -DBOOT2 \ + -DLOADER_GPT_SUPPORT \ + -DLOADER_MBR_SUPPORT \ + -DLOADER_ZFS_SUPPORT \ + -DLOADER_UFS_SUPPORT \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ -DSIOFMT=${B2SIOFMT} \ -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ -I${LDRSRC} \ -I${BOOTSRC}/i386/common \ - -I${BOOTSRC}/i386 \ + -I${BOOTSRC}/i386/libi386 \ -I${ZFSSRC} \ -I${SYSDIR}/crypto/skein \ -I${SYSDIR}/cddl/boot/zfs \ @@ -34,6 +38,8 @@ CFLAGS+=-DBOOTPROG=\"zfsboot\" \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings +CFLAGS.part.c+= -DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib + CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS+=${LD_FLAGS_BIN} @@ -51,14 +57,18 @@ zfsboot1: zfsldr.out zfsldr.out: zfsldr.o ${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} zfsldr.o +OBJS= zfsboot.o sio.o cons.o bcache.o devopen.o disk.o part.o zfs_cmd.o CLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ - zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o + ${OBJS} # We currently allow 256k bytes for zfsboot - in practice it could be # any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. # BOOT2SIZE= 262144 +# i386 standalone support library +LIBI386= ${BOOTOBJ}/i386/libi386/libi386.a + zfsboot2: zfsboot.ld @set -- `ls -l ${.ALLSRC}`; x=$$((${BOOT2SIZE}-$$5)); \ echo "$$x bytes available"; test $$x -ge 0 @@ -74,8 +84,8 @@ zfsboot.ldr: zfsboot.bin: zfsboot.out ${OBJCOPY} -S -O binary zfsboot.out ${.TARGET} -zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o - ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBSA32} +zfsboot.out: ${BTXCRT} ${OBJS} + ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBI386} ${LIBSA32} SRCS= zfsboot.c diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index a51c69267fbc..e387d4a47c9d 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -16,7 +16,7 @@ #include __FBSDID("$FreeBSD$"); -#include "stand.h" +#include #include #include @@ -35,15 +35,16 @@ __FBSDID("$FreeBSD$"); #include #include - +#include "bootstrap.h" +#include "libi386.h" #include #include "lib.h" #include "rbx.h" -#include "drv.h" -#include "edd.h" #include "cons.h" #include "bootargs.h" +#include "disk.h" +#include "part.h" #include "paths.h" #include "libzfs.h" @@ -61,13 +62,8 @@ __FBSDID("$FreeBSD$"); #define TYPE_MAXHARD TYPE_DA #define TYPE_FD 2 -#define DEV_GELIBOOT_BSIZE 4096 - extern uint32_t _end; -#ifdef GPT -static const uuid_t freebsd_zfs_uuid = GPT_ENT_TYPE_FREEBSD_ZFS; -#endif static const char optstr[NOPT] = "DhaCcdgmnpqrsv"; /* Also 'P', 'S' */ static const unsigned char flags[NOPT] = { RBX_DUAL, @@ -107,785 +103,153 @@ static const struct string { static const unsigned char dev_maj[NDEV] = {30, 4, 2}; +static struct i386_devdesc *bdev; static char cmd[512]; static char cmddup[512]; static char kname[1024]; -static char rootname[256]; static int comspeed = SIOSPD; static struct bootinfo bootinfo; static uint32_t bootdev; static struct zfs_boot_args zfsargs; +#ifdef LOADER_GELI_SUPPORT +static struct geli_boot_args geliargs; +#endif -vm_offset_t high_heap_base; -uint32_t bios_basemem, bios_extmem, high_heap_size; - -static struct bios_smap smap; - -/* - * The minimum amount of memory to reserve in bios_extmem for the heap. - */ -#define HEAP_MIN (64 * 1024 * 1024) - -static char *heap_next; -static char *heap_end; +extern vm_offset_t high_heap_base; +extern uint32_t bios_basemem, bios_extmem, high_heap_size; -/* Buffers that must not span a 64k boundary. */ -#define READ_BUF_SIZE 8192 -struct dmadat { - char rdbuf[READ_BUF_SIZE]; /* for reading large things */ - char secbuf[READ_BUF_SIZE]; /* for MBR/disklabel */ -}; -static struct dmadat *dmadat; +static char *heap_top; +static char *heap_bottom; void exit(int); -void reboot(void); +static void i386_zfs_probe(void); static void load(void); static int parse_cmd(void); -static void bios_getmem(void); -int main(void); #ifdef LOADER_GELI_SUPPORT #include "geliboot.h" static char gelipw[GELI_PW_MAXLEN]; #endif -struct zfsdsk { - struct dsk dsk; -#ifdef LOADER_GELI_SUPPORT - struct geli_dev *gdev; +struct arch_switch archsw; /* MI/MD interface boundary */ +static char boot_devname[2 * ZFS_MAXNAMELEN + 8]; /* disk or pool:dataset */ + +struct devsw *devsw[] = { + &bioshd, +#if defined(LOADER_ZFS_SUPPORT) + &zfs_dev, #endif + NULL }; -#include "zfsimpl.c" - -/* - * Read from a dnode (which must be from a ZPL filesystem). - */ -static int -zfs_read(spa_t *spa, const dnode_phys_t *dnode, off_t *offp, void *start, - size_t size) -{ - const znode_phys_t *zp = (const znode_phys_t *) dnode->dn_bonus; - size_t n; - int rc; - - n = size; - if (*offp + n > zp->zp_size) - n = zp->zp_size - *offp; - - rc = dnode_read(spa, dnode, *offp, start, n); - if (rc) - return (-1); - *offp += n; - - return (n); -} - -/* - * Current ZFS pool - */ -static spa_t *spa; -static spa_t *primary_spa; -static vdev_t *primary_vdev; - -/* - * A wrapper for dskread that doesn't have to worry about whether the - * buffer pointer crosses a 64k boundary. - */ -static int -vdev_read(void *xvdev, void *priv, off_t off, void *buf, size_t bytes) -{ - char *p; - daddr_t lba, alignlba; - off_t diff; - unsigned int nb, alignnb; - struct zfsdsk *zdsk = priv; - - if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1))) - return (-1); - - p = buf; - lba = off / DEV_BSIZE; - lba += zdsk->dsk.start; - /* - * Align reads to 4k else 4k sector GELIs will not decrypt. - * Round LBA down to nearest multiple of DEV_GELIBOOT_BSIZE bytes. - */ - alignlba = rounddown2(off, DEV_GELIBOOT_BSIZE) / DEV_BSIZE; - /* - * The read must be aligned to DEV_GELIBOOT_BSIZE bytes relative to the - * start of the GELI partition, not the start of the actual disk. - */ - alignlba += zdsk->dsk.start; - diff = (lba - alignlba) * DEV_BSIZE; - - while (bytes > 0) { - nb = bytes / DEV_BSIZE; - /* - * Ensure that the read size plus the leading offset does not - * exceed the size of the read buffer. - */ - if (nb > (READ_BUF_SIZE - diff) / DEV_BSIZE) - nb = (READ_BUF_SIZE - diff) / DEV_BSIZE; - /* - * Round the number of blocks to read up to the nearest multiple - * of DEV_GELIBOOT_BSIZE. - */ - alignnb = roundup2(nb * DEV_BSIZE + diff, DEV_GELIBOOT_BSIZE) - / DEV_BSIZE; - - if (zdsk->dsk.size > 0 && alignlba + alignnb > - zdsk->dsk.size + zdsk->dsk.start) { - printf("Shortening read at %lld from %d to %lld\n", - alignlba, alignnb, - (zdsk->dsk.size + zdsk->dsk.start) - alignlba); - alignnb = (zdsk->dsk.size + zdsk->dsk.start) - alignlba; - } - - if (drvread(&zdsk->dsk, dmadat->rdbuf, alignlba, alignnb)) - return (-1); -#ifdef LOADER_GELI_SUPPORT - /* decrypt */ - if (zdsk->gdev != NULL) { - if (geli_read(zdsk->gdev, - ((alignlba - zdsk->dsk.start) * DEV_BSIZE), - dmadat->rdbuf, alignnb * DEV_BSIZE)) - return (-1); - } +struct fs_ops *file_system[] = { +#if defined(LOADER_ZFS_SUPPORT) + &zfs_fsops, #endif - memcpy(p, dmadat->rdbuf + diff, nb * DEV_BSIZE); - p += nb * DEV_BSIZE; - lba += nb; - alignlba += alignnb; - bytes -= nb * DEV_BSIZE; - /* Don't need the leading offset after the first block. */ - diff = 0; - } - - return (0); -} -/* Match the signature exactly due to signature madness */ -static int -vdev_read2(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) -{ - return (vdev_read(vdev, priv, off, buf, bytes)); -} - - -static int -vdev_write(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) -{ - char *p; - daddr_t lba; - unsigned int nb; - struct zfsdsk *zdsk = priv; - - if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1))) - return (-1); - - p = buf; - lba = off / DEV_BSIZE; - lba += zdsk->dsk.start; - while (bytes > 0) { - nb = bytes / DEV_BSIZE; - if (nb > READ_BUF_SIZE / DEV_BSIZE) - nb = READ_BUF_SIZE / DEV_BSIZE; - memcpy(dmadat->rdbuf, p, nb * DEV_BSIZE); - if (drvwrite(&zdsk->dsk, dmadat->rdbuf, lba, nb)) - return (-1); - p += nb * DEV_BSIZE; - lba += nb; - bytes -= nb * DEV_BSIZE; - } - - return (0); -} - -static int -xfsread(const dnode_phys_t *dnode, off_t *offp, void *buf, size_t nbyte) -{ - if ((size_t)zfs_read(spa, dnode, offp, buf, nbyte) != nbyte) { - printf("Invalid format\n"); - return (-1); - } - return (0); -} - -/* - * Read Pad2 (formerly "Boot Block Header") area of the first - * vdev label of the given vdev. - */ -static int -vdev_read_pad2(vdev_t *vdev, char *buf, size_t size) -{ - blkptr_t bp; - char *tmp; - off_t off = offsetof(vdev_label_t, vl_pad2); - int rc; - - if (size > VDEV_PAD_SIZE) - size = VDEV_PAD_SIZE; - - tmp = malloc(VDEV_PAD_SIZE); - if (tmp == NULL) - return (ENOMEM); - - BP_ZERO(&bp); - BP_SET_LSIZE(&bp, VDEV_PAD_SIZE); - BP_SET_PSIZE(&bp, VDEV_PAD_SIZE); - BP_SET_CHECKSUM(&bp, ZIO_CHECKSUM_LABEL); - BP_SET_COMPRESS(&bp, ZIO_COMPRESS_OFF); - DVA_SET_OFFSET(BP_IDENTITY(&bp), off); - rc = vdev_read_phys(vdev, &bp, tmp, off, 0); - if (rc == 0) - memcpy(buf, tmp, size); - free(tmp); - return (rc); -} - -static int -vdev_clear_pad2(vdev_t *vdev) -{ - char *zeroes; - uint64_t *end; - off_t off = offsetof(vdev_label_t, vl_pad2); - int rc; - - zeroes = malloc(VDEV_PAD_SIZE); - if (zeroes == NULL) - return (ENOMEM); - - memset(zeroes, 0, VDEV_PAD_SIZE); - end = (uint64_t *)(zeroes + VDEV_PAD_SIZE); - /* ZIO_CHECKSUM_LABEL magic and pre-calcualted checksum for all zeros */ - end[-5] = 0x0210da7ab10c7a11; - end[-4] = 0x97f48f807f6e2a3f; - end[-3] = 0xaf909f1658aacefc; - end[-2] = 0xcbd1ea57ff6db48b; - end[-1] = 0x6ec692db0d465fab; - rc = vdev_write(vdev, vdev->v_read_priv, off, zeroes, VDEV_PAD_SIZE); - free(zeroes); - return (rc); -} - -static void -bios_getmem(void) -{ - uint64_t size; - - /* Parse system memory map */ - v86.ebx = 0; - do { - v86.ctl = V86_FLAGS; - v86.addr = 0x15; /* int 0x15 function 0xe820 */ - v86.eax = 0xe820; - v86.ecx = sizeof(struct bios_smap); - v86.edx = SMAP_SIG; - v86.es = VTOPSEG(&smap); - v86.edi = VTOPOFF(&smap); - v86int(); - if (V86_CY(v86.efl) || (v86.eax != SMAP_SIG)) - break; - /* look for a low-memory segment that's large enough */ - if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base == 0) && - (smap.length >= (512 * 1024))) - bios_basemem = smap.length; - /* look for the first segment in 'extended' memory */ - if ((smap.type == SMAP_TYPE_MEMORY) && - (smap.base == 0x100000)) { - bios_extmem = smap.length; - } - - /* - * Look for the largest segment in 'extended' memory beyond - * 1MB but below 4GB. - */ - if ((smap.type == SMAP_TYPE_MEMORY) && (smap.base > 0x100000) && - (smap.base < 0x100000000ull)) { - size = smap.length; - - /* - * If this segment crosses the 4GB boundary, - * truncate it. - */ - if (smap.base + size > 0x100000000ull) - size = 0x100000000ull - smap.base; - - if (size > high_heap_size) { - high_heap_size = size; - high_heap_base = smap.base; - } - } - } while (v86.ebx != 0); - - /* Fall back to the old compatibility function for base memory */ - if (bios_basemem == 0) { - v86.ctl = 0; - v86.addr = 0x12; /* int 0x12 */ - v86int(); - - bios_basemem = (v86.eax & 0xffff) * 1024; - } - - /* - * Fall back through several compatibility functions for extended - * memory. - */ - if (bios_extmem == 0) { - v86.ctl = V86_FLAGS; - v86.addr = 0x15; /* int 0x15 function 0xe801 */ - v86.eax = 0xe801; - v86int(); - if (!V86_CY(v86.efl)) { - bios_extmem = ((v86.ecx & 0xffff) + - ((v86.edx & 0xffff) * 64)) * 1024; - } - } - if (bios_extmem == 0) { - v86.ctl = 0; - v86.addr = 0x15; /* int 0x15 function 0x88 */ - v86.eax = 0x8800; - v86int(); - bios_extmem = (v86.eax & 0xffff) * 1024; - } - - /* - * If we have extended memory and did not find a suitable heap - * region in the SMAP, use the last 3MB of 'extended' memory as a - * high heap candidate. - */ - if (bios_extmem >= HEAP_MIN && high_heap_size < HEAP_MIN) { - high_heap_size = HEAP_MIN; - high_heap_base = bios_extmem + 0x100000 - HEAP_MIN; - } -} - -/* - * Try to detect a device supported by the legacy int13 BIOS - */ -static int -int13probe(int drive) -{ - v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x800; - v86.edx = drive; - v86int(); - - if (!V86_CY(v86.efl) && /* carry clear */ - ((v86.edx & 0xff) != (drive & DRV_MASK))) { /* unit # OK */ - if ((v86.ecx & 0x3f) == 0) { /* absurd sector size */ - return (0); /* skip device */ - } - return (1); - } - return (0); -} - -/* - * We call this when we find a ZFS vdev - ZFS consumes the dsk - * structure so we must make a new one. - */ -static struct zfsdsk * -copy_dsk(struct zfsdsk *zdsk) -{ - struct zfsdsk *newdsk; - - newdsk = malloc(sizeof(struct zfsdsk)); - *newdsk = *zdsk; - return (newdsk); -} - -/* - * Get disk size from GPT. - */ -static uint64_t -drvsize_gpt(struct dsk *dskp) -{ -#ifdef GPT - struct gpt_hdr hdr; - char *sec; - - sec = dmadat->secbuf; - if (drvread(dskp, sec, 1, 1)) - return (0); - - memcpy(&hdr, sec, sizeof(hdr)); - if (memcmp(hdr.hdr_sig, GPT_HDR_SIG, sizeof(hdr.hdr_sig)) != 0 || - hdr.hdr_lba_self != 1 || hdr.hdr_revision < 0x00010000 || - hdr.hdr_entsz < sizeof(struct gpt_ent) || - DEV_BSIZE % hdr.hdr_entsz != 0) { - return (0); - } - return (hdr.hdr_lba_alt + 1); -#else - return (0); +#if defined(LOADER_UFS_SUPPORT) + &ufs_fsops, #endif -} - -/* - * Get disk size from eax=0x800 and 0x4800. We need to probe both - * because 0x4800 may not be available and we would like to get more - * or less correct disk size - if it is possible at all. - * Note we do not really want to touch drv.c because that code is shared - * with boot2 and we can not afford to grow that code. - */ -static uint64_t -drvsize_ext(struct zfsdsk *zdsk) -{ - struct dsk *dskp; - uint64_t size, tmp; - int cyl, hds, sec; - - dskp = &zdsk->dsk; - - /* Try to read disk size from GPT */ - size = drvsize_gpt(dskp); - if (size != 0) - return (size); - - v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x800; - v86.edx = dskp->drive; - v86int(); - - /* Don't error out if we get bad sector number, try EDD as well */ - if (V86_CY(v86.efl) || /* carry set */ - (v86.edx & 0xff) <= (unsigned)(dskp->drive & 0x7f)) /* unit # bad */ - return (0); - cyl = ((v86.ecx & 0xc0) << 2) + ((v86.ecx & 0xff00) >> 8) + 1; - /* Convert max head # -> # of heads */ - hds = ((v86.edx & 0xff00) >> 8) + 1; - sec = v86.ecx & 0x3f; - - size = (uint64_t)cyl * hds * sec; - - /* Determine if we can use EDD with this device. */ - v86.ctl = V86_FLAGS; - v86.addr = 0x13; - v86.eax = 0x4100; - v86.edx = dskp->drive; - v86.ebx = 0x55aa; - v86int(); - if (V86_CY(v86.efl) || /* carry set */ - (v86.ebx & 0xffff) != 0xaa55 || /* signature */ - (v86.ecx & EDD_INTERFACE_FIXED_DISK) == 0) - return (size); - - tmp = drvsize(dskp); - if (tmp > size) - size = tmp; - - return (size); -} - -/* - * The "layered" ioctl to read disk/partition size. Unfortunately - * the zfsboot case is hardest, because we do not have full software - * stack available, so we need to do some manual work here. - */ -uint64_t -ldi_get_size(void *priv) -{ - struct zfsdsk *zdsk = priv; - uint64_t size = zdsk->dsk.size; - - if (zdsk->dsk.start == 0) - size = drvsize_ext(zdsk); - - return (size * DEV_BSIZE); -} + NULL +}; -static void -probe_drive(struct zfsdsk *zdsk) +caddr_t +ptov(uintptr_t x) { -#ifdef GPT - struct gpt_hdr hdr; - struct gpt_ent *ent; - unsigned part, entries_per_sec; - daddr_t slba; -#endif -#if defined(GPT) || defined(LOADER_GELI_SUPPORT) - daddr_t elba; -#endif - - struct dos_partition *dp; - char *sec; - unsigned i; - -#ifdef LOADER_GELI_SUPPORT - /* - * Taste the disk, if it is GELI encrypted, decrypt it then dig out the - * partition table and probe each slice/partition in turn for a vdev or - * GELI encrypted vdev. - */ - elba = drvsize_ext(zdsk); - if (elba > 0) { - elba--; - } - zdsk->gdev = geli_taste(vdev_read, zdsk, elba, "disk%u:0:"); - if ((zdsk->gdev != NULL) && (geli_havekey(zdsk->gdev) == 0)) - geli_passphrase(zdsk->gdev, gelipw); -#endif /* LOADER_GELI_SUPPORT */ - - sec = dmadat->secbuf; - zdsk->dsk.start = 0; - -#ifdef GPT - /* - * First check for GPT. - */ - if (drvread(&zdsk->dsk, sec, 1, 1)) { - return; - } - memcpy(&hdr, sec, sizeof(hdr)); - if (memcmp(hdr.hdr_sig, GPT_HDR_SIG, sizeof(hdr.hdr_sig)) != 0 || - hdr.hdr_lba_self != 1 || hdr.hdr_revision < 0x00010000 || - hdr.hdr_entsz < sizeof(*ent) || DEV_BSIZE % hdr.hdr_entsz != 0) { - goto trymbr; - } - - /* - * Probe all GPT partitions for the presence of ZFS pools. We - * return the spa_t for the first we find (if requested). This - * will have the effect of booting from the first pool on the - * disk. - * - * If no vdev is found, GELI decrypting the device and try again - */ - entries_per_sec = DEV_BSIZE / hdr.hdr_entsz; - slba = hdr.hdr_lba_table; - elba = slba + hdr.hdr_entries / entries_per_sec; - while (slba < elba) { - zdsk->dsk.start = 0; - if (drvread(&zdsk->dsk, sec, slba, 1)) - return; - for (part = 0; part < entries_per_sec; part++) { - ent = (struct gpt_ent *)(sec + part * hdr.hdr_entsz); - if (memcmp(&ent->ent_type, &freebsd_zfs_uuid, - sizeof(uuid_t)) == 0) { - zdsk->dsk.start = ent->ent_lba_start; - zdsk->dsk.size = - ent->ent_lba_end - ent->ent_lba_start + 1; - zdsk->dsk.slice = part + 1; - zdsk->dsk.part = 255; - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - /* - * This slice had a vdev. We need a new - * dsk structure now since the vdev now - * owns this one. - */ - zdsk = copy_dsk(zdsk); - } -#ifdef LOADER_GELI_SUPPORT - else if ((zdsk->gdev = geli_taste(vdev_read, - zdsk, ent->ent_lba_end - ent->ent_lba_start, - "disk%up%u:", zdsk->dsk.unit, - zdsk->dsk.slice)) != NULL) { - if (geli_havekey(zdsk->gdev) == 0 || - geli_passphrase(zdsk->gdev, gelipw) - == 0) { - /* - * This slice has GELI, - * check it for ZFS. - */ - if (vdev_probe(vdev_read2, - zdsk, NULL) == 0) { - /* - * This slice had a - * vdev. We need a new - * dsk structure now - * since the vdev now - * owns this one. - */ - zdsk = copy_dsk(zdsk); - } - break; - } - } -#endif /* LOADER_GELI_SUPPORT */ - } - } - slba++; - } - return; -trymbr: -#endif /* GPT */ - - if (drvread(&zdsk->dsk, sec, DOSBBSECTOR, 1)) - return; - dp = (void *)(sec + DOSPARTOFF); - - for (i = 0; i < NDOSPART; i++) { - if (!dp[i].dp_typ) - continue; - zdsk->dsk.start = dp[i].dp_start; - zdsk->dsk.size = dp[i].dp_size; - zdsk->dsk.slice = i + 1; - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - zdsk = copy_dsk(zdsk); - } -#ifdef LOADER_GELI_SUPPORT - else if ((zdsk->gdev = geli_taste(vdev_read, zdsk, - dp[i].dp_size - dp[i].dp_start, "disk%us%u:")) != NULL) { - if (geli_havekey(zdsk->gdev) == 0 || - geli_passphrase(zdsk->gdev, gelipw) == 0) { - /* - * This slice has GELI, check it for ZFS. - */ - if (vdev_probe(vdev_read2, zdsk, NULL) == 0) { - /* - * This slice had a vdev. We need a new - * dsk structure now since the vdev now - * owns this one. - */ - zdsk = copy_dsk(zdsk); - } - break; - } - } -#endif /* LOADER_GELI_SUPPORT */ - } + return (PTOV(x)); } int main(void) { - dnode_phys_t dn; - off_t off; - struct zfsdsk *zdsk; - int autoboot, i; - int nextboot; - int rc; - - dmadat = (void *)(roundup2(__base + (int32_t)&_end, 0x10000) - __base); + unsigned i; + int auto_boot, fd, nextboot = 0; + struct disk_devdesc devdesc; bios_getmem(); if (high_heap_size > 0) { - heap_end = PTOV(high_heap_base + high_heap_size); - heap_next = PTOV(high_heap_base); + heap_top = PTOV(high_heap_base + high_heap_size); + heap_bottom = PTOV(high_heap_base); } else { - heap_next = (char *)dmadat + sizeof(*dmadat); - heap_end = (char *)PTOV(bios_basemem); + heap_bottom = (char *) + (roundup2(__base + (int32_t)&_end, 0x10000) - __base); + heap_top = (char *)PTOV(bios_basemem); } - setheap(heap_next, heap_end); + setheap(heap_bottom, heap_top); - zdsk = calloc(1, sizeof(struct zfsdsk)); *** 2556 LINES SKIPPED *** From nobody Fri Oct 8 06:10:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3145A12D37E7; Fri, 8 Oct 2021 06:11: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 4HQd9K6j7Kz3LPv; Fri, 8 Oct 2021 06:11: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 1626D21BF2; Fri, 8 Oct 2021 06:10: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 1986AreO007331; Fri, 8 Oct 2021 06:10:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ArRm007330; Fri, 8 Oct 2021 06:10:53 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:53 GMT Message-Id: <202110080610.1986ArRm007330@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: af3c16f3421e - stable/12 - loader: can not read zfs pool with slog removed List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: af3c16f3421e36a5f97cabcbb23efa51505622c2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=af3c16f3421e36a5f97cabcbb23efa51505622c2 commit af3c16f3421e36a5f97cabcbb23efa51505622c2 Author: Toomas Soome AuthorDate: 2020-06-26 21:21:35 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 loader: can not read zfs pool with slog removed The vdev_init() does check for "known" vdev types, the [log] device removal will create "hole" device, but vdev_init() does not allow it. (cherry picked from commit b93b14dc756861d543249f3d04b80809055fdd61) --- stand/libsa/zfs/zfsimpl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index a33d2bdf8db6..fe04d3b1db21 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -766,6 +766,13 @@ vdev_disk_read(vdev_t *vdev, const blkptr_t *bp, void *buf, offset + VDEV_LABEL_START_SIZE, bytes)); } +static int +vdev_missing_read(vdev_t *vdev __unused, const blkptr_t *bp __unused, + void *buf __unused, off_t offset __unused, size_t bytes __unused) +{ + + return (ENOTSUP); +} static int vdev_mirror_read(vdev_t *vdev, const blkptr_t *bp, void *buf, @@ -904,9 +911,10 @@ vdev_init(uint64_t guid, const nvlist_t *nvlist, vdev_t **vdevp) #endif memcmp(type, VDEV_TYPE_RAIDZ, len) != 0 && memcmp(type, VDEV_TYPE_INDIRECT, len) != 0 && - memcmp(type, VDEV_TYPE_REPLACING, len) != 0) { + memcmp(type, VDEV_TYPE_REPLACING, len) != 0 && + memcmp(type, VDEV_TYPE_HOLE, len) != 0) { printf("ZFS: can only boot from disk, mirror, raidz1, " - "raidz2 and raidz3 vdevs\n"); + "raidz2 and raidz3 vdevs, got: %.*s\n", len, type); return (EIO); } @@ -937,6 +945,8 @@ vdev_init(uint64_t guid, const nvlist_t *nvlist, vdev_t **vdevp) DATA_TYPE_UINT64, NULL, &vic->vic_prev_indirect_vdev, NULL); } + } else if (memcmp(type, VDEV_TYPE_HOLE, len) == 0) { + vdev = vdev_create(guid, vdev_missing_read); } else { vdev = vdev_create(guid, vdev_disk_read); } From nobody Fri Oct 8 06:10:55 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7644A12D386B; Fri, 8 Oct 2021 06:11: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 4HQd9N61Rzz3L0T; Fri, 8 Oct 2021 06:11: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 3070521E24; Fri, 8 Oct 2021 06:10: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 1986Athb007355; Fri, 8 Oct 2021 06:10:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986At3Q007354; Fri, 8 Oct 2021 06:10:55 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:55 GMT Message-Id: <202110080610.1986At3Q007354@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: fbeb08184407 - stable/12 - boot1.efi: use malloc family from libsa List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: fbeb08184407c1d8824790fd51410f9e8f200522 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=fbeb08184407c1d8824790fd51410f9e8f200522 commit fbeb08184407c1d8824790fd51410f9e8f200522 Author: Toomas Soome AuthorDate: 2020-06-30 21:48:58 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 boot1.efi: use malloc family from libsa The zfs reader development did reach to the point where linking boot1, we will get errors about duplicate symbols Malloc, Free, Calloc. We can just use libsa version, just as loader.efi does. The only concern is, libsa zalloc is using fixed size heap region, I did pick 64MB as other stage instances are using, but this size is likely not optimal. In any case, with limited memory setups, we should boot loader.efi directly. (cherry picked from commit 12c470af750672c4847af20cc8e2a736aab7db78) --- stand/efi/boot1/boot1.c | 52 +++++++++++++++---------------------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/stand/efi/boot1/boot1.c b/stand/efi/boot1/boot1.c index 22bff7f10fba..088821ecd1f8 100644 --- a/stand/efi/boot1/boot1.c +++ b/stand/efi/boot1/boot1.c @@ -53,42 +53,8 @@ static EFI_GUID DevicePathGUID = DEVICE_PATH_PROTOCOL; static EFI_GUID LoadedImageGUID = LOADED_IMAGE_PROTOCOL; static EFI_GUID ConsoleControlGUID = EFI_CONSOLE_CONTROL_PROTOCOL_GUID; -/* - * Provide Malloc / Free / Calloc backed by EFIs AllocatePool / FreePool which ensures - * memory is correctly aligned avoiding EFI_INVALID_PARAMETER returns from - * EFI methods. - */ - -void * -Malloc(size_t len, const char *file __unused, int line __unused) -{ - void *out; - - if (BS->AllocatePool(EfiLoaderData, len, &out) == EFI_SUCCESS) - return (out); - - return (NULL); -} - -void -Free(void *buf, const char *file __unused, int line __unused) -{ - if (buf != NULL) - (void)BS->FreePool(buf); -} - -void * -Calloc(size_t n1, size_t n2, const char *file, int line) -{ - size_t bytes; - void *res; - - bytes = n1 * n2; - if ((res = Malloc(bytes, file, line)) != NULL) - bzero(res, bytes); - - return (res); -} +static EFI_PHYSICAL_ADDRESS heap; +static UINTN heapsize; /* * try_boot only returns if it fails to load the loader. If it succeeds @@ -201,6 +167,18 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab) BS = ST->BootServices; RS = ST->RuntimeServices; + heapsize = 64 * 1024 * 1024; + status = BS->AllocatePages(AllocateAnyPages, EfiLoaderData, + EFI_SIZE_TO_PAGES(heapsize), &heap); + if (status != EFI_SUCCESS) { + ST->ConOut->OutputString(ST->ConOut, + __DECONST(CHAR16 *, + L"Failed to allocate memory for heap.\r\n")); + BS->Exit(IH, status, 0, NULL); + } + + setheap((void *)(uintptr_t)heap, (void *)(uintptr_t)(heap + heapsize)); + /* Set up the console, so printf works. */ status = BS->LocateProtocol(&ConsoleControlGUID, NULL, (VOID **)&ConsoleControl); @@ -296,6 +274,8 @@ add_device(dev_info_t **devinfop, dev_info_t *devinfo) void efi_exit(EFI_STATUS s) { + + BS->FreePages(heap, EFI_SIZE_TO_PAGES(heapsize)); BS->Exit(IH, s, 0, NULL); } From nobody Fri Oct 8 06:10:56 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0C86712D39C5; Fri, 8 Oct 2021 06:11: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 4HQd9N5h3Fz3LCN; Fri, 8 Oct 2021 06:11: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 587D2217ED; Fri, 8 Oct 2021 06:10: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 1986Au0M007379; Fri, 8 Oct 2021 06:10:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AuIt007378; Fri, 8 Oct 2021 06:10:56 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:56 GMT Message-Id: <202110080610.1986AuIt007378@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1767656525c5 - stable/12 - loader: potential memory leak and check return values List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1767656525c5ab8cdcc9309846023bf2d94e735d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1767656525c5ab8cdcc9309846023bf2d94e735d commit 1767656525c5ab8cdcc9309846023bf2d94e735d Author: Toomas Soome AuthorDate: 2020-07-02 07:03:15 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 loader: potential memory leak and check return values Need to free nvlist before return from vdev_from_nvlist(). (cherry picked from commit 045f497cbc6cb67bc563d7f2378bf9535044bb2d) --- stand/libsa/zfs/zfsimpl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index fe04d3b1db21..cc35f3d06f0e 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -1111,14 +1111,20 @@ vdev_from_nvlist(spa_t *spa, uint64_t top_guid, const nvlist_t *nvlist) return (rc); } rc = vdev_init(guid, kids, &vdev); - if (rc != 0) + if (rc != 0) { + nvlist_destroy(kids); return (rc); + } vdev->v_spa = spa; vdev->v_top = top_vdev; vdev_insert(top_vdev, vdev); rc = nvlist_next(kids); + if (rc != 0) { + nvlist_destroy(kids); + return (rc); + } } } else { rc = 0; @@ -1224,6 +1230,8 @@ vdev_update_from_nvlist(uint64_t top_guid, const nvlist_t *nvlist) vdev_set_initial_state(vdev, kids); rc = nvlist_next(kids); + if (rc != 0) + break; } } else { rc = 0; @@ -1286,7 +1294,9 @@ vdev_init_from_nvlist(spa_t *spa, const nvlist_t *nvlist) rc = vdev_update_from_nvlist(guid, kids); if (rc != 0) break; - nvlist_next(kids); + rc = nvlist_next(kids); + if (rc != 0) + break; } nvlist_destroy(kids); From nobody Fri Oct 8 06:10:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D506912D3CB3; Fri, 8 Oct 2021 06:11: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 4HQd9S53Zyz3LTm; Fri, 8 Oct 2021 06:11: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 C313B21FD4; Fri, 8 Oct 2021 06:10: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 1986AxlN007457; Fri, 8 Oct 2021 06:10:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986AxtN007456; Fri, 8 Oct 2021 06:10:59 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:59 GMT Message-Id: <202110080610.1986AxtN007456@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 37aef5973257 - stable/12 - libsa: cstyle cleanup for environment.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 37aef597325741d8b79174bd944eddf56db3c01b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=37aef597325741d8b79174bd944eddf56db3c01b commit 37aef597325741d8b79174bd944eddf56db3c01b Author: Toomas Soome AuthorDate: 2020-08-19 15:20:33 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 libsa: cstyle cleanup for environment.c No functional changes. (cherry picked from commit 16aabe28c6e71f05e3520eb9209658fe61e7c28b) --- stand/libsa/environment.c | 237 +++++++++++++++++++++++----------------------- 1 file changed, 118 insertions(+), 119 deletions(-) diff --git a/stand/libsa/environment.c b/stand/libsa/environment.c index 36409cc0add1..167dcdb26bfa 100644 --- a/stand/libsa/environment.c +++ b/stand/libsa/environment.c @@ -47,12 +47,12 @@ struct env_var *environ = NULL; struct env_var * env_getenv(const char *name) { - struct env_var *ev; + struct env_var *ev; - for (ev = environ; ev != NULL; ev = ev->ev_next) - if (!strcmp(ev->ev_name, name)) - break; - return(ev); + for (ev = environ; ev != NULL; ev = ev->ev_next) + if (!strcmp(ev->ev_name, name)) + break; + return (ev); } /* @@ -65,160 +65,159 @@ env_getenv(const char *name) */ int env_setenv(const char *name, int flags, const void *value, - ev_sethook_t sethook, ev_unsethook_t unsethook) + ev_sethook_t sethook, ev_unsethook_t unsethook) { - struct env_var *ev, *curr, *last; - - if ((ev = env_getenv(name)) != NULL) { - /* - * If there's a set hook, let it do the work (unless we are working - * for one already. - */ - if ((ev->ev_sethook != NULL) && !(flags & EV_NOHOOK)) - return (ev->ev_sethook(ev, flags, value)); - - /* If there is data in the variable, discard it. */ - if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0) - free(ev->ev_value); - ev->ev_value = NULL; - ev->ev_flags &= ~EV_DYNAMIC; - - } else { - - /* - * New variable; create and sort into list - */ - ev = malloc(sizeof(struct env_var)); - ev->ev_name = strdup(name); - ev->ev_value = NULL; - ev->ev_flags = 0; - /* hooks can only be set when the variable is instantiated */ - ev->ev_sethook = sethook; - ev->ev_unsethook = unsethook; - - /* Sort into list */ - ev->ev_prev = NULL; - ev->ev_next = NULL; - /* Search for the record to insert before */ - for (last = NULL, curr = environ; - curr != NULL; - last = curr, curr = curr->ev_next) { - - if (strcmp(ev->ev_name, curr->ev_name) < 0) { - if (curr->ev_prev) { - curr->ev_prev->ev_next = ev; - } else { - environ = ev; + struct env_var *ev, *curr, *last; + + if ((ev = env_getenv(name)) != NULL) { + /* + * If there's a set hook, let it do the work + * (unless we are working for one already). + */ + if ((ev->ev_sethook != NULL) && !(flags & EV_NOHOOK)) + return (ev->ev_sethook(ev, flags, value)); + + /* If there is data in the variable, discard it. */ + if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0) + free(ev->ev_value); + ev->ev_value = NULL; + ev->ev_flags &= ~EV_DYNAMIC; + + } else { + + /* + * New variable; create and sort into list + */ + ev = malloc(sizeof(struct env_var)); + ev->ev_name = strdup(name); + ev->ev_value = NULL; + ev->ev_flags = 0; + /* hooks can only be set when the variable is instantiated */ + ev->ev_sethook = sethook; + ev->ev_unsethook = unsethook; + + /* Sort into list */ + ev->ev_prev = NULL; + ev->ev_next = NULL; + /* Search for the record to insert before */ + for (last = NULL, curr = environ; curr != NULL; + last = curr, curr = curr->ev_next) { + + if (strcmp(ev->ev_name, curr->ev_name) < 0) { + if (curr->ev_prev) { + curr->ev_prev->ev_next = ev; + } else { + environ = ev; + } + ev->ev_next = curr; + ev->ev_prev = curr->ev_prev; + curr->ev_prev = ev; + break; + } + } + if (curr == NULL) { + if (last == NULL) { + environ = ev; + } else { + last->ev_next = ev; + ev->ev_prev = last; + } } - ev->ev_next = curr; - ev->ev_prev = curr->ev_prev; - curr->ev_prev = ev; - break; - } } - if (curr == NULL) { - if (last == NULL) { - environ = ev; - } else { - last->ev_next = ev; - ev->ev_prev = last; - } + + /* If we have a new value, use it */ + if (flags & EV_VOLATILE) { + ev->ev_value = strdup(value); + ev->ev_flags |= EV_DYNAMIC; + } else { + ev->ev_value = (char *)value; + ev->ev_flags |= flags & EV_DYNAMIC; } - } - - /* If we have a new value, use it */ - if (flags & EV_VOLATILE) { - ev->ev_value = strdup(value); - ev->ev_flags |= EV_DYNAMIC; - } else { - ev->ev_value = (char *)value; - ev->ev_flags |= flags & EV_DYNAMIC; - } - - return(0); + + return (0); } /* coverity[ -tainted_string_return_content ] */ char * getenv(const char *name) { - struct env_var *ev; - - /* Set but no value gives empty string */ - if ((ev = env_getenv(name)) != NULL) { - if (ev->ev_value != NULL) - return(ev->ev_value); - return(""); - } - return(NULL); + struct env_var *ev; + + /* Set but no value gives empty string */ + if ((ev = env_getenv(name)) != NULL) { + if (ev->ev_value != NULL) + return (ev->ev_value); + return (""); + } + return (NULL); } int setenv(const char *name, const char *value, int overwrite) { - /* No guarantees about state, always assume volatile */ - if (overwrite || (env_getenv(name) == NULL)) - return(env_setenv(name, EV_VOLATILE, value, NULL, NULL)); - return(0); + /* No guarantees about state, always assume volatile */ + if (overwrite || (env_getenv(name) == NULL)) + return (env_setenv(name, EV_VOLATILE, value, NULL, NULL)); + return (0); } int putenv(char *string) { - char *value, *copy; - int result; - - copy = strdup(string); - if ((value = strchr(copy, '=')) != NULL) - *(value++) = 0; - result = setenv(copy, value, 1); - free(copy); - return(result); + char *value, *copy; + int result; + + copy = strdup(string); + if ((value = strchr(copy, '=')) != NULL) + *(value++) = 0; + result = setenv(copy, value, 1); + free(copy); + return (result); } int unsetenv(const char *name) { - struct env_var *ev; - int err; - - err = 0; - if ((ev = env_getenv(name)) == NULL) { - err = ENOENT; - } else { - if (ev->ev_unsethook != NULL) - err = ev->ev_unsethook(ev); - if (err == 0) { - env_discard(ev); + struct env_var *ev; + int err; + + err = 0; + if ((ev = env_getenv(name)) == NULL) { + err = ENOENT; + } else { + if (ev->ev_unsethook != NULL) + err = ev->ev_unsethook(ev); + if (err == 0) { + env_discard(ev); + } } - } - return(err); + return (err); } static void env_discard(struct env_var *ev) { - if (ev->ev_prev) - ev->ev_prev->ev_next = ev->ev_next; - if (ev->ev_next) - ev->ev_next->ev_prev = ev->ev_prev; - if (environ == ev) - environ = ev->ev_next; - free(ev->ev_name); - if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0) - free(ev->ev_value); - free(ev); + if (ev->ev_prev) + ev->ev_prev->ev_next = ev->ev_next; + if (ev->ev_next) + ev->ev_next->ev_prev = ev->ev_prev; + if (environ == ev) + environ = ev->ev_next; + free(ev->ev_name); + if (ev->ev_value != NULL && (ev->ev_flags & EV_DYNAMIC) != 0) + free(ev->ev_value); + free(ev); } int env_noset(struct env_var *ev __unused, int flags __unused, const void *value __unused) { - return(EPERM); + return (EPERM); } int env_nounset(struct env_var *ev __unused) { - return(EPERM); + return (EPERM); } From nobody Fri Oct 8 06:10:57 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2443E12D3BC7; Fri, 8 Oct 2021 06:11: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 4HQd9S1qRhz3LQK; Fri, 8 Oct 2021 06:11: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 7C6C022004; Fri, 8 Oct 2021 06:10: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 1986AvXr007403; Fri, 8 Oct 2021 06:10:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Av08007402; Fri, 8 Oct 2021 06:10:57 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:57 GMT Message-Id: <202110080610.1986Av08007402@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 052051e2ea10 - stable/12 - loader: zfs reader does not need BOOT2 bits List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 052051e2ea10099ceab6033fedb7a58db5ce2439 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=052051e2ea10099ceab6033fedb7a58db5ce2439 commit 052051e2ea10099ceab6033fedb7a58db5ce2439 Author: Toomas Soome AuthorDate: 2020-07-02 07:15:48 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 loader: zfs reader does not need BOOT2 bits After switching zfsloader to use full libsa, we do not need spa_get_primary() and spa_get_primary_vdev() any more. (cherry picked from commit 771f100cebd8ada2bd764574386a71b5a5067f45) --- stand/libsa/zfs/zfsimpl.c | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index cc35f3d06f0e..8f299a0a3baf 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -1332,34 +1332,6 @@ spa_find_by_name(const char *name) return (NULL); } -#ifdef BOOT2 -static spa_t * -spa_get_primary(void) -{ - - return (STAILQ_FIRST(&zfs_pools)); -} - -static vdev_t * -spa_get_primary_vdev(const spa_t *spa) -{ - vdev_t *vdev; - vdev_t *kid; - - if (spa == NULL) - spa = spa_get_primary(); - if (spa == NULL) - return (NULL); - vdev = spa->spa_root_vdev; - if (vdev == NULL) - return (NULL); - for (kid = STAILQ_FIRST(&vdev->v_children); kid != NULL; - kid = STAILQ_FIRST(&vdev->v_children)) - vdev = kid; - return (vdev); -} -#endif - static spa_t * spa_create(uint64_t guid, const char *name) { From nobody Fri Oct 8 06:10:58 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1D2DC12D3ADC; Fri, 8 Oct 2021 06:11: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 4HQd9S1sWJz3LTj; Fri, 8 Oct 2021 06:11: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 AC10821BF5; Fri, 8 Oct 2021 06:10: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 1986AwoV007427; Fri, 8 Oct 2021 06:10:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986Aw0Q007426; Fri, 8 Oct 2021 06:10:58 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:10:58 GMT Message-Id: <202110080610.1986Aw0Q007426@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1f4366669ce1 - stable/12 - loader: setting vdev size based on label asize is not working List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1f4366669ce1e6e9a750a90ff35a639e770a7521 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1f4366669ce1e6e9a750a90ff35a639e770a7521 commit 1f4366669ce1e6e9a750a90ff35a639e770a7521 Author: Toomas Soome AuthorDate: 2020-07-09 13:19:00 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 loader: setting vdev size based on label asize is not working Because we need to read asize from vdev_tree. We also need to consider different vdev type difference. (cherry picked from commit 1a4b982e1e22dc0bbcddbff082ee16abb2874871) --- stand/libsa/zfs/zfsimpl.c | 58 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 8f299a0a3baf..b8b06fd862d1 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -1582,6 +1582,57 @@ vdev_label_read(vdev_t *vd, int l, void *buf, uint64_t offset, return (vdev_read_phys(vd, &bp, buf, off, size)); } +static uint64_t +vdev_get_label_asize(nvlist_t *nvl) +{ + nvlist_t *vdevs; + uint64_t asize; + const char *type; + int len; + + asize = 0; + /* Get vdev tree */ + if (nvlist_find(nvl, ZPOOL_CONFIG_VDEV_TREE, DATA_TYPE_NVLIST, + NULL, &vdevs, NULL) != 0) + return (asize); + + /* + * Get vdev type. We will calculate asize for raidz, mirror and disk. + * For raidz, the asize is raw size of all children. + */ + if (nvlist_find(vdevs, ZPOOL_CONFIG_TYPE, DATA_TYPE_STRING, + NULL, &type, &len) != 0) + goto done; + + if (memcmp(type, VDEV_TYPE_MIRROR, len) != 0 && + memcmp(type, VDEV_TYPE_DISK, len) != 0 && + memcmp(type, VDEV_TYPE_RAIDZ, len) != 0) + goto done; + + if (nvlist_find(vdevs, ZPOOL_CONFIG_ASIZE, DATA_TYPE_UINT64, + NULL, &asize, NULL) != 0) + goto done; + + if (memcmp(type, VDEV_TYPE_RAIDZ, len) == 0) { + nvlist_t *kids; + int nkids; + + if (nvlist_find(vdevs, ZPOOL_CONFIG_CHILDREN, + DATA_TYPE_NVLIST_ARRAY, &nkids, &kids, NULL) != 0) { + asize = 0; + goto done; + } + + asize /= nkids; + nvlist_destroy(kids); + } + + asize += VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE; +done: + nvlist_destroy(vdevs); + return (asize); +} + static nvlist_t * vdev_label_read_config(vdev_t *vd, uint64_t txg) { @@ -1627,10 +1678,9 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg) * Use asize from pool config. We need this * because we can get bad value from BIOS. */ - if (nvlist_find(nvl, ZPOOL_CONFIG_ASIZE, - DATA_TYPE_UINT64, NULL, &asize, NULL) == 0) { - vd->v_psize = asize + - VDEV_LABEL_START_SIZE + VDEV_LABEL_END_SIZE; + asize = vdev_get_label_asize(nvl); + if (asize != 0) { + vd->v_psize = asize; } } nvlist_destroy(tmp); From nobody Fri Oct 8 06:11:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 99F5B12D3CC7; Fri, 8 Oct 2021 06:11: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 4HQd9V63gnz3LXX; Fri, 8 Oct 2021 06:11: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 1BC1221FD5; Fri, 8 Oct 2021 06:11: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 1986B0EI007494; Fri, 8 Oct 2021 06:11:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986B07M007493; Fri, 8 Oct 2021 06:11:00 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:00 GMT Message-Id: <202110080611.1986B07M007493@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 2069dce2411d - stable/12 - libsa: make env_discard() public List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 2069dce2411d874852c7566f5adefdb1f95795dc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=2069dce2411d874852c7566f5adefdb1f95795dc commit 2069dce2411d874852c7566f5adefdb1f95795dc Author: Toomas Soome AuthorDate: 2020-08-19 15:27:09 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:26 +0000 libsa: make env_discard() public Allow env_discard() to be used outside environment.c (cherry picked from commit 588f0a1e29a341878ad938bb9c239431cac107ae) --- stand/libsa/environment.c | 4 +--- stand/libsa/stand.h | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/stand/libsa/environment.c b/stand/libsa/environment.c index 167dcdb26bfa..94e4a207908b 100644 --- a/stand/libsa/environment.c +++ b/stand/libsa/environment.c @@ -37,8 +37,6 @@ __FBSDID("$FreeBSD$"); #include -static void env_discard(struct env_var *ev); - struct env_var *environ = NULL; /* @@ -194,7 +192,7 @@ unsetenv(const char *name) return (err); } -static void +void env_discard(struct env_var *ev) { if (ev->ev_prev) diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h index 7f0967fb5079..c80edba48fa1 100644 --- a/stand/libsa/stand.h +++ b/stand/libsa/stand.h @@ -338,6 +338,7 @@ extern struct env_var *env_getenv(const char *name); extern int env_setenv(const char *name, int flags, const void *value, ev_sethook_t sethook, ev_unsethook_t unsethook); +extern void env_discard(struct env_var *); extern char *getenv(const char *name); extern int setenv(const char *name, const char *value, int overwrite); From nobody Fri Oct 8 06:11:01 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0AF5F12D3DA3; Fri, 8 Oct 2021 06:11: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 4HQd9Z5L2vz3LXp; Fri, 8 Oct 2021 06:11: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 405E121BF7; Fri, 8 Oct 2021 06:11: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 1986B12t007518; Fri, 8 Oct 2021 06:11:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986B1mD007517; Fri, 8 Oct 2021 06:11:01 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:01 GMT Message-Id: <202110080611.1986B1mD007517@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 87512200a5b2 - stable/12 - libsa: remove leftover whitespace List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 87512200a5b23eee78e453e6318f1aef8b5e332e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=87512200a5b23eee78e453e6318f1aef8b5e332e commit 87512200a5b23eee78e453e6318f1aef8b5e332e Author: Toomas Soome AuthorDate: 2020-08-19 20:41:22 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 libsa: remove leftover whitespace Tiny cleanup, no functional changes. (cherry picked from commit 5949d13fabc43a728b2122277f44a6366e3b9270) --- stand/libsa/environment.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/libsa/environment.c b/stand/libsa/environment.c index 94e4a207908b..53b6a75cc020 100644 --- a/stand/libsa/environment.c +++ b/stand/libsa/environment.c @@ -98,7 +98,7 @@ env_setenv(const char *name, int flags, const void *value, ev->ev_prev = NULL; ev->ev_next = NULL; /* Search for the record to insert before */ - for (last = NULL, curr = environ; curr != NULL; + for (last = NULL, curr = environ; curr != NULL; last = curr, curr = curr->ev_next) { if (strcmp(ev->ev_name, curr->ev_name) < 0) { From nobody Fri Oct 8 06:11:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AE78712D4035; Fri, 8 Oct 2021 06:11: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 4HQd9c53sMz3LVc; Fri, 8 Oct 2021 06:11: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 6C63E21C45; Fri, 8 Oct 2021 06:11: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 1986B4cc007566; Fri, 8 Oct 2021 06:11:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986B4Hm007565; Fri, 8 Oct 2021 06:11:04 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:04 GMT Message-Id: <202110080611.1986B4Hm007565@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 4d997b340dd7 - stable/12 - When we have a command returned by zfs_nextboot() that is longer than command in the loader.conf, the latter needs to be nul terminated, otherwise garbage trailer left from zfs_nextboot() will be passed to parse_cmd() together with loader.conf command. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4d997b340dd7ee561b2f44bbcef3c532108640e6 Auto-Submitted: auto-generated X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4d997b340dd7ee561b2f44bbcef3c532108640e6 commit 4d997b340dd7ee561b2f44bbcef3c532108640e6 Author: Gleb Smirnoff AuthorDate: 2020-08-20 20:31:47 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 When we have a command returned by zfs_nextboot() that is longer than command in the loader.conf, the latter needs to be nul terminated, otherwise garbage trailer left from zfs_nextboot() will be passed to parse_cmd() together with loader.conf command. While here, reset cmd to empty string if read() returns error. (cherry picked from commit c7dd069c70d465298f14553d981bfe5e2ffd0459) --- stand/i386/zfsboot/zfsboot.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index e387d4a47c9d..81a6d74abc7b 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -248,7 +248,12 @@ main(void) fd = open(PATH_DOTCONFIG, O_RDONLY); if (fd != -1) { - read(fd, cmd, sizeof (cmd)); + ssize_t cmdlen; + + if ((cmdlen = read(fd, cmd, sizeof(cmd))) > 0) + cmd[cmdlen] = '\0'; + else + *cmd = '\0'; close(fd); } From nobody Fri Oct 8 06:11:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 10EA612D3F5C; Fri, 8 Oct 2021 06:11: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 4HQd9f0DW3z3LY2; Fri, 8 Oct 2021 06:11: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 3F50621EE0; Fri, 8 Oct 2021 06: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 1986B3i8007542; Fri, 8 Oct 2021 06: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 1986B3CP007541; Fri, 8 Oct 2021 06:11:03 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:03 GMT Message-Id: <202110080611.1986B3CP007541@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 53fdb802567d - stable/12 - libsa: smbios: Parse the chassis type and export it as smbios.chassis.type List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 53fdb802567df401b333fa0aa898908ccabaca93 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=53fdb802567df401b333fa0aa898908ccabaca93 commit 53fdb802567df401b333fa0aa898908ccabaca93 Author: Emmanuel Vadot AuthorDate: 2020-08-20 12:50:49 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 libsa: smbios: Parse the chassis type and export it as smbios.chassis.type It can be useful to know what type of machine we are running on for desktop related thing. It also allow us to support all the DMI variable that linux driver can fetch. (cherry picked from commit 9060f2c3920dde41226cf52b925bc949815c7f01) --- stand/libsa/smbios.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/stand/libsa/smbios.c b/stand/libsa/smbios.c index c621114d9107..5582a2f3ce90 100644 --- a/stand/libsa/smbios.c +++ b/stand/libsa/smbios.c @@ -209,6 +209,90 @@ smbios_setuuid(const char *name, const caddr_t addr, const int ver) #endif +static const char * +smbios_parse_chassis_type(caddr_t addr) +{ + int type; + + type = SMBIOS_GET8(addr, 0x5); + switch (type) { + case 0x1: + return ("Other"); + case 0x2: + return ("Unknown"); + case 0x3: + return ("Desktop"); + case 0x4: + return ("Low Profile Desktop"); + case 0x5: + return ("Pizza Box"); + case 0x6: + return ("Mini Tower"); + case 0x7: + return ("Tower"); + case 0x8: + return ("Portable"); + case 0x9: + return ("Laptop"); + case 0xA: + return ("Notebook"); + case 0xB: + return ("Hand Held"); + case 0xC: + return ("Docking Station"); + case 0xD: + return ("All in One"); + case 0xE: + return ("Sub Notebook"); + case 0xF: + return ("Lunch Box"); + case 0x10: + return ("Space-saving"); + case 0x11: + return ("Main Server Chassis"); + case 0x12: + return ("Expansion Chassis"); + case 0x13: + return ("SubChassis"); + case 0x14: + return ("Bus Expansion Chassis"); + case 0x15: + return ("Peripheral Chassis"); + case 0x16: + return ("RAID Chassis"); + case 0x17: + return ("Rack Mount Chassis"); + case 0x18: + return ("Sealed-case PC"); + case 0x19: + return ("Multi-system chassis"); + case 0x1A: + return ("Compact PCI"); + case 0x1B: + return ("Advanced TCA"); + case 0x1C: + return ("Blade"); + case 0x1D: + return ("Blade Enclosure"); + case 0x1E: + return ("Tablet"); + case 0x1F: + return ("Convertible"); + case 0x20: + return ("Detachable"); + case 0x21: + return ("IoT Gateway"); + case 0x22: + return ("Embedded PC"); + case 0x23: + return ("Mini PC"); + case 0x24: + return ("Stick PC"); + } + + return ("Undefined"); +} + static caddr_t smbios_parse_table(const caddr_t addr) { @@ -251,6 +335,7 @@ smbios_parse_table(const caddr_t addr) case 3: /* 3.3.4 System Enclosure or Chassis (Type 3) */ smbios_setenv("smbios.chassis.maker", addr, 0x04); + setenv("smbios.chassis.type", smbios_parse_chassis_type(addr), 1); smbios_setenv("smbios.chassis.version", addr, 0x06); #ifdef SMBIOS_SERIAL_NUMBERS smbios_setenv("smbios.chassis.serial", addr, 0x07); From nobody Fri Oct 8 06:11:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A26F312D3E41; Fri, 8 Oct 2021 06:11: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 4HQd9g0M96z3LSC; Fri, 8 Oct 2021 06:11: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 9851E22008; Fri, 8 Oct 2021 06: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 1986B5Ql007596; Fri, 8 Oct 2021 06: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 1986B5Gq007595; Fri, 8 Oct 2021 06:11:05 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:05 GMT Message-Id: <202110080611.1986B5Gq007595@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 091a037cb69c - stable/12 - libsa: only skein_block.c is using SKEIN_LOOP List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 091a037cb69c0f234edb2333875f44b35f1adf1d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=091a037cb69c0f234edb2333875f44b35f1adf1d commit 091a037cb69c0f234edb2333875f44b35f1adf1d Author: Toomas Soome AuthorDate: 2020-08-26 17:52:32 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 libsa: only skein_block.c is using SKEIN_LOOP Only use SKEIN_LOOP while compiling skein_block.c (cherry picked from commit 0fec8f03cf996be5d4c9d770a7c47aae5e5aaee8) --- stand/libsa/zfs/Makefile.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stand/libsa/zfs/Makefile.inc b/stand/libsa/zfs/Makefile.inc index 5e4e2d455c83..4212e2b40b93 100644 --- a/stand/libsa/zfs/Makefile.inc +++ b/stand/libsa/zfs/Makefile.inc @@ -2,8 +2,6 @@ .PATH: ${ZFSSRC} SRCS+= zfs.c nvlist.c skein.c skein_block.c list.c -# Do not unroll skein loops, reduce code size -CFLAGS+= -DSKEIN_LOOP=111 .PATH: ${SYSDIR}/crypto/skein .PATH: ${SYSDIR}/cddl/contrib/opensolaris/uts/common/os @@ -12,6 +10,8 @@ CFLAGS+= -I${SYSDIR}/cddl/boot/zfs CFLAGS+= -I${SYSDIR}/cddl/contrib/opensolaris/uts/common CFLAGS+= -I${SYSDIR}/crypto/skein +# Do not unroll skein loops, reduce code size +CFLAGS.skein_block.c+= -DSKEIN_LOOP=111 CFLAGS.zfs.c+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/lz4 CFLAGS+= -Wformat -Wall From nobody Fri Oct 8 06:11:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 82CAB12D3DD3; Fri, 8 Oct 2021 06: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 4HQd9g6Dhsz3Lb5; Fri, 8 Oct 2021 06:11: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 C46A6217EF; Fri, 8 Oct 2021 06:11: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 1986B6bU007620; Fri, 8 Oct 2021 06:11:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986B6m2007619; Fri, 8 Oct 2021 06:11:06 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:06 GMT Message-Id: <202110080611.1986B6m2007619@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 087f336455ec - stable/12 - Declare time() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 087f336455ec4aeacc19415cb779fc7b04fa36fc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=087f336455ec4aeacc19415cb779fc7b04fa36fc commit 087f336455ec4aeacc19415cb779fc7b04fa36fc Author: Warner Losh AuthorDate: 2020-08-28 05:40:02 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 Declare time() Time is used and was accidentally brought in through header pollution. Declare it in stand.h directly instead. (cherry picked from commit b9c5b432637c04d4a803170b2fab7c9df2ef787b) --- stand/libsa/stand.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stand/libsa/stand.h b/stand/libsa/stand.h index c80edba48fa1..a7bef4184e3a 100644 --- a/stand/libsa/stand.h +++ b/stand/libsa/stand.h @@ -409,6 +409,11 @@ extern struct fs_ops *file_system[]; extern struct fs_ops *exclusive_file_system; extern struct devsw *devsw[]; +/* + * Time routines + */ +time_t time(time_t *); + /* * Expose byteorder(3) functions. */ From nobody Fri Oct 8 06:11:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8E25812D4040; Fri, 8 Oct 2021 06: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 4HQd9g6LQsz3LVm; Fri, 8 Oct 2021 06:11: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 F3DF821FD9; Fri, 8 Oct 2021 06:11: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 1986B7wQ007644; Fri, 8 Oct 2021 06:11:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986B7UZ007643; Fri, 8 Oct 2021 06:11:07 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:07 GMT Message-Id: <202110080611.1986B7UZ007643@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 19a32560ab25 - stable/12 - Create CFLAGS_EARLY.file for boot loader. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 19a32560ab25624d9a31c674d07edb2e6b8f8992 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=19a32560ab25624d9a31c674d07edb2e6b8f8992 commit 19a32560ab25624d9a31c674d07edb2e6b8f8992 Author: Warner Losh AuthorDate: 2020-08-28 17:36:14 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 Create CFLAGS_EARLY.file for boot loader. Some external code requires a specific set of include paths to work properly since it emulates the typical environment the code is used in. Enable this by creating a CFLAGS_EARLY.file variable that can be used to build this stack. Otherwise the include stack we build for stand programs may get in the way. Code that uses this feature has to tolerate the normal stack of inclues being last on the list (and presumably unused), though. Generally, it it should only be used for the specific include directories. Defines and that sort of thing should be done in the normal CFLAGS variable. There is a global CFLAGS_EARY hook as well for everything in a Makefile. (cherry picked from commit f9553770c03e82abcae07397025797ef346fbdab) --- stand/defs.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stand/defs.mk b/stand/defs.mk index 6fba2051301b..431b629939d8 100644 --- a/stand/defs.mk +++ b/stand/defs.mk @@ -63,6 +63,11 @@ LIBSA32= ${BOOTOBJ}/libsa32/libsa32.a # Standard options: CFLAGS+= -nostdinc +# Allow CFLAGS_EARLY.file/target so that code that needs specific stack +# of include paths can set them up before our include paths. Normally +# the only thing that should be there are -I directives, and as few of +# those as possible. +CFLAGS+= ${CFLAGS_EARLY} ${CFLAGS_EARLY.${.IMPSRC:T}} ${CFLAGS_EARLY.${.TARGET:T}} .if ${MACHINE_ARCH} == "amd64" && ${DO32:U0} == 1 CFLAGS+= -I${BOOTOBJ}/libsa32 .else From nobody Fri Oct 8 06:11:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3D04712D4215; Fri, 8 Oct 2021 06:11: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 4HQd9m2q7Lz3LSZ; Fri, 8 Oct 2021 06: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 1A58F21EE3; Fri, 8 Oct 2021 06:11: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 1986B9b8007668; Fri, 8 Oct 2021 06:11:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986B8j7007667; Fri, 8 Oct 2021 06:11:08 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:08 GMT Message-Id: <202110080611.1986B8j7007667@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 97318fde948f - stable/12 - loader: zfs_probe_dev should pick first matching zfs pool List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 97318fde948f1e543e7df2c1034b84cd96dafcf1 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=97318fde948f1e543e7df2c1034b84cd96dafcf1 commit 97318fde948f1e543e7df2c1034b84cd96dafcf1 Author: Toomas Soome AuthorDate: 2020-09-23 08:22:14 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 loader: zfs_probe_dev should pick first matching zfs pool During devswitch probe, we pick boot pool based on boot disk, if the boot disk happens to have multiple pools in freebsd-zfs partitions, the current code does pick last pool from boot disk as boot pool. While there is no way at that stage to test, the more logical approach would be to pick first matching pool. This patch is assuming we do pass pool guid pointer with guid value 0, this will help us to determine, if the guid value is already set or not. The general suggestion would be not to share disk between different pools. (cherry picked from commit 867ae3c38d1aa97300bd35f457037b3f1a0a103f) --- stand/efi/libefi/efizfs.c | 3 ++- stand/libsa/zfs/zfs.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/stand/efi/libefi/efizfs.c b/stand/efi/libefi/efizfs.c index aedb9c2294cd..7f3986d47140 100644 --- a/stand/efi/libefi/efizfs.c +++ b/stand/efi/libefi/efizfs.c @@ -99,7 +99,7 @@ efi_zfs_probe(void) pdinfo_list_t *hdi; pdinfo_t *hd, *pd = NULL; char devname[SPECNAMELEN + 1]; - uint64_t guid; + uint64_t guid; hdi = efiblk_get_pdinfo_list(&efipart_hddev); STAILQ_INIT(&zfsinfo); @@ -114,6 +114,7 @@ efi_zfs_probe(void) STAILQ_FOREACH(pd, &hd->pd_part, pd_link) { snprintf(devname, sizeof(devname), "%s%dp%d:", efipart_hddev.dv_name, hd->pd_unit, pd->pd_unit); + guid = 0; if (zfs_probe_dev(devname, &guid) == 0) { insert_zfs(pd->pd_handle, guid); if (pd->pd_handle == boot_img->DeviceHandle) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index fd7b6cbfdeba..edf74170491b 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -745,7 +745,8 @@ zfs_probe(int fd, uint64_t *pool_guid) spa = NULL; ret = vdev_probe(vdev_read, (void *)(uintptr_t)fd, &spa); if (ret == 0 && pool_guid != NULL) - *pool_guid = spa->spa_guid; + if (*pool_guid == 0) + *pool_guid = spa->spa_guid; return (ret); } From nobody Fri Oct 8 06:11:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 48CF312D43AD; Fri, 8 Oct 2021 06:11: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 4HQd9p3FZwz3Lbd; Fri, 8 Oct 2021 06:11: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 828A2217F2; Fri, 8 Oct 2021 06:11: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 1986BCxH007746; Fri, 8 Oct 2021 06:11:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BCbD007745; Fri, 8 Oct 2021 06:11:12 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:12 GMT Message-Id: <202110080611.1986BCbD007745@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 438448dd9fb5 - stable/12 - Use adrp in the arm64 efi loader List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 438448dd9fb50720cc289b63892c12b6c8c34e5f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=438448dd9fb50720cc289b63892c12b6c8c34e5f commit 438448dd9fb50720cc289b63892c12b6c8c34e5f Author: Andrew Turner AuthorDate: 2020-10-13 16:51:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 Use adrp in the arm64 efi loader On startup the arm64 efi loaders need to know PC-relative addresses. Previously we used the adr instruction to find this address, however this instruction is limited to +/- 1MiB. Switch to adrp to find the 4k page the address is within and an add to set the bottom 12 bits. This lets us address +/- 4GiB which should be large enough for now. (cherry picked from commit b9aa4537b2155a0b0bb419ff05b8da206c02bfbd) --- stand/efi/loader/arch/arm64/start.S | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/stand/efi/loader/arch/arm64/start.S b/stand/efi/loader/arch/arm64/start.S index bddc2d088a64..675d4e153f36 100644 --- a/stand/efi/loader/arch/arm64/start.S +++ b/stand/efi/loader/arch/arm64/start.S @@ -142,8 +142,10 @@ _start: /* Save the boot params to the stack */ stp x0, x1, [sp, #-16]! - adr x0, __bss_start - adr x1, __bss_end + adrp x0, __bss_start + add x0, x0, :lo12:__bss_start + adrp x1, __bss_end + add x1, x1, :lo12:__bss_end b 2f @@ -153,8 +155,10 @@ _start: cmp x0, x1 b.lo 1b - adr x0, ImageBase - adr x1, _DYNAMIC + adrp x0, ImageBase + add x0, x0, :lo12:ImageBase + adrp x1, _DYNAMIC + add x1, x1, :lo12:_DYNAMIC bl self_reloc @@ -165,7 +169,8 @@ _start: * Load the stack to use. The default stack may be too small for * the lua loader. */ - adr x2, initstack_end + adrp x2, initstack_end + add x2, x2, :lo12:initstack_end mov sp, x2 #endif From nobody Fri Oct 8 06:11:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4CF8312D44AC; Fri, 8 Oct 2021 06:11: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 4HQd9p12bRz3LYn; Fri, 8 Oct 2021 06:11: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 4E11721DAD; Fri, 8 Oct 2021 06:11: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 1986BB0h007722; Fri, 8 Oct 2021 06:11:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BBuM007721; Fri, 8 Oct 2021 06:11:11 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:11 GMT Message-Id: <202110080611.1986BBuM007721@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1432cd3a8f6f - stable/12 - loader: edd_device_path_v3 is too small List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1432cd3a8f6f2ed2584016b19edb86655293bd96 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1432cd3a8f6f2ed2584016b19edb86655293bd96 commit 1432cd3a8f6f2ed2584016b19edb86655293bd96 Author: Toomas Soome AuthorDate: 2020-10-12 09:34:50 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 loader: edd_device_path_v3 is too small The EDD v3[1], see table 13, page 33, does define device path as double qword, that is, 16 bytes, we have only qword. Also remove edd_device_path_v4 and edd_params_v4 because those are not used, and there is no size difference in v3 versus v4. [1] http://www.t13.org/documents/UploadedDocuments/docs2004/d1572r3-EDD3.pdf (cherry picked from commit c50f409c15ef818baf5ee49edd52f44b9d809dce) --- stand/i386/common/edd.h | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/stand/i386/common/edd.h b/stand/i386/common/edd.h index 9739c45b0f38..57607be0ebf2 100644 --- a/stand/i386/common/edd.h +++ b/stand/i386/common/edd.h @@ -71,7 +71,7 @@ struct edd_device_path_v3 { char host_bus[4]; char interface[8]; uint64_t interface_path; - uint64_t device_path; + uint64_t device_path[2]; uint8_t reserved2[1]; uint8_t checksum; } __packed; @@ -81,23 +81,6 @@ struct edd_params_v3 { struct edd_device_path_v3 device_path; } __packed; -struct edd_device_path_v4 { - uint16_t key; - uint8_t len; - uint8_t reserved[3]; - char host_bus[4]; - char interface[8]; - uint64_t interface_path; - uint64_t device_path[2]; - uint8_t reserved2[1]; - uint8_t checksum; -} __packed; - -struct edd_params_v4 { - struct edd_params params; - struct edd_device_path_v4 device_path; -} __packed; - #define EDD_FLAGS_DMA_BOUNDARY_HANDLING 0x0001 #define EDD_FLAGS_REMOVABLE_MEDIA 0x0002 #define EDD_FLAGS_WRITE_VERIFY 0x0004 From nobody Fri Oct 8 06:11:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 53F5612D4328; Fri, 8 Oct 2021 06:11: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 4HQd9q3XFkz3LhG; Fri, 8 Oct 2021 06:11: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 9C66A21C47; Fri, 8 Oct 2021 06:11: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 1986BD25007770; Fri, 8 Oct 2021 06:11:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BD0B007769; Fri, 8 Oct 2021 06:11:13 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:13 GMT Message-Id: <202110080611.1986BD0B007769@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f6b47ffc1040 - stable/12 - loader: revert r342161 and r342151 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f6b47ffc104053a16d60fdd2b7c81eb22e1e19de Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f6b47ffc104053a16d60fdd2b7c81eb22e1e19de commit f6b47ffc104053a16d60fdd2b7c81eb22e1e19de Author: Toomas Soome AuthorDate: 2020-10-22 20:02:02 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 loader: revert r342161 and r342151 We are using asize property from pool label and we do not depend on partition data to find last two pool labels and to validate LBA for disk IO. This does allow us to re-enable support for partitionless disk setups. (cherry picked from commit e416eecbb9f7a5275d1d059ae720adc24af4d337) --- stand/libsa/zfs/zfs.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index edf74170491b..f74442138537 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -38,7 +38,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -844,7 +843,6 @@ zfs_nextboot(void *vdev, char *buf, size_t size) int zfs_probe_dev(const char *devname, uint64_t *pool_guid) { - struct disk_devdesc *dev; struct ptable *table; struct zfs_probe_args pa; uint64_t mediasz; @@ -855,22 +853,10 @@ zfs_probe_dev(const char *devname, uint64_t *pool_guid) pa.fd = open(devname, O_RDWR); if (pa.fd == -1) return (ENXIO); - /* - * We will not probe the whole disk, we can not boot from such - * disks and some systems will misreport the disk sizes and will - * hang while accessing the disk. - */ - if (archsw.arch_getdev((void **)&dev, devname, NULL) == 0) { - int partition = dev->d_partition; - int slice = dev->d_slice; - - free(dev); - if (partition != D_PARTNONE && slice != D_SLICENONE) { - ret = zfs_probe(pa.fd, pool_guid); - if (ret == 0) - return (0); - } - } + /* Probe the whole disk */ + ret = zfs_probe(pa.fd, pool_guid); + if (ret == 0) + return (0); /* Probe each partition */ ret = ioctl(pa.fd, DIOCGMEDIASIZE, &mediasz); From nobody Fri Oct 8 06:11:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4B89512D423D; Fri, 8 Oct 2021 06:11: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 4HQd9p0TGXz3LW3; Fri, 8 Oct 2021 06:11: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 4437921BFA; Fri, 8 Oct 2021 06:11: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 1986BAMS007692; Fri, 8 Oct 2021 06:11:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BAN3007691; Fri, 8 Oct 2021 06:11:10 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:10 GMT Message-Id: <202110080611.1986BAN3007691@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 4025776a622a - stable/12 - Implement some time variables from kernel List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 4025776a622a881a92f3e51ba9995a3c38bd3c3e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4025776a622a881a92f3e51ba9995a3c38bd3c3e commit 4025776a622a881a92f3e51ba9995a3c38bd3c3e Author: Warner Losh AuthorDate: 2020-09-29 16:29:50 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 Implement some time variables from kernel OpenZFS will start using some of the kernel timekeeping bits shortly. This implements the bare minimum of that which currently is just the time_seconds variable. (cherry picked from commit 6ab1ffcbfeaab180691d7c1b5b0003f224442fed) --- stand/libsa/Makefile | 3 +++ stand/libsa/time.c | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/stand/libsa/Makefile b/stand/libsa/Makefile index 63dbc6e7414c..e70a5ffb7a82 100644 --- a/stand/libsa/Makefile +++ b/stand/libsa/Makefile @@ -166,6 +166,9 @@ SRCS+= pkgfs.c SRCS+= nandfs.c .endif +# Time support +SRCS+= time.c + # kernel ufs support .PATH: ${SRCTOP}/sys/ufs/ffs SRCS+=ffs_subr.c ffs_tables.c diff --git a/stand/libsa/time.c b/stand/libsa/time.c new file mode 100644 index 000000000000..c34cbfc92af1 --- /dev/null +++ b/stand/libsa/time.c @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2020 M. Warner Losh + * + * 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. + */ + +/* + * The parts of kern_tc.c and other timekeeping bits of the kernel. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +volatile time_t time_second = 1; From nobody Fri Oct 8 06:11:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 85ABA12D4530; Fri, 8 Oct 2021 06:11: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 4HQd9v3d62z3LlH; Fri, 8 Oct 2021 06:11: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 C208E21BFD; Fri, 8 Oct 2021 06:11: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 1986BE3a007794; Fri, 8 Oct 2021 06:11:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BEO8007793; Fri, 8 Oct 2021 06:11:14 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:14 GMT Message-Id: <202110080611.1986BEO8007793@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 52abe2166d06 - stable/12 - loader: cstyle cleanup of bootstrap.h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 52abe2166d06f34f105f843fe12ab6d51dd0ac23 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=52abe2166d06f34f105f843fe12ab6d51dd0ac23 commit 52abe2166d06f34f105f843fe12ab6d51dd0ac23 Author: Toomas Soome AuthorDate: 2020-11-08 09:35:41 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:27 +0000 loader: cstyle cleanup of bootstrap.h No functional changes intended. (cherry picked from commit 90b307a8975327b195e4549b9b0745bcc684f646) --- stand/common/bootstrap.h | 252 +++++++++++++++++++++++++---------------------- 1 file changed, 133 insertions(+), 119 deletions(-) diff --git a/stand/common/bootstrap.h b/stand/common/bootstrap.h index 809859c276b9..af71fcb78436 100644 --- a/stand/common/bootstrap.h +++ b/stand/common/bootstrap.h @@ -40,11 +40,11 @@ typedef int (bootblk_cmd_t)(int argc, char *argv[]); #define COMMAND_ERRBUFSZ (256) extern const char *command_errmsg; extern char command_errbuf[COMMAND_ERRBUFSZ]; -#define CMD_OK 0 -#define CMD_WARN 1 -#define CMD_ERROR 2 -#define CMD_CRIT 3 -#define CMD_FATAL 4 +#define CMD_OK 0 +#define CMD_WARN 1 +#define CMD_ERROR 2 +#define CMD_CRIT 3 +#define CMD_FATAL 4 /* interp.c */ void interact(void); @@ -52,9 +52,9 @@ void interp_emit_prompt(void); int interp_builtin_cmd(int argc, char *argv[]); /* Called by interp.c for interp_*.c embedded interpreters */ -int interp_include(const char *filename); /* Execute commands from filename */ -void interp_init(void); /* Initialize interpreater */ -int interp_run(const char *line); /* Run a single command */ +int interp_include(const char *); /* Execute commands from filename */ +void interp_init(void); /* Initialize interpreater */ +int interp_run(const char *); /* Run a single command */ /* interp_backslash.c */ char *backslash(const char *str); @@ -88,64 +88,70 @@ int bcache_strategy(void *devdata, int rw, daddr_t blk, size_t size, */ struct bcache_devdata { - int (*dv_strategy)(void *devdata, int rw, daddr_t blk, - size_t size, char *buf, size_t *rsize); - void *dv_devdata; - void *dv_cache; + int (*dv_strategy)(void *, int, daddr_t, size_t, char *, size_t *); + void *dv_devdata; + void *dv_cache; }; /* * Modular console support. */ -struct console +struct console { - const char *c_name; - const char *c_desc; - int c_flags; -#define C_PRESENTIN (1<<0) /* console can provide input */ -#define C_PRESENTOUT (1<<1) /* console can provide output */ -#define C_ACTIVEIN (1<<2) /* user wants input from console */ -#define C_ACTIVEOUT (1<<3) /* user wants output to console */ + const char *c_name; + const char *c_desc; + int c_flags; +#define C_PRESENTIN (1<<0) /* console can provide input */ +#define C_PRESENTOUT (1<<1) /* console can provide output */ +#define C_ACTIVEIN (1<<2) /* user wants input from console */ +#define C_ACTIVEOUT (1<<3) /* user wants output to console */ #define C_WIDEOUT (1<<4) /* c_out routine groks wide chars */ - void (* c_probe)(struct console *cp); /* set c_flags to match hardware */ - int (* c_init)(int arg); /* reinit XXX may need more args */ - void (* c_out)(int c); /* emit c */ - int (* c_in)(void); /* wait for and return input */ - int (* c_ready)(void); /* return nonzer if input waiting */ + + /* set c_flags to match hardware */ + void (* c_probe)(struct console *cp); + /* reinit XXX may need more args */ + int (* c_init)(int arg); + /* emit c */ + void (* c_out)(int c); + int (* c_in)(void); + /* wait for and return input */ + /* return nonzer if input waiting */ + int (* c_ready)(void); }; -extern struct console *consoles[]; -void cons_probe(void); +extern struct console *consoles[]; +void cons_probe(void); /* * Plug-and-play enumerator/configurator interface. */ -struct pnphandler +struct pnphandler { - const char *pp_name; /* handler/bus name */ - void (* pp_enumerate)(void); /* enumerate PnP devices, add to chain */ + const char *pp_name; /* handler/bus name */ + void (*pp_enumerate)(void); /* enumerate PnP devices, add to chain */ }; struct pnpident { - char *id_ident; /* ASCII identifier, actual format varies with bus/handler */ - STAILQ_ENTRY(pnpident) id_link; + /* ASCII identifier, actual format varies with bus/handler */ + char *id_ident; + STAILQ_ENTRY(pnpident) id_link; }; struct pnpinfo { - char *pi_desc; /* ASCII description, optional */ - int pi_revision; /* optional revision (or -1) if not supported */ - char *pi_module; /* module/args nominated to handle device */ - int pi_argc; /* module arguments */ - char **pi_argv; - struct pnphandler *pi_handler; /* handler which detected this device */ - STAILQ_HEAD(,pnpident) pi_ident; /* list of identifiers */ - STAILQ_ENTRY(pnpinfo) pi_link; + char *pi_desc; /* ASCII description, optional */ + int pi_revision; /* optional revision (or -1) if not supported */ + char *pi_module; /* module/args nominated to handle device */ + int pi_argc; /* module arguments */ + char **pi_argv; + struct pnphandler *pi_handler; /* handler which detected this device */ + STAILQ_HEAD(, pnpident) pi_ident; /* list of identifiers */ + STAILQ_ENTRY(pnpinfo) pi_link; }; STAILQ_HEAD(pnpinfo_stql, pnpinfo); -extern struct pnphandler *pnphandlers[]; /* provided by MD code */ +extern struct pnphandler *pnphandlers[]; /* provided by MD code */ void pnp_addident(struct pnpinfo *pi, char *ident); struct pnpinfo *pnp_allocinfo(void); @@ -158,7 +164,7 @@ char *pnp_eisaformat(uint8_t *data); * == 0 - Maybe ISA, search for read data port * > 0 - ISA in system, value is read data port address */ -extern int isapnp_readport; +extern int isapnp_readport; /* * Version information @@ -179,12 +185,12 @@ const char bootprog_interp[] = "$Interpreter:" interpstr * Metadata are allocated on our heap, and copied into kernel space * before executing the kernel. */ -struct file_metadata +struct file_metadata { - size_t md_size; - uint16_t md_type; - struct file_metadata *md_next; - char md_data[1]; /* data are immediately appended */ + size_t md_size; + uint16_t md_type; + struct file_metadata *md_next; + char md_data[1]; /* data are immediately appended */ }; struct preloaded_file; @@ -192,11 +198,11 @@ struct mod_depend; struct kernel_module { - char *m_name; /* module name */ - int m_version; /* module version */ -/* char *m_args;*/ /* arguments for the module */ - struct preloaded_file *m_fp; - struct kernel_module *m_next; + char *m_name; /* module name */ + int m_version; /* module version */ + /* char *m_args; */ /* arguments for the module */ + struct preloaded_file *m_fp; + struct kernel_module *m_next; }; /* @@ -210,47 +216,54 @@ struct kernel_module */ struct preloaded_file { - char *f_name; /* file name */ - char *f_type; /* verbose file type, eg 'ELF kernel', 'pnptable', etc. */ - char *f_args; /* arguments for the file */ - struct file_metadata *f_metadata; /* metadata that will be placed in the module directory */ - int f_loader; /* index of the loader that read the file */ - vm_offset_t f_addr; /* load address */ - size_t f_size; /* file size */ - struct kernel_module *f_modules; /* list of modules if any */ - struct preloaded_file *f_next; /* next file */ + char *f_name; /* file name */ + char *f_type; /* verbose file type, eg 'ELF kernel', 'pnptable', etc. */ + char *f_args; /* arguments for the file */ + /* metadata that will be placed in the module directory */ + struct file_metadata *f_metadata; + int f_loader; /* index of the loader that read the file */ + vm_offset_t f_addr; /* load address */ + size_t f_size; /* file size */ + struct kernel_module *f_modules; /* list of modules if any */ + struct preloaded_file *f_next; /* next file */ }; struct file_format { - /* Load function must return EFTYPE if it can't handle the module supplied */ - int (* l_load)(char *filename, uint64_t dest, struct preloaded_file **result); - /* Only a loader that will load a kernel (first module) should have an exec handler */ - int (* l_exec)(struct preloaded_file *mp); + /* + * Load function must return EFTYPE if it can't handle + * the module supplied + */ + int (*l_load)(char *, uint64_t, struct preloaded_file **); + /* + * Only a loader that will load a kernel (first module) + * should have an exec handler + */ + int (*l_exec)(struct preloaded_file *); }; -extern struct file_format *file_formats[]; /* supplied by consumer */ -extern struct preloaded_file *preloaded_files; +extern struct file_format *file_formats[]; /* supplied by consumer */ +extern struct preloaded_file *preloaded_files; -int mod_load(char *name, struct mod_depend *verinfo, int argc, char *argv[]); -int mod_loadkld(const char *name, int argc, char *argv[]); -void unload(void); +int mod_load(char *name, struct mod_depend *verinfo, int argc, char *argv[]); +int mod_loadkld(const char *name, int argc, char *argv[]); +void unload(void); struct preloaded_file *file_alloc(void); struct preloaded_file *file_findfile(const char *name, const char *type); struct file_metadata *file_findmetadata(struct preloaded_file *fp, int type); struct preloaded_file *file_loadraw(const char *name, char *type, int insert); void file_discard(struct preloaded_file *fp); -void file_addmetadata(struct preloaded_file *fp, int type, size_t size, void *p); -int file_addmodule(struct preloaded_file *fp, char *modname, int version, - struct kernel_module **newmp); +void file_addmetadata(struct preloaded_file *, int, size_t, void *); +int file_addmodule(struct preloaded_file *, char *, int, + struct kernel_module **); void file_removemetadata(struct preloaded_file *fp); /* MI module loaders */ #ifdef __elfN /* Relocation types. */ -#define ELF_RELOC_REL 1 -#define ELF_RELOC_RELA 2 +#define ELF_RELOC_REL 1 +#define ELF_RELOC_RELA 2 /* Relocation offset for some architectures */ extern uint64_t __elfN(relocation_offset); @@ -258,35 +271,33 @@ extern uint64_t __elfN(relocation_offset); struct elf_file; typedef Elf_Addr (symaddr_fn)(struct elf_file *ef, Elf_Size symidx); -int __elfN(loadfile)(char *filename, uint64_t dest, struct preloaded_file **result); -int __elfN(obj_loadfile)(char *filename, uint64_t dest, - struct preloaded_file **result); +int __elfN(loadfile)(char *, uint64_t, struct preloaded_file **); +int __elfN(obj_loadfile)(char *, uint64_t, struct preloaded_file **); int __elfN(reloc)(struct elf_file *ef, symaddr_fn *symaddr, const void *reldata, int reltype, Elf_Addr relbase, Elf_Addr dataaddr, void *data, size_t len); -int __elfN(loadfile_raw)(char *filename, uint64_t dest, - struct preloaded_file **result, int multiboot); -int __elfN(load_modmetadata)(struct preloaded_file *fp, uint64_t dest); +int __elfN(loadfile_raw)(char *, uint64_t, struct preloaded_file **, int); +int __elfN(load_modmetadata)(struct preloaded_file *, uint64_t); #endif /* - * Support for commands + * Support for commands */ -struct bootblk_command +struct bootblk_command { const char *c_name; const char *c_desc; bootblk_cmd_t *c_fn; }; -#define COMMAND_SET(tag, key, desc, func) \ +#define COMMAND_SET(tag, key, desc, func) \ static bootblk_cmd_t func; \ static struct bootblk_command _cmd_ ## tag = { key, desc, func }; \ DATA_SET(Xcommand_set, _cmd_ ## tag) SET_DECLARE(Xcommand_set, struct bootblk_command); -/* +/* * The intention of the architecture switch is to provide a convenient * encapsulation of the interface between the bootstrap MI and MD code. * MD code may selectively populate the switch at runtime based on the @@ -294,49 +305,52 @@ SET_DECLARE(Xcommand_set, struct bootblk_command); */ struct arch_switch { - /* Automatically load modules as required by detected hardware */ - int (*arch_autoload)(void); - /* Locate the device for (name), return pointer to tail in (*path) */ - int (*arch_getdev)(void **dev, const char *name, const char **path); - /* Copy from local address space to module address space, similar to bcopy() */ - ssize_t (*arch_copyin)(const void *src, vm_offset_t dest, - const size_t len); - /* Copy to local address space from module address space, similar to bcopy() */ - ssize_t (*arch_copyout)(const vm_offset_t src, void *dest, - const size_t len); - /* Read from file to module address space, same semantics as read() */ - ssize_t (*arch_readin)(readin_handle_t fd, vm_offset_t dest, - const size_t len); - /* Perform ISA byte port I/O (only for systems with ISA) */ - int (*arch_isainb)(int port); - void (*arch_isaoutb)(int port, int value); - - /* - * Interface to adjust the load address according to the "object" - * being loaded. - */ - uint64_t (*arch_loadaddr)(u_int type, void *data, uint64_t addr); + /* Automatically load modules as required by detected hardware */ + int (*arch_autoload)(void); + /* Locate the device for (name), return pointer to tail in (*path) */ + int (*arch_getdev)(void **dev, const char *name, const char **path); + /* + * Copy from local address space to module address space, + * similar to bcopy() + */ + ssize_t (*arch_copyin)(const void *, vm_offset_t, const size_t); + /* + * Copy to local address space from module address space, + * similar to bcopy() + */ + ssize_t (*arch_copyout)(const vm_offset_t, void *, const size_t); + /* Read from file to module address space, same semantics as read() */ + ssize_t (*arch_readin)(readin_handle_t, vm_offset_t, const size_t); + /* Perform ISA byte port I/O (only for systems with ISA) */ + int (*arch_isainb)(int port); + void (*arch_isaoutb)(int port, int value); + + /* + * Interface to adjust the load address according to the "object" + * being loaded. + */ + uint64_t (*arch_loadaddr)(u_int type, void *data, uint64_t addr); #define LOAD_ELF 1 /* data points to the ELF header. */ #define LOAD_RAW 2 /* data points to the file name. */ - /* - * Interface to inform MD code about a loaded (ELF) segment. This - * can be used to flush caches and/or set up translations. - */ + /* + * Interface to inform MD code about a loaded (ELF) segment. This + * can be used to flush caches and/or set up translations. + */ #ifdef __elfN - void (*arch_loadseg)(Elf_Ehdr *eh, Elf_Phdr *ph, uint64_t delta); + void (*arch_loadseg)(Elf_Ehdr *eh, Elf_Phdr *ph, uint64_t delta); #else - void (*arch_loadseg)(void *eh, void *ph, uint64_t delta); + void (*arch_loadseg)(void *eh, void *ph, uint64_t delta); #endif - /* Probe ZFS pool(s), if needed. */ - void (*arch_zfs_probe)(void); + /* Probe ZFS pool(s), if needed. */ + void (*arch_zfs_probe)(void); - /* Return the hypervisor name/type or NULL if not virtualized. */ - const char *(*arch_hypervisor)(void); + /* Return the hypervisor name/type or NULL if not virtualized. */ + const char *(*arch_hypervisor)(void); - /* For kexec-type loaders, get ksegment structure */ - void (*arch_kexec_kseg_get)(int *nseg, void **kseg); + /* For kexec-type loaders, get ksegment structure */ + void (*arch_kexec_kseg_get)(int *nseg, void **kseg); }; extern struct arch_switch archsw; From nobody Fri Oct 8 06:11:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7BFED12D452F; Fri, 8 Oct 2021 06:11: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 4HQd9w049Mz3LTH; Fri, 8 Oct 2021 06:11: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 C87BB21BFF; Fri, 8 Oct 2021 06:11: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 1986BFLw007818; Fri, 8 Oct 2021 06:11:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BFpC007817; Fri, 8 Oct 2021 06:11:15 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:15 GMT Message-Id: <202110080611.1986BFpC007817@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: f759479e2799 - stable/12 - loader: cstyle cleanup of bootstrap.h did miss a bit List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: f759479e27994161c30f61de2c1741da6d065bd8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=f759479e27994161c30f61de2c1741da6d065bd8 commit f759479e27994161c30f61de2c1741da6d065bd8 Author: Toomas Soome AuthorDate: 2020-11-08 09:49:51 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader: cstyle cleanup of bootstrap.h did miss a bit correct small issues - misplaced comment and typos. (cherry picked from commit 83a252c6a15d44cd574a9ef9ba37a77a3464296f) --- stand/common/bootstrap.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stand/common/bootstrap.h b/stand/common/bootstrap.h index af71fcb78436..952d41527dd5 100644 --- a/stand/common/bootstrap.h +++ b/stand/common/bootstrap.h @@ -112,10 +112,10 @@ struct console /* reinit XXX may need more args */ int (* c_init)(int arg); /* emit c */ - void (* c_out)(int c); - int (* c_in)(void); + void (* c_out)(int c); /* wait for and return input */ - /* return nonzer if input waiting */ + int (* c_in)(void); + /* return nonzero if input waiting */ int (* c_ready)(void); }; extern struct console *consoles[]; From nobody Fri Oct 8 06:11:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C0EB912D4571; Fri, 8 Oct 2021 06: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 4HQd9x32qnz3Llg; Fri, 8 Oct 2021 06:11: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 EA5C722080; Fri, 8 Oct 2021 06:11: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 1986BG9Y007848; Fri, 8 Oct 2021 06:11:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BGxa007847; Fri, 8 Oct 2021 06:11:16 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:16 GMT Message-Id: <202110080611.1986BGxa007847@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 12f9183eb7c7 - stable/12 - loader: cstyle cleanup of console.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 12f9183eb7c7d4247c485c79c4657cb1fcb165d2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=12f9183eb7c7d4247c485c79c4657cb1fcb165d2 commit 12f9183eb7c7d4247c485c79c4657cb1fcb165d2 Author: Toomas Soome AuthorDate: 2020-11-14 10:56:40 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader: cstyle cleanup of console.c cstyle cleanup only, no functional changes intended. (cherry picked from commit 3e9f0f1d298f7f1e535831cdf697f5884a6d07dc) --- stand/common/console.c | 360 +++++++++++++++++++++++++------------------------ 1 file changed, 187 insertions(+), 173 deletions(-) diff --git a/stand/common/console.c b/stand/common/console.c index f4ffc563889c..5b2ddfb10f69 100644 --- a/stand/common/console.c +++ b/stand/common/console.c @@ -49,97 +49,102 @@ static int twiddle_set(struct env_var *ev, int flags, const void *value); void cons_probe(void) { - int cons; - int active; - char *prefconsole; - - /* We want a callback to install the new value when this var changes. */ - env_setenv("twiddle_divisor", EV_VOLATILE, "1", twiddle_set, env_nounset); - - /* Do all console probes */ - for (cons = 0; consoles[cons] != NULL; cons++) { - consoles[cons]->c_flags = 0; - consoles[cons]->c_probe(consoles[cons]); - } - /* Now find the first working one */ - active = -1; - for (cons = 0; consoles[cons] != NULL && active == -1; cons++) { - consoles[cons]->c_flags = 0; - consoles[cons]->c_probe(consoles[cons]); - if (consoles[cons]->c_flags == (C_PRESENTIN | C_PRESENTOUT)) - active = cons; - } - /* Force a console even if all probes failed */ - if (active == -1) - active = 0; + int cons; + int active; + char *prefconsole; - /* Check to see if a console preference has already been registered */ - prefconsole = getenv("console"); - if (prefconsole != NULL) - prefconsole = strdup(prefconsole); - if (prefconsole != NULL) { - unsetenv("console"); /* we want to replace this */ - cons_change(prefconsole); - } else { - consoles[active]->c_flags |= C_ACTIVEIN | C_ACTIVEOUT; - consoles[active]->c_init(0); - prefconsole = strdup(consoles[active]->c_name); - } - - printf("Consoles: "); - for (cons = 0; consoles[cons] != NULL; cons++) - if (consoles[cons]->c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) - printf("%s ", consoles[cons]->c_desc); - printf("\n"); - - if (prefconsole != NULL) { - env_setenv("console", EV_VOLATILE, prefconsole, cons_set, + /* We want a callback to install the new value when this var changes. */ + env_setenv("twiddle_divisor", EV_VOLATILE, "1", twiddle_set, env_nounset); - free(prefconsole); - } + + /* Do all console probes */ + for (cons = 0; consoles[cons] != NULL; cons++) { + consoles[cons]->c_flags = 0; + consoles[cons]->c_probe(consoles[cons]); + } + /* Now find the first working one */ + active = -1; + for (cons = 0; consoles[cons] != NULL && active == -1; cons++) { + consoles[cons]->c_flags = 0; + consoles[cons]->c_probe(consoles[cons]); + if (consoles[cons]->c_flags == (C_PRESENTIN | C_PRESENTOUT)) + active = cons; + } + /* Force a console even if all probes failed */ + if (active == -1) + active = 0; + + /* Check to see if a console preference has already been registered */ + prefconsole = getenv("console"); + if (prefconsole != NULL) + prefconsole = strdup(prefconsole); + if (prefconsole != NULL) { + unsetenv("console"); /* we want to replace this */ + cons_change(prefconsole); + } else { + consoles[active]->c_flags |= C_ACTIVEIN | C_ACTIVEOUT; + consoles[active]->c_init(0); + prefconsole = strdup(consoles[active]->c_name); + } + + printf("Consoles: "); + for (cons = 0; consoles[cons] != NULL; cons++) + if (consoles[cons]->c_flags & (C_ACTIVEIN | C_ACTIVEOUT)) + printf("%s ", consoles[cons]->c_desc); + printf("\n"); + + if (prefconsole != NULL) { + env_setenv("console", EV_VOLATILE, prefconsole, cons_set, + env_nounset); + free(prefconsole); + } } int getchar(void) { - int cons; - int rv; - - /* Loop forever polling all active consoles */ - for(;;) - for (cons = 0; consoles[cons] != NULL; cons++) - if ((consoles[cons]->c_flags & (C_PRESENTIN | C_ACTIVEIN)) == - (C_PRESENTIN | C_ACTIVEIN) && - ((rv = consoles[cons]->c_in()) != -1)) - return(rv); + int cons; + int rv; + + /* Loop forever polling all active consoles */ + for (;;) { + for (cons = 0; consoles[cons] != NULL; cons++) { + if ((consoles[cons]->c_flags & + (C_PRESENTIN | C_ACTIVEIN)) == + (C_PRESENTIN | C_ACTIVEIN) && + ((rv = consoles[cons]->c_in()) != -1)) + return (rv); + } + } } int ischar(void) { - int cons; - - for (cons = 0; consoles[cons] != NULL; cons++) - if ((consoles[cons]->c_flags & (C_PRESENTIN | C_ACTIVEIN)) == - (C_PRESENTIN | C_ACTIVEIN) && - (consoles[cons]->c_ready() != 0)) - return(1); - return(0); + int cons; + + for (cons = 0; consoles[cons] != NULL; cons++) + if ((consoles[cons]->c_flags & (C_PRESENTIN | C_ACTIVEIN)) == + (C_PRESENTIN | C_ACTIVEIN) && + (consoles[cons]->c_ready() != 0)) + return (1); + return (0); } void putchar(int c) { - int cons; + int cons; - /* Expand newlines */ - if (c == '\n') - putchar('\r'); + /* Expand newlines */ + if (c == '\n') + putchar('\r'); - for (cons = 0; consoles[cons] != NULL; cons++) - if ((consoles[cons]->c_flags & (C_PRESENTOUT | C_ACTIVEOUT)) == - (C_PRESENTOUT | C_ACTIVEOUT)) - consoles[cons]->c_out(c); + for (cons = 0; consoles[cons] != NULL; cons++) { + if ((consoles[cons]->c_flags & (C_PRESENTOUT | C_ACTIVEOUT)) == + (C_PRESENTOUT | C_ACTIVEOUT)) + consoles[cons]->c_out(c); + } } /* @@ -148,12 +153,12 @@ putchar(int c) static int cons_find(const char *name) { - int cons; + int cons; - for (cons = 0; consoles[cons] != NULL; cons++) - if (!strcmp(consoles[cons]->c_name, name)) - return (cons); - return (-1); + for (cons = 0; consoles[cons] != NULL; cons++) + if (strcmp(consoles[cons]->c_name, name) == 0) + return (cons); + return (-1); } /* @@ -162,22 +167,23 @@ cons_find(const char *name) static int cons_set(struct env_var *ev, int flags, const void *value) { - int ret; - - if ((value == NULL) || (cons_check(value) == 0)) { - /* - * Return CMD_OK instead of CMD_ERROR to prevent forth syntax error, - * which would prevent it processing any further loader.conf entries. - */ - return (CMD_OK); - } + int ret; + + if ((value == NULL) || (cons_check(value) == 0)) { + /* + * Return CMD_OK instead of CMD_ERROR to prevent forth syntax + * error, which would prevent it processing any further + * loader.conf entries. + */ + return (CMD_OK); + } - ret = cons_change(value); - if (ret != CMD_OK) - return (ret); + ret = cons_change(value); + if (ret != CMD_OK) + return (ret); - env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); - return (CMD_OK); + env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); + return (CMD_OK); } /* @@ -186,36 +192,36 @@ cons_set(struct env_var *ev, int flags, const void *value) static int cons_check(const char *string) { - int cons, found, failed; - char *curpos, *dup, *next; - - dup = next = strdup(string); - found = failed = 0; - while (next != NULL) { - curpos = strsep(&next, " ,"); - if (*curpos != '\0') { - cons = cons_find(curpos); - if (cons == -1) { - printf("console %s is invalid!\n", curpos); - failed++; - } else { - found++; - } + int cons, found, failed; + char *curpos, *dup, *next; + + dup = next = strdup(string); + found = failed = 0; + while (next != NULL) { + curpos = strsep(&next, " ,"); + if (*curpos != '\0') { + cons = cons_find(curpos); + if (cons == -1) { + printf("console %s is invalid!\n", curpos); + failed++; + } else { + found++; + } + } } - } - free(dup); + free(dup); - if (found == 0) - printf("no valid consoles!\n"); + if (found == 0) + printf("no valid consoles!\n"); - if (found == 0 || failed != 0) { - printf("Available consoles:\n"); - for (cons = 0; consoles[cons] != NULL; cons++) - printf(" %s\n", consoles[cons]->c_name); - } + if (found == 0 || failed != 0) { + printf("Available consoles:\n"); + for (cons = 0; consoles[cons] != NULL; cons++) + printf(" %s\n", consoles[cons]->c_name); + } - return (found); + return (found); } /* @@ -224,56 +230,64 @@ cons_check(const char *string) static int cons_change(const char *string) { - int cons, active; - char *curpos, *dup, *next; - - /* Disable all consoles */ - for (cons = 0; consoles[cons] != NULL; cons++) { - consoles[cons]->c_flags &= ~(C_ACTIVEIN | C_ACTIVEOUT); - } - - /* Enable selected consoles */ - dup = next = strdup(string); - active = 0; - while (next != NULL) { - curpos = strsep(&next, " ,"); - if (*curpos == '\0') - continue; - cons = cons_find(curpos); - if (cons >= 0) { - consoles[cons]->c_flags |= C_ACTIVEIN | C_ACTIVEOUT; - consoles[cons]->c_init(0); - if ((consoles[cons]->c_flags & (C_PRESENTIN | C_PRESENTOUT)) == - (C_PRESENTIN | C_PRESENTOUT)) { - active++; - continue; - } - - if (active != 0) { - /* If no consoles have initialised we wouldn't see this. */ - printf("console %s failed to initialize\n", consoles[cons]->c_name); - } - } - } + int cons, active; + char *curpos, *dup, *next; - free(dup); - - if (active == 0) { - /* All requested consoles failed to initialise, try to recover. */ + /* Disable all consoles */ for (cons = 0; consoles[cons] != NULL; cons++) { - consoles[cons]->c_flags |= C_ACTIVEIN | C_ACTIVEOUT; - consoles[cons]->c_init(0); - if ((consoles[cons]->c_flags & - (C_PRESENTIN | C_PRESENTOUT)) == - (C_PRESENTIN | C_PRESENTOUT)) - active++; + consoles[cons]->c_flags &= ~(C_ACTIVEIN | C_ACTIVEOUT); } - if (active == 0) - return (CMD_ERROR); /* Recovery failed. */ - } + /* Enable selected consoles */ + dup = next = strdup(string); + active = 0; + while (next != NULL) { + curpos = strsep(&next, " ,"); + if (*curpos == '\0') + continue; + cons = cons_find(curpos); + if (cons >= 0) { + consoles[cons]->c_flags |= C_ACTIVEIN | C_ACTIVEOUT; + consoles[cons]->c_init(0); + if ((consoles[cons]->c_flags & + (C_PRESENTIN | C_PRESENTOUT)) == + (C_PRESENTIN | C_PRESENTOUT)) { + active++; + continue; + } + + if (active != 0) { + /* + * If no consoles have initialised we + * wouldn't see this. + */ + printf("console %s failed to initialize\n", + consoles[cons]->c_name); + } + } + } + + free(dup); + + if (active == 0) { + /* + * All requested consoles failed to initialise, + * try to recover. + */ + for (cons = 0; consoles[cons] != NULL; cons++) { + consoles[cons]->c_flags |= C_ACTIVEIN | C_ACTIVEOUT; + consoles[cons]->c_init(0); + if ((consoles[cons]->c_flags & + (C_PRESENTIN | C_PRESENTOUT)) == + (C_PRESENTIN | C_PRESENTOUT)) + active++; + } + + if (active == 0) + return (CMD_ERROR); /* Recovery failed. */ + } - return (CMD_OK); + return (CMD_OK); } /* @@ -287,16 +301,16 @@ cons_change(const char *string) static int twiddle_set(struct env_var *ev, int flags, const void *value) { - u_long tdiv; - char * eptr; - - tdiv = strtoul(value, &eptr, 0); - if (*(const char *)value == 0 || *eptr != 0) { - printf("invalid twiddle_divisor '%s'\n", (const char *)value); - return (CMD_ERROR); - } - twiddle_divisor((u_int)tdiv); - env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); - - return(CMD_OK); + u_long tdiv; + char *eptr; + + tdiv = strtoul(value, &eptr, 0); + if (*(const char *)value == 0 || *eptr != 0) { + printf("invalid twiddle_divisor '%s'\n", (const char *)value); + return (CMD_ERROR); + } + twiddle_divisor((u_int)tdiv); + env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); + + return (CMD_OK); } From nobody Fri Oct 8 06:11:20 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 53B7512D46B0; Fri, 8 Oct 2021 06:11: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 4HQd9y53Z4z3Llp; Fri, 8 Oct 2021 06: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 3659421E2A; Fri, 8 Oct 2021 06: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 1986BKiK008904; Fri, 8 Oct 2021 06: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 1986BKCH008890; Fri, 8 Oct 2021 06:11:20 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:20 GMT Message-Id: <202110080611.1986BKCH008890@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ecf6cebed9a9 - stable/12 - ficl: make dump a bit friendlier List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ecf6cebed9a945ebef82b71773a657943e7878a7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ecf6cebed9a945ebef82b71773a657943e7878a7 commit ecf6cebed9a945ebef82b71773a657943e7878a7 Author: Toomas Soome AuthorDate: 2020-12-01 23:07:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 ficl: make dump a bit friendlier would be nice to have dump to output hex and ascii. (cherry picked from commit cd56ababd3ceddec64395aac66fa49b08f0f06af) --- stand/ficl/softwords/softcore.fr | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/stand/ficl/softwords/softcore.fr b/stand/ficl/softwords/softcore.fr index ba210530a390..3ec74d8cbece 100644 --- a/stand/ficl/softwords/softcore.fr +++ b/stand/ficl/softwords/softcore.fr @@ -67,6 +67,12 @@ variable span : tuck ( y x -- x y x) swap over ; : within ( test low high -- flag ) over - >r - r> u< ; +: u.r ( n +n -- ) + swap 0 <# #s #> + rot over - dup 0< if + drop else spaces + then + type space ; \ ** LOCAL EXT word set \ #if FICL_WANT_LOCALS @@ -91,12 +97,32 @@ variable span \ ** TOOLS word set... : ? ( addr -- ) @ . ; -: dump ( addr u -- ) - 0 ?do - dup c@ . 1+ - i 7 and 7 = if cr endif - loop drop -; + +Variable /dump + +: i' ( R:w R:w2 -- R:w R:w2 w ) + r> r> r> dup >r swap >r swap >r ; + +: .4 ( addr -- addr' ) + 4 0 DO -1 /dump +! /dump @ 0< + IF 3 spaces ELSE dup c@ 0 <# # # #> type space THEN + char+ LOOP ; + +: .chars ( addr -- ) + /dump @ over + swap + ?DO I c@ dup 127 bl within + IF drop [char] . THEN emit + LOOP ; + +: .line ( addr -- ) + dup .4 space .4 ." - " .4 space .4 drop 16 /dump +! space .chars ; + +: dump ( addr u -- ) \ tools dump + cr base @ >r hex \ save base on return stack + 0 ?DO I' I - 16 min /dump ! + dup 8 u.r ." : " dup .line cr 16 + + 16 +LOOP + drop r> base ! ; \ ** SEARCH+EXT words and ficl helpers \ BRAND-WORDLIST is a helper for ficl-named-wordlist. Usage idiom: From nobody Fri Oct 8 06:11:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8D52E12D46B3; Fri, 8 Oct 2021 06:11: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 4HQd9y4065z3LWl; Fri, 8 Oct 2021 06: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 2C3B022081; Fri, 8 Oct 2021 06:11: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 1986BJor007896; Fri, 8 Oct 2021 06:11:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BJcY007895; Fri, 8 Oct 2021 06:11:19 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:19 GMT Message-Id: <202110080611.1986BJcY007895@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a7c75ee92b0e - stable/12 - ficl: instead of pad, emit can use local variable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: a7c75ee92b0edb8ab591f68fe2038de3b68fc031 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a7c75ee92b0edb8ab591f68fe2038de3b68fc031 commit a7c75ee92b0edb8ab591f68fe2038de3b68fc031 Author: Toomas Soome AuthorDate: 2020-12-01 22:28:02 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 ficl: instead of pad, emit can use local variable Pad in forth is used as "scratchpad" and internal implementations should not use it. Ficl does not really follow this rule and this can fire back. emit has no need to use pad, we can use local variable instead. (cherry picked from commit dba7640e44c5ec148a84b0d58c6c9a3c9e5147f3) --- stand/ficl/words.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/ficl/words.c b/stand/ficl/words.c index 54257275d5cc..3f781c6d2ff4 100644 --- a/stand/ficl/words.c +++ b/stand/ficl/words.c @@ -1015,7 +1015,7 @@ static void twoSwap(FICL_VM *pVM) static void emit(FICL_VM *pVM) { - char *cp = pVM->pad; + char cp[2]; int i; #if FICL_ROBUST > 1 From nobody Fri Oct 8 06:11:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 625B712D478F; Fri, 8 Oct 2021 06:11: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 4HQd9y1yk3z3Lhk; Fri, 8 Oct 2021 06: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 1B593217F3; Fri, 8 Oct 2021 06:11: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 1986BHrJ007872; Fri, 8 Oct 2021 06:11:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BHSg007871; Fri, 8 Oct 2021 06:11:17 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:17 GMT Message-Id: <202110080611.1986BHSg007871@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: b180a5b75cb9 - stable/12 - zfsboot: add prototype for main() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: b180a5b75cb95c6316f668b811bfffc071e2325f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=b180a5b75cb95c6316f668b811bfffc071e2325f commit b180a5b75cb95c6316f668b811bfffc071e2325f Author: Toomas Soome AuthorDate: 2020-11-15 14:04:27 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 zfsboot: add prototype for main() Some compilers are complaining about missing prototype. PR: 251150 (cherry picked from commit fc7cf7241f89a3d3ccc20cb49c5bf61e154b7a1b) --- stand/i386/zfsboot/zfsboot.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index 81a6d74abc7b..cca36b9cefb4 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -158,6 +158,8 @@ ptov(uintptr_t x) return (PTOV(x)); } +int main(void); + int main(void) { From nobody Fri Oct 8 06:11:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9B10A12D481C; Fri, 8 Oct 2021 06:11: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 4HQd9y57cjz3Lhq; Fri, 8 Oct 2021 06: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 5A77B21DAF; Fri, 8 Oct 2021 06:11:21 +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 1986BLTw010173; Fri, 8 Oct 2021 06:11:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BLPS010167; Fri, 8 Oct 2021 06:11:21 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:21 GMT Message-Id: <202110080611.1986BLPS010167@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 314304cf228c - stable/12 - loader: Print autoboot countdown immediately, not at 9 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 314304cf228ca34605e41d6521543753078d7156 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=314304cf228ca34605e41d6521543753078d7156 commit 314304cf228ca34605e41d6521543753078d7156 Author: Jessica Clarke AuthorDate: 2020-12-14 00:46:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader: Print autoboot countdown immediately, not at 9 For the first second otime and ntime are equal so no message gets printed. Instead we should print the countdown right from the start, although we do it at the end of the first iteration so that if a key has already been pressed then the message is suppressed. (cherry picked from commit c46f7610d4c5a57fdb2aac5fcbf66aa7124ec703) --- stand/common/boot.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/stand/common/boot.c b/stand/common/boot.c index b1dbb61b404d..2103f6dc240c 100644 --- a/stand/common/boot.c +++ b/stand/common/boot.c @@ -202,8 +202,9 @@ autoboot(int timeout, char *prompt) } if (timeout >= 0) { - otime = time(NULL); - when = otime + timeout; /* when to boot */ + otime = -1; + ntime = time(NULL); + when = ntime + timeout; /* when to boot */ yes = 0; From nobody Fri Oct 8 06:11:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5618412D462D; Fri, 8 Oct 2021 06:11: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 4HQd9z38NBz3LTY; Fri, 8 Oct 2021 06:11: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 6F9FE21EEA; Fri, 8 Oct 2021 06:11: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 1986BMck010357; Fri, 8 Oct 2021 06:11:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BMDq010356; Fri, 8 Oct 2021 06:11:22 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:22 GMT Message-Id: <202110080611.1986BMDq010356@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 395614be592d - stable/12 - loader: allow loader to accept zfs feature com.datto:bookmark_v2 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 395614be592d2825e6f52860bfb5befb4d588ede Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=395614be592d2825e6f52860bfb5befb4d588ede commit 395614be592d2825e6f52860bfb5befb4d588ede Author: Toomas Soome AuthorDate: 2020-12-15 21:48:35 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader: allow loader to accept zfs feature com.datto:bookmark_v2 We do not need to actually read bookmarks, just whitelist this feature (cherry picked from commit eba724f361693a52721b2626d800a7e117af67ac) --- stand/libsa/zfs/zfsimpl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index b8b06fd862d1..9efc67db318a 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -122,6 +122,7 @@ static const char *features_for_read[] = { "com.delphix:zpool_checkpoint", "com.delphix:spacemap_v2", "com.datto:encryption", + "com.datto:bookmark_v2", "org.zfsonlinux:allocation_classes", "com.datto:resilver_defer", "com.delphix:device_removal", From nobody Fri Oct 8 06:11:23 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8E20F12D4862; Fri, 8 Oct 2021 06:11: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 4HQdB03R7qz3LqF; Fri, 8 Oct 2021 06:11: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 9CA9521C49; Fri, 8 Oct 2021 06: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 1986BNWr010383; Fri, 8 Oct 2021 06: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 1986BNKS010382; Fri, 8 Oct 2021 06:11:23 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:23 GMT Message-Id: <202110080611.1986BNKS010382@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 2d5237531676 - stable/12 - loader: allow loader to accept zfs feature com.delphix:bookmark_written List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 2d5237531676b2eb8de2ed50d53d20a70ba607b4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=2d5237531676b2eb8de2ed50d53d20a70ba607b4 commit 2d5237531676b2eb8de2ed50d53d20a70ba607b4 Author: Toomas Soome AuthorDate: 2020-12-15 22:37:03 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader: allow loader to accept zfs feature com.delphix:bookmark_written We do not need to actually read bookmarks, just whitelist this feature. (cherry picked from commit d3eae37553cd23d5ca8addc4818aec9d8a71ec81) --- stand/libsa/zfs/zfsimpl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 9efc67db318a..e3eb0a0b6a89 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -129,6 +129,7 @@ static const char *features_for_read[] = { "com.delphix:obsolete_counts", "com.intel:allocation_classes", "org.freebsd:zstd_compress", + "com.delphix:bookmark_written", NULL }; From nobody Fri Oct 8 06:11:24 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 85A4712D4BA9; Fri, 8 Oct 2021 06:11:41 +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 4HQdB46ZBGz3Lp9; Fri, 8 Oct 2021 06:11: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 BBFA821E2B; Fri, 8 Oct 2021 06:11: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 1986BOFa010407; Fri, 8 Oct 2021 06:11:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BOfJ010406; Fri, 8 Oct 2021 06:11:24 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:24 GMT Message-Id: <202110080611.1986BOfJ010406@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 86d4420d35a4 - stable/12 - efi loader: fix typos in a comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 86d4420d35a4cfe3e869189dc6d630dcfe8f5317 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=86d4420d35a4cfe3e869189dc6d630dcfe8f5317 commit 86d4420d35a4cfe3e869189dc6d630dcfe8f5317 Author: Eric van Gyzen AuthorDate: 2021-01-01 17:38:39 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 efi loader: fix typos in a comment ...mostly because it's a harmless way to try the shiny new git repo. (cherry picked from commit 670d2ad820c7584e6592d2a6d748dda0758d2ec5) --- stand/efi/loader/main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index 58e5763f14ff..591e2e499622 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -365,9 +365,9 @@ match_boot_info(char *boot_info, size_t bisz) CHAR16 *text; /* - * FreeBSD encodes it's boot loading path into the boot loader + * FreeBSD encodes its boot loading path into the boot loader * BootXXXX variable. We look for the last one in the path - * and use that to load the kernel. However, if we only fine + * and use that to load the kernel. However, if we only find * one DEVICE_PATH, then there's nothing specific and we should * fall back. * @@ -378,8 +378,8 @@ match_boot_info(char *boot_info, size_t bisz) * boot loader to get to the next boot loader. However, that * doesn't work. We rarely have the path to the image booted * (just the device) so we can't count on that. So, we do the - * enxt best thing, we look through the device path(s) passed - * in the BootXXXX varaible. If there's only one, we return + * next best thing: we look through the device path(s) passed + * in the BootXXXX variable. If there's only one, we return * NOT_SPECIFIC. Otherwise, we look at the last one and try to * load that. If we can, we return BOOT_INFO_OK. Otherwise we * return BAD_CHOICE for the caller to sort out. From nobody Fri Oct 8 06:11:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6DC1212D4B49; Fri, 8 Oct 2021 06:11: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 4HQdB73khDz3LpN; Fri, 8 Oct 2021 06:11: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 D1A9A22009; Fri, 8 Oct 2021 06:11: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 1986BPZD010431; Fri, 8 Oct 2021 06:11:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BPJ1010430; Fri, 8 Oct 2021 06:11:25 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:25 GMT Message-Id: <202110080611.1986BPJ1010430@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 2b22b85e58e3 - stable/12 - pxeboot(8): remove antiquated information List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 2b22b85e58e356344ab7be2001b098b98187c781 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=2b22b85e58e356344ab7be2001b098b98187c781 commit 2b22b85e58e356344ab7be2001b098b98187c781 Author: Guangyuan Yang AuthorDate: 2021-02-15 22:03:37 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 pxeboot(8): remove antiquated information While I was there: - Fix some typos - Fix an excessive argument "indent" reported by mandoc -Tlint - Replace a dead link with the one suggested by https://www.uefi.org/uefi (cherry picked from commit c90fb7acf099f1dc982f8d6087aa92809ae43727) --- stand/i386/pxeldr/pxeboot.8 | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/stand/i386/pxeldr/pxeboot.8 b/stand/i386/pxeldr/pxeboot.8 index c9fa434b3028..58b1f06bcd0f 100644 --- a/stand/i386/pxeldr/pxeboot.8 +++ b/stand/i386/pxeldr/pxeboot.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 25, 2018 +.Dd February 15, 2021 .Dt PXEBOOT 8 .Os .Sh NAME @@ -97,19 +97,19 @@ from the specified server before loading any other files. .Pp Valid .Va option root-path -Syntax is the following -.Bl -tag -width ://ip/path indent +syntax is the following +.Bl -tag -width ://ip/path .It /path path to the root filesystem on the NFS server -.It ip:/path +.It ip://path path to the root filesystem on the NFS server .Ar ip -.It nfs:/path +.It nfs://path path to the root filesystem on the NFS server .It nfs://ip/path path to the root filesystem on the NFS server .Ar ip -.It tftp:/path +.It tftp://path path to the root filesystem on the TFTP server .It tftp://ip/path path to the root filesystem on the TFTP server @@ -129,18 +129,9 @@ In all other respects, acts just like .Xr loader 8 . .Pp -As PXE is still in its infancy, some firmware versions may not work -properly. -The -.Nm -bootloader has been extensively tested on version 0.99 of Intel firmware; -pre-release versions of the newer 2.0 firmware are known to have -problems. -Check with the device's manufacturer for their latest stable release. -.Pp For further information on Intel's PXE specifications and Wired for Management (WfM) systems, see -.Li http://www.intel.com/design/archives/wfm/ . +.Li http://www.pix.net/software/pxeboot/archive/pxespec.pdf . .Sh SEE ALSO .Xr loader 8 .Sh HISTORY From nobody Fri Oct 8 06:11:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7473B12D4A46; Fri, 8 Oct 2021 06:11: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 4HQdB75BRzz3LgS; Fri, 8 Oct 2021 06:11: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 0888821EED; Fri, 8 Oct 2021 06:11: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 1986BQIk010455; Fri, 8 Oct 2021 06:11:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BQKb010454; Fri, 8 Oct 2021 06:11:26 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:26 GMT Message-Id: <202110080611.1986BQKb010454@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 687f0a1b588f - stable/12 - stand: Load INIT_ARRAY and FINI_ARRAY sections List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 687f0a1b588f9d2a06518528d93890e362e0c699 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=687f0a1b588f9d2a06518528d93890e362e0c699 commit 687f0a1b588f9d2a06518528d93890e362e0c699 Author: Mark Johnston AuthorDate: 2021-03-16 19:01:41 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 stand: Load INIT_ARRAY and FINI_ARRAY sections This is required for preloading modules into a KASAN-configured kernel. (cherry picked from commit 7b1b5aad95df671aba3192f1669a8d96da481939) --- stand/common/load_elf_obj.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stand/common/load_elf_obj.c b/stand/common/load_elf_obj.c index 7df88678a015..f3c84cf31368 100644 --- a/stand/common/load_elf_obj.c +++ b/stand/common/load_elf_obj.c @@ -264,6 +264,8 @@ __elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, uint64_t off) #if defined(__i386__) || defined(__amd64__) case SHT_X86_64_UNWIND: #endif + case SHT_INIT_ARRAY: + case SHT_FINI_ARRAY: if ((shdr[i].sh_flags & SHF_ALLOC) == 0) break; lastaddr = roundup(lastaddr, shdr[i].sh_addralign); From nobody Fri Oct 8 06:11:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C4FBC12D4CC3; Fri, 8 Oct 2021 06:11: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 4HQdB90F4dz3Lmh; Fri, 8 Oct 2021 06:11:45 +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 2A09A21C4C; Fri, 8 Oct 2021 06:11: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 1986BRfr010480; Fri, 8 Oct 2021 06:11:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BRqr010479; Fri, 8 Oct 2021 06:11:27 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:27 GMT Message-Id: <202110080611.1986BRqr010479@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1801534a5c8a - stable/12 - libsa: Remove conflicting .global/.weak directive List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1801534a5c8a73b684176c67aa3eb7cfa5116a81 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1801534a5c8a73b684176c67aa3eb7cfa5116a81 commit 1801534a5c8a73b684176c67aa3eb7cfa5116a81 Author: Alex Richardson AuthorDate: 2021-03-30 13:52:31 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 libsa: Remove conflicting .global/.weak directive LLVM12 complains if you change the symbol binding: `error: _longjmp changed binding to STB_GLOBAL` In this case LLVM actually ignored the weak directive and used the later .global, but GNU as would mark the symbol as weak. None of the other architectures mark the libsa _setjmp as weak so just drop this directive. (cherry picked from commit 59b2caef0537661397caf2ce1398cf802cb864b4) --- stand/libsa/amd64/_setjmp.S | 1 - 1 file changed, 1 deletion(-) diff --git a/stand/libsa/amd64/_setjmp.S b/stand/libsa/amd64/_setjmp.S index 6d9a5fa13f8d..53ea6e9b5d52 100644 --- a/stand/libsa/amd64/_setjmp.S +++ b/stand/libsa/amd64/_setjmp.S @@ -63,7 +63,6 @@ ENTRY(_setjmp) ret END(_setjmp) - .weak CNAME(_longjmp) ENTRY(_longjmp) movq %rdi,%rdx /* Restore the mxcsr, but leave exception flags intact. */ From nobody Fri Oct 8 06:11:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B869E12D4CBD; Fri, 8 Oct 2021 06:11: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 4HQdB90TGBz3LpZ; Fri, 8 Oct 2021 06:11:45 +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 596B621DB2; Fri, 8 Oct 2021 06:11: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 1986BTIo010509; Fri, 8 Oct 2021 06:11:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BToc010508; Fri, 8 Oct 2021 06:11:29 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:29 GMT Message-Id: <202110080611.1986BToc010508@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9005e81aa014 - stable/12 - loader: we should support pools without features List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9005e81aa014d283c8156173d61d7b3b656f5746 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9005e81aa014d283c8156173d61d7b3b656f5746 commit 9005e81aa014d283c8156173d61d7b3b656f5746 Author: Toomas Soome AuthorDate: 2021-04-02 23:40:51 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader: we should support pools without features nvlist_check_features_for_read() does return error when there are no features for read. (cherry picked from commit d36341f7b8ddc2457a1e9e4a721d27d2e66cb39a) --- stand/libsa/zfs/zfsimpl.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index e3eb0a0b6a89..70e44d7f0e8b 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -183,8 +183,16 @@ nvlist_check_features_for_read(nvlist_t *nvl) rc = nvlist_find(nvl, ZPOOL_CONFIG_FEATURES_FOR_READ, DATA_TYPE_NVLIST, NULL, &features, NULL); - if (rc != 0) - return (rc); + switch (rc) { + case 0: + break; /* Continue with checks */ + + case ENOENT: + return (0); /* All features are disabled */ + + default: + return (rc); /* Error while reading nvlist */ + } data = (nvs_data_t *)features->nv_data; nvp = &data->nvl_pair; /* first pair in nvlist */ From nobody Fri Oct 8 06:11:30 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3E00C12D4CC5; Fri, 8 Oct 2021 06:11: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 4HQdB93bWyz3M2G; Fri, 8 Oct 2021 06:11:45 +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 6B49722088; Fri, 8 Oct 2021 06:11: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 1986BUJ8010533; Fri, 8 Oct 2021 06:11:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BUOB010532; Fri, 8 Oct 2021 06:11:30 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:30 GMT Message-Id: <202110080611.1986BUOB010532@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ce416dfad5c8 - stable/12 - loader.efi: remove extra extern ST List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ce416dfad5c8b036820a11c2ada65c68e9d4f928 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ce416dfad5c8b036820a11c2ada65c68e9d4f928 commit ce416dfad5c8b036820a11c2ada65c68e9d4f928 Author: Warner Losh AuthorDate: 2021-09-30 02:07:13 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:28 +0000 loader.efi: remove extra extern ST The definition for 'ST' is in efilib.h, so we don't need extern ST here. (cherry picked from commit 8ea95b2fbab8eb891c4191c1879199685951b1f6) --- stand/efi/loader/bootinfo.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/stand/efi/loader/bootinfo.c b/stand/efi/loader/bootinfo.c index b1df11acd53f..295e9974ca05 100644 --- a/stand/efi/loader/bootinfo.c +++ b/stand/efi/loader/bootinfo.c @@ -62,8 +62,6 @@ __FBSDID("$FreeBSD$"); int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp); -extern EFI_SYSTEM_TABLE *ST; - static int bi_getboothowto(char *kargs) { From nobody Fri Oct 8 06:11:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9BA9512D4D60; Fri, 8 Oct 2021 06:11: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 4HQdBB3yB0z3Ltb; Fri, 8 Oct 2021 06:11: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 A07A221FE1; Fri, 8 Oct 2021 06:11: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 1986BVFk010557; Fri, 8 Oct 2021 06:11:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986BVub010556; Fri, 8 Oct 2021 06:11:31 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:11:31 GMT Message-Id: <202110080611.1986BVub010556@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: d48dfb33181f - stable/12 - Fix 64-bit build of libofw. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: d48dfb33181f6ec9f48805dee4bec55290318641 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d48dfb33181f6ec9f48805dee4bec55290318641 commit d48dfb33181f6ec9f48805dee4bec55290318641 Author: Brandon Bergren AuthorDate: 2020-09-08 23:22:11 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 05:24:29 +0000 Fix 64-bit build of libofw. Adjust a couple of printf() lines that deal with dumping out addresses to cast to uintmax_t. This allows building a 64-bit libofw for use in things like a future Petitboot loader for PowerPC64, and other FDT platforms that require a 64-bit loader binary and want to use forth. Sponsored by: Tag1 Consulting, Inc. (cherry picked from commit 3e91d8268ff7ad4ca543d720f66525e6f114fb12) --- stand/libofw/ofw_memory.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/stand/libofw/ofw_memory.c b/stand/libofw/ofw_memory.c index f05881ee8a19..2b7cd87ac765 100644 --- a/stand/libofw/ofw_memory.c +++ b/stand/libofw/ofw_memory.c @@ -80,11 +80,11 @@ ofw_memmap(int acells) "Physical Range", "#Pages", "Mode"); for (i = 0; i < nmapping; i++) { - sprintf(lbuf, "%08x-%08x\t%08x-%08x\t%8d\t%6x\n", - mapptr[i].va, - mapptr[i].va + mapptr[i].len, - mapptr[i].pa, - mapptr[i].pa + mapptr[i].len, + sprintf(lbuf, "%08jx-%08jx\t%08jx-%08jx\t%8d\t%6x\n", + (uintmax_t)mapptr[i].va, + (uintmax_t)mapptr[i].va + mapptr[i].len, + (uintmax_t)mapptr[i].pa, + (uintmax_t)mapptr[i].pa + mapptr[i].len, mapptr[i].len / 0x1000, mapptr[i].mode); if (pager_output(lbuf)) @@ -98,11 +98,11 @@ ofw_memmap(int acells) "Physical Range", "#Pages", "Mode"); for (i = 0; i < nmapping; i++) { - sprintf(lbuf, "%08x-%08x\t%08x-%08x\t%8d\t%6x\n", - mapptr2[i].va, - mapptr2[i].va + mapptr2[i].len, - mapptr2[i].pa_lo, - mapptr2[i].pa_lo + mapptr2[i].len, + sprintf(lbuf, "%08jx-%08jx\t%08jx-%08jx\t%8d\t%6x\n", + (uintmax_t)mapptr2[i].va, + (uintmax_t)mapptr2[i].va + mapptr2[i].len, + (uintmax_t)mapptr2[i].pa_lo, + (uintmax_t)mapptr2[i].pa_lo + mapptr2[i].len, mapptr2[i].len / 0x1000, mapptr2[i].mode); if (pager_output(lbuf)) From nobody Fri Oct 8 06:35:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6034117ECAE8; Fri, 8 Oct 2021 06:35: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 4HQdk204Mzz4ZNv; Fri, 8 Oct 2021 06:35: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 9D36422795; Fri, 8 Oct 2021 06:35: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 1986ZrsZ039451; Fri, 8 Oct 2021 06:35:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986ZraT039450; Fri, 8 Oct 2021 06:35:53 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:35:53 GMT Message-Id: <202110080635.1986ZraT039450@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: e6c28c2465d8 - main - stress2: exclude known problem test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: e6c28c2465d82e3341b589710b6302e35e1eee1c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=e6c28c2465d82e3341b589710b6302e35e1eee1c commit e6c28c2465d82e3341b589710b6302e35e1eee1c Author: Peter Holm AuthorDate: 2021-10-08 06:35:17 +0000 Commit: Peter Holm CommitDate: 2021-10-08 06:35:17 +0000 stress2: exclude known problem test --- tools/test/stress2/misc/all.exclude | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/test/stress2/misc/all.exclude b/tools/test/stress2/misc/all.exclude index 5106478ff2d0..7ee33f258f87 100644 --- a/tools/test/stress2/misc/all.exclude +++ b/tools/test/stress2/misc/all.exclude @@ -49,6 +49,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 https://people.freebsd.org/~pho/stress/log/log0123.txt 20211008 swapoff2.sh swap_pager_force_pagein: read from swap failed 20171223 swapoff5.sh log0005.txt, known issue 20210111 systrace.sh WiP 20200227 From nobody Fri Oct 8 06:38:37 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 057C717ED6C4; Fri, 8 Oct 2021 06:38: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 4HQdnB2WKvz4chT; Fri, 8 Oct 2021 06:38: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 1CAFD22611; Fri, 8 Oct 2021 06:38: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 1986cbOu039740; Fri, 8 Oct 2021 06:38:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1986cb1s039739; Fri, 8 Oct 2021 06:38:37 GMT (envelope-from git) Date: Fri, 8 Oct 2021 06:38:37 GMT Message-Id: <202110080638.1986cb1s039739@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: 89ec6dcce03b - main - stress2: Added a regression test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 89ec6dcce03bf2b684acdaf2e62fb4365647c0a8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=89ec6dcce03bf2b684acdaf2e62fb4365647c0a8 commit 89ec6dcce03bf2b684acdaf2e62fb4365647c0a8 Author: Peter Holm AuthorDate: 2021-10-08 06:38:17 +0000 Commit: Peter Holm CommitDate: 2021-10-08 06:38:17 +0000 stress2: Added a regression test --- tools/test/stress2/misc/elf.sh | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/tools/test/stress2/misc/elf.sh b/tools/test/stress2/misc/elf.sh new file mode 100755 index 000000000000..e0f88e5e90bc --- /dev/null +++ b/tools/test/stress2/misc/elf.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +# +# SPDX-License-Identifier: BSD-2-Clause-FreeBSD +# +# Copyright (c) 2021 Peter Holm +# +# 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. +# + +# Fuzz test +# Spending a long time in elf64_coredump() seen: +# https://people.freebsd.org/~pho/stress/log/log0183.txt +# Fixed by: b5cadc643e85 + +. ../default.cfg +[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1 + +dir=/tmp +odir=`pwd` +cc -o /tmp/flip -Wall -Wextra -O2 ../tools/flip.c || exit 1 + +set -e +mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 2g -u $mdstart +newfs $newfs_flags md$mdstart > /dev/null +mount /dev/md$mdstart $mntpoint +cd $mntpoint +set +e + +echo "Expect lots of warnings." +start=`date +%s` +while [ $((`date +%s` - start)) -lt 180 ]; do + cp /bin/ps ./elf + for j in `jot 10`; do + /tmp/flip -n 1 ./elf + timeout -s SIGKILL 2 ./elf aux > /dev/null 2>&1 || break + rm -f *.core + done +done +cd $odir + +for i in `jot 6`; do + mount | grep -q "on $mntpoint " || break + umount $mntpoint && break || sleep 10 + [ $i -eq 6 ] && + { echo FATAL; fstat -mf $mntpoint; exit 1; } +done +mdconfig -d -u $mdstart +rm /tmp/flip +exit 0 From nobody Fri Oct 8 07:22:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6715112D35FD; Fri, 8 Oct 2021 07:22: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 4HQflS11Vfz4jWj; Fri, 8 Oct 2021 07:22: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 04AB922D5A; Fri, 8 Oct 2021 07:22: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 1987MBYr006598; Fri, 8 Oct 2021 07:22:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1987MB71006597; Fri, 8 Oct 2021 07:22:11 GMT (envelope-from git) Date: Fri, 8 Oct 2021 07:22:11 GMT Message-Id: <202110080722.1987MB71006597@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michal Meloun Subject: git: dfb736022285 - main - dwmmc: Calculate the maximum transaction length correctly. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mmel X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: dfb7360222856e7e4f5e0e5564281a25af63319c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mmel: URL: https://cgit.FreeBSD.org/src/commit/?id=dfb7360222856e7e4f5e0e5564281a25af63319c commit dfb7360222856e7e4f5e0e5564281a25af63319c Author: Michal Meloun AuthorDate: 2021-10-07 18:42:56 +0000 Commit: Michal Meloun CommitDate: 2021-10-08 07:21:03 +0000 dwmmc: Calculate the maximum transaction length correctly. We should reserve two descriptors (not MMC_SECTORS) for potentially unaligned (so bounced) buffer fragments, one for the starting fragment and one for the ending fragment. Submitted by: kjopek@gmail.com MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D30387 --- sys/dev/mmc/host/dwmmc.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/sys/dev/mmc/host/dwmmc.c b/sys/dev/mmc/host/dwmmc.c index 77c8e42a6150..2080a973564f 100644 --- a/sys/dev/mmc/host/dwmmc.c +++ b/sys/dev/mmc/host/dwmmc.c @@ -145,6 +145,11 @@ struct idmac_desc { * second half of page */ #define IDMAC_MAX_SIZE 2048 +/* + * Busdma may bounce buffers, so we must reserve 2 descriptors + * (on start and on end) for bounced fragments. + */ +#define DWMMC_MAX_DATA (IDMAC_MAX_SIZE * (IDMAC_DESC_SEGS - 2)) / MMC_SECTOR_SIZE static void dwmmc_next_operation(struct dwmmc_softc *); static int dwmmc_setup_bus(struct dwmmc_softc *, int); @@ -1358,13 +1363,7 @@ dwmmc_read_ivar(device_t bus, device_t child, int which, uintptr_t *result) *(int *)result = sc->host.caps; break; case MMCBR_IVAR_MAX_DATA: - /* - * Busdma may bounce buffers, so we must reserve 2 descriptors - * (on start and on end) for bounced fragments. - * - */ - *(int *)result = (IDMAC_MAX_SIZE * IDMAC_DESC_SEGS) / - MMC_SECTOR_SIZE - 3; + *(int *)result = DWMMC_MAX_DATA; break; case MMCBR_IVAR_TIMING: *(int *)result = sc->host.ios.timing; @@ -1444,7 +1443,7 @@ dwmmc_get_tran_settings(device_t dev, struct ccb_trans_settings_mmc *cts) cts->host_f_min = sc->host.f_min; cts->host_f_max = sc->host.f_max; cts->host_caps = sc->host.caps; - cts->host_max_data = (IDMAC_MAX_SIZE * IDMAC_DESC_SEGS) / MMC_SECTOR_SIZE; + cts->host_max_data = DWMMC_MAX_DATA; memcpy(&cts->ios, &sc->host.ios, sizeof(struct mmc_ios)); return (0); From nobody Fri Oct 8 07:37:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id ABEC012D7590; Fri, 8 Oct 2021 07:37: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 4HQg574T0Tz4n8d; Fri, 8 Oct 2021 07:37: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 79075233A1; Fri, 8 Oct 2021 07:37: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 1987bVns019931; Fri, 8 Oct 2021 07:37:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1987bV0j019930; Fri, 8 Oct 2021 07:37:31 GMT (envelope-from git) Date: Fri, 8 Oct 2021 07:37:31 GMT Message-Id: <202110080737.1987bV0j019930@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9200b41546cb - stable/12 - loader: crc32 is provided by libsa List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9200b41546cb955cee30589cacc4c89007c50806 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9200b41546cb955cee30589cacc4c89007c50806 commit 9200b41546cb955cee30589cacc4c89007c50806 Author: Toomas Soome AuthorDate: 2020-03-04 18:38:09 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 07:37:13 +0000 loader: crc32 is provided by libsa Seems like leftover from moving crc32.c to libsa. (cherry picked from commit ca251958058fc5e7c9ed020655ed7e737043ba77) --- stand/i386/gptboot/Makefile | 4 ++-- stand/i386/isoboot/Makefile | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stand/i386/gptboot/Makefile b/stand/i386/gptboot/Makefile index ea656da635ab..ee8f4797f3d6 100644 --- a/stand/i386/gptboot/Makefile +++ b/stand/i386/gptboot/Makefile @@ -54,13 +54,13 @@ gptldr.bin: gptldr.out gptldr.out: gptldr.o ${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} gptldr.o -CLEANFILES+= gptboot.bin gptboot.out gptboot.o sio.o crc32.o drv.o \ +CLEANFILES+= gptboot.bin gptboot.out gptboot.o sio.o drv.o \ cons.o ${OPENCRYPTO_XTS} gptboot.bin: gptboot.out ${OBJCOPY} -S -O binary gptboot.out ${.TARGET} -gptboot.out: ${BTXCRT} gptboot.o sio.o crc32.o drv.o cons.o ${OPENCRYPTO_XTS} +gptboot.out: ${BTXCRT} gptboot.o sio.o drv.o cons.o ${OPENCRYPTO_XTS} ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBSA32} .include diff --git a/stand/i386/isoboot/Makefile b/stand/i386/isoboot/Makefile index 597958065090..9fcd1f357231 100644 --- a/stand/i386/isoboot/Makefile +++ b/stand/i386/isoboot/Makefile @@ -55,13 +55,13 @@ gptldr.bin: gptldr.out gptldr.out: gptldr.o ${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} gptldr.o -CLEANFILES+= isoboot.bin isoboot.out isoboot.o sio.o crc32.o drv.o \ +CLEANFILES+= isoboot.bin isoboot.out isoboot.o sio.o drv.o \ cons.o ${OPENCRYPTO_XTS} isoboot.bin: isoboot.out ${OBJCOPY} -S -O binary isoboot.out ${.TARGET} -isoboot.out: ${BTXCRT} isoboot.o sio.o crc32.o drv.o cons.o ${OPENCRYPTO_XTS} +isoboot.out: ${BTXCRT} isoboot.o sio.o drv.o cons.o ${OPENCRYPTO_XTS} ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBSA32} .include From nobody Fri Oct 8 07:59:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B391712D9CB7; Fri, 8 Oct 2021 07:59: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 4HQgZG4dL2z4qYj; Fri, 8 Oct 2021 07:59: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 7AA352365B; Fri, 8 Oct 2021 07:59: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 1987xIm3046582; Fri, 8 Oct 2021 07:59:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1987xIrF046581; Fri, 8 Oct 2021 07:59:18 GMT (envelope-from git) Date: Fri, 8 Oct 2021 07:59:18 GMT Message-Id: <202110080759.1987xIrF046581@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 7e64580b5f47 - main - routing: Use the same index space for both nexthop and nexthop groups. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: melifaro X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e64580b5f477ba4523799f26d1178f611f5d6cb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=7e64580b5f477ba4523799f26d1178f611f5d6cb commit 7e64580b5f477ba4523799f26d1178f611f5d6cb Author: Alexander V. Chernikov AuthorDate: 2021-10-06 19:07:54 +0000 Commit: Alexander V. Chernikov CommitDate: 2021-10-08 07:58:55 +0000 routing: Use the same index space for both nexthop and nexthop groups. This simplifies userland object handling along with kernel-level nexthop handling in fib algo framework. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D32342 --- sys/net/route/fib_algo.c | 6 ++---- sys/net/route/nhgrp.c | 31 +++++++------------------------ sys/net/route/nhop_var.h | 1 - 3 files changed, 9 insertions(+), 29 deletions(-) diff --git a/sys/net/route/fib_algo.c b/sys/net/route/fib_algo.c index 4bae9e5edd6c..54b0464711a5 100644 --- a/sys/net/route/fib_algo.c +++ b/sys/net/route/fib_algo.c @@ -1764,12 +1764,10 @@ get_nhop_idx(struct nhop_object *nh) { #ifdef ROUTE_MPATH if (NH_IS_NHGRP(nh)) - return (nhgrp_get_idx((struct nhgrp_object *)nh) * 2 - 1); + return (nhgrp_get_idx((struct nhgrp_object *)nh)); else - return (nhop_get_idx(nh) * 2); -#else - return (nhop_get_idx(nh)); #endif + return (nhop_get_idx(nh)); } uint32_t diff --git a/sys/net/route/nhgrp.c b/sys/net/route/nhgrp.c index 982ff2a72f15..07abdf480101 100644 --- a/sys/net/route/nhgrp.c +++ b/sys/net/route/nhgrp.c @@ -159,9 +159,9 @@ link_nhgrp(struct nh_control *ctl, struct nhgrp_priv *grp_priv) NHOPS_WLOCK(ctl); /* Check if we need to resize hash and index */ new_num_buckets = CHT_SLIST_GET_RESIZE_BUCKETS(&ctl->gr_head); - new_num_items = bitmask_get_resize_items(&ctl->gr_idx_head); + new_num_items = bitmask_get_resize_items(&ctl->nh_idx_head); - if (bitmask_alloc_idx(&ctl->gr_idx_head, &idx) != 0) { + if (bitmask_alloc_idx(&ctl->nh_idx_head, &idx) != 0) { NHOPS_WUNLOCK(ctl); DPRINTF("Unable to allocate mpath index"); consider_resize(ctl, new_num_buckets, new_num_items); @@ -196,7 +196,7 @@ unlink_nhgrp(struct nh_control *ctl, struct nhgrp_priv *key) } idx = nhg_priv_ret->nhg_idx; - ret = bitmask_free_idx(&ctl->gr_idx_head, idx); + ret = bitmask_free_idx(&ctl->nh_idx_head, idx); nhg_priv_ret->nhg_idx = 0; nhg_priv_ret->nh_control = NULL; @@ -243,8 +243,8 @@ consider_resize(struct nh_control *ctl, uint32_t new_gr_bucket, uint32_t new_idx CHT_SLIST_RESIZE(&ctl->gr_head, mpath, gr_ptr, new_gr_bucket); } if (gr_idx_ptr != NULL) { - if (bitmask_copy(&ctl->gr_idx_head, gr_idx_ptr, new_idx_items) == 0) - bitmask_swap(&ctl->gr_idx_head, gr_idx_ptr, new_idx_items, &old_idx_ptr); + if (bitmask_copy(&ctl->nh_idx_head, gr_idx_ptr, new_idx_items) == 0) + bitmask_swap(&ctl->nh_idx_head, gr_idx_ptr, new_idx_items, &old_idx_ptr); } NHOPS_WUNLOCK(ctl); @@ -261,8 +261,8 @@ bool nhgrp_ctl_alloc_default(struct nh_control *ctl, int malloc_flags) { size_t alloc_size; - uint32_t num_buckets, num_items; - void *cht_ptr, *mask_ptr; + uint32_t num_buckets; + void *cht_ptr; malloc_flags = (malloc_flags & (M_NOWAIT | M_WAITOK)) | M_ZERO; @@ -275,29 +275,16 @@ nhgrp_ctl_alloc_default(struct nh_control *ctl, int malloc_flags) return (false); } - /* - * Allocate nexthop index bitmask. - */ - num_items = 128; - mask_ptr = malloc(bitmask_get_size(num_items), M_NHOP, malloc_flags); - if (mask_ptr == NULL) { - DPRINTF("mpath bitmask init failed"); - free(cht_ptr, M_NHOP); - return (false); - } - NHOPS_WLOCK(ctl); if (ctl->gr_head.hash_size == 0) { /* Init hash and bitmask */ CHT_SLIST_INIT(&ctl->gr_head, cht_ptr, num_buckets); - bitmask_init(&ctl->gr_idx_head, mask_ptr, num_items); NHOPS_WUNLOCK(ctl); } else { /* Other thread has already initiliazed hash/bitmask */ NHOPS_WUNLOCK(ctl); free(cht_ptr, M_NHOP); - free(mask_ptr, M_NHOP); } DPRINTF("mpath init done for fib/af %d/%d", ctl->rh->rib_fibnum, @@ -315,18 +302,14 @@ nhgrp_ctl_init(struct nh_control *ctl) * routes will not be necessarily used. */ CHT_SLIST_INIT(&ctl->gr_head, NULL, 0); - bitmask_init(&ctl->gr_idx_head, NULL, 0); return (0); } void nhgrp_ctl_free(struct nh_control *ctl) { - if (ctl->gr_head.ptr != NULL) free(ctl->gr_head.ptr, M_NHOP); - if (ctl->gr_idx_head.idx != NULL) - free(ctl->gr_idx_head.idx, M_NHOP); } void diff --git a/sys/net/route/nhop_var.h b/sys/net/route/nhop_var.h index 4ce82dd4a968..76984df0497f 100644 --- a/sys/net/route/nhop_var.h +++ b/sys/net/route/nhop_var.h @@ -57,7 +57,6 @@ struct nh_control { struct nhops_head nh_head; /* hash table head */ struct bitmask_head nh_idx_head; /* nhop index head */ struct nhgroups_head gr_head; /* nhgrp hash table head */ - struct bitmask_head gr_idx_head; /* nhgrp index head */ struct rwlock ctl_lock; /* overall ctl lock */ struct rib_head *ctl_rh; /* pointer back to rnh */ struct epoch_context ctl_epoch_ctx; /* epoch ctl helper */ From nobody Fri Oct 8 09:25:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 16F5517E4E5E; Fri, 8 Oct 2021 09: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 4HQjTh08cJz3HBP; Fri, 8 Oct 2021 09: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 D543824B46; Fri, 8 Oct 2021 09:25: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 1989PREx066948; Fri, 8 Oct 2021 09: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 1989PRgf066947; Fri, 8 Oct 2021 09:25:27 GMT (envelope-from git) Date: Fri, 8 Oct 2021 09:25:27 GMT Message-Id: <202110080925.1989PRgf066947@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: 174aad047e12 - main - vm_fault: do not trigger OOM too early List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 174aad047e12e8f30f9a5919ca1c08919441a217 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=174aad047e12e8f30f9a5919ca1c08919441a217 commit 174aad047e12e8f30f9a5919ca1c08919441a217 Author: Konstantin Belousov AuthorDate: 2021-10-04 06:36:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-08 09:24:46 +0000 vm_fault: do not trigger OOM too early Wakeup in vm_waitpfault() does not mean that the thread would get the page on the next vm_page_alloc() call, other thread might steal the free page we were waiting for. On the other hand, this wakeup might come much earlier than just vm_pfault_oom_wait seconds, if the rate of the page reclamation is high enough. If wakeups come fast and we loose the allocation race enough times, OOM could be undeservably triggered much earlier than vm_pfault_oom_attempts x vm_pfault_oom_wait seconds. Fix it by not counting the number of sleeps, but measuring the time to th first allocation failure, and triggering OOM when it was older than oom_attempts x oom_wait seconds. Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D32287 --- sys/vm/vm_fault.c | 52 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 5cfe7d1ae315..8a4b5a543dd6 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -125,7 +125,8 @@ struct faultstate { vm_prot_t fault_type; vm_prot_t prot; int fault_flags; - int oom; + struct timeval oom_start_time; + bool oom_started; boolean_t wired; /* Page reference for cow. */ @@ -1073,6 +1074,38 @@ vm_fault_zerofill(struct faultstate *fs) vm_page_valid(fs->m); } +/* + * Initiate page fault after timeout. Returns true if caller should + * do vm_waitpfault() after the call. + */ +static bool +vm_fault_allocate_oom(struct faultstate *fs) +{ + struct timeval now; + + unlock_and_deallocate(fs); + if (vm_pfault_oom_attempts < 0) + return (true); + if (!fs->oom_started) { + fs->oom_started = true; + getmicrotime(&fs->oom_start_time); + return (true); + } + + getmicrotime(&now); + timevalsub(&now, &fs->oom_start_time); + if (now.tv_sec < vm_pfault_oom_attempts * vm_pfault_oom_wait) + return (true); + + if (bootverbose) + printf( + "proc %d (%s) failed to alloc page on fault, starting OOM\n", + curproc->p_pid, curproc->p_comm); + vm_pageout_oom(VM_OOM_MEM_PF); + fs->oom_started = false; + return (false); +} + /* * Allocate a page directly or via the object populate method. */ @@ -1136,22 +1169,11 @@ vm_fault_allocate(struct faultstate *fs) fs->m = vm_page_alloc(fs->object, fs->pindex, alloc_req); } if (fs->m == NULL) { - unlock_and_deallocate(fs); - if (vm_pfault_oom_attempts < 0 || - fs->oom < vm_pfault_oom_attempts) { - fs->oom++; + if (vm_fault_allocate_oom(fs)) vm_waitpfault(dset, vm_pfault_oom_wait * hz); - } else { - if (bootverbose) - printf( - "proc %d (%s) failed to alloc page on fault, starting OOM\n", - curproc->p_pid, curproc->p_comm); - vm_pageout_oom(VM_OOM_MEM_PF); - fs->oom = 0; - } return (KERN_RESOURCE_SHORTAGE); } - fs->oom = 0; + fs->oom_started = false; return (KERN_NOT_RECEIVER); } @@ -1300,7 +1322,7 @@ vm_fault(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, fs.fault_flags = fault_flags; fs.map = map; fs.lookup_still_valid = false; - fs.oom = 0; + fs.oom_started = false; faultcount = 0; nera = -1; hardfault = false; From nobody Fri Oct 8 09:34:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8ABAB17E6DFB; Fri, 8 Oct 2021 09:34: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 4HQjgZ3FZJz3KRs; Fri, 8 Oct 2021 09:34: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 4F58E24BB6; Fri, 8 Oct 2021 09:34: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 1989Y2FL079883; Fri, 8 Oct 2021 09:34:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1989Y2uG079882; Fri, 8 Oct 2021 09:34:02 GMT (envelope-from git) Date: Fri, 8 Oct 2021 09:34:02 GMT Message-Id: <202110080934.1989Y2uG079882@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Michael Tuexen Subject: git: bd19202c92e3 - main - sctp: improve KASSERT messages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: bd19202c92e3d73e90aedd518f0963797744e50f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by tuexen: URL: https://cgit.FreeBSD.org/src/commit/?id=bd19202c92e3d73e90aedd518f0963797744e50f commit bd19202c92e3d73e90aedd518f0963797744e50f Author: Michael Tuexen AuthorDate: 2021-10-08 09:32:55 +0000 Commit: Michael Tuexen CommitDate: 2021-10-08 09:33:56 +0000 sctp: improve KASSERT messages MFC after: 1 week --- sys/netinet/sctp_ss_functions.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/netinet/sctp_ss_functions.c b/sys/netinet/sctp_ss_functions.c index c08bec07c588..23b1dc20e4cf 100644 --- a/sys/netinet/sctp_ss_functions.c +++ b/sys/netinet/sctp_ss_functions.c @@ -165,20 +165,20 @@ sctp_ss_default_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, { struct sctp_stream_out *strq, *strqt; - if (asoc->ss_data.locked_on_sending) { + if (asoc->ss_data.locked_on_sending != NULL) { KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled, - ("strq %p not scheduled", + ("locked_on_sending %p not scheduled", (void *)asoc->ss_data.locked_on_sending)); return (asoc->ss_data.locked_on_sending); } strqt = asoc->ss_data.last_out_stream; + KASSERT(strqt == NULL || strqt->ss_params.scheduled, + ("last_out_stream %p not scheduled", (void *)strqt)); default_again: /* Find the next stream to use */ if (strqt == NULL) { strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - KASSERT(strqt->ss_params.scheduled, - ("strq %p not scheduled", (void *)strqt)); strq = TAILQ_NEXT(strqt, ss_params.ss.rr.next_spoke); if (strq == NULL) { strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); @@ -332,13 +332,13 @@ sctp_ss_rrp_packet_done(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net struct sctp_stream_out *strq, *strqt; strqt = asoc->ss_data.last_out_stream; + KASSERT(strqt == NULL || strqt->ss_params.scheduled, + ("last_out_stream %p not scheduled", (void *)strqt)); rrp_again: /* Find the next stream to use */ if (strqt == NULL) { strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - KASSERT(strqt->ss_params.scheduled, - ("strq %p not scheduled", (void *)strqt)); strq = TAILQ_NEXT(strqt, ss_params.ss.rr.next_spoke); if (strq == NULL) { strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); @@ -484,20 +484,20 @@ sctp_ss_prio_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, { struct sctp_stream_out *strq, *strqt, *strqn; - if (asoc->ss_data.locked_on_sending) { + if (asoc->ss_data.locked_on_sending != NULL) { KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled, - ("strq %p not scheduled", + ("locked_on_sending %p not scheduled", (void *)asoc->ss_data.locked_on_sending)); return (asoc->ss_data.locked_on_sending); } strqt = asoc->ss_data.last_out_stream; + KASSERT(strqt == NULL || strqt->ss_params.scheduled, + ("last_out_stream %p not scheduled", (void *)strqt)); prio_again: /* Find the next stream to use */ if (strqt == NULL) { strq = TAILQ_FIRST(&asoc->ss_data.out.wheel); } else { - KASSERT(strqt->ss_params.scheduled, - ("strq %p not scheduled", (void *)strqt)); strqn = TAILQ_NEXT(strqt, ss_params.ss.prio.next_spoke); if (strqn != NULL && strqn->ss_params.ss.prio.priority == strqt->ss_params.ss.prio.priority) { @@ -656,9 +656,9 @@ sctp_ss_fb_select(struct sctp_tcb *stcb SCTP_UNUSED, struct sctp_nets *net, { struct sctp_stream_out *strq = NULL, *strqt; - if (asoc->ss_data.locked_on_sending) { + if (asoc->ss_data.locked_on_sending != NULL) { KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled, - ("strq %p not scheduled", + ("locked_on_sending %p not scheduled", (void *)asoc->ss_data.locked_on_sending)); return (asoc->ss_data.locked_on_sending); } From nobody Fri Oct 8 10:25:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6E94317EB8A8; Fri, 8 Oct 2021 10:25: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 4HQkpY2mMNz3MY6; Fri, 8 Oct 2021 10:25: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 33A502561D; Fri, 8 Oct 2021 10:25: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 198AP9M2046892; Fri, 8 Oct 2021 10:25:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198AP9Zd046891; Fri, 8 Oct 2021 10:25:09 GMT (envelope-from git) Date: Fri, 8 Oct 2021 10:25:09 GMT Message-Id: <202110081025.198AP9Zd046891@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: 526370fb85db - main - net80211: proper ssid length check in setmlme_assoc_adhoc() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 526370fb85db4b659cff4625eb2f379acaa4a1a8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=526370fb85db4b659cff4625eb2f379acaa4a1a8 commit 526370fb85db4b659cff4625eb2f379acaa4a1a8 Author: Bjoern A. Zeeb AuthorDate: 2021-10-06 18:41:37 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-10-08 10:23:31 +0000 net80211: proper ssid length check in setmlme_assoc_adhoc() A user supplied SSID length is used without proper checks in setmlme_assoc_adhoc() which can lead to copies beyond the end of the user supplied buffer. The ssid is a fixed size array for the ioctl and the argument to setmlme_assoc_adhoc(). In addition to an ssid_len check of 0 also error in case the ssid_len is larger than the size of the ssid array to prevent problems. PR: 254737 Reported by: Tommaso (cutesmilee.research protonmail.com) MFC after: 3 days Reviewed by: emaste, adrian Differential Revision: https://reviews.freebsd.org/D32341 --- sys/net80211/ieee80211_ioctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c index 2fef9ac0084a..b0339d996999 100644 --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -1591,7 +1591,7 @@ setmlme_assoc_adhoc(struct ieee80211vap *vap, ("expected opmode IBSS or AHDEMO not %s", ieee80211_opmode_name[vap->iv_opmode])); - if (ssid_len == 0) + if (ssid_len == 0 || ssid_len > sizeof(ssid)) return EINVAL; sr = IEEE80211_MALLOC(sizeof(*sr), M_TEMP, From nobody Fri Oct 8 10:27:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 55F0D17EBD40; Fri, 8 Oct 2021 10:27: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 4HQksX1y9lz3NJd; Fri, 8 Oct 2021 10:27: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 19D952561F; Fri, 8 Oct 2021 10:27: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 198ARiQx047175; Fri, 8 Oct 2021 10:27:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198ARiCL047174; Fri, 8 Oct 2021 10:27:44 GMT (envelope-from git) Date: Fri, 8 Oct 2021 10:27:44 GMT Message-Id: <202110081027.198ARiCL047174@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: 09dd08f16781 - main - net80211: correct length check in ieee80211_ies_expand() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 09dd08f167812a5fdb516fc98f14dbb43221432f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=09dd08f167812a5fdb516fc98f14dbb43221432f commit 09dd08f167812a5fdb516fc98f14dbb43221432f Author: Bjoern A. Zeeb AuthorDate: 2021-10-06 18:09:39 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-10-08 10:26:22 +0000 net80211: correct length check in ieee80211_ies_expand() In ieee80211_ies_expand() we are looping over Elements (also known as Information Elements or IEs). The comment suggests that we assume well-formedness of the IEs themselves. Checking the buffer length being least 2 (1 byte Element ID and 1 byte Length fields) rather than just 1 before accessing ie[1] is still good practise and can prevent and out-of-bounds read in case the input is not behaving according to the comment. Reported by: (coypu sdf.org) admbugs: 857 MFC after: 3 days Reviewed by: adrian, markj Differential Revision: https://reviews.freebsd.org/D32340 --- sys/net80211/ieee80211_node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index d71503d28179..95bed7821d16 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -1133,7 +1133,7 @@ ieee80211_ies_expand(struct ieee80211_ies *ies) ie = ies->data; ielen = ies->len; - while (ielen > 0) { + while (ielen > 1) { switch (ie[0]) { case IEEE80211_ELEMID_VENDOR: if (iswpaoui(ie)) From nobody Fri Oct 8 10:30:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 15EF217EC7C4; Fri, 8 Oct 2021 10:30: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 4HQkwF09Qfz3Ntl; Fri, 8 Oct 2021 10:30: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 D5AF5255A6; Fri, 8 Oct 2021 10:30: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 198AU4p6049680; Fri, 8 Oct 2021 10:30:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198AU4dI049677; Fri, 8 Oct 2021 10:30:04 GMT (envelope-from git) Date: Fri, 8 Oct 2021 10:30:04 GMT Message-Id: <202110081030.198AU4dI049677@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: 76f3b8cb6405 - main - USB: adjust the Generic XHCI ACPI probe return value List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 76f3b8cb640536de2c370cc2bd60382bbc35cf5d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=76f3b8cb640536de2c370cc2bd60382bbc35cf5d commit 76f3b8cb640536de2c370cc2bd60382bbc35cf5d Author: Bjoern A. Zeeb AuthorDate: 2021-10-01 13:37:01 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-10-08 10:28:44 +0000 USB: adjust the Generic XHCI ACPI probe return value Change the probe return value from BUS_PROBE_DEFAULT to BUS_PROBE_GENERIC given this is the "generic" attach method. This allows individual drivers using XHCI generic but needing their own intialisation to gain priority for attaching over the generic implementation. Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D32257 --- sys/dev/usb/controller/generic_xhci_acpi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/usb/controller/generic_xhci_acpi.c b/sys/dev/usb/controller/generic_xhci_acpi.c index 80ad8ca4e8a4..1594fa8c6670 100644 --- a/sys/dev/usb/controller/generic_xhci_acpi.c +++ b/sys/dev/usb/controller/generic_xhci_acpi.c @@ -64,7 +64,7 @@ generic_xhci_acpi_probe(device_t dev) device_set_desc(dev, XHCI_HC_DEVSTR); - return (BUS_PROBE_DEFAULT); + return (BUS_PROBE_GENERIC); } static device_method_t xhci_acpi_methods[] = { From nobody Fri Oct 8 11:25:33 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4CC9517F1865; Fri, 8 Oct 2021 11:25: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 4HQm8G1jVtz3jYL; Fri, 8 Oct 2021 11:25: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 166612632C; Fri, 8 Oct 2021 11:25: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 198BPXRH026389; Fri, 8 Oct 2021 11:25:33 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198BPXDN026388; Fri, 8 Oct 2021 11:25:33 GMT (envelope-from git) Date: Fri, 8 Oct 2021 11:25:33 GMT Message-Id: <202110081125.198BPXDN026388@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: 0525ece3554e - main - net80211: fix build for 526370fb85db4b659cff4625eb2f379acaa4a1a8 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 0525ece3554edce14fa68a7fb61078ae2110c44b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=0525ece3554edce14fa68a7fb61078ae2110c44b commit 0525ece3554edce14fa68a7fb61078ae2110c44b Author: Bjoern A. Zeeb AuthorDate: 2021-10-08 11:21:44 +0000 Commit: Bjoern A. Zeeb CommitDate: 2021-10-08 11:21:44 +0000 net80211: fix build for 526370fb85db4b659cff4625eb2f379acaa4a1a8 In 526370fb85db4b659cff4625eb2f379acaa4a1a8 "net80211: proper ssid length check in setmlme_assoc_adhoc()" we are checking the sizeof on an array function parameter which leads to a warning that it will resturn the size of the type of the array rather than the array size itself. Use the defined length used both in the ioctl and the sizing of the array function parameter instead. Reported by: CI MFC after: 3 days X-MFC with: 526370fb85db4b659cff4625eb2f379acaa4a1a8 --- sys/net80211/ieee80211_ioctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c index b0339d996999..419518eb1224 100644 --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -1591,7 +1591,7 @@ setmlme_assoc_adhoc(struct ieee80211vap *vap, ("expected opmode IBSS or AHDEMO not %s", ieee80211_opmode_name[vap->iv_opmode])); - if (ssid_len == 0 || ssid_len > sizeof(ssid)) + if (ssid_len == 0 || ssid_len > IEEE80211_NWID_LEN) return EINVAL; sr = IEEE80211_MALLOC(sizeof(*sr), M_TEMP, From nobody Fri Oct 8 14:49:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DC3D617E08C6; Fri, 8 Oct 2021 14:49: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 4HQrgV5nQZz4bjV; Fri, 8 Oct 2021 14:49: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 A2CC6CE2; Fri, 8 Oct 2021 14:49: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 198EnQIp094535; Fri, 8 Oct 2021 14:49:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198EnQ0S094534; Fri, 8 Oct 2021 14:49:26 GMT (envelope-from git) Date: Fri, 8 Oct 2021 14:49:26 GMT Message-Id: <202110081449.198EnQ0S094534@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: 1c680e620bf7 - main - pf: do not copy anchor_wildcard / anchor_relative from userspace List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 1c680e620bf7e53d043d10b23bdfc980e45e6455 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=1c680e620bf7e53d043d10b23bdfc980e45e6455 commit 1c680e620bf7e53d043d10b23bdfc980e45e6455 Author: Kristof Provost AuthorDate: 2021-10-08 13:13:21 +0000 Commit: Kristof Provost CommitDate: 2021-10-08 12:46:59 +0000 pf: do not copy anchor_wildcard / anchor_relative from userspace We overwrite these fields again in pf_kanchor_setup() anyway. MFC after: 2 weeks Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/netpfil/pf/pf_ioctl.c | 2 -- sys/netpfil/pf/pf_nv.c | 2 -- 2 files changed, 4 deletions(-) diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c index 3242c51a2c66..89ab2b08c64a 100644 --- a/sys/netpfil/pf/pf_ioctl.c +++ b/sys/netpfil/pf/pf_ioctl.c @@ -1812,8 +1812,6 @@ pf_rule_to_krule(const struct pf_rule *rule, struct pf_krule *krule) krule->return_ttl = rule->return_ttl; krule->tos = rule->tos; krule->set_tos = rule->set_tos; - krule->anchor_relative = rule->anchor_relative; - krule->anchor_wildcard = rule->anchor_wildcard; krule->flush = rule->flush; krule->prio = rule->prio; diff --git a/sys/netpfil/pf/pf_nv.c b/sys/netpfil/pf/pf_nv.c index fb2bab77ad8f..73f0c55a7a21 100644 --- a/sys/netpfil/pf/pf_nv.c +++ b/sys/netpfil/pf/pf_nv.c @@ -595,8 +595,6 @@ pf_nvrule_to_krule(const nvlist_t *nvl, struct pf_krule *rule) PFNV_CHK(pf_nvuint8(nvl, "return_ttl", &rule->return_ttl)); PFNV_CHK(pf_nvuint8(nvl, "tos", &rule->tos)); PFNV_CHK(pf_nvuint8(nvl, "set_tos", &rule->set_tos)); - PFNV_CHK(pf_nvuint8(nvl, "anchor_relative", &rule->anchor_relative)); - PFNV_CHK(pf_nvuint8(nvl, "anchor_wildcard", &rule->anchor_wildcard)); PFNV_CHK(pf_nvuint8(nvl, "flush", &rule->flush)); PFNV_CHK(pf_nvuint8(nvl, "prio", &rule->prio)); From nobody Fri Oct 8 15:09:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 96B7917E3000; Fri, 8 Oct 2021 15: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 4HQs683rm7z4dJp; Fri, 8 Oct 2021 15: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 603201147; Fri, 8 Oct 2021 15: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 198F94nl022515; Fri, 8 Oct 2021 15: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 198F94HG022514; Fri, 8 Oct 2021 15:09:04 GMT (envelope-from git) Date: Fri, 8 Oct 2021 15:09:04 GMT Message-Id: <202110081509.198F94HG022514@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Piotr Pawel Stefaniak Subject: git: bf8f6ffcb66a - main - Mention kern.timecounter.alloweddeviation in nanosleep.1 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pstef X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: bf8f6ffcb66a27f498a18e520758ea0d18a6d2de Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by pstef: URL: https://cgit.FreeBSD.org/src/commit/?id=bf8f6ffcb66a27f498a18e520758ea0d18a6d2de commit bf8f6ffcb66a27f498a18e520758ea0d18a6d2de Author: Piotr Pawel Stefaniak AuthorDate: 2021-10-07 19:14:27 +0000 Commit: Piotr Pawel Stefaniak CommitDate: 2021-10-08 15:07:50 +0000 Mention kern.timecounter.alloweddeviation in nanosleep.1 PR: 224837 Reported by: Aleksander Derevianko --- lib/libc/sys/nanosleep.2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/libc/sys/nanosleep.2 b/lib/libc/sys/nanosleep.2 index 19ffcf1b7026..12758a974f7f 100644 --- a/lib/libc/sys/nanosleep.2 +++ b/lib/libc/sys/nanosleep.2 @@ -30,7 +30,7 @@ .\" @(#)sleep.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd March 17, 2017 +.Dd October 7, 2021 .Dt NANOSLEEP 2 .Os .Sh NAME @@ -93,6 +93,8 @@ returns immediately and the calling thread is not suspended. .Pp The suspension time may be longer than requested due to the scheduling of other activity by the system. +It is also subject to the allowed time interval deviation +specified by the sysctl kern.timecounter.alloweddeviation. An unmasked signal will terminate the sleep early, regardless of the .Dv SA_RESTART value on the interrupting signal. From nobody Fri Oct 8 15:14:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 633A517E3F60; Fri, 8 Oct 2021 15:14:00 +0000 (UTC) (envelope-from pstef@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.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 4HQsCr2Nglz4fM8; Fri, 8 Oct 2021 15:14:00 +0000 (UTC) (envelope-from pstef@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633706040; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=umdmqqYAwCOWq7fVRJurwyWE6DwWUSm3zyOeHxx/tyE=; b=dAPeXXeAsn3ZE2VtwweZPXL/H6qiBXlK2CyV1SD1MurprEotG1VLxooxJzpz71E9cO7r6A Y9o0dvmVyvjN5IQ4PjDdMSnQwInjiPJyNEIdtv1puiSU25dhGPIbj4pTuVb7a2MQr29V/Y TaZMGX+CF49khupKtmNr14I8a3Y++N510G20nAQdlRyc1aIyiYaMEvGzSX24tQ5tlyLXWX qwuU6mEw2Mu2edBf4Bpp7CLNqZrpPtiQusB7LL6XBfOT/qCfqT1RBKStTxqY1/kmRBjfX2 Y89XO0wWik9VhJQJ9qYXkhRAwH27Mk7mkV4nyI+/nLaKq2UAM6cPx2LtbIP67A== Received: by freefall.freebsd.org (Postfix, from userid 1403) id 379EB1E1AE; Fri, 8 Oct 2021 15:14:00 +0000 (UTC) Date: Fri, 8 Oct 2021 15:14:00 +0000 From: "Piotr P. Stefaniak" To: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bf8f6ffcb66a - main - Mention kern.timecounter.alloweddeviation in nanosleep.1 Message-ID: References: <202110081509.198F94HG022514@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <202110081509.198F94HG022514@gitrepo.freebsd.org> ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633706040; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=umdmqqYAwCOWq7fVRJurwyWE6DwWUSm3zyOeHxx/tyE=; b=oJfqivwR6cE/DGEk7zs76F7gEWkM/ZbpUIl0O4v80bWgxBP/qmLnwpTRXXX6RHdDZSrgZN jrkNoTlGVJRP/CunRyeWIs+iqCEPs4d4Lh12CDwvaQRScT/X1lbmBuOuupeRFsy07VVq3m WaQ9Uylait4o/NFFmFhO9mTXvjyOwCBl6wAxzc4PF1h+764t1/0lBSDTL1Q5NhSm2HygMe O9G4zJoaWT0NBP6D15fD3w8mtNgdi6M9FMbfkZzA6EHevZHmo3TO3qAUhQBJQp709ks7TI RDQZek0XEh+8P6Liyj10+Hicxki9yEQkXl/cibuNsORJMHcW+zwN6VPhoCkWeg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1633706040; a=rsa-sha256; cv=none; b=CJ0tR6keO8MP8ZAR+6jcAygc+gZGzTQUoLZ5UvfEMHqtAHq0wGth6Td0QAWGvImeVMCNCl m/M2cLkhlKPZNO2oWw6a0if+vhIRcMFOzMcHQvNGMfb7gh4yN5KJVfHYJ/ZS329HeoWi8Q KK9kF0VfD9Qh7i8ZDc4hfPTOaRwsoIVlp1wpdP3iccIZrwDumt68vFvNGRODUaW4e9y5b4 hdR7CBKA5gIfaPyAtzFcuYI0OeXpHpYr/N215TG/exDUFCRCMU0DxiVyUMdO11nc0Rg+Fx ATL5B815qR+L5P2JTi85vn3U6zYmxyffb4qTj+sn+4F/IOAllFgUPfEGNjxQow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N On 2021-10-08 15:09:04, Piotr Pawel Stefaniak wrote: >The branch main has been updated by pstef: > Mention kern.timecounter.alloweddeviation in nanosleep.1 Sorry, wrong section. > lib/libc/sys/nanosleep.2 | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) From nobody Fri Oct 8 16:08:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9F7A017E9624; Fri, 8 Oct 2021 16:08: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 4HQtRB476gz4jqG; Fri, 8 Oct 2021 16:08: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 6D0381DED; Fri, 8 Oct 2021 16:08: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 198G8s8N001836; Fri, 8 Oct 2021 16:08:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G8sWh001835; Fri, 8 Oct 2021 16:08:54 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:08:54 GMT Message-Id: <202110081608.198G8sWh001835@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 698cff10c981 - stable/12 - loader: cstyle cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 698cff10c98183f984f6db8c68594fd17cb79fe1 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=698cff10c98183f984f6db8c68594fd17cb79fe1 commit 698cff10c98183f984f6db8c68594fd17cb79fe1 Author: Toomas Soome AuthorDate: 2020-07-19 06:59:09 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 07:57:28 +0000 loader: cstyle cleanup No functional changes intended. (cherry picked from commit 97dd57e66c32a9a74549822a599ca77e50c7ff82) --- stand/i386/loader/main.c | 481 +++++++++++++++++++++++++---------------------- 1 file changed, 251 insertions(+), 230 deletions(-) diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c index a4a3bde3cc7c..d28d4dc704bf 100644 --- a/stand/i386/loader/main.c +++ b/stand/i386/loader/main.c @@ -95,164 +95,172 @@ ptov(uintptr_t x) int main(void) { - int i; - - /* Pick up arguments */ - kargs = (void *)__args; - initial_howto = kargs->howto; - initial_bootdev = kargs->bootdev; - initial_bootinfo = kargs->bootinfo ? (struct bootinfo *)PTOV(kargs->bootinfo) : NULL; - - /* Initialize the v86 register set to a known-good state. */ - bzero(&v86, sizeof(v86)); - v86.efl = PSL_RESERVED_DEFAULT | PSL_I; - - /* - * Initialise the heap as early as possible. Once this is done, malloc() is usable. - */ - bios_getmem(); + int i; + + /* Pick up arguments */ + kargs = (void *)__args; + initial_howto = kargs->howto; + initial_bootdev = kargs->bootdev; + initial_bootinfo = kargs->bootinfo ? + (struct bootinfo *)PTOV(kargs->bootinfo) : NULL; + + /* Initialize the v86 register set to a known-good state. */ + bzero(&v86, sizeof(v86)); + v86.efl = PSL_RESERVED_DEFAULT | PSL_I; + + /* + * Initialise the heap as early as possible. + * Once this is done, malloc() is usable. + */ + bios_getmem(); #if defined(LOADER_BZIP2_SUPPORT) || defined(LOADER_FIREWIRE_SUPPORT) || \ defined(LOADER_GPT_SUPPORT) || defined(LOADER_ZFS_SUPPORT) - if (high_heap_size > 0) { - heap_top = PTOV(high_heap_base + high_heap_size); - heap_bottom = PTOV(high_heap_base); - if (high_heap_base < memtop_copyin) - memtop_copyin = high_heap_base; - } else + if (high_heap_size > 0) { + heap_top = PTOV(high_heap_base + high_heap_size); + heap_bottom = PTOV(high_heap_base); + if (high_heap_base < memtop_copyin) + memtop_copyin = high_heap_base; + } else #endif - { - heap_top = (void *)PTOV(bios_basemem); - heap_bottom = (void *)end; - } - setheap(heap_bottom, heap_top); - - /* - * XXX Chicken-and-egg problem; we want to have console output early, but some - * console attributes may depend on reading from eg. the boot device, which we - * can't do yet. - * - * We can use printf() etc. once this is done. - * If the previous boot stage has requested a serial console, prefer that. - */ - bi_setboothowto(initial_howto); - if (initial_howto & RB_MULTIPLE) { - if (initial_howto & RB_SERIAL) - setenv("console", "comconsole vidconsole", 1); - else - setenv("console", "vidconsole comconsole", 1); - } else if (initial_howto & RB_SERIAL) - setenv("console", "comconsole", 1); - else if (initial_howto & RB_MUTE) - setenv("console", "nullconsole", 1); - cons_probe(); - - /* - * Initialise the block cache. Set the upper limit. - */ - bcache_init(32768, 512); - - /* - * Special handling for PXE and CD booting. - */ - if (kargs->bootinfo == 0) { + { + heap_top = (void *)PTOV(bios_basemem); + heap_bottom = (void *)end; + } + setheap(heap_bottom, heap_top); + /* - * We only want the PXE disk to try to init itself in the below - * walk through devsw if we actually booted off of PXE. + * XXX Chicken-and-egg problem; we want to have console output early, + * but some console attributes may depend on reading from eg. the boot + * device, which we can't do yet. + * + * We can use printf() etc. once this is done. + * If the previous boot stage has requested a serial console, + * prefer that. */ - if (kargs->bootflags & KARGS_FLAGS_PXE) - pxe_enable(kargs->pxeinfo ? PTOV(kargs->pxeinfo) : NULL); - else if (kargs->bootflags & KARGS_FLAGS_CD) - bc_add(initial_bootdev); - } - - archsw.arch_autoload = i386_autoload; - archsw.arch_getdev = i386_getdev; - archsw.arch_copyin = i386_copyin; - archsw.arch_copyout = i386_copyout; - archsw.arch_readin = i386_readin; - archsw.arch_isainb = isa_inb; - archsw.arch_isaoutb = isa_outb; - archsw.arch_hypervisor = x86_hypervisor; + bi_setboothowto(initial_howto); + if (initial_howto & RB_MULTIPLE) { + if (initial_howto & RB_SERIAL) + setenv("console", "comconsole vidconsole", 1); + else + setenv("console", "vidconsole comconsole", 1); + } else if (initial_howto & RB_SERIAL) { + setenv("console", "comconsole", 1); + } else if (initial_howto & RB_MUTE) { + setenv("console", "nullconsole", 1); + } + cons_probe(); + + /* + * Initialise the block cache. Set the upper limit. + */ + bcache_init(32768, 512); + + /* + * Special handling for PXE and CD booting. + */ + if (kargs->bootinfo == 0) { + /* + * We only want the PXE disk to try to init itself in the below + * walk through devsw if we actually booted off of PXE. + */ + if (kargs->bootflags & KARGS_FLAGS_PXE) + pxe_enable(kargs->pxeinfo ? + PTOV(kargs->pxeinfo) : NULL); + else if (kargs->bootflags & KARGS_FLAGS_CD) + bc_add(initial_bootdev); + } + + archsw.arch_autoload = i386_autoload; + archsw.arch_getdev = i386_getdev; + archsw.arch_copyin = i386_copyin; + archsw.arch_copyout = i386_copyout; + archsw.arch_readin = i386_readin; + archsw.arch_isainb = isa_inb; + archsw.arch_isaoutb = isa_outb; + archsw.arch_hypervisor = x86_hypervisor; #ifdef LOADER_ZFS_SUPPORT - archsw.arch_zfs_probe = i386_zfs_probe; + archsw.arch_zfs_probe = i386_zfs_probe; - /* - * zfsboot and gptzfsboot have always passed KARGS_FLAGS_ZFS, so if that is - * set along with KARGS_FLAGS_EXTARG we know we can interpret the extarg - * data as a struct zfs_boot_args. - */ + /* + * zfsboot and gptzfsboot have always passed KARGS_FLAGS_ZFS, + * so if that is set along with KARGS_FLAGS_EXTARG we know we + * can interpret the extarg data as a struct zfs_boot_args. + */ #define KARGS_EXTARGS_ZFS (KARGS_FLAGS_EXTARG | KARGS_FLAGS_ZFS) - if ((kargs->bootflags & KARGS_EXTARGS_ZFS) == KARGS_EXTARGS_ZFS) { - zargs = (struct zfs_boot_args *)(kargs + 1); - } + if ((kargs->bootflags & KARGS_EXTARGS_ZFS) == KARGS_EXTARGS_ZFS) { + zargs = (struct zfs_boot_args *)(kargs + 1); + } #endif /* LOADER_ZFS_SUPPORT */ #ifdef LOADER_GELI_SUPPORT - /* - * If we decided earlier that we have zfs_boot_args extarg data, and it is - * big enough to contain the embedded geli data (the early zfs_boot_args - * structs weren't), then init the gbdata pointer accordingly. If there is - * extarg data which isn't zfs_boot_args data, determine whether it is - * geli_boot_args data. Recent versions of gptboot set KARGS_FLAGS_GELI to - * indicate that. Earlier versions didn't, but we presume that's what we - * have if the extarg size exactly matches the size of the geli_boot_args - * struct during that pre-flag era. - */ + /* + * If we decided earlier that we have zfs_boot_args extarg data, + * and it is big enough to contain the embedded geli data + * (the early zfs_boot_args structs weren't), then init the gbdata + * pointer accordingly. If there is extarg data which isn't + * zfs_boot_args data, determine whether it is geli_boot_args data. + * Recent versions of gptboot set KARGS_FLAGS_GELI to indicate that. + * Earlier versions didn't, but we presume that's what we + * have if the extarg size exactly matches the size of the + * geli_boot_args struct during that pre-flag era. + */ #define LEGACY_GELI_ARGS_SIZE 260 /* This can never change */ #ifdef LOADER_ZFS_SUPPORT - if (zargs != NULL) { - if (zargs->size > offsetof(struct zfs_boot_args, gelidata)) { - gbdata = &zargs->gelidata; - } - } else + if (zargs != NULL) { + if (zargs->size > offsetof(struct zfs_boot_args, gelidata)) { + gbdata = &zargs->gelidata; + } + } else #endif /* LOADER_ZFS_SUPPORT */ - if ((kargs->bootflags & KARGS_FLAGS_EXTARG) != 0) { - gargs = (struct geli_boot_args *)(kargs + 1); - if ((kargs->bootflags & KARGS_FLAGS_GELI) || - gargs->size == LEGACY_GELI_ARGS_SIZE) { - gbdata = &gargs->gelidata; + if ((kargs->bootflags & KARGS_FLAGS_EXTARG) != 0) { + gargs = (struct geli_boot_args *)(kargs + 1); + if ((kargs->bootflags & KARGS_FLAGS_GELI) || + gargs->size == LEGACY_GELI_ARGS_SIZE) { + gbdata = &gargs->gelidata; + } } - } - if (gbdata != NULL) - import_geli_boot_data(gbdata); + if (gbdata != NULL) + import_geli_boot_data(gbdata); #endif /* LOADER_GELI_SUPPORT */ - /* - * March through the device switch probing for things. - */ - for (i = 0; devsw[i] != NULL; i++) - if (devsw[i]->dv_init != NULL) - (devsw[i]->dv_init)(); - printf("BIOS %dkB/%dkB available memory\n", bios_basemem / 1024, bios_extmem / 1024); - if (initial_bootinfo != NULL) { - initial_bootinfo->bi_basemem = bios_basemem / 1024; - initial_bootinfo->bi_extmem = bios_extmem / 1024; - } + /* + * March through the device switch probing for things. + */ + for (i = 0; devsw[i] != NULL; i++) + if (devsw[i]->dv_init != NULL) + (devsw[i]->dv_init)(); + + printf("BIOS %dkB/%dkB available memory\n", bios_basemem / 1024, + bios_extmem / 1024); + if (initial_bootinfo != NULL) { + initial_bootinfo->bi_basemem = bios_basemem / 1024; + initial_bootinfo->bi_extmem = bios_extmem / 1024; + } - /* detect ACPI for future reference */ - biosacpi_detect(); + /* detect ACPI for future reference */ + biosacpi_detect(); - /* detect SMBIOS for future reference */ - smbios_detect(NULL); + /* detect SMBIOS for future reference */ + smbios_detect(NULL); - /* detect PCI BIOS for future reference */ - biospci_detect(); + /* detect PCI BIOS for future reference */ + biospci_detect(); - printf("\n%s", bootprog_info); + printf("\n%s", bootprog_info); - extract_currdev(); /* set $currdev and $loaddev */ - setenv("LINES", "24", 1); /* optional */ + extract_currdev(); /* set $currdev and $loaddev */ + setenv("LINES", "24", 1); /* optional */ - bios_getsmap(); + bios_getsmap(); - interact(); + interact(); - /* if we ever get here, it is an error */ - return (1); + /* if we ever get here, it is an error */ + return (1); } /* @@ -264,92 +272,105 @@ main(void) static void extract_currdev(void) { - struct i386_devdesc new_currdev; + struct i386_devdesc new_currdev; #ifdef LOADER_ZFS_SUPPORT - char buf[20]; + char buf[20]; #endif - int biosdev = -1; - - /* Assume we are booting from a BIOS disk by default */ - new_currdev.dd.d_dev = &bioshd; - - /* new-style boot loaders such as pxeldr and cdldr */ - if (kargs->bootinfo == 0) { - if ((kargs->bootflags & KARGS_FLAGS_CD) != 0) { - /* we are booting from a CD with cdboot */ - new_currdev.dd.d_dev = &bioscd; - new_currdev.dd.d_unit = bd_bios2unit(initial_bootdev); - } else if ((kargs->bootflags & KARGS_FLAGS_PXE) != 0) { - /* we are booting from pxeldr */ - new_currdev.dd.d_dev = &pxedisk; - new_currdev.dd.d_unit = 0; - } else { - /* we don't know what our boot device is */ - new_currdev.d_kind.biosdisk.slice = -1; - new_currdev.d_kind.biosdisk.partition = 0; - biosdev = -1; - } + int biosdev = -1; + + /* Assume we are booting from a BIOS disk by default */ + new_currdev.dd.d_dev = &bioshd; + + /* new-style boot loaders such as pxeldr and cdldr */ + if (kargs->bootinfo == 0) { + if ((kargs->bootflags & KARGS_FLAGS_CD) != 0) { + /* we are booting from a CD with cdboot */ + new_currdev.dd.d_dev = &bioscd; + new_currdev.dd.d_unit = bd_bios2unit(initial_bootdev); + } else if ((kargs->bootflags & KARGS_FLAGS_PXE) != 0) { + /* we are booting from pxeldr */ + new_currdev.dd.d_dev = &pxedisk; + new_currdev.dd.d_unit = 0; + } else { + /* we don't know what our boot device is */ + new_currdev.d_kind.biosdisk.slice = -1; + new_currdev.d_kind.biosdisk.partition = 0; + biosdev = -1; + } #ifdef LOADER_ZFS_SUPPORT - } else if ((kargs->bootflags & KARGS_FLAGS_ZFS) != 0) { - /* zargs was set in main() if we have new style extended argument */ - if (zargs != NULL && - zargs->size >= offsetof(struct zfs_boot_args, primary_pool)) { - /* sufficient data is provided */ - new_currdev.d_kind.zfs.pool_guid = zargs->pool; - new_currdev.d_kind.zfs.root_guid = zargs->root; - if (zargs->size >= sizeof(*zargs) && zargs->primary_vdev != 0) { - sprintf(buf, "%llu", zargs->primary_pool); - setenv("vfs.zfs.boot.primary_pool", buf, 1); - sprintf(buf, "%llu", zargs->primary_vdev); - setenv("vfs.zfs.boot.primary_vdev", buf, 1); - } + } else if ((kargs->bootflags & KARGS_FLAGS_ZFS) != 0) { + /* + * zargs was set in main() if we have new style extended + * argument + */ + if (zargs != NULL && + zargs->size >= + offsetof(struct zfs_boot_args, primary_pool)) { + /* sufficient data is provided */ + new_currdev.d_kind.zfs.pool_guid = zargs->pool; + new_currdev.d_kind.zfs.root_guid = zargs->root; + if (zargs->size >= sizeof(*zargs) && + zargs->primary_vdev != 0) { + sprintf(buf, "%llu", zargs->primary_pool); + setenv("vfs.zfs.boot.primary_pool", buf, 1); + sprintf(buf, "%llu", zargs->primary_vdev); + setenv("vfs.zfs.boot.primary_vdev", buf, 1); + } + } else { + /* old style zfsboot block */ + new_currdev.d_kind.zfs.pool_guid = kargs->zfspool; + new_currdev.d_kind.zfs.root_guid = 0; + } + new_currdev.dd.d_dev = &zfs_dev; +#endif + } else if ((initial_bootdev & B_MAGICMASK) != B_DEVMAGIC) { + /* The passed-in boot device is bad */ + new_currdev.d_kind.biosdisk.slice = -1; + new_currdev.d_kind.biosdisk.partition = 0; + biosdev = -1; } else { - /* old style zfsboot block */ - new_currdev.d_kind.zfs.pool_guid = kargs->zfspool; - new_currdev.d_kind.zfs.root_guid = 0; + new_currdev.d_kind.biosdisk.slice = + B_SLICE(initial_bootdev) - 1; + new_currdev.d_kind.biosdisk.partition = + B_PARTITION(initial_bootdev); + biosdev = initial_bootinfo->bi_bios_dev; + + /* + * If we are booted by an old bootstrap, we have to guess at + * the BIOS unit number. We will lose if there is more than + * one disk type and we are not booting from the + * lowest-numbered disk type (ie. SCSI when IDE also exists). + */ + if ((biosdev == 0) && (B_TYPE(initial_bootdev) != 2)) { + /* + * biosdev doesn't match major, assume harddisk + */ + biosdev = 0x80 + B_UNIT(initial_bootdev); + } } - new_currdev.dd.d_dev = &zfs_dev; -#endif - } else if ((initial_bootdev & B_MAGICMASK) != B_DEVMAGIC) { - /* The passed-in boot device is bad */ - new_currdev.d_kind.biosdisk.slice = -1; - new_currdev.d_kind.biosdisk.partition = 0; - biosdev = -1; - } else { - new_currdev.d_kind.biosdisk.slice = B_SLICE(initial_bootdev) - 1; - new_currdev.d_kind.biosdisk.partition = B_PARTITION(initial_bootdev); - biosdev = initial_bootinfo->bi_bios_dev; /* - * If we are booted by an old bootstrap, we have to guess at the BIOS - * unit number. We will lose if there is more than one disk type - * and we are not booting from the lowest-numbered disk type - * (ie. SCSI when IDE also exists). + * If we are booting off of a BIOS disk and we didn't succeed + * in determining which one we booted off of, just use disk0: + * as a reasonable default. */ - if ((biosdev == 0) && (B_TYPE(initial_bootdev) != 2)) /* biosdev doesn't match major */ - biosdev = 0x80 + B_UNIT(initial_bootdev); /* assume harddisk */ - } - - /* - * If we are booting off of a BIOS disk and we didn't succeed in determining - * which one we booted off of, just use disk0: as a reasonable default. - */ - if ((new_currdev.dd.d_dev->dv_type == bioshd.dv_type) && - ((new_currdev.dd.d_unit = bd_bios2unit(biosdev)) == -1)) { - printf("Can't work out which disk we are booting from.\n" - "Guessed BIOS device 0x%x not found by probes, defaulting to disk0:\n", biosdev); - new_currdev.dd.d_unit = 0; - } + if ((new_currdev.dd.d_dev->dv_type == bioshd.dv_type) && + ((new_currdev.dd.d_unit = bd_bios2unit(biosdev)) == -1)) { + printf("Can't work out which disk we are booting " + "from.\nGuessed BIOS device 0x%x not found by " + "probes, defaulting to disk0:\n", biosdev); + new_currdev.dd.d_unit = 0; + } #ifdef LOADER_ZFS_SUPPORT - if (new_currdev.dd.d_dev->dv_type == DEVT_ZFS) - init_zfs_bootenv(zfs_fmtdev(&new_currdev)); + if (new_currdev.dd.d_dev->dv_type == DEVT_ZFS) + init_zfs_bootenv(zfs_fmtdev(&new_currdev)); #endif - env_setenv("currdev", EV_VOLATILE, i386_fmtdev(&new_currdev), - i386_setcurrdev, env_nounset); - env_setenv("loaddev", EV_VOLATILE, i386_fmtdev(&new_currdev), env_noset, - env_nounset); + env_setenv("currdev", EV_VOLATILE, i386_fmtdev(&new_currdev), + i386_setcurrdev, env_nounset); + env_setenv("loaddev", EV_VOLATILE, i386_fmtdev(&new_currdev), + env_noset, env_nounset); } COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot); @@ -357,22 +378,22 @@ COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot); static int command_reboot(int argc, char *argv[]) { - int i; + int i; - for (i = 0; devsw[i] != NULL; ++i) - if (devsw[i]->dv_cleanup != NULL) - (devsw[i]->dv_cleanup)(); + for (i = 0; devsw[i] != NULL; ++i) + if (devsw[i]->dv_cleanup != NULL) + (devsw[i]->dv_cleanup)(); - printf("Rebooting...\n"); - delay(1000000); - __exit(0); + printf("Rebooting...\n"); + delay(1000000); + __exit(0); } /* provide this for panic, as it's not in the startup code */ void exit(int code) { - __exit(code); + __exit(code); } COMMAND_SET(heap, "heap", "show heap usage", command_heap); @@ -380,10 +401,10 @@ COMMAND_SET(heap, "heap", "show heap usage", command_heap); static int command_heap(int argc, char *argv[]) { - mallocstats(); - printf("heap base at %p, top at %p, upper limit at %p\n", heap_bottom, - sbrk(0), heap_top); - return(CMD_OK); + mallocstats(); + printf("heap base at %p, top at %p, upper limit at %p\n", heap_bottom, + sbrk(0), heap_top); + return (CMD_OK); } /* ISA bus access functions for PnP. */ @@ -391,32 +412,32 @@ static int isa_inb(int port) { - return (inb(port)); + return (inb(port)); } static void isa_outb(int port, int value) { - outb(port, value); + outb(port, value); } #ifdef LOADER_ZFS_SUPPORT static void i386_zfs_probe(void) { - char devname[32]; - struct i386_devdesc dev; - - /* - * Open all the disks we can find and see if we can reconstruct - * ZFS pools from them. - */ - dev.dd.d_dev = &bioshd; - for (dev.dd.d_unit = 0; bd_unit2bios(&dev) >= 0; dev.dd.d_unit++) { - snprintf(devname, sizeof(devname), "%s%d:", bioshd.dv_name, - dev.dd.d_unit); - zfs_probe_dev(devname, NULL); - } + char devname[32]; + struct i386_devdesc dev; + + /* + * Open all the disks we can find and see if we can reconstruct + * ZFS pools from them. + */ + dev.dd.d_dev = &bioshd; + for (dev.dd.d_unit = 0; bd_unit2bios(&dev) >= 0; dev.dd.d_unit++) { + snprintf(devname, sizeof(devname), "%s%d:", bioshd.dv_name, + dev.dd.d_unit); + zfs_probe_dev(devname, NULL); + } } #endif From nobody Fri Oct 8 16:08:55 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C784A17E953C; Fri, 8 Oct 2021 16:08: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 4HQtRC52Ptz4jvB; Fri, 8 Oct 2021 16:08: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 8EE73213D; Fri, 8 Oct 2021 16:08: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 198G8t2g001861; Fri, 8 Oct 2021 16:08:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G8tv9001860; Fri, 8 Oct 2021 16:08:55 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:08:55 GMT Message-Id: <202110081608.198G8tv9001860@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ace710d002f0 - stable/12 - stand/ficl 64-bit compatibility List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ace710d002f0353a401d9b68661861e2fbdc2f89 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ace710d002f0353a401d9b68661861e2fbdc2f89 commit ace710d002f0353a401d9b68661861e2fbdc2f89 Author: Brandon Bergren AuthorDate: 2020-09-14 15:48:30 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 07:59:34 +0000 stand/ficl 64-bit compatibility Currently, the only thing that prevents a functioning 64-bit FICL build is a few integer types that were intended to be fixed-width. Changing them to C99 integer types allows building a functioning 64-bit FICL. While this isn't applicable to the default settings of any in-tree loaders, it is necessary for a future Petitboot loader, due to the requirement that it be compiled as a 64-bit program. (cherry picked from commit 9e4c35f867aca020df8d01fb7371bf5ae1cc8a2d) (cherry picked from commit 0ebbda971890c149c5028066fc5ed7ea72228d87) --- stand/ficl/ficl.h | 2 +- stand/ficl/powerpc/sysdep.h | 9 ++++++--- stand/powerpc/ofw/main.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/stand/ficl/ficl.h b/stand/ficl/ficl.h index a6f8f03c5732..97cf00b0dff3 100644 --- a/stand/ficl/ficl.h +++ b/stand/ficl/ficl.h @@ -249,7 +249,7 @@ typedef struct ficl_system_info FICL_SYSTEM_INFO; ** complement of false... that unifies logical and bitwise operations ** nicely. */ -#define FICL_TRUE ((unsigned long)~(0L)) +#define FICL_TRUE (~(FICL_UNS)0) #define FICL_FALSE (0) #define FICL_BOOL(x) ((x) ? FICL_TRUE : FICL_FALSE) diff --git a/stand/ficl/powerpc/sysdep.h b/stand/ficl/powerpc/sysdep.h index 3ae748e259c7..b31625e18649 100644 --- a/stand/ficl/powerpc/sysdep.h +++ b/stand/ficl/powerpc/sysdep.h @@ -79,15 +79,15 @@ ** System dependent data type declarations... */ #if !defined INT32 -#define INT32 int +#define INT32 int32_t #endif #if !defined UNS32 -#define UNS32 unsigned int +#define UNS32 uint32_t #endif #if !defined UNS16 -#define UNS16 unsigned short +#define UNS16 uint16_t #endif #if !defined UNS8 @@ -367,6 +367,9 @@ typedef struct */ #if !defined FICL_ALIGN #define FICL_ALIGN 2 +#endif + +#if !defined FICL_ALIGN_ADD #define FICL_ALIGN_ADD ((1 << FICL_ALIGN) - 1) #endif diff --git a/stand/powerpc/ofw/main.c b/stand/powerpc/ofw/main.c index 93a439f8f609..4803cb06d376 100644 --- a/stand/powerpc/ofw/main.c +++ b/stand/powerpc/ofw/main.c @@ -63,7 +63,7 @@ init_heap(void) { bzero(heap, HEAP_SIZE); - setheap(heap, (void *)((int)heap + HEAP_SIZE)); + setheap(heap, (void *)((uintptr_t)heap + HEAP_SIZE)); } uint64_t From nobody Fri Oct 8 16:08:56 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E3C5C17E962E; Fri, 8 Oct 2021 16:08: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 4HQtRF1wJfz4jkS; Fri, 8 Oct 2021 16:08: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 B7CDF202B; Fri, 8 Oct 2021 16:08: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 198G8ukx001885; Fri, 8 Oct 2021 16:08:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G8unB001884; Fri, 8 Oct 2021 16:08:56 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:08:56 GMT Message-Id: <202110081608.198G8unB001884@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a4325c6a6552 - stable/12 - pkgfs_open: follow symlinks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: a4325c6a6552f53325e42379163873c0453bacb1 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a4325c6a6552f53325e42379163873c0453bacb1 commit a4325c6a6552f53325e42379163873c0453bacb1 Author: Simon J. Gerraty AuthorDate: 2021-01-15 01:33:05 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:01:41 +0000 pkgfs_open: follow symlinks Caller is not interested in symlinks follow them. Throw an error if too many links encountered. (cherry picked from commit b14cfecbf0ed04c841aa594dede3668b0a36344a) --- stand/libsa/pkgfs.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/stand/libsa/pkgfs.c b/stand/libsa/pkgfs.c index 4f52b6bb6b9b..d0e083696b12 100644 --- a/stand/libsa/pkgfs.c +++ b/stand/libsa/pkgfs.c @@ -199,7 +199,7 @@ static int new_package(int, struct package **); static struct tarfile *scan_tarfile(struct package *, struct tarfile *); static int -pkg_open(const char *fn, struct open_file *f) +pkg_open_follow(const char *fn, struct open_file *f, int lnks) { struct tarfile *tf; @@ -242,6 +242,17 @@ pkg_open(const char *fn, struct open_file *f) if (strcmp(fn, tf->tf_hdr.ut_name) == 0) { f->f_fsdata = tf; tf->tf_fp = 0; /* Reset the file pointer. */ + DBG(("%s: found %s type %c\n", __func__, + fn, tf->tf_hdr.ut_typeflag[0])); + if (tf->tf_hdr.ut_typeflag[0] == '2') { + /* we have a symlink + * Note: ut_linkname is only 100 chars! + */ + if (lnks++ >= 8) + return (EMLINK); + return pkg_open_follow(tf->tf_hdr.ut_linkname, + f, lnks); + } return (0); } tf = scan_tarfile(package, tf); @@ -249,6 +260,12 @@ pkg_open(const char *fn, struct open_file *f) return (errno); } +static int +pkg_open(const char *fn, struct open_file *f) +{ + return pkg_open_follow(fn, f, 0); +} + static int pkg_close(struct open_file *f) { From nobody Fri Oct 8 16:08:57 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A43AB17E980F; Fri, 8 Oct 2021 16:08: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 4HQtRG2BjHz4jW1; Fri, 8 Oct 2021 16:08: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 C4445202C; Fri, 8 Oct 2021 16:08: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 198G8vjw001910; Fri, 8 Oct 2021 16:08:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G8vlv001909; Fri, 8 Oct 2021 16:08:57 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:08:57 GMT Message-Id: <202110081608.198G8vlv001909@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: e70ed10f8f4d - stable/12 - EFI loader: Don't free bcache for DEVT_DISK devs List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: e70ed10f8f4d648ae69052aa805d36344ae75140 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=e70ed10f8f4d648ae69052aa805d36344ae75140 commit e70ed10f8f4d648ae69052aa805d36344ae75140 Author: Colin Percival AuthorDate: 2021-09-30 21:48:14 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:04:57 +0000 EFI loader: Don't free bcache for DEVT_DISK devs Booting on an EC2 c5.xlarge instance, this reduces the number of I/Os performed from 609 to 432, reduces the total number of blocks read from 61963 to 60797, and reduces the time spent in the loader by 39 ms. Note that b4cb3fe0e39a allowed the bcache to be retained for most of the boot process, but relies on mounting filesystems; this commit allows the bcache to be retained at the start of the boot process, before the root filesystem has been located. Reviewed by: imp, tsoome MFC after: 1 week Sponsored by: https://www.patreon.com/cperciva Differential Revision: https://reviews.freebsd.org/D32239 (cherry picked from commit ce73f768b76486b1562f207a6fc1cef87065418a) --- stand/efi/libefi/efipart.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stand/efi/libefi/efipart.c b/stand/efi/libefi/efipart.c index 424df7d2e423..2afc96a45b10 100644 --- a/stand/efi/libefi/efipart.c +++ b/stand/efi/libefi/efipart.c @@ -949,8 +949,10 @@ efipart_close(struct open_file *f) pd->pd_open--; if (pd->pd_open == 0) { pd->pd_blkio = NULL; - bcache_free(pd->pd_bcache); - pd->pd_bcache = NULL; + if (dev->dd.d_dev->dv_type != DEVT_DISK) { + bcache_free(pd->pd_bcache); + pd->pd_bcache = NULL; + } } if (dev->dd.d_dev->dv_type == DEVT_DISK) return (disk_close(dev)); From nobody Fri Oct 8 16:08:58 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D8D9817E95F0; Fri, 8 Oct 2021 16: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 4HQtRH34fpz4jbc; Fri, 8 Oct 2021 16:08: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 E82C0202D; Fri, 8 Oct 2021 16:08: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 198G8wl2001935; Fri, 8 Oct 2021 16:08:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G8wCI001934; Fri, 8 Oct 2021 16:08:58 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:08:58 GMT Message-Id: <202110081608.198G8wCI001934@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: a5c44db625cb - stable/12 - loader: provide u> and xemit words if needed List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: a5c44db625cb1bf34b86573411d6ce1f1b8f3fed Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=a5c44db625cb1bf34b86573411d6ce1f1b8f3fed commit a5c44db625cb1bf34b86573411d6ce1f1b8f3fed Author: Toomas Soome AuthorDate: 2019-09-17 18:05:33 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:05:18 +0000 loader: provide u> and xemit words if needed We have external interpreter (userboot.so) which may be lagging behind with updates and may be missing u> xemit words. (cherry picked from commit 68861a62f5363e6984ba96efe6463e882a9c4896) --- stand/forth/loader.4th | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/stand/forth/loader.4th b/stand/forth/loader.4th index df532440e26a..89ea9efc4171 100644 --- a/stand/forth/loader.4th +++ b/stand/forth/loader.4th @@ -27,6 +27,29 @@ only forth definitions +\ provide u> if needed +s" u>" sfind [if] drop [else] + drop +: u> + 2dup u< if 2drop 0 exit then + swap u< if -1 exit then + 0 +; +[then] + +\ provide xemit if needed +s" xemit" sfind [if] drop [else] + drop +: xemit + dup 0x80 u< if emit exit then + 0 swap 0x3F + begin 2dup u> while + 2/ >r dup 0x3F and 0x80 or swap 6 rshift r> + repeat 0x7F xor 2* or + begin dup 0x80 u< 0= while emit repeat drop +; +[then] + s" arch-i386" environment? [if] [if] s" loader_version" environment? [if] 11 < [if] From nobody Fri Oct 8 16:09:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8C76D17E95FA; Fri, 8 Oct 2021 16:09: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 4HQtRJ2q4mz4jql; Fri, 8 Oct 2021 16: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 159822193; Fri, 8 Oct 2021 16: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 198G90O5001963; Fri, 8 Oct 2021 16: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 198G90cD001962; Fri, 8 Oct 2021 16:09:00 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:00 GMT Message-Id: <202110081609.198G90cD001962@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 85baf98bbb36 - stable/12 - loader: update zfsimpl.c from illumos review suggestions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 85baf98bbb3632b89a6f2a7ebdf419681021f2a1 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=85baf98bbb3632b89a6f2a7ebdf419681021f2a1 commit 85baf98bbb3632b89a6f2a7ebdf419681021f2a1 Author: Toomas Soome AuthorDate: 2020-01-06 19:35:22 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:09:39 +0000 loader: update zfsimpl.c from illumos review suggestions Add extra comments and update error handling. (cherry picked from commit 653c3383c7287535e75a94563455b48f177bc803) --- stand/libsa/zfs/zfsimpl.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c index 70e44d7f0e8b..6c46bfdaea9c 100644 --- a/stand/libsa/zfs/zfsimpl.c +++ b/stand/libsa/zfs/zfsimpl.c @@ -849,7 +849,8 @@ vdev_create(uint64_t guid, vdev_read_t *_read) vdev->v_read = _read; /* - * root vdev has no read function. + * root vdev has no read function, we use this fact to + * skip setting up data we do not need for root vdev. * We only point root vdev from spa. */ if (_read != NULL) { @@ -894,7 +895,7 @@ vdev_set_initial_state(vdev_t *vdev, const nvlist_t *nvlist) else if (isnt_present != 0) vdev->v_state = VDEV_STATE_CANT_OPEN; - vdev->v_islog = is_log == 1; + vdev->v_islog = is_log != 0; } static int @@ -998,9 +999,8 @@ vdev_init(uint64_t guid, const nvlist_t *nvlist, vdev_t **vdevp) if (memcmp(type, VDEV_TYPE_RAIDZ, len) == 0) { if (vdev->v_nparity < 1 || vdev->v_nparity > 3) { - printf("ZFS: can only boot from disk, " - "mirror, raidz1, raidz2 and raidz3 " - "vdevs\n"); + printf("ZFS: invalid raidz parity: %d\n", + vdev->v_nparity); return (EIO); } (void) asprintf(&name, "%.*s%d-%" PRIu64, len, type, @@ -1074,16 +1074,17 @@ vdev_insert(vdev_t *top_vdev, vdev_t *vdev) if (previous == NULL) { STAILQ_INSERT_HEAD(&top_vdev->v_children, vdev, v_childlink); - count = vdev_child_count(top_vdev); - if (top_vdev->v_nchildren < count) - top_vdev->v_nchildren = count; + } else if (previous->v_id == vdev->v_id) { + /* + * This vdev was configured from label config, + * do not insert duplicate. + */ return; + } else { + STAILQ_INSERT_AFTER(&top_vdev->v_children, previous, vdev, + v_childlink); } - if (previous->v_id == vdev->v_id) - return; - - STAILQ_INSERT_AFTER(&top_vdev->v_children, previous, vdev, v_childlink); count = vdev_child_count(top_vdev); if (top_vdev->v_nchildren < count) top_vdev->v_nchildren = count; @@ -1137,6 +1138,10 @@ vdev_from_nvlist(spa_t *spa, uint64_t top_guid, const nvlist_t *nvlist) } } } else { + /* + * When there are no children, nvlist_find() does return + * error, reset it because leaf devices have no children. + */ rc = 0; } nvlist_destroy(kids); @@ -1284,7 +1289,7 @@ vdev_init_from_nvlist(spa_t *spa, const nvlist_t *nvlist) * MOS config has at least one child for root vdev. */ if (rc != 0) - return (EIO); + return (rc); for (int i = 0; i < nkids; i++) { uint64_t guid; @@ -3207,7 +3212,10 @@ zfs_spa_init(spa_t *spa) if (rc != 0) return (rc); - /* Update vdevs from MOS config. */ + /* + * Update vdevs from MOS config. Note, we do skip encoding bytes + * here. See also vdev_label_read_config(). + */ rc = vdev_init_from_nvlist(spa, nvlist); nvlist_destroy(nvlist); return (rc); From nobody Fri Oct 8 16:09:01 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5619F17E96CE; Fri, 8 Oct 2021 16:09: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 4HQtRK54mlz4jvl; Fri, 8 Oct 2021 16:09: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 3B5622194; Fri, 8 Oct 2021 16:09: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 198G91kI001992; Fri, 8 Oct 2021 16:09:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G917k001991; Fri, 8 Oct 2021 16:09:01 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:01 GMT Message-Id: <202110081609.198G917k001991@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1f152c027551 - stable/12 - loader: implement GELI writes List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1f152c027551e887d150ea837afc06cec3fe5fcf Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1f152c027551e887d150ea837afc06cec3fe5fcf commit 1f152c027551e887d150ea837afc06cec3fe5fcf Author: Toomas Soome AuthorDate: 2020-07-11 06:51:42 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:11:27 +0000 loader: implement GELI writes Bug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=247482 This patch is based on initial work from allanjude. PR: 247482 (cherry picked from commit de776da3239ee3edc5f77bd0e48d0bb15262024b) --- stand/i386/gptboot/gptboot.c | 2 +- stand/libsa/geli/geliboot.c | 8 ++-- stand/libsa/geli/geliboot.h | 10 ++++- stand/libsa/geli/geliboot_crypto.c | 33 +++++++++------- stand/libsa/geli/geliboot_internal.h | 4 +- stand/libsa/geli/gelidev.c | 75 ++++++++++++++++++++++++------------ 6 files changed, 86 insertions(+), 46 deletions(-) diff --git a/stand/i386/gptboot/gptboot.c b/stand/i386/gptboot/gptboot.c index 7b5423ede6d8..78d876554c86 100644 --- a/stand/i386/gptboot/gptboot.c +++ b/stand/i386/gptboot/gptboot.c @@ -610,7 +610,7 @@ dskread(void *buf, daddr_t lba, unsigned nblk) #ifdef LOADER_GELI_SUPPORT if (err == 0 && gdsk.gdev != NULL) { /* Decrypt */ - if (geli_read(gdsk.gdev, lba * DEV_BSIZE, buf, + if (geli_io(gdsk.gdev, GELI_DECRYPT, lba * DEV_BSIZE, buf, nblk * DEV_BSIZE)) return (err); } diff --git a/stand/libsa/geli/geliboot.c b/stand/libsa/geli/geliboot.c index 00b9af93573a..954a3ec34044 100644 --- a/stand/libsa/geli/geliboot.c +++ b/stand/libsa/geli/geliboot.c @@ -310,7 +310,8 @@ found_key: } int -geli_read(struct geli_dev *gdev, off_t offset, u_char *buf, size_t bytes) +geli_io(struct geli_dev *gdev, geli_op_t enc, off_t offset, u_char *buf, + size_t bytes) { u_char iv[G_ELI_IVKEYLEN]; u_char *pbuf; @@ -343,12 +344,13 @@ geli_read(struct geli_dev *gdev, off_t offset, u_char *buf, size_t bytes) keyno = (dstoff >> G_ELI_KEY_SHIFT) / secsize; g_eli_key_fill(&gdev->sc, &gkey, keyno); - error = geliboot_crypt(gdev->sc.sc_ealgo, 0, pbuf, secsize, + error = geliboot_crypt(gdev->sc.sc_ealgo, enc, pbuf, secsize, gkey.gek_key, gdev->sc.sc_ekeylen, iv); if (error != 0) { explicit_bzero(&gkey, sizeof(gkey)); - printf("Failed to decrypt in geli_read()!"); + printf("%s: Failed to %s!", __func__, + enc ? "encrypt" : "decrypt"); return (error); } pbuf += secsize; diff --git a/stand/libsa/geli/geliboot.h b/stand/libsa/geli/geliboot.h index aeebde4b0a2e..0c2ef817e97d 100644 --- a/stand/libsa/geli/geliboot.h +++ b/stand/libsa/geli/geliboot.h @@ -50,6 +50,11 @@ #define GELI_KEYBUF_SIZE (sizeof(struct keybuf) + \ (GELI_MAX_KEYS * sizeof(struct keybuf_ent))) +typedef enum geli_op { + GELI_DECRYPT, + GELI_ENCRYPT +} geli_op_t; + extern void pwgets(char *buf, int n, int hide); typedef u_char geli_ukey[G_ELI_USERKEYLEN]; @@ -73,9 +78,10 @@ struct preloaded_file; typedef int (*geli_readfunc)(void *vdev, void *readpriv, off_t offbytes, void *buf, size_t sizebytes); -struct geli_dev * geli_taste(geli_readfunc readfunc, void *readpriv, +struct geli_dev *geli_taste(geli_readfunc readfunc, void *readpriv, daddr_t lastsector, const char *namefmt, ...); -int geli_read(struct geli_dev *gdev, off_t offset, u_char *buf, size_t bytes); +int geli_io(struct geli_dev *gdev, geli_op_t, off_t offset, u_char *buf, + size_t bytes); int geli_havekey(struct geli_dev *gdev); int geli_passphrase(struct geli_dev *gdev, char *pw); diff --git a/stand/libsa/geli/geliboot_crypto.c b/stand/libsa/geli/geliboot_crypto.c index 82a137c06212..50c62bccf1c7 100644 --- a/stand/libsa/geli/geliboot_crypto.c +++ b/stand/libsa/geli/geliboot_crypto.c @@ -35,7 +35,7 @@ #include "geliboot.h" int -geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize, +geliboot_crypt(u_int algo, geli_op_t enc, u_char *data, size_t datasize, const u_char *key, size_t keysize, u_char *iv) { keyInstance aeskey; @@ -49,7 +49,7 @@ geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize, err = rijndael_makeKey(&aeskey, !enc, keysize, (const char *)key); if (err < 0) { - printf("Failed to setup decryption keys: %d\n", err); + printf("Failed to setup crypo keys: %d\n", err); return (err); } @@ -59,18 +59,20 @@ geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize, return (err); } - if (enc == 0) { - /* decrypt */ + switch (enc) { + case GELI_DECRYPT: blks = rijndael_blockDecrypt(&cipher, &aeskey, data, datasize * 8, data); - } else { - /* encrypt */ + break; + case GELI_ENCRYPT: blks = rijndael_blockEncrypt(&cipher, &aeskey, data, datasize * 8, data); + break; } if (datasize != (blks / 8)) { - printf("Failed to decrypt the entire input: " - "%u != %zu\n", blks, datasize); + printf("Failed to %s the entire input: %u != %zu\n", + enc ? "decrypt" : "encrypt", + blks, datasize); return (1); } break; @@ -84,14 +86,15 @@ geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize, enc_xform_aes_xts.reinit((caddr_t)ctxp, iv); switch (enc) { - case 0: /* decrypt */ + case GELI_DECRYPT: for (i = 0; i < datasize; i += AES_XTS_BLOCKSIZE) { enc_xform_aes_xts.decrypt((caddr_t)ctxp, data + i); } break; - case 1: /* encrypt */ + case GELI_ENCRYPT: for (i = 0; i < datasize; i += AES_XTS_BLOCKSIZE) { - enc_xform_aes_xts.encrypt((caddr_t)ctxp, data + i); + enc_xform_aes_xts.encrypt((caddr_t)ctxp, + data + i); } break; } @@ -105,7 +108,7 @@ geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize, } static int -g_eli_crypto_cipher(u_int algo, int enc, u_char *data, size_t datasize, +g_eli_crypto_cipher(u_int algo, geli_op_t enc, u_char *data, size_t datasize, const u_char *key, size_t keysize) { u_char iv[keysize]; @@ -123,7 +126,8 @@ g_eli_crypto_encrypt(u_int algo, u_char *data, size_t datasize, if (algo == CRYPTO_AES_XTS) algo = CRYPTO_AES_CBC; - return (g_eli_crypto_cipher(algo, 1, data, datasize, key, keysize)); + return (g_eli_crypto_cipher(algo, GELI_ENCRYPT, data, datasize, key, + keysize)); } int @@ -135,5 +139,6 @@ g_eli_crypto_decrypt(u_int algo, u_char *data, size_t datasize, if (algo == CRYPTO_AES_XTS) algo = CRYPTO_AES_CBC; - return (g_eli_crypto_cipher(algo, 0, data, datasize, key, keysize)); + return (g_eli_crypto_cipher(algo, GELI_DECRYPT, data, datasize, key, + keysize)); } diff --git a/stand/libsa/geli/geliboot_internal.h b/stand/libsa/geli/geliboot_internal.h index 2352a844f7dd..2af74466179f 100644 --- a/stand/libsa/geli/geliboot_internal.h +++ b/stand/libsa/geli/geliboot_internal.h @@ -55,6 +55,8 @@ #define STAND_H /* We don't want stand.h in {gpt,zfs,gptzfs}boot */ #include +#include "geliboot.h" + #define GELIDEV_NAMELEN 32 struct geli_dev { @@ -65,7 +67,7 @@ struct geli_dev { char *name; /* for prompting; it ends in ':' */ }; -int geliboot_crypt(u_int algo, int enc, u_char *data, size_t datasize, +int geliboot_crypt(u_int algo, geli_op_t enc, u_char *data, size_t datasize, const u_char *key, size_t keysize, u_char *iv); #endif /* _GELIBOOT_INTERNAL_H_ */ diff --git a/stand/libsa/geli/gelidev.c b/stand/libsa/geli/gelidev.c index 751255636112..e1444c9b7fcd 100644 --- a/stand/libsa/geli/gelidev.c +++ b/stand/libsa/geli/gelidev.c @@ -115,10 +115,6 @@ geli_dev_strategy(void *devdata, int rw, daddr_t blk, size_t size, char *buf, char *iobuf; int rc; - /* We only handle reading; no write support. */ - if ((rw & F_MASK) != F_READ) - return (EOPNOTSUPP); - gdesc = (struct geli_devdesc *)devdata; /* @@ -139,34 +135,63 @@ geli_dev_strategy(void *devdata, int rw, daddr_t blk, size_t size, char *buf, alnsize = alnend - alnstart; /* - * If alignment requires us to read more than the size of the provided - * buffer, allocate a temporary buffer. + * If alignment requires us to read/write more than the size of the + * provided buffer, allocate a temporary buffer. + * The writes will always get temporary buffer because of encryption. */ - if (alnsize <= size) + if (alnsize <= size && (rw & F_MASK) == F_READ) iobuf = buf; else if ((iobuf = malloc(alnsize)) == NULL) return (ENOMEM); - /* - * Read the encrypted data using the host provider, then decrypt it. - */ - rc = gdesc->hdesc->dd.d_dev->dv_strategy(gdesc->hdesc, rw, - alnstart / DEV_BSIZE, alnsize, iobuf, NULL); - if (rc != 0) - goto out; - rc = geli_read(gdesc->gdev, alnstart, iobuf, alnsize); - if (rc != 0) - goto out; + switch (rw & F_MASK) { + case F_READ: + /* + * Read the encrypted data using the host provider, + * then decrypt it. + */ + rc = gdesc->hdesc->dd.d_dev->dv_strategy(gdesc->hdesc, rw, + alnstart / DEV_BSIZE, alnsize, iobuf, NULL); + if (rc != 0) + goto out; + rc = geli_io(gdesc->gdev, GELI_DECRYPT, alnstart, iobuf, + alnsize); + if (rc != 0) + goto out; - /* - * If we had to use a temporary buffer, copy the requested part of the - * data to the caller's buffer. - */ - if (iobuf != buf) - memcpy(buf, iobuf + (reqstart - alnstart), size); + /* + * If we had to use a temporary buffer, copy the requested + * part of the data to the caller's buffer. + */ + if (iobuf != buf) + memcpy(buf, iobuf + (reqstart - alnstart), size); + + if (rsize != NULL) + *rsize = size; + break; + case F_WRITE: + if (iobuf != buf) { + /* Read, decrypt, then modify. */ + rc = gdesc->hdesc->dd.d_dev->dv_strategy(gdesc->hdesc, + F_READ, alnstart / DEV_BSIZE, alnsize, iobuf, NULL); + if (rc != 0) + goto out; + rc = geli_io(gdesc->gdev, GELI_DECRYPT, alnstart, iobuf, + alnsize); + if (rc != 0) + goto out; + /* Copy data to iobuf */ + memcpy(iobuf + (reqstart - alnstart), buf, size); + } - if (rsize != NULL) - *rsize = size; + /* Encrypt and write it. */ + rc = geli_io(gdesc->gdev, GELI_ENCRYPT, alnstart, iobuf, + alnsize); + if (rc != 0) + goto out; + rc = gdesc->hdesc->dd.d_dev->dv_strategy(gdesc->hdesc, + rw, alnstart / DEV_BSIZE, alnsize, iobuf, NULL); + } out: if (iobuf != buf) free(iobuf); From nobody Fri Oct 8 16:09:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E657C17E96D9; Fri, 8 Oct 2021 16: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 4HQtRL6s9Hz4jnP; Fri, 8 Oct 2021 16:09: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 61B3D1977; Fri, 8 Oct 2021 16:09: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 198G92Gv002016; Fri, 8 Oct 2021 16:09:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G929K002015; Fri, 8 Oct 2021 16:09:02 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:02 GMT Message-Id: <202110081609.198G929K002015@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 3c880137ef67 - stable/12 - Loader: explain the syntax of currdev List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 3c880137ef67e784710178d7867c400de650abd3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3c880137ef67e784710178d7867c400de650abd3 commit 3c880137ef67e784710178d7867c400de650abd3 Author: Allan Jude AuthorDate: 2020-07-13 02:09:21 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:01 +0000 Loader: explain the syntax of currdev The origin text was: "Syntax for devices is odd." That is not very helpful. PR: 199103 (cherry picked from commit 551d20f044f3fa5e4f59d6303f1a2a70c1bf2297) --- stand/man/loader.8 | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/stand/man/loader.8 b/stand/man/loader.8 index b5f770803bff..3051f9bda6e4 100644 --- a/stand/man/loader.8 +++ b/stand/man/loader.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 7, 2021 +.Dd October 8, 2021 .Dt LOADER 8 .Os .Sh NAME @@ -479,8 +479,14 @@ In that case, the first listed console will become the default console for userland output (e.g.\& from .Xr init 8 ) . .It Va currdev -Selects the default device. -Syntax for devices is odd. +Selects the default device to loader the kernel from. +The syntax is: +.Dl Ic loader_device: +or +.Dl Ic zfs:dataset: +Examples: +.Dl Ic disk0p2: +.Dl Ic zfs:zroot/ROOT/default: .It Va dumpdev Sets the device for kernel dumps. This can be used to ensure that a device is configured before the corresponding From nobody Fri Oct 8 16:09:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 91E1B17E96E5; Fri, 8 Oct 2021 16:09: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 4HQtRN2Jfrz4jbx; Fri, 8 Oct 2021 16: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 83E5D1DEE; Fri, 8 Oct 2021 16: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 198G93Ls002040; Fri, 8 Oct 2021 16: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 198G93DY002039; Fri, 8 Oct 2021 16:09:03 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:03 GMT Message-Id: <202110081609.198G93DY002039@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 6094cc1bbeea - stable/12 - stand: use portable ln -n instead of ln -h List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 6094cc1bbeea09e218e3bf70e31382ba7bbaa5a0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=6094cc1bbeea09e218e3bf70e31382ba7bbaa5a0 commit 6094cc1bbeea09e218e3bf70e31382ba7bbaa5a0 Author: Alex Richardson AuthorDate: 2020-08-06 20:46:18 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:07 +0000 stand: use portable ln -n instead of ln -h This fixes the build on Linux Differential Revision: https://reviews.freebsd.org/D24783 (cherry picked from commit d8e1e85c42f989df0343e2130de542d553a691c9) --- stand/defs.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/defs.mk b/stand/defs.mk index 431b629939d8..f39710d800b5 100644 --- a/stand/defs.mk +++ b/stand/defs.mk @@ -238,6 +238,6 @@ ${_ILINKS}: .NOMETA esac ; \ path=`(cd $$path && /bin/pwd)` ; \ ${ECHO} ${.TARGET} "->" $$path ; \ - ln -fhs $$path ${.TARGET} + ln -fns $$path ${.TARGET} .endif # !NO_OBJ .endif # __BOOT_DEFS_MK__ From nobody Fri Oct 8 16:09:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8CCF817E9A03; Fri, 8 Oct 2021 16: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 4HQtRQ2RWtz4jlK; Fri, 8 Oct 2021 16:09: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 C314B202E; Fri, 8 Oct 2021 16:09: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 198G952n002088; Fri, 8 Oct 2021 16:09:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G954O002087; Fri, 8 Oct 2021 16:09:05 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:05 GMT Message-Id: <202110081609.198G954O002087@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 00e0bd896849 - stable/12 - Update to today's date List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 00e0bd89684943a4aaf8d822203297cbd8f2e0d8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=00e0bd89684943a4aaf8d822203297cbd8f2e0d8 commit 00e0bd89684943a4aaf8d822203297cbd8f2e0d8 Author: Warner Losh AuthorDate: 2020-09-01 07:56:28 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:09 +0000 Update to today's date Also, fix a whitespace botch (cherry picked from commit ff79e517d1547b8f05ef9cb6ac95616a8483a253) --- stand/man/loader.efi.8 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stand/man/loader.efi.8 b/stand/man/loader.efi.8 index 112f10b79cdb..960264364c3d 100644 --- a/stand/man/loader.efi.8 +++ b/stand/man/loader.efi.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 25, 2019 +.Dd September 1, 2020 .Dt LOADER.EFI 8 .Os .Sh NAME @@ -48,5 +48,3 @@ or within the system as is used to load .Nm when it is placed within the system. - - From nobody Fri Oct 8 16:09:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6926917E9A0F; Fri, 8 Oct 2021 16:09: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 4HQtRR6kFWz4k1X; Fri, 8 Oct 2021 16: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 E5B621F32; Fri, 8 Oct 2021 16:09: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 198G96bJ002118; Fri, 8 Oct 2021 16: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 198G96Iw002117; Fri, 8 Oct 2021 16:09:06 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:06 GMT Message-Id: <202110081609.198G96Iw002117@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 40865d8d56f3 - stable/12 - Quiet int-to-pointer-cast warnings on i386 with GCC 9. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 40865d8d56f309d918d94ea28cf9ce9a5f35e6a5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=40865d8d56f309d918d94ea28cf9ce9a5f35e6a5 commit 40865d8d56f309d918d94ea28cf9ce9a5f35e6a5 Author: John Baldwin AuthorDate: 2020-09-04 00:11:01 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:09 +0000 Quiet int-to-pointer-cast warnings on i386 with GCC 9. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D26200 (cherry picked from commit 67dc6bed1fc62b740351713e7aa42fe1eae896b6) --- stand/efi/loader/copy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stand/efi/loader/copy.c b/stand/efi/loader/copy.c index 6ad673d62897..5a174dbf51e2 100644 --- a/stand/efi/loader/copy.c +++ b/stand/efi/loader/copy.c @@ -288,8 +288,8 @@ before_staging: * translation still works. */ staging_base = addr; - memmove((void *)staging_base, (void *)staging, - staging_end - staging); + memmove((void *)(uintptr_t)staging_base, + (void *)(uintptr_t)staging, staging_end - staging); stage_offset -= (staging - staging_base); staging = staging_base; return (true); From nobody Fri Oct 8 16:09:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DCBE817E9877; Fri, 8 Oct 2021 16:09: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 4HQtRP0jCyz4jsL; Fri, 8 Oct 2021 16: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 9977D2195; Fri, 8 Oct 2021 16: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 198G94Mn002064; Fri, 8 Oct 2021 16: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 198G94vP002063; Fri, 8 Oct 2021 16:09:04 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:04 GMT Message-Id: <202110081609.198G94vP002063@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: d51e35f3f6e6 - stable/12 - Very preliminary loader.efi(8) man page List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: d51e35f3f6e64d15308fd1ac9e2c09bdc6592388 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d51e35f3f6e64d15308fd1ac9e2c09bdc6592388 commit d51e35f3f6e64d15308fd1ac9e2c09bdc6592388 Author: Warner Losh AuthorDate: 2020-09-01 07:54:09 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:08 +0000 Very preliminary loader.efi(8) man page (cherry picked from commit 2b6d38a1db31967572042a0fe01d980475eb32f1) --- stand/man/Makefile | 3 +++ stand/man/loader.efi.8 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/stand/man/Makefile b/stand/man/Makefile index 9f0d4fe108d2..73090ae6b1bf 100644 --- a/stand/man/Makefile +++ b/stand/man/Makefile @@ -3,5 +3,8 @@ .include MAN+= loader.8 +.if ${MK_EFI} != "no" +MAN+= loader.efi.8 +.endif .include diff --git a/stand/man/loader.efi.8 b/stand/man/loader.efi.8 new file mode 100644 index 000000000000..112f10b79cdb --- /dev/null +++ b/stand/man/loader.efi.8 @@ -0,0 +1,52 @@ +.\" +.\" Copyright (c) 2019 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 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. +.\" +.\" $FreeBSD$ +.\" +.Dd April 25, 2019 +.Dt LOADER.EFI 8 +.Os +.Sh NAME +.Nm loader.efi +.Nd UEFI kernel loader +.Sh DESCRIPTION +On UEFI systems, +.Nm +loads the kernel. +It is installed into the ESP (EFI System Partition), either in the +default location of +.Pa /efi/boot/bootXXX.efi +within the ESP, in the +.Fx +reserved area as +.Pa /efi/freebsd/loader.efi +within the ESP , +or within the system as +.Pa /boot/loader.efi . +.Xr boot1.efi 8 +is used to load +.Nm +when it is placed within the system. + + From nobody Fri Oct 8 16:09:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 14B4017E9B07; Fri, 8 Oct 2021 16:09: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 4HQtRT3pF8z4k3s; Fri, 8 Oct 2021 16:09: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 08542213E; Fri, 8 Oct 2021 16:09: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 198G97U3002142; Fri, 8 Oct 2021 16:09:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G972q002141; Fri, 8 Oct 2021 16:09:07 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:07 GMT Message-Id: <202110081609.198G972q002141@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 5f9186c384db - stable/12 - Ignore the .interp section in the arm64 EFI loader List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 5f9186c384db6886a1079fd0477ce008125ba9e4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=5f9186c384db6886a1079fd0477ce008125ba9e4 commit 5f9186c384db6886a1079fd0477ce008125ba9e4 Author: Andrew Turner AuthorDate: 2020-09-10 14:13:49 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:10 +0000 Ignore the .interp section in the arm64 EFI loader When building the loader an unneeded .interp section may be added. Move this to the unused section region so offsets of used sections don't change. Obtained from: CheriBSD Sponsored by: Innovate UK (cherry picked from commit 6215ed7c5c0e8cdd536123ec658a081748cfc85c) --- stand/efi/loader/arch/arm64/ldscript.arm64 | 1 + 1 file changed, 1 insertion(+) diff --git a/stand/efi/loader/arch/arm64/ldscript.arm64 b/stand/efi/loader/arch/arm64/ldscript.arm64 index 685c0967840d..d0ed320a319c 100644 --- a/stand/efi/loader/arch/arm64/ldscript.arm64 +++ b/stand/efi/loader/arch/arm64/ldscript.arm64 @@ -80,6 +80,7 @@ SECTIONS _edata = .; /* Unused sections */ + .interp : { *(.interp) } .dynstr : { *(.dynstr) } .hash : { *(.hash) } } From nobody Fri Oct 8 16:09:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C0A0917E9B2C; Fri, 8 Oct 2021 16:09: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 4HQtRW1Xt2z4k1r; Fri, 8 Oct 2021 16:09: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 379991DEF; Fri, 8 Oct 2021 16:09: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 198G99Q5002166; Fri, 8 Oct 2021 16:09:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G99o1002165; Fri, 8 Oct 2021 16:09:09 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:09 GMT Message-Id: <202110081609.198G99o1002165@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: aa2cddc0d21d - stable/12 - Link efi programs with -pie rather than -shared List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: aa2cddc0d21d7411121740efdf4d69c1c743ce4b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=aa2cddc0d21d7411121740efdf4d69c1c743ce4b commit aa2cddc0d21d7411121740efdf4d69c1c743ce4b Author: Alex Richardson AuthorDate: 2020-10-12 11:27:08 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:12:10 +0000 Link efi programs with -pie rather than -shared This was causing build failures in CheriBSD where we were passing -pie already by default. Reviewed By: andrew Differential Revision: https://reviews.freebsd.org/D24787 (cherry picked from commit 253e820a4db794c4c5e39e8e6d6bf2775f25d0cc) --- stand/efi/boot1/Makefile | 2 +- stand/efi/loader/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stand/efi/boot1/Makefile b/stand/efi/boot1/Makefile index d4ac55598bb7..bf3860f36b5d 100644 --- a/stand/efi/boot1/Makefile +++ b/stand/efi/boot1/Makefile @@ -65,7 +65,7 @@ FILES= ${BOOT1}.efi ${BOOT1}.efifat FILESMODE_${BOOT1}.efi= ${BINMODE} LDSCRIPT= ${EFISRC}/loader/arch/${MACHINE}/ldscript.${MACHINE} -LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared +LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -pie .if ${MACHINE_CPUARCH} == "aarch64" CFLAGS+= -mgeneral-regs-only diff --git a/stand/efi/loader/Makefile b/stand/efi/loader/Makefile index 6ee613e7bfea..993a869ab13e 100644 --- a/stand/efi/loader/Makefile +++ b/stand/efi/loader/Makefile @@ -84,7 +84,7 @@ LINKS+= ${BINDIR}/${LOADER}.efi ${BINDIR}/loader.efi .endif LDSCRIPT= ${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE} -LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -shared +LDFLAGS+= -Wl,-T${LDSCRIPT},-Bsymbolic,-znotext -pie CLEANFILES+= loader.efi From nobody Fri Oct 8 16:09:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id ED58D17E9BA7; Fri, 8 Oct 2021 16:09: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 4HQtRW5vFjz4kCJ; Fri, 8 Oct 2021 16:09: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 55303213F; Fri, 8 Oct 2021 16:09: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 198G9Ag2002190; Fri, 8 Oct 2021 16:09:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9AJ5002189; Fri, 8 Oct 2021 16:09:10 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:10 GMT Message-Id: <202110081609.198G9AJ5002189@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 3e7c2c8a913b - stable/12 - Fix date List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 3e7c2c8a913b722aca9e0a05ea79d15dbc344116 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=3e7c2c8a913b722aca9e0a05ea79d15dbc344116 commit 3e7c2c8a913b722aca9e0a05ea79d15dbc344116 Author: Mateusz Piotrowski <0mp@FreeBSD.org> AuthorDate: 2021-01-07 20:15:26 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:13:16 +0000 Fix date It's 2021 already. (cherry picked from commit 79eca6520e0a516a2c217d8c9faedb58ad5db204) --- stand/defaults/loader.conf.5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stand/defaults/loader.conf.5 b/stand/defaults/loader.conf.5 index 730770e44cd4..92b4499c259c 100644 --- a/stand/defaults/loader.conf.5 +++ b/stand/defaults/loader.conf.5 @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd July 31, 2021 +.Dd October 8, 2021 .Dt LOADER.CONF 5 .Os .Sh NAME From nobody Fri Oct 8 16:09:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 78EFF17E9C1E; Fri, 8 Oct 2021 16:09: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 4HQtRZ4shGz4k97; Fri, 8 Oct 2021 16:09: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 722CB2196; Fri, 8 Oct 2021 16:09: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 198G9BU1002214; Fri, 8 Oct 2021 16:09:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9Bj3002213; Fri, 8 Oct 2021 16:09:11 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:11 GMT Message-Id: <202110081609.198G9Bj3002213@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 9da7cdecf101 - stable/12 - Disable PIE for powerpc bootloaders. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 9da7cdecf101ef70b30364479c35a9d25b47b576 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=9da7cdecf101ef70b30364479c35a9d25b47b576 commit 9da7cdecf101ef70b30364479c35a9d25b47b576 Author: Marcin Wojtas AuthorDate: 2021-02-23 12:42:26 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:14:33 +0000 Disable PIE for powerpc bootloaders. Bootloaders for powerpc are not built as position independent code. Since bsd.prog.mk is used for building, when PIE is enabled, the PIE flags are added and that causes the build to fail. Adding MK_PIE=no stops bsd.prog.mk from adding PIE specific flags. Submitted by: Dawid Gorecki Reviewed by: emaste Obtained from: Semihalf Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D28893 (cherry picked from commit 3aa023643e9db78f4da314ff9bfb1643533c004f) --- stand/powerpc/boot1.chrp/Makefile | 2 ++ stand/powerpc/kboot/Makefile | 2 ++ stand/powerpc/ofw/Makefile | 2 ++ stand/powerpc/uboot/Makefile | 2 ++ 4 files changed, 8 insertions(+) diff --git a/stand/powerpc/boot1.chrp/Makefile b/stand/powerpc/boot1.chrp/Makefile index 8fbc1e597119..d4f945a36989 100644 --- a/stand/powerpc/boot1.chrp/Makefile +++ b/stand/powerpc/boot1.chrp/Makefile @@ -30,5 +30,7 @@ boot1.hfs: boot1.elf bootinfo.txt CLEANFILES+= boot1.hfs +MK_PIE= no + .include diff --git a/stand/powerpc/kboot/Makefile b/stand/powerpc/kboot/Makefile index 671db88a14a9..0c6caeb84cd7 100644 --- a/stand/powerpc/kboot/Makefile +++ b/stand/powerpc/kboot/Makefile @@ -39,4 +39,6 @@ LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc DPADD= ${LDR_INTERP} ${LIBOFW} ${LIBFDT} ${LIBSA} LDADD= ${LDR_INTERP} ${LIBOFW} ${LIBFDT} ${LIBSA} +MK_PIE= no + .include diff --git a/stand/powerpc/ofw/Makefile b/stand/powerpc/ofw/Makefile index 35c9d4ae546f..3d191b3ffbb5 100644 --- a/stand/powerpc/ofw/Makefile +++ b/stand/powerpc/ofw/Makefile @@ -45,4 +45,6 @@ CFLAGS+= -I${BOOTSRC}/libofw DPADD= ${LDR_INTERP} ${LIBOFW} ${LIBFDT} ${LIBSA} LDADD= ${LDR_INTERP} ${LIBOFW} ${LIBFDT} ${LIBSA} +MK_PIE= no + .include diff --git a/stand/powerpc/uboot/Makefile b/stand/powerpc/uboot/Makefile index ccffd0ec1467..4787b5a48c68 100644 --- a/stand/powerpc/uboot/Makefile +++ b/stand/powerpc/uboot/Makefile @@ -30,4 +30,6 @@ LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc DPADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA} LDADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA} +MK_PIE= no + .include From nobody Fri Oct 8 16:09:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CB5A217E9645; Fri, 8 Oct 2021 16:09: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 4HQtRb20L3z4k6b; Fri, 8 Oct 2021 16:09: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 9A8281BD0; Fri, 8 Oct 2021 16:09: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 198G9CsL002244; Fri, 8 Oct 2021 16:09:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9Cmk002243; Fri, 8 Oct 2021 16:09:12 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:12 GMT Message-Id: <202110081609.198G9Cmk002243@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ea2392f2f2b3 - stable/12 - Disable PIE for MIPS ubldr List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ea2392f2f2b3bfa1883f921c465f9b22eec8f512 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ea2392f2f2b3bfa1883f921c465f9b22eec8f512 commit ea2392f2f2b3bfa1883f921c465f9b22eec8f512 Author: Marcin Wojtas AuthorDate: 2021-02-12 15:41:49 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:14:35 +0000 Disable PIE for MIPS ubldr When performing buildworld for MIPS with PIE enabled, the build fails with "position-independent code requires '-mabicalls'" message. -mno-abicalls and -fno-pic flags are explicitly set in MIPS ubldr makefile, so to work around this problem, set MK_PIE=no for MIPS ubldr. Submitted by: Dawid Gorecki Reviewed by: emaste Obtained from: Semihalf Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D28370 (cherry picked from commit cd992885bcdfb3c2c6b761f5c3bf1c86949acdc3) --- stand/mips/uboot/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stand/mips/uboot/Makefile b/stand/mips/uboot/Makefile index 1751bcb80d54..6fb2532f7bb1 100644 --- a/stand/mips/uboot/Makefile +++ b/stand/mips/uboot/Makefile @@ -40,6 +40,10 @@ LDADD= ${LDR_INTERP} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA} OBJS+= ${SRCS:N*.h:R:S/$/.o/g} +# ubldr on MIPS is built with '-mno-abicalls' flag, +# which is incompatible with PIE +MK_PIE= no + ldscript.abs: echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET} From nobody Fri Oct 8 16:09:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EAD7017E96B2; Fri, 8 Oct 2021 16:09: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 4HQtRf4x0fz4jt9; Fri, 8 Oct 2021 16:09: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 BBD3D1BD1; Fri, 8 Oct 2021 16:09: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 198G9D0e002268; Fri, 8 Oct 2021 16:09:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9D4q002267; Fri, 8 Oct 2021 16:09:13 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:13 GMT Message-Id: <202110081609.198G9D4q002267@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ae6355af7790 - stable/12 - Disable PIE for MIPS BERI boot loader List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ae6355af77905cc29de730af5fe5a6fd9c4036b4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ae6355af77905cc29de730af5fe5a6fd9c4036b4 commit ae6355af77905cc29de730af5fe5a6fd9c4036b4 Author: Marcin Wojtas AuthorDate: 2021-02-25 05:41:35 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:14:36 +0000 Disable PIE for MIPS BERI boot loader MIPS BERI boot loader is built with -mno-abicalls and -fno-pic so prevent adding PIE-related build flags. Fix build after 9a227a2fd642 ("Enable PIE by default on 64-bit architectures") Obtained from: Semihalf Sponsored by: Stormshield (cherry picked from commit 19cd12a32afe801dc5e753013993e15e924ceb39) --- stand/mips/beri/Makefile.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stand/mips/beri/Makefile.inc b/stand/mips/beri/Makefile.inc index 5a7b18e393c0..a95ca3dc1861 100644 --- a/stand/mips/beri/Makefile.inc +++ b/stand/mips/beri/Makefile.inc @@ -2,4 +2,8 @@ LDFLAGS+= -nostdlib +# BERI boot loader is built with '-mno-abicalls' flag, +# which is incompatible with PIE +MK_PIE= no + .include "../Makefile.inc" From nobody Fri Oct 8 16:09:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7065217E9EA9; Fri, 8 Oct 2021 16:09: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 4HQtRh6LV1z4jtR; Fri, 8 Oct 2021 16:09: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 1D4FB2197; Fri, 8 Oct 2021 16:09: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 198G9GLe002316; Fri, 8 Oct 2021 16:09:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9GgD002315; Fri, 8 Oct 2021 16:09:16 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:16 GMT Message-Id: <202110081609.198G9GgD002315@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: ec9d58cfdf17 - stable/12 - loader(8): fix path to be correct loader.4th. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: ec9d58cfdf170cb108d127a3996a00ef1720c072 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=ec9d58cfdf170cb108d127a3996a00ef1720c072 commit ec9d58cfdf170cb108d127a3996a00ef1720c072 Author: Warner Losh AuthorDate: 2021-07-14 22:34:43 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:16:21 +0000 loader(8): fix path to be correct loader.4th. boot.4th was a thing for only a few months around FreeBSD 3.1. The correct name has been loader.4th for a long time. MFC After: 2 days Sponsored by: Netflix (cherry picked from commit 13c98cd06b80afd0d062211ee8f1bfeb8c6cb065) --- stand/man/loader.8 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stand/man/loader.8 b/stand/man/loader.8 index 2440aaa1840c..f4af83a0b889 100644 --- a/stand/man/loader.8 +++ b/stand/man/loader.8 @@ -76,7 +76,7 @@ is set to 24. Next, .Tn FICL is initialized, the builtin words are added to its vocabulary, and -.Pa /boot/boot.4th +.Pa /boot/loader.4th is processed if it exists. No disk switching is possible while that file is being read. The inner interpreter @@ -982,7 +982,7 @@ Currently, MD is only supported in .It Pa /boot/loader .Nm itself. -.It Pa /boot/boot.4th +.It Pa /boot/loader.4th Additional .Tn FICL initialization. From nobody Fri Oct 8 16:09:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5FBA017E9D6D; Fri, 8 Oct 2021 16:09: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 4HQtRh1C4vz4k4p; Fri, 8 Oct 2021 16:09: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 E2F6B1978; Fri, 8 Oct 2021 16:09: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 198G9EPw002292; Fri, 8 Oct 2021 16:09:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9EpY002291; Fri, 8 Oct 2021 16:09:14 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:14 GMT Message-Id: <202110081609.198G9EpY002291@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: d9735b8c10b6 - stable/12 - loader: update autoboot description and move to loader.conf.5 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: d9735b8c10b6d56fb1c62f1e943dfe0a5bfae5af Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=d9735b8c10b6d56fb1c62f1e943dfe0a5bfae5af commit d9735b8c10b6d56fb1c62f1e943dfe0a5bfae5af Author: Daniel Gerzo AuthorDate: 2021-07-12 21:13:03 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:15:08 +0000 loader: update autoboot description and move to loader.conf.5 Document "NO" special value for the autoboot_delay and move the description to loader.conf.5. imp reworked some of the wording from danger's patch. PR: 85128 (cherry picked from commit 71f6aea4150c66784cbad42c1e1ff908d909c2ec) --- stand/defaults/loader.conf.5 | 41 +++++++++++++++++++++++++++++++++++++++++ stand/man/loader.8 | 31 ++----------------------------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/stand/defaults/loader.conf.5 b/stand/defaults/loader.conf.5 index 92b4499c259c..2e47295ad396 100644 --- a/stand/defaults/loader.conf.5 +++ b/stand/defaults/loader.conf.5 @@ -78,6 +78,47 @@ may have any prefix; the prefix identifies a module. All such settings sharing a common prefix refer to the same module. .Bl -tag -width Ar +.It Ar autoboot_delay +Delay in seconds before automatically booting. +A user with console access will be able to interrupt the +.Ic autoboot +process and escape into the interactive mode by pressing a key on +the console during this delay. +.Pp +If set to +.Dq Li NO , +no +.Ic autoboot +is automatically attempted after processing +.Pa /boot/loader.rc , +though explicit +.Ic autoboot Ns 's +are processed normally, using a 10 second delay. +.Pp +If set to +.Dq Li 0 , +no delay is inserted, but any keys pressed while the kernel and modules are +loaded will enter interactive mode. +.Pp +If set to +.Dq Li -1 , +no delay will be inserted and +.Nm +starts interactive mode only if +.Ic autoboot +has failed. +In combination with the +.Va beastie_disable +option, this option prevents users with console access from being able +to interrupt the +.Ic autoboot +process and escape to the loader prompt. +To use the +.Va autoboot_delay +option in this manner, +.Va beastie_disable +must be set to +.Dq Li YES . .It Ar exec Immediately executes a .Xr loader 8 diff --git a/stand/man/loader.8 b/stand/man/loader.8 index 3051f9bda6e4..2440aaa1840c 100644 --- a/stand/man/loader.8 +++ b/stand/man/loader.8 @@ -354,35 +354,8 @@ Both types of builtin variables are described below. Number of seconds .Ic autoboot will wait before booting. -If this variable is not defined, -.Ic autoboot -will default to 10 seconds. -.Pp -If set to -.Dq Li NO , -no -.Ic autoboot -will be automatically attempted after processing -.Pa /boot/loader.rc , -though explicit -.Ic autoboot Ns 's -will be processed normally, defaulting to 10 seconds delay. -.Pp -If set to -.Dq Li 0 , -no delay will be inserted, but user still will be able to interrupt -.Ic autoboot -process and escape into the interactive mode by pressing some key -on the console while kernel and -modules are being loaded. -.Pp -If set to -.Dq Li -1 , -no delay will be inserted and -.Nm -will engage interactive mode only if -.Ic autoboot -has failed for some reason. +Configuration options are described in +.Xr loader.conf 5 . .It Va boot_askname Instructs the kernel to prompt the user for the name of the root device when the kernel is booted. From nobody Fri Oct 8 16:09:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A28E017E9DFF; Fri, 8 Oct 2021 16:09: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 4HQtRk1ZsXz4k9f; Fri, 8 Oct 2021 16:09: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 4498D1BD2; Fri, 8 Oct 2021 16:09: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 198G9HCv002340; Fri, 8 Oct 2021 16:09:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9HOm002339; Fri, 8 Oct 2021 16:09:17 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:17 GMT Message-Id: <202110081609.198G9HOm002339@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1f25db098360 - stable/12 - loader: cstyle cleanup of libsa/lseek.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1f25db098360c2cc272a3167d4543c5045f9a1a7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1f25db098360c2cc272a3167d4543c5045f9a1a7 commit 1f25db098360c2cc272a3167d4543c5045f9a1a7 Author: Toomas Soome AuthorDate: 2021-08-01 07:07:32 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:16:33 +0000 loader: cstyle cleanup of libsa/lseek.c Clean up lseek.c, no functional changes intended. This is pre-patch for open file list rewrite. MFC after: 1 week (cherry picked from commit bbb539b83ceced2d355893ead5987193737833fd) --- stand/libsa/lseek.c | 137 ++++++++++++++++++++++++++-------------------------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/stand/libsa/lseek.c b/stand/libsa/lseek.c index df2591acd76d..1a39eb31421b 100644 --- a/stand/libsa/lseek.c +++ b/stand/libsa/lseek.c @@ -32,30 +32,30 @@ * SUCH DAMAGE. * * @(#)lseek.c 8.1 (Berkeley) 6/11/93 - * + * * * Copyright (c) 1989, 1990, 1991 Carnegie Mellon University * All Rights Reserved. * * Author: Alessandro Forin - * + * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. - * + * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * + * * Carnegie Mellon requests users of this software to return to - * + * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU * School of Computer Science * Carnegie Mellon University * Pittsburgh PA 15213-3890 - * + * * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. */ @@ -68,74 +68,75 @@ __FBSDID("$FreeBSD$"); off_t lseek(int fd, off_t offset, int where) { - off_t bufpos, filepos, target; - struct open_file *f = &files[fd]; + off_t bufpos, filepos, target; + struct open_file *f = &files[fd]; - if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) { - errno = EBADF; - return (-1); - } - - if (f->f_flags & F_RAW) { - /* - * On RAW devices, update internal offset. - */ - switch (where) { - case SEEK_SET: - f->f_offset = offset; - break; - case SEEK_CUR: - f->f_offset += offset; - break; - default: - errno = EOFFSET; - return (-1); + if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) { + errno = EBADF; + return (-1); } - return (f->f_offset); - } - /* - * If there is some unconsumed data in the readahead buffer and it - * contains the desired offset, simply adjust the buffer offset and - * length. We don't bother with SEEK_END here, since the code to - * handle it would fail in the same cases where the non-readahead - * code fails (namely, for streams which cannot seek backward and whose - * size isn't known in advance). - */ - if (f->f_ralen != 0 && where != SEEK_END) { - if ((filepos = (f->f_ops->fo_seek)(f, (off_t)0, SEEK_CUR)) == -1) - return (-1); - bufpos = filepos - f->f_ralen; - switch (where) { - case SEEK_SET: - target = offset; - break; - case SEEK_CUR: - target = bufpos + offset; - break; - default: - errno = EINVAL; - return (-1); + if (f->f_flags & F_RAW) { + /* + * On RAW devices, update internal offset. + */ + switch (where) { + case SEEK_SET: + f->f_offset = offset; + break; + case SEEK_CUR: + f->f_offset += offset; + break; + default: + errno = EOFFSET; + return (-1); + } + return (f->f_offset); } - if (bufpos <= target && target < filepos) { - f->f_raoffset += target - bufpos; - f->f_ralen -= target - bufpos; - return (target); + + /* + * If there is some unconsumed data in the readahead buffer and it + * contains the desired offset, simply adjust the buffer offset and + * length. We don't bother with SEEK_END here, since the code to + * handle it would fail in the same cases where the non-readahead + * code fails (namely, for streams which cannot seek backward and whose + * size isn't known in advance). + */ + if (f->f_ralen != 0 && where != SEEK_END) { + filepos = (f->f_ops->fo_seek)(f, 0, SEEK_CUR); + if (filepos == -1) + return (-1); + bufpos = filepos - f->f_ralen; + switch (where) { + case SEEK_SET: + target = offset; + break; + case SEEK_CUR: + target = bufpos + offset; + break; + default: + errno = EINVAL; + return (-1); + } + if (bufpos <= target && target < filepos) { + f->f_raoffset += target - bufpos; + f->f_ralen -= target - bufpos; + return (target); + } } - } - /* - * If this is a relative seek, we need to correct the offset for - * bytes that we have already read but the caller doesn't know - * about. - */ - if (where == SEEK_CUR) - offset -= f->f_ralen; + /* + * If this is a relative seek, we need to correct the offset for + * bytes that we have already read but the caller doesn't know + * about. + */ + if (where == SEEK_CUR) + offset -= f->f_ralen; - /* - * Invalidate the readahead buffer. - */ - f->f_ralen = 0; + /* + * Invalidate the readahead buffer. + */ + f->f_ralen = 0; - return (f->f_ops->fo_seek)(f, offset, where); + return (f->f_ops->fo_seek)(f, offset, where); } From nobody Fri Oct 8 16:09:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BE6EB17E9743; Fri, 8 Oct 2021 16:09: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 4HQtRl6DZMz4k9n; Fri, 8 Oct 2021 16:09: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 600CE1BD3; Fri, 8 Oct 2021 16:09: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 198G9IKV002370; Fri, 8 Oct 2021 16:09:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9Irr002369; Fri, 8 Oct 2021 16:09:18 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:18 GMT Message-Id: <202110081609.198G9Irr002369@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 1ca034798bb1 - stable/12 - loader: cstyle cleanup of userboot/devicename.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 1ca034798bb1b7788f116374f6e14f80592b0792 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=1ca034798bb1b7788f116374f6e14f80592b0792 commit 1ca034798bb1b7788f116374f6e14f80592b0792 Author: Toomas Soome AuthorDate: 2021-08-11 07:07:28 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:16:34 +0000 loader: cstyle cleanup of userboot/devicename.c No functional changes intended. MFC after: 1 week (cherry picked from commit 5d5a6216645a6aefa8665c79bb761b754d74c067) --- stand/userboot/userboot/devicename.c | 260 ++++++++++++++++++----------------- 1 file changed, 132 insertions(+), 128 deletions(-) diff --git a/stand/userboot/userboot/devicename.c b/stand/userboot/userboot/devicename.c index 5c50b84384d2..8819af5ef127 100644 --- a/stand/userboot/userboot/devicename.c +++ b/stand/userboot/userboot/devicename.c @@ -38,9 +38,10 @@ __FBSDID("$FreeBSD$"); #include "libzfs.h" #endif -static int userboot_parsedev(struct disk_devdesc **dev, const char *devspec, const char **path); +static int userboot_parsedev(struct disk_devdesc **dev, const char *devspec, + const char **path); -/* +/* * Point (dev) at an allocated device specifier for the device matching the * path in (devspec). If it contains an explicit device specification, * use that. If not, use the default device. @@ -48,27 +49,27 @@ static int userboot_parsedev(struct disk_devdesc **dev, const char *devspec, con int userboot_getdev(void **vdev, const char *devspec, const char **path) { - struct disk_devdesc **dev = (struct disk_devdesc **)vdev; - int rv; - - /* - * If it looks like this is just a path and no - * device, go with the current device. - */ - if ((devspec == NULL) || - (devspec[0] == '/') || - (strchr(devspec, ':') == NULL)) { - - if (((rv = userboot_parsedev(dev, getenv("currdev"), NULL)) == 0) && - (path != NULL)) - *path = devspec; - return(rv); - } - - /* - * Try to parse the device name off the beginning of the devspec - */ - return(userboot_parsedev(dev, devspec, path)); + struct disk_devdesc **dev = (struct disk_devdesc **)vdev; + int rv; + + /* + * If it looks like this is just a path and no + * device, go with the current device. + */ + if ((devspec == NULL) || + (devspec[0] == '/') || + (strchr(devspec, ':') == NULL)) { + + rv = userboot_parsedev(dev, getenv("currdev"), NULL); + if (rv == 0 && path != NULL) + *path = devspec; + return (rv); + } + + /* + * Try to parse the device name off the beginning of the devspec + */ + return (userboot_parsedev(dev, devspec, path)); } /* @@ -83,126 +84,129 @@ userboot_getdev(void **vdev, const char *devspec, const char **path) * For disk-type devices, the syntax is: * * disk[s][]: - * + * */ static int -userboot_parsedev(struct disk_devdesc **dev, const char *devspec, const char **path) +userboot_parsedev(struct disk_devdesc **dev, const char *devspec, + const char **path) { - struct disk_devdesc *idev; - struct devsw *dv; - int i, unit, err; - const char *cp; - const char *np; - - /* minimum length check */ - if (strlen(devspec) < 2) - return(EINVAL); - - /* look for a device that matches */ - for (i = 0, dv = NULL; devsw[i] != NULL; i++) { - if (!strncmp(devspec, devsw[i]->dv_name, strlen(devsw[i]->dv_name))) { - dv = devsw[i]; - break; - } - } - if (dv == NULL) - return(ENOENT); - idev = malloc(sizeof(struct disk_devdesc)); - err = 0; - np = (devspec + strlen(dv->dv_name)); - - switch(dv->dv_type) { - case DEVT_NONE: /* XXX what to do here? Do we care? */ - break; - - case DEVT_DISK: - err = disk_parsedev(idev, np, path); - if (err != 0) - goto fail; - break; - - case DEVT_CD: - case DEVT_NET: - unit = 0; - - if (*np && (*np != ':')) { - unit = strtol(np, (char **)&cp, 0); /* get unit number if present */ - if (cp == np) { - err = EUNIT; - goto fail; - } - } else { - cp = np; - } - if (*cp && (*cp != ':')) { - err = EINVAL; - goto fail; + struct disk_devdesc *idev; + struct devsw *dv; + int i, unit, err; + const char *cp; + const char *np; + + /* minimum length check */ + if (strlen(devspec) < 2) + return (EINVAL); + + /* look for a device that matches */ + for (i = 0, dv = NULL; devsw[i] != NULL; i++) { + if (strncmp(devspec, devsw[i]->dv_name, + strlen(devsw[i]->dv_name)) == 0) { + dv = devsw[i]; + break; + } } - - idev->dd.d_unit = unit; - if (path != NULL) - *path = (*cp == 0) ? cp : cp + 1; - break; - - case DEVT_ZFS: + if (dv == NULL) + return (ENOENT); + idev = malloc(sizeof(struct disk_devdesc)); + err = 0; + np = (devspec + strlen(dv->dv_name)); + + switch (dv->dv_type) { + case DEVT_NONE: /* XXX what to do here? Do we care? */ + break; + + case DEVT_DISK: + err = disk_parsedev(idev, np, path); + if (err != 0) + goto fail; + break; + + case DEVT_CD: + case DEVT_NET: + unit = 0; + + if (*np && (*np != ':')) { + /* get unit number if present */ + unit = strtol(np, (char **)&cp, 0); + if (cp == np) { + err = EUNIT; + goto fail; + } + } else { + cp = np; + } + if (*cp && (*cp != ':')) { + err = EINVAL; + goto fail; + } + + idev->dd.d_unit = unit; + if (path != NULL) + *path = (*cp == 0) ? cp : cp + 1; + break; + + case DEVT_ZFS: #if defined(USERBOOT_ZFS_SUPPORT) - err = zfs_parsedev((struct zfs_devdesc *)idev, np, path); - if (err != 0) - goto fail; - break; + err = zfs_parsedev((struct zfs_devdesc *)idev, np, path); + if (err != 0) + goto fail; + break; #else - /* FALLTHROUGH */ + /* FALLTHROUGH */ #endif - default: - err = EINVAL; - goto fail; - } - idev->dd.d_dev = dv; - if (dev == NULL) { + default: + err = EINVAL; + goto fail; + } + idev->dd.d_dev = dv; + if (dev == NULL) { + free(idev); + } else { + *dev = idev; + } + return (0); + +fail: free(idev); - } else { - *dev = idev; - } - return(0); - - fail: - free(idev); - return(err); + return (err); } char * userboot_fmtdev(void *vdev) { - struct devdesc *dev = (struct devdesc *)vdev; - static char buf[128]; /* XXX device length constant? */ + struct devdesc *dev = (struct devdesc *)vdev; + static char buf[128]; /* XXX device length constant? */ - switch(dev->d_dev->dv_type) { - case DEVT_NONE: - strcpy(buf, "(no device)"); - break; + switch(dev->d_dev->dv_type) { + case DEVT_NONE: + strcpy(buf, "(no device)"); + break; - case DEVT_CD: - sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); - break; + case DEVT_CD: + sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); + break; - case DEVT_DISK: - return (disk_fmtdev(vdev)); + case DEVT_DISK: + return (disk_fmtdev(vdev)); - case DEVT_NET: - sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); - break; + case DEVT_NET: + sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); + break; - case DEVT_ZFS: + case DEVT_ZFS: #if defined(USERBOOT_ZFS_SUPPORT) - return (zfs_fmtdev(vdev)); + return (zfs_fmtdev(vdev)); #else - sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); + sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); #endif - break; - } - return(buf); + break; + } + return (buf); } @@ -212,12 +216,12 @@ userboot_fmtdev(void *vdev) int userboot_setcurrdev(struct env_var *ev, int flags, const void *value) { - struct disk_devdesc *ncurr; - int rv; - - if ((rv = userboot_parsedev(&ncurr, value, NULL)) != 0) - return(rv); - free(ncurr); - env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); - return(0); + struct disk_devdesc *ncurr; + int rv; + + if ((rv = userboot_parsedev(&ncurr, value, NULL)) != 0) + return (rv); + free(ncurr); + env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL); + return (0); } From nobody Fri Oct 8 16:09:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DEE9F17EA08F; Fri, 8 Oct 2021 16:09: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 4HQtRn1Q8Qz4jtv; Fri, 8 Oct 2021 16:09: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 8C3651DF0; Fri, 8 Oct 2021 16:09: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 198G9JBR002394; Fri, 8 Oct 2021 16:09:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9Jwc002393; Fri, 8 Oct 2021 16:09:19 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:19 GMT Message-Id: <202110081609.198G9Jwc002393@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 6d4d2c4ebd04 - stable/12 - libsa: cstyle cleanup of dosfs.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 6d4d2c4ebd04fb6debc930f058d6d4a625cb5582 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=6d4d2c4ebd04fb6debc930f058d6d4a625cb5582 commit 6d4d2c4ebd04fb6debc930f058d6d4a625cb5582 Author: Toomas Soome AuthorDate: 2021-08-19 14:33:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:16:35 +0000 libsa: cstyle cleanup of dosfs.c No functional changes intended. MFC after: 1 week (cherry picked from commit 3ec0714d6db0060113f6cadac6f4e44640603e8f) --- stand/libsa/dosfs.c | 1175 ++++++++++++++++++++++++++------------------------- 1 file changed, 595 insertions(+), 580 deletions(-) diff --git a/stand/libsa/dosfs.c b/stand/libsa/dosfs.c index 2d6029be837e..656af3642c88 100644 --- a/stand/libsa/dosfs.c +++ b/stand/libsa/dosfs.c @@ -69,40 +69,40 @@ struct fs_ops dosfs_fsops = { /* DOS "BIOS Parameter Block" */ typedef struct { - u_char secsiz[2]; /* sector size */ - u_char spc; /* sectors per cluster */ - u_char ressec[2]; /* reserved sectors */ - u_char fats; /* FATs */ - u_char dirents[2]; /* root directory entries */ - u_char secs[2]; /* total sectors */ - u_char media; /* media descriptor */ - u_char spf[2]; /* sectors per FAT */ - u_char spt[2]; /* sectors per track */ - u_char heads[2]; /* drive heads */ - u_char hidsec[4]; /* hidden sectors */ - u_char lsecs[4]; /* huge sectors */ - u_char lspf[4]; /* huge sectors per FAT */ - u_char xflg[2]; /* flags */ - u_char vers[2]; /* filesystem version */ - u_char rdcl[4]; /* root directory start cluster */ - u_char infs[2]; /* filesystem info sector */ - u_char bkbs[2]; /* backup boot sector */ + u_char secsiz[2]; /* sector size */ + u_char spc; /* sectors per cluster */ + u_char ressec[2]; /* reserved sectors */ + u_char fats; /* FATs */ + u_char dirents[2]; /* root directory entries */ + u_char secs[2]; /* total sectors */ + u_char media; /* media descriptor */ + u_char spf[2]; /* sectors per FAT */ + u_char spt[2]; /* sectors per track */ + u_char heads[2]; /* drive heads */ + u_char hidsec[4]; /* hidden sectors */ + u_char lsecs[4]; /* huge sectors */ + u_char lspf[4]; /* huge sectors per FAT */ + u_char xflg[2]; /* flags */ + u_char vers[2]; /* filesystem version */ + u_char rdcl[4]; /* root directory start cluster */ + u_char infs[2]; /* filesystem info sector */ + u_char bkbs[2]; /* backup boot sector */ } DOS_BPB; /* Initial portion of DOS boot sector */ typedef struct { - u_char jmp[3]; /* usually 80x86 'jmp' opcode */ - u_char oem[8]; /* OEM name and version */ - DOS_BPB bpb; /* BPB */ + u_char jmp[3]; /* usually 80x86 'jmp' opcode */ + u_char oem[8]; /* OEM name and version */ + DOS_BPB bpb; /* BPB */ } DOS_BS; /* Supply missing "." and ".." root directory entries */ static const char *const dotstr[2] = {".", ".."}; static DOS_DE dot[2] = { - {". ", " ", FA_DIR, {0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, - {0, 0}, {0x21, 0}, {0, 0}, {0, 0, 0, 0}}, - {".. ", " ", FA_DIR, {0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, - {0, 0}, {0x21, 0}, {0, 0}, {0, 0, 0, 0}} + {". ", " ", FA_DIR, {0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, + {0, 0}, {0x21, 0}, {0, 0}, {0, 0, 0, 0}}, + {".. ", " ", FA_DIR, {0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, + {0, 0}, {0x21, 0}, {0, 0}, {0, 0, 0, 0}} }; /* The usual conversion macros to avoid multiplication and division */ @@ -148,31 +148,31 @@ static int ioget(struct open_file *, daddr_t, void *, size_t); static int dos_read_fatblk(DOS_FS *fs, struct open_file *fd, u_int blknum) { - int err; - size_t io_size; - daddr_t offset_in_fat, max_offset_in_fat; - - offset_in_fat = ((daddr_t)blknum) * FATBLKSZ; - max_offset_in_fat = secbyt(fs->spf); - io_size = FATBLKSZ; - if (offset_in_fat > max_offset_in_fat) - offset_in_fat = max_offset_in_fat; - if (offset_in_fat + io_size > max_offset_in_fat) - io_size = ((size_t)(max_offset_in_fat - offset_in_fat)); - - if (io_size != 0) { - err = ioget(fd, fs->lsnfat + bytsec(offset_in_fat), - fs->fatbuf, io_size); - if (err != 0) { - fs->fatbuf_blknum = ((u_int)(-1)); - return (err); - } - } - if (io_size < FATBLKSZ) - memset(fs->fatbuf + io_size, 0, FATBLKSZ - io_size); - - fs->fatbuf_blknum = blknum; - return (0); + int err; + size_t io_size; + daddr_t offset_in_fat, max_offset_in_fat; + + offset_in_fat = ((daddr_t)blknum) * FATBLKSZ; + max_offset_in_fat = secbyt(fs->spf); + io_size = FATBLKSZ; + if (offset_in_fat > max_offset_in_fat) + offset_in_fat = max_offset_in_fat; + if (offset_in_fat + io_size > max_offset_in_fat) + io_size = ((size_t)(max_offset_in_fat - offset_in_fat)); + + if (io_size != 0) { + err = ioget(fd, fs->lsnfat + bytsec(offset_in_fat), + fs->fatbuf, io_size); + if (err != 0) { + fs->fatbuf_blknum = ((u_int)(-1)); + return (err); + } + } + if (io_size < FATBLKSZ) + memset(fs->fatbuf + io_size, 0, FATBLKSZ - io_size); + + fs->fatbuf_blknum = blknum; + return (0); } /* @@ -181,38 +181,38 @@ dos_read_fatblk(DOS_FS *fs, struct open_file *fd, u_int blknum) static int dos_mount(DOS_FS *fs, struct open_file *fd) { - int err; - u_char *buf; - - bzero(fs, sizeof(DOS_FS)); - fs->fd = fd; - - if ((buf = malloc(secbyt(1))) == NULL) - return (errno); - if ((err = ioget(fs->fd, 0, buf, secbyt(1))) || - (err = parsebs(fs, (DOS_BS *)buf))) { - free(buf); - return (err); - } - free(buf); - - if ((fs->fatbuf = malloc(FATBLKSZ)) == NULL) - return (errno); - err = dos_read_fatblk(fs, fd, 0); - if (err != 0) { - free(fs->fatbuf); - return (err); - } - - fs->root = dot[0]; - fs->root.name[0] = ' '; - if (fs->fatsz == 32) { - fs->root.clus[0] = fs->rdcl & 0xff; - fs->root.clus[1] = (fs->rdcl >> 8) & 0xff; - fs->root.dex.h_clus[0] = (fs->rdcl >> 16) & 0xff; - fs->root.dex.h_clus[1] = (fs->rdcl >> 24) & 0xff; - } - return (0); + int err; + u_char *buf; + + bzero(fs, sizeof(DOS_FS)); + fs->fd = fd; + + if ((buf = malloc(secbyt(1))) == NULL) + return (errno); + if ((err = ioget(fs->fd, 0, buf, secbyt(1))) || + (err = parsebs(fs, (DOS_BS *)buf))) { + free(buf); + return (err); + } + free(buf); + + if ((fs->fatbuf = malloc(FATBLKSZ)) == NULL) + return (errno); + err = dos_read_fatblk(fs, fd, 0); + if (err != 0) { + free(fs->fatbuf); + return (err); + } + + fs->root = dot[0]; + fs->root.name[0] = ' '; + if (fs->fatsz == 32) { + fs->root.clus[0] = fs->rdcl & 0xff; + fs->root.clus[1] = (fs->rdcl >> 8) & 0xff; + fs->root.dex.h_clus[0] = (fs->rdcl >> 16) & 0xff; + fs->root.dex.h_clus[1] = (fs->rdcl >> 24) & 0xff; + } + return (0); } /* @@ -221,11 +221,11 @@ dos_mount(DOS_FS *fs, struct open_file *fd) static int dos_unmount(DOS_FS *fs) { - if (fs->links) - return (EBUSY); - free(fs->fatbuf); - free(fs); - return (0); + if (fs->links) + return (EBUSY); + free(fs->fatbuf); + free(fs); + return (0); } /* @@ -234,45 +234,45 @@ dos_unmount(DOS_FS *fs) static int dos_open(const char *path, struct open_file *fd) { - DOS_DE *de; - DOS_FILE *f; - DOS_FS *fs; - u_int size, clus; - int err; - - /* Allocate mount structure, associate with open */ - if ((fs = malloc(sizeof(DOS_FS))) == NULL) - return (errno); - if ((err = dos_mount(fs, fd))) { - free(fs); - return (err); - } - - if ((err = namede(fs, path, &de))) { - dos_unmount(fs); - return (err); - } - - clus = stclus(fs->fatsz, de); - size = cv4(de->size); - - if ((!(de->attr & FA_DIR) && (!clus != !size)) || - ((de->attr & FA_DIR) && size) || - (clus && !okclus(fs, clus))) { - dos_unmount(fs); - return (EINVAL); - } - if ((f = malloc(sizeof(DOS_FILE))) == NULL) { - err = errno; - dos_unmount(fs); - return (err); - } - bzero(f, sizeof(DOS_FILE)); - f->fs = fs; - fs->links++; - f->de = *de; - fd->f_fsdata = (void *)f; - return (0); + DOS_DE *de; + DOS_FILE *f; + DOS_FS *fs; + u_int size, clus; + int err; + + /* Allocate mount structure, associate with open */ + if ((fs = malloc(sizeof(DOS_FS))) == NULL) + return (errno); + if ((err = dos_mount(fs, fd))) { + free(fs); + return (err); + } + + if ((err = namede(fs, path, &de))) { + dos_unmount(fs); + return (err); + } + + clus = stclus(fs->fatsz, de); + size = cv4(de->size); + + if ((!(de->attr & FA_DIR) && (!clus != !size)) || + ((de->attr & FA_DIR) && size) || + (clus && !okclus(fs, clus))) { + dos_unmount(fs); + return (EINVAL); + } + if ((f = malloc(sizeof(DOS_FILE))) == NULL) { + err = errno; + dos_unmount(fs); + return (err); + } + bzero(f, sizeof(DOS_FILE)); + f->fs = fs; + fs->links++; + f->de = *de; + fd->f_fsdata = (void *)f; + return (0); } /* @@ -281,57 +281,58 @@ dos_open(const char *path, struct open_file *fd) static int dos_read(struct open_file *fd, void *buf, size_t nbyte, size_t *resid) { - off_t size; - u_int nb, off, clus, c, cnt, n; - DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; - int err = 0; - - /* - * as ioget() can be called *a lot*, use twiddle here. - * also 4 seems to be good value not to slow loading down too much: - * with 270MB file (~540k ioget() calls, twiddle can easily waste 4-5sec. - */ - twiddle(4); - nb = (u_int)nbyte; - if ((size = fsize(f->fs, &f->de)) == -1) - return (EINVAL); - if (nb > (n = size - f->offset)) - nb = n; - off = f->offset; - if ((clus = stclus(f->fs->fatsz, &f->de))) - off &= f->fs->bsize - 1; - c = f->c; - cnt = nb; - while (cnt) { - n = 0; - if (!c) { - if ((c = clus)) - n = bytblk(f->fs, f->offset); - } else if (!off) - n++; - while (n--) { - if ((err = fatget(f->fs, &c))) - goto out; - if (!okclus(f->fs, c)) { - err = EINVAL; - goto out; - } + off_t size; + u_int nb, off, clus, c, cnt, n; + DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; + int err = 0; + + /* + * as ioget() can be called *a lot*, use twiddle here. + * also 4 seems to be good value not to slow loading down too much: + * with 270MB file (~540k ioget() calls, twiddle can easily waste + * 4-5 sec. + */ + twiddle(4); + nb = (u_int)nbyte; + if ((size = fsize(f->fs, &f->de)) == -1) + return (EINVAL); + if (nb > (n = size - f->offset)) + nb = n; + off = f->offset; + if ((clus = stclus(f->fs->fatsz, &f->de))) + off &= f->fs->bsize - 1; + c = f->c; + cnt = nb; + while (cnt) { + n = 0; + if (!c) { + if ((c = clus)) + n = bytblk(f->fs, f->offset); + } else if (!off) + n++; + while (n--) { + if ((err = fatget(f->fs, &c))) + goto out; + if (!okclus(f->fs, c)) { + err = EINVAL; + goto out; + } + } + if (!clus || (n = f->fs->bsize - off) > cnt) + n = cnt; + if ((err = ioread(f->fs, (c ? blkoff(f->fs, c) : + secbyt(f->fs->lsndir)) + off, buf, n))) + goto out; + f->offset += n; + f->c = c; + off = 0; + buf = (char *)buf + n; + cnt -= n; } - if (!clus || (n = f->fs->bsize - off) > cnt) - n = cnt; - if ((err = ioread(f->fs, (c ? blkoff(f->fs, c) : - secbyt(f->fs->lsndir)) + off, buf, n))) - goto out; - f->offset += n; - f->c = c; - off = 0; - buf = (char *)buf + n; - cnt -= n; - } - out: - if (resid) - *resid = nbyte - nb + cnt; - return (err); +out: + if (resid) + *resid = nbyte - nb + cnt; + return (err); } /* @@ -340,33 +341,33 @@ dos_read(struct open_file *fd, void *buf, size_t nbyte, size_t *resid) static off_t dos_seek(struct open_file *fd, off_t offset, int whence) { - off_t off; - u_int size; - DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; - - size = cv4(f->de.size); - switch (whence) { - case SEEK_SET: - off = 0; - break; - case SEEK_CUR: - off = f->offset; - break; - case SEEK_END: - off = size; - break; - default: - errno = EINVAL; - return (-1); - } - off += offset; - if (off < 0 || off > size) { - errno = EINVAL; - return (-1); - } - f->offset = (u_int)off; - f->c = 0; - return (off); + off_t off; + u_int size; + DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; + + size = cv4(f->de.size); + switch (whence) { + case SEEK_SET: + off = 0; + break; + case SEEK_CUR: + off = f->offset; + break; + case SEEK_END: + off = size; + break; + default: + errno = EINVAL; + return (-1); + } + off += offset; + if (off < 0 || off > size) { + errno = EINVAL; + return (-1); + } + f->offset = (u_int)off; + f->c = 0; + return (off); } /* @@ -375,13 +376,13 @@ dos_seek(struct open_file *fd, off_t offset, int whence) static int dos_close(struct open_file *fd) { - DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; - DOS_FS *fs = f->fs; + DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; + DOS_FS *fs = f->fs; - f->fs->links--; - free(f); - dos_unmount(fs); - return (0); + f->fs->links--; + free(f); + dos_unmount(fs); + return (0); } /* @@ -390,105 +391,106 @@ dos_close(struct open_file *fd) static int dos_stat(struct open_file *fd, struct stat *sb) { - DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; - - /* only important stuff */ - sb->st_mode = f->de.attr & FA_DIR ? S_IFDIR | 0555 : S_IFREG | 0444; - sb->st_nlink = 1; - sb->st_uid = 0; - sb->st_gid = 0; - if ((sb->st_size = fsize(f->fs, &f->de)) == -1) - return (EINVAL); - return (0); + DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; + + /* only important stuff */ + sb->st_mode = f->de.attr & FA_DIR ? S_IFDIR | 0555 : S_IFREG | 0444; + sb->st_nlink = 1; + sb->st_uid = 0; + sb->st_gid = 0; + if ((sb->st_size = fsize(f->fs, &f->de)) == -1) + return (EINVAL); + return (0); } static int dos_checksum(unsigned char *name, unsigned char *ext) { - int x, i; - char buf[11]; - - bcopy(name, buf, 8); - bcopy(ext, buf+8, 3); - x = 0; - for (i = 0; i < 11; i++) { - x = ((x & 1) << 7) | (x >> 1); - x += buf[i]; - x &= 0xff; - } - return (x); + int x, i; + char buf[11]; + + bcopy(name, buf, 8); + bcopy(ext, buf+8, 3); + x = 0; + for (i = 0; i < 11; i++) { + x = ((x & 1) << 7) | (x >> 1); + x += buf[i]; + x &= 0xff; + } + return (x); } static int dos_readdir(struct open_file *fd, struct dirent *d) { - /* DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; */ - u_char fn[261]; - DOS_DIR dd; - size_t res; - u_int chk, x, xdn; - int err; - - x = chk = 0; - while (1) { - xdn = x; - x = 0; - err = dos_read(fd, &dd, sizeof(dd), &res); - if (err) - return (err); - if (res == sizeof(dd)) - return (ENOENT); - if (dd.de.name[0] == 0) - return (ENOENT); - - /* Skip deleted entries */ - if (dd.de.name[0] == 0xe5) - continue; - - /* Check if directory entry is volume label */ - if (dd.de.attr & FA_LABEL) { - /* - * If volume label set, check if the current entry is - * extended entry (FA_XDE) for long file names. - */ - if ((dd.de.attr & FA_MASK) == FA_XDE) { - /* - * Read through all following extended entries - * to get the long file name. 0x40 marks the - * last entry containing part of long file name. - */ - if (dd.xde.seq & 0x40) - chk = dd.xde.chk; - else if (dd.xde.seq != xdn - 1 || dd.xde.chk != chk) - continue; - x = dd.xde.seq & ~0x40; - if (x < 1 || x > 20) { - x = 0; - continue; + /* DOS_FILE *f = (DOS_FILE *)fd->f_fsdata; */ + u_char fn[261]; + DOS_DIR dd; + size_t res; + u_int chk, x, xdn; + int err; + + x = chk = 0; + for (;;) { + xdn = x; + x = 0; + err = dos_read(fd, &dd, sizeof(dd), &res); + if (err) + return (err); + if (res == sizeof(dd)) + return (ENOENT); + if (dd.de.name[0] == 0) + return (ENOENT); + + /* Skip deleted entries */ + if (dd.de.name[0] == 0xe5) + continue; + + /* Check if directory entry is volume label */ + if (dd.de.attr & FA_LABEL) { + /* + * If volume label set, check if the current entry is + * extended entry (FA_XDE) for long file names. + */ + if ((dd.de.attr & FA_MASK) == FA_XDE) { + /* + * Read through all following extended entries + * to get the long file name. 0x40 marks the + * last entry containing part of long file name. + */ + if (dd.xde.seq & 0x40) + chk = dd.xde.chk; + else if (dd.xde.seq != xdn - 1 || + dd.xde.chk != chk) + continue; + x = dd.xde.seq & ~0x40; + if (x < 1 || x > 20) { + x = 0; + continue; + } + cp_xdnm(fn, &dd.xde); + } else { + /* skip only volume label entries */ + continue; + } + } else { + if (xdn == 1) { + x = dos_checksum(dd.de.name, dd.de.ext); + if (x == chk) + break; + } else { + cp_sfn(fn, &dd.de); + break; + } + x = 0; } - cp_xdnm(fn, &dd.xde); - } else { - /* skip only volume label entries */ - continue; - } - } else { - if (xdn == 1) { - x = dos_checksum(dd.de.name, dd.de.ext); - if (x == chk) - break; - } else { - cp_sfn(fn, &dd.de); - break; - } - x = 0; } - } - d->d_fileno = (dd.de.clus[1] << 8) + dd.de.clus[0]; - d->d_reclen = sizeof(*d); - d->d_type = (dd.de.attr & FA_DIR) ? DT_DIR : DT_REG; - memcpy(d->d_name, fn, sizeof(d->d_name)); - return (0); + d->d_fileno = (dd.de.clus[1] << 8) + dd.de.clus[0]; + d->d_reclen = sizeof(*d); + d->d_type = (dd.de.attr & FA_DIR) ? DT_DIR : DT_REG; + memcpy(d->d_name, fn, sizeof(d->d_name)); + return (0); } /* @@ -497,47 +499,47 @@ dos_readdir(struct open_file *fd, struct dirent *d) static int parsebs(DOS_FS *fs, DOS_BS *bs) { - u_int sc; - - if ((bs->jmp[0] != 0x69 && - bs->jmp[0] != 0xe9 && - (bs->jmp[0] != 0xeb || bs->jmp[2] != 0x90)) || - bs->bpb.media < 0xf0) - return (EINVAL); - if (cv2(bs->bpb.secsiz) != SECSIZ) - return (EINVAL); - if (!(fs->spc = bs->bpb.spc) || fs->spc & (fs->spc - 1)) - return (EINVAL); - fs->bsize = secbyt(fs->spc); - fs->bshift = ffs(fs->bsize) - 1; - if ((fs->spf = cv2(bs->bpb.spf))) { - if (bs->bpb.fats != 2) - return (EINVAL); - if (!(fs->dirents = cv2(bs->bpb.dirents))) - return (EINVAL); - } else { - if (!(fs->spf = cv4(bs->bpb.lspf))) - return (EINVAL); - if (!bs->bpb.fats || bs->bpb.fats > 16) - return (EINVAL); - if ((fs->rdcl = cv4(bs->bpb.rdcl)) < LOCLUS) - return (EINVAL); - } - if (!(fs->lsnfat = cv2(bs->bpb.ressec))) - return (EINVAL); - fs->lsndir = fs->lsnfat + fs->spf * bs->bpb.fats; - fs->lsndta = fs->lsndir + entsec(fs->dirents); - if (!(sc = cv2(bs->bpb.secs)) && !(sc = cv4(bs->bpb.lsecs))) - return (EINVAL); - if (fs->lsndta > sc) - return (EINVAL); - if ((fs->xclus = secblk(fs, sc - fs->lsndta) + 1) < LOCLUS) - return (EINVAL); - fs->fatsz = fs->dirents ? fs->xclus < 0xff6 ? 12 : 16 : 32; - sc = (secbyt(fs->spf) << 1) / (fs->fatsz >> 2) - 1; - if (fs->xclus > sc) - fs->xclus = sc; - return (0); + u_int sc; + + if ((bs->jmp[0] != 0x69 && + bs->jmp[0] != 0xe9 && + (bs->jmp[0] != 0xeb || bs->jmp[2] != 0x90)) || + bs->bpb.media < 0xf0) + return (EINVAL); + if (cv2(bs->bpb.secsiz) != SECSIZ) + return (EINVAL); + if (!(fs->spc = bs->bpb.spc) || fs->spc & (fs->spc - 1)) + return (EINVAL); + fs->bsize = secbyt(fs->spc); + fs->bshift = ffs(fs->bsize) - 1; + if ((fs->spf = cv2(bs->bpb.spf))) { + if (bs->bpb.fats != 2) + return (EINVAL); + if (!(fs->dirents = cv2(bs->bpb.dirents))) + return (EINVAL); + } else { + if (!(fs->spf = cv4(bs->bpb.lspf))) + return (EINVAL); + if (!bs->bpb.fats || bs->bpb.fats > 16) + return (EINVAL); + if ((fs->rdcl = cv4(bs->bpb.rdcl)) < LOCLUS) + return (EINVAL); + } + if (!(fs->lsnfat = cv2(bs->bpb.ressec))) + return (EINVAL); + fs->lsndir = fs->lsnfat + fs->spf * bs->bpb.fats; + fs->lsndta = fs->lsndir + entsec(fs->dirents); + if (!(sc = cv2(bs->bpb.secs)) && !(sc = cv4(bs->bpb.lsecs))) + return (EINVAL); + if (fs->lsndta > sc) + return (EINVAL); + if ((fs->xclus = secblk(fs, sc - fs->lsndta) + 1) < LOCLUS) + return (EINVAL); + fs->fatsz = fs->dirents ? fs->xclus < 0xff6 ? 12 : 16 : 32; + sc = (secbyt(fs->spf) << 1) / (fs->fatsz >> 2) - 1; + if (fs->xclus > sc) + fs->xclus = sc; + return (0); } /* @@ -546,33 +548,33 @@ parsebs(DOS_FS *fs, DOS_BS *bs) static int namede(DOS_FS *fs, const char *path, DOS_DE **dep) { - char name[256]; - DOS_DE *de; - char *s; - size_t n; - int err; - - err = 0; - de = &fs->root; - while (*path) { - while (*path == '/') - path++; - if (*path == '\0') - break; - if (!(s = strchr(path, '/'))) - s = strchr(path, 0); - if ((n = s - path) > 255) - return (ENAMETOOLONG); - memcpy(name, path, n); - name[n] = 0; - path = s; - if (!(de->attr & FA_DIR)) - return (ENOTDIR); - if ((err = lookup(fs, stclus(fs->fatsz, de), name, &de))) - return (err); - } - *dep = de; - return (0); + char name[256]; + DOS_DE *de; + char *s; + size_t n; + int err; + + err = 0; + de = &fs->root; + while (*path) { + while (*path == '/') + path++; + if (*path == '\0') + break; + if (!(s = strchr(path, '/'))) + s = strchr(path, 0); + if ((n = s - path) > 255) + return (ENAMETOOLONG); + memcpy(name, path, n); + name[n] = 0; + path = s; + if (!(de->attr & FA_DIR)) + return (ENOTDIR); + if ((err = lookup(fs, stclus(fs->fatsz, de), name, &de))) + return (err); + } + *dep = de; + return (0); } /* @@ -581,78 +583,85 @@ namede(DOS_FS *fs, const char *path, DOS_DE **dep) static int lookup(DOS_FS *fs, u_int clus, const char *name, DOS_DE **dep) { - static DOS_DIR dir[DEPSEC]; - u_char lfn[261]; - u_char sfn[13]; - u_int nsec, lsec, xdn, chk, sec, ent, x; - int err, ok; - - if (!clus) - for (ent = 0; ent < 2; ent++) - if (!strcasecmp(name, dotstr[ent])) { - *dep = dot + ent; - return (0); - } - if (!clus && fs->fatsz == 32) - clus = fs->rdcl; - nsec = !clus ? entsec(fs->dirents) : fs->spc; - lsec = 0; - xdn = chk = 0; - for (;;) { - if (!clus && !lsec) - lsec = fs->lsndir; - else if (okclus(fs, clus)) - lsec = blklsn(fs, clus); - else - return (EINVAL); - for (sec = 0; sec < nsec; sec++) { - if ((err = ioget(fs->fd, lsec + sec, dir, secbyt(1)))) - return (err); - for (ent = 0; ent < DEPSEC; ent++) { - if (!*dir[ent].de.name) - return (ENOENT); - if (*dir[ent].de.name != 0xe5) { - if ((dir[ent].de.attr & FA_MASK) == FA_XDE) { - x = dir[ent].xde.seq; - if (x & 0x40 || (x + 1 == xdn && - dir[ent].xde.chk == chk)) { - if (x & 0x40) { - chk = dir[ent].xde.chk; - x &= ~0x40; - } - if (x >= 1 && x <= 20) { - cp_xdnm(lfn, &dir[ent].xde); - xdn = x; - continue; - } - } - } else if (!(dir[ent].de.attr & FA_LABEL)) { - if ((ok = xdn == 1)) { - x = dos_checksum(dir[ent].de.name, dir[ent].de.ext); - ok = chk == x && - !strcasecmp(name, (const char *)lfn); - } - if (!ok) { - cp_sfn(sfn, &dir[ent].de); - ok = !strcasecmp(name, (const char *)sfn); - } - if (ok) { - *dep = &dir[ent].de; - return (0); - } - } + static DOS_DIR dir[DEPSEC]; + u_char lfn[261]; + u_char sfn[13]; + u_int nsec, lsec, xdn, chk, sec, ent, x; + int err, ok; + + if (!clus) + for (ent = 0; ent < 2; ent++) + if (!strcasecmp(name, dotstr[ent])) { + *dep = dot + ent; + return (0); } - xdn = 0; - } - } - if (!clus) - break; - if ((err = fatget(fs, &clus))) - return (err); - if (fatend(fs->fatsz, clus)) - break; - } - return (ENOENT); + if (!clus && fs->fatsz == 32) + clus = fs->rdcl; + nsec = !clus ? entsec(fs->dirents) : fs->spc; + lsec = 0; + xdn = chk = 0; + for (;;) { + if (!clus && !lsec) + lsec = fs->lsndir; + else if (okclus(fs, clus)) + lsec = blklsn(fs, clus); + else + return (EINVAL); + for (sec = 0; sec < nsec; sec++) { + if ((err = ioget(fs->fd, lsec + sec, dir, secbyt(1)))) + return (err); + for (ent = 0; ent < DEPSEC; ent++) { + if (!*dir[ent].de.name) + return (ENOENT); + if (*dir[ent].de.name != 0xe5) { + if ((dir[ent].de.attr & FA_MASK) == + FA_XDE) { + x = dir[ent].xde.seq; + if (x & 0x40 || (x + 1 == xdn && + dir[ent].xde.chk == chk)) { + if (x & 0x40) { + chk = dir[ent].xde.chk; + x &= ~0x40; + } + if (x >= 1 && x <= 20) { + cp_xdnm(lfn, &dir[ent].xde); + xdn = x; + continue; + } + } + } else if (!(dir[ent].de.attr & + FA_LABEL)) { + if ((ok = xdn == 1)) { + x = dos_checksum( + dir[ent].de.name, + dir[ent].de.ext); + ok = chk == x && + !strcasecmp(name, + (const char *)lfn); + } + if (!ok) { + cp_sfn(sfn, *** 377 LINES SKIPPED *** From nobody Fri Oct 8 16:09:20 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5674C17E979A; Fri, 8 Oct 2021 16:09: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 4HQtRp5tTZz4k0c; Fri, 8 Oct 2021 16:09: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 AFB882198; Fri, 8 Oct 2021 16:09: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 198G9KBm002418; Fri, 8 Oct 2021 16:09:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198G9K4D002417; Fri, 8 Oct 2021 16:09:20 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:09:20 GMT Message-Id: <202110081609.198G9K4D002417@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 34915d6871d0 - stable/12 - loader: dev_net.c should use __func__ with printf List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 34915d6871d09448bac6d2f66bfd56340ae16fd5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=34915d6871d09448bac6d2f66bfd56340ae16fd5 commit 34915d6871d09448bac6d2f66bfd56340ae16fd5 Author: Toomas Soome AuthorDate: 2021-09-24 14:07:20 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 08:16:56 +0000 loader: dev_net.c should use __func__ with printf We have printf calls with function name hardwired to string, sometimes wrong name. Use __func__ instead. MFC after: 1 week (cherry picked from commit 1a25c51e38a7c9f46ec195836233636616741f06) --- stand/common/dev_net.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/stand/common/dev_net.c b/stand/common/dev_net.c index 1fa955ac1cf1..db13e618e822 100644 --- a/stand/common/dev_net.c +++ b/stand/common/dev_net.c @@ -141,13 +141,14 @@ net_open(struct open_file *f, ...) if (netdev_sock < 0) { netdev_sock = netif_open(dev); if (netdev_sock < 0) { - printf("net_open: netif_open() failed\n"); + printf("%s: netif_open() failed\n", __func__); return (ENXIO); } netdev_name = strdup(devname); #ifdef NETIF_DEBUG if (debug) - printf("net_open: netif_open() succeeded\n"); + printf("%s: netif_open() succeeded\n", + __func__); #endif } /* @@ -202,7 +203,7 @@ net_close(struct open_file *f) #ifdef NETIF_DEBUG if (debug) - printf("net_close: opens=%d\n", netdev_opens); + printf("%s: opens=%d\n", __func__, netdev_opens); #endif f->f_devdata = NULL; @@ -217,7 +218,7 @@ net_cleanup(void) if (netdev_sock >= 0) { #ifdef NETIF_DEBUG if (debug) - printf("net_cleanup: calling netif_close()\n"); + printf("%s: calling netif_close()\n", __func__); #endif rootip.s_addr = 0; free(netdev_name); @@ -272,7 +273,7 @@ net_getparams(int sock) goto exit; #ifdef NETIF_DEBUG if (debug) - printf("net_open: BOOTP failed, trying RARP/RPC...\n"); + printf("%s: BOOTP failed, trying RARP/RPC...\n", __func__); #endif #endif @@ -281,19 +282,19 @@ net_getparams(int sock) * netmask to the "natural" default for our address. */ if (rarp_getipaddress(sock)) { - printf("net_open: RARP failed\n"); + printf("%s: RARP failed\n", __func__); return (EIO); } - printf("net_open: client addr: %s\n", inet_ntoa(myip)); + printf("%s: client addr: %s\n", __func__, inet_ntoa(myip)); /* Get our hostname, server IP address, gateway. */ if (bp_whoami(sock)) { - printf("net_open: bootparam/whoami RPC failed\n"); + printf("%s: bootparam/whoami RPC failed\n", __func__); return (EIO); } #ifdef NETIF_DEBUG if (debug) - printf("net_open: client name: %s\n", hostname); + printf("%s: client name: %s\n", __func__, hostname); #endif /* @@ -310,17 +311,18 @@ net_getparams(int sock) netmask = smask; #ifdef NETIF_DEBUG if (debug) - printf("net_open: subnet mask: %s\n", intoa(netmask)); + printf("%s: subnet mask: %s\n", __func__, + intoa(netmask)); #endif } #ifdef NETIF_DEBUG if (gateip.s_addr && debug) - printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); + printf("%s: net gateway: %s\n", __func__, inet_ntoa(gateip)); #endif /* Get the root server and pathname. */ if (bp_getfile(sock, "root", &rootip, rootpath)) { - printf("net_open: bootparam/getfile RPC failed\n"); + printf("%s: bootparam/getfile RPC failed\n", __func__); return (EIO); } exit: @@ -329,8 +331,8 @@ exit: #ifdef NETIF_DEBUG if (debug) { - printf("net_open: server addr: %s\n", inet_ntoa(rootip)); - printf("net_open: server path: %s\n", rootpath); + printf("%s: server addr: %s\n", __func__, inet_ntoa(rootip)); + printf("%s: server path: %s\n", __func__, rootpath); } #endif From nobody Fri Oct 8 16:19:25 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6C7D117F27A0; Fri, 8 Oct 2021 16:19:28 +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 4HQtgN1jY4z3CMT; Fri, 8 Oct 2021 16:19:28 +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 3868658C0; Fri, 8 Oct 2021 16:19:27 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Subject: Re: git: b5cadc643e85 - main - Make core dump writes interruptible with SIGKILL To: Konstantin Belousov , src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org References: <202110080022.1980M9HS043290@gitrepo.freebsd.org> From: John Baldwin Message-ID: Date: Fri, 8 Oct 2021 09:19:25 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 In-Reply-To: <202110080022.1980M9HS043290@gitrepo.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-ThisMailContainsUnwantedMimeParts: N On 10/7/21 5:22 PM, Konstantin Belousov wrote: > The branch main has been updated by kib: > > URL: https://cgit.FreeBSD.org/src/commit/?id=b5cadc643e853fa4cb23e5315e6f40bf9979a9c0 > > commit b5cadc643e853fa4cb23e5315e6f40bf9979a9c0 > Author: Konstantin Belousov > AuthorDate: 2021-10-05 05:11:32 +0000 > Commit: Konstantin Belousov > CommitDate: 2021-10-08 00:21:43 +0000 > > Make core dump writes interruptible with SIGKILL > > This can be disabled by sysctl kern.core_dump_can_intr > > Reported and tested by: pho > Reviewed by: imp, markj > Sponsored by: The FreeBSD Foundation > MFC after: 1 week > Differential revision: https://reviews.freebsd.org/D32313 Nice! I've long wanted this feature. -- John Baldwin From nobody Fri Oct 8 16:27:50 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 79F0617F346D; Fri, 8 Oct 2021 16:27: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 4HQts22ptJz3Db8; Fri, 8 Oct 2021 16:27: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 419DB243E; Fri, 8 Oct 2021 16:27: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 198GRoBt029375; Fri, 8 Oct 2021 16:27:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198GRolE029374; Fri, 8 Oct 2021 16:27:50 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:27:50 GMT Message-Id: <202110081627.198GRolE029374@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 98520e682d0b - stable/12 - freebsd-version(1): Add -j flag to support jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 98520e682d0b614a24cdeada096fa57816a18aa3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=98520e682d0b614a24cdeada096fa57816a18aa3 commit 98520e682d0b614a24cdeada096fa57816a18aa3 Author: Faraz Vahedi AuthorDate: 2021-10-01 18:46:23 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 16:27:33 +0000 freebsd-version(1): Add -j flag to support jails Make freebsd-version(1) support jails by adding the -j flag which takes a jail jid or name as an argument. As with other options, -j flags stack and display in the order requested. Reviewed by: bcr (manpages), kevans MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25705 (cherry picked from commit f54b18fc4d72c566912b9a41601ed87a852960e7) --- bin/freebsd-version/freebsd-version.1 | 13 +++++++++++-- bin/freebsd-version/freebsd-version.sh.in | 29 ++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/bin/freebsd-version/freebsd-version.1 b/bin/freebsd-version/freebsd-version.1 index 710bb23ac4c3..b580c580fcbc 100644 --- a/bin/freebsd-version/freebsd-version.1 +++ b/bin/freebsd-version/freebsd-version.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 14, 2017 +.Dd October 1, 2021 .Dt FREEBSD-VERSION 1 .Os .Sh NAME @@ -34,6 +34,7 @@ .Sh SYNOPSIS .Nm .Op Fl kru +.Op Fl j Ar jail .Sh DESCRIPTION The .Nm @@ -60,12 +61,20 @@ Print the version and patch level of the installed userland. These are hardcoded into .Nm during the build. +.It Fl j Ar jail +Print the version and patch level of the installed userland in the +given jail specified by +.Va jid +or +.Va name . +This option can be specified multiple times. .El .Pp If several of the above options are specified, .Nm will print the installed kernel version first, then the running kernel -version, and finally the userland version, on separate lines. +version, next the userland version, and finally the userland version +of the specified jails, on separate lines. If neither is specified, it will print the userland version only. .Sh IMPLEMENTATION NOTES The diff --git a/bin/freebsd-version/freebsd-version.sh.in b/bin/freebsd-version/freebsd-version.sh.in index 9541b86a2636..be1be366f652 100644 --- a/bin/freebsd-version/freebsd-version.sh.in +++ b/bin/freebsd-version/freebsd-version.sh.in @@ -84,11 +84,20 @@ userland_version() { echo $USERLAND_VERSION } +# +# Print the hardcoded userland version of a jail. +# +jail_version() { + for i in $jail; do + jexec -- $i freebsd-version + done +} + # # Print a usage string and exit. # usage() { - echo "usage: $progname [-kru]" >&2 + echo "usage: $progname [-kru] [-j jail]" >&2 exit 1 } @@ -97,7 +106,8 @@ usage() { # main() { # parse command-line arguments - while getopts "kru" option ; do + local OPTIND=1 OPTARG option + while getopts "kruj:" option ; do case $option in k) opt_k=1 @@ -108,6 +118,14 @@ main() { u) opt_u=1 ;; + j) + if [ $opt_j ] ; then + jail="$jail $OPTARG" + else + opt_j=1 + jail="$OPTARG" + fi + ;; *) usage ;; @@ -118,7 +136,7 @@ main() { fi # default is -u - if [ $((opt_k + opt_r + opt_u)) -eq 0 ] ; then + if [ $((opt_k + opt_r + opt_u + opt_j)) -eq 0 ] ; then opt_u=1 fi @@ -136,6 +154,11 @@ main() { if [ $opt_u ] ; then userland_version fi + + # print jail version + if [ $opt_j ] ; then + jail_version + fi } main "$@" From nobody Fri Oct 8 16:27:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5965817F3880; Fri, 8 Oct 2021 16:27: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 4HQts344b5z3DYH; Fri, 8 Oct 2021 16:27: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 5E9FB2614; Fri, 8 Oct 2021 16:27: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 198GRpfI029399; Fri, 8 Oct 2021 16:27:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198GRpq6029398; Fri, 8 Oct 2021 16:27:51 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:27:51 GMT Message-Id: <202110081627.198GRpq6029398@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: e02bf0022e90 - stable/12 - freebsd-update(8): Add -j flag to support jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: e02bf0022e90214918faeadde3500aaef087cc42 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=e02bf0022e90214918faeadde3500aaef087cc42 commit e02bf0022e90214918faeadde3500aaef087cc42 Author: Faraz Vahedi AuthorDate: 2021-10-01 18:48:57 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 16:27:35 +0000 freebsd-update(8): Add -j flag to support jails Make freebsd-update(8) support jails by adding the -j flag which takes a jail jid or name as an argument. This takes advantage of the recently added -j support to freebsd-version(8) in order to get the version of the installed userland. Reviewed by: dteske, kevans MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25711 (cherry picked from commit c76da1f01064b2b9a1903b30d4b4c444b85f8724) --- usr.sbin/freebsd-update/freebsd-update.8 | 11 ++++++++++- usr.sbin/freebsd-update/freebsd-update.sh | 20 +++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/usr.sbin/freebsd-update/freebsd-update.8 b/usr.sbin/freebsd-update/freebsd-update.8 index 54ec17b5ea36..be477d0cdce7 100644 --- a/usr.sbin/freebsd-update/freebsd-update.8 +++ b/usr.sbin/freebsd-update/freebsd-update.8 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 14, 2020 +.Dd October 1, 2021 .Dt FREEBSD-UPDATE 8 .Os .Sh NAME @@ -37,6 +37,7 @@ .Op Fl d Ar workdir .Op Fl f Ar conffile .Op Fl F +.Op Fl j Ar jail .Op Fl k Ar KEY .Op Fl r Ar newrelease .Op Fl s Ar server @@ -90,6 +91,14 @@ Read configuration options from Force .Nm Cm fetch to proceed in the case of an unfinished upgrade. +.It Fl j Ar jail +Operate on the given jail specified by +.Va jid +or +.Va name . +(The version of the installed userland is detected and the +.Fl -currently-running +option is no more required.) .It Fl k Ar KEY Trust an RSA key with SHA256 of .Ar KEY . diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh index 4fbac58cb562..1776115d0776 100644 --- a/usr.sbin/freebsd-update/freebsd-update.sh +++ b/usr.sbin/freebsd-update/freebsd-update.sh @@ -36,7 +36,7 @@ # --no-stats -- don't show progress statistics while fetching files usage () { cat < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: cae3560307ec - stable/13 - freebsd-version(1): Add -j flag to support jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: cae3560307ec593cf35211536e8deb5c99def561 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=cae3560307ec593cf35211536e8deb5c99def561 commit cae3560307ec593cf35211536e8deb5c99def561 Author: Faraz Vahedi AuthorDate: 2021-10-01 18:46:23 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 16:29:07 +0000 freebsd-version(1): Add -j flag to support jails Make freebsd-version(1) support jails by adding the -j flag which takes a jail jid or name as an argument. As with other options, -j flags stack and display in the order requested. Reviewed by: bcr (manpages), kevans MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25705 (cherry picked from commit f54b18fc4d72c566912b9a41601ed87a852960e7) --- bin/freebsd-version/freebsd-version.1 | 13 +++++++++++-- bin/freebsd-version/freebsd-version.sh.in | 29 ++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/bin/freebsd-version/freebsd-version.1 b/bin/freebsd-version/freebsd-version.1 index 710bb23ac4c3..b580c580fcbc 100644 --- a/bin/freebsd-version/freebsd-version.1 +++ b/bin/freebsd-version/freebsd-version.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 14, 2017 +.Dd October 1, 2021 .Dt FREEBSD-VERSION 1 .Os .Sh NAME @@ -34,6 +34,7 @@ .Sh SYNOPSIS .Nm .Op Fl kru +.Op Fl j Ar jail .Sh DESCRIPTION The .Nm @@ -60,12 +61,20 @@ Print the version and patch level of the installed userland. These are hardcoded into .Nm during the build. +.It Fl j Ar jail +Print the version and patch level of the installed userland in the +given jail specified by +.Va jid +or +.Va name . +This option can be specified multiple times. .El .Pp If several of the above options are specified, .Nm will print the installed kernel version first, then the running kernel -version, and finally the userland version, on separate lines. +version, next the userland version, and finally the userland version +of the specified jails, on separate lines. If neither is specified, it will print the userland version only. .Sh IMPLEMENTATION NOTES The diff --git a/bin/freebsd-version/freebsd-version.sh.in b/bin/freebsd-version/freebsd-version.sh.in index 9541b86a2636..be1be366f652 100644 --- a/bin/freebsd-version/freebsd-version.sh.in +++ b/bin/freebsd-version/freebsd-version.sh.in @@ -84,11 +84,20 @@ userland_version() { echo $USERLAND_VERSION } +# +# Print the hardcoded userland version of a jail. +# +jail_version() { + for i in $jail; do + jexec -- $i freebsd-version + done +} + # # Print a usage string and exit. # usage() { - echo "usage: $progname [-kru]" >&2 + echo "usage: $progname [-kru] [-j jail]" >&2 exit 1 } @@ -97,7 +106,8 @@ usage() { # main() { # parse command-line arguments - while getopts "kru" option ; do + local OPTIND=1 OPTARG option + while getopts "kruj:" option ; do case $option in k) opt_k=1 @@ -108,6 +118,14 @@ main() { u) opt_u=1 ;; + j) + if [ $opt_j ] ; then + jail="$jail $OPTARG" + else + opt_j=1 + jail="$OPTARG" + fi + ;; *) usage ;; @@ -118,7 +136,7 @@ main() { fi # default is -u - if [ $((opt_k + opt_r + opt_u)) -eq 0 ] ; then + if [ $((opt_k + opt_r + opt_u + opt_j)) -eq 0 ] ; then opt_u=1 fi @@ -136,6 +154,11 @@ main() { if [ $opt_u ] ; then userland_version fi + + # print jail version + if [ $opt_j ] ; then + jail_version + fi } main "$@" From nobody Fri Oct 8 16:29:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D621217F462A; Fri, 8 Oct 2021 16:29:41 +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 4HQtv95bXMz3FWM; Fri, 8 Oct 2021 16:29:41 +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 A1861243F; Fri, 8 Oct 2021 16:29:41 +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 198GTfin029696; Fri, 8 Oct 2021 16:29:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198GTf0U029695; Fri, 8 Oct 2021 16:29:41 GMT (envelope-from git) Date: Fri, 8 Oct 2021 16:29:41 GMT Message-Id: <202110081629.198GTf0U029695@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 73e1e1614f07 - stable/13 - freebsd-update(8): Add -j flag to support jails List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 73e1e1614f078603a393b716ccdeb3cba5deff22 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=73e1e1614f078603a393b716ccdeb3cba5deff22 commit 73e1e1614f078603a393b716ccdeb3cba5deff22 Author: Faraz Vahedi AuthorDate: 2021-10-01 18:48:57 +0000 Commit: Kyle Evans CommitDate: 2021-10-08 16:29:07 +0000 freebsd-update(8): Add -j flag to support jails Make freebsd-update(8) support jails by adding the -j flag which takes a jail jid or name as an argument. This takes advantage of the recently added -j support to freebsd-version(8) in order to get the version of the installed userland. Reviewed by: dteske, kevans MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25711 (cherry picked from commit c76da1f01064b2b9a1903b30d4b4c444b85f8724) --- usr.sbin/freebsd-update/freebsd-update.8 | 11 ++++++++++- usr.sbin/freebsd-update/freebsd-update.sh | 20 +++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/usr.sbin/freebsd-update/freebsd-update.8 b/usr.sbin/freebsd-update/freebsd-update.8 index 54ec17b5ea36..be477d0cdce7 100644 --- a/usr.sbin/freebsd-update/freebsd-update.8 +++ b/usr.sbin/freebsd-update/freebsd-update.8 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 14, 2020 +.Dd October 1, 2021 .Dt FREEBSD-UPDATE 8 .Os .Sh NAME @@ -37,6 +37,7 @@ .Op Fl d Ar workdir .Op Fl f Ar conffile .Op Fl F +.Op Fl j Ar jail .Op Fl k Ar KEY .Op Fl r Ar newrelease .Op Fl s Ar server @@ -90,6 +91,14 @@ Read configuration options from Force .Nm Cm fetch to proceed in the case of an unfinished upgrade. +.It Fl j Ar jail +Operate on the given jail specified by +.Va jid +or +.Va name . +(The version of the installed userland is detected and the +.Fl -currently-running +option is no more required.) .It Fl k Ar KEY Trust an RSA key with SHA256 of .Ar KEY . diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh index 4fbac58cb562..1776115d0776 100644 --- a/usr.sbin/freebsd-update/freebsd-update.sh +++ b/usr.sbin/freebsd-update/freebsd-update.sh @@ -36,7 +36,7 @@ # --no-stats -- don't show progress statistics while fetching files usage () { cat < To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mitchell Horne Subject: git: 17f790f49f58 - main - arm, arm64, riscv: adjust top-level nexus comment List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mhorne X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 17f790f49f5879ae9888b99fdbf857010ec13f9c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mhorne: URL: https://cgit.FreeBSD.org/src/commit/?id=17f790f49f5879ae9888b99fdbf857010ec13f9c commit 17f790f49f5879ae9888b99fdbf857010ec13f9c Author: Mitchell Horne AuthorDate: 2021-10-07 18:02:02 +0000 Commit: Mitchell Horne CommitDate: 2021-10-08 17:16:32 +0000 arm, arm64, riscv: adjust top-level nexus comment These platforms don't manage resources for DMA request lines or I/O ports, this is specific to x86. Remove the references from the comments. Reviewed by: imp, jhb MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32358 --- sys/arm/arm/nexus.c | 4 +--- sys/arm64/arm64/nexus.c | 4 +--- sys/riscv/riscv/nexus.c | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/sys/arm/arm/nexus.c b/sys/arm/arm/nexus.c index f9e9fec7ad25..be84ab82d43f 100644 --- a/sys/arm/arm/nexus.c +++ b/sys/arm/arm/nexus.c @@ -34,9 +34,7 @@ * attachment point for both processors and buses, and to manage * resources which are common to all of them. In particular, * this code implements the core resource managers for interrupt - * requests, DMA requests (which rightfully should be a part of the - * ISA code but it's easier to do it here for now), I/O port addresses, - * and I/O memory address space. + * requests and I/O memory address space. */ #include "opt_platform.h" diff --git a/sys/arm64/arm64/nexus.c b/sys/arm64/arm64/nexus.c index cc28d87f002b..0775cc820a8c 100644 --- a/sys/arm64/arm64/nexus.c +++ b/sys/arm64/arm64/nexus.c @@ -34,9 +34,7 @@ * attachment point for both processors and buses, and to manage * resources which are common to all of them. In particular, * this code implements the core resource managers for interrupt - * requests, DMA requests (which rightfully should be a part of the - * ISA code but it's easier to do it here for now), I/O port addresses, - * and I/O memory address space. + * requests and I/O memory address space. */ #include "opt_acpi.h" diff --git a/sys/riscv/riscv/nexus.c b/sys/riscv/riscv/nexus.c index b56cf29aa3ee..16fe971b6521 100644 --- a/sys/riscv/riscv/nexus.c +++ b/sys/riscv/riscv/nexus.c @@ -34,9 +34,7 @@ * attachment point for both processors and buses, and to manage * resources which are common to all of them. In particular, * this code implements the core resource managers for interrupt - * requests, DMA requests (which rightfully should be a part of the - * ISA code but it's easier to do it here for now), I/O port addresses, - * and I/O memory address space. + * requests and I/O memory address space. */ #include "opt_platform.h" From nobody Fri Oct 8 21:26:40 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EEC9217EBC5C; Fri, 8 Oct 2021 21:26: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 4HR1Tr6Rbsz4Rhb; Fri, 8 Oct 2021 21:26: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 B9C5C6728; Fri, 8 Oct 2021 21:26: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 198LQeHG028969; Fri, 8 Oct 2021 21:26:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198LQeMG028968; Fri, 8 Oct 2021 21:26:40 GMT (envelope-from git) Date: Fri, 8 Oct 2021 21:26:40 GMT Message-Id: <202110082126.198LQeMG028968@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 0e4489e41778 - stable/13 - Revert "Disable MK_OPENSSL_KTLS for stable/13." List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0e4489e4177861c8ac76af91a3a9599eb46660a7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=0e4489e4177861c8ac76af91a3a9599eb46660a7 commit 0e4489e4177861c8ac76af91a3a9599eb46660a7 Author: John Baldwin AuthorDate: 2021-10-08 18:28:23 +0000 Commit: John Baldwin CommitDate: 2021-10-08 18:28:23 +0000 Revert "Disable MK_OPENSSL_KTLS for stable/13." No further issues with the KTLS support in OpenSSL have been seen since the serf/apache bugs which motivated disabling KTLS. In addition, the KTLS API in OpenSSL is now finalized since it has been released in OpenSSL 3.0. This reverts commit 3cf25a7802a26ae3be9159c585fda6aea3d0dc08. Approved by: jkim (maintainer), emaste Sponsored by: Netflix --- share/mk/src.opts.mk | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index 77c60aef0bc4..6bc8ef0672a1 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -210,7 +210,6 @@ __DEFAULT_NO_OPTIONS = \ LOADER_VERIEXEC_PASS_MANIFEST \ OFED_EXTRA \ OPENLDAP \ - OPENSSL_KTLS \ RPCBIND_WARMSTART_SUPPORT \ SORT_THREADS \ SVN \ @@ -330,6 +329,13 @@ BROKEN_OPTIONS+=LOADER_UBOOT BROKEN_OPTIONS+=LOADER_GELI LOADER_LUA .endif +# Kernel TLS is enabled by default on amd64 +.if ${__T} == "amd64" +__DEFAULT_YES_OPTIONS+=OPENSSL_KTLS +.else +__DEFAULT_NO_OPTIONS+=OPENSSL_KTLS +.endif + .if ${__T:Mmips64*} # profiling won't work on MIPS64 because there is only assembly for o32 BROKEN_OPTIONS+=PROFILE From nobody Fri Oct 8 21:26:41 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2B2B417EBD52; Fri, 8 Oct 2021 21:26: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 4HR1Tt0Dl6z4RNl; Fri, 8 Oct 2021 21:26: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 DBAA066C2; Fri, 8 Oct 2021 21:26:41 +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 198LQf1o028993; Fri, 8 Oct 2021 21:26:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198LQfk1028992; Fri, 8 Oct 2021 21:26:41 GMT (envelope-from git) Date: Fri, 8 Oct 2021 21:26:41 GMT Message-Id: <202110082126.198LQfk1028992@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 294113687ecb - stable/13 - Flip the default for OPENSSL_KTLS to arm64 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 294113687ecb807ee986556713f10bbb6dc84026 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=294113687ecb807ee986556713f10bbb6dc84026 commit 294113687ecb807ee986556713f10bbb6dc84026 Author: Allan Jude AuthorDate: 2021-01-28 21:28:18 +0000 Commit: John Baldwin CommitDate: 2021-10-08 18:29:10 +0000 Flip the default for OPENSSL_KTLS to arm64 This is required to make use of KERN_TLS Reviewed by: jhb Sponsored by: Ampere Computing Submitted by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D28405 (cherry picked from commit e6b7809cdfc4389d2fc1df2c7fdff08a4a110c77) --- share/mk/src.opts.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index 6bc8ef0672a1..fa007cb4bfda 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -329,8 +329,8 @@ BROKEN_OPTIONS+=LOADER_UBOOT BROKEN_OPTIONS+=LOADER_GELI LOADER_LUA .endif -# Kernel TLS is enabled by default on amd64 -.if ${__T} == "amd64" +# Kernel TLS is enabled by default on amd64 and aarch64 +.if ${__T} == "aarch64" || ${__T} == "amd64" __DEFAULT_YES_OPTIONS+=OPENSSL_KTLS .else __DEFAULT_NO_OPTIONS+=OPENSSL_KTLS From nobody Fri Oct 8 21:26:42 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A34DB17EBD5D; Fri, 8 Oct 2021 21:26: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 4HR1Tv3pFKz4RTK; Fri, 8 Oct 2021 21:26: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 F16636245; Fri, 8 Oct 2021 21:26: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 198LQgaT029017; Fri, 8 Oct 2021 21:26:42 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198LQgCP029016; Fri, 8 Oct 2021 21:26:42 GMT (envelope-from git) Date: Fri, 8 Oct 2021 21:26:42 GMT Message-Id: <202110082126.198LQgCP029016@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: c17b2708f632 - stable/13 - src.conf.5: Regen. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: c17b2708f6321351a5277fcbe4ab77a8a6fe179a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=c17b2708f6321351a5277fcbe4ab77a8a6fe179a commit c17b2708f6321351a5277fcbe4ab77a8a6fe179a Author: John Baldwin AuthorDate: 2021-10-08 18:31:17 +0000 Commit: John Baldwin CommitDate: 2021-10-08 18:31:17 +0000 src.conf.5: Regen. --- share/man/man5/src.conf.5 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index f118471c2770..eb15153b274e 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,6 +1,6 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. .\" $FreeBSD$ -.Dd August 4, 2021 +.Dd October 8, 2021 .Dt SRC.CONF 5 .Os .Sh NAME @@ -1315,8 +1315,16 @@ When set, these options are also in effect: .Va WITH_GSSAPI is set explicitly) .El +.It Va WITHOUT_OPENSSL_KTLS +Set to not include kernel TLS support in OpenSSL. +.Pp +This is a default setting on +arm/armv6, arm/armv7, i386/i386, mips/mips, mips/mips64, powerpc/powerpc, powerpc/powerpc64, riscv/riscv64 and riscv/riscv64sf. .It Va WITH_OPENSSL_KTLS Set to include kernel TLS support in OpenSSL. +.Pp +This is a default setting on +amd64/amd64 and arm64/aarch64. .It Va WITHOUT_PAM Set to not build PAM library and modules. .Bf -symbolic From nobody Fri Oct 8 21:45:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C54DB17EE8AE; Fri, 8 Oct 2021 21:45: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 4HR1v25F52z4TqV; Fri, 8 Oct 2021 21:45: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 903C26AD7; Fri, 8 Oct 2021 21:45: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 198Lj2T8055543; Fri, 8 Oct 2021 21:45:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198Lj25H055542; Fri, 8 Oct 2021 21:45:02 GMT (envelope-from git) Date: Fri, 8 Oct 2021 21:45:02 GMT Message-Id: <202110082145.198Lj25H055542@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: 15575aca8754 - main - bsd.cpu.mk: Minor formatting for armv6 vs armv7 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 15575aca875403e796d647ec5e42f7919197d130 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=15575aca875403e796d647ec5e42f7919197d130 commit 15575aca875403e796d647ec5e42f7919197d130 Author: Warner Losh AuthorDate: 2021-09-27 17:33:05 +0000 Commit: Warner Losh CommitDate: 2021-10-08 21:44:46 +0000 bsd.cpu.mk: Minor formatting for armv6 vs armv7 Separate out the arch/cpu options for armv6 from the armv7 ones. This is less confusing. Sponsored by: Netflix --- share/mk/bsd.cpu.mk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk index f269bb110ed7..7984cba9536d 100644 --- a/share/mk/bsd.cpu.mk +++ b/share/mk/bsd.cpu.mk @@ -116,10 +116,12 @@ _CPUCFLAGS = -march=${CPUTYPE} # arm: (any arm v4 or v5 processor you are targeting) # arm920t, arm926ej-s, marvell-pj4, fa526, fa626, # fa606te, fa626te, fa726te -# armv6: (any arm v7 or v8 processor you are targeting and the arm1176jzf-s) -# arm1176jzf-s, generic-armv7-a, cortex-a5, cortex-a7, cortex-a8, -# cortex-a9, cortex-a12, cortex-a15, cortex-a17, cortex-a53, cortex-a57, -# cortex-a72, exynos-m1 +# armv6: +# arm1176jzf-s +# armv7: generic-armv7-a, cortex-a5, cortex-a7, cortex-a8, cortex-a9, +# cortex-a12, cortex-a15, cortex-a17 +# cortex-a53, cortex-a57, cortex-a72, +# exynos-m1 _CPUCFLAGS = -mcpu=${CPUTYPE} . endif . elif ${MACHINE_ARCH} == "powerpc" From nobody Fri Oct 8 23:31:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2A6D712D82B9; Fri, 8 Oct 2021 23:32: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 4HR4GS0nLWz4cFs; Fri, 8 Oct 2021 23:32: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 EF5DC1051E; Fri, 8 Oct 2021 23:31: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 198NVxLx000665; Fri, 8 Oct 2021 23:31:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 198NVxru000664; Fri, 8 Oct 2021 23:31:59 GMT (envelope-from git) Date: Fri, 8 Oct 2021 23:31:59 GMT Message-Id: <202110082331.198NVxru000664@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Devin Teske Subject: git: 1c64959bff17 - main - bsdconfig: Comments List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dteske X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1c64959bff1772da4c9cc7d86c56f3729189b88e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by dteske: URL: https://cgit.FreeBSD.org/src/commit/?id=1c64959bff1772da4c9cc7d86c56f3729189b88e commit 1c64959bff1772da4c9cc7d86c56f3729189b88e Author: Devin Teske AuthorDate: 2021-10-08 23:26:21 +0000 Commit: Devin Teske CommitDate: 2021-10-08 23:26:21 +0000 bsdconfig: Comments My current style is to copy C for "/* NOTREACHED */" instead of spelling out "Not reached". Make this one nominal change in this one file and the others later. While here, word-smith "Preload" into "Pre-load" as I believe that to be more grammatically correct in this instance. Also while here, fix a comment capitalization error. Lastly, bump copyright for above changes. --- usr.sbin/bsdconfig/bsdconfig | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/usr.sbin/bsdconfig/bsdconfig b/usr.sbin/bsdconfig/bsdconfig index 2ecdb30bc5a9..f132c0370264 100755 --- a/usr.sbin/bsdconfig/bsdconfig +++ b/usr.sbin/bsdconfig/bsdconfig @@ -1,7 +1,7 @@ #!/bin/sh #- # Copyright (c) 2012 Ron McDowell -# Copyright (c) 2012-2014 Devin Teske +# Copyright (c) 2012-2021 Devin Teske # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -132,7 +132,7 @@ usage() # local x=$longest_cmd ncols=1 x=$(( $x + 8 )) # Accommodate leading tab character - x=$(( $x + 3 + $longest_cmd )) # Preload end of next column + x=$(( $x + 3 + $longest_cmd )) # Pre-load end of next column while [ $x -lt $max_width ]; do ncols=$(( $ncols + 1 )) x=$(( $x + 3 + $longest_cmd )) @@ -176,7 +176,7 @@ usage() "PROGRAM_NAME" "$pgm" \ "COMMAND_LIST" "$cmd_list" - # Never reached + # NOTREACHED } # dialog_menu_main @@ -365,7 +365,7 @@ if [ "$1" ]; then # case "$1" in -help|--help|-\?) usage - # Not reached + # NOTREACHED esac # @@ -375,16 +375,16 @@ if [ "$1" ]; then if ! { indexfile=$( f_index_file "$1" ) && cmd=$( f_index_menusel_command "$indexfile" "$1" ) }; then - # no matches, display usage (which shows valid keywords) + # No matches, display usage (which shows valid keywords) f_err "%s: %s: $msg_not_found\n" "$pgm" "$1" usage - # Not reached + # NOTREACHED fi f_dprintf "cmd=[%s] *=[%s]" "$cmd" "$*" shift exec $cmd ${USE_XDIALOG:+-X} "$@" || exit 1 - # Not reached + # NOTREACHED fi # From nobody Sat Oct 9 00:28:54 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5045412DD18F; Sat, 9 Oct 2021 00:28: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 4HR5X71dGPz4fx4; Sat, 9 Oct 2021 00:28: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 1335010A7A; Sat, 9 Oct 2021 00:28: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 1990SslX068070; Sat, 9 Oct 2021 00:28:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1990Ssi8068069; Sat, 9 Oct 2021 00:28:54 GMT (envelope-from git) Date: Sat, 9 Oct 2021 00:28:54 GMT Message-Id: <202110090028.1990Ssi8068069@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: d71103026de3 - stable/13 - ar: provide error exit status upon failure List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: d71103026de3ad27e6a16ecf91823540620c6024 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=d71103026de3ad27e6a16ecf91823540620c6024 commit d71103026de3ad27e6a16ecf91823540620c6024 Author: Ed Maste AuthorDate: 2021-08-03 18:30:06 +0000 Commit: Ed Maste CommitDate: 2021-10-09 00:28:31 +0000 ar: provide error exit status upon failure Previously ar and ranlib returned with exit status 0 (success) in the case of a missing file or other error. Update to use error handling similar to that added by ELF Tool Chain after that project forked FreeBSD's ar. PR: PR257599 [exp-run] Reported by: Shawn Webb, gehmehgeh (on HardenedBSD IRC) Reviewed by: markj Obtained from: elftoolchain MFC after: 2 months Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31402 (cherry picked from commit 38911b3c2c7dbb9a097b44856472ebbbedde71fc) --- usr.bin/ar/acplex.l | 4 ++-- usr.bin/ar/acpyacc.y | 6 ++--- usr.bin/ar/ar.c | 62 ++++++++++++++++++++++++++++------------------------ usr.bin/ar/ar.h | 20 ++++++++--------- usr.bin/ar/read.c | 36 +++++++++++++++++++----------- usr.bin/ar/write.c | 49 ++++++++++++++++++++++++----------------- 6 files changed, 100 insertions(+), 77 deletions(-) diff --git a/usr.bin/ar/acplex.l b/usr.bin/ar/acplex.l index f9b7deba0dda..8eb47e6a8d0e 100644 --- a/usr.bin/ar/acplex.l +++ b/usr.bin/ar/acplex.l @@ -33,8 +33,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include -#include #include "y.tab.h" @@ -72,7 +72,7 @@ SAVE|save { return (SAVE); } [-_A-Za-z0-9/:$.\\]+ { yylval.str = strdup(yytext); if (yylval.str == NULL) - errc(EX_SOFTWARE, errno, "strdup failed"); + errc(EXIT_FAILURE, errno, "strdup failed"); return (FNAME); } diff --git a/usr.bin/ar/acpyacc.y b/usr.bin/ar/acpyacc.y index 113b3818bff1..5d4eb9fb6b37 100644 --- a/usr.bin/ar/acpyacc.y +++ b/usr.bin/ar/acpyacc.y @@ -191,7 +191,7 @@ directory_cmd ; end_cmd - : END { arscp_end(EX_OK); } + : END { arscp_end(EXIT_SUCCESS); } ; extract_cmd @@ -655,9 +655,9 @@ ar_mode_script(struct bsdar *ar) interactive = isatty(fileno(stdin)); while(yyparse()) { if (!interactive) - arscp_end(1); + arscp_end(EXIT_FAILURE); } /* Script ends without END */ - arscp_end(EX_OK); + arscp_end(EXIT_SUCCESS); } diff --git a/usr.bin/ar/ar.c b/usr.bin/ar/ar.c index 8e02471e1623..b131163342a6 100644 --- a/usr.bin/ar/ar.c +++ b/usr.bin/ar/ar.c @@ -72,7 +72,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include "ar.h" @@ -102,10 +101,11 @@ main(int argc, char **argv) struct bsdar *bsdar, bsdar_storage; char *p; size_t len; - int i, opt, Dflag, Uflag; + int exitcode, i, opt, Dflag, Uflag; bsdar = &bsdar_storage; memset(bsdar, 0, sizeof(*bsdar)); + exitcode = EXIT_SUCCESS; Dflag = 0; Uflag = 0; @@ -151,9 +151,10 @@ main(int argc, char **argv) bsdar->options |= AR_D; bsdar->options |= AR_S; while ((bsdar->filename = *argv++) != NULL) - ar_mode_s(bsdar); + if (ar_mode_s(bsdar)) + exitcode = EXIT_FAILURE; - exit(EX_OK); + exit(exitcode); } else { if (argc < 2) bsdar_usage(); @@ -161,7 +162,7 @@ main(int argc, char **argv) if (*argv[1] != '-') { len = strlen(argv[1]) + 2; if ((p = malloc(len)) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, errno, + bsdar_errc(bsdar, EXIT_FAILURE, errno, "malloc failed"); *p = '-'; (void)strlcpy(p + 1, argv[1], len - 1); @@ -262,23 +263,23 @@ main(int argc, char **argv) bsdar_usage(); if (bsdar->options & AR_A && bsdar->options & AR_B) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "only one of -a and -[bi] options allowed"); if (bsdar->options & AR_J && bsdar->options & AR_Z) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "only one of -j and -z options allowed"); if (bsdar->options & AR_S && bsdar->options & AR_SS) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "only one of -s and -S options allowed"); if (bsdar->options & (AR_A | AR_B)) { if (*argv == NULL) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "no position operand specified"); if ((bsdar->posarg = basename(*argv)) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, errno, + bsdar_errc(bsdar, EXIT_FAILURE, errno, "basename failed"); argc--; argv++; @@ -310,7 +311,7 @@ main(int argc, char **argv) if (bsdar->mode == 'M') { ar_mode_script(bsdar); - exit(EX_OK); + exit(EXIT_SUCCESS); } if ((bsdar->filename = *argv) == NULL) @@ -321,44 +322,47 @@ main(int argc, char **argv) if ((!bsdar->mode || strchr("ptx", bsdar->mode)) && bsdar->options & AR_S) { - ar_mode_s(bsdar); + exitcode = ar_mode_s(bsdar); if (!bsdar->mode) - exit(EX_OK); + exit(exitcode); } switch(bsdar->mode) { case 'd': - ar_mode_d(bsdar); + exitcode = ar_mode_d(bsdar); break; case 'm': - ar_mode_m(bsdar); + exitcode = ar_mode_m(bsdar); break; case 'p': - ar_mode_p(bsdar); + exitcode = ar_mode_p(bsdar); break; case 'q': - ar_mode_q(bsdar); + exitcode = ar_mode_q(bsdar); break; case 'r': - ar_mode_r(bsdar); + exitcode = ar_mode_r(bsdar); break; case 't': - ar_mode_t(bsdar); + exitcode = ar_mode_t(bsdar); break; case 'x': - ar_mode_x(bsdar); + exitcode = ar_mode_x(bsdar); break; default: bsdar_usage(); /* NOTREACHED */ } - for (i = 0; i < bsdar->argc; i++) - if (bsdar->argv[i] != NULL) + for (i = 0; i < bsdar->argc; i++) { + if (bsdar->argv[i] != NULL) { bsdar_warnc(bsdar, 0, "%s: not found in archive", bsdar->argv[i]); + exitcode = EXIT_FAILURE; + } + } - exit(EX_OK); + exit(exitcode); } static void @@ -366,7 +370,7 @@ set_mode(struct bsdar *bsdar, char opt) { if (bsdar->mode != '\0' && bsdar->mode != opt) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "Can't specify both -%c and -%c", opt, bsdar->mode); bsdar->mode = opt; } @@ -376,7 +380,7 @@ only_mode(struct bsdar *bsdar, const char *opt, const char *valid_modes) { if (strchr(valid_modes, bsdar->mode) == NULL) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "Option %s is not permitted in mode -%c", opt, bsdar->mode); } @@ -395,7 +399,7 @@ bsdar_usage(void) (void)fprintf(stderr, "\tar -t [-Tv] archive [file ...]\n"); (void)fprintf(stderr, "\tar -x [-CTouv] archive [file ...]\n"); (void)fprintf(stderr, "\tar -V\n"); - exit(EX_USAGE); + exit(EXIT_FAILURE); } static void @@ -404,19 +408,19 @@ ranlib_usage(void) (void)fprintf(stderr, "usage: ranlib [-DtU] archive ...\n"); (void)fprintf(stderr, "\tranlib -V\n"); - exit(EX_USAGE); + exit(EXIT_FAILURE); } static void bsdar_version(void) { (void)printf("BSD ar %s - %s\n", BSDAR_VERSION, archive_version_string()); - exit(EX_OK); + exit(EXIT_SUCCESS); } static void ranlib_version(void) { (void)printf("ranlib %s - %s\n", BSDAR_VERSION, archive_version_string()); - exit(EX_OK); + exit(EXIT_SUCCESS); } diff --git a/usr.bin/ar/ar.h b/usr.bin/ar/ar.h index 733724748221..21b3a669a943 100644 --- a/usr.bin/ar/ar.h +++ b/usr.bin/ar/ar.h @@ -54,7 +54,7 @@ */ #define AC(CALL) do { \ if ((CALL)) \ - bsdar_errc(bsdar, EX_SOFTWARE, archive_errno(a), "%s", \ + bsdar_errc(bsdar, EXIT_FAILURE, archive_errno(a), "%s", \ archive_error_string(a)); \ } while (0) @@ -117,13 +117,13 @@ struct bsdar { void bsdar_errc(struct bsdar *, int _eval, int _code, const char *fmt, ...) __dead2; void bsdar_warnc(struct bsdar *, int _code, const char *fmt, ...); -void ar_mode_d(struct bsdar *bsdar); -void ar_mode_m(struct bsdar *bsdar); -void ar_mode_p(struct bsdar *bsdar); -void ar_mode_q(struct bsdar *bsdar); -void ar_mode_r(struct bsdar *bsdar); -void ar_mode_s(struct bsdar *bsdar); -void ar_mode_t(struct bsdar *bsdar); -void ar_mode_x(struct bsdar *bsdar); -void ar_mode_A(struct bsdar *bsdar); +int ar_mode_d(struct bsdar *bsdar); +int ar_mode_m(struct bsdar *bsdar); +int ar_mode_p(struct bsdar *bsdar); +int ar_mode_q(struct bsdar *bsdar); +int ar_mode_r(struct bsdar *bsdar); +int ar_mode_s(struct bsdar *bsdar); +int ar_mode_t(struct bsdar *bsdar); +int ar_mode_x(struct bsdar *bsdar); +int ar_mode_A(struct bsdar *bsdar); void ar_mode_script(struct bsdar *ar); diff --git a/usr.bin/ar/read.c b/usr.bin/ar/read.c index 7791fc155850..04130b859c32 100644 --- a/usr.bin/ar/read.c +++ b/usr.bin/ar/read.c @@ -37,38 +37,38 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include -#include #include "ar.h" -static void read_archive(struct bsdar *bsdar, char mode); +static int read_archive(struct bsdar *bsdar, char mode); -void +int ar_mode_p(struct bsdar *bsdar) { - read_archive(bsdar, 'p'); + return (read_archive(bsdar, 'p')); } -void +int ar_mode_t(struct bsdar *bsdar) { - read_archive(bsdar, 't'); + return (read_archive(bsdar, 't')); } -void +int ar_mode_x(struct bsdar *bsdar) { - read_archive(bsdar, 'x'); + return (read_archive(bsdar, 'x')); } /* * Handle read modes: 'x', 't' and 'p'. */ -static void +static int read_archive(struct bsdar *bsdar, char mode) { struct archive *a; @@ -85,13 +85,15 @@ read_archive(struct bsdar *bsdar, char mode) char **av; char buf[25]; char find; - int flags, r, i; + int exitcode, flags, r, i; if ((a = archive_read_new()) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_read_new failed"); + bsdar_errc(bsdar, EXIT_FAILURE, 0, "archive_read_new failed"); archive_read_support_format_ar(a); AC(archive_read_open_filename(a, bsdar->filename, DEF_BLKSZ)); + exitcode = EXIT_SUCCESS; + for (;;) { r = archive_read_next_header(a, &entry); if (r == ARCHIVE_WARN || r == ARCHIVE_RETRY || @@ -120,7 +122,7 @@ read_archive(struct bsdar *bsdar, char mode) if (*av == NULL) continue; if ((bname = basename(*av)) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, errno, + bsdar_errc(bsdar, EXIT_FAILURE, errno, "basename failed"); if (strcmp(bname, name) != 0) continue; @@ -206,11 +208,19 @@ read_archive(struct bsdar *bsdar, char mode) r = archive_read_extract(a, entry, flags); } - if (r) + if (r) { bsdar_warnc(bsdar, archive_errno(a), "%s", archive_error_string(a)); + exitcode = EXIT_FAILURE; + } } } + + if (r == ARCHIVE_FATAL) + exitcode = EXIT_FAILURE; + AC(archive_read_close(a)); AC(archive_read_free(a)); + + return (exitcode); } diff --git a/usr.bin/ar/write.c b/usr.bin/ar/write.c index f515b2b4eb1e..676a30f923b7 100644 --- a/usr.bin/ar/write.c +++ b/usr.bin/ar/write.c @@ -67,52 +67,52 @@ static void insert_obj(struct bsdar *bsdar, struct ar_obj *obj, static void prefault_buffer(const char *buf, size_t s); static void read_objs(struct bsdar *bsdar, const char *archive, int checkargv); -static void write_archive(struct bsdar *bsdar, char mode); +static int write_archive(struct bsdar *bsdar, char mode); static void write_cleanup(struct bsdar *bsdar); static void write_data(struct bsdar *bsdar, struct archive *a, const void *buf, size_t s); static void write_objs(struct bsdar *bsdar); -void +int ar_mode_d(struct bsdar *bsdar) { - write_archive(bsdar, 'd'); + return (write_archive(bsdar, 'd')); } -void +int ar_mode_m(struct bsdar *bsdar) { - write_archive(bsdar, 'm'); + return (write_archive(bsdar, 'm')); } -void +int ar_mode_q(struct bsdar *bsdar) { - write_archive(bsdar, 'q'); + return (write_archive(bsdar, 'q')); } -void +int ar_mode_r(struct bsdar *bsdar) { - write_archive(bsdar, 'r'); + return (write_archive(bsdar, 'r')); } -void +int ar_mode_s(struct bsdar *bsdar) { - write_archive(bsdar, 's'); + return (write_archive(bsdar, 's')); } -void +int ar_mode_A(struct bsdar *bsdar) { - write_archive(bsdar, 'A'); + return (write_archive(bsdar, 'A')); } /* @@ -378,16 +378,17 @@ read_objs(struct bsdar *bsdar, const char *archive, int checkargv) /* * Determine the constitution of resulting archive. */ -static void +static int write_archive(struct bsdar *bsdar, char mode) { struct ar_obj *nobj, *obj, *obj_temp, *pos; struct stat sb; const char *bname; char **av; - int i; + int exitcode, i; TAILQ_INIT(&bsdar->v_obj); + exitcode = EXIT_SUCCESS; nobj = NULL; pos = NULL; memset(&sb, 0, sizeof(sb)); @@ -400,14 +401,14 @@ write_archive(struct bsdar *bsdar, char mode) if (errno != ENOENT) { bsdar_warnc(bsdar, 0, "stat %s failed", bsdar->filename); - return; + return (EXIT_FAILURE); } /* We do not create archive in mode 'd', 'm' and 's'. */ if (mode != 'r' && mode != 'q') { bsdar_warnc(bsdar, 0, "%s: no such file", bsdar->filename); - return; + return (EXIT_FAILURE); } /* Issue a warning if -c is not specified when creating. */ @@ -491,8 +492,10 @@ write_archive(struct bsdar *bsdar, char mode) */ nobj = create_obj_from_file(bsdar, *av, obj->mtime); - if (nobj == NULL) + if (nobj == NULL) { + exitcode = EXIT_FAILURE; goto skip_obj; + } } if (bsdar->options & AR_V) @@ -526,8 +529,12 @@ new_archive: av = &bsdar->argv[i]; if (*av != NULL && (mode == 'r' || mode == 'q')) { nobj = create_obj_from_file(bsdar, *av, 0); - if (nobj != NULL) - insert_obj(bsdar, nobj, pos); + if (nobj == NULL) { + exitcode = EXIT_FAILURE; + *av = NULL; + continue; + } + insert_obj(bsdar, nobj, pos); if (bsdar->options & AR_V && nobj != NULL) (void)fprintf(stdout, "a - %s\n", *av); *av = NULL; @@ -537,6 +544,8 @@ new_archive: write_objs: write_objs(bsdar); write_cleanup(bsdar); + + return (exitcode); } /* From nobody Sat Oct 9 00:30:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1C13512DD635; Sat, 9 Oct 2021 00:30: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 4HR5Yk0H3Fz4gQP; Sat, 9 Oct 2021 00:30: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 DE4EC10DEF; Sat, 9 Oct 2021 00:30: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 1990UHYP074616; Sat, 9 Oct 2021 00:30:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1990UHrp074612; Sat, 9 Oct 2021 00:30:17 GMT (envelope-from git) Date: Sat, 9 Oct 2021 00:30:17 GMT Message-Id: <202110090030.1990UHrp074612@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: fb15a9f90b29 - stable/12 - ar: provide error exit status upon failure List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: fb15a9f90b29da471892ad1e0a1bb7173a7da858 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=fb15a9f90b29da471892ad1e0a1bb7173a7da858 commit fb15a9f90b29da471892ad1e0a1bb7173a7da858 Author: Ed Maste AuthorDate: 2021-08-03 18:30:06 +0000 Commit: Ed Maste CommitDate: 2021-10-09 00:29:30 +0000 ar: provide error exit status upon failure Previously ar and ranlib returned with exit status 0 (success) in the case of a missing file or other error. Update to use error handling similar to that added by ELF Tool Chain after that project forked FreeBSD's ar. PR: PR257599 [exp-run] Reported by: Shawn Webb, gehmehgeh (on HardenedBSD IRC) Reviewed by: markj Obtained from: elftoolchain MFC after: 2 months Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31402 (cherry picked from commit 38911b3c2c7dbb9a097b44856472ebbbedde71fc) --- usr.bin/ar/acplex.l | 4 ++-- usr.bin/ar/acpyacc.y | 6 ++--- usr.bin/ar/ar.c | 62 ++++++++++++++++++++++++++++------------------------ usr.bin/ar/ar.h | 20 ++++++++--------- usr.bin/ar/read.c | 36 +++++++++++++++++++----------- usr.bin/ar/write.c | 49 ++++++++++++++++++++++++----------------- 6 files changed, 100 insertions(+), 77 deletions(-) diff --git a/usr.bin/ar/acplex.l b/usr.bin/ar/acplex.l index f9b7deba0dda..8eb47e6a8d0e 100644 --- a/usr.bin/ar/acplex.l +++ b/usr.bin/ar/acplex.l @@ -33,8 +33,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include -#include #include "y.tab.h" @@ -72,7 +72,7 @@ SAVE|save { return (SAVE); } [-_A-Za-z0-9/:$.\\]+ { yylval.str = strdup(yytext); if (yylval.str == NULL) - errc(EX_SOFTWARE, errno, "strdup failed"); + errc(EXIT_FAILURE, errno, "strdup failed"); return (FNAME); } diff --git a/usr.bin/ar/acpyacc.y b/usr.bin/ar/acpyacc.y index 113b3818bff1..5d4eb9fb6b37 100644 --- a/usr.bin/ar/acpyacc.y +++ b/usr.bin/ar/acpyacc.y @@ -191,7 +191,7 @@ directory_cmd ; end_cmd - : END { arscp_end(EX_OK); } + : END { arscp_end(EXIT_SUCCESS); } ; extract_cmd @@ -655,9 +655,9 @@ ar_mode_script(struct bsdar *ar) interactive = isatty(fileno(stdin)); while(yyparse()) { if (!interactive) - arscp_end(1); + arscp_end(EXIT_FAILURE); } /* Script ends without END */ - arscp_end(EX_OK); + arscp_end(EXIT_SUCCESS); } diff --git a/usr.bin/ar/ar.c b/usr.bin/ar/ar.c index 8e02471e1623..b131163342a6 100644 --- a/usr.bin/ar/ar.c +++ b/usr.bin/ar/ar.c @@ -72,7 +72,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include "ar.h" @@ -102,10 +101,11 @@ main(int argc, char **argv) struct bsdar *bsdar, bsdar_storage; char *p; size_t len; - int i, opt, Dflag, Uflag; + int exitcode, i, opt, Dflag, Uflag; bsdar = &bsdar_storage; memset(bsdar, 0, sizeof(*bsdar)); + exitcode = EXIT_SUCCESS; Dflag = 0; Uflag = 0; @@ -151,9 +151,10 @@ main(int argc, char **argv) bsdar->options |= AR_D; bsdar->options |= AR_S; while ((bsdar->filename = *argv++) != NULL) - ar_mode_s(bsdar); + if (ar_mode_s(bsdar)) + exitcode = EXIT_FAILURE; - exit(EX_OK); + exit(exitcode); } else { if (argc < 2) bsdar_usage(); @@ -161,7 +162,7 @@ main(int argc, char **argv) if (*argv[1] != '-') { len = strlen(argv[1]) + 2; if ((p = malloc(len)) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, errno, + bsdar_errc(bsdar, EXIT_FAILURE, errno, "malloc failed"); *p = '-'; (void)strlcpy(p + 1, argv[1], len - 1); @@ -262,23 +263,23 @@ main(int argc, char **argv) bsdar_usage(); if (bsdar->options & AR_A && bsdar->options & AR_B) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "only one of -a and -[bi] options allowed"); if (bsdar->options & AR_J && bsdar->options & AR_Z) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "only one of -j and -z options allowed"); if (bsdar->options & AR_S && bsdar->options & AR_SS) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "only one of -s and -S options allowed"); if (bsdar->options & (AR_A | AR_B)) { if (*argv == NULL) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "no position operand specified"); if ((bsdar->posarg = basename(*argv)) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, errno, + bsdar_errc(bsdar, EXIT_FAILURE, errno, "basename failed"); argc--; argv++; @@ -310,7 +311,7 @@ main(int argc, char **argv) if (bsdar->mode == 'M') { ar_mode_script(bsdar); - exit(EX_OK); + exit(EXIT_SUCCESS); } if ((bsdar->filename = *argv) == NULL) @@ -321,44 +322,47 @@ main(int argc, char **argv) if ((!bsdar->mode || strchr("ptx", bsdar->mode)) && bsdar->options & AR_S) { - ar_mode_s(bsdar); + exitcode = ar_mode_s(bsdar); if (!bsdar->mode) - exit(EX_OK); + exit(exitcode); } switch(bsdar->mode) { case 'd': - ar_mode_d(bsdar); + exitcode = ar_mode_d(bsdar); break; case 'm': - ar_mode_m(bsdar); + exitcode = ar_mode_m(bsdar); break; case 'p': - ar_mode_p(bsdar); + exitcode = ar_mode_p(bsdar); break; case 'q': - ar_mode_q(bsdar); + exitcode = ar_mode_q(bsdar); break; case 'r': - ar_mode_r(bsdar); + exitcode = ar_mode_r(bsdar); break; case 't': - ar_mode_t(bsdar); + exitcode = ar_mode_t(bsdar); break; case 'x': - ar_mode_x(bsdar); + exitcode = ar_mode_x(bsdar); break; default: bsdar_usage(); /* NOTREACHED */ } - for (i = 0; i < bsdar->argc; i++) - if (bsdar->argv[i] != NULL) + for (i = 0; i < bsdar->argc; i++) { + if (bsdar->argv[i] != NULL) { bsdar_warnc(bsdar, 0, "%s: not found in archive", bsdar->argv[i]); + exitcode = EXIT_FAILURE; + } + } - exit(EX_OK); + exit(exitcode); } static void @@ -366,7 +370,7 @@ set_mode(struct bsdar *bsdar, char opt) { if (bsdar->mode != '\0' && bsdar->mode != opt) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "Can't specify both -%c and -%c", opt, bsdar->mode); bsdar->mode = opt; } @@ -376,7 +380,7 @@ only_mode(struct bsdar *bsdar, const char *opt, const char *valid_modes) { if (strchr(valid_modes, bsdar->mode) == NULL) - bsdar_errc(bsdar, EX_USAGE, 0, + bsdar_errc(bsdar, EXIT_FAILURE, 0, "Option %s is not permitted in mode -%c", opt, bsdar->mode); } @@ -395,7 +399,7 @@ bsdar_usage(void) (void)fprintf(stderr, "\tar -t [-Tv] archive [file ...]\n"); (void)fprintf(stderr, "\tar -x [-CTouv] archive [file ...]\n"); (void)fprintf(stderr, "\tar -V\n"); - exit(EX_USAGE); + exit(EXIT_FAILURE); } static void @@ -404,19 +408,19 @@ ranlib_usage(void) (void)fprintf(stderr, "usage: ranlib [-DtU] archive ...\n"); (void)fprintf(stderr, "\tranlib -V\n"); - exit(EX_USAGE); + exit(EXIT_FAILURE); } static void bsdar_version(void) { (void)printf("BSD ar %s - %s\n", BSDAR_VERSION, archive_version_string()); - exit(EX_OK); + exit(EXIT_SUCCESS); } static void ranlib_version(void) { (void)printf("ranlib %s - %s\n", BSDAR_VERSION, archive_version_string()); - exit(EX_OK); + exit(EXIT_SUCCESS); } diff --git a/usr.bin/ar/ar.h b/usr.bin/ar/ar.h index 733724748221..21b3a669a943 100644 --- a/usr.bin/ar/ar.h +++ b/usr.bin/ar/ar.h @@ -54,7 +54,7 @@ */ #define AC(CALL) do { \ if ((CALL)) \ - bsdar_errc(bsdar, EX_SOFTWARE, archive_errno(a), "%s", \ + bsdar_errc(bsdar, EXIT_FAILURE, archive_errno(a), "%s", \ archive_error_string(a)); \ } while (0) @@ -117,13 +117,13 @@ struct bsdar { void bsdar_errc(struct bsdar *, int _eval, int _code, const char *fmt, ...) __dead2; void bsdar_warnc(struct bsdar *, int _code, const char *fmt, ...); -void ar_mode_d(struct bsdar *bsdar); -void ar_mode_m(struct bsdar *bsdar); -void ar_mode_p(struct bsdar *bsdar); -void ar_mode_q(struct bsdar *bsdar); -void ar_mode_r(struct bsdar *bsdar); -void ar_mode_s(struct bsdar *bsdar); -void ar_mode_t(struct bsdar *bsdar); -void ar_mode_x(struct bsdar *bsdar); -void ar_mode_A(struct bsdar *bsdar); +int ar_mode_d(struct bsdar *bsdar); +int ar_mode_m(struct bsdar *bsdar); +int ar_mode_p(struct bsdar *bsdar); +int ar_mode_q(struct bsdar *bsdar); +int ar_mode_r(struct bsdar *bsdar); +int ar_mode_s(struct bsdar *bsdar); +int ar_mode_t(struct bsdar *bsdar); +int ar_mode_x(struct bsdar *bsdar); +int ar_mode_A(struct bsdar *bsdar); void ar_mode_script(struct bsdar *ar); diff --git a/usr.bin/ar/read.c b/usr.bin/ar/read.c index 7791fc155850..04130b859c32 100644 --- a/usr.bin/ar/read.c +++ b/usr.bin/ar/read.c @@ -37,38 +37,38 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include -#include #include "ar.h" -static void read_archive(struct bsdar *bsdar, char mode); +static int read_archive(struct bsdar *bsdar, char mode); -void +int ar_mode_p(struct bsdar *bsdar) { - read_archive(bsdar, 'p'); + return (read_archive(bsdar, 'p')); } -void +int ar_mode_t(struct bsdar *bsdar) { - read_archive(bsdar, 't'); + return (read_archive(bsdar, 't')); } -void +int ar_mode_x(struct bsdar *bsdar) { - read_archive(bsdar, 'x'); + return (read_archive(bsdar, 'x')); } /* * Handle read modes: 'x', 't' and 'p'. */ -static void +static int read_archive(struct bsdar *bsdar, char mode) { struct archive *a; @@ -85,13 +85,15 @@ read_archive(struct bsdar *bsdar, char mode) char **av; char buf[25]; char find; - int flags, r, i; + int exitcode, flags, r, i; if ((a = archive_read_new()) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, 0, "archive_read_new failed"); + bsdar_errc(bsdar, EXIT_FAILURE, 0, "archive_read_new failed"); archive_read_support_format_ar(a); AC(archive_read_open_filename(a, bsdar->filename, DEF_BLKSZ)); + exitcode = EXIT_SUCCESS; + for (;;) { r = archive_read_next_header(a, &entry); if (r == ARCHIVE_WARN || r == ARCHIVE_RETRY || @@ -120,7 +122,7 @@ read_archive(struct bsdar *bsdar, char mode) if (*av == NULL) continue; if ((bname = basename(*av)) == NULL) - bsdar_errc(bsdar, EX_SOFTWARE, errno, + bsdar_errc(bsdar, EXIT_FAILURE, errno, "basename failed"); if (strcmp(bname, name) != 0) continue; @@ -206,11 +208,19 @@ read_archive(struct bsdar *bsdar, char mode) r = archive_read_extract(a, entry, flags); } - if (r) + if (r) { bsdar_warnc(bsdar, archive_errno(a), "%s", archive_error_string(a)); + exitcode = EXIT_FAILURE; + } } } + + if (r == ARCHIVE_FATAL) + exitcode = EXIT_FAILURE; + AC(archive_read_close(a)); AC(archive_read_free(a)); + + return (exitcode); } diff --git a/usr.bin/ar/write.c b/usr.bin/ar/write.c index f515b2b4eb1e..676a30f923b7 100644 --- a/usr.bin/ar/write.c +++ b/usr.bin/ar/write.c @@ -67,52 +67,52 @@ static void insert_obj(struct bsdar *bsdar, struct ar_obj *obj, static void prefault_buffer(const char *buf, size_t s); static void read_objs(struct bsdar *bsdar, const char *archive, int checkargv); -static void write_archive(struct bsdar *bsdar, char mode); +static int write_archive(struct bsdar *bsdar, char mode); static void write_cleanup(struct bsdar *bsdar); static void write_data(struct bsdar *bsdar, struct archive *a, const void *buf, size_t s); static void write_objs(struct bsdar *bsdar); -void +int ar_mode_d(struct bsdar *bsdar) { - write_archive(bsdar, 'd'); + return (write_archive(bsdar, 'd')); } -void +int ar_mode_m(struct bsdar *bsdar) { - write_archive(bsdar, 'm'); + return (write_archive(bsdar, 'm')); } -void +int ar_mode_q(struct bsdar *bsdar) { - write_archive(bsdar, 'q'); + return (write_archive(bsdar, 'q')); } -void +int ar_mode_r(struct bsdar *bsdar) { - write_archive(bsdar, 'r'); + return (write_archive(bsdar, 'r')); } -void +int ar_mode_s(struct bsdar *bsdar) { - write_archive(bsdar, 's'); + return (write_archive(bsdar, 's')); } -void +int ar_mode_A(struct bsdar *bsdar) { - write_archive(bsdar, 'A'); + return (write_archive(bsdar, 'A')); } /* @@ -378,16 +378,17 @@ read_objs(struct bsdar *bsdar, const char *archive, int checkargv) /* * Determine the constitution of resulting archive. */ -static void +static int write_archive(struct bsdar *bsdar, char mode) { struct ar_obj *nobj, *obj, *obj_temp, *pos; struct stat sb; const char *bname; char **av; - int i; + int exitcode, i; TAILQ_INIT(&bsdar->v_obj); + exitcode = EXIT_SUCCESS; nobj = NULL; pos = NULL; memset(&sb, 0, sizeof(sb)); @@ -400,14 +401,14 @@ write_archive(struct bsdar *bsdar, char mode) if (errno != ENOENT) { bsdar_warnc(bsdar, 0, "stat %s failed", bsdar->filename); - return; + return (EXIT_FAILURE); } /* We do not create archive in mode 'd', 'm' and 's'. */ if (mode != 'r' && mode != 'q') { bsdar_warnc(bsdar, 0, "%s: no such file", bsdar->filename); - return; + return (EXIT_FAILURE); } /* Issue a warning if -c is not specified when creating. */ @@ -491,8 +492,10 @@ write_archive(struct bsdar *bsdar, char mode) */ nobj = create_obj_from_file(bsdar, *av, obj->mtime); - if (nobj == NULL) + if (nobj == NULL) { + exitcode = EXIT_FAILURE; goto skip_obj; + } } if (bsdar->options & AR_V) @@ -526,8 +529,12 @@ new_archive: av = &bsdar->argv[i]; if (*av != NULL && (mode == 'r' || mode == 'q')) { nobj = create_obj_from_file(bsdar, *av, 0); - if (nobj != NULL) - insert_obj(bsdar, nobj, pos); + if (nobj == NULL) { + exitcode = EXIT_FAILURE; + *av = NULL; + continue; + } + insert_obj(bsdar, nobj, pos); if (bsdar->options & AR_V && nobj != NULL) (void)fprintf(stdout, "a - %s\n", *av); *av = NULL; @@ -537,6 +544,8 @@ new_archive: write_objs: write_objs(bsdar); write_cleanup(bsdar); + + return (exitcode); } /* From nobody Sat Oct 9 00:57:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 49C3B12DFB6E; Sat, 9 Oct 2021 00:57: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 4HR68b1PHpz4hfN; Sat, 9 Oct 2021 00:57: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 10B0F112BE; Sat, 9 Oct 2021 00:57: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 1990v3n2007807; Sat, 9 Oct 2021 00:57:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1990v3rH007806; Sat, 9 Oct 2021 00:57:03 GMT (envelope-from git) Date: Sat, 9 Oct 2021 00:57:03 GMT Message-Id: <202110090057.1990v3rH007806@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 48e109cf31e1 - stable/13 - vfs: remove dead fifoop VOP_KQFILTER implementations List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 48e109cf31e1e710328f5750fc683daf058ccc19 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=48e109cf31e1e710328f5750fc683daf058ccc19 commit 48e109cf31e1e710328f5750fc683daf058ccc19 Author: Kyle Evans AuthorDate: 2021-10-02 05:17:57 +0000 Commit: Kyle Evans CommitDate: 2021-10-09 00:56:46 +0000 vfs: remove dead fifoop VOP_KQFILTER implementations These began to become obsolete in d6d64f0f2c26 (r137739) and the deal was later sealed in 003e18aef4c4 (r137801) when vfs.fifofs.fops was dropped and vop-bypass for pipes became mandatory. PR: 225934 (cherry picked from commit 6b88668f0bfcca09035549e25d0f3c181cd537c8) --- sys/fs/ext2fs/ext2_vnops.c | 18 ------------------ sys/ufs/ufs/ufs_vnops.c | 19 ------------------- 2 files changed, 37 deletions(-) diff --git a/sys/fs/ext2fs/ext2_vnops.c b/sys/fs/ext2fs/ext2_vnops.c index d26044e11929..63909b7df987 100644 --- a/sys/fs/ext2fs/ext2_vnops.c +++ b/sys/fs/ext2fs/ext2_vnops.c @@ -135,7 +135,6 @@ static vop_listextattr_t ext2_listextattr; static vop_setextattr_t ext2_setextattr; static vop_vptofh_t ext2_vptofh; static vop_close_t ext2fifo_close; -static vop_kqfilter_t ext2fifo_kqfilter; /* Global vfs data structures for ext2. */ struct vop_vector ext2_vnodeops = { @@ -191,7 +190,6 @@ struct vop_vector ext2_fifoops = { .vop_fsync = ext2_fsync, .vop_getattr = ext2_getattr, .vop_inactive = ext2_inactive, - .vop_kqfilter = ext2fifo_kqfilter, .vop_pathconf = ext2_pathconf, .vop_print = ext2_print, .vop_read = VOP_PANIC, @@ -1630,22 +1628,6 @@ ext2fifo_close(struct vop_close_args *ap) return (fifo_specops.vop_close(ap)); } -/* - * Kqfilter wrapper for fifos. - * - * Fall through to ext2 kqfilter routines if needed - */ -static int -ext2fifo_kqfilter(struct vop_kqfilter_args *ap) -{ - int error; - - error = fifo_specops.vop_kqfilter(ap); - if (error) - error = vfs_kqfilter(ap); - return (error); -} - /* * Return POSIX pathconf information applicable to ext2 filesystems. */ diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c index 00ec8f41f432..e962ef8ca48c 100644 --- a/sys/ufs/ufs/ufs_vnops.c +++ b/sys/ufs/ufs/ufs_vnops.c @@ -130,7 +130,6 @@ static vop_strategy_t ufs_strategy; static vop_symlink_t ufs_symlink; static vop_whiteout_t ufs_whiteout; static vop_close_t ufsfifo_close; -static vop_kqfilter_t ufsfifo_kqfilter; SYSCTL_NODE(_vfs, OID_AUTO, ufs, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "UFS filesystem"); @@ -2578,23 +2577,6 @@ ufsfifo_close(ap) return (fifo_specops.vop_close(ap)); } -/* - * Kqfilter wrapper for fifos. - * - * Fall through to ufs kqfilter routines if needed - */ -static int -ufsfifo_kqfilter(ap) - struct vop_kqfilter_args *ap; -{ - int error; - - error = fifo_specops.vop_kqfilter(ap); - if (error) - error = vfs_kqfilter(ap); - return (error); -} - /* * Return POSIX pathconf information applicable to ufs filesystems. */ @@ -3013,7 +2995,6 @@ struct vop_vector ufs_fifoops = { .vop_close = ufsfifo_close, .vop_getattr = ufs_getattr, .vop_inactive = ufs_inactive, - .vop_kqfilter = ufsfifo_kqfilter, .vop_pathconf = ufs_pathconf, .vop_print = ufs_print, .vop_read = VOP_PANIC, From nobody Sat Oct 9 00:57:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8A2C512DFA70; Sat, 9 Oct 2021 00:57: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 4HR68c4ynLz4hmB; Sat, 9 Oct 2021 00: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 38FDC117B7; Sat, 9 Oct 2021 00: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 1990v4Lx007855; Sat, 9 Oct 2021 00: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 1990v4MU007854; Sat, 9 Oct 2021 00:57:04 GMT (envelope-from git) Date: Sat, 9 Oct 2021 00:57:04 GMT Message-Id: <202110090057.1990v4MU007854@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: c8d19408febd - stable/13 - login: use sizeof(audit_cond) consistently, NFC List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: c8d19408febd075dbbe314f47d830deb02305e73 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=c8d19408febd075dbbe314f47d830deb02305e73 commit c8d19408febd075dbbe314f47d830deb02305e73 Author: Kyle Evans AuthorDate: 2021-10-06 04:24:24 +0000 Commit: Kyle Evans CommitDate: 2021-10-09 00:56:53 +0000 login: use sizeof(audit_cond) consistently, NFC The other three instances were already converted to use audit_cond, this one was just changed from sizeof(long) -> sizeof(int). (cherry picked from commit 7f4bb501768b9b3f856f91fbc8b9c80a2a4aaa04) --- usr.bin/login/login_audit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/login/login_audit.c b/usr.bin/login/login_audit.c index a45adb7b9e71..91aa4336c659 100644 --- a/usr.bin/login/login_audit.c +++ b/usr.bin/login/login_audit.c @@ -180,7 +180,7 @@ audit_logout(void) int au_cond; /* If we are not auditing, don't cut an audit record; just return. */ - if (auditon(A_GETCOND, &au_cond, sizeof(int)) < 0) { + if (auditon(A_GETCOND, &au_cond, sizeof(au_cond)) < 0) { if (errno == ENOSYS) return; errx(1, "could not determine audit condition"); From nobody Sat Oct 9 01:03:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8DCDE17E1E0A; Sat, 9 Oct 2021 01:03: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 4HR6Hp3d7wz4ktT; Sat, 9 Oct 2021 01:03: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 5C3291189D; Sat, 9 Oct 2021 01:03: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 19913InZ021722; Sat, 9 Oct 2021 01:03:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19913Iop021721; Sat, 9 Oct 2021 01:03:18 GMT (envelope-from git) Date: Sat, 9 Oct 2021 01:03:18 GMT Message-Id: <202110090103.19913Iop021721@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: 695810a48f6f - stable/13 - e1000: Function prototype cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 695810a48f6fc8715d216c3914c2705d06e9d131 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kbowling (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=695810a48f6fc8715d216c3914c2705d06e9d131 commit 695810a48f6fc8715d216c3914c2705d06e9d131 Author: Kevin Bowling AuthorDate: 2021-10-06 21:03:38 +0000 Commit: Kevin Bowling CommitDate: 2021-10-09 01:03:12 +0000 e1000: Function prototype cleanup Drop arguments of function prototypes since the file is mixed between listing arg names and not. No functional changes Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D32329 (cherry picked from commit 28ccd780a96fe49364072955636829cff1589cfb) --- sys/dev/e1000/if_em.c | 98 +++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 34d7b8f5f87e..3153a44000c5 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -248,55 +248,55 @@ static pci_vendor_info_t igb_vendor_info_array[] = /********************************************************************* * Function prototypes *********************************************************************/ -static void *em_register(device_t dev); -static void *igb_register(device_t dev); -static int em_if_attach_pre(if_ctx_t ctx); -static int em_if_attach_post(if_ctx_t ctx); -static int em_if_detach(if_ctx_t ctx); -static int em_if_shutdown(if_ctx_t ctx); -static int em_if_suspend(if_ctx_t ctx); -static int em_if_resume(if_ctx_t ctx); - -static int em_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int ntxqs, int ntxqsets); -static int em_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int nrxqs, int nrxqsets); -static void em_if_queues_free(if_ctx_t ctx); +static void *em_register(device_t); +static void *igb_register(device_t); +static int em_if_attach_pre(if_ctx_t); +static int em_if_attach_post(if_ctx_t); +static int em_if_detach(if_ctx_t); +static int em_if_shutdown(if_ctx_t); +static int em_if_suspend(if_ctx_t); +static int em_if_resume(if_ctx_t); + +static int em_if_tx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int); +static int em_if_rx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int); +static void em_if_queues_free(if_ctx_t); static uint64_t em_if_get_counter(if_ctx_t, ift_counter); -static void em_if_init(if_ctx_t ctx); -static void em_if_stop(if_ctx_t ctx); +static void em_if_init(if_ctx_t); +static void em_if_stop(if_ctx_t); static void em_if_media_status(if_ctx_t, struct ifmediareq *); -static int em_if_media_change(if_ctx_t ctx); -static int em_if_mtu_set(if_ctx_t ctx, uint32_t mtu); -static void em_if_timer(if_ctx_t ctx, uint16_t qid); -static void em_if_vlan_register(if_ctx_t ctx, u16 vtag); -static void em_if_vlan_unregister(if_ctx_t ctx, u16 vtag); -static void em_if_watchdog_reset(if_ctx_t ctx); -static bool em_if_needs_restart(if_ctx_t ctx, enum iflib_restart_event event); - -static void em_identify_hardware(if_ctx_t ctx); -static int em_allocate_pci_resources(if_ctx_t ctx); -static void em_free_pci_resources(if_ctx_t ctx); -static void em_reset(if_ctx_t ctx); -static int em_setup_interface(if_ctx_t ctx); -static int em_setup_msix(if_ctx_t ctx); - -static void em_initialize_transmit_unit(if_ctx_t ctx); -static void em_initialize_receive_unit(if_ctx_t ctx); - -static void em_if_intr_enable(if_ctx_t ctx); -static void em_if_intr_disable(if_ctx_t ctx); -static void igb_if_intr_enable(if_ctx_t ctx); -static void igb_if_intr_disable(if_ctx_t ctx); -static int em_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid); -static int em_if_tx_queue_intr_enable(if_ctx_t ctx, uint16_t txqid); -static int igb_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid); -static int igb_if_tx_queue_intr_enable(if_ctx_t ctx, uint16_t txqid); -static void em_if_multi_set(if_ctx_t ctx); -static void em_if_update_admin_status(if_ctx_t ctx); -static void em_if_debug(if_ctx_t ctx); +static int em_if_media_change(if_ctx_t); +static int em_if_mtu_set(if_ctx_t, uint32_t); +static void em_if_timer(if_ctx_t, uint16_t); +static void em_if_vlan_register(if_ctx_t, u16); +static void em_if_vlan_unregister(if_ctx_t, u16); +static void em_if_watchdog_reset(if_ctx_t); +static bool em_if_needs_restart(if_ctx_t, enum iflib_restart_event); + +static void em_identify_hardware(if_ctx_t); +static int em_allocate_pci_resources(if_ctx_t); +static void em_free_pci_resources(if_ctx_t); +static void em_reset(if_ctx_t); +static int em_setup_interface(if_ctx_t); +static int em_setup_msix(if_ctx_t); + +static void em_initialize_transmit_unit(if_ctx_t); +static void em_initialize_receive_unit(if_ctx_t); + +static void em_if_intr_enable(if_ctx_t); +static void em_if_intr_disable(if_ctx_t); +static void igb_if_intr_enable(if_ctx_t); +static void igb_if_intr_disable(if_ctx_t); +static int em_if_rx_queue_intr_enable(if_ctx_t, uint16_t); +static int em_if_tx_queue_intr_enable(if_ctx_t, uint16_t); +static int igb_if_rx_queue_intr_enable(if_ctx_t, uint16_t); +static int igb_if_tx_queue_intr_enable(if_ctx_t, uint16_t); +static void em_if_multi_set(if_ctx_t); +static void em_if_update_admin_status(if_ctx_t); +static void em_if_debug(if_ctx_t); static void em_update_stats_counters(struct e1000_softc *); static void em_add_hw_stats(struct e1000_softc *); -static int em_if_set_promisc(if_ctx_t ctx, int flags); +static int em_if_set_promisc(if_ctx_t, int); static bool em_if_vlan_filter_capable(struct e1000_softc *); static bool em_if_vlan_filter_used(struct e1000_softc *); static void em_if_vlan_filter_enable(struct e1000_softc *); @@ -317,23 +317,23 @@ static void em_init_manageability(struct e1000_softc *); static void em_release_manageability(struct e1000_softc *); static void em_get_hw_control(struct e1000_softc *); static void em_release_hw_control(struct e1000_softc *); -static void em_get_wakeup(if_ctx_t ctx); -static void em_enable_wakeup(if_ctx_t ctx); +static void em_get_wakeup(if_ctx_t); +static void em_enable_wakeup(if_ctx_t); static int em_enable_phy_wakeup(struct e1000_softc *); static void em_disable_aspm(struct e1000_softc *); -int em_intr(void *arg); +int em_intr(void *); /* MSI-X handlers */ static int em_if_msix_intr_assign(if_ctx_t, int); static int em_msix_link(void *); -static void em_handle_link(void *context); +static void em_handle_link(void *); static void em_enable_vectors_82574(if_ctx_t); static int em_set_flowcntl(SYSCTL_HANDLER_ARGS); static int em_sysctl_eee(SYSCTL_HANDLER_ARGS); -static void em_if_led_func(if_ctx_t ctx, int onoff); +static void em_if_led_func(if_ctx_t, int); static int em_get_regs(SYSCTL_HANDLER_ARGS); From nobody Sat Oct 9 01:04:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8D50117E20CC; Sat, 9 Oct 2021 01:04: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 4HR6Jg3Tv9z4l4W; Sat, 9 Oct 2021 01:04: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 57F9A119D7; Sat, 9 Oct 2021 01:04: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 199143ab021863; Sat, 9 Oct 2021 01:04:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199143Uj021862; Sat, 9 Oct 2021 01:04:03 GMT (envelope-from git) Date: Sat, 9 Oct 2021 01:04:03 GMT Message-Id: <202110090104.199143Uj021862@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kevin Bowling Subject: git: b52edc0357ef - stable/12 - e1000: Function prototype cleanup List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: b52edc0357efd881a403043ff6622e9d6211058f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by kbowling (ports committer): URL: https://cgit.FreeBSD.org/src/commit/?id=b52edc0357efd881a403043ff6622e9d6211058f commit b52edc0357efd881a403043ff6622e9d6211058f Author: Kevin Bowling AuthorDate: 2021-10-06 21:03:38 +0000 Commit: Kevin Bowling CommitDate: 2021-10-09 01:03:54 +0000 e1000: Function prototype cleanup Drop arguments of function prototypes since the file is mixed between listing arg names and not. No functional changes Reviewed by: markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D32329 (cherry picked from commit 28ccd780a96fe49364072955636829cff1589cfb) --- sys/dev/e1000/if_em.c | 98 +++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 50628768dc0b..cb6cf647a3e8 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -248,55 +248,55 @@ static pci_vendor_info_t igb_vendor_info_array[] = /********************************************************************* * Function prototypes *********************************************************************/ -static void *em_register(device_t dev); -static void *igb_register(device_t dev); -static int em_if_attach_pre(if_ctx_t ctx); -static int em_if_attach_post(if_ctx_t ctx); -static int em_if_detach(if_ctx_t ctx); -static int em_if_shutdown(if_ctx_t ctx); -static int em_if_suspend(if_ctx_t ctx); -static int em_if_resume(if_ctx_t ctx); - -static int em_if_tx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int ntxqs, int ntxqsets); -static int em_if_rx_queues_alloc(if_ctx_t ctx, caddr_t *vaddrs, uint64_t *paddrs, int nrxqs, int nrxqsets); -static void em_if_queues_free(if_ctx_t ctx); +static void *em_register(device_t); +static void *igb_register(device_t); +static int em_if_attach_pre(if_ctx_t); +static int em_if_attach_post(if_ctx_t); +static int em_if_detach(if_ctx_t); +static int em_if_shutdown(if_ctx_t); +static int em_if_suspend(if_ctx_t); +static int em_if_resume(if_ctx_t); + +static int em_if_tx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int); +static int em_if_rx_queues_alloc(if_ctx_t, caddr_t *, uint64_t *, int, int); +static void em_if_queues_free(if_ctx_t); static uint64_t em_if_get_counter(if_ctx_t, ift_counter); -static void em_if_init(if_ctx_t ctx); -static void em_if_stop(if_ctx_t ctx); +static void em_if_init(if_ctx_t); +static void em_if_stop(if_ctx_t); static void em_if_media_status(if_ctx_t, struct ifmediareq *); -static int em_if_media_change(if_ctx_t ctx); -static int em_if_mtu_set(if_ctx_t ctx, uint32_t mtu); -static void em_if_timer(if_ctx_t ctx, uint16_t qid); -static void em_if_vlan_register(if_ctx_t ctx, u16 vtag); -static void em_if_vlan_unregister(if_ctx_t ctx, u16 vtag); -static void em_if_watchdog_reset(if_ctx_t ctx); -static bool em_if_needs_restart(if_ctx_t ctx, enum iflib_restart_event event); - -static void em_identify_hardware(if_ctx_t ctx); -static int em_allocate_pci_resources(if_ctx_t ctx); -static void em_free_pci_resources(if_ctx_t ctx); -static void em_reset(if_ctx_t ctx); -static int em_setup_interface(if_ctx_t ctx); -static int em_setup_msix(if_ctx_t ctx); - -static void em_initialize_transmit_unit(if_ctx_t ctx); -static void em_initialize_receive_unit(if_ctx_t ctx); - -static void em_if_intr_enable(if_ctx_t ctx); -static void em_if_intr_disable(if_ctx_t ctx); -static void igb_if_intr_enable(if_ctx_t ctx); -static void igb_if_intr_disable(if_ctx_t ctx); -static int em_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid); -static int em_if_tx_queue_intr_enable(if_ctx_t ctx, uint16_t txqid); -static int igb_if_rx_queue_intr_enable(if_ctx_t ctx, uint16_t rxqid); -static int igb_if_tx_queue_intr_enable(if_ctx_t ctx, uint16_t txqid); -static void em_if_multi_set(if_ctx_t ctx); -static void em_if_update_admin_status(if_ctx_t ctx); -static void em_if_debug(if_ctx_t ctx); +static int em_if_media_change(if_ctx_t); +static int em_if_mtu_set(if_ctx_t, uint32_t); +static void em_if_timer(if_ctx_t, uint16_t); +static void em_if_vlan_register(if_ctx_t, u16); +static void em_if_vlan_unregister(if_ctx_t, u16); +static void em_if_watchdog_reset(if_ctx_t); +static bool em_if_needs_restart(if_ctx_t, enum iflib_restart_event); + +static void em_identify_hardware(if_ctx_t); +static int em_allocate_pci_resources(if_ctx_t); +static void em_free_pci_resources(if_ctx_t); +static void em_reset(if_ctx_t); +static int em_setup_interface(if_ctx_t); +static int em_setup_msix(if_ctx_t); + +static void em_initialize_transmit_unit(if_ctx_t); +static void em_initialize_receive_unit(if_ctx_t); + +static void em_if_intr_enable(if_ctx_t); +static void em_if_intr_disable(if_ctx_t); +static void igb_if_intr_enable(if_ctx_t); +static void igb_if_intr_disable(if_ctx_t); +static int em_if_rx_queue_intr_enable(if_ctx_t, uint16_t); +static int em_if_tx_queue_intr_enable(if_ctx_t, uint16_t); +static int igb_if_rx_queue_intr_enable(if_ctx_t, uint16_t); +static int igb_if_tx_queue_intr_enable(if_ctx_t, uint16_t); +static void em_if_multi_set(if_ctx_t); +static void em_if_update_admin_status(if_ctx_t); +static void em_if_debug(if_ctx_t); static void em_update_stats_counters(struct e1000_softc *); static void em_add_hw_stats(struct e1000_softc *); -static int em_if_set_promisc(if_ctx_t ctx, int flags); +static int em_if_set_promisc(if_ctx_t, int); static bool em_if_vlan_filter_capable(struct e1000_softc *); static bool em_if_vlan_filter_used(struct e1000_softc *); static void em_if_vlan_filter_enable(struct e1000_softc *); @@ -317,23 +317,23 @@ static void em_init_manageability(struct e1000_softc *); static void em_release_manageability(struct e1000_softc *); static void em_get_hw_control(struct e1000_softc *); static void em_release_hw_control(struct e1000_softc *); -static void em_get_wakeup(if_ctx_t ctx); -static void em_enable_wakeup(if_ctx_t ctx); +static void em_get_wakeup(if_ctx_t); +static void em_enable_wakeup(if_ctx_t); static int em_enable_phy_wakeup(struct e1000_softc *); static void em_disable_aspm(struct e1000_softc *); -int em_intr(void *arg); +int em_intr(void *); /* MSI-X handlers */ static int em_if_msix_intr_assign(if_ctx_t, int); static int em_msix_link(void *); -static void em_handle_link(void *context); +static void em_handle_link(void *); static void em_enable_vectors_82574(if_ctx_t); static int em_set_flowcntl(SYSCTL_HANDLER_ARGS); static int em_sysctl_eee(SYSCTL_HANDLER_ARGS); -static void em_if_led_func(if_ctx_t ctx, int onoff); +static void em_if_led_func(if_ctx_t, int); static int em_get_regs(SYSCTL_HANDLER_ARGS); From nobody Sat Oct 9 01:30:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4C32917E509C; Sat, 9 Oct 2021 01:30: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 4HR6tk1dWtz4nK3; Sat, 9 Oct 2021 01:30: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 1828D11D0D; Sat, 9 Oct 2021 01:30: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 1991U6XM051056; Sat, 9 Oct 2021 01:30:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1991U6oh051053; Sat, 9 Oct 2021 01:30:06 GMT (envelope-from git) Date: Sat, 9 Oct 2021 01:30:06 GMT Message-Id: <202110090130.1991U6oh051053@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 172fa4aa7577 - main - OpenSSH: cherry-pick "need initgroups() before setresgid()" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 172fa4aa7577915bf5ace5783251821d3774dc05 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=172fa4aa7577915bf5ace5783251821d3774dc05 commit 172fa4aa7577915bf5ace5783251821d3774dc05 Author: Ed Maste AuthorDate: 2021-10-09 01:28:53 +0000 Commit: Ed Maste CommitDate: 2021-10-09 01:29:25 +0000 OpenSSH: cherry-pick "need initgroups() before setresgid()" From openssh-portable commits f3cbe43e28fe and bf944e3794ef. --- crypto/openssh/misc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crypto/openssh/misc.c b/crypto/openssh/misc.c index b8d1040d1e3c..0134d69492e4 100644 --- a/crypto/openssh/misc.c +++ b/crypto/openssh/misc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.169 2021/08/09 23:47:44 djm Exp $ */ +/* $OpenBSD: misc.c,v 1.170 2021/09/26 14:01:03 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2005-2020 Damien Miller. All rights reserved. @@ -56,6 +56,7 @@ #ifdef HAVE_PATHS_H # include #include +#include #endif #ifdef SSH_TUN_OPENBSD #include @@ -2695,6 +2696,12 @@ subprocess(const char *tag, const char *command, } closefrom(STDERR_FILENO + 1); + if (geteuid() == 0 && + initgroups(pw->pw_name, pw->pw_gid) == -1) { + error("%s: initgroups(%s, %u): %s", tag, + pw->pw_name, (u_int)pw->pw_gid, strerror(errno)); + _exit(1); + } if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) == -1) { error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid, strerror(errno)); From nobody Sat Oct 9 03:01:44 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9C24F17EEA90; Sat, 9 Oct 2021 03:01: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 4HR8wS44CLz3C6S; Sat, 9 Oct 2021 03:01: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 6BA9113096; Sat, 9 Oct 2021 03:01: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 19931iot079244; Sat, 9 Oct 2021 03:01:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19931i0h079243; Sat, 9 Oct 2021 03:01:44 GMT (envelope-from git) Date: Sat, 9 Oct 2021 03:01:44 GMT Message-Id: <202110090301.19931i0h079243@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 18f244304f44 - stable/13 - qlnxe: Fix typos in two error messages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 18f244304f44a7aa99d16d3d07f45879d44618ab Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=18f244304f44a7aa99d16d3d07f45879d44618ab commit 18f244304f44a7aa99d16d3d07f45879d44618ab Author: Gordon Bergling AuthorDate: 2021-10-02 08:49:51 +0000 Commit: Gordon Bergling CommitDate: 2021-10-09 03:00:47 +0000 qlnxe: Fix typos in two error messages - s/erorr/error/ (cherry picked from commit 957d9ba0c3f908462915c9aed6900c50c8c76210) --- sys/dev/qlnx/qlnxe/ecore_int.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/qlnx/qlnxe/ecore_int.c b/sys/dev/qlnx/qlnxe/ecore_int.c index 14285a35afa5..fbf692acfb6c 100644 --- a/sys/dev/qlnx/qlnxe/ecore_int.c +++ b/sys/dev/qlnx/qlnxe/ecore_int.c @@ -364,7 +364,7 @@ enum _ecore_status_t ecore_pglueb_rbc_attn_handler(struct ecore_hwfn *p_hwfn, tmp = ecore_rd(p_hwfn, p_ptt, PGLUE_B_REG_TX_ERR_WR_DETAILS_ICPL); if (tmp & ECORE_PGLUE_ATTENTION_ICPL_VALID) - DP_NOTICE(p_hwfn, false, "ICPL eror - %08x\n", tmp); + DP_NOTICE(p_hwfn, false, "ICPL error - %08x\n", tmp); tmp = ecore_rd(p_hwfn, p_ptt, PGLUE_B_REG_MASTER_ZLR_ERR_DETAILS); if (tmp & ECORE_PGLUE_ATTENTION_ZLR_VALID) { @@ -376,7 +376,7 @@ enum _ecore_status_t ecore_pglueb_rbc_attn_handler(struct ecore_hwfn *p_hwfn, PGLUE_B_REG_MASTER_ZLR_ERR_ADD_63_32); DP_NOTICE(p_hwfn, false, - "ICPL eror - %08x [Address %08x:%08x]\n", + "ICPL error - %08x [Address %08x:%08x]\n", tmp, addr_hi, addr_lo); } From nobody Sat Oct 9 03:01:45 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D9D7C17EE7D5; Sat, 9 Oct 2021 03:01: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 4HR8wT5gY3z4vwW; Sat, 9 Oct 2021 03:01:45 +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 9F97D13134; Sat, 9 Oct 2021 03:01: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 19931jLL079271; Sat, 9 Oct 2021 03:01:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19931j0D079270; Sat, 9 Oct 2021 03:01:45 GMT (envelope-from git) Date: Sat, 9 Oct 2021 03:01:45 GMT Message-Id: <202110090301.19931j0D079270@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 0e5787b1d089 - stable/13 - ti(4): Fix a typo in an error message List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0e5787b1d089310448fdc7b9855f1f0701965d8d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=0e5787b1d089310448fdc7b9855f1f0701965d8d commit 0e5787b1d089310448fdc7b9855f1f0701965d8d Author: Gordon Bergling AuthorDate: 2021-10-02 08:51:29 +0000 Commit: Gordon Bergling CommitDate: 2021-10-09 03:01:17 +0000 ti(4): Fix a typo in an error message - s/chanels/channels/ (cherry picked from commit 42dfad2ef12755d27e0e34656a2624f0dac2c502) --- sys/arm/ti/ti_adc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/arm/ti/ti_adc.c b/sys/arm/ti/ti_adc.c index a0091aebf417..766729fcdab3 100644 --- a/sys/arm/ti/ti_adc.c +++ b/sys/arm/ti/ti_adc.c @@ -809,7 +809,7 @@ ti_adc_attach(device_t dev) /* Sanity check FDT data */ if (sc->sc_tsc_wires + sc->sc_adc_nchannels > TI_ADC_NPINS) { - device_printf(dev, "total number of chanels (%d) is larger than %d\n", + device_printf(dev, "total number of channels (%d) is larger than %d\n", sc->sc_tsc_wires + sc->sc_adc_nchannels, TI_ADC_NPINS); return (ENXIO); } From nobody Sat Oct 9 03:02:51 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 068E017EF537; Sat, 9 Oct 2021 03:02: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 4HR8xl6Wwgz3D0h; Sat, 9 Oct 2021 03:02: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 BFF1D1315F; Sat, 9 Oct 2021 03:02: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 19932pE2082465; Sat, 9 Oct 2021 03:02:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19932poo082464; Sat, 9 Oct 2021 03:02:51 GMT (envelope-from git) Date: Sat, 9 Oct 2021 03:02:51 GMT Message-Id: <202110090302.19932poo082464@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: a5ce25121b7d - stable/12 - ti(4): Fix a typo in an error message List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: a5ce25121b7df29e34914bfa3c5bc7e58d8fb86f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=a5ce25121b7df29e34914bfa3c5bc7e58d8fb86f commit a5ce25121b7df29e34914bfa3c5bc7e58d8fb86f Author: Gordon Bergling AuthorDate: 2021-10-02 08:51:29 +0000 Commit: Gordon Bergling CommitDate: 2021-10-09 03:02:33 +0000 ti(4): Fix a typo in an error message - s/chanels/channels/ (cherry picked from commit 42dfad2ef12755d27e0e34656a2624f0dac2c502) --- sys/arm/ti/ti_adc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/arm/ti/ti_adc.c b/sys/arm/ti/ti_adc.c index 011b9daeb3cc..907ba3d460fa 100644 --- a/sys/arm/ti/ti_adc.c +++ b/sys/arm/ti/ti_adc.c @@ -807,7 +807,7 @@ ti_adc_attach(device_t dev) /* Sanity check FDT data */ if (sc->sc_tsc_wires + sc->sc_adc_nchannels > TI_ADC_NPINS) { - device_printf(dev, "total number of chanels (%d) is larger than %d\n", + device_printf(dev, "total number of channels (%d) is larger than %d\n", sc->sc_tsc_wires + sc->sc_adc_nchannels, TI_ADC_NPINS); return (ENXIO); } From nobody Sat Oct 9 03:03:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 02BAB17EFA37; Sat, 9 Oct 2021 03:03: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 4HR8yH4VT1z3DJY; Sat, 9 Oct 2021 03:03: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 6374013161; Sat, 9 Oct 2021 03:03: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 19933J6c082610; Sat, 9 Oct 2021 03:03:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19933Je0082609; Sat, 9 Oct 2021 03:03:19 GMT (envelope-from git) Date: Sat, 9 Oct 2021 03:03:19 GMT Message-Id: <202110090303.19933Je0082609@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gordon Bergling Subject: git: 850aecac5866 - stable/12 - qlnxe: Fix typos in two error messages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: gbe X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 850aecac5866aa86fb8170eda61c4ec94bd5fc7d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by gbe (doc committer): URL: https://cgit.FreeBSD.org/src/commit/?id=850aecac5866aa86fb8170eda61c4ec94bd5fc7d commit 850aecac5866aa86fb8170eda61c4ec94bd5fc7d Author: Gordon Bergling AuthorDate: 2021-10-02 08:49:51 +0000 Commit: Gordon Bergling CommitDate: 2021-10-09 03:03:03 +0000 qlnxe: Fix typos in two error messages - s/erorr/error/ (cherry picked from commit 957d9ba0c3f908462915c9aed6900c50c8c76210) --- sys/dev/qlnx/qlnxe/ecore_int.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/qlnx/qlnxe/ecore_int.c b/sys/dev/qlnx/qlnxe/ecore_int.c index c1aaaccd2c1e..cc023b9caacc 100644 --- a/sys/dev/qlnx/qlnxe/ecore_int.c +++ b/sys/dev/qlnx/qlnxe/ecore_int.c @@ -364,7 +364,7 @@ enum _ecore_status_t ecore_pglueb_rbc_attn_handler(struct ecore_hwfn *p_hwfn, tmp = ecore_rd(p_hwfn, p_ptt, PGLUE_B_REG_TX_ERR_WR_DETAILS_ICPL); if (tmp & ECORE_PGLUE_ATTENTION_ICPL_VALID) - DP_NOTICE(p_hwfn, false, "ICPL eror - %08x\n", tmp); + DP_NOTICE(p_hwfn, false, "ICPL error - %08x\n", tmp); tmp = ecore_rd(p_hwfn, p_ptt, PGLUE_B_REG_MASTER_ZLR_ERR_DETAILS); if (tmp & ECORE_PGLUE_ATTENTION_ZLR_VALID) { @@ -376,7 +376,7 @@ enum _ecore_status_t ecore_pglueb_rbc_attn_handler(struct ecore_hwfn *p_hwfn, PGLUE_B_REG_MASTER_ZLR_ERR_ADD_63_32); DP_NOTICE(p_hwfn, false, - "ICPL eror - %08x [Address %08x:%08x]\n", + "ICPL error - %08x [Address %08x:%08x]\n", tmp, addr_hi, addr_lo); } From nobody Sat Oct 9 03:17:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id EED1117F12EB; Sat, 9 Oct 2021 03:17: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 4HR9H06LGtz3Fgr; Sat, 9 Oct 2021 03:17: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 B8D211358C; Sat, 9 Oct 2021 03:17: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 1993Hm96095977; Sat, 9 Oct 2021 03:17:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1993Hm4v095976; Sat, 9 Oct 2021 03:17:48 GMT (envelope-from git) Date: Sat, 9 Oct 2021 03:17:48 GMT Message-Id: <202110090317.1993Hm4v095976@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: 032448cd2c52 - main - Belatedly track private lib renaming for OptionalObsoleteFiles.inc List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/main X-Git-Reftype: branch X-Git-Commit: 032448cd2c52161aa03fd4ee5bf243d78d61b53e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=032448cd2c52161aa03fd4ee5bf243d78d61b53e commit 032448cd2c52161aa03fd4ee5bf243d78d61b53e Author: Ed Maste AuthorDate: 2021-10-09 00:15:43 +0000 Commit: Ed Maste CommitDate: 2021-10-09 03:15:56 +0000 Belatedly track private lib renaming for OptionalObsoleteFiles.inc Reviewed by: kevans Fixes: 5551c573554e ("Rework PRIVATELIB") Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32384 --- tools/build/mk/OptionalObsoleteFiles.inc | 96 ++++++++++++++++---------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index f1febd18dd4c..cacfe28069e3 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -2900,14 +2900,14 @@ OLD_FILES+=usr/lib/pam_krb5.so OLD_LIBS+=usr/lib/pam_krb5.so.6 OLD_FILES+=usr/lib/pam_ksu.so OLD_LIBS+=usr/lib/pam_ksu.so.6 -OLD_FILES+=usr/lib/private/libheimipcc.a -OLD_FILES+=usr/lib/private/libheimipcc.so -OLD_LIBS+=usr/lib/private/libheimipcc.so.11 -OLD_FILES+=usr/lib/private/libheimipcc_p.a -OLD_FILES+=usr/lib/private/libheimipcs.a -OLD_FILES+=usr/lib/private/libheimipcs.so -OLD_LIBS+=usr/lib/private/libheimipcs.so.11 -OLD_FILES+=usr/lib/private/libheimipcs_p.a +OLD_FILES+=usr/lib/libprivateheimipcc.a +OLD_FILES+=usr/lib/libprivateheimipcc.so +OLD_LIBS+=usr/lib/libprivateheimipcc.so.11 +OLD_FILES+=usr/lib/libprivateheimipcc_p.a +OLD_FILES+=usr/lib/libprivateheimipcs.a +OLD_FILES+=usr/lib/libprivateheimipcs.so +OLD_LIBS+=usr/lib/libprivateheimipcs.so.11 +OLD_FILES+=usr/lib/libprivateheimipcs_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/libasn1.a OLD_FILES+=usr/lib32/libasn1.so @@ -2977,14 +2977,14 @@ OLD_FILES+=usr/lib32/pam_krb5.so OLD_LIBS+=usr/lib32/pam_krb5.so.6 OLD_FILES+=usr/lib32/pam_ksu.so OLD_LIBS+=usr/lib32/pam_ksu.so.6 -OLD_FILES+=usr/lib32/private/libheimipcc.a -OLD_FILES+=usr/lib32/private/libheimipcc.so -OLD_LIBS+=usr/lib32/private/libheimipcc.so.11 -OLD_FILES+=usr/lib32/private/libheimipcc_p.a -OLD_FILES+=usr/lib32/private/libheimipcs.a -OLD_FILES+=usr/lib32/private/libheimipcs.so -OLD_LIBS+=usr/lib32/private/libheimipcs.so.11 -OLD_FILES+=usr/lib32/private/libheimipcs_p.a +OLD_FILES+=usr/lib32/libprivateheimipcc.a +OLD_FILES+=usr/lib32/libprivateheimipcc.so +OLD_LIBS+=usr/lib32/libprivateheimipcc.so.11 +OLD_FILES+=usr/lib32/libprivateheimipcc_p.a +OLD_FILES+=usr/lib32/libprivateheimipcs.a +OLD_FILES+=usr/lib32/libprivateheimipcs.so +OLD_LIBS+=usr/lib32/libprivateheimipcs.so.11 +OLD_FILES+=usr/lib32/libprivateheimipcs_p.a .endif OLD_FILES+=usr/libexec/digest-service OLD_FILES+=usr/libexec/hprop @@ -3736,15 +3736,15 @@ OLD_FILES+=usr/share/man/man3/com_err.3.gz .endif .if ${MK_LDNS} == no -OLD_FILES+=usr/lib/private/libldns.a -OLD_FILES+=usr/lib/private/libldns.so -OLD_LIBS+=usr/lib/private/libldns.so.5 -OLD_FILES+=usr/lib/private/libldns_p.a +OLD_FILES+=usr/lib/libprivateldns.a +OLD_FILES+=usr/lib/libprivateldns.so +OLD_LIBS+=usr/lib/libprivateldns.so.5 +OLD_FILES+=usr/lib/libprivateldns_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" -OLD_FILES+=usr/lib32/private/libldns.a -OLD_FILES+=usr/lib32/private/libldns.so -OLD_LIBS+=usr/lib32/private/libldns.so.5 -OLD_FILES+=usr/lib32/private/libldns_p.a +OLD_FILES+=usr/lib32/libprivateldns.a +OLD_FILES+=usr/lib32/libprivateldns.so +OLD_LIBS+=usr/lib32/libprivateldns.so.5 +OLD_FILES+=usr/lib32/libprivateldns_p.a .endif .endif @@ -7117,17 +7117,17 @@ OLD_FILES+=usr/bin/ssh-keygen OLD_FILES+=usr/bin/ssh-keyscan OLD_FILES+=usr/lib/pam_ssh.so OLD_LIBS+=usr/lib/pam_ssh.so.6 -OLD_FILES+=usr/lib/private/libssh.a -OLD_FILES+=usr/lib/private/libssh.so -OLD_LIBS+=usr/lib/private/libssh.so.5 -OLD_FILES+=usr/lib/private/libssh_p.a +OLD_FILES+=usr/lib/libprivatessh.a +OLD_FILES+=usr/lib/libprivatessh.so +OLD_LIBS+=usr/lib/libprivatessh.so.5 +OLD_FILES+=usr/lib/libprivatessh_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_FILES+=usr/lib32/pam_ssh.so OLD_LIBS+=usr/lib32/pam_ssh.so.6 -OLD_FILES+=usr/lib32/private/libssh.a -OLD_FILES+=usr/lib32/private/libssh.so -OLD_LIBS+=usr/lib32/private/libssh.so.5 -OLD_FILES+=usr/lib32/private/libssh_p.a +OLD_FILES+=usr/lib32/libprivatessh.a +OLD_FILES+=usr/lib32/libprivatessh.so +OLD_LIBS+=usr/lib32/libprivatessh.so.5 +OLD_FILES+=usr/lib32/libprivatessh_p.a .endif OLD_FILES+=usr/libexec/sftp-server OLD_FILES+=usr/libexec/ssh-keysign @@ -7537,8 +7537,8 @@ OLD_FILES+=usr/lib/libypclnt_p.a OLD_FILES+=usr/lib/libz_p.a OLD_FILES+=usr/lib/libzfs_core_p.a OLD_FILES+=usr/lib/libzfs_p.a -OLD_FILES+=usr/lib/private/libldns_p.a -OLD_FILES+=usr/lib/private/libssh_p.a +OLD_FILES+=usr/lib/libprivateldns_p.a +OLD_FILES+=usr/lib/libprivatessh_p.a .endif .if ${MK_QUOTAS} == no @@ -8171,8 +8171,8 @@ OLD_LIBS+=usr/lib/libatf-c.a OLD_LIBS+=usr/lib/libatf-c.so OLD_LIBS+=usr/lib/libatf-c.so.1 OLD_LIBS+=usr/lib/libatf-c_p.a -OLD_LIBS+=usr/lib/private/libatf-c.so.0 -OLD_LIBS+=usr/lib/private/libatf-c++.so.1 +OLD_LIBS+=usr/lib/libprivateatf-c.so.0 +OLD_LIBS+=usr/lib/libprivateatf-c++.so.1 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" OLD_LIBS+=usr/lib32/libatf-c++.a OLD_LIBS+=usr/lib32/libatf-c++.so @@ -8183,8 +8183,8 @@ OLD_LIBS+=usr/lib32/libatf-c.a OLD_LIBS+=usr/lib32/libatf-c.so OLD_LIBS+=usr/lib32/libatf-c.so.1 OLD_LIBS+=usr/lib32/libatf-c_p.a -OLD_LIBS+=usr/lib32/private/libatf-c.so.0 -OLD_LIBS+=usr/lib32/private/libatf-c++.so.1 +OLD_LIBS+=usr/lib32/libprivateatf-c.so.0 +OLD_LIBS+=usr/lib32/libprivateatf-c++.so.1 .endif OLD_FILES+=usr/libdata/pkgconfig/atf-c++.pc OLD_FILES+=usr/libdata/pkgconfig/atf-c.pc @@ -8713,8 +8713,8 @@ OLD_FILES+=usr/include/atf-c/tc.h OLD_FILES+=usr/include/atf-c/tp.h OLD_FILES+=usr/include/atf-c/utils.h OLD_FILES+=usr/lib/debug/usr/bin/kyua.debug -OLD_LIBS+=usr/lib/private/libatf-c++.so.2 -OLD_LIBS+=usr/lib/private/libatf-c.so.1 +OLD_LIBS+=usr/lib/libprivateatf-c++.so.2 +OLD_LIBS+=usr/lib/libprivateatf-c.so.1 OLD_FILES+=usr/share/examples/kyua/kyua.conf OLD_FILES+=usr/share/examples/kyua/Kyuafile.top OLD_FILES+=usr/share/kyua/misc/context.html @@ -9206,15 +9206,15 @@ OLD_DIRS+=usr/tests/usr.bin/yacc .if ${MK_UNBOUND} == no OLD_FILES+=etc/rc.d/local_unbound OLD_FILES+=etc/unbound -OLD_FILES+=usr/lib/private/libunbound.a -OLD_FILES+=usr/lib/private/libunbound.so -OLD_LIBS+=usr/lib/private/libunbound.so.5 -OLD_FILES+=usr/lib/private/libunbound_p.a +OLD_FILES+=usr/lib/libprivateunbound.a +OLD_FILES+=usr/lib/libprivateunbound.so +OLD_LIBS+=usr/lib/libprivateunbound.so.5 +OLD_FILES+=usr/lib/libprivateunbound_p.a .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" -OLD_FILES+=usr/lib32/private/libunbound.a -OLD_FILES+=usr/lib32/private/libunbound.so -OLD_LIBS+=usr/lib32/private/libunbound.so.5 -OLD_FILES+=usr/lib32/private/libunbound_p.a +OLD_FILES+=usr/lib32/libprivateunbound.a +OLD_FILES+=usr/lib32/libprivateunbound.so +OLD_LIBS+=usr/lib32/libprivateunbound.so.5 +OLD_FILES+=usr/lib32/libprivateunbound_p.a OLD_FILES+=usr/share/man/man5/local-unbound.conf.5.gz OLD_FILES+=usr/share/man/man8/local-unbound-anchor.8.gz OLD_FILES+=usr/share/man/man8/local-unbound-checkconf.8.gz From nobody Sat Oct 9 05:53:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8A6E112D6252; Sat, 9 Oct 2021 05:53:16 +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 4HRDkM6Lgmz3RFm; Sat, 9 Oct 2021 05:53:15 +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 1995r8Z0000921 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 9 Oct 2021 08:53:11 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 1995r8Z0000921 Received: (from kostik@localhost) by tom.home (8.16.1/8.16.1/Submit) id 1995r84Q000920; Sat, 9 Oct 2021 08:53:08 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 9 Oct 2021 08:53:08 +0300 From: Konstantin Belousov To: Piotr Pawel Stefaniak Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bf8f6ffcb66a - main - Mention kern.timecounter.alloweddeviation in nanosleep.1 Message-ID: References: <202110081509.198F94HG022514@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202110081509.198F94HG022514@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: 4HRDkM6Lgmz3RFm X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Fri, Oct 08, 2021 at 03:09:04PM +0000, Piotr Pawel Stefaniak wrote: > The branch main has been updated by pstef: > > URL: https://cgit.FreeBSD.org/src/commit/?id=bf8f6ffcb66a27f498a18e520758ea0d18a6d2de > > commit bf8f6ffcb66a27f498a18e520758ea0d18a6d2de > Author: Piotr Pawel Stefaniak > AuthorDate: 2021-10-07 19:14:27 +0000 > Commit: Piotr Pawel Stefaniak > CommitDate: 2021-10-08 15:07:50 +0000 > > Mention kern.timecounter.alloweddeviation in nanosleep.1 > > PR: 224837 > Reported by: Aleksander Derevianko > --- > lib/libc/sys/nanosleep.2 | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/libc/sys/nanosleep.2 b/lib/libc/sys/nanosleep.2 > index 19ffcf1b7026..12758a974f7f 100644 > --- a/lib/libc/sys/nanosleep.2 > +++ b/lib/libc/sys/nanosleep.2 > @@ -30,7 +30,7 @@ > .\" @(#)sleep.3 8.1 (Berkeley) 6/4/93 > .\" $FreeBSD$ > .\" > -.Dd March 17, 2017 > +.Dd October 7, 2021 > .Dt NANOSLEEP 2 > .Os > .Sh NAME > @@ -93,6 +93,8 @@ returns immediately and the calling thread is not suspended. > .Pp > The suspension time may be longer than requested due to the > scheduling of other activity by the system. > +It is also subject to the allowed time interval deviation > +specified by the sysctl kern.timecounter.alloweddeviation. This should be like .Xr sysctl 3 .Dv kern.timecounter.alloweddeviation And then, it is missing a description what exactly is allowed by deviation, for instance, what units this sysctl is? > An unmasked signal will terminate the sleep early, regardless of the > .Dv SA_RESTART > value on the interrupting signal. From nobody Sat Oct 9 06:18:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A34D812D8B16; Sat, 9 Oct 2021 06:18:48 +0000 (UTC) (envelope-from pstef@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.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 4HRFHr3yXcz3j7N; Sat, 9 Oct 2021 06:18:48 +0000 (UTC) (envelope-from pstef@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633760328; 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=Vkj3JdQSToPc2w2Cj5wKBNAUEpOwHAhGUyzmAUj44wo=; b=CA6TgVO822bQySsLvjpleNOcWeFHd2+S3zRjwHfBrfaR/8iPs6X9q52CoJnP9YohWb7F9F FtYnaMo8L2t60vLBD/TcSU2XtTx/UQ5M9kurRPFI7o9s0CtIszi/AnFIPsbYH+QyRdYqdv jrRBf0VRWONuwXT6bgdw+oRqb4a4Cd769QeOlWdN0MJ4uUdzhhmvW+qS4wYuqVCToIYao7 z3jbnSiRsra+jnhQWAYfJbvtE4/4ll22HF0ko4quGHTfKGy4t74MHSTHjMyrQvMN+doZRf u5L9F3xgA9IF80gaR/lIsDY+JyyHYCHaav6c6gAFCHKdNMjvLdP+LwO2BHA51w== Received: by freefall.freebsd.org (Postfix, from userid 1403) id 65320D18; Sat, 9 Oct 2021 06:18:48 +0000 (UTC) Date: Sat, 9 Oct 2021 06:18:48 +0000 From: "Piotr P. Stefaniak" To: Konstantin Belousov Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bf8f6ffcb66a - main - Mention kern.timecounter.alloweddeviation in nanosleep.1 Message-ID: References: <202110081509.198F94HG022514@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1633760328; 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=Vkj3JdQSToPc2w2Cj5wKBNAUEpOwHAhGUyzmAUj44wo=; b=T0TSWo0Embq72zyPH3z6Z+SSrf9nKTPmsB594Q8GX+qkf9bRNf5QDYCCYfHgY5wrKvMtkD bbXqdBhfS53lLVwovVzuM/kCVNQJbJWcBqnFgZEUTPUiJUhSFUTA0zziE96yWoSXlnGWxS sC3+L4tKfeTPOJVzkJ+yNAk6GUrWnY4XT+r24hNakSxMHCIDIeYwfj9T0Z+cHNMAyn4r9u S89uOZwsXkk4LgdJ8GVbR6ph8/ADncSes49AomGUjjVSnLCZpLmSwxEP88EgKH/pC80nte PqksyyRPIJiRspcjtXviaPePWcZNGUibMSN7cQ4/U4lpxG/Yvq9pyk4iGZeWYw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1633760328; a=rsa-sha256; cv=none; b=WLeDHdasFZCii2ANM55TBxjMLPkgj9NlB1i7OL1BDBIVypjh5AdGHGJ73Jm0+qcP/vztG3 K9wQX47hK9kSIOv9Gehdj4O8zIS0ecEpkr2yqtRdlCaliBvolX0ABEBQy3CCo6AnqpdopL ewv2iBmFfSmVIabVQLJPaSF5Ax7SYS1JifNfNcahmSC0HPhODqb30Uwj8nx8hQ82Mw6OKO Q0wY232+5N0G2zG9zro60PqTJqHaQElX6iftMHpJqaKuwozTN6MYLfguIl+el5D57M0rn/ o4sj/m4WuTLyACsPhlMmJzp7EspQLhVJSWT1NqGKdhjcgindg8gGF91Czfc35g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N On 2021-10-09 08:53:08, Konstantin Belousov wrote: >On Fri, Oct 08, 2021 at 03:09:04PM +0000, Piotr Pawel Stefaniak wrote: >> @@ -93,6 +93,8 @@ returns immediately and the calling thread is not suspended. >> .Pp >> The suspension time may be longer than requested due to the >> scheduling of other activity by the system. >> +It is also subject to the allowed time interval deviation >> +specified by the sysctl kern.timecounter.alloweddeviation. >This should be like >.Xr sysctl 3 >.Dv kern.timecounter.alloweddeviation @@ -94,7 +94,9 @@ returns immediately and the calling thread is not suspended. The suspension time may be longer than requested due to the scheduling of other activity by the system. It is also subject to the allowed time interval deviation -specified by the sysctl kern.timecounter.alloweddeviation. +specified by the +.Xr sysctl 3 +.Dv kern.timecounter.alloweddeviation . An unmasked signal will terminate the sleep early, regardless of the .Dv SA_RESTART value on the interrupting signal. >And then, it is missing a description what exactly is allowed by deviation, >for instance, what units this sysctl is? That would be redundant with sysctl -d. The point of this change is that now the user is much more likely to know of the sysctl and can look it up and read all about it. The bug may be that there isn't much documentation to be read about it, only sysctl -d and kern_tc.c. The only thing I worry that may be missing from this change is this reference in any other manual pages that might need it as much as nanosleep. From nobody Sat Oct 9 06:43:34 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 43CC512DBAA7; Sat, 9 Oct 2021 06:43:42 +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 4HRFrZ09KHz3lFb; Sat, 9 Oct 2021 06:43:41 +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 1996hY2x013488 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 9 Oct 2021 09:43:37 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 1996hY2x013488 Received: (from kostik@localhost) by tom.home (8.16.1/8.16.1/Submit) id 1996hYqx013487; Sat, 9 Oct 2021 09:43:34 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 9 Oct 2021 09:43:34 +0300 From: Konstantin Belousov To: "Piotr P. Stefaniak" Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bf8f6ffcb66a - main - Mention kern.timecounter.alloweddeviation in nanosleep.1 Message-ID: References: <202110081509.198F94HG022514@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: 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: 4HRFrZ09KHz3lFb X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Sat, Oct 09, 2021 at 06:18:48AM +0000, Piotr P. Stefaniak wrote: > On 2021-10-09 08:53:08, Konstantin Belousov wrote: > > On Fri, Oct 08, 2021 at 03:09:04PM +0000, Piotr Pawel Stefaniak wrote: > > > @@ -93,6 +93,8 @@ returns immediately and the calling thread is not suspended. > > > .Pp > > > The suspension time may be longer than requested due to the > > > scheduling of other activity by the system. > > > +It is also subject to the allowed time interval deviation > > > +specified by the sysctl kern.timecounter.alloweddeviation. > > This should be like > > .Xr sysctl 3 > > .Dv kern.timecounter.alloweddeviation > > @@ -94,7 +94,9 @@ returns immediately and the calling thread is not suspended. > The suspension time may be longer than requested due to the > scheduling of other activity by the system. > It is also subject to the allowed time interval deviation > -specified by the sysctl kern.timecounter.alloweddeviation. > +specified by the > +.Xr sysctl 3 > +.Dv kern.timecounter.alloweddeviation . > An unmasked signal will terminate the sleep early, regardless of the > .Dv SA_RESTART > value on the interrupting signal. > > > And then, it is missing a description what exactly is allowed by deviation, > > for instance, what units this sysctl is? > > That would be redundant with sysctl -d. The point of this change is that now > the user is much more likely to know of the sysctl and can look it up and read > all about it. > sysctl -d is not a (good) documentation. When you read a man text, you are supposed to get everything that is relevant there, although it might be terse and requiring making logical deduction. This is not the case there. Anyway, I went ahead and did what you suggested. On one of my machines, I got solo% sysctl -d kern.timecounter.alloweddeviation kern.timecounter.alloweddeviation: solo% On another, v1% sysctl -d kern.timecounter.alloweddeviation ~ kern.timecounter.alloweddeviation: Allowed time interval deviation in percents Slightly more useful, but still. Percents of what? Imagine somebody reads the man page in the browser from Linux. Where should he search for the sysctl description? > The bug may be that there isn't much documentation to be read about it, only > sysctl -d and kern_tc.c. > > The only thing I worry that may be missing from this change is this reference > in any other manual pages that might need it as much as nanosleep. Well, nanosleep is just an example of a syscall requesting timeout. Another poster childs there are select(2), and poll(2) family which explicitly use precision. To get the definitive list, you would need to review all uses of callout_reset() variants. From nobody Sat Oct 9 08:16:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2100E17E5CCB; Sat, 9 Oct 2021 08:16:21 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) (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 4HRHvT0493z3ttC; Sat, 9 Oct 2021 08:16:21 +0000 (UTC) (envelope-from gljennjohn@gmail.com) Received: by mail-ed1-x52b.google.com with SMTP id g8so45149179edt.7; Sat, 09 Oct 2021 01:16:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=g78y0fImNcabdUJNyZ8zD8Bh+WAe0w9VGUHDIqQwFHE=; b=iA2P+JMX5Bmgf9z2HinkZ3nXIR2lzMGl8meDPbUggcPnoLUoMYRwWWM22fl5qamI4u s6D4e5DmUtAh3PA3oRO3QQ0HQgm+SNDp5PjCSCJRZow3yEy6KDUZPrhszReFrTgOGfx6 j3+Vpap7wlDWkh5mkQQ+CRRcMDYeqKmbs22Q7GKWP0PdKSqiVfh3hYsoV3S6ZVpvfkNN cOGdD2fJt31b3mIYOoRYbRlyM5EfBK+v3mhlj5nYBM0NIQB/r/9h5HoXarUf6liAPyeT Dlhz1iktbqWob3P5WQ8+ejK7HWC51LsYaKX8NDyoOGs9xZ1P17JJOdFYzx9MZFkIWlmS +SNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=g78y0fImNcabdUJNyZ8zD8Bh+WAe0w9VGUHDIqQwFHE=; b=SWgmImICl8kipkIwqKpnqVCBQr5xKaD+JCoG4UsTfxyKT68qjq+AJzZd3Lcbj5hAtn WWzuzOXzKI6IJ/dnkTBEfLt25WCiE+00HYiFE/c3nWgAbJAtLKihVWV0cLISPs6u5xoI psmM4Zi+z3XKUgt3lbOlAOngkjkHGIvt++qns6vuTv+tkCIit9OvaNl32z4CIK7H+es/ +T0LnhbJPf5pyn9DD7/MllGQHrdj3OZS/6VTGizwxFWIkcHvGrvfiKudcbOuNw78IufL jNk3ji2qaUVBf9vRu1ZuRztrbMqw30zI/T+WmTvQJScLszW5Rw9h7M8lowKxmW5CkaFM jB0Q== X-Gm-Message-State: AOAM532E1t8EyXtdrlS7pyTwW8bzuWnCsL1MQqM184c8HimaRASZtKnU x/fNp/klMMGFYCFzGlJi3sEavEFq5wI= X-Google-Smtp-Source: ABdhPJwfUuJGssFP5uKJP7CXA5rNTymf4xEeFwYscuxpRCxOI1Oj7TdNi3y8qnNXYOuZaUj8dzyXDw== X-Received: by 2002:a05:6402:5112:: with SMTP id m18mr14062385edd.101.1633767373832; Sat, 09 Oct 2021 01:16:13 -0700 (PDT) Received: from ernst.home (p5b3becad.dip0.t-ipconnect.de. [91.59.236.173]) by smtp.gmail.com with ESMTPSA id o3sm644821eju.123.2021.10.09.01.16.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Oct 2021 01:16:12 -0700 (PDT) Date: Sat, 9 Oct 2021 10:16:11 +0200 From: Gary Jennejohn To: Konstantin Belousov Cc: "Piotr P. Stefaniak" , src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: bf8f6ffcb66a - main - Mention kern.timecounter.alloweddeviation in nanosleep.1 Message-ID: <20211009101611.07c89a1c@ernst.home> In-Reply-To: References: <202110081509.198F94HG022514@gitrepo.freebsd.org> Reply-To: gljennjohn@gmail.com X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.33; amd64-portbld-freebsd14.0) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4HRHvT0493z3ttC X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: N On Sat, 9 Oct 2021 09:43:34 +0300 Konstantin Belousov wrote: > On Sat, Oct 09, 2021 at 06:18:48AM +0000, Piotr P. Stefaniak wrote: > > On 2021-10-09 08:53:08, Konstantin Belousov wrote: > > > On Fri, Oct 08, 2021 at 03:09:04PM +0000, Piotr Pawel Stefaniak wrote: > > > > @@ -93,6 +93,8 @@ returns immediately and the calling thread is not suspended. > > > > .Pp > > > > The suspension time may be longer than requested due to the > > > > scheduling of other activity by the system. > > > > +It is also subject to the allowed time interval deviation > > > > +specified by the sysctl kern.timecounter.alloweddeviation. > > > This should be like > > > .Xr sysctl 3 > > > .Dv kern.timecounter.alloweddeviation > > > > @@ -94,7 +94,9 @@ returns immediately and the calling thread is not suspended. > > The suspension time may be longer than requested due to the > > scheduling of other activity by the system. > > It is also subject to the allowed time interval deviation > > -specified by the sysctl kern.timecounter.alloweddeviation. > > +specified by the > > +.Xr sysctl 3 > > +.Dv kern.timecounter.alloweddeviation . > > An unmasked signal will terminate the sleep early, regardless of the > > .Dv SA_RESTART > > value on the interrupting signal. > > > > > And then, it is missing a description what exactly is allowed by deviation, > > > for instance, what units this sysctl is? > > > > That would be redundant with sysctl -d. The point of this change is that now > > the user is much more likely to know of the sysctl and can look it up and read > > all about it. > > > sysctl -d is not a (good) documentation. When you read a man text, you are > supposed to get everything that is relevant there, although it might be > terse and requiring making logical deduction. This is not the case there. > > Anyway, I went ahead and did what you suggested. On one of my machines, > I got > solo% sysctl -d kern.timecounter.alloweddeviation > kern.timecounter.alloweddeviation: > solo% > > On another, > v1% sysctl -d kern.timecounter.alloweddeviation ~ > kern.timecounter.alloweddeviation: Allowed time interval deviation in percents > > Slightly more useful, but still. Percents of what? > I wondered about that myself when I looked at it yesterday. Just to be pedantic, percent is a contraction of per centum and does not have a plural form. It's always percent. > Imagine somebody reads the man page in the browser from Linux. Where should > he search for the sysctl description? > > > The bug may be that there isn't much documentation to be read about it, only > > sysctl -d and kern_tc.c. > > > > The only thing I worry that may be missing from this change is this reference > > in any other manual pages that might need it as much as nanosleep. > Well, nanosleep is just an example of a syscall requesting timeout. > Another poster childs there are select(2), and poll(2) family which > explicitly use precision. > > To get the definitive list, you would need to review all uses of > callout_reset() variants. > -- Gary Jennejohn From nobody Sat Oct 9 11:36:39 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2103A17F70A9; Sat, 9 Oct 2021 11: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 4HRNLc0QYbz4d2R; Sat, 9 Oct 2021 11:36: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 E281819B6A; Sat, 9 Oct 2021 11: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 199Bad0S060124; Sat, 9 Oct 2021 11: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 199Bad0K060123; Sat, 9 Oct 2021 11:36:39 GMT (envelope-from git) Date: Sat, 9 Oct 2021 11:36:39 GMT Message-Id: <202110091136.199Bad0K060123@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: 1549575f22d1 - main - [fib_algo][dxr] Improve incremental updating strategy List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 1549575f22d14b3ac89a73627618a63132217460 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=1549575f22d14b3ac89a73627618a63132217460 commit 1549575f22d14b3ac89a73627618a63132217460 Author: Marko Zec AuthorDate: 2021-10-09 11:22:27 +0000 Commit: Marko Zec CommitDate: 2021-10-09 11:22:27 +0000 [fib_algo][dxr] Improve incremental updating strategy Tracking the number of unused holes in the trie and the range table was a bad metric based on which full trie and / or range rebuilds were triggered, which would happen in vain by far too frequently, particularly with live BGP feeds. Instead, track the total unused space inside the trie and range table structures, and trigger rebuilds if the percentage of unused space exceeds a sysctl-tunable threshold. MFC after: 3 days PR: 257965 --- sys/netinet/in_fib_dxr.c | 103 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 19 deletions(-) diff --git a/sys/netinet/in_fib_dxr.c b/sys/netinet/in_fib_dxr.c index 6a9f414c3ab0..d832a66ee2cc 100644 --- a/sys/netinet/in_fib_dxr.c +++ b/sys/netinet/in_fib_dxr.c @@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -195,6 +196,7 @@ struct dxr_aux { uint32_t updates_high; uint32_t all_chunks_cnt; uint32_t unused_chunks_cnt; + uint32_t unused_chunks_size; uint32_t xtbl_size; uint32_t all_trie_cnt; uint32_t unused_trie_cnt; @@ -232,21 +234,48 @@ static MALLOC_DEFINE(M_DXRAUX, "dxr aux", "DXR auxiliary"); uma_zone_t chunk_zone; uma_zone_t trie_zone; +VNET_DEFINE_STATIC(int, frag_limit) = 100; +#define V_frag_limit VNET(frag_limit) + 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"); +static int +sysctl_dxr_frag_limit(SYSCTL_HANDLER_ARGS) +{ + char buf[8]; + int error, new, i; + + snprintf(buf, sizeof(buf), "%d.%02d%%", V_frag_limit / 100, + V_frag_limit % 100); + error = sysctl_handle_string(oidp, buf, sizeof(buf), req); + if (error != 0 || req->newptr == NULL) + return (error); + if (!isdigit(*buf) && *buf != '.') + return (EINVAL); + for (i = 0, new = 0; isdigit(buf[i]) && i < sizeof(buf); i++) + new = new * 10 + buf[i] - '0'; + new *= 100; + if (buf[i++] == '.') { + if (!isdigit(buf[i])) + return (EINVAL); + new += (buf[i++] - '0') * 10; + if (isdigit(buf[i])) + new += buf[i++] - '0'; + } + if (new > 1000) + return (EINVAL); + V_frag_limit = new; + snprintf(buf, sizeof(buf), "%d.%02d%%", V_frag_limit / 100, + V_frag_limit % 100); + return (0); +} -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"); +SYSCTL_PROC(_net_route_algo_dxr, OID_AUTO, frag_limit, + CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_VNET, + 0, 0, sysctl_dxr_frag_limit, "A", + "Fragmentation threshold to full rebuild"); /* Binary search for a matching address range */ #define DXR_LOOKUP_STAGE \ @@ -424,6 +453,7 @@ chunk_ref(struct dxr_aux *da, uint32_t chunk) fdesc->base = cdp->cd_base; da->rtbl_top -= size; da->unused_chunks_cnt--; + da->unused_chunks_size -= cdp->cd_max_size; if (cdp->cd_max_size > size) { /* Split the range in two, need a new descriptor */ empty_cdp = uma_zalloc(chunk_zone, M_NOWAIT); @@ -442,6 +472,7 @@ chunk_ref(struct dxr_aux *da, uint32_t chunk) da->all_chunks_cnt++; da->unused_chunks_cnt++; + da->unused_chunks_size += empty_cdp->cd_max_size; cdp->cd_max_size = size; } LIST_REMOVE(cdp, cd_hash_le); @@ -471,9 +502,9 @@ chunk_ref(struct dxr_aux *da, uint32_t chunk) 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); + i = (BASE_MAX - da->rtbl_top) * LOG_DEBUG / BASE_MAX; + FIB_PRINTF(i, da->fd, "range table at %d%% structural limit", + 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); @@ -508,6 +539,7 @@ chunk_unref(struct dxr_aux *da, uint32_t chunk) LIST_REMOVE(cdp, cd_hash_le); da->unused_chunks_cnt++; + da->unused_chunks_size += cdp->cd_max_size; cdp->cd_cur_size = 0; /* Attempt to merge with the preceding chunk, if empty */ @@ -546,6 +578,7 @@ chunk_unref(struct dxr_aux *da, uint32_t chunk) da->all_chunks_cnt--; da->unused_chunks_cnt--; da->rtbl_top -= cdp->cd_max_size; + da->unused_chunks_size -= cdp->cd_max_size; LIST_REMOVE(cdp, cd_all_le); uma_zfree(chunk_zone, cdp); return; @@ -846,10 +879,12 @@ dxr_build(struct dxr *dxr) struct timeval t0, t1, t2, t3; uint32_t r_size, dxr_tot_size; uint32_t i, m, range_rebuild = 0; + uint32_t range_frag; #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; + uint32_t trie_frag; #endif KASSERT(dxr->d == NULL, ("dxr: d not free")); @@ -897,9 +932,10 @@ dxr_build(struct dxr *dxr) 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) + if (da->updates_low > da->updates_high) range_rebuild = 1; + +range_build: if (range_rebuild) { /* Bulk cleanup */ bzero(da->chunk_hashtbl, sizeof(da->chunk_hashtbl)); @@ -910,6 +946,7 @@ dxr_build(struct dxr *dxr) for (i = 0; i < UNUSED_BUCKETS; i++) LIST_INIT(&da->unused_chunks[i]); da->all_chunks_cnt = da->unused_chunks_cnt = 0; + da->unused_chunks_size = 0; da->rtbl_top = 0; da->updates_low = 0; da->updates_high = DIRECT_TBL_SIZE - 1; @@ -929,18 +966,32 @@ dxr_build(struct dxr *dxr) else if (m & 1 && update_chunk(da, i) != 0) return; } + + range_frag = 0; + if (da->rtbl_top) + range_frag = da->unused_chunks_size * 10000ULL / da->rtbl_top; + if (range_frag > V_frag_limit) { + range_rebuild = 1; + goto range_build; + } + r_size = sizeof(*da->range_tbl) * da->rtbl_top; microuptime(&t1); #ifdef DXR2 - if (range_rebuild || da->unused_trie_cnt > V_max_trie_holes || + if (range_rebuild || abs(fls(da->prefixes) - fls(da->trie_rebuilt_prefixes)) > 1) trie_rebuild = 1; + +trie_build: 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; + if (!range_rebuild) + memset(da->updates_mask, 0xff, + sizeof(da->updates_mask)); } dxr2_try_squeeze: @@ -976,6 +1027,14 @@ dxr2_try_squeeze: da->d_tbl[i] = ti; } + trie_frag = 0; + if (da->all_trie_cnt) + trie_frag = da->unused_trie_cnt * 10000ULL / da->all_trie_cnt; + if (trie_frag > V_frag_limit) { + trie_rebuild = 1; + goto trie_build; + } + d_size = sizeof(*da->d_tbl) * d_tbl_size; x_size = sizeof(*da->x_tbl) * DIRECT_TBL_SIZE / d_tbl_size * da->all_trie_cnt; @@ -1035,6 +1094,15 @@ dxr2_try_squeeze: FIB_PRINTF(LOG_INFO, da->fd, "%d.%02d KBytes, %d.%02d Bytes/prefix", dxr_tot_size / 1024, dxr_tot_size * 100 / 1024 % 100, i / 100, i % 100); +#ifdef DXR2 + FIB_PRINTF(LOG_INFO, da->fd, + "%d.%02d%% trie, %d.%02d%% range fragmentation", + trie_frag / 100, trie_frag % 100, + range_frag / 100, range_frag % 100); +#else + FIB_PRINTF(LOG_INFO, da->fd, "%d.%01d%% range fragmentation", + range_frag / 100, range_frag % 100); +#endif i = (t1.tv_sec - t0.tv_sec) * 1000000 + t1.tv_usec - t0.tv_usec; FIB_PRINTF(LOG_INFO, da->fd, "range table %s in %u.%03u ms", range_rebuild ? "rebuilt" : "updated", i / 1000, i % 1000); @@ -1046,9 +1114,6 @@ dxr2_try_squeeze: i = (t3.tv_sec - t2.tv_sec) * 1000000 + t3.tv_usec - t2.tv_usec; FIB_PRINTF(LOG_INFO, da->fd, "snapshot forked in %u.%03u ms", i / 1000, i % 1000); - FIB_PRINTF(LOG_INFO, da->fd, "range table: %d%%, %d chunks, %d holes", - da->rtbl_top * 100 / BASE_MAX, da->all_chunks_cnt, - da->unused_chunks_cnt); } /* From nobody Sat Oct 9 11:54:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D490312B1A54; Sat, 9 Oct 2021 11:54: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 4HRNkp5hdfz4gQP; Sat, 9 Oct 2021 11:54: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 A3B4A1A389; Sat, 9 Oct 2021 11:54: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 199BsAk4086602; Sat, 9 Oct 2021 11:54:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199BsAYB086601; Sat, 9 Oct 2021 11:54:10 GMT (envelope-from git) Date: Sat, 9 Oct 2021 11:54:10 GMT Message-Id: <202110091154.199BsAYB086601@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: bc8b8e106bd1 - main - [fib_algo][dxr] Retire counters which are no longer used List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: bc8b8e106bd1526ff19e270d2a8f2ccf6d225507 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by zec: URL: https://cgit.FreeBSD.org/src/commit/?id=bc8b8e106bd1526ff19e270d2a8f2ccf6d225507 commit bc8b8e106bd1526ff19e270d2a8f2ccf6d225507 Author: Marko Zec AuthorDate: 2021-10-09 11:47:10 +0000 Commit: Marko Zec CommitDate: 2021-10-09 11:47:10 +0000 [fib_algo][dxr] Retire counters which are no longer used The number of chunks can still be tracked via vmstat -z|fgrep dxr. MFC after: 3 days --- sys/netinet/in_fib_dxr.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/sys/netinet/in_fib_dxr.c b/sys/netinet/in_fib_dxr.c index d832a66ee2cc..f23db925444f 100644 --- a/sys/netinet/in_fib_dxr.c +++ b/sys/netinet/in_fib_dxr.c @@ -194,8 +194,6 @@ struct dxr_aux { uint32_t prefixes; uint32_t updates_low; uint32_t updates_high; - uint32_t all_chunks_cnt; - uint32_t unused_chunks_cnt; uint32_t unused_chunks_size; uint32_t xtbl_size; uint32_t all_trie_cnt; @@ -452,7 +450,6 @@ chunk_ref(struct dxr_aux *da, uint32_t chunk) size * sizeof(struct range_entry_long)); fdesc->base = cdp->cd_base; da->rtbl_top -= size; - da->unused_chunks_cnt--; da->unused_chunks_size -= cdp->cd_max_size; if (cdp->cd_max_size > size) { /* Split the range in two, need a new descriptor */ @@ -470,8 +467,6 @@ chunk_ref(struct dxr_aux *da, uint32_t chunk) LIST_INSERT_HEAD(&da->unused_chunks[i], empty_cdp, cd_hash_le); - da->all_chunks_cnt++; - da->unused_chunks_cnt++; da->unused_chunks_size += empty_cdp->cd_max_size; cdp->cd_max_size = size; } @@ -484,7 +479,6 @@ chunk_ref(struct dxr_aux *da, uint32_t chunk) cdp->cd_max_size = size; cdp->cd_base = fdesc->base; LIST_INSERT_HEAD(&da->all_chunks, cdp, cd_all_le); - da->all_chunks_cnt++; KASSERT(cdp->cd_base + cdp->cd_max_size == da->rtbl_top, ("dxr: %s %d", __FUNCTION__, __LINE__)); } @@ -538,7 +532,6 @@ chunk_unref(struct dxr_aux *da, uint32_t chunk) return; LIST_REMOVE(cdp, cd_hash_le); - da->unused_chunks_cnt++; da->unused_chunks_size += cdp->cd_max_size; cdp->cd_cur_size = 0; @@ -548,9 +541,7 @@ chunk_unref(struct dxr_aux *da, uint32_t chunk) KASSERT(cdp2->cd_base + cdp2->cd_max_size == cdp->cd_base, ("dxr: %s %d", __FUNCTION__, __LINE__)); LIST_REMOVE(cdp, cd_all_le); - da->all_chunks_cnt--; LIST_REMOVE(cdp2, cd_hash_le); - da->unused_chunks_cnt--; cdp2->cd_max_size += cdp->cd_max_size; uma_zfree(chunk_zone, cdp); cdp = cdp2; @@ -562,9 +553,7 @@ chunk_unref(struct dxr_aux *da, uint32_t chunk) KASSERT(cdp->cd_base + cdp->cd_max_size == cdp2->cd_base, ("dxr: %s %d", __FUNCTION__, __LINE__)); LIST_REMOVE(cdp, cd_all_le); - da->all_chunks_cnt--; LIST_REMOVE(cdp2, cd_hash_le); - da->unused_chunks_cnt--; cdp2->cd_max_size += cdp->cd_max_size; cdp2->cd_base = cdp->cd_base; uma_zfree(chunk_zone, cdp); @@ -575,8 +564,6 @@ chunk_unref(struct dxr_aux *da, uint32_t chunk) /* Free the chunk on the top of the range heap, trim the heap */ KASSERT(cdp == LIST_FIRST(&da->all_chunks), ("dxr: %s %d", __FUNCTION__, __LINE__)); - da->all_chunks_cnt--; - da->unused_chunks_cnt--; da->rtbl_top -= cdp->cd_max_size; da->unused_chunks_size -= cdp->cd_max_size; LIST_REMOVE(cdp, cd_all_le); @@ -945,7 +932,6 @@ range_build: } for (i = 0; i < UNUSED_BUCKETS; i++) LIST_INIT(&da->unused_chunks[i]); - da->all_chunks_cnt = da->unused_chunks_cnt = 0; da->unused_chunks_size = 0; da->rtbl_top = 0; da->updates_low = 0; From nobody Sat Oct 9 15:04:31 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6323B17E0E2E; Sat, 9 Oct 2021 15:04: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 4HRSyR2Mw0z3JLx; Sat, 9 Oct 2021 15:04: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 2FCE71C472; Sat, 9 Oct 2021 15:04: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 199F4Vo6040002; Sat, 9 Oct 2021 15:04:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199F4VDu040001; Sat, 9 Oct 2021 15:04:31 GMT (envelope-from git) Date: Sat, 9 Oct 2021 15:04:31 GMT Message-Id: <202110091504.199F4VDu040001@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: c8a45820e0d9 - main - sbin/mount_fusefs/mount_fusefs.8: Fix typos List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: c8a45820e0d94892c1a632d49ccfddd8f559801e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by asomers: URL: https://cgit.FreeBSD.org/src/commit/?id=c8a45820e0d94892c1a632d49ccfddd8f559801e commit c8a45820e0d94892c1a632d49ccfddd8f559801e Author: Elyes HAOUAS AuthorDate: 2021-10-08 16:44:48 +0000 Commit: Alan Somers CommitDate: 2021-10-09 15:02:39 +0000 sbin/mount_fusefs/mount_fusefs.8: Fix typos "expicitly" --> "explicitly" "uknown" --> "unknown" Signed-off-by: Elyes HAOUAS MFC after: 3 days Pull Request: https://github.com/freebsd/freebsd-src/pull/552 --- sbin/mount_fusefs/mount_fusefs.8 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sbin/mount_fusefs/mount_fusefs.8 b/sbin/mount_fusefs/mount_fusefs.8 index 051a5c273ef7..9740d0ed59ff 100644 --- a/sbin/mount_fusefs/mount_fusefs.8 +++ b/sbin/mount_fusefs/mount_fusefs.8 @@ -34,7 +34,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 31, 2019 +.Dd October 9, 2021 .Dt MOUNT_FUSEFS 8 .Os .Sh NAME @@ -162,7 +162,7 @@ Limit size of read requests to Do not refuse unmounting if there are secondary mounts. .It Cm private Refuse shared mounting of the daemon. -This is the default behaviour, to allow sharing, expicitly use +This is the default behaviour, to allow sharing, explicitly use .Fl o Cm noprivate . .It Cm push_symlinks_in Prefix absolute symlinks with the mountpoint. @@ -293,7 +293,7 @@ option. .It Ev MOUNT_FUSEFS_IGNORE_UNKNOWN If set, .Nm -will ignore uknown mount options. +will ignore unknown mount options. .It Ev MOUNT_FUSEFS_CALL_BY_LIB Adjust behavior to the needs of the FUSE library. Currently it effects help output. From nobody Sat Oct 9 15:47:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 024F317E53AE; Sat, 9 Oct 2021 15:47: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 4HRTvq6R3Bz3MfD; Sat, 9 Oct 2021 15:47: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 BD31F1CE35; Sat, 9 Oct 2021 15:47: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 199FlJxZ092479; Sat, 9 Oct 2021 15:47:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199FlJZD092478; Sat, 9 Oct 2021 15:47:19 GMT (envelope-from git) Date: Sat, 9 Oct 2021 15:47:19 GMT Message-Id: <202110091547.199FlJZD092478@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: 7fa233534736 - main - bhyve: Map the MSI-X table unconditionally for passthrough List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 7fa2335347362378322a4d27cb40f6e6cd5dd0fb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=7fa2335347362378322a4d27cb40f6e6cd5dd0fb commit 7fa2335347362378322a4d27cb40f6e6cd5dd0fb Author: Mark Johnston AuthorDate: 2021-10-09 15:36:19 +0000 Commit: Mark Johnston CommitDate: 2021-10-09 15:36:19 +0000 bhyve: Map the MSI-X table unconditionally for passthrough It is possible for the PBA to reside in the same page as the MSI-X table. And, while devices are not supposed to do this, at least some Intel wifi devices place registers in a page shared with the MSI-X table. To handle the first case we currently map the PBA page using /dev/mem, and the second case is not handled. Kill two birds with one stone: map the MSI-X table BAR using the PCIOCBARMMAP ioctl instead of /dev/mem, and map the entire table so that accesses beyond the bounds of the table can be emulated. Regions of the BAR not containing the table are left unmapped. Reviewed by: bz, grehan, jhb MFC after: 3 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32359 --- usr.sbin/bhyve/pci_emul.h | 4 +- usr.sbin/bhyve/pci_passthru.c | 186 +++++++++++++++++------------------------- 2 files changed, 76 insertions(+), 114 deletions(-) diff --git a/usr.sbin/bhyve/pci_emul.h b/usr.sbin/bhyve/pci_emul.h index 031a6113fac4..5b6a17119960 100644 --- a/usr.sbin/bhyve/pci_emul.h +++ b/usr.sbin/bhyve/pci_emul.h @@ -157,8 +157,8 @@ struct pci_devinst { int pba_size; int function_mask; struct msix_table_entry *table; /* allocated at runtime */ - void *pba_page; - int pba_page_offset; + uint8_t *mapped_addr; + size_t mapped_size; } pi_msix; void *pi_arg; /* devemu-private data */ diff --git a/usr.sbin/bhyve/pci_passthru.c b/usr.sbin/bhyve/pci_passthru.c index 2c6a2ebd8dd9..bf99c646c480 100644 --- a/usr.sbin/bhyve/pci_passthru.c +++ b/usr.sbin/bhyve/pci_passthru.c @@ -43,7 +43,10 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #include +#include #ifndef WITHOUT_CAPSICUM #include @@ -69,17 +72,12 @@ __FBSDID("$FreeBSD$"); #define _PATH_DEVPCI "/dev/pci" #endif -#ifndef _PATH_MEM -#define _PATH_MEM "/dev/mem" -#endif - #define LEGACY_SUPPORT 1 #define MSIX_TABLE_COUNT(ctrl) (((ctrl) & PCIM_MSIXCTRL_TABLE_SIZE) + 1) #define MSIX_CAPLEN 12 static int pcifd = -1; -static int memfd = -1; struct passthru_softc { struct pci_devinst *psc_pi; @@ -290,30 +288,30 @@ msix_table_read(struct passthru_softc *sc, uint64_t offset, int size) uint64_t *src64; uint64_t data; size_t entry_offset; - int index; + uint32_t table_offset; + int index, table_count; pi = sc->psc_pi; - if (pi->pi_msix.pba_page != NULL && offset >= pi->pi_msix.pba_offset && - offset < pi->pi_msix.pba_offset + pi->pi_msix.pba_size) { - switch(size) { + + table_offset = pi->pi_msix.table_offset; + table_count = pi->pi_msix.table_count; + if (offset < table_offset || + offset >= table_offset + table_count * MSIX_TABLE_ENTRY_SIZE) { + switch (size) { case 1: - src8 = (uint8_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + src8 = (uint8_t *)(pi->pi_msix.mapped_addr + offset); data = *src8; break; case 2: - src16 = (uint16_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + src16 = (uint16_t *)(pi->pi_msix.mapped_addr + offset); data = *src16; break; case 4: - src32 = (uint32_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + src32 = (uint32_t *)(pi->pi_msix.mapped_addr + offset); data = *src32; break; case 8: - src64 = (uint64_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + src64 = (uint64_t *)(pi->pi_msix.mapped_addr + offset); data = *src64; break; default: @@ -322,32 +320,28 @@ msix_table_read(struct passthru_softc *sc, uint64_t offset, int size) return (data); } - if (offset < pi->pi_msix.table_offset) - return (-1); - - offset -= pi->pi_msix.table_offset; + offset -= table_offset; index = offset / MSIX_TABLE_ENTRY_SIZE; - if (index >= pi->pi_msix.table_count) - return (-1); + assert(index < table_count); entry = &pi->pi_msix.table[index]; entry_offset = offset % MSIX_TABLE_ENTRY_SIZE; - switch(size) { + switch (size) { case 1: - src8 = (uint8_t *)((void *)entry + entry_offset); + src8 = (uint8_t *)((uint8_t *)entry + entry_offset); data = *src8; break; case 2: - src16 = (uint16_t *)((void *)entry + entry_offset); + src16 = (uint16_t *)((uint8_t *)entry + entry_offset); data = *src16; break; case 4: - src32 = (uint32_t *)((void *)entry + entry_offset); + src32 = (uint32_t *)((uint8_t *)entry + entry_offset); data = *src32; break; case 8: - src64 = (uint64_t *)((void *)entry + entry_offset); + src64 = (uint64_t *)((uint8_t *)entry + entry_offset); data = *src64; break; default: @@ -368,46 +362,39 @@ msix_table_write(struct vmctx *ctx, int vcpu, struct passthru_softc *sc, uint32_t *dest32; uint64_t *dest64; size_t entry_offset; - uint32_t vector_control; - int index; + uint32_t table_offset, vector_control; + int index, table_count; pi = sc->psc_pi; - if (pi->pi_msix.pba_page != NULL && offset >= pi->pi_msix.pba_offset && - offset < pi->pi_msix.pba_offset + pi->pi_msix.pba_size) { - switch(size) { + + table_offset = pi->pi_msix.table_offset; + table_count = pi->pi_msix.table_count; + if (offset < table_offset || + offset >= table_offset + table_count * MSIX_TABLE_ENTRY_SIZE) { + switch (size) { case 1: - dest8 = (uint8_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + dest8 = (uint8_t *)(pi->pi_msix.mapped_addr + offset); *dest8 = data; break; case 2: - dest16 = (uint16_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + dest16 = (uint16_t *)(pi->pi_msix.mapped_addr + offset); *dest16 = data; break; case 4: - dest32 = (uint32_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + dest32 = (uint32_t *)(pi->pi_msix.mapped_addr + offset); *dest32 = data; break; case 8: - dest64 = (uint64_t *)(pi->pi_msix.pba_page + offset - - pi->pi_msix.pba_page_offset); + dest64 = (uint64_t *)(pi->pi_msix.mapped_addr + offset); *dest64 = data; break; - default: - break; } return; } - if (offset < pi->pi_msix.table_offset) - return; - - offset -= pi->pi_msix.table_offset; + offset -= table_offset; index = offset / MSIX_TABLE_ENTRY_SIZE; - if (index >= pi->pi_msix.table_count) - return; + assert(index < table_count); entry = &pi->pi_msix.table[index]; entry_offset = offset % MSIX_TABLE_ENTRY_SIZE; @@ -435,13 +422,10 @@ msix_table_write(struct vmctx *ctx, int vcpu, struct passthru_softc *sc, static int init_msix_table(struct vmctx *ctx, struct passthru_softc *sc, uint64_t base) { + struct pci_devinst *pi = sc->psc_pi; + struct pci_bar_mmap pbm; int b, s, f; - int idx; - size_t remaining; uint32_t table_size, table_offset; - uint32_t pba_size, pba_offset; - vm_paddr_t start; - struct pci_devinst *pi = sc->psc_pi; assert(pci_msix_table_bar(pi) >= 0 && pci_msix_pba_bar(pi) >= 0); @@ -449,55 +433,48 @@ init_msix_table(struct vmctx *ctx, struct passthru_softc *sc, uint64_t base) s = sc->psc_sel.pc_dev; f = sc->psc_sel.pc_func; - /* - * If the MSI-X table BAR maps memory intended for - * other uses, it is at least assured that the table - * either resides in its own page within the region, - * or it resides in a page shared with only the PBA. + /* + * Map the region of the BAR containing the MSI-X table. This is + * necessary for two reasons: + * 1. The PBA may reside in the first or last page containing the MSI-X + * table. + * 2. While PCI devices are not supposed to use the page(s) containing + * the MSI-X table for other purposes, some do in practice. */ + memset(&pbm, 0, sizeof(pbm)); + pbm.pbm_sel = sc->psc_sel; + pbm.pbm_flags = PCIIO_BAR_MMAP_RW; + pbm.pbm_reg = PCIR_BAR(pi->pi_msix.pba_bar); + pbm.pbm_memattr = VM_MEMATTR_DEVICE; + + if (ioctl(pcifd, PCIOCBARMMAP, &pbm) != 0) { + warn("Failed to map MSI-X table BAR on %d/%d/%d", b, s, f); + return (-1); + } + assert(pbm.pbm_bar_off == 0); + pi->pi_msix.mapped_addr = (uint8_t *)(uintptr_t)pbm.pbm_map_base; + pi->pi_msix.mapped_size = pbm.pbm_map_length; + table_offset = rounddown2(pi->pi_msix.table_offset, 4096); table_size = pi->pi_msix.table_offset - table_offset; table_size += pi->pi_msix.table_count * MSIX_TABLE_ENTRY_SIZE; table_size = roundup2(table_size, 4096); - idx = pi->pi_msix.table_bar; - start = pi->pi_bar[idx].addr; - remaining = pi->pi_bar[idx].size; - - if (pi->pi_msix.pba_bar == pi->pi_msix.table_bar) { - pba_offset = pi->pi_msix.pba_offset; - pba_size = pi->pi_msix.pba_size; - if (pba_offset >= table_offset + table_size || - table_offset >= pba_offset + pba_size) { - /* - * If the PBA does not share a page with the MSI-x - * tables, no PBA emulation is required. - */ - pi->pi_msix.pba_page = NULL; - pi->pi_msix.pba_page_offset = 0; - } else { - /* - * The PBA overlaps with either the first or last - * page of the MSI-X table region. Map the - * appropriate page. - */ - if (pba_offset <= table_offset) - pi->pi_msix.pba_page_offset = table_offset; - else - pi->pi_msix.pba_page_offset = table_offset + - table_size - 4096; - pi->pi_msix.pba_page = mmap(NULL, 4096, PROT_READ | - PROT_WRITE, MAP_SHARED, memfd, start + - pi->pi_msix.pba_page_offset); - if (pi->pi_msix.pba_page == MAP_FAILED) { - warn( - "Failed to map PBA page for MSI-X on %d/%d/%d", - b, s, f); - return (-1); - } - } - } + /* + * Unmap any pages not covered by the table, we do not need to emulate + * accesses to them. Avoid releasing address space to help ensure that + * a buggy out-of-bounds access causes a crash. + */ + if (table_offset != 0) + if (mprotect(pi->pi_msix.mapped_addr, table_offset, + PROT_NONE) != 0) + warn("Failed to unmap MSI-X table BAR region"); + if (table_offset + table_size != pi->pi_msix.mapped_size) + if (mprotect(pi->pi_msix.mapped_addr, + pi->pi_msix.mapped_size - (table_offset + table_size), + PROT_NONE) != 0) + warn("Failed to unmap MSI-X table BAR region"); return (0); } @@ -645,7 +622,7 @@ passthru_init(struct vmctx *ctx, struct pci_devinst *pi, nvlist_t *nvl) #ifndef WITHOUT_CAPSICUM cap_rights_t rights; cap_ioctl_t pci_ioctls[] = - { PCIOCREAD, PCIOCWRITE, PCIOCGETBAR, PCIOCBARIO }; + { PCIOCREAD, PCIOCWRITE, PCIOCGETBAR, PCIOCBARIO, PCIOCBARMMAP }; #endif sc = NULL; @@ -676,21 +653,6 @@ passthru_init(struct vmctx *ctx, struct pci_devinst *pi, nvlist_t *nvl) errx(EX_OSERR, "Unable to apply rights for sandbox"); #endif - if (memfd < 0) { - memfd = open(_PATH_MEM, O_RDWR, 0); - if (memfd < 0) { - warn("failed to open %s", _PATH_MEM); - return (error); - } - } - -#ifndef WITHOUT_CAPSICUM - cap_rights_clear(&rights, CAP_IOCTL); - cap_rights_set(&rights, CAP_MMAP_RW); - if (caph_rights_limit(memfd, &rights) == -1) - errx(EX_OSERR, "Unable to apply rights for sandbox"); -#endif - #define GET_INT_CONFIG(var, name) do { \ value = get_config_value_node(nvl, name); \ if (value == NULL) { \ From nobody Sat Oct 9 16:35:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AEA5717ECCE5; Sat, 9 Oct 2021 16:35: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 4HRVz14Kg2z3lGR; Sat, 9 Oct 2021 16:35: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 74A471D3F3; Sat, 9 Oct 2021 16:35: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 199GZ9hK059304; Sat, 9 Oct 2021 16:35:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199GZ9cC059303; Sat, 9 Oct 2021 16:35:09 GMT (envelope-from git) Date: Sat, 9 Oct 2021 16:35:09 GMT Message-Id: <202110091635.199GZ9cC059303@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: fa9da1f590ca - main - timecounter: Let kern.timecounter.stepwarnings be set as a tunable List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: fa9da1f590caba94b98717c33633efcf719da151 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=fa9da1f590caba94b98717c33633efcf719da151 commit fa9da1f590caba94b98717c33633efcf719da151 Author: Mark Johnston AuthorDate: 2021-10-09 16:34:06 +0000 Commit: Mark Johnston CommitDate: 2021-10-09 16:34:06 +0000 timecounter: Let kern.timecounter.stepwarnings be set as a tunable MFC after: 1 week --- sys/kern/kern_tc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c index 81d373b3b1d0..be4142e19d77 100644 --- a/sys/kern/kern_tc.c +++ b/sys/kern/kern_tc.c @@ -121,7 +121,7 @@ static SYSCTL_NODE(_kern_timecounter, OID_AUTO, tc, ""); static int timestepwarnings; -SYSCTL_INT(_kern_timecounter, OID_AUTO, stepwarnings, CTLFLAG_RW, +SYSCTL_INT(_kern_timecounter, OID_AUTO, stepwarnings, CTLFLAG_RWTUN, ×tepwarnings, 0, "Log time steps"); static int timehands_count = 2; From nobody Sat Oct 9 19:32:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2C91D12DEA7D; Sat, 9 Oct 2021 19:32: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 4HRZvB0bLlz4TF3; Sat, 9 Oct 2021 19:32: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 E9B6E20385; Sat, 9 Oct 2021 19:32: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 199JW5XE097483; Sat, 9 Oct 2021 19:32:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199JW55r097482; Sat, 9 Oct 2021 19:32:05 GMT (envelope-from git) Date: Sat, 9 Oct 2021 19:32:05 GMT Message-Id: <202110091932.199JW55r097482@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: 5fb54d2fc845 - main - readlinkat(2): allow O_PATH fd List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 5fb54d2fc845464ea809e6a1a69380693943cf51 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5fb54d2fc845464ea809e6a1a69380693943cf51 commit 5fb54d2fc845464ea809e6a1a69380693943cf51 Author: Konstantin Belousov AuthorDate: 2021-10-09 05:12:05 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-09 19:31:37 +0000 readlinkat(2): allow O_PATH fd PR: 258856 Reported by: ashish Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32390 --- lib/libc/sys/open.2 | 5 +++-- sys/kern/vfs_syscalls.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/libc/sys/open.2 b/lib/libc/sys/open.2 index 5a6f161291f6..da42c238a151 100644 --- a/lib/libc/sys/open.2 +++ b/lib/libc/sys/open.2 @@ -28,7 +28,7 @@ .\" @(#)open.2 8.2 (Berkeley) 11/16/93 .\" $FreeBSD$ .\" -.Dd May 6, 2021 +.Dd October 9, 2021 .Dt OPEN 2 .Os .Sh NAME @@ -327,7 +327,7 @@ and others. The other functionality of the returned file descriptor is limited to the descriptor-level operations. It can be used for -.Bl -tag -width SCM_RIGHTS -offset indent -compact +.Bl -tag -width readlinkat(2) -offset indent -compact .It Xr fcntl 2 but advisory locking is not allowed .It Xr dup 2 @@ -346,6 +346,7 @@ message .It Xr kqueue 2 using for .Dv EVFILT_VNODE +.It Xr readlinkat 2 .El But operations like .Xr read 2 , diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index bd496db50e99..1b355eea7d6a 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -2640,8 +2640,8 @@ kern_readlinkat(struct thread *td, int fd, const char *path, if (count > IOSIZE_MAX) return (EINVAL); - NDINIT_AT(&nd, LOOKUP, NOFOLLOW | LOCKSHARED | LOCKLEAF | AUDITVNODE1, - pathseg, path, fd, td); + NDINIT_AT(&nd, LOOKUP, NOFOLLOW | LOCKSHARED | LOCKLEAF | AUDITVNODE1 | + EMPTYPATH, pathseg, path, fd, td); if ((error = namei(&nd)) != 0) return (error); From nobody Sat Oct 9 21:19:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7F08117EE6ED; Sat, 9 Oct 2021 21:19: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 4HRdH236MKz4jxK; Sat, 9 Oct 2021 21:19: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 4B18D2182F; Sat, 9 Oct 2021 21:19: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 199LJQJm031468; Sat, 9 Oct 2021 21:19:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199LJQoW031467; Sat, 9 Oct 2021 21:19:26 GMT (envelope-from git) Date: Sat, 9 Oct 2021 21:19:26 GMT Message-Id: <202110092119.199LJQoW031467@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Vincenzo Maffione Subject: git: fdbbd118faab - stable/13 - nemtap: lb app: Validate ihl field when hashing packet List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: fdbbd118faab9705bd28475b182ca0ab5585da8e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by vmaffione: URL: https://cgit.FreeBSD.org/src/commit/?id=fdbbd118faab9705bd28475b182ca0ab5585da8e commit fdbbd118faab9705bd28475b182ca0ab5585da8e Author: Vincenzo Maffione AuthorDate: 2021-09-26 13:44:51 +0000 Commit: Vincenzo Maffione CommitDate: 2021-10-09 21:19:20 +0000 nemtap: lb app: Validate ihl field when hashing packet MFC after: 1 week (cherry picked from commit f7cef43aa9a357582a703c75dafa4a44c1b2f28c) --- tools/tools/netmap/pkt_hash.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/tools/netmap/pkt_hash.c b/tools/tools/netmap/pkt_hash.c index 3071935e11ef..eb9704fd2058 100644 --- a/tools/tools/netmap/pkt_hash.c +++ b/tools/tools/netmap/pkt_hash.c @@ -150,7 +150,9 @@ decode_ip_n_hash(const struct ip *iph, uint8_t hash_split, uint8_t seed) { uint32_t rc = 0; - if (hash_split == 2) { + if (iph->ip_hl < 5 || iph->ip_hl * 4 > iph->ip_len) { + rc = 0; + } else if (hash_split == 2) { rc = sym_hash_fn(ntohl(iph->ip_src.s_addr), ntohl(iph->ip_dst.s_addr), ntohs(0xFFFD) + seed, From nobody Sat Oct 9 21:30:08 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1567417F03A3; Sat, 9 Oct 2021 21:30: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 4HRdWP065hz4ltv; Sat, 9 Oct 2021 21:30: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 D7A6521A8A; Sat, 9 Oct 2021 21:30: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 199LU8LN047643; Sat, 9 Oct 2021 21:30:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 199LU8NR047640; Sat, 9 Oct 2021 21:30:08 GMT (envelope-from git) Date: Sat, 9 Oct 2021 21:30:08 GMT Message-Id: <202110092130.199LU8NR047640@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Peek Subject: git: 0f14bcbe3840 - main - vmci: fix panic due to freeing unallocated resources List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0f14bcbe384091c729464cb770372aeb79061070 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mp: URL: https://cgit.FreeBSD.org/src/commit/?id=0f14bcbe384091c729464cb770372aeb79061070 commit 0f14bcbe384091c729464cb770372aeb79061070 Author: Mark Peek AuthorDate: 2021-10-09 21:21:16 +0000 Commit: Mark Peek CommitDate: 2021-10-09 21:21:16 +0000 vmci: fix panic due to freeing unallocated resources Summary: An error mapping PCI resources results in a panic due to unallocated resources being freed up. This change puts the appropriate checks in place to prevent the panic. PR: 252445 Reported by: Marek Zarychta Tested by: marcus MFC after: 1 week Sponsored by: VMware Test Plan: Along with user testing, also simulated error by inserting a ENXIO return in vmci_map_bars(). Reviewed by: marcus Subscribers: imp Differential Revision: https://reviews.freebsd.org/D32016 --- sys/dev/vmware/vmci/vmci.c | 9 ++++--- sys/dev/vmware/vmci/vmci_event.c | 3 +++ sys/dev/vmware/vmci/vmci_kernel_if.c | 48 ++++++++++++++++++++++++++++++++++- sys/dev/vmware/vmci/vmci_kernel_if.h | 2 ++ sys/dev/vmware/vmci/vmci_queue_pair.c | 3 +++ 5 files changed, 61 insertions(+), 4 deletions(-) diff --git a/sys/dev/vmware/vmci/vmci.c b/sys/dev/vmware/vmci/vmci.c index bbf17bbe7e41..8adcb7f532b7 100644 --- a/sys/dev/vmware/vmci/vmci.c +++ b/sys/dev/vmware/vmci/vmci.c @@ -242,8 +242,10 @@ vmci_detach(device_t dev) vmci_components_cleanup(); - taskqueue_drain(taskqueue_thread, &sc->vmci_delayed_work_task); - mtx_destroy(&sc->vmci_delayed_work_lock); + if mtx_initialized(&sc->vmci_spinlock) { + taskqueue_drain(taskqueue_thread, &sc->vmci_delayed_work_task); + mtx_destroy(&sc->vmci_delayed_work_lock); + } if (sc->vmci_res0 != NULL) bus_space_write_4(sc->vmci_iot0, sc->vmci_ioh0, @@ -254,7 +256,8 @@ vmci_detach(device_t dev) vmci_unmap_bars(sc); - mtx_destroy(&sc->vmci_spinlock); + if mtx_initialized(&sc->vmci_spinlock) + mtx_destroy(&sc->vmci_spinlock); pci_disable_busmaster(dev); diff --git a/sys/dev/vmware/vmci/vmci_event.c b/sys/dev/vmware/vmci/vmci_event.c index 7f3bf9039e12..192828cc6f6a 100644 --- a/sys/dev/vmware/vmci/vmci_event.c +++ b/sys/dev/vmware/vmci/vmci_event.c @@ -593,6 +593,9 @@ vmci_event_unregister_subscription(vmci_id sub_id) { struct vmci_subscription *s; + if (!vmci_initialized_lock(&subscriber_lock)) + return NULL; + vmci_grab_lock_bh(&subscriber_lock); s = vmci_event_find(sub_id); if (s != NULL) { diff --git a/sys/dev/vmware/vmci/vmci_kernel_if.c b/sys/dev/vmware/vmci/vmci_kernel_if.c index e845650873b5..de54a8d1ca4f 100644 --- a/sys/dev/vmware/vmci/vmci_kernel_if.c +++ b/sys/dev/vmware/vmci/vmci_kernel_if.c @@ -70,7 +70,8 @@ void vmci_cleanup_lock(vmci_lock *lock) { - mtx_destroy(lock); + if mtx_initialized(lock) + mtx_destroy(lock); } /* @@ -165,6 +166,29 @@ vmci_release_lock_bh(vmci_lock *lock) mtx_unlock(lock); } +/* + *------------------------------------------------------------------------------ + * + * vmci_initialized_lock + * + * Returns whether a lock has been initialized. + * + * Results: + * Return 1 if initialized or 0 if unininitialized. + * + * Side effects: + * None + * + *------------------------------------------------------------------------------ + */ + +int +vmci_initialized_lock(vmci_lock *lock) +{ + + return mtx_initialized(lock); +} + /* *------------------------------------------------------------------------------ * @@ -446,6 +470,28 @@ vmci_mutex_release(vmci_mutex *mutex) mtx_unlock(mutex); } +/* + *------------------------------------------------------------------------------ + * + * vmci_mutex_initialized + * + * Returns whether a mutex has been initialized. + * + * Results: + * Return 1 if initialized or 0 if unininitialized. + * + * Side effects: + * None + * + *------------------------------------------------------------------------------ + */ + +int +vmci_mutex_initialized(vmci_mutex *mutex) +{ + + return mtx_initialized(mutex); +} /* *------------------------------------------------------------------------------ * diff --git a/sys/dev/vmware/vmci/vmci_kernel_if.h b/sys/dev/vmware/vmci/vmci_kernel_if.h index fc23eefe98e0..048e480b0698 100644 --- a/sys/dev/vmware/vmci/vmci_kernel_if.h +++ b/sys/dev/vmware/vmci/vmci_kernel_if.h @@ -48,6 +48,7 @@ void vmci_grab_lock(vmci_lock *lock); void vmci_release_lock(vmci_lock *lock); void vmci_grab_lock_bh(vmci_lock *lock); void vmci_release_lock_bh(vmci_lock *lock); +int vmci_initialized_lock(vmci_lock *lock); void *vmci_alloc_kernel_mem(size_t size, int flags); void vmci_free_kernel_mem(void *ptr, size_t size); @@ -72,6 +73,7 @@ int vmci_mutex_init(vmci_mutex *mutex, char *name); void vmci_mutex_destroy(vmci_mutex *mutex); void vmci_mutex_acquire(vmci_mutex *mutex); void vmci_mutex_release(vmci_mutex *mutex); +int vmci_mutex_initialized(vmci_mutex *mutex); void *vmci_alloc_queue(uint64_t size, uint32_t flags); void vmci_free_queue(void *q, uint64_t size); diff --git a/sys/dev/vmware/vmci/vmci_queue_pair.c b/sys/dev/vmware/vmci/vmci_queue_pair.c index 2ff963c691d0..0e2f83b20c67 100644 --- a/sys/dev/vmware/vmci/vmci_queue_pair.c +++ b/sys/dev/vmware/vmci/vmci_queue_pair.c @@ -338,6 +338,9 @@ vmci_qp_guest_endpoints_exit(void) { struct qp_guest_endpoint *entry; + if (!vmci_mutex_initialized(&qp_guest_endpoints.mutex)) + return; + vmci_mutex_acquire(&qp_guest_endpoints.mutex); while ((entry = From nobody Sun Oct 10 05:51:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8C4C417E710C; Sun, 10 Oct 2021 05:51: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 4HRrdQ3JQ7z4mSs; Sun, 10 Oct 2021 05:51: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 528FF1E9; Sun, 10 Oct 2021 05:51: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 19A5p6x0019270; Sun, 10 Oct 2021 05:51:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A5p63p019269; Sun, 10 Oct 2021 05:51:06 GMT (envelope-from git) Date: Sun, 10 Oct 2021 05:51:06 GMT Message-Id: <202110100551.19A5p63p019269@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 9294a2c7195a - main - ncurses: convert libncursesw.a into a static ldscript List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9294a2c7195ade0055c9d0b2917d929f5b20c035 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=9294a2c7195ade0055c9d0b2917d929f5b20c035 commit 9294a2c7195ade0055c9d0b2917d929f5b20c035 Author: Baptiste Daroussin AuthorDate: 2021-10-10 05:37:26 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-10 05:51:00 +0000 ncurses: convert libncursesw.a into a static ldscript Introduce the notion of static linker scripts to allow libncursesw.a to track its dependency on libtinfow.a this allows the build of older freebsd source tree to happen and make static linking in part with dynamic linking which already provides a ldscript This fixes a bootstrapping FreeBSD 12 or 13 on recent FreeBSD 14 Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D32435 --- lib/ncurses/ncurses/Makefile | 14 ++++++++++++++ share/mk/bsd.lib.mk | 9 ++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile index d2ba1007b54a..5f80def49458 100644 --- a/lib/ncurses/ncurses/Makefile +++ b/lib/ncurses/ncurses/Makefile @@ -169,6 +169,11 @@ SYMLINKS+= libncursesw_p.a ${LIBDIR}/libcurses_p.a LIBADD+= tinfow SHLIB_LDSCRIPT= libncursesw.ldscript +STATIC_LDSCRIPT= libncursesw.aldscript +CLEANFILES+= ${STATIC_LDSCRIPT} + +libncursesw.aldscript: + @${ECHO} "INPUT(-lncursesw_real -ltinfow)" >$@ libncurses.ldscript: @${ECHO} "INPUT(${SHLIB_NAME} AS NEEDED(-ltinfow))" >$@ @@ -180,4 +185,13 @@ lib_gen.c: MKlib_gen.sh ${.OBJDIR:H}/tinfo/curses.h ncurses_dll.h expanded.c: MKexpanded.sh sh ${NCURSES_DIR}/ncurses/tty/MKexpanded.sh "${CC:N${CCACHE_BIN}} -E" ${CFLAGS} >expanded.c +all: ${STATIC_LDSCRIPT} + +install-aldscript: ${STATIC_LDSCRIPT} + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${_INSTALLFLAGS} ${STATIC_LDSCRIPT} ${DESTDIR}${_LIBDI}/lib${LIB}.a + +realinstall: install-aldscript + + .include diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk index 4afe719b8152..10262e6bb80c 100644 --- a/share/mk/bsd.lib.mk +++ b/share/mk/bsd.lib.mk @@ -271,9 +271,12 @@ CLEANFILES+= ${OBJS} ${BCOBJS} ${LLOBJS} ${STATICOBJS} .endif .if defined(LIB) && !empty(LIB) -_LIBS= lib${LIB_PRIVATE}${LIB}.a +.if defined(STATIC_LDSCRIPT) +_STATICLIB_SUFFIX= _real +.endif +_LIBS= lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a -lib${LIB_PRIVATE}${LIB}.a: ${OBJS} ${STATICOBJS} +lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a: ${OBJS} ${STATICOBJS} @${ECHO} building static ${LIB} library @rm -f ${.TARGET} ${AR} ${ARFLAGS} ${.TARGET} ${OBJS} ${STATICOBJS} ${ARADD} @@ -477,7 +480,7 @@ realinstall: _libinstall installpcfiles _libinstall: .if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ - ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}.a ${DESTDIR}${_LIBDIR}/ + ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a ${DESTDIR}${_LIBDIR}/ .endif .if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB) ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ From nobody Sun Oct 10 07:12:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6D95917F2BE3; Sun, 10 Oct 2021 07:12: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 4HRtR62lDWz3Dqp; Sun, 10 Oct 2021 07:12: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 3EAE41785; Sun, 10 Oct 2021 07:12: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 19A7CIjL029491; Sun, 10 Oct 2021 07:12:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A7CIvM029490; Sun, 10 Oct 2021 07:12:18 GMT (envelope-from git) Date: Sun, 10 Oct 2021 07:12:18 GMT Message-Id: <202110100712.19A7CIvM029490@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: b158d4d7a12f - main - rescue: fix after with to a ldscript of libncursesw.a List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b158d4d7a12fad8e9c4509466d5f1ebd15862d9f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=b158d4d7a12fad8e9c4509466d5f1ebd15862d9f commit b158d4d7a12fad8e9c4509466d5f1ebd15862d9f Author: Baptiste Daroussin AuthorDate: 2021-10-10 06:53:41 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-10 06:53:41 +0000 rescue: fix after with to a ldscript of libncursesw.a --- rescue/rescue/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rescue/rescue/Makefile b/rescue/rescue/Makefile index f2aa614f1dfc..42094340e768 100644 --- a/rescue/rescue/Makefile +++ b/rescue/rescue/Makefile @@ -131,7 +131,7 @@ CRUNCH_PROGS_usr.sbin+= zdb # crunchgen does not like C++ programs; this should be fixed someday # CRUNCH_PROGS+= devd -CRUNCH_LIBS+= -l80211 -lalias -lcam -lncursesw -ldevstat -lipsec -llzma +CRUNCH_LIBS+= -l80211 -lalias -lcam -lncursesw_real -ldevstat -lipsec -llzma .if ${MK_ZFS} != "no" CRUNCH_LIBS+= -lavl -lzpool -lzfs_core -lzfs -lnvpair -lpthread -luutil -lumem CRUNCH_LIBS+= -lbe -lzfsbootenv -lzutil -ltpool -lspl -licp_rescue From nobody Sun Oct 10 09:23:56 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 09D6212DE3E4; Sun, 10 Oct 2021 09: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 4HRxM06j00z3MqZ; Sun, 10 Oct 2021 09: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 C5B3C2F44; Sun, 10 Oct 2021 09: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 19A9NumP003030; Sun, 10 Oct 2021 09: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 19A9Nuvf003029; Sun, 10 Oct 2021 09:23:56 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:23:56 GMT Message-Id: <202110100923.19A9Nuvf003029@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 60490b72ba46 - stable/13 - x86: cpufunc: Add rdtscp_aux() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 60490b72ba46b6c9e82be047fa8738379bf81310 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=60490b72ba46b6c9e82be047fa8738379bf81310 commit 60490b72ba46b6c9e82be047fa8738379bf81310 Author: Adam Fenn AuthorDate: 2021-07-26 19:59:55 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:16 +0000 x86: cpufunc: Add rdtscp_aux() (cherry picked from commit 908e277230ef1a80589f85687f5b422b0e863e79) --- sys/amd64/include/cpufunc.h | 9 +++++++++ sys/i386/include/cpufunc.h | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h index 8ef298e1d7d5..49975e826fb9 100644 --- a/sys/amd64/include/cpufunc.h +++ b/sys/amd64/include/cpufunc.h @@ -364,6 +364,15 @@ rdtscp(void) return (low | ((uint64_t)high << 32)); } +static __inline uint64_t +rdtscp_aux(uint32_t *aux) +{ + uint32_t low, high; + + __asm __volatile("rdtscp" : "=a" (low), "=d" (high), "=c" (*aux)); + return (low | ((uint64_t)high << 32)); +} + static __inline uint32_t rdtsc32(void) { diff --git a/sys/i386/include/cpufunc.h b/sys/i386/include/cpufunc.h index 9646590a6a40..7b99978facc3 100644 --- a/sys/i386/include/cpufunc.h +++ b/sys/i386/include/cpufunc.h @@ -403,6 +403,15 @@ rdtscp(void) return (rv); } +static __inline uint64_t +rdtscp_aux(uint32_t *aux) +{ + uint64_t rv; + + __asm __volatile("rdtscp" : "=A" (rv), "=c" (*aux)); + return (rv); +} + static __inline uint32_t rdtsc32(void) { From nobody Sun Oct 10 09:23:57 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5831B12DEB0A; Sun, 10 Oct 2021 09:23: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 4HRxM20yStz3N1s; Sun, 10 Oct 2021 09:23: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 E9BCB3406; Sun, 10 Oct 2021 09: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 19A9Nvpt003054; Sun, 10 Oct 2021 09: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 19A9NvQe003053; Sun, 10 Oct 2021 09:23:57 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:23:57 GMT Message-Id: <202110100923.19A9NvQe003053@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 9ba8ea3f0522 - stable/13 - x86: cpufunc: Add rdtsc_ordered() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 9ba8ea3f05225d0cea3d5d3f656217287c90d3c7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=9ba8ea3f05225d0cea3d5d3f656217287c90d3c7 commit 9ba8ea3f05225d0cea3d5d3f656217287c90d3c7 Author: Adam Fenn AuthorDate: 2021-07-28 17:12:00 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:16 +0000 x86: cpufunc: Add rdtsc_ordered() (cherry picked from commit 652ae7b11485d9f991ea66a56aa79d4dd9cd1103) --- sys/amd64/include/cpufunc.h | 14 ++++++++++++++ sys/i386/include/cpufunc.h | 14 ++++++++++++++ sys/x86/include/x86_var.h | 1 + sys/x86/x86/cpu_machdep.c | 16 ++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h index 49975e826fb9..bca74d8ead67 100644 --- a/sys/amd64/include/cpufunc.h +++ b/sys/amd64/include/cpufunc.h @@ -355,6 +355,20 @@ rdtsc(void) return (low | ((uint64_t)high << 32)); } +static __inline uint64_t +rdtsc_ordered_lfence(void) +{ + lfence(); + return (rdtsc()); +} + +static __inline uint64_t +rdtsc_ordered_mfence(void) +{ + mfence(); + return (rdtsc()); +} + static __inline uint64_t rdtscp(void) { diff --git a/sys/i386/include/cpufunc.h b/sys/i386/include/cpufunc.h index 7b99978facc3..79cdd3004b77 100644 --- a/sys/i386/include/cpufunc.h +++ b/sys/i386/include/cpufunc.h @@ -394,6 +394,20 @@ rdtsc(void) return (rv); } +static __inline uint64_t +rdtsc_ordered_lfence(void) +{ + lfence(); + return (rdtsc()); +} + +static __inline uint64_t +rdtsc_ordered_mfence(void) +{ + mfence(); + return (rdtsc()); +} + static __inline uint64_t rdtscp(void) { diff --git a/sys/x86/include/x86_var.h b/sys/x86/include/x86_var.h index 71f7a7eca564..55227cf9e65a 100644 --- a/sys/x86/include/x86_var.h +++ b/sys/x86/include/x86_var.h @@ -152,6 +152,7 @@ int pti_get_default(void); int user_dbreg_trap(register_t dr6); int minidumpsys(struct dumperinfo *); struct pcb *get_pcb_td(struct thread *td); +uint64_t rdtsc_ordered(void); /* * MSR ops for x86_msr_op() diff --git a/sys/x86/x86/cpu_machdep.c b/sys/x86/x86/cpu_machdep.c index 8ad718372928..518152a59619 100644 --- a/sys/x86/x86/cpu_machdep.c +++ b/sys/x86/x86/cpu_machdep.c @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -88,6 +89,7 @@ __FBSDID("$FreeBSD$"); #include #endif #include +#include #include #include @@ -1504,3 +1506,17 @@ acpi_get_fadt_bootflags(uint16_t *flagsp) return (false); #endif } + +DEFINE_IFUNC(, uint64_t, rdtsc_ordered, (void)) +{ + bool cpu_is_amd = cpu_vendor_id == CPU_VENDOR_AMD || + cpu_vendor_id == CPU_VENDOR_HYGON; + + if ((amd_feature & AMDID_RDTSCP) != 0) + return (rdtscp); + else if ((cpu_feature & CPUID_SSE2) != 0) + return (cpu_is_amd ? rdtsc_ordered_mfence : + rdtsc_ordered_lfence); + else + return (rdtsc); +} From nobody Sun Oct 10 09:23:59 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D083F12DE7DA; Sun, 10 Oct 2021 09:23: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 4HRxM33wRwz3N23; Sun, 10 Oct 2021 09:23: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 2A9F430C4; Sun, 10 Oct 2021 09:23: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 19A9Nxd9003085; Sun, 10 Oct 2021 09:23:59 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9NxOI003084; Sun, 10 Oct 2021 09:23:59 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:23:59 GMT Message-Id: <202110100923.19A9NxOI003084@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 4b580c6bf9b2 - stable/13 - x86: files: Make sys/x86/x86/pvclock.c optional List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 4b580c6bf9b2d42cd33a783b78317553a096a363 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=4b580c6bf9b2d42cd33a783b78317553a096a363 commit 4b580c6bf9b2d42cd33a783b78317553a096a363 Author: Adam Fenn AuthorDate: 2021-08-04 15:10:43 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:16 +0000 x86: files: Make sys/x86/x86/pvclock.c optional (cherry picked from commit 346f5a0c483b7c159efd7c8faf4a18f3e3f77158) --- sys/conf/files.x86 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/conf/files.x86 b/sys/conf/files.x86 index fba4cb1eb863..a74a848756f7 100644 --- a/sys/conf/files.x86 +++ b/sys/conf/files.x86 @@ -341,7 +341,7 @@ x86/x86/x86_mem.c optional mem x86/x86/mp_x86.c optional smp x86/x86/mp_watchdog.c optional mp_watchdog smp x86/x86/nexus.c standard -x86/x86/pvclock.c standard +x86/x86/pvclock.c optional xenhvm x86/x86/stack_machdep.c optional ddb | stack x86/x86/tsc.c standard x86/x86/ucode.c standard From nobody Sun Oct 10 09:24:00 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7460F12DE3FE; Sun, 10 Oct 2021 09:24: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 4HRxM45tg7z3MbS; Sun, 10 Oct 2021 09:24: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 4417F30C5; Sun, 10 Oct 2021 09:24: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 19A9O0Xn003109; Sun, 10 Oct 2021 09:24:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O0sg003108; Sun, 10 Oct 2021 09:24:00 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:00 GMT Message-Id: <202110100924.19A9O0sg003108@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: b2f8b90f6e12 - stable/13 - pvclock: Add 'struct pvclock' API List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: b2f8b90f6e1292e5d0631a9174a6933327006fcf Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b2f8b90f6e1292e5d0631a9174a6933327006fcf commit b2f8b90f6e1292e5d0631a9174a6933327006fcf Author: Adam Fenn AuthorDate: 2021-08-07 20:01:46 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:16 +0000 pvclock: Add 'struct pvclock' API (cherry picked from commit 0b3382b863f3195d88b99f94d5af7fe4a7b9726a) --- sys/x86/include/pvclock.h | 27 ++++++- sys/x86/x86/pvclock.c | 194 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 160 insertions(+), 61 deletions(-) diff --git a/sys/x86/include/pvclock.h b/sys/x86/include/pvclock.h index 402ffed810ca..399017039dd0 100644 --- a/sys/x86/include/pvclock.h +++ b/sys/x86/include/pvclock.h @@ -29,6 +29,9 @@ #ifndef X86_PVCLOCK #define X86_PVCLOCK +#include +#include + struct pvclock_vcpu_time_info { uint32_t version; uint32_t pad0; @@ -43,17 +46,39 @@ struct pvclock_vcpu_time_info { #define PVCLOCK_FLAG_TSC_STABLE 0x01 #define PVCLOCK_FLAG_GUEST_PASUED 0x02 +typedef struct pvclock_wall_clock *pvclock_get_wallclock_t(void *arg); + struct pvclock_wall_clock { uint32_t version; uint32_t sec; uint32_t nsec; }; +struct pvclock { + /* Public; initialized by the caller of 'pvclock_init()': */ + pvclock_get_wallclock_t *get_wallclock; + void *get_wallclock_arg; + struct pvclock_vcpu_time_info *timeinfos; + bool stable_flag_supported; + + /* Private; initialized by the 'pvclock' API: */ + struct timecounter tc; +}; + +/* + * NOTE: 'pvclock_get_timecount()' and 'pvclock_get_wallclock()' are purely + * transitional; they should be removed after 'dev/xen/timer/timer.c' has been + * migrated to the 'struct pvclock' API. + */ void pvclock_resume(void); -uint64_t pvclock_get_last_cycles(void); uint64_t pvclock_tsc_freq(struct pvclock_vcpu_time_info *ti); uint64_t pvclock_get_timecount(struct pvclock_vcpu_time_info *ti); void pvclock_get_wallclock(struct pvclock_wall_clock *wc, struct timespec *ts); +void pvclock_init(struct pvclock *pvc, device_t dev, + const char *tc_name, int tc_quality, u_int tc_flags); +void pvclock_gettime(struct pvclock *pvc, struct timespec *ts); +int pvclock_destroy(struct pvclock *pvc); + #endif diff --git a/sys/x86/x86/pvclock.c b/sys/x86/x86/pvclock.c index c1e6f83b33bf..e0ad65d906b8 100644 --- a/sys/x86/x86/pvclock.c +++ b/sys/x86/x86/pvclock.c @@ -31,31 +31,34 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include #include -#include -#include #include +#include #include /* - * Last time; this guarantees a monotonically increasing clock for when - * a stable TSC is not provided. + * Last system time. This is used to guarantee a monotonically non-decreasing + * clock for the kernel codepath and approximate the same for the vDSO codepath. + * In theory, this should be unnecessary absent hypervisor bug(s) and/or what + * should be rare cases where TSC jitter may still be visible despite the + * hypervisor's best efforts. */ -static volatile uint64_t pvclock_last_cycles; +static volatile uint64_t pvclock_last_systime; + +static uint64_t pvclock_getsystime(struct pvclock *pvc); +static void pvclock_read_time_info( + struct pvclock_vcpu_time_info *ti, uint64_t *ns, uint8_t *flags); +static void pvclock_read_wall_clock(struct pvclock_wall_clock *wc, + struct timespec *ts); +static u_int pvclock_tc_get_timecount(struct timecounter *tc); void pvclock_resume(void) { - - atomic_store_rel_64(&pvclock_last_cycles, 0); -} - -uint64_t -pvclock_get_last_cycles(void) -{ - - return (atomic_load_acq_64(&pvclock_last_cycles)); + atomic_store_rel_64(&pvclock_last_systime, 0); } uint64_t @@ -64,12 +67,10 @@ pvclock_tsc_freq(struct pvclock_vcpu_time_info *ti) uint64_t freq; freq = (1000000000ULL << 32) / ti->tsc_to_system_mul; - if (ti->tsc_shift < 0) freq <<= -ti->tsc_shift; else freq >>= ti->tsc_shift; - return (freq); } @@ -86,7 +87,6 @@ pvclock_scale_delta(uint64_t delta, uint32_t mul_frac, int shift) delta >>= -shift; else delta <<= shift; - #if defined(__i386__) { uint32_t tmp1, tmp2; @@ -122,82 +122,156 @@ pvclock_scale_delta(uint64_t delta, uint32_t mul_frac, int shift) #else #error "pvclock: unsupported x86 architecture?" #endif - return (product); } -static uint64_t -pvclock_get_nsec_offset(struct pvclock_vcpu_time_info *ti) -{ - uint64_t delta; - - delta = rdtsc() - ti->tsc_timestamp; - - return (pvclock_scale_delta(delta, ti->tsc_to_system_mul, - ti->tsc_shift)); -} - static void pvclock_read_time_info(struct pvclock_vcpu_time_info *ti, - uint64_t *cycles, uint8_t *flags) + uint64_t *ns, uint8_t *flags) { + uint64_t delta; uint32_t version; do { - version = ti->version; - rmb(); - *cycles = ti->system_time + pvclock_get_nsec_offset(ti); + version = atomic_load_acq_32(&ti->version); + delta = rdtsc_ordered() - ti->tsc_timestamp; + *ns = ti->system_time + pvclock_scale_delta(delta, + ti->tsc_to_system_mul, ti->tsc_shift); *flags = ti->flags; - rmb(); + atomic_thread_fence_acq(); } while ((ti->version & 1) != 0 || ti->version != version); } static void -pvclock_read_wall_clock(struct pvclock_wall_clock *wc, uint32_t *sec, - uint32_t *nsec) +pvclock_read_wall_clock(struct pvclock_wall_clock *wc, struct timespec *ts) { uint32_t version; do { - version = wc->version; - rmb(); - *sec = wc->sec; - *nsec = wc->nsec; - rmb(); + version = atomic_load_acq_32(&wc->version); + ts->tv_sec = wc->sec; + ts->tv_nsec = wc->nsec; + atomic_thread_fence_acq(); } while ((wc->version & 1) != 0 || wc->version != version); } +static uint64_t +pvclock_getsystime(struct pvclock *pvc) +{ + uint64_t now, last, ret; + uint8_t flags; + + critical_enter(); + pvclock_read_time_info(&pvc->timeinfos[curcpu], &now, &flags); + ret = now; + if ((flags & PVCLOCK_FLAG_TSC_STABLE) == 0) { + last = atomic_load_acq_64(&pvclock_last_systime); + do { + if (last > now) { + ret = last; + break; + } + } while (!atomic_fcmpset_rel_64(&pvclock_last_systime, &last, + now)); + } + critical_exit(); + return (ret); +} + +/* + * NOTE: Transitional-only; this should be removed after 'dev/xen/timer/timer.c' + * has been migrated to the 'struct pvclock' API. + */ uint64_t pvclock_get_timecount(struct pvclock_vcpu_time_info *ti) { - uint64_t now, last; + uint64_t now, last, ret; uint8_t flags; pvclock_read_time_info(ti, &now, &flags); + ret = now; + if ((flags & PVCLOCK_FLAG_TSC_STABLE) == 0) { + last = atomic_load_acq_64(&pvclock_last_systime); + do { + if (last > now) { + ret = last; + break; + } + } while (!atomic_fcmpset_rel_64(&pvclock_last_systime, &last, + now)); + } + return (ret); +} - if (flags & PVCLOCK_FLAG_TSC_STABLE) - return (now); +/* + * NOTE: Transitional-only; this should be removed after 'dev/xen/timer/timer.c' + * has been migrated to the 'struct pvclock' API. + */ +void +pvclock_get_wallclock(struct pvclock_wall_clock *wc, struct timespec *ts) +{ + pvclock_read_wall_clock(wc, ts); +} - /* - * Enforce a monotonically increasing clock time across all VCPUs. - * If our time is too old, use the last time and return. Otherwise, - * try to update the last time. - */ - do { - last = atomic_load_acq_64(&pvclock_last_cycles); - if (last > now) - return (last); - } while (!atomic_cmpset_64(&pvclock_last_cycles, last, now)); +static u_int +pvclock_tc_get_timecount(struct timecounter *tc) +{ + struct pvclock *pvc = tc->tc_priv; - return (now); + return (pvclock_getsystime(pvc) & UINT_MAX); } void -pvclock_get_wallclock(struct pvclock_wall_clock *wc, struct timespec *ts) +pvclock_gettime(struct pvclock *pvc, struct timespec *ts) { - uint32_t sec, nsec; + struct timespec system_ts; + uint64_t system_ns; + + pvclock_read_wall_clock(pvc->get_wallclock(pvc->get_wallclock_arg), ts); + system_ns = pvclock_getsystime(pvc); + system_ts.tv_sec = system_ns / 1000000000ULL; + system_ts.tv_nsec = system_ns % 1000000000ULL; + timespecadd(ts, &system_ts, ts); +} - pvclock_read_wall_clock(wc, &sec, &nsec); - ts->tv_sec = sec; - ts->tv_nsec = nsec; +void +pvclock_init(struct pvclock *pvc, device_t dev, const char *tc_name, + int tc_quality, u_int tc_flags) +{ + KASSERT(((uintptr_t)pvc->timeinfos & PAGE_MASK) == 0, + ("Specified time info page(s) address is not page-aligned.")); + + /* Set up timecounter and timecounter-supporting members: */ + pvc->tc.tc_get_timecount = pvclock_tc_get_timecount; + pvc->tc.tc_poll_pps = NULL; + pvc->tc.tc_counter_mask = ~0U; + pvc->tc.tc_frequency = 1000000000ULL; + pvc->tc.tc_name = tc_name; + pvc->tc.tc_quality = tc_quality; + pvc->tc.tc_flags = tc_flags; + pvc->tc.tc_priv = pvc; + pvc->tc.tc_fill_vdso_timehands = NULL; +#ifdef COMPAT_FREEBSD32 + pvc->tc.tc_fill_vdso_timehands32 = NULL; +#endif + + /* Register timecounter: */ + tc_init(&pvc->tc); + + /* + * Register wallclock: + * The RTC registration API expects a resolution in microseconds; + * pvclock's 1ns resolution is rounded up to 1us. + */ + clock_register(dev, 1); +} + +int +pvclock_destroy(struct pvclock *pvc) +{ + /* + * Not currently possible since there is no teardown counterpart of + * 'tc_init()'. + */ + return (EBUSY); } From nobody Sun Oct 10 09:24:01 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4F62212DE7EA; Sun, 10 Oct 2021 09:24: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 4HRxM54cTNz3Mqs; Sun, 10 Oct 2021 09:24: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 5C8122D57; Sun, 10 Oct 2021 09:24: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 19A9O1M2003133; Sun, 10 Oct 2021 09:24:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O1h5003132; Sun, 10 Oct 2021 09:24:01 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:01 GMT Message-Id: <202110100924.19A9O1h5003132@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 0977ab30c9c9 - stable/13 - kvm_clock: KVM paravirtual clock support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0977ab30c9c90a09f1be2a32c9197f51384ae34a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0977ab30c9c90a09f1be2a32c9197f51384ae34a commit 0977ab30c9c90a09f1be2a32c9197f51384ae34a Author: Adam Fenn AuthorDate: 2021-08-04 15:42:48 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:16 +0000 kvm_clock: KVM paravirtual clock support (cherry picked from commit 6c69c6bb4c7ffde48b130df707799d4eca21ca9f) --- sys/amd64/conf/GENERIC | 3 + sys/amd64/conf/MINIMAL | 3 + sys/amd64/conf/NOTES | 3 + sys/conf/files.x86 | 3 +- sys/dev/kvm_clock/kvm_clock.c | 240 ++++++++++++++++++++++++++++++++++++++++++ sys/i386/conf/GENERIC | 3 + sys/i386/conf/MINIMAL | 3 + sys/i386/conf/NOTES | 3 + sys/x86/include/kvm.h | 80 ++++++++++++++ 9 files changed, 340 insertions(+), 1 deletion(-) diff --git a/sys/amd64/conf/GENERIC b/sys/amd64/conf/GENERIC index e1a4560ab7f5..82d143c18f51 100644 --- a/sys/amd64/conf/GENERIC +++ b/sys/amd64/conf/GENERIC @@ -362,6 +362,9 @@ device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device +# Linux KVM paravirtualization support +device kvm_clock # KVM paravirtual clock driver + # HyperV drivers and enhancement support device hyperv # HyperV drivers diff --git a/sys/amd64/conf/MINIMAL b/sys/amd64/conf/MINIMAL index 945cc653e0fc..f6dd2047f2ce 100644 --- a/sys/amd64/conf/MINIMAL +++ b/sys/amd64/conf/MINIMAL @@ -131,6 +131,9 @@ device ether # Ethernet support # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter +# Linux KVM paravirtualization support +device kvm_clock # KVM paravirtual clock driver + # Xen HVM Guest Optimizations # NOTE: XENHVM depends on xenpci. They must be added or removed together. options XENHVM # Xen HVM kernel infrastructure diff --git a/sys/amd64/conf/NOTES b/sys/amd64/conf/NOTES index 714b20101703..e24b4c988056 100644 --- a/sys/amd64/conf/NOTES +++ b/sys/amd64/conf/NOTES @@ -502,6 +502,9 @@ device virtio_balloon # VirtIO Memory Balloon device device virtio_random # VirtIO Entropy device device virtio_console # VirtIO Console device +# Linux KVM paravirtualization support +device kvm_clock # KVM paravirtual clock driver + # Microsoft Hyper-V enhancement support device hyperv # HyperV drivers diff --git a/sys/conf/files.x86 b/sys/conf/files.x86 index a74a848756f7..4ff888e8910c 100644 --- a/sys/conf/files.x86 +++ b/sys/conf/files.x86 @@ -286,6 +286,7 @@ dev/isci/scil/scif_sas_task_request_state_handlers.c optional isci dev/isci/scil/scif_sas_task_request_states.c optional isci dev/isci/scil/scif_sas_timer.c optional isci dev/itwd/itwd.c optional itwd +dev/kvm_clock/kvm_clock.c optional kvm_clock dev/qat/qat.c optional qat dev/qat/qat_ae.c optional qat dev/qat/qat_c2xxx.c optional qat @@ -341,7 +342,7 @@ x86/x86/x86_mem.c optional mem x86/x86/mp_x86.c optional smp x86/x86/mp_watchdog.c optional mp_watchdog smp x86/x86/nexus.c standard -x86/x86/pvclock.c optional xenhvm +x86/x86/pvclock.c optional kvm_clock | xenhvm x86/x86/stack_machdep.c optional ddb | stack x86/x86/tsc.c standard x86/x86/ucode.c standard diff --git a/sys/dev/kvm_clock/kvm_clock.c b/sys/dev/kvm_clock/kvm_clock.c new file mode 100644 index 000000000000..1a76432e417d --- /dev/null +++ b/sys/dev/kvm_clock/kvm_clock.c @@ -0,0 +1,240 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2014 Bryan Venteicher + * Copyright (c) 2021 Mathieu Chouquet-Stringer + * Copyright (c) 2021 Juniper Networks, Inc. + * Copyright (c) 2021 Klara, 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 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. + */ + +/* + * Linux KVM paravirtual clock support + * + * References: + * - [1] https://www.kernel.org/doc/html/latest/virt/kvm/cpuid.html + * - [2] https://www.kernel.org/doc/html/latest/virt/kvm/msr.html + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clock_if.h" + +#define KVM_CLOCK_DEVNAME "kvmclock" +/* + * Note: Chosen to be (1) above HPET's value (always 950), (2) above the TSC's + * default value of 800, and (3) below the TSC's value when it supports the + * "Invariant TSC" feature and is believed to be synchronized across all CPUs. + */ +#define KVM_CLOCK_TC_QUALITY 975 + +struct kvm_clock_softc { + struct pvclock pvc; + struct pvclock_wall_clock wc; + struct pvclock_vcpu_time_info *timeinfos; + u_int msr_tc; + u_int msr_wc; +}; + +static devclass_t kvm_clock_devclass; + +static struct pvclock_wall_clock *kvm_clock_get_wallclock(void *arg); +static void kvm_clock_system_time_enable(struct kvm_clock_softc *sc); +static void kvm_clock_system_time_enable_pcpu(void *arg); + +static struct pvclock_wall_clock * +kvm_clock_get_wallclock(void *arg) +{ + struct kvm_clock_softc *sc = arg; + + wrmsr(sc->msr_wc, vtophys(&sc->wc)); + return (&sc->wc); +} + +static void +kvm_clock_system_time_enable(struct kvm_clock_softc *sc) +{ + smp_rendezvous(NULL, kvm_clock_system_time_enable_pcpu, NULL, sc); +} + +static void +kvm_clock_system_time_enable_pcpu(void *arg) +{ + struct kvm_clock_softc *sc = arg; + + /* + * See [2]; the lsb of this MSR is the system time enable bit. + */ + wrmsr(sc->msr_tc, vtophys(&(sc->timeinfos)[curcpu]) | 1); +} + +static void +kvm_clock_identify(driver_t *driver, device_t parent) +{ + u_int regs[4]; + + kvm_cpuid_get_features(regs); + if ((regs[0] & + (KVM_FEATURE_CLOCKSOURCE2 | KVM_FEATURE_CLOCKSOURCE)) == 0) + return; + if (device_find_child(parent, KVM_CLOCK_DEVNAME, -1)) + return; + BUS_ADD_CHILD(parent, 0, KVM_CLOCK_DEVNAME, 0); +} + +static int +kvm_clock_probe(device_t dev) +{ + device_set_desc(dev, "KVM paravirtual clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +kvm_clock_attach(device_t dev) +{ + u_int regs[4]; + struct kvm_clock_softc *sc = device_get_softc(dev); + bool stable_flag_supported; + + /* Process KVM "features" CPUID leaf content: */ + kvm_cpuid_get_features(regs); + if ((regs[0] & KVM_FEATURE_CLOCKSOURCE2) != 0) { + sc->msr_tc = KVM_MSR_SYSTEM_TIME_NEW; + sc->msr_wc = KVM_MSR_WALL_CLOCK_NEW; + } else { + KASSERT((regs[0] & KVM_FEATURE_CLOCKSOURCE) != 0, + ("Clocksource feature flags disappeared since " + "kvm_clock_identify: regs[0] %#0x.", regs[0])); + sc->msr_tc = KVM_MSR_SYSTEM_TIME; + sc->msr_wc = KVM_MSR_WALL_CLOCK; + } + stable_flag_supported = + (regs[0] & KVM_FEATURE_CLOCKSOURCE_STABLE_BIT) != 0; + + /* Set up 'struct pvclock_vcpu_time_info' page(s): */ + sc->timeinfos = (struct pvclock_vcpu_time_info *)kmem_malloc(mp_ncpus * + sizeof(struct pvclock_vcpu_time_info), M_WAITOK | M_ZERO); + kvm_clock_system_time_enable(sc); + + /* + * Init pvclock; register KVM clock wall clock, register KVM clock + * timecounter, and set up the requisite infrastructure for vDSO access + * to this timecounter. + * Regarding 'tc_flags': Since the KVM MSR documentation does not + * specifically discuss suspend/resume scenarios, conservatively + * leave 'TC_FLAGS_SUSPEND_SAFE' cleared and assume that the system + * time must be re-inited in such cases. + */ + sc->pvc.get_wallclock = kvm_clock_get_wallclock; + sc->pvc.get_wallclock_arg = sc; + sc->pvc.timeinfos = sc->timeinfos; + sc->pvc.stable_flag_supported = stable_flag_supported; + pvclock_init(&sc->pvc, dev, KVM_CLOCK_DEVNAME, KVM_CLOCK_TC_QUALITY, 0); + return (0); +} + +static int +kvm_clock_detach(device_t dev) +{ + struct kvm_clock_softc *sc = device_get_softc(dev); + + return (pvclock_destroy(&sc->pvc)); +} + +static int +kvm_clock_suspend(device_t dev) +{ + return (0); +} + +static int +kvm_clock_resume(device_t dev) +{ + /* + * See note in 'kvm_clock_attach()' regarding 'TC_FLAGS_SUSPEND_SAFE'; + * conservatively assume that the system time must be re-inited in + * suspend/resume scenarios. + */ + kvm_clock_system_time_enable(device_get_softc(dev)); + pvclock_resume(); + inittodr(time_second); + return (0); +} + +static int +kvm_clock_gettime(device_t dev, struct timespec *ts) +{ + struct kvm_clock_softc *sc = device_get_softc(dev); + + pvclock_gettime(&sc->pvc, ts); + return (0); +} + +static int +kvm_clock_settime(device_t dev, struct timespec *ts) +{ + /* + * Even though it is not possible to set the KVM clock's wall clock, to + * avoid the possibility of periodic benign error messages from + * 'settime_task_func()', report success rather than, e.g., 'ENODEV'. + */ + return (0); +} + +static device_method_t kvm_clock_methods[] = { + DEVMETHOD(device_identify, kvm_clock_identify), + DEVMETHOD(device_probe, kvm_clock_probe), + DEVMETHOD(device_attach, kvm_clock_attach), + DEVMETHOD(device_detach, kvm_clock_detach), + DEVMETHOD(device_suspend, kvm_clock_suspend), + DEVMETHOD(device_resume, kvm_clock_resume), + /* clock interface */ + DEVMETHOD(clock_gettime, kvm_clock_gettime), + DEVMETHOD(clock_settime, kvm_clock_settime), + + DEVMETHOD_END +}; + +static driver_t kvm_clock_driver = { + KVM_CLOCK_DEVNAME, + kvm_clock_methods, + sizeof(struct kvm_clock_softc), +}; + +DRIVER_MODULE(kvm_clock, nexus, kvm_clock_driver, kvm_clock_devclass, 0, 0); diff --git a/sys/i386/conf/GENERIC b/sys/i386/conf/GENERIC index a60f031de0bb..ed9865cc7c55 100644 --- a/sys/i386/conf/GENERIC +++ b/sys/i386/conf/GENERIC @@ -328,6 +328,9 @@ device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device +# Linux KVM paravirtualization support +device kvm_clock # KVM paravirtual clock driver + # HyperV drivers and enhancement support # NOTE: HYPERV depends on hyperv. They must be added or removed together. options HYPERV # Kernel support for HyperV drivers diff --git a/sys/i386/conf/MINIMAL b/sys/i386/conf/MINIMAL index 9ca3ed408f9c..17b8444e35d2 100644 --- a/sys/i386/conf/MINIMAL +++ b/sys/i386/conf/MINIMAL @@ -134,6 +134,9 @@ device gif # IPv6 and IPv4 tunneling # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter +# Linux KVM paravirtualization support +device kvm_clock # KVM paravirtual clock driver + # Xen HVM Guest Optimizations # NOTE: XENHVM depends on xenpci. They must be added or removed together. options XENHVM # Xen HVM kernel infrastructure diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES index c6a1ca7c4255..0cbac313bf6f 100644 --- a/sys/i386/conf/NOTES +++ b/sys/i386/conf/NOTES @@ -729,6 +729,9 @@ device virtio_balloon # VirtIO Memory Balloon device device virtio_random # VirtIO Entropy device device virtio_console # VirtIO Console device +# Linux KVM paravirtualization support +device kvm_clock # KVM paravirtual clock driver + options HYPERV device hyperv # HyperV drivers diff --git a/sys/x86/include/kvm.h b/sys/x86/include/kvm.h new file mode 100644 index 000000000000..beec6447d7d6 --- /dev/null +++ b/sys/x86/include/kvm.h @@ -0,0 +1,80 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2014 Bryan Venteicher + * Copyright (c) 2021 Mathieu Chouquet-Stringer + * Copyright (c) 2021 Juniper Networks, Inc. + * Copyright (c) 2021 Klara, 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 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. + * + * $FreeBSD$ + */ + +/* + * Linux KVM paravirtualization: common definitions + * + * References: + * - [1] https://www.kernel.org/doc/html/latest/virt/kvm/cpuid.html + * - [2] https://www.kernel.org/doc/html/latest/virt/kvm/msr.html + */ + +#ifndef _X86_KVM_H_ +#define _X86_KVM_H_ + +#include +#include + +#include + +#define KVM_CPUID_SIGNATURE 0x40000000 +#define KVM_CPUID_FEATURES_LEAF 0x40000001 + +#define KVM_FEATURE_CLOCKSOURCE 0x00000001 +#define KVM_FEATURE_CLOCKSOURCE2 0x00000008 +#define KVM_FEATURE_CLOCKSOURCE_STABLE_BIT 0x01000000 + +/* Deprecated: for the CLOCKSOURCE feature. */ +#define KVM_MSR_WALL_CLOCK 0x11 +#define KVM_MSR_SYSTEM_TIME 0x12 + +#define KVM_MSR_WALL_CLOCK_NEW 0x4b564d00 +#define KVM_MSR_SYSTEM_TIME_NEW 0x4b564d01 + +static inline bool +kvm_cpuid_features_leaf_supported(void) +{ + return (vm_guest == VM_GUEST_KVM && + KVM_CPUID_FEATURES_LEAF > hv_base && + KVM_CPUID_FEATURES_LEAF <= hv_high); +} + +static inline void +kvm_cpuid_get_features(u_int *regs) +{ + if (!kvm_cpuid_features_leaf_supported()) + regs[0] = regs[1] = regs[2] = regs[3] = 0; + else + do_cpuid(KVM_CPUID_FEATURES_LEAF, regs); +} + +#endif /* !_X86_KVM_H_ */ From nobody Sun Oct 10 09:24:02 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7DE4F12DE776; Sun, 10 Oct 2021 09:24: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 4HRxM67450z3MyY; Sun, 10 Oct 2021 09:24: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 88C013216; Sun, 10 Oct 2021 09:24: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 19A9O2VA003157; Sun, 10 Oct 2021 09:24:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O2sF003156; Sun, 10 Oct 2021 09:24:02 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:02 GMT Message-Id: <202110100924.19A9O2sF003156@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 0c301b963da2 - stable/13 - pvclock: Add vDSO support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0c301b963da2085b0068a650efa3f29cf83b4d3e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0c301b963da2085b0068a650efa3f29cf83b4d3e commit 0c301b963da2085b0068a650efa3f29cf83b4d3e Author: Adam Fenn AuthorDate: 2021-08-07 20:10:04 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 pvclock: Add vDSO support (cherry picked from commit d4b2d3035a23d5dc468d41151487a8299bf45cdc) --- sys/dev/acpica/acpi_hpet.c | 4 + sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c | 2 + sys/x86/include/pvclock.h | 62 +++++++++++ sys/x86/include/vdso.h | 5 +- sys/x86/x86/pvclock.c | 165 +++++++++++++++++++--------- sys/x86/x86/tsc.c | 4 + 6 files changed, 188 insertions(+), 54 deletions(-) diff --git a/sys/dev/acpica/acpi_hpet.c b/sys/dev/acpica/acpi_hpet.c index 9f92521437fd..0f0a16f336f2 100644 --- a/sys/dev/acpica/acpi_hpet.c +++ b/sys/dev/acpica/acpi_hpet.c @@ -156,6 +156,8 @@ hpet_vdso_timehands(struct vdso_timehands *vdso_th, struct timecounter *tc) vdso_th->th_algo = VDSO_TH_ALGO_X86_HPET; vdso_th->th_x86_shift = 0; vdso_th->th_x86_hpet_idx = device_get_unit(sc->dev); + vdso_th->th_x86_pvc_last_systime = 0; + vdso_th->th_x86_pvc_stable_mask = 0; bzero(vdso_th->th_res, sizeof(vdso_th->th_res)); return (sc->mmap_allow != 0); } @@ -171,6 +173,8 @@ hpet_vdso_timehands32(struct vdso_timehands32 *vdso_th32, vdso_th32->th_algo = VDSO_TH_ALGO_X86_HPET; vdso_th32->th_x86_shift = 0; vdso_th32->th_x86_hpet_idx = device_get_unit(sc->dev); + vdso_th32->th_x86_pvc_last_systime = 0; + vdso_th32->th_x86_pvc_stable_mask = 0; bzero(vdso_th32->th_res, sizeof(vdso_th32->th_res)); return (sc->mmap_allow != 0); } diff --git a/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c b/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c index c08098138805..11d549dc18d2 100644 --- a/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c +++ b/sys/dev/hyperv/vmbus/amd64/hyperv_machdep.c @@ -128,6 +128,8 @@ hyperv_tsc_vdso_timehands(struct vdso_timehands *vdso_th, vdso_th->th_algo = VDSO_TH_ALGO_X86_HVTSC; vdso_th->th_x86_shift = 0; vdso_th->th_x86_hpet_idx = 0; + vdso_th->th_x86_pvc_last_systime = 0; + vdso_th->th_x86_pvc_stable_mask = 0; bzero(vdso_th->th_res, sizeof(vdso_th->th_res)); return (1); } diff --git a/sys/x86/include/pvclock.h b/sys/x86/include/pvclock.h index 399017039dd0..023acdb80d9c 100644 --- a/sys/x86/include/pvclock.h +++ b/sys/x86/include/pvclock.h @@ -30,7 +30,12 @@ #define X86_PVCLOCK #include + +#ifdef _KERNEL #include +#endif /* _KERNEL */ + +#define PVCLOCK_CDEVNAME "pvclock" struct pvclock_vcpu_time_info { uint32_t version; @@ -46,6 +51,59 @@ struct pvclock_vcpu_time_info { #define PVCLOCK_FLAG_TSC_STABLE 0x01 #define PVCLOCK_FLAG_GUEST_PASUED 0x02 +/* + * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, + * yielding a 64-bit result. + */ +static inline uint64_t +pvclock_scale_delta(uint64_t delta, uint32_t mul_frac, int shift) +{ + uint64_t product; + + if (shift < 0) + delta >>= -shift; + else + delta <<= shift; +#if defined(__i386__) + { + uint32_t tmp1, tmp2; + + /** + * For i386, the formula looks like: + * + * lower = (mul_frac * (delta & UINT_MAX)) >> 32 + * upper = mul_frac * (delta >> 32) + * product = lower + upper + */ + __asm__ ( + "mul %5 ; " + "mov %4,%%eax ; " + "mov %%edx,%4 ; " + "mul %5 ; " + "xor %5,%5 ; " + "add %4,%%eax ; " + "adc %5,%%edx ; " + : "=A" (product), "=r" (tmp1), "=r" (tmp2) + : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), + "2" (mul_frac) ); + } +#elif defined(__amd64__) + { + unsigned long tmp; + + __asm__ ( + "mulq %[mul_frac] ; shrd $32, %[hi], %[lo]" + : [lo]"=a" (product), [hi]"=d" (tmp) + : "0" (delta), [mul_frac]"rm"((uint64_t)mul_frac)); + } +#else +#error "pvclock: unsupported x86 architecture?" +#endif + return (product); +} + +#ifdef _KERNEL + typedef struct pvclock_wall_clock *pvclock_get_wallclock_t(void *arg); struct pvclock_wall_clock { @@ -62,7 +120,9 @@ struct pvclock { bool stable_flag_supported; /* Private; initialized by the 'pvclock' API: */ + bool vdso_force_unstable; struct timecounter tc; + struct cdev *cdev; }; /* @@ -81,4 +141,6 @@ void pvclock_init(struct pvclock *pvc, device_t dev, void pvclock_gettime(struct pvclock *pvc, struct timespec *ts); int pvclock_destroy(struct pvclock *pvc); +#endif /* _KERNEL */ + #endif diff --git a/sys/x86/include/vdso.h b/sys/x86/include/vdso.h index 97972c660dde..ace63cbe9f62 100644 --- a/sys/x86/include/vdso.h +++ b/sys/x86/include/vdso.h @@ -37,11 +37,14 @@ #define VDSO_TIMEHANDS_MD \ uint32_t th_x86_shift; \ uint32_t th_x86_hpet_idx; \ - uint32_t th_res[6]; + uint64_t th_x86_pvc_last_systime;\ + uint8_t th_x86_pvc_stable_mask; \ + uint8_t th_res[15]; #define VDSO_TH_ALGO_X86_TSC VDSO_TH_ALGO_1 #define VDSO_TH_ALGO_X86_HPET VDSO_TH_ALGO_2 #define VDSO_TH_ALGO_X86_HVTSC VDSO_TH_ALGO_3 /* Hyper-V ref. TSC */ +#define VDSO_TH_ALGO_X86_PVCLK VDSO_TH_ALGO_4 /* KVM/XEN paravirtual clock */ #ifdef _KERNEL #ifdef COMPAT_FREEBSD32 diff --git a/sys/x86/x86/pvclock.c b/sys/x86/x86/pvclock.c index e0ad65d906b8..cc2377bdbcf0 100644 --- a/sys/x86/x86/pvclock.c +++ b/sys/x86/x86/pvclock.c @@ -31,11 +31,22 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include +#include +#include #include +#include #include +#include +#include +#include + +#include +#include #include +#include #include #include @@ -54,6 +65,22 @@ static void pvclock_read_time_info( static void pvclock_read_wall_clock(struct pvclock_wall_clock *wc, struct timespec *ts); static u_int pvclock_tc_get_timecount(struct timecounter *tc); +static uint32_t pvclock_tc_vdso_timehands( + struct vdso_timehands *vdso_th, struct timecounter *tc); +#ifdef COMPAT_FREEBSD32 +static uint32_t pvclock_tc_vdso_timehands32( + struct vdso_timehands32 *vdso_th, struct timecounter *tc); +#endif + +static d_open_t pvclock_cdev_open; +static d_mmap_t pvclock_cdev_mmap; + +static struct cdevsw pvclock_cdev_cdevsw = { + .d_version = D_VERSION, + .d_name = PVCLOCK_CDEVNAME, + .d_open = pvclock_cdev_open, + .d_mmap = pvclock_cdev_mmap, +}; void pvclock_resume(void) @@ -74,57 +101,6 @@ pvclock_tsc_freq(struct pvclock_vcpu_time_info *ti) return (freq); } -/* - * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, - * yielding a 64-bit result. - */ -static inline uint64_t -pvclock_scale_delta(uint64_t delta, uint32_t mul_frac, int shift) -{ - uint64_t product; - - if (shift < 0) - delta >>= -shift; - else - delta <<= shift; -#if defined(__i386__) - { - uint32_t tmp1, tmp2; - - /** - * For i386, the formula looks like: - * - * lower = (mul_frac * (delta & UINT_MAX)) >> 32 - * upper = mul_frac * (delta >> 32) - * product = lower + upper - */ - __asm__ ( - "mul %5 ; " - "mov %4,%%eax ; " - "mov %%edx,%4 ; " - "mul %5 ; " - "xor %5,%5 ; " - "add %4,%%eax ; " - "adc %5,%%edx ; " - : "=A" (product), "=r" (tmp1), "=r" (tmp2) - : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), - "2" (mul_frac) ); - } -#elif defined(__amd64__) - { - unsigned long tmp; - - __asm__ ( - "mulq %[mul_frac] ; shrd $32, %[hi], %[lo]" - : [lo]"=a" (product), [hi]"=d" (tmp) - : "0" (delta), [mul_frac]"rm"((uint64_t)mul_frac)); - } -#else -#error "pvclock: unsupported x86 architecture?" -#endif - return (product); -} - static void pvclock_read_time_info(struct pvclock_vcpu_time_info *ti, uint64_t *ns, uint8_t *flags) @@ -213,6 +189,27 @@ pvclock_get_wallclock(struct pvclock_wall_clock *wc, struct timespec *ts) pvclock_read_wall_clock(wc, ts); } +static int +pvclock_cdev_open(struct cdev *dev, int oflags, int devtype, struct thread *td) +{ + if (oflags & FWRITE) + return (EPERM); + return (0); +} + +static int +pvclock_cdev_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr, + int nprot, vm_memattr_t *memattr) +{ + if (offset >= mp_ncpus * sizeof(struct pvclock_vcpu_time_info)) + return (EINVAL); + if (PROT_EXTRACT(nprot) != PROT_READ) + return (EACCES); + *paddr = vtophys((uintptr_t)dev->si_drv1 + offset); + *memattr = VM_MEMATTR_DEFAULT; + return (0); +} + static u_int pvclock_tc_get_timecount(struct timecounter *tc) { @@ -221,6 +218,42 @@ pvclock_tc_get_timecount(struct timecounter *tc) return (pvclock_getsystime(pvc) & UINT_MAX); } +static uint32_t +pvclock_tc_vdso_timehands(struct vdso_timehands *vdso_th, + struct timecounter *tc) +{ + struct pvclock *pvc = tc->tc_priv; + + vdso_th->th_algo = VDSO_TH_ALGO_X86_PVCLK; + vdso_th->th_x86_shift = 0; + vdso_th->th_x86_hpet_idx = 0; + vdso_th->th_x86_pvc_last_systime = + atomic_load_acq_64(&pvclock_last_systime); + vdso_th->th_x86_pvc_stable_mask = !pvc->vdso_force_unstable && + pvc->stable_flag_supported ? PVCLOCK_FLAG_TSC_STABLE : 0; + bzero(vdso_th->th_res, sizeof(vdso_th->th_res)); + return (pvc->cdev != NULL && amd_feature & AMDID_RDTSCP); +} + +#ifdef COMPAT_FREEBSD32 +static uint32_t +pvclock_tc_vdso_timehands32(struct vdso_timehands32 *vdso_th, + struct timecounter *tc) +{ + struct pvclock *pvc = tc->tc_priv; + + vdso_th->th_algo = VDSO_TH_ALGO_X86_PVCLK; + vdso_th->th_x86_shift = 0; + vdso_th->th_x86_hpet_idx = 0; + vdso_th->th_x86_pvc_last_systime = + atomic_load_acq_64(&pvclock_last_systime); + vdso_th->th_x86_pvc_stable_mask = !pvc->vdso_force_unstable && + pvc->stable_flag_supported ? PVCLOCK_FLAG_TSC_STABLE : 0; + bzero(vdso_th->th_res, sizeof(vdso_th->th_res)); + return (pvc->cdev != NULL && amd_feature & AMDID_RDTSCP); +} +#endif + void pvclock_gettime(struct pvclock *pvc, struct timespec *ts) { @@ -238,9 +271,19 @@ void pvclock_init(struct pvclock *pvc, device_t dev, const char *tc_name, int tc_quality, u_int tc_flags) { + struct make_dev_args mda; + int err; + KASSERT(((uintptr_t)pvc->timeinfos & PAGE_MASK) == 0, ("Specified time info page(s) address is not page-aligned.")); + /* Set up vDSO stable-flag suppression test facility: */ + pvc->vdso_force_unstable = false; + SYSCTL_ADD_BOOL(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, + "vdso_force_unstable", CTLFLAG_RW, &pvc->vdso_force_unstable, 0, + "Forcibly deassert stable flag in vDSO codepath"); + /* Set up timecounter and timecounter-supporting members: */ pvc->tc.tc_get_timecount = pvclock_tc_get_timecount; pvc->tc.tc_poll_pps = NULL; @@ -250,11 +293,27 @@ pvclock_init(struct pvclock *pvc, device_t dev, const char *tc_name, pvc->tc.tc_quality = tc_quality; pvc->tc.tc_flags = tc_flags; pvc->tc.tc_priv = pvc; - pvc->tc.tc_fill_vdso_timehands = NULL; + pvc->tc.tc_fill_vdso_timehands = pvclock_tc_vdso_timehands; #ifdef COMPAT_FREEBSD32 - pvc->tc.tc_fill_vdso_timehands32 = NULL; + pvc->tc.tc_fill_vdso_timehands32 = pvclock_tc_vdso_timehands32; #endif + /* Set up cdev for userspace mmapping of vCPU 0 time info page: */ + make_dev_args_init(&mda); + mda.mda_devsw = &pvclock_cdev_cdevsw; + mda.mda_uid = UID_ROOT; + mda.mda_gid = GID_WHEEL; + mda.mda_mode = 0444; + mda.mda_si_drv1 = pvc->timeinfos; + err = make_dev_s(&mda, &pvc->cdev, PVCLOCK_CDEVNAME); + if (err != 0) { + device_printf(dev, "Could not create /dev/%s, error %d. Fast " + "time of day will be unavailable for this timecounter.\n", + PVCLOCK_CDEVNAME, err); + KASSERT(pvc->cdev == NULL, + ("Failed make_dev_s() unexpectedly inited cdev.")); + } + /* Register timecounter: */ tc_init(&pvc->tc); diff --git a/sys/x86/x86/tsc.c b/sys/x86/x86/tsc.c index 5ffbb64229e9..0ebcea895cd3 100644 --- a/sys/x86/x86/tsc.c +++ b/sys/x86/x86/tsc.c @@ -870,6 +870,8 @@ x86_tsc_vdso_timehands(struct vdso_timehands *vdso_th, struct timecounter *tc) vdso_th->th_algo = VDSO_TH_ALGO_X86_TSC; vdso_th->th_x86_shift = (int)(intptr_t)tc->tc_priv; vdso_th->th_x86_hpet_idx = 0xffffffff; + vdso_th->th_x86_pvc_last_systime = 0; + vdso_th->th_x86_pvc_stable_mask = 0; bzero(vdso_th->th_res, sizeof(vdso_th->th_res)); return (1); } @@ -883,6 +885,8 @@ x86_tsc_vdso_timehands32(struct vdso_timehands32 *vdso_th32, vdso_th32->th_algo = VDSO_TH_ALGO_X86_TSC; vdso_th32->th_x86_shift = (int)(intptr_t)tc->tc_priv; vdso_th32->th_x86_hpet_idx = 0xffffffff; + vdso_th32->th_x86_pvc_last_systime = 0; + vdso_th32->th_x86_pvc_stable_mask = 0; bzero(vdso_th32->th_res, sizeof(vdso_th32->th_res)); return (1); } From nobody Sun Oct 10 09:24:03 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E9F8012DE972; Sun, 10 Oct 2021 09:24: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 4HRxM81QRhz3MfV; Sun, 10 Oct 2021 09:24: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 9FD223482; Sun, 10 Oct 2021 09:24: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 19A9O3nq003181; Sun, 10 Oct 2021 09:24:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O3Si003180; Sun, 10 Oct 2021 09:24:03 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:03 GMT Message-Id: <202110100924.19A9O3Si003180@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 2524e9bd8236 - stable/13 - libc: vDSO timekeeping: Add pvclock support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 2524e9bd823620fc3260b41984b65c87a71a4d9d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2524e9bd823620fc3260b41984b65c87a71a4d9d commit 2524e9bd823620fc3260b41984b65c87a71a4d9d Author: Adam Fenn AuthorDate: 2021-08-07 20:11:29 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 libc: vDSO timekeeping: Add pvclock support (cherry picked from commit a3d932dfef5edc9d1c947b02fb93a64d63a291cb) --- lib/libc/x86/sys/__vdso_gettc.c | 62 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/lib/libc/x86/sys/__vdso_gettc.c b/lib/libc/x86/sys/__vdso_gettc.c index ab10943c811b..5cc847e31c0e 100644 --- a/lib/libc/x86/sys/__vdso_gettc.c +++ b/lib/libc/x86/sys/__vdso_gettc.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include "un-namespace.h" #include #include +#include #include #include #ifdef WANT_HYPERV @@ -312,6 +313,61 @@ __vdso_hyperv_tsc(struct hyperv_reftsc *tsc_ref, u_int *tc) #endif /* WANT_HYPERV */ +static struct pvclock_vcpu_time_info *pvclock_timeinfos; + +static int +__vdso_pvclock_gettc(const struct vdso_timehands *th, u_int *tc) +{ + uint64_t delta, ns, tsc; + struct pvclock_vcpu_time_info *ti; + uint32_t cpuid_ti, cpuid_tsc, version; + bool stable; + + do { + ti = &pvclock_timeinfos[0]; + version = atomic_load_acq_32(&ti->version); + stable = (ti->flags & th->th_x86_pvc_stable_mask) != 0; + if (stable) { + tsc = rdtscp(); + } else { + (void)rdtscp_aux(&cpuid_ti); + ti = &pvclock_timeinfos[cpuid_ti]; + version = atomic_load_acq_32(&ti->version); + tsc = rdtscp_aux(&cpuid_tsc); + } + delta = tsc - ti->tsc_timestamp; + ns = ti->system_time + pvclock_scale_delta(delta, + ti->tsc_to_system_mul, ti->tsc_shift); + atomic_thread_fence_acq(); + } while ((ti->version & 1) != 0 || ti->version != version || + (!stable && cpuid_ti != cpuid_tsc)); + *tc = MAX(ns, th->th_x86_pvc_last_systime); + return (0); +} + +static void +__vdso_init_pvclock_timeinfos(void) +{ + struct pvclock_vcpu_time_info *timeinfos; + size_t len; + int fd, ncpus; + unsigned int mode; + + timeinfos = MAP_FAILED; + if (_elf_aux_info(AT_NCPUS, &ncpus, sizeof(ncpus)) != 0 || + (cap_getmode(&mode) == 0 && mode != 0) || + (fd = _open("/dev/" PVCLOCK_CDEVNAME, O_RDONLY | O_CLOEXEC)) < 0) + goto leave; + len = ncpus * sizeof(*pvclock_timeinfos); + timeinfos = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, 0); + _close(fd); +leave: + if (atomic_cmpset_rel_ptr( + (volatile uintptr_t *)&pvclock_timeinfos, (uintptr_t)NULL, + (uintptr_t)timeinfos) == 0 && timeinfos != MAP_FAILED) + (void)munmap((void *)timeinfos, len); +} + #pragma weak __vdso_gettc int __vdso_gettc(const struct vdso_timehands *th, u_int *tc) @@ -347,6 +403,12 @@ __vdso_gettc(const struct vdso_timehands *th, u_int *tc) return (ENOSYS); return (__vdso_hyperv_tsc(hyperv_ref_tsc, tc)); #endif + case VDSO_TH_ALGO_X86_PVCLK: + if (pvclock_timeinfos == NULL) + __vdso_init_pvclock_timeinfos(); + if (pvclock_timeinfos == MAP_FAILED) + return (ENOSYS); + return (__vdso_pvclock_gettc(th, tc)); default: return (ENOSYS); } From nobody Sun Oct 10 09:24:04 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A3BE512DEBCB; Sun, 10 Oct 2021 09:24: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 4HRxM91pMtz3MrG; Sun, 10 Oct 2021 09:24: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 BD5583407; Sun, 10 Oct 2021 09:24: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 19A9O4nE003211; Sun, 10 Oct 2021 09:24:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O4kU003210; Sun, 10 Oct 2021 09:24:04 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:04 GMT Message-Id: <202110100924.19A9O4kU003210@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 61b29720efed - stable/13 - amd64: centralize definitions of CS_SECURE and EFL_SECURE List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 61b29720efed21673e4777227e899eeb65c31078 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=61b29720efed21673e4777227e899eeb65c31078 commit 61b29720efed21673e4777227e899eeb65c31078 Author: Konstantin Belousov AuthorDate: 2021-09-14 16:07:31 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 amd64: centralize definitions of CS_SECURE and EFL_SECURE (cherry picked from commit a42d362bb54af91d8b82dca086fa656f4624bae2) --- sys/amd64/amd64/machdep.c | 3 --- sys/amd64/ia32/ia32_reg.c | 3 --- sys/amd64/ia32/ia32_signal.c | 3 --- sys/amd64/include/frame.h | 5 +++++ sys/amd64/linux/linux_sysvec.c | 5 +---- sys/amd64/linux32/linux32_sysvec.c | 8 ++------ 6 files changed, 8 insertions(+), 19 deletions(-) diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 0c8234c9e917..da8a4f249e03 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -164,9 +164,6 @@ CTASSERT(PC_PTI_STACK_SZ * sizeof(register_t) >= 2 * sizeof(struct pti_frame) - extern u_int64_t hammer_time(u_int64_t, u_int64_t); -#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) -#define EFL_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) - static void cpu_startup(void *); static void get_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpusave, size_t xfpusave_len); diff --git a/sys/amd64/ia32/ia32_reg.c b/sys/amd64/ia32/ia32_reg.c index 0725936cf84d..f6333a65fb39 100644 --- a/sys/amd64/ia32/ia32_reg.c +++ b/sys/amd64/ia32/ia32_reg.c @@ -72,9 +72,6 @@ __FBSDID("$FreeBSD$"); #include #include -#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) -#define EFL_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) - int fill_regs32(struct thread *td, struct reg32 *regs) { diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index c114cf1d240a..49b5797d68fd 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -85,9 +85,6 @@ __FBSDID("$FreeBSD$"); static void freebsd4_ia32_sendsig(sig_t, ksiginfo_t *, sigset_t *); #endif -#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) -#define EFL_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) - static void ia32_get_fpcontext(struct thread *td, struct ia32_mcontext *mcp, char *xfpusave, size_t xfpusave_len) diff --git a/sys/amd64/include/frame.h b/sys/amd64/include/frame.h index f0a6fcf5bc9c..faf68a2008e4 100644 --- a/sys/amd64/include/frame.h +++ b/sys/amd64/include/frame.h @@ -47,4 +47,9 @@ struct pti_frame { register_t pti_ss; }; +#ifdef _KERNEL +#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) +#define EFL_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) +#endif + #endif diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c index f8a06b08969e..28fac2ea7452 100644 --- a/sys/amd64/linux/linux_sysvec.c +++ b/sys/amd64/linux/linux_sysvec.c @@ -524,9 +524,7 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args) * Corruption of the PSL_RF bit at worst causes one more or * one less debugger trap, so allowing it is fairly harmless. */ - -#define RFLAG_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) - if (!RFLAG_SECURE(rflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { + if (!EFL_SECURE(rflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { printf("linux_rt_sigreturn: rflags = 0x%lx\n", rflags); return (EINVAL); } @@ -536,7 +534,6 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args) * hardware check for invalid selectors, excess privilege in * other selectors, invalid %eip's and invalid %esp's. */ -#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) if (!CS_SECURE(context->sc_cs)) { printf("linux_rt_sigreturn: cs = 0x%x\n", context->sc_cs); ksiginfo_init_trap(&ksi); diff --git a/sys/amd64/linux32/linux32_sysvec.c b/sys/amd64/linux32/linux32_sysvec.c index b20961e66b6a..9a8f86ecce10 100644 --- a/sys/amd64/linux32/linux32_sysvec.c +++ b/sys/amd64/linux32/linux32_sysvec.c @@ -497,9 +497,8 @@ linux_sigreturn(struct thread *td, struct linux_sigreturn_args *args) return (EFAULT); /* Check for security violations. */ -#define EFLAGS_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) eflags = frame.sf_sc.sc_eflags; - if (!EFLAGS_SECURE(eflags, regs->tf_rflags)) + if (!EFL_SECURE(eflags, regs->tf_rflags)) return(EINVAL); /* @@ -507,7 +506,6 @@ linux_sigreturn(struct thread *td, struct linux_sigreturn_args *args) * hardware check for invalid selectors, excess privilege in * other selectors, invalid %eip's and invalid %esp's. */ -#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) if (!CS_SECURE(frame.sf_sc.sc_cs)) { ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGBUS; @@ -580,9 +578,8 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args) context = &uc.uc_mcontext; /* Check for security violations. */ -#define EFLAGS_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) eflags = context->sc_eflags; - if (!EFLAGS_SECURE(eflags, regs->tf_rflags)) + if (!EFL_SECURE(eflags, regs->tf_rflags)) return(EINVAL); /* @@ -590,7 +587,6 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args) * hardware check for invalid selectors, excess privilege in * other selectors, invalid %eip's and invalid %esp's. */ -#define CS_SECURE(cs) (ISPL(cs) == SEL_UPL) if (!CS_SECURE(context->sc_cs)) { ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGBUS; From nobody Sun Oct 10 09:24:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B87D312DEDD4; Sun, 10 Oct 2021 09:24: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 4HRxMC3CPvz3Mc5; Sun, 10 Oct 2021 09:24: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 F323B2F45; Sun, 10 Oct 2021 09:24: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 19A9O6kA003259; Sun, 10 Oct 2021 09:24:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O64I003258; Sun, 10 Oct 2021 09:24:06 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:06 GMT Message-Id: <202110100924.19A9O64I003258@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 126979c52500 - stable/13 - exec_machdep.c: some style, use ANSI C definition for sys_sigreturn() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 126979c5250093325033266ee56bf6b8f531d083 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=126979c5250093325033266ee56bf6b8f531d083 commit 126979c5250093325033266ee56bf6b8f531d083 Author: Konstantin Belousov AuthorDate: 2021-09-13 20:37:26 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 exec_machdep.c: some style, use ANSI C definition for sys_sigreturn() (cherry picked from commit 9151abe323034275014dcfffb4a793bc5032bf87) --- sys/amd64/amd64/exec_machdep.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c index 22d78bff2905..426bb08edd7c 100644 --- a/sys/amd64/amd64/exec_machdep.c +++ b/sys/amd64/amd64/exec_machdep.c @@ -97,7 +97,7 @@ __FBSDID("$FreeBSD$"); static void get_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpusave, size_t xfpusave_len); -static int set_fpcontext(struct thread *td, mcontext_t *mcp, +static int set_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpustate, size_t xfpustate_len); /* @@ -236,11 +236,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) * state to gain improper privileges. */ int -sys_sigreturn(td, uap) - struct thread *td; - struct sigreturn_args /* { - const struct __ucontext *sigcntxp; - } */ *uap; +sys_sigreturn(struct thread *td, struct sigreturn_args *uap) { ucontext_t uc; struct pcb *pcb; @@ -938,7 +934,7 @@ user_dbreg_trap(register_t dr6) * None of the breakpoint bits are set meaning this * trap was not caused by any of the debug registers */ - return 0; + return (0); } dr7 = rdr7(); @@ -948,7 +944,7 @@ user_dbreg_trap(register_t dr6) * thus the trap couldn't have been caused by the * hardware debug registers */ - return 0; + return (0); } nbp = 0; @@ -976,12 +972,12 @@ user_dbreg_trap(register_t dr6) /* * addr[i] is in user space */ - return nbp; + return (nbp); } } /* * None of the breakpoints are in user space. */ - return 0; + return (0); } From nobody Sun Oct 10 09:24:05 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6B6A112DED38; Sun, 10 Oct 2021 09:24: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 4HRxMB2Kcsz3Mhm; Sun, 10 Oct 2021 09:24: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 D1A41304C; Sun, 10 Oct 2021 09:24: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 19A9O5EM003235; Sun, 10 Oct 2021 09:24:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O5Sl003234; Sun, 10 Oct 2021 09:24:05 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:05 GMT Message-Id: <202110100924.19A9O5Sl003234@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: d750f45610b1 - stable/13 - amd64: move signal handling and register structures manipulations into exec_machdep.c List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: d750f45610b1c2adfd6d31b02743d1241d11575f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=d750f45610b1c2adfd6d31b02743d1241d11575f commit d750f45610b1c2adfd6d31b02743d1241d11575f Author: Konstantin Belousov AuthorDate: 2021-09-13 20:33:37 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 amd64: move signal handling and register structures manipulations into exec_machdep.c (cherry picked from commit 12ca33f44fc76890336f517ace402b47b9afb134) --- sys/amd64/amd64/exec_machdep.c | 987 +++++++++++++++++++++++++++++++++++++++ sys/amd64/amd64/machdep.c | 924 ------------------------------------ sys/amd64/amd64/ptrace_machdep.c | 33 ++ sys/conf/files.amd64 | 1 + 4 files changed, 1021 insertions(+), 924 deletions(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c new file mode 100644 index 000000000000..22d78bff2905 --- /dev/null +++ b/sys/amd64/amd64/exec_machdep.c @@ -0,0 +1,987 @@ +/*- + * SPDX-License-Identifier: BSD-4-Clause + * + * Copyright (c) 2003 Peter Wemm. + * Copyright (c) 1992 Terrence R. Lambert. + * Copyright (c) 1982, 1987, 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * William Jolitz. + * + * 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. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. + * + * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_cpu.h" +#include "opt_ddb.h" +#include "opt_kstack_pages.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef SMP +#include +#endif +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef DDB +#ifndef KDB +#error KDB must be enabled in order for DDB to work! +#endif +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void get_fpcontext(struct thread *td, mcontext_t *mcp, + char *xfpusave, size_t xfpusave_len); +static int set_fpcontext(struct thread *td, mcontext_t *mcp, + char *xfpustate, size_t xfpustate_len); + +/* + * Send an interrupt to process. + * + * Stack is set up to allow sigcode stored at top to call routine, + * followed by call to sigreturn routine below. After sigreturn + * resets the signal mask, the stack, and the frame pointer, it + * returns to the user specified pc, psl. + */ +void +sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct sigframe sf, *sfp; + struct pcb *pcb; + struct proc *p; + struct thread *td; + struct sigacts *psp; + char *sp; + struct trapframe *regs; + char *xfpusave; + size_t xfpusave_len; + int sig; + int oonstack; + + td = curthread; + pcb = td->td_pcb; + p = td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig = ksi->ksi_signo; + psp = p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + regs = td->td_frame; + oonstack = sigonstack(regs->tf_rsp); + + if (cpu_max_ext_state_size > sizeof(struct savefpu) && use_xsave) { + xfpusave_len = cpu_max_ext_state_size - sizeof(struct savefpu); + xfpusave = __builtin_alloca(xfpusave_len); + } else { + xfpusave_len = 0; + xfpusave = NULL; + } + + /* Save user context. */ + bzero(&sf, sizeof(sf)); + sf.sf_uc.uc_sigmask = *mask; + sf.sf_uc.uc_stack = td->td_sigstk; + sf.sf_uc.uc_stack.ss_flags = (td->td_pflags & TDP_ALTSTACK) + ? ((oonstack) ? SS_ONSTACK : 0) : SS_DISABLE; + sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; + bcopy(regs, &sf.sf_uc.uc_mcontext.mc_rdi, sizeof(*regs)); + sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ + get_fpcontext(td, &sf.sf_uc.uc_mcontext, xfpusave, xfpusave_len); + fpstate_drop(td); + update_pcb_bases(pcb); + sf.sf_uc.uc_mcontext.mc_fsbase = pcb->pcb_fsbase; + sf.sf_uc.uc_mcontext.mc_gsbase = pcb->pcb_gsbase; + bzero(sf.sf_uc.uc_mcontext.mc_spare, + sizeof(sf.sf_uc.uc_mcontext.mc_spare)); + + /* Allocate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + sp = (char *)td->td_sigstk.ss_sp + td->td_sigstk.ss_size; +#if defined(COMPAT_43) + td->td_sigstk.ss_flags |= SS_ONSTACK; +#endif + } else + sp = (char *)regs->tf_rsp - 128; + if (xfpusave != NULL) { + sp -= xfpusave_len; + sp = (char *)((unsigned long)sp & ~0x3Ful); + sf.sf_uc.uc_mcontext.mc_xfpustate = (register_t)sp; + } + sp -= sizeof(struct sigframe); + /* Align to 16 bytes. */ + sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); + + /* Build the argument list for the signal handler. */ + regs->tf_rdi = sig; /* arg 1 in %rdi */ + regs->tf_rdx = (register_t)&sfp->sf_uc; /* arg 3 in %rdx */ + bzero(&sf.sf_si, sizeof(sf.sf_si)); + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + regs->tf_rsi = (register_t)&sfp->sf_si; /* arg 2 in %rsi */ + sf.sf_ahu.sf_action = (__siginfohandler_t *)catcher; + + /* Fill in POSIX parts */ + sf.sf_si = ksi->ksi_info; + sf.sf_si.si_signo = sig; /* maybe a translated signal */ + regs->tf_rcx = (register_t)ksi->ksi_addr; /* arg 4 in %rcx */ + } else { + /* Old FreeBSD-style arguments. */ + regs->tf_rsi = ksi->ksi_code; /* arg 2 in %rsi */ + regs->tf_rcx = (register_t)ksi->ksi_addr; /* arg 4 in %rcx */ + sf.sf_ahu.sf_handler = catcher; + } + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(p); + + /* + * Copy the sigframe out to the user's stack. + */ + if (copyout(&sf, sfp, sizeof(*sfp)) != 0 || + (xfpusave != NULL && copyout(xfpusave, + (void *)sf.sf_uc.uc_mcontext.mc_xfpustate, xfpusave_len) + != 0)) { +#ifdef DEBUG + printf("process %ld has trashed its stack\n", (long)p->p_pid); +#endif + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + regs->tf_rsp = (long)sfp; + regs->tf_rip = p->p_sysent->sv_sigcode_base; + regs->tf_rflags &= ~(PSL_T | PSL_D); + regs->tf_cs = _ucodesel; + regs->tf_ds = _udatasel; + regs->tf_ss = _udatasel; + regs->tf_es = _udatasel; + regs->tf_fs = _ufssel; + regs->tf_gs = _ugssel; + regs->tf_flags = TF_HASSEGS; + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} + +/* + * System call to cleanup state after a signal + * has been taken. Reset signal mask and + * stack state from context left by sendsig (above). + * Return to previous pc and psl as specified by + * context left by sendsig. Check carefully to + * make sure that the user has not modified the + * state to gain improper privileges. + */ +int +sys_sigreturn(td, uap) + struct thread *td; + struct sigreturn_args /* { + const struct __ucontext *sigcntxp; + } */ *uap; +{ + ucontext_t uc; + struct pcb *pcb; + struct proc *p; + struct trapframe *regs; + ucontext_t *ucp; + char *xfpustate; + size_t xfpustate_len; + long rflags; + int cs, error, ret; + ksiginfo_t ksi; + + pcb = td->td_pcb; + p = td->td_proc; + + error = copyin(uap->sigcntxp, &uc, sizeof(uc)); + if (error != 0) { + uprintf("pid %d (%s): sigreturn copyin failed\n", + p->p_pid, td->td_name); + return (error); + } + ucp = &uc; + if ((ucp->uc_mcontext.mc_flags & ~_MC_FLAG_MASK) != 0) { + uprintf("pid %d (%s): sigreturn mc_flags %x\n", p->p_pid, + td->td_name, ucp->uc_mcontext.mc_flags); + return (EINVAL); + } + regs = td->td_frame; + rflags = ucp->uc_mcontext.mc_rflags; + /* + * Don't allow users to change privileged or reserved flags. + */ + if (!EFL_SECURE(rflags, regs->tf_rflags)) { + uprintf("pid %d (%s): sigreturn rflags = 0x%lx\n", p->p_pid, + td->td_name, rflags); + return (EINVAL); + } + + /* + * Don't allow users to load a valid privileged %cs. Let the + * hardware check for invalid selectors, excess privilege in + * other selectors, invalid %eip's and invalid %esp's. + */ + cs = ucp->uc_mcontext.mc_cs; + if (!CS_SECURE(cs)) { + uprintf("pid %d (%s): sigreturn cs = 0x%x\n", p->p_pid, + td->td_name, cs); + ksiginfo_init_trap(&ksi); + ksi.ksi_signo = SIGBUS; + ksi.ksi_code = BUS_OBJERR; + ksi.ksi_trapno = T_PROTFLT; + ksi.ksi_addr = (void *)regs->tf_rip; + trapsignal(td, &ksi); + return (EINVAL); + } + + if ((uc.uc_mcontext.mc_flags & _MC_HASFPXSTATE) != 0) { + xfpustate_len = uc.uc_mcontext.mc_xfpustate_len; + if (xfpustate_len > cpu_max_ext_state_size - + sizeof(struct savefpu)) { + uprintf("pid %d (%s): sigreturn xfpusave_len = 0x%zx\n", + p->p_pid, td->td_name, xfpustate_len); + return (EINVAL); + } + xfpustate = __builtin_alloca(xfpustate_len); + error = copyin((const void *)uc.uc_mcontext.mc_xfpustate, + xfpustate, xfpustate_len); + if (error != 0) { + uprintf( + "pid %d (%s): sigreturn copying xfpustate failed\n", + p->p_pid, td->td_name); + return (error); + } + } else { + xfpustate = NULL; + xfpustate_len = 0; + } + ret = set_fpcontext(td, &ucp->uc_mcontext, xfpustate, xfpustate_len); + if (ret != 0) { + uprintf("pid %d (%s): sigreturn set_fpcontext err %d\n", + p->p_pid, td->td_name, ret); + return (ret); + } + bcopy(&ucp->uc_mcontext.mc_rdi, regs, sizeof(*regs)); + update_pcb_bases(pcb); + pcb->pcb_fsbase = ucp->uc_mcontext.mc_fsbase; + pcb->pcb_gsbase = ucp->uc_mcontext.mc_gsbase; + +#if defined(COMPAT_43) + if (ucp->uc_mcontext.mc_onstack & 1) + td->td_sigstk.ss_flags |= SS_ONSTACK; + else + td->td_sigstk.ss_flags &= ~SS_ONSTACK; +#endif + + kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0); + return (EJUSTRETURN); +} + +#ifdef COMPAT_FREEBSD4 +int +freebsd4_sigreturn(struct thread *td, struct freebsd4_sigreturn_args *uap) +{ + + return sys_sigreturn(td, (struct sigreturn_args *)uap); +} +#endif + +/* + * Reset the hardware debug registers if they were in use. + * They won't have any meaning for the newly exec'd process. + */ +void +x86_clear_dbregs(struct pcb *pcb) +{ + if ((pcb->pcb_flags & PCB_DBREGS) == 0) + return; + + pcb->pcb_dr0 = 0; + pcb->pcb_dr1 = 0; + pcb->pcb_dr2 = 0; + pcb->pcb_dr3 = 0; + pcb->pcb_dr6 = 0; + pcb->pcb_dr7 = 0; + + if (pcb == curpcb) { + /* + * Clear the debug registers on the running CPU, + * otherwise they will end up affecting the next + * process we switch to. + */ + reset_dbregs(); + } + clear_pcb_flags(pcb, PCB_DBREGS); +} + +/* + * Reset registers to default values on exec. + */ +void +exec_setregs(struct thread *td, struct image_params *imgp, uintptr_t stack) +{ + struct trapframe *regs; + struct pcb *pcb; + register_t saved_rflags; + + regs = td->td_frame; + pcb = td->td_pcb; + + if (td->td_proc->p_md.md_ldt != NULL) + user_ldt_free(td); + + update_pcb_bases(pcb); + pcb->pcb_fsbase = 0; + pcb->pcb_gsbase = 0; + clear_pcb_flags(pcb, PCB_32BIT); + pcb->pcb_initial_fpucw = __INITIAL_FPUCW__; + + saved_rflags = regs->tf_rflags & PSL_T; + bzero((char *)regs, sizeof(struct trapframe)); + regs->tf_rip = imgp->entry_addr; + regs->tf_rsp = ((stack - 8) & ~0xFul) + 8; + regs->tf_rdi = stack; /* argv */ + regs->tf_rflags = PSL_USER | saved_rflags; + regs->tf_ss = _udatasel; + regs->tf_cs = _ucodesel; + regs->tf_ds = _udatasel; + regs->tf_es = _udatasel; + regs->tf_fs = _ufssel; + regs->tf_gs = _ugssel; + regs->tf_flags = TF_HASSEGS; + + x86_clear_dbregs(pcb); + + /* + * Drop the FP state if we hold it, so that the process gets a + * clean FP state if it uses the FPU again. + */ + fpstate_drop(td); +} + +int +fill_regs(struct thread *td, struct reg *regs) +{ + struct trapframe *tp; + + tp = td->td_frame; + return (fill_frame_regs(tp, regs)); +} + +int +fill_frame_regs(struct trapframe *tp, struct reg *regs) +{ + + regs->r_r15 = tp->tf_r15; + regs->r_r14 = tp->tf_r14; + regs->r_r13 = tp->tf_r13; + regs->r_r12 = tp->tf_r12; + regs->r_r11 = tp->tf_r11; + regs->r_r10 = tp->tf_r10; + regs->r_r9 = tp->tf_r9; + regs->r_r8 = tp->tf_r8; + regs->r_rdi = tp->tf_rdi; + regs->r_rsi = tp->tf_rsi; + regs->r_rbp = tp->tf_rbp; + regs->r_rbx = tp->tf_rbx; + regs->r_rdx = tp->tf_rdx; + regs->r_rcx = tp->tf_rcx; + regs->r_rax = tp->tf_rax; + regs->r_rip = tp->tf_rip; + regs->r_cs = tp->tf_cs; + regs->r_rflags = tp->tf_rflags; + regs->r_rsp = tp->tf_rsp; + regs->r_ss = tp->tf_ss; + if (tp->tf_flags & TF_HASSEGS) { + regs->r_ds = tp->tf_ds; + regs->r_es = tp->tf_es; + regs->r_fs = tp->tf_fs; + regs->r_gs = tp->tf_gs; + } else { + regs->r_ds = 0; + regs->r_es = 0; + regs->r_fs = 0; + regs->r_gs = 0; + } + regs->r_err = 0; + regs->r_trapno = 0; + return (0); +} + +int +set_regs(struct thread *td, struct reg *regs) +{ + struct trapframe *tp; + register_t rflags; + + tp = td->td_frame; + rflags = regs->r_rflags & 0xffffffff; + if (!EFL_SECURE(rflags, tp->tf_rflags) || !CS_SECURE(regs->r_cs)) + return (EINVAL); + tp->tf_r15 = regs->r_r15; + tp->tf_r14 = regs->r_r14; + tp->tf_r13 = regs->r_r13; + tp->tf_r12 = regs->r_r12; + tp->tf_r11 = regs->r_r11; + tp->tf_r10 = regs->r_r10; + tp->tf_r9 = regs->r_r9; + tp->tf_r8 = regs->r_r8; + tp->tf_rdi = regs->r_rdi; + tp->tf_rsi = regs->r_rsi; + tp->tf_rbp = regs->r_rbp; + tp->tf_rbx = regs->r_rbx; + tp->tf_rdx = regs->r_rdx; + tp->tf_rcx = regs->r_rcx; + tp->tf_rax = regs->r_rax; + tp->tf_rip = regs->r_rip; + tp->tf_cs = regs->r_cs; + tp->tf_rflags = rflags; + tp->tf_rsp = regs->r_rsp; + tp->tf_ss = regs->r_ss; + if (0) { /* XXXKIB */ + tp->tf_ds = regs->r_ds; + tp->tf_es = regs->r_es; + tp->tf_fs = regs->r_fs; + tp->tf_gs = regs->r_gs; + tp->tf_flags = TF_HASSEGS; + } + set_pcb_flags(td->td_pcb, PCB_FULL_IRET); + return (0); +} + +/* XXX check all this stuff! */ +/* externalize from sv_xmm */ +static void +fill_fpregs_xmm(struct savefpu *sv_xmm, struct fpreg *fpregs) +{ + struct envxmm *penv_fpreg = (struct envxmm *)&fpregs->fpr_env; + struct envxmm *penv_xmm = &sv_xmm->sv_env; + int i; + + /* pcb -> fpregs */ + bzero(fpregs, sizeof(*fpregs)); + + /* FPU control/status */ + penv_fpreg->en_cw = penv_xmm->en_cw; + penv_fpreg->en_sw = penv_xmm->en_sw; + penv_fpreg->en_tw = penv_xmm->en_tw; + penv_fpreg->en_opcode = penv_xmm->en_opcode; + penv_fpreg->en_rip = penv_xmm->en_rip; + penv_fpreg->en_rdp = penv_xmm->en_rdp; + penv_fpreg->en_mxcsr = penv_xmm->en_mxcsr; + penv_fpreg->en_mxcsr_mask = penv_xmm->en_mxcsr_mask; + + /* FPU registers */ + for (i = 0; i < 8; ++i) + bcopy(sv_xmm->sv_fp[i].fp_acc.fp_bytes, fpregs->fpr_acc[i], 10); + + /* SSE registers */ + for (i = 0; i < 16; ++i) + bcopy(sv_xmm->sv_xmm[i].xmm_bytes, fpregs->fpr_xacc[i], 16); +} + +/* internalize from fpregs into sv_xmm */ +static void +set_fpregs_xmm(struct fpreg *fpregs, struct savefpu *sv_xmm) +{ + struct envxmm *penv_xmm = &sv_xmm->sv_env; + struct envxmm *penv_fpreg = (struct envxmm *)&fpregs->fpr_env; + int i; + + /* fpregs -> pcb */ + /* FPU control/status */ + penv_xmm->en_cw = penv_fpreg->en_cw; + penv_xmm->en_sw = penv_fpreg->en_sw; + penv_xmm->en_tw = penv_fpreg->en_tw; + penv_xmm->en_opcode = penv_fpreg->en_opcode; + penv_xmm->en_rip = penv_fpreg->en_rip; + penv_xmm->en_rdp = penv_fpreg->en_rdp; + penv_xmm->en_mxcsr = penv_fpreg->en_mxcsr; + penv_xmm->en_mxcsr_mask = penv_fpreg->en_mxcsr_mask & cpu_mxcsr_mask; + + /* FPU registers */ + for (i = 0; i < 8; ++i) + bcopy(fpregs->fpr_acc[i], sv_xmm->sv_fp[i].fp_acc.fp_bytes, 10); + + /* SSE registers */ + for (i = 0; i < 16; ++i) + bcopy(fpregs->fpr_xacc[i], sv_xmm->sv_xmm[i].xmm_bytes, 16); +} + +/* externalize from td->pcb */ +int +fill_fpregs(struct thread *td, struct fpreg *fpregs) +{ + + KASSERT(td == curthread || TD_IS_SUSPENDED(td) || + P_SHOULDSTOP(td->td_proc), + ("not suspended thread %p", td)); + fpugetregs(td); + fill_fpregs_xmm(get_pcb_user_save_td(td), fpregs); + return (0); +} + +/* internalize to td->pcb */ +int +set_fpregs(struct thread *td, struct fpreg *fpregs) +{ + + critical_enter(); + set_fpregs_xmm(fpregs, get_pcb_user_save_td(td)); + fpuuserinited(td); + critical_exit(); + return (0); +} + +/* + * Get machine context. + */ +int +get_mcontext(struct thread *td, mcontext_t *mcp, int flags) +{ + struct pcb *pcb; + struct trapframe *tp; + + pcb = td->td_pcb; + tp = td->td_frame; + PROC_LOCK(curthread->td_proc); + mcp->mc_onstack = sigonstack(tp->tf_rsp); + PROC_UNLOCK(curthread->td_proc); + mcp->mc_r15 = tp->tf_r15; + mcp->mc_r14 = tp->tf_r14; + mcp->mc_r13 = tp->tf_r13; + mcp->mc_r12 = tp->tf_r12; + mcp->mc_r11 = tp->tf_r11; + mcp->mc_r10 = tp->tf_r10; + mcp->mc_r9 = tp->tf_r9; + mcp->mc_r8 = tp->tf_r8; + mcp->mc_rdi = tp->tf_rdi; + mcp->mc_rsi = tp->tf_rsi; + mcp->mc_rbp = tp->tf_rbp; + mcp->mc_rbx = tp->tf_rbx; + mcp->mc_rcx = tp->tf_rcx; + mcp->mc_rflags = tp->tf_rflags; + if (flags & GET_MC_CLEAR_RET) { + mcp->mc_rax = 0; + mcp->mc_rdx = 0; + mcp->mc_rflags &= ~PSL_C; + } else { + mcp->mc_rax = tp->tf_rax; + mcp->mc_rdx = tp->tf_rdx; + } + mcp->mc_rip = tp->tf_rip; + mcp->mc_cs = tp->tf_cs; + mcp->mc_rsp = tp->tf_rsp; + mcp->mc_ss = tp->tf_ss; + mcp->mc_ds = tp->tf_ds; + mcp->mc_es = tp->tf_es; + mcp->mc_fs = tp->tf_fs; + mcp->mc_gs = tp->tf_gs; + mcp->mc_flags = tp->tf_flags; + mcp->mc_len = sizeof(*mcp); + get_fpcontext(td, mcp, NULL, 0); + update_pcb_bases(pcb); + mcp->mc_fsbase = pcb->pcb_fsbase; + mcp->mc_gsbase = pcb->pcb_gsbase; + mcp->mc_xfpustate = 0; + mcp->mc_xfpustate_len = 0; + bzero(mcp->mc_spare, sizeof(mcp->mc_spare)); + return (0); +} + +/* + * Set machine context. + * + * However, we don't set any but the user modifiable flags, and we won't + * touch the cs selector. + */ +int +set_mcontext(struct thread *td, mcontext_t *mcp) +{ + struct pcb *pcb; + struct trapframe *tp; + char *xfpustate; + long rflags; + int ret; + + pcb = td->td_pcb; + tp = td->td_frame; + if (mcp->mc_len != sizeof(*mcp) || + (mcp->mc_flags & ~_MC_FLAG_MASK) != 0) + return (EINVAL); + rflags = (mcp->mc_rflags & PSL_USERCHANGE) | + (tp->tf_rflags & ~PSL_USERCHANGE); + if (mcp->mc_flags & _MC_HASFPXSTATE) { + if (mcp->mc_xfpustate_len > cpu_max_ext_state_size - + sizeof(struct savefpu)) + return (EINVAL); + xfpustate = __builtin_alloca(mcp->mc_xfpustate_len); + ret = copyin((void *)mcp->mc_xfpustate, xfpustate, + mcp->mc_xfpustate_len); + if (ret != 0) + return (ret); + } else + xfpustate = NULL; + ret = set_fpcontext(td, mcp, xfpustate, mcp->mc_xfpustate_len); + if (ret != 0) + return (ret); + tp->tf_r15 = mcp->mc_r15; + tp->tf_r14 = mcp->mc_r14; + tp->tf_r13 = mcp->mc_r13; + tp->tf_r12 = mcp->mc_r12; + tp->tf_r11 = mcp->mc_r11; + tp->tf_r10 = mcp->mc_r10; + tp->tf_r9 = mcp->mc_r9; + tp->tf_r8 = mcp->mc_r8; + tp->tf_rdi = mcp->mc_rdi; + tp->tf_rsi = mcp->mc_rsi; + tp->tf_rbp = mcp->mc_rbp; + tp->tf_rbx = mcp->mc_rbx; + tp->tf_rdx = mcp->mc_rdx; + tp->tf_rcx = mcp->mc_rcx; + tp->tf_rax = mcp->mc_rax; + tp->tf_rip = mcp->mc_rip; + tp->tf_rflags = rflags; + tp->tf_rsp = mcp->mc_rsp; + tp->tf_ss = mcp->mc_ss; + tp->tf_flags = mcp->mc_flags; + if (tp->tf_flags & TF_HASSEGS) { + tp->tf_ds = mcp->mc_ds; + tp->tf_es = mcp->mc_es; + tp->tf_fs = mcp->mc_fs; + tp->tf_gs = mcp->mc_gs; + } + set_pcb_flags(pcb, PCB_FULL_IRET); + if (mcp->mc_flags & _MC_HASBASES) { + pcb->pcb_fsbase = mcp->mc_fsbase; + pcb->pcb_gsbase = mcp->mc_gsbase; + } + return (0); +} + +static void +get_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpusave, + size_t xfpusave_len) +{ + size_t max_len, len; + + mcp->mc_ownedfp = fpugetregs(td); + bcopy(get_pcb_user_save_td(td), &mcp->mc_fpstate[0], + sizeof(mcp->mc_fpstate)); + mcp->mc_fpformat = fpuformat(); + if (!use_xsave || xfpusave_len == 0) + return; + max_len = cpu_max_ext_state_size - sizeof(struct savefpu); + len = xfpusave_len; + if (len > max_len) { + len = max_len; + bzero(xfpusave + max_len, len - max_len); + } + mcp->mc_flags |= _MC_HASFPXSTATE; + mcp->mc_xfpustate_len = len; + bcopy(get_pcb_user_save_td(td) + 1, xfpusave, len); +} + +static int +set_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpustate, + size_t xfpustate_len) +{ + int error; + + if (mcp->mc_fpformat == _MC_FPFMT_NODEV) + return (0); + else if (mcp->mc_fpformat != _MC_FPFMT_XMM) + return (EINVAL); + else if (mcp->mc_ownedfp == _MC_FPOWNED_NONE) { + /* We don't care what state is left in the FPU or PCB. */ + fpstate_drop(td); + error = 0; + } else if (mcp->mc_ownedfp == _MC_FPOWNED_FPU || + mcp->mc_ownedfp == _MC_FPOWNED_PCB) { + error = fpusetregs(td, (struct savefpu *)&mcp->mc_fpstate, + xfpustate, xfpustate_len); + } else + return (EINVAL); + return (error); +} + +void +fpstate_drop(struct thread *td) +{ + + KASSERT(PCB_USER_FPU(td->td_pcb), ("fpstate_drop: kernel-owned fpu")); + critical_enter(); + if (PCPU_GET(fpcurthread) == td) + fpudrop(); + /* + * XXX force a full drop of the fpu. The above only drops it if we + * owned it. + * + * XXX I don't much like fpugetuserregs()'s semantics of doing a full + * drop. Dropping only to the pcb matches fnsave's behaviour. + * We only need to drop to !PCB_INITDONE in sendsig(). But + * sendsig() is the only caller of fpugetuserregs()... perhaps we just + * have too many layers. + */ + clear_pcb_flags(curthread->td_pcb, + PCB_FPUINITDONE | PCB_USERFPUINITDONE); + critical_exit(); +} + +int +fill_dbregs(struct thread *td, struct dbreg *dbregs) +{ + struct pcb *pcb; + + if (td == NULL) { + dbregs->dr[0] = rdr0(); + dbregs->dr[1] = rdr1(); + dbregs->dr[2] = rdr2(); + dbregs->dr[3] = rdr3(); + dbregs->dr[6] = rdr6(); + dbregs->dr[7] = rdr7(); + } else { + pcb = td->td_pcb; + dbregs->dr[0] = pcb->pcb_dr0; + dbregs->dr[1] = pcb->pcb_dr1; + dbregs->dr[2] = pcb->pcb_dr2; + dbregs->dr[3] = pcb->pcb_dr3; + dbregs->dr[6] = pcb->pcb_dr6; + dbregs->dr[7] = pcb->pcb_dr7; + } + dbregs->dr[4] = 0; + dbregs->dr[5] = 0; + dbregs->dr[8] = 0; + dbregs->dr[9] = 0; + dbregs->dr[10] = 0; + dbregs->dr[11] = 0; + dbregs->dr[12] = 0; + dbregs->dr[13] = 0; + dbregs->dr[14] = 0; + dbregs->dr[15] = 0; + return (0); +} + +int +set_dbregs(struct thread *td, struct dbreg *dbregs) +{ + struct pcb *pcb; + int i; + + if (td == NULL) { + load_dr0(dbregs->dr[0]); + load_dr1(dbregs->dr[1]); + load_dr2(dbregs->dr[2]); + load_dr3(dbregs->dr[3]); + load_dr6(dbregs->dr[6]); + load_dr7(dbregs->dr[7]); + } else { + /* + * Don't let an illegal value for dr7 get set. Specifically, + * check for undefined settings. Setting these bit patterns + * result in undefined behaviour and can lead to an unexpected + * TRCTRAP or a general protection fault right here. + * Upper bits of dr6 and dr7 must not be set + */ + for (i = 0; i < 4; i++) { + if (DBREG_DR7_ACCESS(dbregs->dr[7], i) == 0x02) + return (EINVAL); + if (td->td_frame->tf_cs == _ucode32sel && + DBREG_DR7_LEN(dbregs->dr[7], i) == DBREG_DR7_LEN_8) + return (EINVAL); + } + if ((dbregs->dr[6] & 0xffffffff00000000ul) != 0 || + (dbregs->dr[7] & 0xffffffff00000000ul) != 0) + return (EINVAL); + + pcb = td->td_pcb; + + /* + * Don't let a process set a breakpoint that is not within the + * process's address space. If a process could do this, it + * could halt the system by setting a breakpoint in the kernel + * (if ddb was enabled). Thus, we need to check to make sure + * that no breakpoints are being enabled for addresses outside + * process's address space. + * + * XXX - what about when the watched area of the user's + * address space is written into from within the kernel + * ... wouldn't that still cause a breakpoint to be generated + * from within kernel mode? + */ + + if (DBREG_DR7_ENABLED(dbregs->dr[7], 0)) { + /* dr0 is enabled */ + if (dbregs->dr[0] >= VM_MAXUSER_ADDRESS) + return (EINVAL); + } + if (DBREG_DR7_ENABLED(dbregs->dr[7], 1)) { + /* dr1 is enabled */ + if (dbregs->dr[1] >= VM_MAXUSER_ADDRESS) + return (EINVAL); + } + if (DBREG_DR7_ENABLED(dbregs->dr[7], 2)) { + /* dr2 is enabled */ + if (dbregs->dr[2] >= VM_MAXUSER_ADDRESS) + return (EINVAL); + } + if (DBREG_DR7_ENABLED(dbregs->dr[7], 3)) { + /* dr3 is enabled */ + if (dbregs->dr[3] >= VM_MAXUSER_ADDRESS) + return (EINVAL); + } + + pcb->pcb_dr0 = dbregs->dr[0]; + pcb->pcb_dr1 = dbregs->dr[1]; + pcb->pcb_dr2 = dbregs->dr[2]; + pcb->pcb_dr3 = dbregs->dr[3]; + pcb->pcb_dr6 = dbregs->dr[6]; + pcb->pcb_dr7 = dbregs->dr[7]; + + set_pcb_flags(pcb, PCB_DBREGS); + } + + return (0); +} + +void +reset_dbregs(void) +{ + + load_dr7(0); /* Turn off the control bits first */ + load_dr0(0); + load_dr1(0); + load_dr2(0); + load_dr3(0); + load_dr6(0); +} + +/* + * Return > 0 if a hardware breakpoint has been hit, and the + * breakpoint was in user space. Return 0, otherwise. + */ +int +user_dbreg_trap(register_t dr6) +{ + u_int64_t dr7; + u_int64_t bp; /* breakpoint bits extracted from dr6 */ + int nbp; /* number of breakpoints that triggered */ + caddr_t addr[4]; /* breakpoint addresses */ + int i; + + bp = dr6 & DBREG_DR6_BMASK; + if (bp == 0) { + /* + * None of the breakpoint bits are set meaning this + * trap was not caused by any of the debug registers + */ + return 0; + } + + dr7 = rdr7(); + if ((dr7 & 0x000000ff) == 0) { + /* + * all GE and LE bits in the dr7 register are zero, + * thus the trap couldn't have been caused by the + * hardware debug registers + */ + return 0; + } + + nbp = 0; + + /* + * at least one of the breakpoints were hit, check to see + * which ones and if any of them are user space addresses + */ + + if (bp & 0x01) { *** 1036 LINES SKIPPED *** From nobody Sun Oct 10 09:24:07 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 3157512DEDE7; Sun, 10 Oct 2021 09:24: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 4HRxMF3vFMz3Mhw; Sun, 10 Oct 2021 09:24: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 16FFF3483; Sun, 10 Oct 2021 09:24: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 19A9O7sZ003284; Sun, 10 Oct 2021 09:24:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O7gp003283; Sun, 10 Oct 2021 09:24:07 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:07 GMT Message-Id: <202110100924.19A9O7gp003283@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 45e930db73af - stable/13 - linux32: add a hack to avoid redefining the type of the savefpu tag List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 45e930db73af952225d04722d83496c397d6450b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=45e930db73af952225d04722d83496c397d6450b commit 45e930db73af952225d04722d83496c397d6450b Author: Konstantin Belousov AuthorDate: 2021-09-13 21:40:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 linux32: add a hack to avoid redefining the type of the savefpu tag (cherry picked from commit 0f6829488ef32142b9ea1c0806fb5ecfe0872c02) --- sys/x86/include/fpu.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/x86/include/fpu.h b/sys/x86/include/fpu.h index 313a03ea55c9..bb8533d599dd 100644 --- a/sys/x86/include/fpu.h +++ b/sys/x86/include/fpu.h @@ -123,10 +123,12 @@ struct savexmm { } __aligned(16); #ifdef __i386__ +#ifndef __M32_BROKEN_MODULE_HACK__ union savefpu { struct save87 sv_87; struct savexmm sv_xmm; }; +#endif /* __M32_BROKEN_MODULE_HACK__ */ #else /* Floating point context. (amd64 fxsave/fxrstor) */ struct savefpu { From nobody Sun Oct 10 09:24:09 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 84D5212DECD8; Sun, 10 Oct 2021 09:24: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 4HRxMF60kyz3Mrc; Sun, 10 Oct 2021 09:24: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 2D7E9304D; Sun, 10 Oct 2021 09:24: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 19A9O9I8003308; Sun, 10 Oct 2021 09:24:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9O9PX003307; Sun, 10 Oct 2021 09:24:09 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:09 GMT Message-Id: <202110100924.19A9O9PX003307@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 4d0d7ea9e752 - stable/13 - amd64: stop using top of the thread' kernel stack for FPU user save area List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 4d0d7ea9e752d7fce2a2f46e4c6c02951aaaf504 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=4d0d7ea9e752d7fce2a2f46e4c6c02951aaaf504 commit 4d0d7ea9e752d7fce2a2f46e4c6c02951aaaf504 Author: Konstantin Belousov AuthorDate: 2021-09-13 21:05:47 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 amd64: stop using top of the thread' kernel stack for FPU user save area MFC note: this commit changes layout of td_md for amd64, resulting in static checks for struct thread ABI in kern_thread.c to fail. Next two commits restore the layout, I decided to not overcomplicate the merge and not do the work that is going to be overwritten immediately. (cherry picked from commit df8dd6025af88a99d34f549fa9591a9b8f9b75b1) --- sys/amd64/amd64/exec_machdep.c | 4 ++-- sys/amd64/amd64/fpu.c | 2 ++ sys/amd64/amd64/machdep.c | 14 -------------- sys/amd64/amd64/vm_machdep.c | 22 +++++++++++++--------- sys/amd64/ia32/ia32_signal.c | 6 +++--- sys/amd64/include/proc.h | 2 ++ sys/kern/kern_thread.c | 2 +- 7 files changed, 23 insertions(+), 29 deletions(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c index 426bb08edd7c..e85ebe741353 100644 --- a/sys/amd64/amd64/exec_machdep.c +++ b/sys/amd64/amd64/exec_machdep.c @@ -135,7 +135,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) if (cpu_max_ext_state_size > sizeof(struct savefpu) && use_xsave) { xfpusave_len = cpu_max_ext_state_size - sizeof(struct savefpu); - xfpusave = __builtin_alloca(xfpusave_len); + xfpusave = (char *)td->td_md.md_fpu_scratch; } else { xfpusave_len = 0; xfpusave = NULL; @@ -674,7 +674,7 @@ set_mcontext(struct thread *td, mcontext_t *mcp) if (mcp->mc_xfpustate_len > cpu_max_ext_state_size - sizeof(struct savefpu)) return (EINVAL); - xfpustate = __builtin_alloca(mcp->mc_xfpustate_len); + xfpustate = (char *)td->td_md.md_fpu_scratch; ret = copyin((void *)mcp->mc_xfpustate, xfpustate, mcp->mc_xfpustate_len); if (ret != 0) diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c index d7936b3b1922..24986958d4ca 100644 --- a/sys/amd64/amd64/fpu.c +++ b/sys/amd64/amd64/fpu.c @@ -448,6 +448,8 @@ fpuinitstate(void *arg __unused) xsave_area_elm_descr), M_DEVBUF, M_WAITOK | M_ZERO); } + cpu_thread_alloc(&thread0); + saveintr = intr_disable(); stop_emulating(); diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index db1b88faeabb..512fee0de7df 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1266,7 +1266,6 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) caddr_t kmdp; int gsel_tss, x; struct pcpu *pc; - struct xstate_hdr *xhdr; uint64_t cr3, rsp0; pml4_entry_t *pml4e; pdp_entry_t *pdpe; @@ -1572,19 +1571,6 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) msgbufinit(msgbufp, msgbufsize); fpuinit(); - /* - * Reinitialize thread0's stack base now that the xsave area size is - * known. Set up thread0's pcb save area after fpuinit calculated fpu - * save area size. Zero out the extended state header in fpu save area. - */ - set_top_of_stack_td(&thread0); - thread0.td_pcb->pcb_save = get_pcb_user_save_td(&thread0); - bzero(thread0.td_pcb->pcb_save, cpu_max_ext_state_size); - if (use_xsave) { - xhdr = (struct xstate_hdr *)(get_pcb_user_save_td(&thread0) + - 1); - xhdr->xstate_bv = xsave_mask; - } /* make an initial tss so cpu can get interrupt stack on syscall! */ rsp0 = thread0.td_md.md_stack_base; /* Ensure the stack is aligned to 16 bytes */ diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c index 7d65269410e0..5c3cd638c92d 100644 --- a/sys/amd64/amd64/vm_machdep.c +++ b/sys/amd64/amd64/vm_machdep.c @@ -90,19 +90,17 @@ void set_top_of_stack_td(struct thread *td) { td->td_md.md_stack_base = td->td_kstack + - td->td_kstack_pages * PAGE_SIZE - - roundup2(cpu_max_ext_state_size, XSAVE_AREA_ALIGN); + td->td_kstack_pages * PAGE_SIZE; } struct savefpu * get_pcb_user_save_td(struct thread *td) { - vm_offset_t p; - - p = td->td_md.md_stack_base; - KASSERT((p % XSAVE_AREA_ALIGN) == 0, - ("Unaligned pcb_user_save area ptr %#lx td %p", p, td)); - return ((struct savefpu *)p); + KASSERT(((vm_offset_t)td->td_md.md_usr_fpu_save % + XSAVE_AREA_ALIGN) == 0, + ("Unaligned pcb_user_save area ptr %p td %p", + td->td_md.md_usr_fpu_save, td)); + return (td->td_md.md_usr_fpu_save); } struct pcb * @@ -384,6 +382,8 @@ cpu_thread_alloc(struct thread *td) set_top_of_stack_td(td); td->td_pcb = pcb = get_pcb_td(td); td->td_frame = (struct trapframe *)td->td_md.md_stack_base - 1; + td->td_md.md_usr_fpu_save = fpu_save_area_alloc(); + td->td_md.md_fpu_scratch = fpu_save_area_alloc(); pcb->pcb_save = get_pcb_user_save_pcb(pcb); if (use_xsave) { xhdr = (struct xstate_hdr *)(pcb->pcb_save + 1); @@ -395,8 +395,12 @@ cpu_thread_alloc(struct thread *td) void cpu_thread_free(struct thread *td) { - cpu_thread_clean(td); + + fpu_save_area_free(td->td_md.md_usr_fpu_save); + td->td_md.md_usr_fpu_save = NULL; + fpu_save_area_free(td->td_md.md_fpu_scratch); + td->td_md.md_fpu_scratch = NULL; } bool diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index 49b5797d68fd..9b67c7001a87 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -210,7 +210,7 @@ ia32_set_mcontext(struct thread *td, struct ia32_mcontext *mcp) if (mcp->mc_xfpustate_len > cpu_max_ext_state_size - sizeof(struct savefpu)) return (EINVAL); - xfpustate = __builtin_alloca(mcp->mc_xfpustate_len); + xfpustate = (char *)td->td_md.md_fpu_scratch; ret = copyin(PTRIN(mcp->mc_xfpustate), xfpustate, mcp->mc_xfpustate_len); if (ret != 0) @@ -579,7 +579,7 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) if (cpu_max_ext_state_size > sizeof(struct savefpu) && use_xsave) { xfpusave_len = cpu_max_ext_state_size - sizeof(struct savefpu); - xfpusave = __builtin_alloca(xfpusave_len); + xfpusave = (char *)td->td_md.md_fpu_scratch; } else { xfpusave_len = 0; xfpusave = NULL; @@ -882,7 +882,7 @@ freebsd32_sigreturn(td, uap) td->td_proc->p_pid, td->td_name, xfpustate_len); return (EINVAL); } - xfpustate = __builtin_alloca(xfpustate_len); + xfpustate = (char *)td->td_md.md_fpu_scratch; error = copyin(PTRIN(ucp->uc_mcontext.mc_xfpustate), xfpustate, xfpustate_len); if (error != 0) { diff --git a/sys/amd64/include/proc.h b/sys/amd64/include/proc.h index 59796e729ac4..12fb7bf9724c 100644 --- a/sys/amd64/include/proc.h +++ b/sys/amd64/include/proc.h @@ -75,6 +75,8 @@ struct mdthread { int md_efirt_dis_pf; /* (k) */ struct pcb md_pcb; vm_offset_t md_stack_base; + struct savefpu *md_usr_fpu_save; + struct savefpu *md_fpu_scratch; }; struct mdproc { diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c index 48aac8e057b8..a8282c94b8e1 100644 --- a/sys/kern/kern_thread.c +++ b/sys/kern/kern_thread.c @@ -90,7 +90,7 @@ _Static_assert(offsetof(struct thread, td_pflags) == 0x104, "struct thread KBI td_pflags"); _Static_assert(offsetof(struct thread, td_frame) == 0x4a0, "struct thread KBI td_frame"); -_Static_assert(offsetof(struct thread, td_emuldata) == 0x6b0, +_Static_assert(offsetof(struct thread, td_emuldata) == 0x6c0, "struct thread KBI td_emuldata"); _Static_assert(offsetof(struct proc, p_flag) == 0xb8, "struct proc KBI p_flag"); From nobody Sun Oct 10 09:24:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8EE7812DECFA; Sun, 10 Oct 2021 09:24: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 4HRxMH11msz3Mrh; Sun, 10 Oct 2021 09:24: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 5C56330C6; Sun, 10 Oct 2021 09:24: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 19A9OA4b003336; Sun, 10 Oct 2021 09:24:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OAlN003334; Sun, 10 Oct 2021 09:24:10 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:10 GMT Message-Id: <202110100924.19A9OAlN003334@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 3804d1ff773b - stable/13 - amd64: eliminate td_md.md_fpu_scratch List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 3804d1ff773be31c1b6c64f8a6c870266f2e87cd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=3804d1ff773be31c1b6c64f8a6c870266f2e87cd commit 3804d1ff773be31c1b6c64f8a6c870266f2e87cd Author: Konstantin Belousov AuthorDate: 2021-09-15 18:37:47 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 amd64: eliminate td_md.md_fpu_scratch (cherry picked from commit bd9e0f5df681da8b5ef05a587b4b5b07572d3fc2) --- sys/amd64/amd64/exec_machdep.c | 47 +++++++++++++++++++----------------------- sys/amd64/amd64/vm_machdep.c | 3 --- sys/amd64/ia32/ia32_signal.c | 43 ++++++++++++++++---------------------- sys/amd64/include/proc.h | 1 - sys/kern/kern_thread.c | 2 +- 5 files changed, 40 insertions(+), 56 deletions(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c index e85ebe741353..492aab177b9b 100644 --- a/sys/amd64/amd64/exec_machdep.c +++ b/sys/amd64/amd64/exec_machdep.c @@ -96,7 +96,7 @@ __FBSDID("$FreeBSD$"); #include static void get_fpcontext(struct thread *td, mcontext_t *mcp, - char *xfpusave, size_t xfpusave_len); + char **xfpusave, size_t *xfpusave_len); static int set_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpustate, size_t xfpustate_len); @@ -133,14 +133,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) regs = td->td_frame; oonstack = sigonstack(regs->tf_rsp); - if (cpu_max_ext_state_size > sizeof(struct savefpu) && use_xsave) { - xfpusave_len = cpu_max_ext_state_size - sizeof(struct savefpu); - xfpusave = (char *)td->td_md.md_fpu_scratch; - } else { - xfpusave_len = 0; - xfpusave = NULL; - } - /* Save user context. */ bzero(&sf, sizeof(sf)); sf.sf_uc.uc_sigmask = *mask; @@ -150,7 +142,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) sf.sf_uc.uc_mcontext.mc_onstack = (oonstack) ? 1 : 0; bcopy(regs, &sf.sf_uc.uc_mcontext.mc_rdi, sizeof(*regs)); sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ - get_fpcontext(td, &sf.sf_uc.uc_mcontext, xfpusave, xfpusave_len); + get_fpcontext(td, &sf.sf_uc.uc_mcontext, &xfpusave, &xfpusave_len); fpstate_drop(td); update_pcb_bases(pcb); sf.sf_uc.uc_mcontext.mc_fsbase = pcb->pcb_fsbase; @@ -301,10 +293,11 @@ sys_sigreturn(struct thread *td, struct sigreturn_args *uap) p->p_pid, td->td_name, xfpustate_len); return (EINVAL); } - xfpustate = __builtin_alloca(xfpustate_len); + xfpustate = (char *)fpu_save_area_alloc(); error = copyin((const void *)uc.uc_mcontext.mc_xfpustate, xfpustate, xfpustate_len); if (error != 0) { + fpu_save_area_free((struct savefpu *)xfpustate); uprintf( "pid %d (%s): sigreturn copying xfpustate failed\n", p->p_pid, td->td_name); @@ -315,6 +308,7 @@ sys_sigreturn(struct thread *td, struct sigreturn_args *uap) xfpustate_len = 0; } ret = set_fpcontext(td, &ucp->uc_mcontext, xfpustate, xfpustate_len); + fpu_save_area_free((struct savefpu *)xfpustate); if (ret != 0) { uprintf("pid %d (%s): sigreturn set_fpcontext err %d\n", p->p_pid, td->td_name, ret); @@ -674,14 +668,17 @@ set_mcontext(struct thread *td, mcontext_t *mcp) if (mcp->mc_xfpustate_len > cpu_max_ext_state_size - sizeof(struct savefpu)) return (EINVAL); - xfpustate = (char *)td->td_md.md_fpu_scratch; + xfpustate = (char *)fpu_save_area_alloc(); ret = copyin((void *)mcp->mc_xfpustate, xfpustate, mcp->mc_xfpustate_len); - if (ret != 0) + if (ret != 0) { + fpu_save_area_free((struct savefpu *)xfpustate); return (ret); + } } else xfpustate = NULL; ret = set_fpcontext(td, mcp, xfpustate, mcp->mc_xfpustate_len); + fpu_save_area_free((struct savefpu *)xfpustate); if (ret != 0) return (ret); tp->tf_r15 = mcp->mc_r15; @@ -719,26 +716,24 @@ set_mcontext(struct thread *td, mcontext_t *mcp) } static void -get_fpcontext(struct thread *td, mcontext_t *mcp, char *xfpusave, - size_t xfpusave_len) +get_fpcontext(struct thread *td, mcontext_t *mcp, char **xfpusave, + size_t *xfpusave_len) { - size_t max_len, len; - mcp->mc_ownedfp = fpugetregs(td); bcopy(get_pcb_user_save_td(td), &mcp->mc_fpstate[0], sizeof(mcp->mc_fpstate)); mcp->mc_fpformat = fpuformat(); - if (!use_xsave || xfpusave_len == 0) + if (xfpusave == NULL) return; - max_len = cpu_max_ext_state_size - sizeof(struct savefpu); - len = xfpusave_len; - if (len > max_len) { - len = max_len; - bzero(xfpusave + max_len, len - max_len); + if (!use_xsave || cpu_max_ext_state_size <= sizeof(struct savefpu)) { + *xfpusave_len = 0; + *xfpusave = NULL; + } else { + mcp->mc_flags |= _MC_HASFPXSTATE; + *xfpusave_len = mcp->mc_xfpustate_len = + cpu_max_ext_state_size - sizeof(struct savefpu); + *xfpusave = (char *)(get_pcb_user_save_td(td) + 1); } - mcp->mc_flags |= _MC_HASFPXSTATE; - mcp->mc_xfpustate_len = len; - bcopy(get_pcb_user_save_td(td) + 1, xfpusave, len); } static int diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c index 5c3cd638c92d..e9ff1199dcb7 100644 --- a/sys/amd64/amd64/vm_machdep.c +++ b/sys/amd64/amd64/vm_machdep.c @@ -383,7 +383,6 @@ cpu_thread_alloc(struct thread *td) td->td_pcb = pcb = get_pcb_td(td); td->td_frame = (struct trapframe *)td->td_md.md_stack_base - 1; td->td_md.md_usr_fpu_save = fpu_save_area_alloc(); - td->td_md.md_fpu_scratch = fpu_save_area_alloc(); pcb->pcb_save = get_pcb_user_save_pcb(pcb); if (use_xsave) { xhdr = (struct xstate_hdr *)(pcb->pcb_save + 1); @@ -399,8 +398,6 @@ cpu_thread_free(struct thread *td) fpu_save_area_free(td->td_md.md_usr_fpu_save); td->td_md.md_usr_fpu_save = NULL; - fpu_save_area_free(td->td_md.md_fpu_scratch); - td->td_md.md_fpu_scratch = NULL; } bool diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index 9b67c7001a87..1ca19072a1dc 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -87,10 +87,8 @@ static void freebsd4_ia32_sendsig(sig_t, ksiginfo_t *, sigset_t *); static void ia32_get_fpcontext(struct thread *td, struct ia32_mcontext *mcp, - char *xfpusave, size_t xfpusave_len) + char **xfpusave, size_t *xfpusave_len) { - size_t max_len, len; - /* * XXX Format of 64bit and 32bit FXSAVE areas differs. FXSAVE * in 32bit mode saves %cs and %ds, while on 64bit it saves @@ -101,17 +99,15 @@ ia32_get_fpcontext(struct thread *td, struct ia32_mcontext *mcp, bcopy(get_pcb_user_save_td(td), &mcp->mc_fpstate[0], sizeof(mcp->mc_fpstate)); mcp->mc_fpformat = fpuformat(); - if (!use_xsave || xfpusave_len == 0) - return; - max_len = cpu_max_ext_state_size - sizeof(struct savefpu); - len = xfpusave_len; - if (len > max_len) { - len = max_len; - bzero(xfpusave + max_len, len - max_len); + if (!use_xsave || cpu_max_ext_state_size <= sizeof(struct savefpu)) { + *xfpusave_len = 0; + *xfpusave = NULL; + } else { + mcp->mc_flags |= _MC_IA32_HASFPXSTATE; + *xfpusave_len = mcp->mc_xfpustate_len = + cpu_max_ext_state_size - sizeof(struct savefpu); + *xfpusave = (char *)(get_pcb_user_save_td(td) + 1); } - mcp->mc_flags |= _MC_IA32_HASFPXSTATE; - mcp->mc_xfpustate_len = len; - bcopy(get_pcb_user_save_td(td) + 1, xfpusave, len); } static int @@ -210,14 +206,17 @@ ia32_set_mcontext(struct thread *td, struct ia32_mcontext *mcp) if (mcp->mc_xfpustate_len > cpu_max_ext_state_size - sizeof(struct savefpu)) return (EINVAL); - xfpustate = (char *)td->td_md.md_fpu_scratch; + xfpustate = (char *)fpu_save_area_alloc(); ret = copyin(PTRIN(mcp->mc_xfpustate), xfpustate, mcp->mc_xfpustate_len); - if (ret != 0) + if (ret != 0) { + fpu_save_area_free((struct savefpu *)xfpustate); return (ret); + } } else xfpustate = NULL; ret = ia32_set_fpcontext(td, mcp, xfpustate, mcp->mc_xfpustate_len); + fpu_save_area_free((struct savefpu *)xfpustate); if (ret != 0) return (ret); tp->tf_gs = mcp->mc_gs; @@ -577,14 +576,6 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) regs = td->td_frame; oonstack = sigonstack(regs->tf_rsp); - if (cpu_max_ext_state_size > sizeof(struct savefpu) && use_xsave) { - xfpusave_len = cpu_max_ext_state_size - sizeof(struct savefpu); - xfpusave = (char *)td->td_md.md_fpu_scratch; - } else { - xfpusave_len = 0; - xfpusave = NULL; - } - /* Save user context. */ bzero(&sf, sizeof(sf)); sf.sf_uc.uc_sigmask = *mask; @@ -613,7 +604,7 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) sf.sf_uc.uc_mcontext.mc_fs = regs->tf_fs; sf.sf_uc.uc_mcontext.mc_gs = regs->tf_gs; sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ - ia32_get_fpcontext(td, &sf.sf_uc.uc_mcontext, xfpusave, xfpusave_len); + ia32_get_fpcontext(td, &sf.sf_uc.uc_mcontext, &xfpusave, &xfpusave_len); fpstate_drop(td); sf.sf_uc.uc_mcontext.mc_fsbase = td->td_pcb->pcb_fsbase; sf.sf_uc.uc_mcontext.mc_gsbase = td->td_pcb->pcb_gsbase; @@ -882,10 +873,11 @@ freebsd32_sigreturn(td, uap) td->td_proc->p_pid, td->td_name, xfpustate_len); return (EINVAL); } - xfpustate = (char *)td->td_md.md_fpu_scratch; + xfpustate = (char *)fpu_save_area_alloc(); error = copyin(PTRIN(ucp->uc_mcontext.mc_xfpustate), xfpustate, xfpustate_len); if (error != 0) { + fpu_save_area_free((struct savefpu *)xfpustate); uprintf( "pid %d (%s): sigreturn copying xfpustate failed\n", td->td_proc->p_pid, td->td_name); @@ -897,6 +889,7 @@ freebsd32_sigreturn(td, uap) } ret = ia32_set_fpcontext(td, &ucp->uc_mcontext, xfpustate, xfpustate_len); + fpu_save_area_free((struct savefpu *)xfpustate); if (ret != 0) { uprintf("pid %d (%s): sigreturn set_fpcontext err %d\n", td->td_proc->p_pid, td->td_name, ret); diff --git a/sys/amd64/include/proc.h b/sys/amd64/include/proc.h index 12fb7bf9724c..a55a8d9343e7 100644 --- a/sys/amd64/include/proc.h +++ b/sys/amd64/include/proc.h @@ -76,7 +76,6 @@ struct mdthread { struct pcb md_pcb; vm_offset_t md_stack_base; struct savefpu *md_usr_fpu_save; - struct savefpu *md_fpu_scratch; }; struct mdproc { diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c index a8282c94b8e1..48aac8e057b8 100644 --- a/sys/kern/kern_thread.c +++ b/sys/kern/kern_thread.c @@ -90,7 +90,7 @@ _Static_assert(offsetof(struct thread, td_pflags) == 0x104, "struct thread KBI td_pflags"); _Static_assert(offsetof(struct thread, td_frame) == 0x4a0, "struct thread KBI td_frame"); -_Static_assert(offsetof(struct thread, td_emuldata) == 0x6c0, +_Static_assert(offsetof(struct thread, td_emuldata) == 0x6b0, "struct thread KBI td_emuldata"); _Static_assert(offsetof(struct proc, p_flag) == 0xb8, "struct proc KBI p_flag"); From nobody Sun Oct 10 09:24:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9A57D12DF226; Sun, 10 Oct 2021 09:24: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 4HRxMK4c0jz3N4N; Sun, 10 Oct 2021 09:24: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 82CC92D58; Sun, 10 Oct 2021 09:24: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 19A9OC7r003386; Sun, 10 Oct 2021 09:24:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OCjo003385; Sun, 10 Oct 2021 09:24:12 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:12 GMT Message-Id: <202110100924.19A9OCjo003385@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 83c2118058fd - stable/13 - ia32_get_fpcontext(): xfpusave can be legitimately NULL List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 83c2118058fda07dff1248e4e1b2439fb4700d8a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=83c2118058fda07dff1248e4e1b2439fb4700d8a commit 83c2118058fda07dff1248e4e1b2439fb4700d8a Author: Konstantin Belousov AuthorDate: 2021-09-21 21:09:34 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 ia32_get_fpcontext(): xfpusave can be legitimately NULL (cherry picked from commit c2ee4dfd04970f1597eea58bb30eb93e1ed5a491) --- sys/amd64/ia32/ia32_signal.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index 1ca19072a1dc..ab7100f5b9fb 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -99,6 +99,8 @@ ia32_get_fpcontext(struct thread *td, struct ia32_mcontext *mcp, bcopy(get_pcb_user_save_td(td), &mcp->mc_fpstate[0], sizeof(mcp->mc_fpstate)); mcp->mc_fpformat = fpuformat(); + if (xfpusave == NULL) + return; if (!use_xsave || cpu_max_ext_state_size <= sizeof(struct savefpu)) { *xfpusave_len = 0; *xfpusave = NULL; From nobody Sun Oct 10 09:24:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AB45612DF096; Sun, 10 Oct 2021 09:24: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 4HRxMJ4VhVz3MnY; Sun, 10 Oct 2021 09:24: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 5DA8A304E; Sun, 10 Oct 2021 09:24: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 19A9OBAt003362; Sun, 10 Oct 2021 09:24:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OBqh003361; Sun, 10 Oct 2021 09:24:11 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:11 GMT Message-Id: <202110100924.19A9OBqh003361@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 682f5b938548 - stable/13 - amd64: consistently use uprintf() to report weird situations in sigreturn List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 682f5b938548fa842309b94a324fd5593d20613b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=682f5b938548fa842309b94a324fd5593d20613b commit 682f5b938548fa842309b94a324fd5593d20613b Author: Konstantin Belousov AuthorDate: 2021-09-16 13:48:27 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 amd64: consistently use uprintf() to report weird situations in sigreturn (cherry picked from commit 2e79a216329f62a78dbbc72256e782353e220968) --- sys/amd64/amd64/exec_machdep.c | 5 ++--- sys/amd64/linux/linux_sysvec.c | 6 ++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c index 492aab177b9b..5c5132278cd0 100644 --- a/sys/amd64/amd64/exec_machdep.c +++ b/sys/amd64/amd64/exec_machdep.c @@ -197,9 +197,8 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) (xfpusave != NULL && copyout(xfpusave, (void *)sf.sf_uc.uc_mcontext.mc_xfpustate, xfpusave_len) != 0)) { -#ifdef DEBUG - printf("process %ld has trashed its stack\n", (long)p->p_pid); -#endif + uprintf("pid %d comm %s has trashed its stack, killing\n", + p->p_pid, p->p_comm); PROC_LOCK(p); sigexit(td, SIGILL); } diff --git a/sys/amd64/linux/linux_sysvec.c b/sys/amd64/linux/linux_sysvec.c index 28fac2ea7452..e02221c324ec 100644 --- a/sys/amd64/linux/linux_sysvec.c +++ b/sys/amd64/linux/linux_sysvec.c @@ -525,7 +525,8 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args) * one less debugger trap, so allowing it is fairly harmless. */ if (!EFL_SECURE(rflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { - printf("linux_rt_sigreturn: rflags = 0x%lx\n", rflags); + uprintf("pid %d comm %s linux mangled rflags %#lx\n", + p->p_pid, p->p_comm, rflags); return (EINVAL); } @@ -535,7 +536,8 @@ linux_rt_sigreturn(struct thread *td, struct linux_rt_sigreturn_args *args) * other selectors, invalid %eip's and invalid %esp's. */ if (!CS_SECURE(context->sc_cs)) { - printf("linux_rt_sigreturn: cs = 0x%x\n", context->sc_cs); + uprintf("pid %d comm %s linux mangled cs %#x\n", + p->p_pid, p->p_comm, context->sc_cs); ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGBUS; ksi.ksi_code = BUS_OBJERR; From nobody Sun Oct 10 09:24:13 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0748E12DF241; Sun, 10 Oct 2021 09:24: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 4HRxMM1nN5z3N0g; Sun, 10 Oct 2021 09:24: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 A2C8430C7; Sun, 10 Oct 2021 09:24: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 19A9ODxU003410; Sun, 10 Oct 2021 09:24:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9ODXA003409; Sun, 10 Oct 2021 09:24:13 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:13 GMT Message-Id: <202110100924.19A9ODXA003409@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a53e3f3bf2bc - stable/13 - Revert "linux32: add a hack to avoid redefining the type of the savefpu tag" List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: a53e3f3bf2bc5a31f281751a3ed46755a05247d6 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a53e3f3bf2bc5a31f281751a3ed46755a05247d6 commit a53e3f3bf2bc5a31f281751a3ed46755a05247d6 Author: Konstantin Belousov AuthorDate: 2021-09-22 18:54:39 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:17 +0000 Revert "linux32: add a hack to avoid redefining the type of the savefpu tag" (cherry picked from commit e36d0e86e3282cde5a12b6a623e6deefaabfd0c4) --- sys/amd64/include/proc.h | 2 +- sys/x86/include/fpu.h | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/amd64/include/proc.h b/sys/amd64/include/proc.h index a55a8d9343e7..507529f6506b 100644 --- a/sys/amd64/include/proc.h +++ b/sys/amd64/include/proc.h @@ -75,7 +75,7 @@ struct mdthread { int md_efirt_dis_pf; /* (k) */ struct pcb md_pcb; vm_offset_t md_stack_base; - struct savefpu *md_usr_fpu_save; + void *md_usr_fpu_save; }; struct mdproc { diff --git a/sys/x86/include/fpu.h b/sys/x86/include/fpu.h index bb8533d599dd..313a03ea55c9 100644 --- a/sys/x86/include/fpu.h +++ b/sys/x86/include/fpu.h @@ -123,12 +123,10 @@ struct savexmm { } __aligned(16); #ifdef __i386__ -#ifndef __M32_BROKEN_MODULE_HACK__ union savefpu { struct save87 sv_87; struct savexmm sv_xmm; }; -#endif /* __M32_BROKEN_MODULE_HACK__ */ #else /* Floating point context. (amd64 fxsave/fxrstor) */ struct savefpu { From nobody Sun Oct 10 09:24:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 5B2D612DF26C; Sun, 10 Oct 2021 09:24: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 4HRxMQ2NMTz3N4g; Sun, 10 Oct 2021 09:24: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 BB2033408; Sun, 10 Oct 2021 09:24: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 19A9OElr003434; Sun, 10 Oct 2021 09:24:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OEJ3003433; Sun, 10 Oct 2021 09:24:14 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:14 GMT Message-Id: <202110100924.19A9OEJ3003433@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 81138a809988 - stable/13 - amd64 sendsig: fix context corruption List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 81138a80998885e1f84dc7934a334b54b9e61160 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=81138a80998885e1f84dc7934a334b54b9e61160 commit 81138a80998885e1f84dc7934a334b54b9e61160 Author: Konstantin Belousov AuthorDate: 2021-09-27 16:57:25 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 amd64 sendsig: fix context corruption (cherry picked from commit b1e2f063ae912dc5b7a7f6638ccb3aff14f299cf) --- sys/amd64/amd64/exec_machdep.c | 2 +- sys/amd64/ia32/ia32_signal.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/amd64/amd64/exec_machdep.c b/sys/amd64/amd64/exec_machdep.c index 5c5132278cd0..9a2b45015d92 100644 --- a/sys/amd64/amd64/exec_machdep.c +++ b/sys/amd64/amd64/exec_machdep.c @@ -143,7 +143,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) bcopy(regs, &sf.sf_uc.uc_mcontext.mc_rdi, sizeof(*regs)); sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ get_fpcontext(td, &sf.sf_uc.uc_mcontext, &xfpusave, &xfpusave_len); - fpstate_drop(td); update_pcb_bases(pcb); sf.sf_uc.uc_mcontext.mc_fsbase = pcb->pcb_fsbase; sf.sf_uc.uc_mcontext.mc_gsbase = pcb->pcb_gsbase; @@ -203,6 +202,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) sigexit(td, SIGILL); } + fpstate_drop(td); regs->tf_rsp = (long)sfp; regs->tf_rip = p->p_sysent->sv_sigcode_base; regs->tf_rflags &= ~(PSL_T | PSL_D); diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index ab7100f5b9fb..6c879eccfc77 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -607,7 +607,6 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) sf.sf_uc.uc_mcontext.mc_gs = regs->tf_gs; sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ ia32_get_fpcontext(td, &sf.sf_uc.uc_mcontext, &xfpusave, &xfpusave_len); - fpstate_drop(td); sf.sf_uc.uc_mcontext.mc_fsbase = td->td_pcb->pcb_fsbase; sf.sf_uc.uc_mcontext.mc_gsbase = td->td_pcb->pcb_gsbase; @@ -661,6 +660,7 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) sigexit(td, SIGILL); } + fpstate_drop(td); regs->tf_rsp = (uintptr_t)sfp; regs->tf_rip = p->p_sysent->sv_sigcode_base; regs->tf_rflags &= ~(PSL_T | PSL_D); From nobody Sun Oct 10 09:24:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7F4C512DF380; Sun, 10 Oct 2021 09:24: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 4HRxMR727wz3N0v; Sun, 10 Oct 2021 09:24: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 DDE36304F; Sun, 10 Oct 2021 09:24: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 19A9OF8e003458; Sun, 10 Oct 2021 09:24:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OFTo003457; Sun, 10 Oct 2021 09:24:15 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:15 GMT Message-Id: <202110100924.19A9OFTo003457@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 1f9fbf1774c2 - stable/13 - apic: initialize lapic_paddr statically List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 1f9fbf1774c2ed79bc575ff2efe7d7318573b1ea Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=1f9fbf1774c2ed79bc575ff2efe7d7318573b1ea commit 1f9fbf1774c2ed79bc575ff2efe7d7318573b1ea Author: Konstantin Belousov AuthorDate: 2021-10-05 13:19:56 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 apic: initialize lapic_paddr statically (cherry picked from commit f8d3368b4346237deeaaaa91308ce78f8e2ea820) --- sys/x86/x86/local_apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index ee549559f5b1..ab19a6c7bc69 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -193,7 +193,7 @@ static u_int32_t lapic_timer_divisors[] = { extern inthand_t IDTVEC(rsvd_pti), IDTVEC(rsvd); volatile char *lapic_map; -vm_paddr_t lapic_paddr; +vm_paddr_t lapic_paddr = DEFAULT_APIC_BASE; int x2apic_mode; int lapic_eoi_suppression; static int lapic_timer_tsc_deadline; From nobody Sun Oct 10 09:24:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2AC8B12DF515; Sun, 10 Oct 2021 09:24: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 4HRxMT0hbgz3NG9; Sun, 10 Oct 2021 09:24: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 048BF2D59; Sun, 10 Oct 2021 09:24: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 19A9OG4w003491; Sun, 10 Oct 2021 09:24:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OG0w003490; Sun, 10 Oct 2021 09:24:16 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:16 GMT Message-Id: <202110100924.19A9OG0w003490@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 56c136a0d5ee - stable/13 - amd64: add pmap_page_set_memattr_noflush() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 56c136a0d5eea605f2537d79c4e110460df83a50 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=56c136a0d5eea605f2537d79c4e110460df83a50 commit 56c136a0d5eea605f2537d79c4e110460df83a50 Author: Konstantin Belousov AuthorDate: 2021-10-05 14:12:05 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 amd64: add pmap_page_set_memattr_noflush() (cherry picked from commit 33c17670afdb008097858d2fff8d4c4a47d68158) --- sys/amd64/amd64/pmap.c | 17 +++++++++++++++++ sys/amd64/include/pmap.h | 1 + 2 files changed, 18 insertions(+) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index b9a83cd8bbad..83f2a4c88bf7 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -9201,6 +9201,23 @@ pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma) panic("memory attribute change on the direct map failed"); } +void +pmap_page_set_memattr_noflush(vm_page_t m, vm_memattr_t ma) +{ + int error; + + m->md.pat_mode = ma; + + if ((m->flags & PG_FICTITIOUS) != 0) + return; + PMAP_LOCK(kernel_pmap); + error = pmap_change_props_locked(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), + PAGE_SIZE, PROT_NONE, m->md.pat_mode, 0); + PMAP_UNLOCK(kernel_pmap); + if (error != 0) + panic("memory attribute change on the direct map failed"); +} + /* * Changes the specified virtual address range's memory type to that given by * the parameter "mode". The specified virtual address range must be diff --git a/sys/amd64/include/pmap.h b/sys/amd64/include/pmap.h index 6fb240e6363a..0ac91d17792a 100644 --- a/sys/amd64/include/pmap.h +++ b/sys/amd64/include/pmap.h @@ -481,6 +481,7 @@ void *pmap_mapdev_pciecfg(vm_paddr_t pa, vm_size_t size); bool pmap_not_in_di(void); boolean_t pmap_page_is_mapped(vm_page_t m); void pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma); +void pmap_page_set_memattr_noflush(vm_page_t m, vm_memattr_t ma); void pmap_pinit_pml4(vm_page_t); void pmap_pinit_pml5(vm_page_t); bool pmap_ps_enabled(pmap_t pmap); From nobody Sun Oct 10 09:24:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 429D612DF516; Sun, 10 Oct 2021 09:24: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 4HRxMT4lN5z3N9h; Sun, 10 Oct 2021 09:24: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 25A5E3409; Sun, 10 Oct 2021 09:24: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 19A9OINp003515; Sun, 10 Oct 2021 09:24:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OI9b003514; Sun, 10 Oct 2021 09:24:18 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:18 GMT Message-Id: <202110100924.19A9OI9b003514@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 5766c494ad69 - stable/13 - amd64 efirt: do not flush cache for runtime pages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 5766c494ad69cf814d33cfbb915ca1cd3892aa11 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=5766c494ad69cf814d33cfbb915ca1cd3892aa11 commit 5766c494ad69cf814d33cfbb915ca1cd3892aa11 Author: Konstantin Belousov AuthorDate: 2021-10-05 14:14:11 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 amd64 efirt: do not flush cache for runtime pages (cherry picked from commit ce21d4bff1bc7e562471eeab6fb012b35029bf50) --- sys/amd64/amd64/efirt_machdep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/amd64/amd64/efirt_machdep.c b/sys/amd64/amd64/efirt_machdep.c index 9f0fb00aa2ef..d819ff4f38bb 100644 --- a/sys/amd64/amd64/efirt_machdep.c +++ b/sys/amd64/amd64/efirt_machdep.c @@ -254,7 +254,7 @@ efi_create_1t1_map(struct efi_md *map, int ndesc, int descsz) 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); + pmap_page_set_memattr_noflush(m, mode); } } VM_OBJECT_WUNLOCK(obj_1t1_pt); From nobody Sun Oct 10 09:24:19 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id DF78612DF684; Sun, 10 Oct 2021 09:24: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 4HRxMW27nHz3N12; Sun, 10 Oct 2021 09:24: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 4C1963484; Sun, 10 Oct 2021 09:24: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 19A9OJvi003539; Sun, 10 Oct 2021 09:24:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OJes003538; Sun, 10 Oct 2021 09:24:19 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:19 GMT Message-Id: <202110100924.19A9OJes003538@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 8c384596a83f - stable/13 - Fix mistakes in link(2) and shm_open(2) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 8c384596a83fc807f1ddb07bad6dffca6ad804ac Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=8c384596a83fc807f1ddb07bad6dffca6ad804ac commit 8c384596a83fc807f1ddb07bad6dffca6ad804ac Author: Konstantin Belousov AuthorDate: 2021-10-06 03:38:26 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 Fix mistakes in link(2) and shm_open(2) PR: 258957 (cherry picked from commit 8d3cd7767a2ea1816c31e1dbe7957253e723e559) --- lib/libc/sys/link.2 | 4 ++-- lib/libc/sys/shm_open.2 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libc/sys/link.2 b/lib/libc/sys/link.2 index 37225f9571d0..ab686266cd21 100644 --- a/lib/libc/sys/link.2 +++ b/lib/libc/sys/link.2 @@ -126,9 +126,9 @@ flag in the manual page. .It Dv AT_EMPTY_PATH If the -.Fa path2 +.Fa name1 argument is an empty string, link the file referenced by the descriptor -.Fa fd2 . +.Fa fd1 . The operation requires that the calling process has the .Dv PRIV_VFS_FHOPEN privilege, effectively being executed with effective user diff --git a/lib/libc/sys/shm_open.2 b/lib/libc/sys/shm_open.2 index e231115613cf..ec12f9f2c0b7 100644 --- a/lib/libc/sys/shm_open.2 +++ b/lib/libc/sys/shm_open.2 @@ -369,7 +369,7 @@ does not begin with a slash character. .It Bq Er ENOENT .Dv O_CREAT -is specified and the named shared memory object does not exist. +is not specified and the named shared memory object does not exist. .It Bq Er EEXIST .Dv O_CREAT and From nobody Sun Oct 10 09:24:20 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 13D2A12DF55B; Sun, 10 Oct 2021 09:24: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 4HRxMX6HnNz3N7c; Sun, 10 Oct 2021 09:24: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 8482B3217; Sun, 10 Oct 2021 09:24: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 19A9OK5u003563; Sun, 10 Oct 2021 09:24:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OK1H003562; Sun, 10 Oct 2021 09:24:20 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:20 GMT Message-Id: <202110100924.19A9OK1H003562@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: c2c6108a1fe5 - stable/13 - Move td_pflags2 TDP2_SIGWAIT to td_flags TDF_SIGWAIT List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: c2c6108a1fe546d16d3444d9ef44e4f55f3206fc Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c2c6108a1fe546d16d3444d9ef44e4f55f3206fc commit c2c6108a1fe546d16d3444d9ef44e4f55f3206fc Author: Konstantin Belousov AuthorDate: 2021-10-03 01:52:39 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 Move td_pflags2 TDP2_SIGWAIT to td_flags TDF_SIGWAIT (cherry picked from commit b599982b65e36523a8aa828a9d504135144158db) --- sys/kern/kern_sig.c | 17 +++++++++++------ sys/sys/proc.h | 3 +-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index d61812ad3043..059c1716a89b 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1297,8 +1297,11 @@ kern_sigtimedwait(struct thread *td, sigset_t waitset, ksiginfo_t *ksi, 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; + !kern_sig_discard_ign) { + thread_lock(td); + td->td_flags |= TDF_SIGWAIT; + thread_unlock(td); + } for (;;) { mtx_lock(&ps->ps_mtx); sig = cursig(td); @@ -1362,7 +1365,9 @@ 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; + thread_lock(td); + td->td_flags &= ~TDF_SIGWAIT; + thread_unlock(td); new_block = saved_mask; SIGSETNAND(new_block, td->td_sigmask); @@ -2970,7 +2975,7 @@ issignal(struct thread *td) */ if (SIGISMEMBER(ps->ps_sigignore, sig) && (p->p_flag & P_TRACED) == 0 && - (td->td_pflags2 & TDP2_SIGWAIT) == 0) { + (td->td_flags & TDF_SIGWAIT) == 0) { sigqueue_delete(&td->td_sigqueue, sig); sigqueue_delete(&p->p_sigqueue, sig); continue; @@ -3083,7 +3088,7 @@ issignal(struct thread *td) mtx_lock(&ps->ps_mtx); goto next; } else if ((prop & SIGPROP_IGNORE) != 0 && - (td->td_pflags2 & TDP2_SIGWAIT) == 0) { + (td->td_flags & TDF_SIGWAIT) == 0) { /* * Default action is to ignore; drop it if * not in kern_sigtimedwait(). @@ -3094,7 +3099,7 @@ issignal(struct thread *td) /*NOTREACHED*/ case (intptr_t)SIG_IGN: - if ((td->td_pflags2 & TDP2_SIGWAIT) == 0) + if ((td->td_flags & TDF_SIGWAIT) == 0) break; /* == ignore */ else return (sig); diff --git a/sys/sys/proc.h b/sys/sys/proc.h index ffb723576e2e..cd07c8bbb122 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -444,7 +444,7 @@ do { \ #define TDF_TIMEOUT 0x00000010 /* Timing out during sleep. */ #define TDF_IDLETD 0x00000020 /* This is a per-CPU idle thread. */ #define TDF_CANSWAP 0x00000040 /* Thread can be swapped. */ -#define TDF_UNUSED80 0x00000080 /* unused. */ +#define TDF_SIGWAIT 0x00000080 /* Ignore ignored signals */ #define TDF_KTH_SUSP 0x00000100 /* kthread is suspended */ #define TDF_ALLPROCSUSP 0x00000200 /* suspended by SINGLE_ALLPROC */ #define TDF_BOUNDARY 0x00000400 /* Thread suspended at user boundary */ @@ -529,7 +529,6 @@ 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. From nobody Sun Oct 10 09:24:21 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B3B1312DF5D0; Sun, 10 Oct 2021 09:24: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 4HRxMY5s9hz3NJw; Sun, 10 Oct 2021 09:24: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 992573485; Sun, 10 Oct 2021 09:24:21 +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 19A9OLhH003587; Sun, 10 Oct 2021 09:24:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OLr5003586; Sun, 10 Oct 2021 09:24:21 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:21 GMT Message-Id: <202110100924.19A9OLr5003586@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: e858b9de8e99 - stable/13 - When sending ignored signal, arrange for zero return code from sleep List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: e858b9de8e9988702ea0d895dc5182dee5e0c067 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=e858b9de8e9988702ea0d895dc5182dee5e0c067 commit e858b9de8e9988702ea0d895dc5182dee5e0c067 Author: Konstantin Belousov AuthorDate: 2021-10-01 06:59:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 When sending ignored signal, arrange for zero return code from sleep (cherry picked from commit f17eb93d5540ec2bf422d96195820bba5021fa9c) --- sys/kern/kern_sig.c | 23 +++++++++++++---------- sys/kern/subr_sleepqueue.c | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 059c1716a89b..1aef62bb1cb2 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -2233,17 +2233,20 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) return (ret); } else { action = SIG_CATCH; + intrval = 0; } - } else if (SIGISMEMBER(td->td_sigmask, sig)) - action = SIG_HOLD; - else if (SIGISMEMBER(ps->ps_sigcatch, sig)) - action = SIG_CATCH; - else - action = SIG_DFL; - if (SIGISMEMBER(ps->ps_sigintr, sig)) - intrval = EINTR; - else - intrval = ERESTART; + } else { + if (SIGISMEMBER(td->td_sigmask, sig)) + action = SIG_HOLD; + else if (SIGISMEMBER(ps->ps_sigcatch, sig)) + action = SIG_CATCH; + else + action = SIG_DFL; + if (SIGISMEMBER(ps->ps_sigintr, sig)) + intrval = EINTR; + else + intrval = ERESTART; + } mtx_unlock(&ps->ps_mtx); if (prop & SIGPROP_CONT) diff --git a/sys/kern/subr_sleepqueue.c b/sys/kern/subr_sleepqueue.c index b146a978a60c..a95c9a721f6f 100644 --- a/sys/kern/subr_sleepqueue.c +++ b/sys/kern/subr_sleepqueue.c @@ -1125,7 +1125,7 @@ sleepq_abort(struct thread *td, int intrval) THREAD_LOCK_ASSERT(td, MA_OWNED); MPASS(TD_ON_SLEEPQ(td)); MPASS(td->td_flags & TDF_SINTR); - MPASS(intrval == EINTR || intrval == ERESTART); + MPASS(intrval == 0 || intrval == EINTR || intrval == ERESTART); /* * If the TDF_TIMEOUT flag is set, just leave. A From nobody Sun Oct 10 09:24:22 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 940F112DF65F; Sun, 10 Oct 2021 09:24: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 4HRxMc0KsLz3N5B; Sun, 10 Oct 2021 09:24: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 C672D30C8; Sun, 10 Oct 2021 09:24: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 19A9OMuf003617; Sun, 10 Oct 2021 09:24:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OMZ6003616; Sun, 10 Oct 2021 09:24:22 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:22 GMT Message-Id: <202110100924.19A9OMZ6003616@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 2a3abb6a0634 - stable/13 - When queuing ignored signal, only abort target thread' sleep if it is inside sigwait() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 2a3abb6a063482b23f175fd9562bfe4ccd1f281e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=2a3abb6a063482b23f175fd9562bfe4ccd1f281e commit 2a3abb6a063482b23f175fd9562bfe4ccd1f281e Author: Konstantin Belousov AuthorDate: 2021-10-03 02:03:59 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:21:18 +0000 When queuing ignored signal, only abort target thread' sleep if it is inside sigwait() (cherry picked from commit 9b86d3e5de1997ed8d3153d4530bcb981e6602b9) --- sys/kern/kern_sig.c | 16 ++++++++++++++-- sys/kern/subr_sleepqueue.c | 3 ++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 1aef62bb1cb2..f3b7811d3264 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -2175,6 +2175,18 @@ tdksignal(struct thread *td, int sig, ksiginfo_t *ksi) (void) tdsendsignal(td->td_proc, td, sig, ksi); } +static int +sig_sleepq_abort(struct thread *td, int intrval) +{ + THREAD_LOCK_ASSERT(td, MA_OWNED); + + if (intrval == 0 && (td->td_flags & TDF_SIGWAIT) == 0) { + thread_unlock(td); + return (0); + } + return (sleepq_abort(td, intrval)); +} + int tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) { @@ -2393,7 +2405,7 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi) PROC_SLOCK(p); thread_lock(td); if (TD_CAN_ABORT(td)) - wakeup_swapper = sleepq_abort(td, intrval); + wakeup_swapper = sig_sleepq_abort(td, intrval); else thread_unlock(td); PROC_SUNLOCK(p); @@ -2524,7 +2536,7 @@ tdsigwakeup(struct thread *td, int sig, sig_t action, int intrval) if (td->td_priority > PUSER && !TD_IS_IDLETHREAD(td)) sched_prio(td, PUSER); - wakeup_swapper = sleepq_abort(td, intrval); + wakeup_swapper = sig_sleepq_abort(td, intrval); PROC_SUNLOCK(p); if (wakeup_swapper) kick_proc0(); diff --git a/sys/kern/subr_sleepqueue.c b/sys/kern/subr_sleepqueue.c index a95c9a721f6f..73aef9890647 100644 --- a/sys/kern/subr_sleepqueue.c +++ b/sys/kern/subr_sleepqueue.c @@ -1125,7 +1125,8 @@ sleepq_abort(struct thread *td, int intrval) THREAD_LOCK_ASSERT(td, MA_OWNED); MPASS(TD_ON_SLEEPQ(td)); MPASS(td->td_flags & TDF_SINTR); - MPASS(intrval == 0 || intrval == EINTR || intrval == ERESTART); + MPASS((intrval == 0 && (td->td_flags & TDF_SIGWAIT) != 0) || + intrval == EINTR || intrval == ERESTART); /* * If the TDF_TIMEOUT flag is set, just leave. A From nobody Sun Oct 10 09:24:23 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 56E4B12DF6D1; Sun, 10 Oct 2021 09:24: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 4HRxMc60qJz3N7t; Sun, 10 Oct 2021 09:24: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 E16443386; Sun, 10 Oct 2021 09:24: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 19A9ON8x003641; Sun, 10 Oct 2021 09:24:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9ONGN003640; Sun, 10 Oct 2021 09:24:23 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:23 GMT Message-Id: <202110100924.19A9ONGN003640@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: b5f5db652622 - stable/13 - kern_sig.c: Remove unused SIGPROP_CANTMASK List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: b5f5db65262205f0dbadbf539e4a57f2f014d2d8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=b5f5db65262205f0dbadbf539e4a57f2f014d2d8 commit b5f5db65262205f0dbadbf539e4a57f2f014d2d8 Author: Konstantin Belousov AuthorDate: 2021-10-05 04:55:54 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 kern_sig.c: Remove unused SIGPROP_CANTMASK (cherry picked from commit dc2d0899bba62d79083daeb83c6fac49abf28c3b) --- sys/kern/kern_sig.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index f3b7811d3264..38261118897f 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -214,7 +214,6 @@ SYSCTL_INT(_kern, OID_AUTO, coredump_devctl, CTLFLAG_RW, &coredump_devctl, #define SIGPROP_TTYSTOP 0x08 /* ditto, from tty */ #define SIGPROP_IGNORE 0x10 /* ignore by default */ #define SIGPROP_CONT 0x20 /* continue if suspended */ -#define SIGPROP_CANTMASK 0x40 /* non-maskable, catchable */ static int sigproptbl[NSIG] = { [SIGHUP] = SIGPROP_KILL, From nobody Sun Oct 10 09:24:24 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 29A6012DF806; Sun, 10 Oct 2021 09:24: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 4HRxMf3g6nz3NMX; Sun, 10 Oct 2021 09:24: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 0FDF43387; Sun, 10 Oct 2021 09:24: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 19A9OOQK003674; Sun, 10 Oct 2021 09:24:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OOnG003673; Sun, 10 Oct 2021 09:24:24 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:24 GMT Message-Id: <202110100924.19A9OOnG003673@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 9331e687f99a - stable/13 - sys/proc.h: remove dead prototype List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 9331e687f99ac909517e0252edf0440d2247f30d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=9331e687f99ac909517e0252edf0440d2247f30d commit 9331e687f99ac909517e0252edf0440d2247f30d Author: Konstantin Belousov AuthorDate: 2021-10-05 05:07:27 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 sys/proc.h: remove dead prototype (cherry picked from commit 7a9775e9d06f629c5441124204d68d43a9f326dc) --- sys/sys/proc.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sys/sys/proc.h b/sys/sys/proc.h index cd07c8bbb122..64007513f5b6 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -1148,7 +1148,6 @@ int cpu_idle_wakeup(int); extern void (*cpu_idle_hook)(sbintime_t); /* Hook to machdep CPU idler. */ void cpu_switch(struct thread *, struct thread *, struct mtx *); void cpu_throw(struct thread *, struct thread *) __dead2; -void unsleep(struct thread *); void userret(struct thread *, struct trapframe *); void cpu_exit(struct thread *); From nobody Sun Oct 10 09:24:26 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 80A0212DF98C; Sun, 10 Oct 2021 09:24: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 4HRxMj2y9nz3N5l; Sun, 10 Oct 2021 09:24: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 3BAB83218; Sun, 10 Oct 2021 09:24: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 19A9OQZi003698; Sun, 10 Oct 2021 09:24:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OQD7003697; Sun, 10 Oct 2021 09:24:26 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:26 GMT Message-Id: <202110100924.19A9OQD7003697@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 3c47f0a54d04 - stable/13 - Add curproc_sigkilled() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 3c47f0a54d042189cba0e292420ae7dc384ec396 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=3c47f0a54d042189cba0e292420ae7dc384ec396 commit 3c47f0a54d042189cba0e292420ae7dc384ec396 Author: Konstantin Belousov AuthorDate: 2021-10-05 05:08:51 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 Add curproc_sigkilled() (cherry picked from commit 244ab56611c15e737b76cb3950c32e37b67c26fc) --- sys/kern/kern_sig.c | 23 +++++++++++++++++++++++ sys/sys/proc.h | 1 + 2 files changed, 24 insertions(+) diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 38261118897f..7a1fd0bab917 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -3315,6 +3315,29 @@ sig_intr(void) return (ret); } +bool +curproc_sigkilled(void) +{ + struct thread *td; + struct proc *p; + struct sigacts *ps; + bool res; + + td = curthread; + if ((td->td_flags & TDF_NEEDSIGCHK) == 0) + return (false); + + p = td->td_proc; + PROC_LOCK(p); + ps = p->p_sigacts; + mtx_lock(&ps->ps_mtx); + res = SIGISMEMBER(td->td_sigqueue.sq_signals, SIGKILL) || + SIGISMEMBER(p->p_sigqueue.sq_signals, SIGKILL); + mtx_unlock(&ps->ps_mtx); + PROC_UNLOCK(p); + return (res); +} + void proc_wkilled(struct proc *p) { diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 64007513f5b6..67dc32dbaa03 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -1148,6 +1148,7 @@ int cpu_idle_wakeup(int); extern void (*cpu_idle_hook)(sbintime_t); /* Hook to machdep CPU idler. */ void cpu_switch(struct thread *, struct thread *, struct mtx *); void cpu_throw(struct thread *, struct thread *) __dead2; +bool curproc_sigkilled(void); void userret(struct thread *, struct trapframe *); void cpu_exit(struct thread *); From nobody Sun Oct 10 09:24:27 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AC5C112DFA13; Sun, 10 Oct 2021 09:24: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 4HRxMk6nd1z3N8G; Sun, 10 Oct 2021 09:24: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 5A06F2D5A; Sun, 10 Oct 2021 09:24: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 19A9ORX6003722; Sun, 10 Oct 2021 09:24:27 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9ORfI003721; Sun, 10 Oct 2021 09:24:27 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:27 GMT Message-Id: <202110100924.19A9ORfI003721@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: a224fd29c99d - stable/13 - core(5): explicitly mention the core file size limit name List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: a224fd29c99d30ee7172f3bafc15b7d221d32d1f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=a224fd29c99d30ee7172f3bafc15b7d221d32d1f commit a224fd29c99d30ee7172f3bafc15b7d221d32d1f Author: Konstantin Belousov AuthorDate: 2021-10-05 14:52:44 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 core(5): explicitly mention the core file size limit name (cherry picked from commit 2ec505d2b863ca03d542a94e8417358e48e2606d) --- share/man/man5/core.5 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/share/man/man5/core.5 b/share/man/man5/core.5 index 500da31a310c..d176548d1570 100644 --- a/share/man/man5/core.5 +++ b/share/man/man5/core.5 @@ -51,8 +51,10 @@ a system crash. (In this event, the decision to save the core file is arbitrary, see .Xr savecore 8 . ) .Pp -The maximum size of a core file is limited by -.Xr setrlimit 2 . +The maximum size of a core file is limited by the +.Dv RLIMIT_CORE +.Xr setrlimit 2 +limit. Files which would be larger than the limit are not created. .Pp The name of the file is controlled via the From nobody Sun Oct 10 09:24:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 8DB7212DF9B4; Sun, 10 Oct 2021 09:24: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 4HRxMl5JM7z3NQK; Sun, 10 Oct 2021 09:24: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 A2C6B2F46; Sun, 10 Oct 2021 09:24: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 19A9OTw3003778; Sun, 10 Oct 2021 09:24:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OTte003777; Sun, 10 Oct 2021 09:24:29 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:29 GMT Message-Id: <202110100924.19A9OTte003777@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 0b29fd06dab2 - stable/13 - vm_fault: do not trigger OOM too early List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0b29fd06dab2c7ed97293adb82a7392f2ab3b4e2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0b29fd06dab2c7ed97293adb82a7392f2ab3b4e2 commit 0b29fd06dab2c7ed97293adb82a7392f2ab3b4e2 Author: Konstantin Belousov AuthorDate: 2021-10-04 06:36:02 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 vm_fault: do not trigger OOM too early (cherry picked from commit 174aad047e12e8f30f9a5919ca1c08919441a217) --- sys/vm/vm_fault.c | 52 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index 03ca297ea683..c0ac89e4b70f 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -125,7 +125,8 @@ struct faultstate { vm_prot_t fault_type; vm_prot_t prot; int fault_flags; - int oom; + struct timeval oom_start_time; + bool oom_started; boolean_t wired; /* Page reference for cow. */ @@ -1069,6 +1070,38 @@ vm_fault_zerofill(struct faultstate *fs) vm_page_valid(fs->m); } +/* + * Initiate page fault after timeout. Returns true if caller should + * do vm_waitpfault() after the call. + */ +static bool +vm_fault_allocate_oom(struct faultstate *fs) +{ + struct timeval now; + + unlock_and_deallocate(fs); + if (vm_pfault_oom_attempts < 0) + return (true); + if (!fs->oom_started) { + fs->oom_started = true; + getmicrotime(&fs->oom_start_time); + return (true); + } + + getmicrotime(&now); + timevalsub(&now, &fs->oom_start_time); + if (now.tv_sec < vm_pfault_oom_attempts * vm_pfault_oom_wait) + return (true); + + if (bootverbose) + printf( + "proc %d (%s) failed to alloc page on fault, starting OOM\n", + curproc->p_pid, curproc->p_comm); + vm_pageout_oom(VM_OOM_MEM_PF); + fs->oom_started = false; + return (false); +} + /* * Allocate a page directly or via the object populate method. */ @@ -1132,22 +1165,11 @@ vm_fault_allocate(struct faultstate *fs) fs->m = vm_page_alloc(fs->object, fs->pindex, alloc_req); } if (fs->m == NULL) { - unlock_and_deallocate(fs); - if (vm_pfault_oom_attempts < 0 || - fs->oom < vm_pfault_oom_attempts) { - fs->oom++; + if (vm_fault_allocate_oom(fs)) vm_waitpfault(dset, vm_pfault_oom_wait * hz); - } else { - if (bootverbose) - printf( - "proc %d (%s) failed to alloc page on fault, starting OOM\n", - curproc->p_pid, curproc->p_comm); - vm_pageout_oom(VM_OOM_MEM_PF); - fs->oom = 0; - } return (KERN_RESOURCE_SHORTAGE); } - fs->oom = 0; + fs->oom_started = false; return (KERN_NOT_RECEIVER); } @@ -1296,7 +1318,7 @@ vm_fault(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type, fs.fault_flags = fault_flags; fs.map = map; fs.lookup_still_valid = false; - fs.oom = 0; + fs.oom_started = false; faultcount = 0; nera = -1; hardfault = false; From nobody Sun Oct 10 09:24:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id F3E2312DFA26; Sun, 10 Oct 2021 09:24: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 4HRxMl5JNmz3N8L; Sun, 10 Oct 2021 09:24: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 7CF603486; Sun, 10 Oct 2021 09:24: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 19A9OStt003754; Sun, 10 Oct 2021 09:24:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OScK003753; Sun, 10 Oct 2021 09:24:28 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:28 GMT Message-Id: <202110100924.19A9OScK003753@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: aa90eb737dcf - stable/13 - Make core dump writes interruptible with SIGKILL List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: aa90eb737dcf80ba1d4342250ab738861d57676e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=aa90eb737dcf80ba1d4342250ab738861d57676e commit aa90eb737dcf80ba1d4342250ab738861d57676e Author: Konstantin Belousov AuthorDate: 2021-10-05 05:11:32 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 Make core dump writes interruptible with SIGKILL (cherry picked from commit b5cadc643e853fa4cb23e5315e6f40bf9979a9c0) --- share/man/man5/core.5 | 16 +++++++++++++++- sys/kern/imgact_elf.c | 4 ++++ sys/kern/kern_exec.c | 5 +++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/share/man/man5/core.5 b/share/man/man5/core.5 index d176548d1570..0af1b2b7e8bf 100644 --- a/share/man/man5/core.5 +++ b/share/man/man5/core.5 @@ -28,7 +28,7 @@ .\" @(#)core.5 8.3 (Berkeley) 12/11/93 .\" $FreeBSD$ .\" -.Dd August 2, 2020 +.Dd October 5, 2021 .Dt CORE 5 .Os .Sh NAME @@ -57,6 +57,20 @@ The maximum size of a core file is limited by the limit. Files which would be larger than the limit are not created. .Pp +With a large limit, a process that had mapped a very large, +and perhaps sparsely populated, virtual memory region, could take +a very long time to create core dumps. +The system ignores all signals sent to a process writing a core file, except +.Dv SIGKILL +which terminates the writing and causes immediate exit of the process. +The behavior of +.Dv SIGKILL +can be disabled by setting tunable +.Xr sysctl 8 +variable +.Va kern.core_dump_can_intr +to zero. +.Pp The name of the file is controlled via the .Xr sysctl 8 variable diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c index 057c583324bb..e1b6e3fc6ba7 100644 --- a/sys/kern/imgact_elf.c +++ b/sys/kern/imgact_elf.c @@ -1547,6 +1547,8 @@ core_write(struct coredump_params *p, const void *base, size_t len, p->active_cred, p->file_cred, resid, p->td)); } +extern int core_dump_can_intr; + static int core_output(char *base, size_t len, off_t offset, struct coredump_params *p, void *tmpbuf) @@ -1572,6 +1574,8 @@ core_output(char *base, size_t len, off_t offset, struct coredump_params *p, * anonymous memory or truncated files, for example. */ for (runlen = 0; runlen < len; runlen += PAGE_SIZE) { + if (core_dump_can_intr && curproc_sigkilled()) + return (EINTR); error = vm_fault(map, (uintptr_t)base + runlen, VM_PROT_READ, VM_FAULT_NOFILL, NULL); if (runlen == 0) diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 0611eedcec73..2ea0efc4a2cb 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -150,6 +150,11 @@ static int map_at_zero = 0; SYSCTL_INT(_security_bsd, OID_AUTO, map_at_zero, CTLFLAG_RWTUN, &map_at_zero, 0, "Permit processes to map an object at virtual address 0."); +int core_dump_can_intr = 1; +SYSCTL_INT(_kern, OID_AUTO, core_dump_can_intr, CTLFLAG_RWTUN, + &core_dump_can_intr, 0, + "Core dumping interruptible with SIGKILL"); + static int sysctl_kern_ps_strings(SYSCTL_HANDLER_ARGS) { From nobody Sun Oct 10 09:24:30 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D72B717EA587; Sun, 10 Oct 2021 09:32: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 4HRxXb4Ld2z3mgn; Sun, 10 Oct 2021 09:32: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 B9020340A; Sun, 10 Oct 2021 09:24: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 19A9OUQt003802; Sun, 10 Oct 2021 09:24:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19A9OUkN003801; Sun, 10 Oct 2021 09:24:30 GMT (envelope-from git) Date: Sun, 10 Oct 2021 09:24:30 GMT Message-Id: <202110100924.19A9OUkN003801@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 156db3557332 - stable/13 - readlinkat(2): allow O_PATH fd List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 156db355733241fc1fd824fd8b1ce9f6f7f5f30a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=156db355733241fc1fd824fd8b1ce9f6f7f5f30a commit 156db355733241fc1fd824fd8b1ce9f6f7f5f30a Author: Konstantin Belousov AuthorDate: 2021-10-09 05:12:05 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 09:22:58 +0000 readlinkat(2): allow O_PATH fd PR: 258856 (cherry picked from commit 5fb54d2fc845464ea809e6a1a69380693943cf51) --- lib/libc/sys/open.2 | 5 +++-- sys/kern/vfs_syscalls.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/libc/sys/open.2 b/lib/libc/sys/open.2 index 5a6f161291f6..da42c238a151 100644 --- a/lib/libc/sys/open.2 +++ b/lib/libc/sys/open.2 @@ -28,7 +28,7 @@ .\" @(#)open.2 8.2 (Berkeley) 11/16/93 .\" $FreeBSD$ .\" -.Dd May 6, 2021 +.Dd October 9, 2021 .Dt OPEN 2 .Os .Sh NAME @@ -327,7 +327,7 @@ and others. The other functionality of the returned file descriptor is limited to the descriptor-level operations. It can be used for -.Bl -tag -width SCM_RIGHTS -offset indent -compact +.Bl -tag -width readlinkat(2) -offset indent -compact .It Xr fcntl 2 but advisory locking is not allowed .It Xr dup 2 @@ -346,6 +346,7 @@ message .It Xr kqueue 2 using for .Dv EVFILT_VNODE +.It Xr readlinkat 2 .El But operations like .Xr read 2 , diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 8fae55c2862d..6dc6ca43a774 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -2628,8 +2628,8 @@ kern_readlinkat(struct thread *td, int fd, const char *path, if (count > IOSIZE_MAX) return (EINVAL); - NDINIT_AT(&nd, LOOKUP, NOFOLLOW | LOCKSHARED | LOCKLEAF | AUDITVNODE1, - pathseg, path, fd, td); + NDINIT_AT(&nd, LOOKUP, NOFOLLOW | LOCKSHARED | LOCKLEAF | AUDITVNODE1 | + EMPTYPATH, pathseg, path, fd, td); if ((error = namei(&nd)) != 0) return (error); From nobody Sun Oct 10 11:50:48 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 9047317F81C6; Sun, 10 Oct 2021 11:50: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 4HS0cS3hztz4XfP; Sun, 10 Oct 2021 11:50: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 5F7325127; Sun, 10 Oct 2021 11:50: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 19ABomCf098035; Sun, 10 Oct 2021 11:50:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ABomdm098034; Sun, 10 Oct 2021 11:50:48 GMT (envelope-from git) Date: Sun, 10 Oct 2021 11:50:48 GMT Message-Id: <202110101150.19ABomdm098034@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Yoshihiro Takahashi Subject: git: 2c614481fd52 - main - unzip: Fix segmentation fault if a zip file contains buggy filename. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: nyan X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2c614481fd5248c1685e713f67d40cf2d5fba494 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by nyan: URL: https://cgit.FreeBSD.org/src/commit/?id=2c614481fd5248c1685e713f67d40cf2d5fba494 commit 2c614481fd5248c1685e713f67d40cf2d5fba494 Author: Yoshihiro Takahashi AuthorDate: 2021-10-10 11:49:19 +0000 Commit: Yoshihiro Takahashi CommitDate: 2021-10-10 11:49:19 +0000 unzip: Fix segmentation fault if a zip file contains buggy filename. PR: 259011 Reported by: Robert Morris Submitted by: ak MFC after:: 1 week --- usr.bin/unzip/unzip.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/usr.bin/unzip/unzip.c b/usr.bin/unzip/unzip.c index e5ca1ff2c939..0b564b0f08ec 100644 --- a/usr.bin/unzip/unzip.c +++ b/usr.bin/unzip/unzip.c @@ -211,6 +211,9 @@ pathdup(const char *path) char *str; size_t i, len; + if (path == NULL || path[0] == '\0') + return (NULL); + len = strlen(path); while (len && path[len - 1] == '/') len--; @@ -697,7 +700,11 @@ extract(struct archive *a, struct archive_entry *e) mode_t filetype; char *p, *q; - pathname = pathdup(archive_entry_pathname(e)); + if ((pathname = pathdup(archive_entry_pathname(e))) == NULL) { + warningx("skipping empty or unreadable filename entry"); + ac(archive_read_data_skip(a)); + return; + } filetype = archive_entry_filetype(e); /* sanity checks */ @@ -760,7 +767,11 @@ extract_stdout(struct archive *a, struct archive_entry *e) char *pathname; mode_t filetype; - pathname = pathdup(archive_entry_pathname(e)); + if ((pathname = pathdup(archive_entry_pathname(e))) == NULL) { + warningx("skipping empty or unreadable filename entry"); + ac(archive_read_data_skip(a)); + return; + } filetype = archive_entry_filetype(e); /* I don't think this can happen in a zipfile.. */ From nobody Sun Oct 10 13:38:11 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 475C812DB571; Sun, 10 Oct 2021 13:38: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 4HS30N0ln0z4k4W; Sun, 10 Oct 2021 13:38: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 DB15B67FF; Sun, 10 Oct 2021 13:38: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 19ADcBoX035849; Sun, 10 Oct 2021 13:38:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcBe1035848; Sun, 10 Oct 2021 13:38:11 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:11 GMT Message-Id: <202110101338.19ADcBe1035848@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: d7b3f3c84e68 - stable/13 - libc: Fix build on case-insensitive file systems List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: d7b3f3c84e684a613b175624cb04d51f49c0a731 Auto-Submitted: auto-generated X-Spam: Yes X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=d7b3f3c84e684a613b175624cb04d51f49c0a731 commit d7b3f3c84e684a613b175624cb04d51f49c0a731 Author: Jessica Clarke AuthorDate: 2021-09-10 00:19:38 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:33:52 +0000 libc: Fix build on case-insensitive file systems On case-insensitive file systems (most likely to be seen on macOS, where it is the default), _Fork.o for the new POSIX _Fork function conflicts with _fork.o for the PSEUDO file. This results in non-determinsitic behaviour in terms of which ends up being present; if _Fork.o wins then the build fails to link libc.so due to missing __sys_fork, and if _fork.o wins then libc silently fails to include the implementation of _Fork. A similar issue occurred in the past for C99's _Exit conflicting with exit(2) and was fixed in cb1cb6a2a83f, so this adds a fix based on that. As a longer-term solution it might be better to instead make the generated files use a different prefix that's less likely to conflict with other things (such as __sys_foo.o given they always contain that) but that's a rather more invasive change. Fixes: 49ad342cc10c ("Add _Fork()") Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31895 (cherry picked from commit 877175a17a0a5da3f4f43ca9f38adb04042f4cf5) --- lib/libc/sys/Makefile.inc | 2 +- lib/libc/sys/{_Fork.c => POSIX2x_Fork.c} | 0 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libc/sys/Makefile.inc b/lib/libc/sys/Makefile.inc index d0fd7bda74f5..d2b39fe65c44 100644 --- a/lib/libc/sys/Makefile.inc +++ b/lib/libc/sys/Makefile.inc @@ -49,7 +49,7 @@ SRCS+= closefrom.c SRCS+= pipe.c SRCS+= shm_open.c SRCS+= vadvise.c -SRCS+= _Fork.c +SRCS+= POSIX2x_Fork.c SRCS+= compat-stub.c diff --git a/lib/libc/sys/_Fork.c b/lib/libc/sys/POSIX2x_Fork.c similarity index 100% rename from lib/libc/sys/_Fork.c rename to lib/libc/sys/POSIX2x_Fork.c From nobody Sun Oct 10 13:38:12 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id E76F612DB475; Sun, 10 Oct 2021 13:38: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 4HS30P1pr5z4jyy; Sun, 10 Oct 2021 13:38: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 0EF926936; Sun, 10 Oct 2021 13:38: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 19ADcCjv035873; Sun, 10 Oct 2021 13:38:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcC78035872; Sun, 10 Oct 2021 13:38:12 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:12 GMT Message-Id: <202110101338.19ADcC78035872@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 2bfc7f7b75d3 - stable/13 - llvm-objcopy: Install llvm-strip link List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 2bfc7f7b75d36e541a759031e7c81e08c808d74a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=2bfc7f7b75d36e541a759031e7c81e08c808d74a commit 2bfc7f7b75d36e541a759031e7c81e08c808d74a Author: Jessica Clarke AuthorDate: 2021-09-13 20:52:40 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:34:33 +0000 llvm-objcopy: Install llvm-strip link Just as elftoolchain's objcopy doubles as strip, so does LLVM's. Note that we do not currently have a committed copy of the manpage generated from the rST source so no manpage is installed for llvm-strip. (Note this is only a partial MFC, as WITH_LLVM_BINUTILS was not MFC'ed) Reported by: Shawn Webb Tested by: Shawn Webb MFC after: 1 week (cherry picked from commit f28c1d0c5c6c6532df0dfa38eaf804343988d163) --- usr.bin/clang/llvm-objcopy/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/usr.bin/clang/llvm-objcopy/Makefile b/usr.bin/clang/llvm-objcopy/Makefile index 645bbbd7c4e9..f9b146f4bbfa 100644 --- a/usr.bin/clang/llvm-objcopy/Makefile +++ b/usr.bin/clang/llvm-objcopy/Makefile @@ -42,4 +42,6 @@ CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/} LIBADD+= z +LINKS= ${BINDIR}/llvm-objcopy ${BINDIR}/llvm-strip + .include "../llvm.prog.mk" From nobody Sun Oct 10 13:38:14 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BDB6E12DB47D; Sun, 10 Oct 2021 13:38: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 4HS30Q2nHrz4k2H; Sun, 10 Oct 2021 13:38: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 312446B80; Sun, 10 Oct 2021 13:38: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 19ADcErH035897; Sun, 10 Oct 2021 13:38:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcE1v035896; Sun, 10 Oct 2021 13:38:14 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:14 GMT Message-Id: <202110101338.19ADcE1v035896@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 2649bef7e4ab - stable/13 - riscv: Add a stub pmap_change_attr implementation List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 2649bef7e4abbe977c7ff8fef1f1f65c1131ba01 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=2649bef7e4abbe977c7ff8fef1f1f65c1131ba01 commit 2649bef7e4abbe977c7ff8fef1f1f65c1131ba01 Author: Jessica Clarke AuthorDate: 2021-10-03 18:33:47 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:36:52 +0000 riscv: Add a stub pmap_change_attr implementation pmap_change_attr is required by drm-kmod so we need the function to exist. Since the Svpbmt extension is on the horizon we will likely end up with a real implementation of it, so this stub implementation does all the necessary page table walking to validate the input, ensuring that no new errors are returned once it's implemented fully (other than due to out of memory conditions when demoting L2 entries) and providing a skeleton for that future implementation. Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31996 (cherry picked from commit 1be2e16df1d29148aee83964330a71ae403c6078) --- sys/riscv/include/pmap.h | 1 + sys/riscv/riscv/pmap.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/sys/riscv/include/pmap.h b/sys/riscv/include/pmap.h index 599adfa4ce19..024bc3743f67 100644 --- a/sys/riscv/include/pmap.h +++ b/sys/riscv/include/pmap.h @@ -144,6 +144,7 @@ struct thread; void pmap_activate_boot(pmap_t); void pmap_activate_sw(struct thread *); void pmap_bootstrap(vm_offset_t, vm_paddr_t, vm_size_t); +int pmap_change_attr(vm_offset_t va, vm_size_t size, int mode); void pmap_kenter_device(vm_offset_t, vm_size_t, vm_paddr_t); vm_paddr_t pmap_kextract(vm_offset_t va); void pmap_kremove(vm_offset_t); diff --git a/sys/riscv/riscv/pmap.c b/sys/riscv/riscv/pmap.c index b60df135fd51..c596ce15bde5 100644 --- a/sys/riscv/riscv/pmap.c +++ b/sys/riscv/riscv/pmap.c @@ -310,6 +310,8 @@ static void _pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_t m, struct spglist *free); static int pmap_unuse_pt(pmap_t, vm_offset_t, pd_entry_t, struct spglist *); +static int pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode); + #define pmap_clear(pte) pmap_store(pte, 0) #define pmap_clear_bits(pte, bits) atomic_clear_64(pte, bits) #define pmap_load_store(pte, entry) atomic_swap_64(pte, entry) @@ -4252,6 +4254,98 @@ pmap_page_set_memattr(vm_page_t m, vm_memattr_t ma) { m->md.pv_memattr = ma; + + /* + * If "m" is a normal page, update its direct mapping. This update + * can be relied upon to perform any cache operations that are + * required for data coherence. + */ + if ((m->flags & PG_FICTITIOUS) == 0 && + pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, + m->md.pv_memattr) != 0) + panic("memory attribute change on the direct map failed"); +} + +/* + * Changes the specified virtual address range's memory type to that given by + * the parameter "mode". The specified virtual address range must be + * completely contained within either the direct map or the kernel map. + * + * Returns zero if the change completed successfully, and either EINVAL or + * ENOMEM if the change failed. Specifically, EINVAL is returned if some part + * of the virtual address range was not mapped, and ENOMEM is returned if + * there was insufficient memory available to complete the change. In the + * latter case, the memory type may have been changed on some part of the + * virtual address range. + */ +int +pmap_change_attr(vm_offset_t va, vm_size_t size, int mode) +{ + int error; + + PMAP_LOCK(kernel_pmap); + error = pmap_change_attr_locked(va, size, mode); + PMAP_UNLOCK(kernel_pmap); + return (error); +} + +static int +pmap_change_attr_locked(vm_offset_t va, vm_size_t size, int mode) +{ + vm_offset_t base, offset, tmpva; + pd_entry_t *l1, l1e; + pd_entry_t *l2, l2e; + pt_entry_t *l3, l3e; + + PMAP_LOCK_ASSERT(kernel_pmap, MA_OWNED); + base = trunc_page(va); + offset = va & PAGE_MASK; + size = round_page(offset + size); + + if (!VIRT_IN_DMAP(base) && + !(base >= VM_MIN_KERNEL_ADDRESS && base < VM_MAX_KERNEL_ADDRESS)) + return (EINVAL); + + for (tmpva = base; tmpva < base + size; ) { + l1 = pmap_l1(kernel_pmap, tmpva); + if (l1 == NULL || ((l1e = pmap_load(l1)) & PTE_V) == 0) + return (EINVAL); + if ((l1e & PTE_RWX) != 0) { + /* + * TODO: Demote if attributes don't match and there + * isn't an L1 page left in the range, and update the + * L1 entry if the attributes don't match but there is + * an L1 page left in the range, once we support the + * upcoming Svpbmt extension. + */ + tmpva = (tmpva & ~L1_OFFSET) + L1_SIZE; + continue; + } + l2 = pmap_l1_to_l2(l1, tmpva); + if (l2 == NULL || ((l2e = pmap_load(l2)) & PTE_V) == 0) + return (EINVAL); + if ((l2e & PTE_RWX) != 0) { + /* + * TODO: Demote if attributes don't match and there + * isn't an L2 page left in the range, and update the + * L2 entry if the attributes don't match but there is + * an L2 page left in the range, once we support the + * upcoming Svpbmt extension. + */ + tmpva = (tmpva & ~L2_OFFSET) + L2_SIZE; + continue; + } + l3 = pmap_l2_to_l3(l2, tmpva); + if (l3 == NULL || ((l3e = pmap_load(l3)) & PTE_V) == 0) + return (EINVAL); + /* + * TODO: Update the L3 entry if the attributes don't match once + * we support the upcoming Svpbmt extension. + */ + tmpva += PAGE_SIZE; + } + + return (0); } /* From nobody Sun Oct 10 13:38:15 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 211E512DB745; Sun, 10 Oct 2021 13:38: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 4HS30R5zFzz4jwv; Sun, 10 Oct 2021 13:38: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 48F036B81; Sun, 10 Oct 2021 13:38: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 19ADcF40035921; Sun, 10 Oct 2021 13:38:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcF1V035920; Sun, 10 Oct 2021 13:38:15 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:15 GMT Message-Id: <202110101338.19ADcF1V035920@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 94bbe32a44e7 - stable/13 - libgcc_s: Export 64-bit int to 128-bit float functions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 94bbe32a44e71e915fc32f98435ac02b33c2c26f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=94bbe32a44e71e915fc32f98435ac02b33c2c26f commit 94bbe32a44e71e915fc32f98435ac02b33c2c26f Author: Jessica Clarke AuthorDate: 2021-10-03 18:34:25 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:36:52 +0000 libgcc_s: Export 64-bit int to 128-bit float functions The corresponding 32-bit int and 128-bit int functions were added in 790a6be5a169, as were all combinations of the float to int functions, but these two were overlooked. __floatditf is needed to build curl for riscv as there's a signed 64-bit int to 128-bit float conversion in lib/progress.c's trspeed as of 7.77.0. Reviewed by: dim MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31997 (cherry picked from commit 7047568821a9019359a8518e1f1481f73d6e5445) --- lib/libgcc_s/Symbol.map | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/libgcc_s/Symbol.map b/lib/libgcc_s/Symbol.map index 2580623d778b..292932198170 100644 --- a/lib/libgcc_s/Symbol.map +++ b/lib/libgcc_s/Symbol.map @@ -162,8 +162,10 @@ GCC_4.6.0 { __fixunstfdi; __fixunstfsi; __fixunstfti; + __floatditf; __floatsitf; __floattitf; + __floatunditf; __floatunsitf; __floatuntitf; __getf2; From nobody Sun Oct 10 13:38:16 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 81F8212DB8B5; Sun, 10 Oct 2021 13:38: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 4HS30T17Wgz4jx1; Sun, 10 Oct 2021 13:38: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 70B6B6937; Sun, 10 Oct 2021 13:38: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 19ADcGRQ035952; Sun, 10 Oct 2021 13:38:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcGrA035950; Sun, 10 Oct 2021 13:38:16 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:16 GMT Message-Id: <202110101338.19ADcGrA035950@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: e79989d8233b - stable/13 - LinuxKPI: Add more #ifdef VM_MEMATTR_WRITE_COMBINING guards List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: e79989d8233bf4732a5a1d904e3de7c67d8220cd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=e79989d8233bf4732a5a1d904e3de7c67d8220cd commit e79989d8233bf4732a5a1d904e3de7c67d8220cd Author: Jessica Clarke AuthorDate: 2021-10-03 18:34:40 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:36:53 +0000 LinuxKPI: Add more #ifdef VM_MEMATTR_WRITE_COMBINING guards One of the three uses is already guarded; this guards the remaining ones to support architectures like riscv that do not provide write-combining, and is needed to build drm-kmod on riscv. Reviewed by: hselasky, manu MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31999 (cherry picked from commit 8167c92f65bc20145467b3b98c842cde57736900) --- sys/compat/linuxkpi/common/include/linux/io.h | 4 ++++ sys/compat/linuxkpi/common/include/linux/page.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/sys/compat/linuxkpi/common/include/linux/io.h b/sys/compat/linuxkpi/common/include/linux/io.h index 0104eea90ace..074417b892f9 100644 --- a/sys/compat/linuxkpi/common/include/linux/io.h +++ b/sys/compat/linuxkpi/common/include/linux/io.h @@ -411,8 +411,12 @@ void *_ioremap_attr(vm_paddr_t phys_addr, unsigned long size, int attr); #define ioremap(addr, size) \ _ioremap_attr((addr), (size), VM_MEMATTR_UNCACHEABLE) #endif +#ifdef VM_MEMATTR_WRITE_COMBINING #define ioremap_wc(addr, size) \ _ioremap_attr((addr), (size), VM_MEMATTR_WRITE_COMBINING) +#else +#define ioremap_wc(addr, size) ioremap_nocache(addr, size) +#endif #define ioremap_wb(addr, size) \ _ioremap_attr((addr), (size), VM_MEMATTR_WRITE_BACK) void iounmap(void *addr); diff --git a/sys/compat/linuxkpi/common/include/linux/page.h b/sys/compat/linuxkpi/common/include/linux/page.h index c2dbab769c2a..a09ae439266e 100644 --- a/sys/compat/linuxkpi/common/include/linux/page.h +++ b/sys/compat/linuxkpi/common/include/linux/page.h @@ -76,8 +76,12 @@ pgprot2cachemode(pgprot_t prot) #define clear_page(page) memset(page, 0, PAGE_SIZE) #define pgprot_noncached(prot) \ (((prot) & VM_PROT_ALL) | cachemode2protval(VM_MEMATTR_UNCACHEABLE)) +#ifdef VM_MEMATTR_WRITE_COMBINING #define pgprot_writecombine(prot) \ (((prot) & VM_PROT_ALL) | cachemode2protval(VM_MEMATTR_WRITE_COMBINING)) +#else +#define pgprot_writecombine(prot) pgprot_noncached(prot) +#endif #undef PAGE_MASK #define PAGE_MASK (~(PAGE_SIZE-1)) From nobody Sun Oct 10 13:38:18 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A430312DB8CE; Sun, 10 Oct 2021 13:38: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 4HS30W2MZkz4jxF; Sun, 10 Oct 2021 13:38: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 B39136AE0; Sun, 10 Oct 2021 13:38: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 19ADcISL036000; Sun, 10 Oct 2021 13:38:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcIYu035999; Sun, 10 Oct 2021 13:38:18 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:18 GMT Message-Id: <202110101338.19ADcIYu035999@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 398c8572b8be - stable/13 - pci_pci: Support growing bus ranges in bus_adjust_resource for NEW_PCIB List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 398c8572b8be32658c0d4f76481e01637d88d602 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=398c8572b8be32658c0d4f76481e01637d88d602 commit 398c8572b8be32658c0d4f76481e01637d88d602 Author: Jessica Clarke AuthorDate: 2021-10-03 18:35:26 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:36:54 +0000 pci_pci: Support growing bus ranges in bus_adjust_resource for NEW_PCIB This is the same underlying problem as 262459806433, just for bus ranges rather than windows. SiFive's HiFive Unmatched has the following topology: Root Port <---> Bridge <---> Bridge <-+-> Bridge <---> (Unused) (pcib0) (pcib1) (pcib2) | (pcib3) +-> Bridge <---> xHCI | (pcib4) +-> Bridge <---> M.2 E-key | (pcib5) +-> Bridge <---> M.2 M-key | (pcib6) +-> Bridge <---> x16 slot (pcib7) If a device is plugged into the x16 slot that itself has a bridge, such as many graphics cards, we currently fail to allocate a bus number for its child bus (and so pcib_attach_child skips adding a child bus for further enumeration) as, when the new child bridge attaches, it attempts to allocate a bus number from its parent (pcib7) which in turn attempts to grow its own bus range by calling bus_adjust_resource on its own parent (pcib2) whose bus rman cannot accommodate the request and needs to itself be extended by calling its own parent (pcib1). Note that pcib3-7 do not face the same issue when they attach since pcib1 ends up managing bus numbers 1-255 from the beginning and so never needs to grow its own range. Reviewed by: jhb, mav MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D32011 (cherry picked from commit 31776afdc79d5fb1ea211cc2a69c17c62b3dc8ff) --- sys/dev/pci/pci_pci.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c index 2b86f2f50e11..cecf75024d3f 100644 --- a/sys/dev/pci/pci_pci.c +++ b/sys/dev/pci/pci_pci.c @@ -2364,7 +2364,20 @@ pcib_adjust_resource(device_t bus, device_t child, int type, struct resource *r, start, end)); #ifdef PCI_RES_BUS - if (type != PCI_RES_BUS) + if (type == PCI_RES_BUS) { + /* + * If our bus range isn't big enough to grow the sub-allocation + * then we need to grow our bus range. Any request that would + * require us to decrease the start of our own bus range is + * invalid, we can only extend the end; ignore such requests + * and let rman_adjust_resource fail below. + */ + if (start >= sc->bus.sec && end > sc->bus.sub) { + error = pcib_grow_subbus(&sc->bus, end); + if (error != 0) + return (error); + } + } else #endif { /* From nobody Sun Oct 10 13:38:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AA57012DB7BE; Sun, 10 Oct 2021 13:38: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 4HS30T5d95z4jx5; Sun, 10 Oct 2021 13:38: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 92DAE6938; Sun, 10 Oct 2021 13:38: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 19ADcH9g035976; Sun, 10 Oct 2021 13:38:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ADcHRs035975; Sun, 10 Oct 2021 13:38:17 GMT (envelope-from git) Date: Sun, 10 Oct 2021 13:38:17 GMT Message-Id: <202110101338.19ADcHRs035975@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jessica Clarke Subject: git: 2580d1958545 - stable/13 - riscv: Add vt and kbdmux to GENERIC for video console support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/13 X-Git-Reftype: branch X-Git-Commit: 2580d19585458341c8dac0fcbb51e18131ccde93 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=2580d19585458341c8dac0fcbb51e18131ccde93 commit 2580d19585458341c8dac0fcbb51e18131ccde93 Author: Jessica Clarke AuthorDate: 2021-10-03 18:34:53 +0000 Commit: Jessica Clarke CommitDate: 2021-10-10 13:36:53 +0000 riscv: Add vt and kbdmux to GENERIC for video console support No in-tree drivers are supported for RISC-V (given it supports UEFI we could enable the EFI framebuffer, but U-Boot has very limited hardware support and EDK2 remains a work in progress), but drm-kmod exists with drivers for video cards that can be used with the HiFive Unmatched. Reviewed by: imp, jhb MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D32001 (cherry picked from commit 2404f03fca7e5f62946d0da0f614c9db75a0df09) --- sys/riscv/conf/GENERIC | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sys/riscv/conf/GENERIC b/sys/riscv/conf/GENERIC index d5aa270fb024..8c3162d6ae1e 100644 --- a/sys/riscv/conf/GENERIC +++ b/sys/riscv/conf/GENERIC @@ -134,6 +134,10 @@ device uart # Generic UART driver device uart_lowrisc # lowRISC UART driver device uart_ns8250 # ns8250-type UART driver +# Console +device vt +device kbdmux + # RTC device goldfish_rtc # QEMU RTC From nobody Sun Oct 10 15:47:06 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 80F8817F15E6; Sun, 10 Oct 2021 15:47: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 4HS5s63Cwjz566c; Sun, 10 Oct 2021 15:47: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 4AB15103E5; Sun, 10 Oct 2021 15:47: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 19AFl65c009881; Sun, 10 Oct 2021 15:47:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AFl64a009880; Sun, 10 Oct 2021 15:47:06 GMT (envelope-from git) Date: Sun, 10 Oct 2021 15:47:06 GMT Message-Id: <202110101547.19AFl64a009880@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: 24b51c7295db - main - ObsoleteFiles.inc: stop removing pthread_mutexattr_get/setpshared.3 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 24b51c7295db6b316250f0288aaf05660a81063e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=24b51c7295db6b316250f0288aaf05660a81063e commit 24b51c7295db6b316250f0288aaf05660a81063e Author: Konstantin Belousov AuthorDate: 2021-10-10 14:38:20 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 15:46:43 +0000 ObsoleteFiles.inc: stop removing pthread_mutexattr_get/setpshared.3 The man pages were added by 6bda192013fc8e (as symlinks). Sponsored by: The FreeBSD Foundation MFC after: 3 days --- ObsoleteFiles.inc | 2 -- 1 file changed, 2 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index ee77a56b7acc..cea96addd379 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -14836,8 +14836,6 @@ OLD_FILES+=usr/share/man/man3/isnanf.3.gz OLD_FILES+=usr/share/man/man3/libautofs.3.gz OLD_FILES+=usr/share/man/man3/pthread_attr_setsstack.3.gz OLD_FILES+=usr/share/man/man3/pthread_getcancelstate.3.gz -OLD_FILES+=usr/share/man/man3/pthread_mutexattr_getpshared.3.gz -OLD_FILES+=usr/share/man/man3/pthread_mutexattr_setpshared.3.gz OLD_FILES+=usr/share/man/man3/set_assertion_failure_callback.3.gz OLD_FILES+=usr/share/man/man3/setkey.3.gz OLD_FILES+=usr/share/man/man3/setvfsent.3.gz From nobody Sun Oct 10 16:52:53 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C730817DB524; Sun, 10 Oct 2021 16:52: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 4HS7K15FsMz3JB0; Sun, 10 Oct 2021 16:52: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 92E9911790; Sun, 10 Oct 2021 16:52: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 19AGqrXl003321; Sun, 10 Oct 2021 16:52:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AGqrXT003320; Sun, 10 Oct 2021 16:52:53 GMT (envelope-from git) Date: Sun, 10 Oct 2021 16:52:53 GMT Message-Id: <202110101652.19AGqrXT003320@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Baptiste Daroussin Subject: git: 9082bc4c3d0b - main - ncurses: fix typo in makefile List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9082bc4c3d0b0c27bec13bcff9e76b072303e59b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=9082bc4c3d0b0c27bec13bcff9e76b072303e59b commit 9082bc4c3d0b0c27bec13bcff9e76b072303e59b Author: Baptiste Daroussin AuthorDate: 2021-10-10 16:52:21 +0000 Commit: Baptiste Daroussin CommitDate: 2021-10-10 16:52:48 +0000 ncurses: fix typo in makefile --- lib/ncurses/ncurses/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ncurses/ncurses/Makefile b/lib/ncurses/ncurses/Makefile index 5f80def49458..951e8a4ea63f 100644 --- a/lib/ncurses/ncurses/Makefile +++ b/lib/ncurses/ncurses/Makefile @@ -189,7 +189,7 @@ all: ${STATIC_LDSCRIPT} install-aldscript: ${STATIC_LDSCRIPT} ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ - ${_INSTALLFLAGS} ${STATIC_LDSCRIPT} ${DESTDIR}${_LIBDI}/lib${LIB}.a + ${_INSTALLFLAGS} ${STATIC_LDSCRIPT} ${DESTDIR}${_LIBDIR}/lib${LIB}.a realinstall: install-aldscript From nobody Sun Oct 10 17:09:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 0DCAC17DD4EC; Sun, 10 Oct 2021 17:09: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 4HS7gx6xwtz3KVG; Sun, 10 Oct 2021 17:09: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 CE43111AA6; Sun, 10 Oct 2021 17:09: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 19AH9HC0017678; Sun, 10 Oct 2021 17:09:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AH9HLC017677; Sun, 10 Oct 2021 17:09:17 GMT (envelope-from git) Date: Sun, 10 Oct 2021 17:09:17 GMT Message-Id: <202110101709.19AH9HLC017677@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Xin LI Subject: git: 852336780877 - stable/13 - kern_ctf: Use zlib's uncompress function for simpler code. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 85233678087751084de3e67117ac906c3a39418d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=85233678087751084de3e67117ac906c3a39418d commit 85233678087751084de3e67117ac906c3a39418d Author: Yoshihiro Ota AuthorDate: 2021-09-26 06:28:43 +0000 Commit: Xin LI CommitDate: 2021-10-10 17:08:53 +0000 kern_ctf: Use zlib's uncompress function for simpler code. Reviewed by: markj, delphij MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D21531 --- sys/kern/kern_ctf.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/sys/kern/kern_ctf.c b/sys/kern/kern_ctf.c index 6a6a08033137..ee7576ab6fb9 100644 --- a/sys/kern/kern_ctf.c +++ b/sys/kern/kern_ctf.c @@ -244,7 +244,7 @@ link_elf_ctf_get(linker_file_t lf, linker_ctf_t *lc) /* Check if decompression is required. */ if (raw != NULL) { - z_stream zs; + uLongf destlen; int ret; /* @@ -253,22 +253,12 @@ link_elf_ctf_get(linker_file_t lf, linker_ctf_t *lc) */ bcopy(ctf_hdr, ctftab, sizeof(ctf_hdr)); - /* Initialise the zlib structure. */ - bzero(&zs, sizeof(zs)); - - if (inflateInit(&zs) != Z_OK) { - error = EIO; - goto out; - } - - zs.avail_in = shdr[i].sh_size - sizeof(ctf_hdr); - zs.next_in = ((uint8_t *) raw) + sizeof(ctf_hdr); - zs.avail_out = sz - sizeof(ctf_hdr); - zs.next_out = ((uint8_t *) ctftab) + sizeof(ctf_hdr); - ret = inflate(&zs, Z_FINISH); - inflateEnd(&zs); - if (ret != Z_STREAM_END) { - printf("%s(%d): zlib inflate returned %d\n", __func__, __LINE__, ret); + destlen = sz - sizeof(ctf_hdr); + ret = uncompress(((uint8_t *) ctftab) + sizeof(ctf_hdr), + &destlen, ((uint8_t *) raw) + sizeof(ctf_hdr), + shdr[i].sh_size - sizeof(ctf_hdr)); + if (ret != Z_OK) { + printf("%s(%d): zlib uncompress returned %d\n", __func__, __LINE__, ret); error = EIO; goto out; } From nobody Sun Oct 10 17:18:28 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7C14B17DF8BE; Sun, 10 Oct 2021 17:18: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 4HS7tX39X3z3MPL; Sun, 10 Oct 2021 17:18: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 4C9CD118B8; Sun, 10 Oct 2021 17:18: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 19AHIS54031070; Sun, 10 Oct 2021 17:18:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AHISiX031069; Sun, 10 Oct 2021 17:18:28 GMT (envelope-from git) Date: Sun, 10 Oct 2021 17:18:28 GMT Message-Id: <202110101718.19AHISiX031069@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: 880aec7361ea - main - cross-build: Remove redundant lines. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 880aec7361eab106b62dea28f3dedd457b3abb47 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=880aec7361eab106b62dea28f3dedd457b3abb47 commit 880aec7361eab106b62dea28f3dedd457b3abb47 Author: Warner Losh AuthorDate: 2021-10-10 16:21:49 +0000 Commit: Warner Losh CommitDate: 2021-10-10 17:17:14 +0000 cross-build: Remove redundant lines. There's two identical gid_from_group lines in a row. We only need one. Ditto for uid_from_user(). Sponsored by: Netflix Reviewed by: bapt, jrtc27 Differential Revision: https://reviews.freebsd.org/D32442 --- tools/build/cross-build/include/common/grp.h | 2 -- tools/build/cross-build/include/common/pwd.h | 2 -- 2 files changed, 4 deletions(-) diff --git a/tools/build/cross-build/include/common/grp.h b/tools/build/cross-build/include/common/grp.h index 08a8bc540569..750e1e9a49f6 100644 --- a/tools/build/cross-build/include/common/grp.h +++ b/tools/build/cross-build/include/common/grp.h @@ -47,8 +47,6 @@ int pwcache_groupdb(int (*a_setgroupent)(int), void (*a_endgrent)(void), int gid_from_group(const char *name, gid_t *gid); -int gid_from_group(const char *name, gid_t *gid); - const char *group_from_gid(gid_t gid, int noname); #ifdef __linux__ diff --git a/tools/build/cross-build/include/common/pwd.h b/tools/build/cross-build/include/common/pwd.h index e167fe47701f..14abc7fcadf0 100644 --- a/tools/build/cross-build/include/common/pwd.h +++ b/tools/build/cross-build/include/common/pwd.h @@ -45,8 +45,6 @@ int pwcache_userdb(int (*a_setpassent)(int), void (*a_endpwent)(void), struct passwd *(*a_getpwnam)(const char *), struct passwd *(*a_getpwuid)(uid_t)); -int uid_from_user(const char *name, uid_t *uid); - int uid_from_user(const char *name, uid_t *uid); const char *user_from_uid(uid_t uid, int noname); From nobody Sun Oct 10 18:16:17 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7A40617E921D; Sun, 10 Oct 2021 18:16: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 4HS99F30Bxz3lpr; Sun, 10 Oct 2021 18:16: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 41C9A122DB; Sun, 10 Oct 2021 18:16: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 19AIGHsw011389; Sun, 10 Oct 2021 18:16:17 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AIGHr2011388; Sun, 10 Oct 2021 18:16:17 GMT (envelope-from git) Date: Sun, 10 Oct 2021 18:16:17 GMT Message-Id: <202110101816.19AIGHr2011388@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Robert Wing Subject: git: 0cfae878f057 - stable/13 - prometheus_sysctl_exporter(8): filter output using a regex List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rew X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 0cfae878f057692b9dc8c8c51630ce0a3a5dd4be Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by rew: URL: https://cgit.FreeBSD.org/src/commit/?id=0cfae878f057692b9dc8c8c51630ce0a3a5dd4be commit 0cfae878f057692b9dc8c8c51630ce0a3a5dd4be Author: Robert Wing AuthorDate: 2021-10-08 01:00:27 +0000 Commit: Robert Wing CommitDate: 2021-10-10 18:15:18 +0000 prometheus_sysctl_exporter(8): filter output using a regex Add two options, -i and -e, for filtering prometheus metrics. Each option takes a regular expression as an argument. The provided regex will be tested against the prometheus metric name. The -i option includes metrics matching the given regex. The -e option excludes metrics matching the given regex. Sponsored by: Modirum MDPay Sponsored by: Klara Inc. Reviewed by: 0mp, debdrup Differential Revision: https://reviews.freebsd.org/D32269 (cherry picked from commit 8ff2b52241400f2b5c2287b91e6e12b97ffd5773) --- .../prometheus_sysctl_exporter.8 | 18 ++++- .../prometheus_sysctl_exporter.c | 88 ++++++++++++++++------ 2 files changed, 80 insertions(+), 26 deletions(-) diff --git a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 index f4ac44891ecb..7d73e3cab8cd 100644 --- a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 +++ b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 @@ -22,7 +22,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd December 18, 2016 +.Dd October 7, 2021 .Dt PROMETHEUS_SYSCTL_EXPORTER 8 .Os .Sh NAME @@ -31,6 +31,8 @@ .Sh SYNOPSIS .Nm prometheus_sysctl_exporter .Op Fl dgh +.Op Fl e Ar pattern +.Op Fl i Ar pattern .Op Ar prefix ... .Sh DESCRIPTION Prometheus is a monitoring system that gathers metrics from its targets @@ -74,12 +76,26 @@ The following options are available: .Bl -tag -width indent .It Fl d Print descriptions of metrics when available. +.It Fl e Ar pattern +Same as +.Fl i , +except exclude metrics that match +.Ar pattern . .It Fl g Gzip compresses the HTTP response body. .It Fl h Precede the output with a HTTP response header. This flag is required when running this utility through .Xr inetd 8 . +.It Fl i Ar pattern +If specified, include metrics that match +.Ar pattern . +The format of +.Ar pattern +is to be a regular expression as described in +.Xr re_format 7 . +The provided regular expression is tested against the Prometheus +metric name. .El .Sh SEE ALSO .Xr cron 8 , diff --git a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c index b1f24ddf203a..25e60f5dddbe 100644 --- a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c +++ b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -44,6 +45,10 @@ __FBSDID("$FreeBSD$"); #include #include +/* Regular expressions for filtering output. */ +static regex_t inc_regex; +static regex_t exc_regex; + /* * Cursor for iterating over all of the system's sysctl OIDs. */ @@ -370,25 +375,27 @@ oid_get_name(const struct oid *o, struct oidname *on) on->oid = *o; } -/* Prints the name and labels of an OID to a file stream. */ +/* Populates the name and labels of an OID to a buffer. */ static void -oidname_print(const struct oidname *on, const struct oidformat *of, - FILE *fp) +oid_get_metric(const struct oidname *on, const struct oidformat *of, + char *metric, size_t mlen) { const char *name, *label; size_t i; - char separator; + char separator, buf[BUFSIZ]; /* Print the name of the metric. */ - fprintf(fp, "sysctl"); + snprintf(metric, mlen, "%s", "sysctl"); name = on->names; label = on->labels; for (i = 0; i < on->oid.len; ++i) { if (*label == '\0') { - fputc('_', fp); + strlcat(metric, "_", mlen); while (*name != '\0') { /* Map unsupported characters to underscores. */ - fputc(isalnum(*name) ? *name : '_', fp); + snprintf(buf, sizeof(buf), "%c", + isalnum(*name) ? *name : '_'); + strlcat(metric, buf, mlen); ++name; } } @@ -396,9 +403,9 @@ oidname_print(const struct oidname *on, const struct oidformat *of, label += strlen(label) + 1; } if (oidformat_is_temperature(of)) - fprintf(fp, "_celcius"); + strlcat(metric, "_celcius", mlen); else if (oidformat_is_timeval(of)) - fprintf(fp, "_seconds"); + strlcat(metric, "_seconds", mlen); /* Print the labels of the metric. */ name = on->names; @@ -410,21 +417,23 @@ oidname_print(const struct oidname *on, const struct oidformat *of, "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789_")] == '\0'); - fprintf(fp, "%c%s=\"", separator, label); + snprintf(buf, sizeof(buf), "%c%s=\"", separator, label); + strlcat(metric, buf, mlen); while (*name != '\0') { /* Escape backslashes and double quotes. */ if (*name == '\\' || *name == '"') - fputc('\\', fp); - fputc(*name++, fp); + strlcat(metric, "\\", mlen); + snprintf(buf, sizeof(buf), "%c", *name++); + strlcat(metric, buf, mlen); } - fputc('"', fp); + strlcat(metric, "\"", mlen); separator = ','; } name += strlen(name) + 1; label += strlen(label) + 1; } if (separator != '{') - fputc('}', fp); + strlcat(metric, "}", mlen); } /* Returns whether the OID name has any labels associated to it. */ @@ -483,16 +492,25 @@ oiddescription_print(const struct oiddescription *od, FILE *fp) static void oid_print(const struct oid *o, struct oidname *on, bool print_description, - FILE *fp) + bool exclude, bool include, FILE *fp) { struct oidformat of; struct oidvalue ov; struct oiddescription od; + char metric[BUFSIZ]; if (!oid_get_format(o, &of) || !oid_get_value(o, &of, &ov)) return; oid_get_name(o, on); + oid_get_metric(on, &of, metric, sizeof(metric)); + + if (exclude && regexec(&exc_regex, metric, 0, NULL, 0) == 0) + return; + + if (include && regexec(&inc_regex, metric, 0, NULL, 0) != 0) + return; + /* * Print the line with the description. Prometheus expects a * single unique description for every metric, which cannot be @@ -502,14 +520,14 @@ oid_print(const struct oid *o, struct oidname *on, bool print_description, if (print_description && !oidname_has_labels(on) && oid_get_description(o, &od)) { fprintf(fp, "# HELP "); - oidname_print(on, &of, fp); + fprintf(fp, "%s", metric); fputc(' ', fp); oiddescription_print(&od, fp); fputc('\n', fp); } /* Print the line with the value. */ - oidname_print(on, &of, fp); + fprintf(fp, "%s", metric); fputc(' ', fp); oidvalue_print(&ov, fp); fputc('\n', fp); @@ -539,8 +557,9 @@ static void usage(void) { - fprintf(stderr, - "usage: prometheus_sysctl_exporter [-dgh] [prefix ...]\n"); + fprintf(stderr, "%s", + "usage: prometheus_sysctl_exporter [-dgh] [-e pattern] [-i pattern]\n" + "\t[prefix ...]\n"); exit(1); } @@ -551,22 +570,41 @@ main(int argc, char *argv[]) char *http_buf; FILE *fp; size_t http_buflen; - int ch; - bool gzip_mode, http_mode, print_descriptions; + int ch, error; + bool exclude, include, gzip_mode, http_mode, print_descriptions; + char errbuf[BUFSIZ]; /* Parse command line flags. */ - gzip_mode = http_mode = print_descriptions = false; - while ((ch = getopt(argc, argv, "dgh")) != -1) { + include = exclude = gzip_mode = http_mode = print_descriptions = false; + while ((ch = getopt(argc, argv, "de:ghi:")) != -1) { switch (ch) { case 'd': print_descriptions = true; break; + case 'e': + error = regcomp(&exc_regex, optarg, REG_EXTENDED); + if (error != 0) { + regerror(error, &exc_regex, errbuf, sizeof(errbuf)); + errx(1, "bad regular expression '%s': %s", + optarg, errbuf); + } + exclude = true; + break; case 'g': gzip_mode = true; break; case 'h': http_mode = true; break; + case 'i': + error = regcomp(&inc_regex, optarg, REG_EXTENDED); + if (error != 0) { + regerror(error, &inc_regex, errbuf, sizeof(errbuf)); + errx(1, "bad regular expression '%s': %s", + optarg, errbuf); + } + include = true; + break; default: usage(); } @@ -590,7 +628,7 @@ main(int argc, char *argv[]) /* Print all OIDs. */ oid_get_root(&o); do { - oid_print(&o, &on, print_descriptions, fp); + oid_print(&o, &on, print_descriptions, exclude, include, fp); } while (oid_get_next(&o, &o)); } else { int i; @@ -602,7 +640,7 @@ main(int argc, char *argv[]) oid_get_by_name(&root, argv[i]); o = root; do { - oid_print(&o, &on, print_descriptions, fp); + oid_print(&o, &on, print_descriptions, exclude, include, fp); } while (oid_get_next(&o, &o) && oid_is_beneath(&o, &root)); } From nobody Sun Oct 10 18:18:29 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2A42017E97C7; Sun, 10 Oct 2021 18:18: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 4HS9Cp0hTwz3m7m; Sun, 10 Oct 2021 18:18: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 EC371122DC; Sun, 10 Oct 2021 18:18: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 19AIITS3011643; Sun, 10 Oct 2021 18:18:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AIITrM011642; Sun, 10 Oct 2021 18:18:29 GMT (envelope-from git) Date: Sun, 10 Oct 2021 18:18:29 GMT Message-Id: <202110101818.19AIITrM011642@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Robert Wing Subject: git: 61156558d2a5 - stable/12 - prometheus_sysctl_exporter(8): filter output using a regex List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rew X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: 61156558d2a53e88c139561458420f2e62f6aa06 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by rew: URL: https://cgit.FreeBSD.org/src/commit/?id=61156558d2a53e88c139561458420f2e62f6aa06 commit 61156558d2a53e88c139561458420f2e62f6aa06 Author: Robert Wing AuthorDate: 2021-10-08 01:00:27 +0000 Commit: Robert Wing CommitDate: 2021-10-10 18:18:29 +0000 prometheus_sysctl_exporter(8): filter output using a regex Add two options, -i and -e, for filtering prometheus metrics. Each option takes a regular expression as an argument. The provided regex will be tested against the prometheus metric name. The -i option includes metrics matching the given regex. The -e option excludes metrics matching the given regex. Sponsored by: Modirum MDPay Sponsored by: Klara Inc. Reviewed by: 0mp, debdrup Differential Revision: https://reviews.freebsd.org/D32269 (cherry picked from commit 8ff2b52241400f2b5c2287b91e6e12b97ffd5773) --- .../prometheus_sysctl_exporter.8 | 18 ++++- .../prometheus_sysctl_exporter.c | 88 ++++++++++++++++------ 2 files changed, 80 insertions(+), 26 deletions(-) diff --git a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 index f4ac44891ecb..7d73e3cab8cd 100644 --- a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 +++ b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.8 @@ -22,7 +22,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd December 18, 2016 +.Dd October 7, 2021 .Dt PROMETHEUS_SYSCTL_EXPORTER 8 .Os .Sh NAME @@ -31,6 +31,8 @@ .Sh SYNOPSIS .Nm prometheus_sysctl_exporter .Op Fl dgh +.Op Fl e Ar pattern +.Op Fl i Ar pattern .Op Ar prefix ... .Sh DESCRIPTION Prometheus is a monitoring system that gathers metrics from its targets @@ -74,12 +76,26 @@ The following options are available: .Bl -tag -width indent .It Fl d Print descriptions of metrics when available. +.It Fl e Ar pattern +Same as +.Fl i , +except exclude metrics that match +.Ar pattern . .It Fl g Gzip compresses the HTTP response body. .It Fl h Precede the output with a HTTP response header. This flag is required when running this utility through .Xr inetd 8 . +.It Fl i Ar pattern +If specified, include metrics that match +.Ar pattern . +The format of +.Ar pattern +is to be a regular expression as described in +.Xr re_format 7 . +The provided regular expression is tested against the Prometheus +metric name. .El .Sh SEE ALSO .Xr cron 8 , diff --git a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c index b1f24ddf203a..25e60f5dddbe 100644 --- a/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c +++ b/usr.sbin/prometheus_sysctl_exporter/prometheus_sysctl_exporter.c @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -44,6 +45,10 @@ __FBSDID("$FreeBSD$"); #include #include +/* Regular expressions for filtering output. */ +static regex_t inc_regex; +static regex_t exc_regex; + /* * Cursor for iterating over all of the system's sysctl OIDs. */ @@ -370,25 +375,27 @@ oid_get_name(const struct oid *o, struct oidname *on) on->oid = *o; } -/* Prints the name and labels of an OID to a file stream. */ +/* Populates the name and labels of an OID to a buffer. */ static void -oidname_print(const struct oidname *on, const struct oidformat *of, - FILE *fp) +oid_get_metric(const struct oidname *on, const struct oidformat *of, + char *metric, size_t mlen) { const char *name, *label; size_t i; - char separator; + char separator, buf[BUFSIZ]; /* Print the name of the metric. */ - fprintf(fp, "sysctl"); + snprintf(metric, mlen, "%s", "sysctl"); name = on->names; label = on->labels; for (i = 0; i < on->oid.len; ++i) { if (*label == '\0') { - fputc('_', fp); + strlcat(metric, "_", mlen); while (*name != '\0') { /* Map unsupported characters to underscores. */ - fputc(isalnum(*name) ? *name : '_', fp); + snprintf(buf, sizeof(buf), "%c", + isalnum(*name) ? *name : '_'); + strlcat(metric, buf, mlen); ++name; } } @@ -396,9 +403,9 @@ oidname_print(const struct oidname *on, const struct oidformat *of, label += strlen(label) + 1; } if (oidformat_is_temperature(of)) - fprintf(fp, "_celcius"); + strlcat(metric, "_celcius", mlen); else if (oidformat_is_timeval(of)) - fprintf(fp, "_seconds"); + strlcat(metric, "_seconds", mlen); /* Print the labels of the metric. */ name = on->names; @@ -410,21 +417,23 @@ oidname_print(const struct oidname *on, const struct oidformat *of, "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789_")] == '\0'); - fprintf(fp, "%c%s=\"", separator, label); + snprintf(buf, sizeof(buf), "%c%s=\"", separator, label); + strlcat(metric, buf, mlen); while (*name != '\0') { /* Escape backslashes and double quotes. */ if (*name == '\\' || *name == '"') - fputc('\\', fp); - fputc(*name++, fp); + strlcat(metric, "\\", mlen); + snprintf(buf, sizeof(buf), "%c", *name++); + strlcat(metric, buf, mlen); } - fputc('"', fp); + strlcat(metric, "\"", mlen); separator = ','; } name += strlen(name) + 1; label += strlen(label) + 1; } if (separator != '{') - fputc('}', fp); + strlcat(metric, "}", mlen); } /* Returns whether the OID name has any labels associated to it. */ @@ -483,16 +492,25 @@ oiddescription_print(const struct oiddescription *od, FILE *fp) static void oid_print(const struct oid *o, struct oidname *on, bool print_description, - FILE *fp) + bool exclude, bool include, FILE *fp) { struct oidformat of; struct oidvalue ov; struct oiddescription od; + char metric[BUFSIZ]; if (!oid_get_format(o, &of) || !oid_get_value(o, &of, &ov)) return; oid_get_name(o, on); + oid_get_metric(on, &of, metric, sizeof(metric)); + + if (exclude && regexec(&exc_regex, metric, 0, NULL, 0) == 0) + return; + + if (include && regexec(&inc_regex, metric, 0, NULL, 0) != 0) + return; + /* * Print the line with the description. Prometheus expects a * single unique description for every metric, which cannot be @@ -502,14 +520,14 @@ oid_print(const struct oid *o, struct oidname *on, bool print_description, if (print_description && !oidname_has_labels(on) && oid_get_description(o, &od)) { fprintf(fp, "# HELP "); - oidname_print(on, &of, fp); + fprintf(fp, "%s", metric); fputc(' ', fp); oiddescription_print(&od, fp); fputc('\n', fp); } /* Print the line with the value. */ - oidname_print(on, &of, fp); + fprintf(fp, "%s", metric); fputc(' ', fp); oidvalue_print(&ov, fp); fputc('\n', fp); @@ -539,8 +557,9 @@ static void usage(void) { - fprintf(stderr, - "usage: prometheus_sysctl_exporter [-dgh] [prefix ...]\n"); + fprintf(stderr, "%s", + "usage: prometheus_sysctl_exporter [-dgh] [-e pattern] [-i pattern]\n" + "\t[prefix ...]\n"); exit(1); } @@ -551,22 +570,41 @@ main(int argc, char *argv[]) char *http_buf; FILE *fp; size_t http_buflen; - int ch; - bool gzip_mode, http_mode, print_descriptions; + int ch, error; + bool exclude, include, gzip_mode, http_mode, print_descriptions; + char errbuf[BUFSIZ]; /* Parse command line flags. */ - gzip_mode = http_mode = print_descriptions = false; - while ((ch = getopt(argc, argv, "dgh")) != -1) { + include = exclude = gzip_mode = http_mode = print_descriptions = false; + while ((ch = getopt(argc, argv, "de:ghi:")) != -1) { switch (ch) { case 'd': print_descriptions = true; break; + case 'e': + error = regcomp(&exc_regex, optarg, REG_EXTENDED); + if (error != 0) { + regerror(error, &exc_regex, errbuf, sizeof(errbuf)); + errx(1, "bad regular expression '%s': %s", + optarg, errbuf); + } + exclude = true; + break; case 'g': gzip_mode = true; break; case 'h': http_mode = true; break; + case 'i': + error = regcomp(&inc_regex, optarg, REG_EXTENDED); + if (error != 0) { + regerror(error, &inc_regex, errbuf, sizeof(errbuf)); + errx(1, "bad regular expression '%s': %s", + optarg, errbuf); + } + include = true; + break; default: usage(); } @@ -590,7 +628,7 @@ main(int argc, char *argv[]) /* Print all OIDs. */ oid_get_root(&o); do { - oid_print(&o, &on, print_descriptions, fp); + oid_print(&o, &on, print_descriptions, exclude, include, fp); } while (oid_get_next(&o, &o)); } else { int i; @@ -602,7 +640,7 @@ main(int argc, char *argv[]) oid_get_by_name(&root, argv[i]); o = root; do { - oid_print(&o, &on, print_descriptions, fp); + oid_print(&o, &on, print_descriptions, exclude, include, fp); } while (oid_get_next(&o, &o) && oid_is_beneath(&o, &root)); } From nobody Sun Oct 10 18:24:36 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4590E17EAC95; Sun, 10 Oct 2021 18:24: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 4HS9Ls1Y6Yz3mvl; Sun, 10 Oct 2021 18:24: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 157AA12A9F; Sun, 10 Oct 2021 18:24: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 19AIOacb024464; Sun, 10 Oct 2021 18:24:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AIOapi024463; Sun, 10 Oct 2021 18:24:36 GMT (envelope-from git) Date: Sun, 10 Oct 2021 18:24:36 GMT Message-Id: <202110101824.19AIOapi024463@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: a0558fe90d3b - main - Retire code added to support CloudABI List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a0558fe90d3bebdf8583888cc96b4c170eab8cfb Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=a0558fe90d3bebdf8583888cc96b4c170eab8cfb commit a0558fe90d3bebdf8583888cc96b4c170eab8cfb Author: Mateusz Guzik AuthorDate: 2021-04-28 20:55:03 +0000 Commit: Mateusz Guzik CommitDate: 2021-10-10 18:24:29 +0000 Retire code added to support CloudABI CloudABI was removed in cf0ee8738e31aa9e6fbf4dca4dac56d89226a71a --- sys/kern/kern_descrip.c | 97 ++----------------------------------------------- sys/kern/kern_exec.c | 88 ++++---------------------------------------- sys/kern/kern_fork.c | 4 +- sys/kern/subr_syscall.c | 2 - sys/sys/filedesc.h | 5 --- sys/sys/imgact.h | 3 -- sys/sys/proc.h | 2 +- 7 files changed, 14 insertions(+), 187 deletions(-) diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index 755b5df51c6a..b10dcc2f9469 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -906,7 +906,7 @@ kern_dup(struct thread *td, u_int mode, int flags, int old, int new) FILEDESC_XLOCK(fdp); if (fget_locked(fdp, old) == NULL) goto unlock; - if ((mode == FDDUP_FIXED || mode == FDDUP_MUSTREPLACE) && old == new) { + if (mode == FDDUP_FIXED && old == new) { td->td_retval[0] = new; if (flags & FDDUP_FLAG_CLOEXEC) fdp->fd_ofiles[new].fde_flags |= UF_EXCLOSE; @@ -932,13 +932,6 @@ kern_dup(struct thread *td, u_int mode, int flags, int old, int new) goto unlock; } break; - case FDDUP_MUSTREPLACE: - /* Target file descriptor must exist. */ - if (fget_locked(fdp, new) == NULL) { - fdrop(oldfp, td); - goto unlock; - } - break; case FDDUP_FIXED: if (new >= fdp->fd_nfiles) { /* @@ -2320,14 +2313,6 @@ pdunshare(struct thread *td) p->p_pd = pdp; } -void -fdinstall_remapped(struct thread *td, struct filedesc *fdp) -{ - - fdescfree(td); - td->td_proc->p_fd = fdp; -} - /* * Copy a filedesc structure. A NULL pointer in returns a NULL reference, * this is to ease callers, not catch errors. @@ -2380,66 +2365,6 @@ pdcopy(struct pwddesc *pdp) return (newpdp); } -/* - * Copies a filedesc structure, while remapping all file descriptors - * stored inside using a translation table. - * - * File descriptors are copied over to the new file descriptor table, - * regardless of whether the close-on-exec flag is set. - */ -int -fdcopy_remapped(struct filedesc *fdp, const int *fds, size_t nfds, - struct filedesc **ret) -{ - struct filedesc *newfdp; - struct filedescent *nfde, *ofde; - int error, i, lastfile; - - MPASS(fdp != NULL); - - newfdp = fdinit(fdp, true, &lastfile); - if (nfds > lastfile + 1) { - /* New table cannot be larger than the old one. */ - error = E2BIG; - goto bad; - } - /* Copy all passable descriptors (i.e. not kqueue). */ - newfdp->fd_freefile = nfds; - for (i = 0; i < nfds; ++i) { - if (fds[i] < 0 || fds[i] > lastfile) { - /* File descriptor out of bounds. */ - error = EBADF; - goto bad; - } - ofde = &fdp->fd_ofiles[fds[i]]; - if (ofde->fde_file == NULL) { - /* Unused file descriptor. */ - error = EBADF; - goto bad; - } - if ((ofde->fde_file->f_ops->fo_flags & DFLAG_PASSABLE) == 0) { - /* File descriptor cannot be passed. */ - error = EINVAL; - goto bad; - } - if (!fhold(ofde->fde_file)) { - error = EBADF; - goto bad; - } - nfde = &newfdp->fd_ofiles[i]; - *nfde = *ofde; - filecaps_copy(&ofde->fde_caps, &nfde->fde_caps, true); - fdused_init(newfdp, i); - } - FILEDESC_SUNLOCK(fdp); - *ret = newfdp; - return (0); -bad: - FILEDESC_SUNLOCK(fdp); - fdescfree_remapped(newfdp); - return (error); -} - /* * Clear POSIX style locks. This is only used when fdp looses a reference (i.e. * one of processes using it exits) and the table used to be shared. @@ -2526,7 +2451,7 @@ retry: * Release a filedesc structure. */ static void -fdescfree_fds(struct thread *td, struct filedesc *fdp, bool needclose) +fdescfree_fds(struct thread *td, struct filedesc *fdp) { struct filedesc0 *fdp0; struct freetable *ft, *tft; @@ -2551,10 +2476,7 @@ fdescfree_fds(struct thread *td, struct filedesc *fdp, bool needclose) fp = fde->fde_file; if (fp != NULL) { fdefree_last(fde); - if (needclose) - (void) closef(fp, td); - else - fdrop(fp, td); + (void) closef(fp, td); } } @@ -2598,7 +2520,7 @@ fdescfree(struct thread *td) if (refcount_release(&fdp->fd_refcnt) == 0) return; - fdescfree_fds(td, fdp, 1); + fdescfree_fds(td, fdp); } void @@ -2621,17 +2543,6 @@ pdescfree(struct thread *td) pddrop(pdp); } -void -fdescfree_remapped(struct filedesc *fdp) -{ -#ifdef INVARIANTS - /* fdescfree_fds() asserts that fd_refcnt == 0. */ - if (!refcount_release(&fdp->fd_refcnt)) - panic("%s: fd table %p has extra references", __func__, fdp); -#endif - fdescfree_fds(curthread, fdp, 0); -} - /* * For setugid programs, we don't want to people to use that setugidness * to generate error messages which write to a file which otherwise would diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index 7ec405ee6a62..50e75fda6cfb 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -704,21 +704,14 @@ interpret: goto exec_fail_dealloc; } - if (args->fdp != NULL) { - /* Install a brand new file descriptor table. */ - fdinstall_remapped(td, args->fdp); - args->fdp = NULL; - } else { - /* - * Keep on using the existing file descriptor table. For - * security and other reasons, the file descriptor table - * cannot be shared after an exec. - */ - fdunshare(td); - pdunshare(td); - /* close files on exec */ - fdcloseexec(td); - } + /* + * For security and other reasons, the file descriptor table cannot be + * shared after an exec. + */ + fdunshare(td); + pdunshare(td); + /* close files on exec */ + fdcloseexec(td); /* * Malloc things before we need locks. @@ -1239,69 +1232,6 @@ err_exit: return (error); } -int -exec_copyin_data_fds(struct thread *td, struct image_args *args, - const void *data, size_t datalen, const int *fds, size_t fdslen) -{ - struct filedesc *ofdp; - const char *p; - int *kfds; - int error; - - memset(args, '\0', sizeof(*args)); - ofdp = td->td_proc->p_fd; - if (datalen >= ARG_MAX || fdslen >= ofdp->fd_nfiles) - return (E2BIG); - error = exec_alloc_args(args); - if (error != 0) - return (error); - - args->begin_argv = args->buf; - args->stringspace = ARG_MAX; - - if (datalen > 0) { - /* - * Argument buffer has been provided. Copy it into the - * kernel as a single string and add a terminating null - * byte. - */ - error = copyin(data, args->begin_argv, datalen); - if (error != 0) - goto err_exit; - args->begin_argv[datalen] = '\0'; - args->endp = args->begin_argv + datalen + 1; - args->stringspace -= datalen + 1; - - /* - * Traditional argument counting. Count the number of - * null bytes. - */ - for (p = args->begin_argv; p < args->endp; ++p) - if (*p == '\0') - ++args->argc; - } else { - /* No argument buffer provided. */ - args->endp = args->begin_argv; - } - - /* Create new file descriptor table. */ - kfds = malloc(fdslen * sizeof(int), M_TEMP, M_WAITOK); - error = copyin(fds, kfds, fdslen * sizeof(int)); - if (error != 0) { - free(kfds, M_TEMP); - goto err_exit; - } - error = fdcopy_remapped(ofdp, kfds, fdslen, &args->fdp); - free(kfds, M_TEMP); - if (error != 0) - goto err_exit; - - return (0); -err_exit: - exec_free_args(args); - return (error); -} - struct exec_args_kva { vm_offset_t addr; u_int gen; @@ -1438,8 +1368,6 @@ exec_free_args(struct image_args *args) free(args->fname_buf, M_TEMP); args->fname_buf = NULL; } - if (args->fdp != NULL) - fdescfree_remapped(args->fdp); } /* diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index 2d8381894a7c..606801283a1f 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -597,8 +597,7 @@ do_fork(struct thread *td, struct fork_req *fr, struct proc *p2, struct thread * * been preserved. */ p2->p_flag |= p1->p_flag & P_SUGID; - td2->td_pflags |= (td->td_pflags & (TDP_ALTSTACK | - TDP_SIGFASTBLOCK)) | TDP_FORKING; + td2->td_pflags |= (td->td_pflags & (TDP_ALTSTACK | TDP_SIGFASTBLOCK)); SESS_LOCK(p1->p_session); if (p1->p_session->s_ttyvp != NULL && p1->p_flag & P_CONTROLT) p2->p_flag |= P_CONTROLT; @@ -1100,7 +1099,6 @@ fork_exit(void (*callout)(void *, struct trapframe *), void *arg, if (p->p_sysent->sv_schedtail != NULL) (p->p_sysent->sv_schedtail)(td); - td->td_pflags &= ~TDP_FORKING; } /* diff --git a/sys/kern/subr_syscall.c b/sys/kern/subr_syscall.c index 2304e3e7f3f9..ada2053bc87c 100644 --- a/sys/kern/subr_syscall.c +++ b/sys/kern/subr_syscall.c @@ -215,8 +215,6 @@ syscallret(struct thread *td) ksiginfo_t ksi; int traced; - KASSERT((td->td_pflags & TDP_FORKING) == 0, - ("fork() did not clear TDP_FORKING upon completion")); KASSERT(td->td_errno != ERELOOKUP, ("ERELOOKUP not consumed syscall %d", td->td_sa.code)); diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h index f17fdf601ba1..30392c1bf0fd 100644 --- a/sys/sys/filedesc.h +++ b/sys/sys/filedesc.h @@ -203,7 +203,6 @@ enum { FDDUP_NORMAL, /* dup() behavior. */ FDDUP_FCNTL, /* fcntl()-style errors. */ FDDUP_FIXED, /* Force fixed allocation. */ - FDDUP_MUSTREPLACE, /* Target must exist. */ FDDUP_LASTMODE, }; @@ -250,12 +249,8 @@ void fdclose(struct thread *td, struct file *fp, int idx); void fdcloseexec(struct thread *td); void fdsetugidsafety(struct thread *td); struct filedesc *fdcopy(struct filedesc *fdp); -int fdcopy_remapped(struct filedesc *fdp, const int *fds, size_t nfds, - struct filedesc **newfdp); -void fdinstall_remapped(struct thread *td, struct filedesc *fdp); void fdunshare(struct thread *td); void fdescfree(struct thread *td); -void fdescfree_remapped(struct filedesc *fdp); int fdlastfile(struct filedesc *fdp); int fdlastfile_single(struct filedesc *fdp); struct filedesc *fdinit(struct filedesc *fdp, bool prepfiles, int *lastfile); diff --git a/sys/sys/imgact.h b/sys/sys/imgact.h index cd130551c050..ef4de48c3e6d 100644 --- a/sys/sys/imgact.h +++ b/sys/sys/imgact.h @@ -55,7 +55,6 @@ struct image_args { int argc; /* count of argument strings */ int envc; /* count of environment strings */ int fd; /* file descriptor of the executable */ - struct filedesc *fdp; /* new file descriptor table */ }; struct image_params { @@ -120,8 +119,6 @@ void exec_setregs(struct thread *, struct image_params *, uintptr_t); int exec_shell_imgact(struct image_params *); int exec_copyin_args(struct image_args *, const char *, enum uio_seg, char **, char **); -int exec_copyin_data_fds(struct thread *, struct image_args *, const void *, - size_t, const int *, size_t); void exec_stackgap(struct image_params *imgp, uintptr_t *dp); int pre_execve(struct thread *td, struct vmspace **oldvmspace); void post_execve(struct thread *td, int error, struct vmspace *oldvmspace); diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 691bdae8b41a..1e3d7359a55b 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -524,7 +524,7 @@ do { \ #define TDP_RESETSPUR 0x04000000 /* Reset spurious page fault history. */ #define TDP_NERRNO 0x08000000 /* Last errno is already in td_errno */ #define TDP_UIOHELD 0x10000000 /* Current uio has pages held in td_ma */ -#define TDP_FORKING 0x20000000 /* Thread is being created through fork() */ +#define TDP_UNUSED0 0x20000000 /* UNUSED */ #define TDP_EXECVMSPC 0x40000000 /* Execve destroyed old vmspace */ #define TDP_SIGFASTPENDING 0x80000000 /* Pending signal due to sigfastblock */ From nobody Sun Oct 10 18:24:38 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 15DE717EAC14; Sun, 10 Oct 2021 18:24: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 4HS9Lt2LPLz3my3; Sun, 10 Oct 2021 18:24: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 2B56712855; Sun, 10 Oct 2021 18:24: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 19AIOcHg024488; Sun, 10 Oct 2021 18:24:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AIOc18024487; Sun, 10 Oct 2021 18:24:38 GMT (envelope-from git) Date: Sun, 10 Oct 2021 18:24:38 GMT Message-Id: <202110101824.19AIOc18024487@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: 93e0523499fe - main - vfs: add predicts to getvnode and getvnode_path List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 93e0523499fecb2ce1ca434c8ab96b58559771f3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=93e0523499fecb2ce1ca434c8ab96b58559771f3 commit 93e0523499fecb2ce1ca434c8ab96b58559771f3 Author: Mateusz Guzik AuthorDate: 2021-10-10 18:17:50 +0000 Commit: Mateusz Guzik CommitDate: 2021-10-10 18:24:29 +0000 vfs: add predicts to getvnode and getvnode_path --- sys/kern/vfs_syscalls.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 1b355eea7d6a..82a8125ece95 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -4316,7 +4316,7 @@ getvnode_path(struct thread *td, int fd, cap_rights_t *rightsp, * other thread to dereference it. Guard against the race by * checking f_ops. */ - if (fp->f_vnode == NULL || fp->f_ops == &badfileops) { + if (__predict_false(fp->f_vnode == NULL || fp->f_ops == &badfileops)) { fdrop(fp, td); return (EINVAL); } @@ -4336,12 +4336,14 @@ getvnode(struct thread *td, int fd, cap_rights_t *rightsp, struct file **fpp) int error; error = getvnode_path(td, fd, rightsp, fpp); + if (__predict_false(error != 0)) + return (error); /* * Filter out O_PATH file descriptors, most getvnode() callers * do not call fo_ methods. */ - if (error == 0 && (*fpp)->f_ops == &path_fileops) { + if (__predict_false((*fpp)->f_ops == &path_fileops)) { fdrop(*fpp, td); error = EBADF; } From nobody Sun Oct 10 19:34:56 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A434717F42AA; Sun, 10 Oct 2021 19:34: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 4HSBw04FvCz4Rt7; Sun, 10 Oct 2021 19:34: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 71E2613944; Sun, 10 Oct 2021 19:34: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 19AJYuAx019277; Sun, 10 Oct 2021 19:34:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19AJYuIJ019276; Sun, 10 Oct 2021 19:34:56 GMT (envelope-from git) Date: Sun, 10 Oct 2021 19:34:56 GMT Message-Id: <202110101934.19AJYuIJ019276@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: e81e77c5a055 - main - Enable PPS_SYNC on amd64, arm64 and armv7 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: e81e77c5a055d1cbf6d6a6f0acbaf443267aa84f Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=e81e77c5a055d1cbf6d6a6f0acbaf443267aa84f commit e81e77c5a055d1cbf6d6a6f0acbaf443267aa84f Author: Konstantin Belousov AuthorDate: 2021-10-10 12:20:45 +0000 Commit: Konstantin Belousov CommitDate: 2021-10-10 19:34:40 +0000 Enable PPS_SYNC on amd64, arm64 and armv7 Remove the option from NOTES/LINT, and add to NOTES for powerpc and riscv. PR: 259036 Requested by: John Hay Discussed with: ian, imp Sponsored by: The FreeBSD Foundation MFC after: 1 week --- sys/amd64/conf/GENERIC | 6 ++++++ sys/arm/conf/std.armv7 | 6 ++++++ sys/arm64/conf/std.arm64 | 6 ++++++ sys/conf/NOTES | 6 ------ sys/powerpc/conf/NOTES | 2 ++ sys/riscv/conf/NOTES | 2 ++ 6 files changed, 22 insertions(+), 6 deletions(-) diff --git a/sys/amd64/conf/GENERIC b/sys/amd64/conf/GENERIC index 40c14e90aef0..f47b995beb2c 100644 --- a/sys/amd64/conf/GENERIC +++ b/sys/amd64/conf/GENERIC @@ -138,6 +138,12 @@ options PCI_IOV # PCI SR-IOV support options COMPAT_LINUXKPI +# Enable support for the kernel PLL to use an external PPS signal, +# under supervision of [x]ntpd(8) +# More info in ntpd documentation: http://www.eecis.udel.edu/~ntp + +options PPS_SYNC + # Floppy drives device fdc diff --git a/sys/arm/conf/std.armv7 b/sys/arm/conf/std.armv7 index 2d1dfa135780..fda291df289a 100644 --- a/sys/arm/conf/std.armv7 +++ b/sys/arm/conf/std.armv7 @@ -84,3 +84,9 @@ options VERBOSE_SYSINIT=0 # Support debug.verbose_sysinit, off by default #options KTR_VERBOSE=0 #options USB_REQ_DEBUG #options USB_VERBOSE + +# Enable support for the kernel PLL to use an external PPS signal, +# under supervision of [x]ntpd(8) +# More info in ntpd documentation: http://www.eecis.udel.edu/~ntp + +options PPS_SYNC diff --git a/sys/arm64/conf/std.arm64 b/sys/arm64/conf/std.arm64 index 8460d449939d..5c26f19b4299 100644 --- a/sys/arm64/conf/std.arm64 +++ b/sys/arm64/conf/std.arm64 @@ -96,3 +96,9 @@ options NETDUMP # netdump(4) client support # Make an SMP-capable kernel by default options SMP # Symmetric MultiProcessor Kernel + +# Enable support for the kernel PLL to use an external PPS signal, +# under supervision of [x]ntpd(8) +# More info in ntpd documentation: http://www.eecis.udel.edu/~ntp + +options PPS_SYNC diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 39446fba06b3..e41b00edf2f6 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1245,12 +1245,6 @@ options CAPABILITY_MODE # sandboxes with no global namespace access options HZ=100 -# Enable support for the kernel PLL to use an external PPS signal, -# under supervision of [x]ntpd(8) -# More info in ntpd documentation: http://www.eecis.udel.edu/~ntp - -options PPS_SYNC - # Enable support for generic feed-forward clocks in the kernel. # The feed-forward clock support is an alternative to the feedback oriented # ntpd/system clock approach, and is to be used with a feed-forward diff --git a/sys/powerpc/conf/NOTES b/sys/powerpc/conf/NOTES index 78d990331ead..1a0c70fb08f9 100644 --- a/sys/powerpc/conf/NOTES +++ b/sys/powerpc/conf/NOTES @@ -46,6 +46,8 @@ options PSIM #GDB PSIM ppc simulator options MAMBO #IBM Mambo Full System Simulator options QEMU #QEMU processor emulator +options PPS_SYNC + # The cpufreq(4) driver provides support for CPU frequency control device cpufreq diff --git a/sys/riscv/conf/NOTES b/sys/riscv/conf/NOTES index 7dda89bfe1a8..60e842ab2709 100644 --- a/sys/riscv/conf/NOTES +++ b/sys/riscv/conf/NOTES @@ -20,6 +20,8 @@ options FPE # Floating-point extension support options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default options INTRNG # Include INTRNG framework +options PPS_SYNC + # RISC-V SBI console device rcons From nobody Sun Oct 10 21:31:10 2021 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A5E6817EA0D7; Sun, 10 Oct 2021 21:31: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 4HSFV64Lmtz4rTW; Sun, 10 Oct 2021 21:31: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 7582D150F0; Sun, 10 Oct 2021 21:31: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 19ALVArv076012; Sun, 10 Oct 2021 21:31:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 19ALVAYb076011; Sun, 10 Oct 2021 21:31:10 GMT (envelope-from git) Date: Sun, 10 Oct 2021 21:31:10 GMT Message-Id: <202110102131.19ALVAYb076011@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: 235891a1273d - main - nfscl: Fix NFS VOP_ALLOCATE for mounts without Allocate support List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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: 235891a1273d99b86784f935d2d6c554ce189559 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rmacklem: URL: https://cgit.FreeBSD.org/src/commit/?id=235891a1273d99b86784f935d2d6c554ce189559 commit 235891a1273d99b86784f935d2d6c554ce189559 Author: Rick Macklem AuthorDate: 2021-10-10 21:27:52 +0000 Commit: Rick Macklem CommitDate: 2021-10-10 21:27:52 +0000 nfscl: Fix NFS VOP_ALLOCATE for mounts without Allocate support Without this patch, nfs_allocate() fell back on using vop_stdallocate() for NFS mounts without Allocate operation support. This was incorrect, since some file systems, such as ZFS, cannot do allocate via vop_stdallocate(), which uses writes to try and allocate blocks. Also, fix nfs_allocate() to return EINVAL when mounts cannot do Allocate, since that is the correct error for posix_fallocate(2). Note that Allocate is only supported by some NFSv4.2 servers. MFC after: 2 weeks --- sys/fs/nfsclient/nfs_clvnops.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 0b60100d1fc9..3e444780eb24 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -3671,17 +3671,12 @@ nfs_allocate(struct vop_allocate_args *ap) mtx_lock(&nmp->nm_mtx); nmp->nm_privflag |= NFSMNTP_NOALLOCATE; mtx_unlock(&nmp->nm_mtx); + error = EINVAL; } } else { mtx_unlock(&nmp->nm_mtx); - error = EIO; + error = EINVAL; } - /* - * If the NFS server cannot perform the Allocate operation, just call - * vop_stdallocate() to perform it. - */ - if (error != 0) - error = vop_stdallocate(ap); if (attrflag != 0) { ret = nfscl_loadattrcache(&vp, &nfsva, NULL, NULL, 0, 1); if (error == 0 && ret != 0)