From nobody Fri Mar 31 19:55:50 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pp9yH2F9bz43BR0; Fri, 31 Mar 2023 19:55: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 4Pp9yH101Dz3NVd; Fri, 31 Mar 2023 19:55:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680292551; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WueU7HbrVmhOKqwn58IYPPKmb34gqq/pISH3NyRJZ/E=; b=sqGukqAWbsf8FaYQXIFY5/ISaQol5OrfcJ+j8vDZmtNqISfGLsaFSKUpqZFAycvR9joRXy DWdwIrocq5uBH8NQNd4a3CgxaL3dcrWlRvn4Q1jnDodcHy80sxjNbe5T/PqKuBuOxXHlc4 eno36vqj9K0WQoSFOf45jCfY5iJG9BrLf1QLSqmPDqP6hJQsvgvEE9Jja7gVp75/rrBrCK fNgD+0T8ucyRLScJMOyk0hQequERWTkaVAKAVTw5hskRUYHxaPnKY4We2+1uQzAu4DAYht i7BnMiWbeSq6cCAhKZkypgs5Ca3+lFhTGQ/78Pdmj6HrxVK47LfQM1Vc/q6egw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680292551; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=WueU7HbrVmhOKqwn58IYPPKmb34gqq/pISH3NyRJZ/E=; b=YjP0Uv7BU11lejAWH72hQN/z5eh6xr1KxYzouenHW4XAH+8QtqHMGwCSGxP9Be5Pk97bxS ZGGAtgpg2eTtRhvxJWlYAJ7Ztl+NE8vjbAEvr0guL4i7c9ctkQCUKYeeC5++Fm6FGV89xV 1ShzuzCZ/qAcCRq7JDFOCa6Oiat1EfBrGn70lQQv8S/jNNEsicJ7TR47yD65RK6fo44WAt y/ODFOH73BS+mU0G4efOZDTdQ6OXJVW3yyjwsp9lBvF9V2b1Wrs+vhAuADFZmEYGX7aUUT GIQ0ExrhEHC+Q5Lh5aw3u2GsPuupmhF8jb8c/PWD24rWHHNvupQK7kgY8Po3yg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680292551; a=rsa-sha256; cv=none; b=qXgn966CTvUHT6lOAEJah86/fg/3+6Ew61FxqBb/x2K7Orz7hVU0RhbkjsdWKLR7VxIbxG z/8s5JGVYwXaTeATGUlCXGmJ/59KgYEaJdhekE3yoyL20cZ06QlTMb88ItufEgLyuFMjmh w11ZNPzV3nFiJ0FIGGMLI8W7q/v7vPlszPYCrnT1gghS9IaRvNG8ynRifgR018kxLlOhwZ UD3FtGL6l9XhIjY2fw5BCbAkbP4wUW92qnLn+DxKItLf/Vs1V6sWojTfyK79tj1OvKIpdj GsdAxcmM+by9C+3bNaWf9E0GTUTK1YhHud4DzdigSw7JKX7N88QD8DoXtvPuQw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pp9yH01pwz16L5; Fri, 31 Mar 2023 19:55: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 32VJtoXa075716; Fri, 31 Mar 2023 19:55:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 32VJtoHY075715; Fri, 31 Mar 2023 19:55:50 GMT (envelope-from git) Date: Fri, 31 Mar 2023 19:55:50 GMT Message-Id: <202303311955.32VJtoHY075715@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Yuri Pankov Subject: git: 21f4e817fde7 - stable/13 - hv_hid: Hyper-V HID driver List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: yuripv X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 21f4e817fde79d5de79bfbdf180d358ca5f48bf9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by yuripv: URL: https://cgit.FreeBSD.org/src/commit/?id=21f4e817fde79d5de79bfbdf180d358ca5f48bf9 commit 21f4e817fde79d5de79bfbdf180d358ca5f48bf9 Author: Yuri AuthorDate: 2023-02-05 15:32:08 +0000 Commit: Yuri Pankov CommitDate: 2023-03-31 18:44:04 +0000 hv_hid: Hyper-V HID driver Hyper-V HID driver using hidbus/hms. Reviewed by: wulf MFC after: 1 week PR: 221074 Differential revision: https://reviews.freebsd.org/D38140 (cherry picked from commit e4d3f1e40ab3327e4ff6f689f54a64bd2ebc0568) --- sys/amd64/conf/NOTES | 1 + sys/conf/files.x86 | 1 + sys/dev/hid/hidbus.c | 1 + sys/dev/hyperv/input/hv_hid.c | 564 ++++++++++++++++++++++++++++++++++++++++ sys/i386/conf/NOTES | 1 + sys/modules/hyperv/Makefile | 2 +- sys/modules/hyperv/hid/Makefile | 12 + 7 files changed, 581 insertions(+), 1 deletion(-) diff --git a/sys/amd64/conf/NOTES b/sys/amd64/conf/NOTES index 300a8a48bab7..a72e9f2623bb 100644 --- a/sys/amd64/conf/NOTES +++ b/sys/amd64/conf/NOTES @@ -508,6 +508,7 @@ device kvm_clock # KVM paravirtual clock driver # Microsoft Hyper-V enhancement support device hyperv # HyperV drivers +device hvhid # HyperV HID device # Xen HVM Guest Optimizations options XENHVM # Xen HVM kernel infrastructure diff --git a/sys/conf/files.x86 b/sys/conf/files.x86 index a5a565483fe8..07ecb9fe1e01 100644 --- a/sys/conf/files.x86 +++ b/sys/conf/files.x86 @@ -134,6 +134,7 @@ dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc dev/hyperv/hvsock/hv_sock.c optional hyperv +dev/hyperv/input/hv_hid.c optional hyperv hvhid dev/hyperv/input/hv_kbd.c optional hyperv dev/hyperv/input/hv_kbdc.c optional hyperv dev/hyperv/pcib/vmbus_pcib.c optional hyperv pci diff --git a/sys/dev/hid/hidbus.c b/sys/dev/hid/hidbus.c index 9ff00fece820..c10f17748e8d 100644 --- a/sys/dev/hid/hidbus.c +++ b/sys/dev/hid/hidbus.c @@ -926,5 +926,6 @@ driver_t hidbus_driver = { MODULE_DEPEND(hidbus, hid, 1, 1, 1); MODULE_VERSION(hidbus, 1); +DRIVER_MODULE(hidbus, hvhid, hidbus_driver, hidbus_devclass, 0, 0); DRIVER_MODULE(hidbus, iichid, hidbus_driver, hidbus_devclass, 0, 0); DRIVER_MODULE(hidbus, usbhid, hidbus_driver, hidbus_devclass, 0, 0); diff --git a/sys/dev/hyperv/input/hv_hid.c b/sys/dev/hyperv/input/hv_hid.c new file mode 100644 index 000000000000..d576b292e12e --- /dev/null +++ b/sys/dev/hyperv/input/hv_hid.c @@ -0,0 +1,564 @@ +/*- + * Copyright (c) 2017 Microsoft Corp. + * Copyright (c) 2023 Yuri + * + * 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 unmodified, 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 ``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 BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +#include "hid_if.h" +#include "vmbus_if.h" + +#define HV_HID_VER_MAJOR 2 +#define HV_HID_VER_MINOR 0 +#define HV_HID_VER (HV_HID_VER_MINOR | (HV_HID_VER_MAJOR) << 16) + +#define HV_BUFSIZ (4 * PAGE_SIZE) +#define HV_HID_RINGBUFF_SEND_SZ (10 * PAGE_SIZE) +#define HV_HID_RINGBUFF_RECV_SZ (10 * PAGE_SIZE) + +typedef struct { + device_t dev; + struct mtx mtx; + /* vmbus */ + struct vmbus_channel *hs_chan; + struct vmbus_xact_ctx *hs_xact_ctx; + uint8_t *buf; + int buflen; + /* hid */ + struct hid_device_info hdi; + hid_intr_t *intr; + bool intr_on; + void *intr_ctx; + uint8_t *rdesc; +} hv_hid_sc; + +typedef enum { + SH_PROTO_REQ, + SH_PROTO_RESP, + SH_DEVINFO, + SH_DEVINFO_ACK, + SH_INPUT_REPORT, +} sh_msg_type; + +typedef struct { + sh_msg_type type; + uint32_t size; +} __packed sh_msg_hdr; + +typedef struct { + sh_msg_hdr hdr; + char data[]; +} __packed sh_msg; + +typedef struct { + sh_msg_hdr hdr; + uint32_t ver; +} __packed sh_proto_req; + +typedef struct { + sh_msg_hdr hdr; + uint32_t ver; + uint32_t app; +} __packed sh_proto_resp; + +typedef struct { + u_int size; + u_short vendor; + u_short product; + u_short version; + u_short reserved[11]; +} __packed sh_devinfo; + +/* Copied from linux/hid.h */ +typedef struct { + uint8_t bDescriptorType; + uint16_t wDescriptorLength; +} __packed sh_hcdesc; + +typedef struct { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t bcdHID; + uint8_t bCountryCode; + uint8_t bNumDescriptors; + sh_hcdesc hcdesc[1]; +} __packed sh_hdesc; + +typedef struct { + sh_msg_hdr hdr; + sh_devinfo devinfo; + sh_hdesc hdesc; +} __packed sh_devinfo_resp; + +typedef struct { + sh_msg_hdr hdr; + uint8_t rsvd; +} __packed sh_devinfo_ack; + +typedef struct { + sh_msg_hdr hdr; + char buffer[]; +} __packed sh_input_report; + +typedef enum { + HV_HID_MSG_INVALID, + HV_HID_MSG_DATA, +} hv_hid_msg_type; + +typedef struct { + hv_hid_msg_type type; + uint32_t size; + char data[]; +} hv_hid_pmsg; + +typedef struct { + hv_hid_msg_type type; + uint32_t size; + union { + sh_msg msg; + sh_proto_req req; + sh_proto_resp resp; + sh_devinfo_resp dresp; + sh_devinfo_ack ack; + sh_input_report irep; + }; +} hv_hid_msg; + +#define HV_HID_REQ_SZ (sizeof(hv_hid_pmsg) + sizeof(sh_proto_req)) +#define HV_HID_RESP_SZ (sizeof(hv_hid_pmsg) + sizeof(sh_proto_resp)) +#define HV_HID_ACK_SZ (sizeof(hv_hid_pmsg) + sizeof(sh_devinfo_ack)) + +/* Somewhat arbitrary, enough to get the devinfo response */ +#define HV_HID_REQ_MAX 256 +#define HV_HID_RESP_MAX 256 + +static const struct vmbus_ic_desc vmbus_hid_descs[] = { + { + .ic_guid = { .hv_guid = { + 0x9e, 0xb6, 0xa8, 0xcf, 0x4a, 0x5b, 0xc0, 0x4c, + 0xb9, 0x8b, 0x8b, 0xa1, 0xa1, 0xf3, 0xf9, 0x5a} }, + .ic_desc = "Hyper-V HID device" + }, + VMBUS_IC_DESC_END +}; + +/* TODO: add GUID support to devmatch(8) to export vmbus_hid_descs directly */ +const struct { + char *guid; +} vmbus_hid_descs_pnp[] = {{ "cfa8b69e-5b4a-4cc0-b98b-8ba1a1f3f95a" }}; + +static int hv_hid_attach(device_t dev); +static int hv_hid_detach(device_t dev); + +static int +hv_hid_connect_vsp(hv_hid_sc *sc) +{ + struct vmbus_xact *xact; + hv_hid_msg *req; + const hv_hid_msg *resp; + size_t resplen; + int ret; + + xact = vmbus_xact_get(sc->hs_xact_ctx, HV_HID_REQ_SZ); + if (xact == NULL) { + device_printf(sc->dev, "no xact for init"); + return (ENODEV); + } + req = vmbus_xact_req_data(xact); + req->type = HV_HID_MSG_DATA; + req->size = sizeof(sh_proto_req); + req->req.hdr.type = SH_PROTO_REQ; + req->req.hdr.size = sizeof(u_int); + req->req.ver = HV_HID_VER; + + vmbus_xact_activate(xact); + ret = vmbus_chan_send(sc->hs_chan, + VMBUS_CHANPKT_TYPE_INBAND, + VMBUS_CHANPKT_FLAG_RC, + req, HV_HID_REQ_SZ, (uint64_t)(uintptr_t)xact); + if (ret != 0) { + device_printf(sc->dev, "failed to send proto req\n"); + vmbus_xact_deactivate(xact); + return (ret); + } + resp = vmbus_chan_xact_wait(sc->hs_chan, xact, &resplen, true); + if (resplen != HV_HID_RESP_SZ || !resp->resp.app) { + device_printf(sc->dev, "proto req failed\n"); + ret = ENODEV; + } + + vmbus_xact_put(xact); + return (ret); +} + +static void +hv_hid_receive(hv_hid_sc *sc, struct vmbus_chanpkt_hdr *pkt) +{ + const hv_hid_msg *msg; + sh_msg_type msg_type; + uint32_t msg_len; + void *rdesc; + + msg = VMBUS_CHANPKT_CONST_DATA(pkt); + msg_len = VMBUS_CHANPKT_DATALEN(pkt); + + if (msg->type != HV_HID_MSG_DATA) + return; + + if (msg_len <= sizeof(hv_hid_pmsg)) { + device_printf(sc->dev, "invalid packet length\n"); + return; + } + msg_type = msg->msg.hdr.type; + switch (msg_type) { + case SH_PROTO_RESP: { + struct vmbus_xact_ctx *xact_ctx; + + xact_ctx = sc->hs_xact_ctx; + if (xact_ctx != NULL) { + vmbus_xact_ctx_wakeup(xact_ctx, + VMBUS_CHANPKT_CONST_DATA(pkt), + VMBUS_CHANPKT_DATALEN(pkt)); + } + break; + } + case SH_DEVINFO: { + struct vmbus_xact *xact; + struct hid_device_info *hdi; + hv_hid_msg ack; + const sh_devinfo *devinfo; + const sh_hdesc *hdesc; + + /* Send ack */ + ack.type = HV_HID_MSG_DATA; + ack.size = sizeof(sh_devinfo_ack); + ack.ack.hdr.type = SH_DEVINFO_ACK; + ack.ack.hdr.size = 1; + ack.ack.rsvd = 0; + + xact = vmbus_xact_get(sc->hs_xact_ctx, HV_HID_ACK_SZ); + if (xact == NULL) + break; + vmbus_xact_activate(xact); + (void) vmbus_chan_send(sc->hs_chan, VMBUS_CHANPKT_TYPE_INBAND, + 0, &ack, HV_HID_ACK_SZ, (uint64_t)(uintptr_t)xact); + vmbus_xact_deactivate(xact); + vmbus_xact_put(xact); + + /* Check for resume from hibernation */ + if (sc->rdesc != NULL) + break; + + /* Parse devinfo response */ + devinfo = &msg->dresp.devinfo; + hdesc = &msg->dresp.hdesc; + if (hdesc->bLength == 0) + break; + hdi = &sc->hdi; + memset(hdi, 0, sizeof(*hdi)); + hdi->rdescsize = le16toh(hdesc->hcdesc[0].wDescriptorLength); + if (hdi->rdescsize == 0) + break; + strlcpy(hdi->name, "Hyper-V", sizeof(hdi->name)); + hdi->idBus = BUS_VIRTUAL; + hdi->idVendor = le16toh(devinfo->vendor); + hdi->idProduct = le16toh(devinfo->product); + hdi->idVersion = le16toh(devinfo->version); + /* Save rdesc copy */ + rdesc = malloc(hdi->rdescsize, M_DEVBUF, M_WAITOK | M_ZERO); + memcpy(rdesc, (const uint8_t *)hdesc + hdesc->bLength, + hdi->rdescsize); + mtx_lock(&sc->mtx); + sc->rdesc = rdesc; + wakeup(sc); + mtx_unlock(&sc->mtx); + break; + } + case SH_INPUT_REPORT: { + mtx_lock(&sc->mtx); + if (sc->intr != NULL && sc->intr_on) + sc->intr(sc->intr_ctx, + __DECONST(void *, msg->irep.buffer), + msg->irep.hdr.size); + mtx_unlock(&sc->mtx); + break; + } + default: + break; + } +} + +static void +hv_hid_read_channel(struct vmbus_channel *channel, void *ctx) +{ + hv_hid_sc *sc; + uint8_t *buf; + int buflen; + int ret; + + sc = ctx; + buf = sc->buf; + buflen = sc->buflen; + for (;;) { + struct vmbus_chanpkt_hdr *pkt; + int rcvd; + + pkt = (struct vmbus_chanpkt_hdr *)buf; + rcvd = buflen; + ret = vmbus_chan_recv_pkt(channel, pkt, &rcvd); + if (__predict_false(ret == ENOBUFS)) { + buflen = sc->buflen * 2; + while (buflen < rcvd) + buflen *= 2; + buf = malloc(buflen, M_DEVBUF, M_WAITOK | M_ZERO); + device_printf(sc->dev, "expand recvbuf %d -> %d\n", + sc->buflen, buflen); + free(sc->buf, M_DEVBUF); + sc->buf = buf; + sc->buflen = buflen; + continue; + } else if (__predict_false(ret == EAGAIN)) { + /* No more channel packets; done! */ + break; + } + KASSERT(ret == 0, ("vmbus_chan_recv_pkt failed: %d", ret)); + + switch (pkt->cph_type) { + case VMBUS_CHANPKT_TYPE_COMP: + case VMBUS_CHANPKT_TYPE_RXBUF: + device_printf(sc->dev, "unhandled event: %d\n", + pkt->cph_type); + break; + case VMBUS_CHANPKT_TYPE_INBAND: + hv_hid_receive(sc, pkt); + break; + default: + device_printf(sc->dev, "unknown event: %d\n", + pkt->cph_type); + break; + } + } +} + +static int +hv_hid_probe(device_t dev) +{ + device_t bus; + const struct vmbus_ic_desc *d; + + if (resource_disabled(device_get_name(dev), 0)) + return (ENXIO); + + bus = device_get_parent(dev); + for (d = vmbus_hid_descs; d->ic_desc != NULL; ++d) { + if (VMBUS_PROBE_GUID(bus, dev, &d->ic_guid) == 0) { + device_set_desc(dev, d->ic_desc); + return (BUS_PROBE_DEFAULT); + } + } + + return (ENXIO); +} + +static int +hv_hid_attach(device_t dev) +{ + device_t child; + hv_hid_sc *sc; + int ret; + + sc = device_get_softc(dev); + sc->dev = dev; + mtx_init(&sc->mtx, "hvhid lock", NULL, MTX_DEF); + sc->hs_chan = vmbus_get_channel(dev); + sc->hs_xact_ctx = vmbus_xact_ctx_create(bus_get_dma_tag(dev), + HV_HID_REQ_MAX, HV_HID_RESP_MAX, 0); + if (sc->hs_xact_ctx == NULL) { + ret = ENOMEM; + goto out; + } + sc->buflen = HV_BUFSIZ; + sc->buf = malloc(sc->buflen, M_DEVBUF, M_WAITOK | M_ZERO); + vmbus_chan_set_readbatch(sc->hs_chan, false); + ret = vmbus_chan_open(sc->hs_chan, HV_HID_RINGBUFF_SEND_SZ, + HV_HID_RINGBUFF_RECV_SZ, NULL, 0, hv_hid_read_channel, sc); + if (ret != 0) + goto out; + ret = hv_hid_connect_vsp(sc); + if (ret != 0) + goto out; + + /* Wait until we have devinfo (or arbitrary timeout of 3s) */ + mtx_lock(&sc->mtx); + if (sc->rdesc == NULL) + ret = mtx_sleep(sc, &sc->mtx, 0, "hvhid", hz * 3); + mtx_unlock(&sc->mtx); + if (ret != 0) { + ret = ENODEV; + goto out; + } + child = device_add_child(sc->dev, "hidbus", -1); + if (child == NULL) { + device_printf(sc->dev, "failed to add hidbus\n"); + ret = ENOMEM; + goto out; + } + device_set_ivars(child, &sc->hdi); + ret = bus_generic_attach(dev); + if (ret != 0) + device_printf(sc->dev, "failed to attach hidbus\n"); +out: + if (ret != 0) + hv_hid_detach(dev); + return (ret); +} + +static int +hv_hid_detach(device_t dev) +{ + hv_hid_sc *sc; + int ret; + + sc = device_get_softc(dev); + ret = device_delete_children(dev); + if (ret != 0) + return (ret); + if (sc->hs_xact_ctx != NULL) + vmbus_xact_ctx_destroy(sc->hs_xact_ctx); + vmbus_chan_close(vmbus_get_channel(dev)); + free(sc->buf, M_DEVBUF); + free(sc->rdesc, M_DEVBUF); + mtx_destroy(&sc->mtx); + + return (0); +} + +static void +hv_hid_intr_setup(device_t dev, hid_intr_t intr, void *ctx, + struct hid_rdesc_info *rdesc) +{ + hv_hid_sc *sc; + + if (intr == NULL) + return; + + sc = device_get_softc(dev); + sc->intr = intr; + sc->intr_on = false; + sc->intr_ctx = ctx; + rdesc->rdsize = rdesc->isize; +} + +static void +hv_hid_intr_unsetup(device_t dev) +{ + hv_hid_sc *sc; + + sc = device_get_softc(dev); + sc->intr = NULL; + sc->intr_on = false; + sc->intr_ctx = NULL; +} + +static int +hv_hid_intr_start(device_t dev) +{ + hv_hid_sc *sc; + + sc = device_get_softc(dev); + mtx_lock(&sc->mtx); + sc->intr_on = true; + mtx_unlock(&sc->mtx); + return (0); +} + +static int +hv_hid_intr_stop(device_t dev) +{ + hv_hid_sc *sc; + + sc = device_get_softc(dev); + mtx_lock(&sc->mtx); + sc->intr_on = false; + mtx_unlock(&sc->mtx); + return (0); +} + +static int +hv_hid_get_rdesc(device_t dev, void *buf, hid_size_t len) +{ + hv_hid_sc *sc; + + sc = device_get_softc(dev); + if (len < sc->hdi.rdescsize) + return (EMSGSIZE); + memcpy(buf, sc->rdesc, len); + return (0); +} + +static device_method_t hv_hid_methods[] = { + DEVMETHOD(device_probe, hv_hid_probe), + DEVMETHOD(device_attach, hv_hid_attach), + DEVMETHOD(device_detach, hv_hid_detach), + + DEVMETHOD(hid_intr_setup, hv_hid_intr_setup), + DEVMETHOD(hid_intr_unsetup, hv_hid_intr_unsetup), + DEVMETHOD(hid_intr_start, hv_hid_intr_start), + DEVMETHOD(hid_intr_stop, hv_hid_intr_stop), + + DEVMETHOD(hid_get_rdesc, hv_hid_get_rdesc), + DEVMETHOD_END, +}; + +static driver_t hv_hid_driver = { + .name = "hvhid", + .methods = hv_hid_methods, + .size = sizeof(hv_hid_sc), +}; + +DRIVER_MODULE(hv_hid, vmbus, hv_hid_driver, NULL, NULL); +MODULE_VERSION(hv_hid, 1); +MODULE_DEPEND(hv_hid, hidbus, 1, 1, 1); +MODULE_DEPEND(hv_hid, hms, 1, 1, 1); +MODULE_DEPEND(hv_hid, vmbus, 1, 1, 1); +MODULE_PNP_INFO("Z:classid", vmbus, hv_hid, vmbus_hid_descs_pnp, + nitems(vmbus_hid_descs_pnp)); diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES index 763ba321380a..2c069e1c52b8 100644 --- a/sys/i386/conf/NOTES +++ b/sys/i386/conf/NOTES @@ -725,6 +725,7 @@ device kvm_clock # KVM paravirtual clock driver options HYPERV device hyperv # HyperV drivers +device hvhid # HyperV HID device ##################################################################### diff --git a/sys/modules/hyperv/Makefile b/sys/modules/hyperv/Makefile index e94b441e876d..0e9ca2495ef6 100644 --- a/sys/modules/hyperv/Makefile +++ b/sys/modules/hyperv/Makefile @@ -1,5 +1,5 @@ # $FreeBSD$ -SUBDIR = vmbus netvsc storvsc utilities hvsock +SUBDIR = vmbus netvsc storvsc utilities hvsock hid .include diff --git a/sys/modules/hyperv/hid/Makefile b/sys/modules/hyperv/hid/Makefile new file mode 100644 index 000000000000..40b991065d2a --- /dev/null +++ b/sys/modules/hyperv/hid/Makefile @@ -0,0 +1,12 @@ +# $FreeBSD$ + +.PATH: ${SRCTOP}/sys/dev/hyperv/input + +KMOD= hv_hid +SRCS= hv_hid.c +SRCS+= bus_if.h device_if.h hid_if.h vmbus_if.h + +CFLAGS+= -I${SRCTOP}/sys/dev/hyperv/include \ + -I${SRCTOP}/sys/dev/hyperv/vmbus + +.include From nobody Mon Apr 3 04:29:47 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PqdGN1k1xz43YJt; Mon, 3 Apr 2023 04: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 4PqdGN1J8bz49d5; Mon, 3 Apr 2023 04:29:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680496188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OzKF5scHBu+6sF0hsc3k7w494wVYY5w6BGja0lS3mVY=; b=pNcDwAg7ZaaR38R5b9FApnv6w8cQnOsHjrt2/83TiQcoytOXfQeMRvU0tBloNwEhd+tmPW 9tEC5LXx4YJy30eNMeOrFQkAI/x9dCvUSgwQfr4NrNvg5gOwQC5GYs8i2QESnJWFItho3+ INzOA8vEFaZKySekSaju8cVdmYkXlWiJkFx3/FBtzM0jC3qKhGz4MzRyQlz7IsiTrBYLzJ tXTaDPGvcxnn8Roc5eMYka6dE6FP7WlL2diPZIjDS+U6IzoRChcWIr5g7RAfcrJlrNEtHp R2n8xVM19z6Q32QDAqp9C8yYR5GqCnOQpOb7gangJeO+Yt7aF64b/xVSDGASrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680496188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=OzKF5scHBu+6sF0hsc3k7w494wVYY5w6BGja0lS3mVY=; b=x+JxB3xU9VUCOp908nHhwgABJ9YiNsyoFfV8dnstuTO/YlSYA+m24iJSdXEo81dTJqjaut RR43uqzvaxAadjWRbvBY5mnCmzI1yfdRSWF6UOk0DBw8lTbyzYzHF82e5NrrbmeCZyEy+H oH/PRZIIanCjKF5ld0zvKaVSVYVwfHEPaj/wosA0SO7sOpvvtcQT3kVXASJabT3nLdGK4m 3vdu5gaxzKqjB5tmMZa9P52czYnT4dZ+IssYlTeVp65LQfv/PxQ0TfSp47wdLknPokW1xh cn4aNplmyo2sS55ytCGhFeANhi8zAOB1LBktt7+nqrNR25eG/g3wNBO61AhMqw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680496188; a=rsa-sha256; cv=none; b=vgKo+fBhweoip9YUK8wj51XhgEiSP3mETsdUc0rxR5nO+KyYala2CEYXh2slmoQ/EnrW/T 2rjaHq8ldFXmzdk967GRYBlDHVIJaWYpEmDh5ooWBO0e/evyYV+FTxxX/nAnI4Oxhhx+Ie NMknqRBH/MZ3sb6sI4EU6SlziGmviKNVNqQAHvq0PFQmaeHRjXxmXEVSbZq0s23Gtfac9f 1ecL46gxUDo+OecUpHpCfOC/qBa7x1Bvx4k2ze5SD1KCkJRrUR36rP2WVrjl5bZIEMz8xd M40SCIpl39/Xkr0k6FxV06FiP265gN1lksc3XZa1V8E/1qdg6Lr4LY9Nh3dYMw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PqdGN06nPzkc9; Mon, 3 Apr 2023 04:29: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 3334Tlfr049342; Mon, 3 Apr 2023 04: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 3334Tl53049341; Mon, 3 Apr 2023 04:29:47 GMT (envelope-from git) Date: Mon, 3 Apr 2023 04:29:47 GMT Message-Id: <202304030429.3334Tl53049341@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: 8c09bde960a0 - stable/13 - MFV: xz 5.4.2. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 8c09bde960a0638e7cdf223952981a4adbd3f102 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=8c09bde960a0638e7cdf223952981a4adbd3f102 commit 8c09bde960a0638e7cdf223952981a4adbd3f102 Author: Xin LI AuthorDate: 2023-03-20 02:30:08 +0000 Commit: Xin LI CommitDate: 2023-04-03 04:29:37 +0000 MFV: xz 5.4.2. (cherry picked from commit c917796c041664a04153af24c2e68cc963fe52bc) --- contrib/xz/COPYING | 11 + contrib/xz/ChangeLog | 1265 ++++++++++ contrib/xz/README | 8 +- contrib/xz/THANKS | 2 + contrib/xz/doxygen/Doxyfile | 2684 +++++++++++++++++++++ contrib/xz/doxygen/update-doxygen | 111 + contrib/xz/src/common/mythread.h | 4 +- contrib/xz/src/common/tuklib_mbstr_fw.c | 2 +- contrib/xz/src/common/tuklib_physmem.c | 18 + contrib/xz/src/liblzma/api/lzma.h | 9 +- contrib/xz/src/liblzma/api/lzma/base.h | 52 +- contrib/xz/src/liblzma/api/lzma/bcj.h | 48 +- contrib/xz/src/liblzma/api/lzma/block.h | 177 +- contrib/xz/src/liblzma/api/lzma/check.h | 44 +- contrib/xz/src/liblzma/api/lzma/container.h | 217 +- contrib/xz/src/liblzma/api/lzma/delta.h | 23 +- contrib/xz/src/liblzma/api/lzma/filter.h | 256 +- contrib/xz/src/liblzma/api/lzma/hardware.h | 3 +- contrib/xz/src/liblzma/api/lzma/index.h | 220 +- contrib/xz/src/liblzma/api/lzma/index_hash.h | 39 +- contrib/xz/src/liblzma/api/lzma/lzma12.h | 64 +- contrib/xz/src/liblzma/api/lzma/stream_flags.h | 109 +- contrib/xz/src/liblzma/api/lzma/version.h | 34 +- contrib/xz/src/liblzma/api/lzma/vli.h | 18 +- contrib/xz/src/liblzma/check/check.h | 4 - contrib/xz/src/liblzma/check/crc64_fast.c | 2 +- contrib/xz/src/liblzma/common/block_decoder.c | 5 +- contrib/xz/src/liblzma/common/block_encoder.c | 7 +- contrib/xz/src/liblzma/common/common.c | 20 +- contrib/xz/src/liblzma/common/index_decoder.c | 13 +- contrib/xz/src/liblzma/common/index_encoder.c | 11 +- contrib/xz/src/liblzma/common/index_hash.c | 13 +- contrib/xz/src/liblzma/common/lzip_decoder.c | 6 +- contrib/xz/src/liblzma/common/stream_decoder_mt.c | 8 +- contrib/xz/src/liblzma/common/stream_encoder_mt.c | 2 +- contrib/xz/src/liblzma/common/string_conversion.c | 11 +- contrib/xz/src/liblzma/delta/delta_decoder.c | 7 +- contrib/xz/src/liblzma/delta/delta_encoder.c | 12 +- contrib/xz/src/liblzma/lz/lz_encoder_mf.c | 11 +- contrib/xz/src/liblzma/simple/simple_coder.c | 6 +- contrib/xz/src/xz/args.c | 11 +- contrib/xz/src/xz/coder.h | 3 +- contrib/xz/src/xz/file_io.c | 34 +- contrib/xz/src/xz/list.c | 4 +- contrib/xz/src/xz/options.c | 4 +- contrib/xz/src/xz/suffix.c | 26 +- contrib/xz/src/xz/suffix.h | 8 + contrib/xz/src/xz/xz.1 | 2 +- lib/liblzma/config.h | 6 +- 49 files changed, 5178 insertions(+), 476 deletions(-) diff --git a/contrib/xz/COPYING b/contrib/xz/COPYING index 20e60d5b2427..e54eeacfbf3f 100644 --- a/contrib/xz/COPYING +++ b/contrib/xz/COPYING @@ -21,6 +21,17 @@ XZ Utils Licensing XZ Utils specific documentation files in other directories are in the public domain. + Note: The JavaScript files (under the MIT license) have + been removed from the Doxygen-generated HTML version of the + liblzma API documentation. Doxygen itself is under the GNU GPL + but the remaining files generated by Doxygen are not affected + by the licenses used in Doxygen because Doxygen licensing has + the following exception: + + "Documents produced by doxygen are derivative works + derived from the input used in their production; + they are not affected by this license." + - Translated messages are in the public domain. - The build system contains public domain files, and files that diff --git a/contrib/xz/ChangeLog b/contrib/xz/ChangeLog index c068ad3e3901..52375b492a14 100644 --- a/contrib/xz/ChangeLog +++ b/contrib/xz/ChangeLog @@ -1,3 +1,1268 @@ +commit 6ca8046ecbc7a1c81ee08f544bfd1414819fb2e8 +Author: Jia Tan +Date: 2023-03-18 23:22:06 +0800 + + Bump version and soname for 5.4.2. + + src/liblzma/Makefile.am | 2 +- + src/liblzma/api/lzma/version.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit ce4f246600db10e77fc93d492ea045b4c9830bc6 +Author: Jia Tan +Date: 2023-03-18 22:10:57 +0800 + + Add NEWS for 5.4.2. + + NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +commit 3634fe330788fc0df217acdb6581031a851600a3 +Author: Lasse Collin +Date: 2023-03-18 16:00:54 +0200 + + Update the copy of GNU GPLv3 from gnu.org to COPYING.GPLv3. + + COPYING.GPLv3 | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 97679d25ce7cb014328f1455bb338903c003d54f +Author: Lasse Collin +Date: 2023-03-18 15:51:57 +0200 + + Change a few HTTP URLs to HTTPS. + + The xz man page timestamp was intentionally left unchanged. + + INSTALL | 2 +- + README | 8 ++++---- + configure.ac | 2 +- + dos/INSTALL.txt | 4 ++-- + src/liblzma/api/lzma.h | 8 ++++---- + src/liblzma/check/sha256.c | 2 +- + src/xz/xz.1 | 2 +- + windows/INSTALL-MinGW.txt | 10 +++++----- + 8 files changed, 19 insertions(+), 19 deletions(-) + +commit 01a67e89a56c3ebf5f6681bd06f0edc22a1ae594 +Author: Jia Tan +Date: 2023-03-18 00:40:28 +0800 + + CMake: Fix typo in a comment. + + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5dca3f5cbab31105196c89cd6df0a9bbc3307c05 +Author: Lasse Collin +Date: 2023-03-17 18:36:22 +0200 + + Windows: build.bash: Copy liblzma API docs to the output package. + + windows/build.bash | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ae252862b30b509ab88b2bbcaa08e8d51b57e928 +Author: Lasse Collin +Date: 2023-03-17 08:53:38 +0200 + + Windows: Add microlzma_*.c to the VS project files. + + These should have been included in 5.3.2alpha already. + + windows/vs2013/liblzma.vcxproj | 2 ++ + windows/vs2013/liblzma_dll.vcxproj | 2 ++ + windows/vs2017/liblzma.vcxproj | 2 ++ + windows/vs2017/liblzma_dll.vcxproj | 2 ++ + windows/vs2019/liblzma.vcxproj | 2 ++ + windows/vs2019/liblzma_dll.vcxproj | 2 ++ + 6 files changed, 12 insertions(+) + +commit 147d282cc3733e2723df82622b6540ddfb52635e +Author: Lasse Collin +Date: 2023-03-17 08:43:51 +0200 + + CMake: Add microlzma_*.c to the build. + + These should have been included in 5.3.2alpha already. + + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4523a5ee29f45c0256af67a15771bc8bbd25ba53 +Author: Lasse Collin +Date: 2023-03-17 08:41:36 +0200 + + Build: Update comments about unaligned access to mention 64-bit. + + cmake/tuklib_integer.cmake | 7 +++---- + m4/tuklib_integer.m4 | 4 ++-- + 2 files changed, 5 insertions(+), 6 deletions(-) + +commit 82aacb40367dc580b09c5a7b270f6c98b63e49b9 +Author: Lasse Collin +Date: 2023-03-17 00:02:30 +0200 + + Tests: Update .gitignore. + + .gitignore | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5d022c24921eec938604a8cb10d70aa08dbd8575 +Author: Lasse Collin +Date: 2023-03-14 20:04:03 +0200 + + po4a/update-po: Display the script name consistently in error messages. + + po4a/update-po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 896295117324f323c0b8db6a31ad6ebfaa88793d +Author: Jia Tan +Date: 2023-03-17 01:30:36 +0800 + + Doc: Rename Doxygen HTML doc directory name liblzma => api. + + When the docs are installed, calling the directory "liblzma" is + confusing since multiple other files in the doc directory are for + liblzma. This should also make it more natural for distros when they + package the documentation. + + .gitignore | 2 +- + Makefile.am | 18 +++++++++--------- + PACKAGERS | 4 ++-- + doxygen/Doxyfile | 2 +- + doxygen/update-doxygen | 18 +++++++++--------- + 5 files changed, 22 insertions(+), 22 deletions(-) + +commit 94097157fae308b2c1a5edb4e8597c68b45eeaea +Author: Jia Tan +Date: 2023-03-16 22:07:15 +0800 + + liblzma: Remove note from lzma_options_bcj about the ARM64 exception. + + This was left in by mistake since an early version of the ARM64 filter + used a different struct for its options. + + src/liblzma/api/lzma/bcj.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da16d0b73b79d7785ece6f78a577fadd1fb59d0e +Author: Lasse Collin +Date: 2023-03-15 19:19:13 +0200 + + COPYING: Add a note about the included Doxygen-generated HTML. + + COPYING | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit e57c74f9ef19201f72c106f2c347596f40229936 +Author: Jia Tan +Date: 2023-03-16 21:41:09 +0800 + + Doc: Update PACKAGERS with details about liblzma API docs install. + + PACKAGERS | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +commit 7e2fa48bb73edb25457232e2e62a4f81c6b95281 +Author: Jia Tan +Date: 2023-03-16 21:38:32 +0800 + + liblzma: Add set lzma.h as the main page for Doxygen documentation. + + The \mainpage command is used in the first block of comments in lzma.h. + This changes the previously nearly empty index.html to use the first + comment block in lzma.h for its contents. + + lzma.h is no longer documented separately, but this is for the better + since lzma.h only defined a few macros that users do not need to use. + The individual API header files all have a disclaimer that they should + not be #included directly, so there should be no confusion on the fact + that lzma.h should be the only header used by applications. + + Additionally, the note "See ../lzma.h for information about liblzma as + a whole." was removed since lzma.h is now the main page of the + generated HTML and does not have its own page anymore. So it would be + confusing in the HTML version and was only a "nice to have" when + browsing the source files. + + src/liblzma/api/lzma.h | 1 + + src/liblzma/api/lzma/base.h | 2 -- + src/liblzma/api/lzma/bcj.h | 2 -- + src/liblzma/api/lzma/block.h | 2 -- + src/liblzma/api/lzma/check.h | 2 -- + src/liblzma/api/lzma/container.h | 2 -- + src/liblzma/api/lzma/delta.h | 2 -- + src/liblzma/api/lzma/filter.h | 2 -- + src/liblzma/api/lzma/hardware.h | 2 -- + src/liblzma/api/lzma/index.h | 2 -- + src/liblzma/api/lzma/index_hash.h | 4 +--- + src/liblzma/api/lzma/lzma12.h | 2 -- + src/liblzma/api/lzma/stream_flags.h | 2 -- + src/liblzma/api/lzma/version.h | 2 -- + src/liblzma/api/lzma/vli.h | 2 -- + 15 files changed, 2 insertions(+), 29 deletions(-) + +commit d42977c7acfdf7fd9acc8803cf411eca7dc10478 +Author: Jia Tan +Date: 2023-03-16 21:37:32 +0800 + + Build: Generate doxygen documentation in autogen.sh. + + Another command line option (--no-doxygen) was added to disable + creating the doxygen documenation in cases where it not wanted or + if the doxygen tool is not installed. + + autogen.sh | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +commit 8fc712fcf41d821069c670f22b8bf628e7a4a877 +Author: Jia Tan +Date: 2023-03-16 21:35:55 +0800 + + Build: Create doxygen/update-doxygen script. + + This is a helper script to generate the Doxygen documentation. It can be + run in 'liblzma' or 'internal' mode by setting the first argument. It + will default to 'liblzma' mode and only generate documentation for the + liblzma API header files. + + The helper script will be run during the custom mydist hook when we + create releases. This hook already alters the source directory, so its + fine to do it here too. This way, we can include the Doxygen generated + files in the distrubtion and when installing. + + In 'liblzma' mode, the JavaScript is stripped from the .html files and + the .js files are removed. This avoids license hassle from jQuery and + other libraries that Doxygen 1.9.6 puts into jquery.js in minified form. + + Makefile.am | 1 + + doxygen/update-doxygen | 111 +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 112 insertions(+) + +commit 77d2c025d19fbac7277c63239cfb1338f02c66c0 +Author: Jia Tan +Date: 2023-03-16 21:34:36 +0800 + + Build: Install Doxygen docs and include in distribution if generated. + + Added a install-data-local target to install the Doxygen documentation + only when it has been generated. In order to correctly remove the docs, + a corresponding uninstall-local target was added. + + If the doxygen docs exist in the source tree, they will also be included + in the distribution now too. + + Makefile.am | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit 9af8f6f947a43974a4ff025f4c896f2fb4c91b4f +Author: Jia Tan +Date: 2023-01-03 20:37:30 +0800 + + Doxygen: Refactor Doxyfile.in to doxygen/Doxyfile. + + Instead of having Doxyfile.in configured by Autoconf, the Doxyfile + can have the tags that need to be configured piped into the doxygen + command through stdin with the overrides after Doxyfile's contents. + + Going forward, the documentation should be generated in two different + modes: liblzma or internal. + + liblzma is useful for most users. It is the documentation for just + the liblzma API header files. This is the default. + + internal is for people who want to understand how xz and liblzma work. + It might be useful for people who want to contribute to the project. + + .gitignore | 3 +- + Doxyfile.in | 1234 ------------------------- + Makefile.am | 1 - + configure.ac | 1 - + doxygen/Doxyfile | 2684 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 2686 insertions(+), 1237 deletions(-) + +commit 1c558a26928b753fcf1c0d4bce9c0643285edd86 +Author: Jia Tan +Date: 2023-02-28 23:22:36 +0800 + + Tests: Remove unused macros and functions. + + tests/tests.h | 75 ----------------------------------------------------------- + 1 file changed, 75 deletions(-) + +commit 7479a69a45a1b8fdb9a209e11f247dce11ac1ba0 +Author: Jia Tan +Date: 2023-01-12 22:29:07 +0800 + + Tests: Refactors existing lzma_index tests. + + Converts the existing lzma_index tests into tuktests and covers every + API function from index.h except for lzma_file_info_decoder, which can + be tested in the future. + + tests/test_index.c | 2036 ++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 1492 insertions(+), 544 deletions(-) + +commit fd56d5353360279c10e8e5e05f5bc6ea03f64584 +Author: Lasse Collin +Date: 2023-03-07 19:59:23 +0200 + + xz: Make Capsicum sandbox more strict with stdin and stdout. + + src/xz/file_io.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit d1bdaaebc68cae7f0ba457fa990b520df2186fd1 +Author: Lasse Collin +Date: 2023-03-11 19:31:40 +0200 + + xz: Don't fail if Capsicum is enabled but kernel doesn't support it. + + (This commit combines related commits from the master branch.) + + If Capsicum support is missing from the kernel or xz is being run + in an emulator that lacks Capsicum suport, the syscalls will fail + and set errno to ENOSYS. Previously xz would display and error and + exit, making xz unusable. Now it will check for ENOSYS and run + without sandbox support. Other tools like ssh behave similarly. + + Displaying a warning for missing Capsicum support was considered + but such extra output would quickly become annoying. It would also + break test_scripts.sh in "make check". + + Also move cap_enter() to be the first step instead of the last one. + This matches the example in the cap_rights_limit(2) man page. With + the current code it shouldn't make any practical difference though. + + Thanks to Xin Li for the bug report, suggesting a fix, and testing: + https://github.com/tukaani-project/xz/pull/43 + + Thanks to Jia Tan for most of the original commits. + + src/xz/file_io.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit 5d351c69c19d212ddd2cf1f3bdb24900820c6776 +Author: Jia Tan +Date: 2023-02-04 21:06:35 +0800 + + Build: Adjust CMake version search regex. + + Now, the LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, and LZMA_VERSION_PATCH + macros do not need to be on consecutive lines in version.h. They can be + separated by more whitespace, comments, or even other content, as long + as they appear in the proper order (major, minor, patch). + + CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit b82d4831e3f2339c4cdbc47776c99462088c11b7 +Author: Jia Tan +Date: 2023-01-26 09:50:21 +0800 + + liblzma: Improve documentation for version.h. + + Specified parameter and return values for API functions and documented + a few more of the macros. + + src/liblzma/api/lzma/version.h | 29 ++++++++++++++++++++++------- + 1 file changed, 22 insertions(+), 7 deletions(-) + +commit 2caba3efe3e0c2d7c6dca00e22c56812326a34e6 +Author: Jia Tan +Date: 2023-02-24 23:46:23 +0800 + + liblzma: Clarify lzma_lzma_preset() documentation in lzma12.h. + + lzma_lzma_preset() does not guarentee that the lzma_options_lzma are + usable in an encoder even if it returns false (success). If liblzma + is built with default configurations, then the options will always be + usable. However if the match finders hc3, hc4, or bt4 are disabled, then + the options may not be usable depending on the preset level requested. + + The documentation was updated to reflect this complexity, since this + behavior was unclear before. + + src/liblzma/api/lzma/lzma12.h | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 594f904673ba55a833adfa60bbab6b60d4902d08 +Author: Lasse Collin +Date: 2023-02-27 18:38:35 +0200 + + CMake: Require that the C compiler supports C99 or a newer standard. + + Thanks to autoantwort for reporting the issue and suggesting + a different patch: + https://github.com/tukaani-project/xz/pull/42 + + CMakeLists.txt | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 88101143cb774bca6b7006c8335b09dc3f334140 +Author: Jia Tan +Date: 2023-02-24 18:10:37 +0800 + + Tests: Small tweak to test-vli.c. + + The static global variables can be disabled if encoders and decoders + are not built. If they are not disabled and -Werror is used, it will + cause an usused warning as an error. + + tests/test_vli.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4042dbf03a06e019ccdd1e9d1b94cf613d62d5a9 +Author: Jia Tan +Date: 2023-02-06 21:46:43 +0800 + + liblzma: Replace '\n' -> newline in filter.h documentation. + + The '\n' renders as a newline when the comments are converted to html + by Doxygen. + + src/liblzma/api/lzma/filter.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3971f5c5024750ce8286891c6f79ae1661047483 +Author: Jia Tan +Date: 2023-02-06 21:45:37 +0800 + + liblzma: Shorten return description for two functions in filter.h. + + Shorten the description for lzma_raw_encoder_memusage() and + lzma_raw_decoder_memusage(). + + src/liblzma/api/lzma/filter.h | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit 5e61b39432752b6cd1a7b518f0f9e4f0c3f0f242 +Author: Jia Tan +Date: 2023-02-06 21:44:45 +0800 + + liblzma: Reword a few lines in filter.h + + src/liblzma/api/lzma/filter.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 8a53533869defa1191b41f176a0312cb53a139e2 +Author: Jia Tan +Date: 2023-02-06 21:35:06 +0800 + + liblzma: Improve documentation in filter.h. + + All functions now explicitly specify parameter and return values. + The notes and code annotations were moved before the parameter and + return value descriptions for consistency. + + Also, the description above lzma_filter_encoder_is_supported() about + not being able to list available filters was removed since + lzma_str_list_filters() will do this. + + src/liblzma/api/lzma/filter.h | 226 ++++++++++++++++++++++++++---------------- + 1 file changed, 143 insertions(+), 83 deletions(-) + +commit 6d05b08b17ac8cb93165ee8f310fdd925b0b258f +Author: Lasse Collin +Date: 2023-02-23 20:46:16 +0200 + + Update THANKS. + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit dfc9a54082e0fc7b3b796ea15336b5075acc79d5 +Author: Lasse Collin +Date: 2023-02-21 22:57:10 +0200 + + liblzma: Avoid null pointer + 0 (undefined behavior in C). + + In the C99 and C17 standards, section 6.5.6 paragraph 8 means that + adding 0 to a null pointer is undefined behavior. As of writing, + "clang -fsanitize=undefined" (Clang 15) diagnoses this. However, + I'm not aware of any compiler that would take advantage of this + when optimizing (Clang 15 included). It's good to avoid this anyway + since compilers might some day infer that pointer arithmetic implies + that the pointer is not NULL. That is, the following foo() would then + unconditionally return 0, even for foo(NULL, 0): + + void bar(char *a, char *b); + + int foo(char *a, size_t n) + { + bar(a, a + n); + return a == NULL; + } + + In contrast to C, C++ explicitly allows null pointer + 0. So if + the above is compiled as C++ then there is no undefined behavior + in the foo(NULL, 0) call. + + To me it seems that changing the C standard would be the sane + thing to do (just add one sentence) as it would ensure that a huge + amount of old code won't break in the future. Based on web searches + it seems that a large number of codebases (where null pointer + 0 + occurs) are being fixed instead to be future-proof in case compilers + will some day optimize based on it (like making the above foo(NULL, 0) + return 0) which in the worst case will cause security bugs. + + Some projects don't plan to change it. For example, gnulib and thus + many GNU tools currently require that null pointer + 0 is defined: + + https://lists.gnu.org/archive/html/bug-gnulib/2021-11/msg00000.html + + https://www.gnu.org/software/gnulib/manual/html_node/Other-portability-assumptions.html + + In XZ Utils null pointer + 0 issue should be fixed after this + commit. This adds a few if-statements and thus branches to avoid + null pointer + 0. These check for size > 0 instead of ptr != NULL + because this way bugs where size > 0 && ptr == NULL will likely + get caught quickly. None of them are in hot spots so it shouldn't + matter for performance. + + A little less readable version would be replacing + + ptr + offset + + with + + offset != 0 ? ptr + offset : ptr + + or creating a macro for it: + + #define my_ptr_add(ptr, offset) \ + ((offset) != 0 ? ((ptr) + (offset)) : (ptr)) + + Checking for offset != 0 instead of ptr != NULL allows GCC >= 8.1, + Clang >= 7, and Clang-based ICX to optimize it to the very same code + as ptr + offset. That is, it won't create a branch. So for hot code + this could be a good solution to avoid null pointer + 0. Unfortunately + other compilers like ICC 2021 or MSVC 19.33 (VS2022) will create a + branch from my_ptr_add(). + + Thanks to Marcin Kowalczyk for reporting the problem: + https://github.com/tukaani-project/xz/issues/36 + + src/liblzma/common/block_decoder.c | 5 ++++- + src/liblzma/common/block_encoder.c | 7 +++++-- + src/liblzma/common/common.c | 20 ++++++++++++++------ + src/liblzma/common/index_decoder.c | 13 ++++++++++--- + src/liblzma/common/index_encoder.c | 11 +++++++++-- + src/liblzma/common/index_hash.c | 13 ++++++++++--- + src/liblzma/common/lzip_decoder.c | 6 +++++- + src/liblzma/delta/delta_decoder.c | 7 ++++++- + src/liblzma/delta/delta_encoder.c | 12 ++++++++++-- + src/liblzma/simple/simple_coder.c | 6 ++++-- + 10 files changed, 77 insertions(+), 23 deletions(-) + +commit f6dce49cb656b358e2fb2a3032e35e20af34dc84 +Author: Jia Tan +Date: 2023-02-07 00:00:44 +0800 + + liblzma: Adjust container.h for consistency with filter.h. + + src/liblzma/api/lzma/container.h | 20 +++++++++----------- + 1 file changed, 9 insertions(+), 11 deletions(-) + +commit 173d240bb4763aedc8c01df4d9c83e311d954c33 +Author: Jia Tan +Date: 2023-02-07 00:00:09 +0800 + + liblzma: Fix small typos and reword a few things in filter.h. + + src/liblzma/api/lzma/container.h | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +commit 17797bacde3f7264048ef0976c137a600148d6cf +Author: Jia Tan +Date: 2023-02-06 23:42:08 +0800 + + liblzma: Convert list of flags in lzma_mt to bulleted list. + + src/liblzma/api/lzma/container.h | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 37da0e727161b401b8bfd8dccf163a4b2fc0460b +Author: Jia Tan +Date: 2023-01-26 23:17:41 +0800 + + liblzma: Fix typo in documentation in container.h + + lzma_microlzma_decoder -> lzma_microlzma_encoder + + src/liblzma/api/lzma/container.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b8331077c626e6bf14f4671d09b561146eaf816a +Author: Jia Tan +Date: 2023-01-26 23:16:34 +0800 + + liblzma: Improve documentation for container.h + + Standardizing each function to always specify parameters and return + values. Also moved the parameters and return values to the end of each + function description. + + src/liblzma/api/lzma/container.h | 146 +++++++++++++++++++++++++-------------- + 1 file changed, 93 insertions(+), 53 deletions(-) + +commit b9a3511bb61d3b6ce49abd33dce6155a573f5272 +Author: Jia Tan +Date: 2023-02-22 20:59:41 +0800 + + CMake: Add LZIP decoder test to list of tests. + + CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +commit cd82ef2fb48b174c57cd03b84a9a0f978772cb89 +Author: Lasse Collin +Date: 2023-02-17 20:56:49 +0200 + + Update THANKS. + + THANKS | 1 + + 1 file changed, 1 insertion(+) + +commit 076e911ba25cadf2cbdfbd0f65991a002e210c0b +Author: Lasse Collin +Date: 2023-02-17 20:48:28 +0200 + + Build: Use only the generic symbol versioning on MicroBlaze. + + On MicroBlaze, GCC 12 is broken in sense that + __has_attribute(__symver__) returns true but it still doesn't + support the __symver__ attribute even though the platform is ELF + and symbol versioning is supported if using the traditional + __asm__(".symver ...") method. Avoiding the traditional method is + good because it breaks LTO (-flto) builds with GCC. + + See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766 + + For now the only extra symbols in liblzma_linux.map are the + compatibility symbols with the patch that spread from RHEL/CentOS 7. + These require the use of __symver__ attribute or __asm__(".symver ...") + in the C code. Compatibility with the patch from CentOS 7 doesn't + seem valuable on MicroBlaze so use liblzma_generic.map on MicroBlaze + instead. It doesn't require anything special in the C code and thus + no LTO issues either. + + An alternative would be to detect support for __symver__ + attribute in configure.ac and CMakeLists.txt and fall back + to __asm__(".symver ...") but then LTO would be silently broken + on MicroBlaze. It sounds likely that MicroBlaze is a special + case so let's treat it as a such because that is simpler. If + a similar issue exists on some other platform too then hopefully + someone will report it and this can be reconsidered. + + (This doesn't do the same fix in CMakeLists.txt. Perhaps it should + but perhaps CMake build of liblzma doesn't matter much on MicroBlaze. + The problem breaks the build so it's easy to notice and can be fixed + later.) + + Thanks to Vincent Fazio for reporting the problem and proposing + a patch (in the end that solution wasn't used): + https://github.com/tukaani-project/xz/pull/32 + + configure.ac | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit bc34e5ac9996667d2c1ec9a7895ec5931ac4caea +Author: Lasse Collin +Date: 2023-02-16 21:09:00 +0200 + + liblzma: Very minor API doc tweaks. + + Use "member" to refer to struct members as that's the term used + by the C standard. + + Use lzma_options_delta.dist and such in docs so that in Doxygen's + HTML output they will link to the doc of the struct member. + + Clean up a few trailing white spaces too. + + src/liblzma/api/lzma/block.h | 6 +++--- + src/liblzma/api/lzma/delta.h | 6 +++--- + src/liblzma/api/lzma/index.h | 10 +++++----- + src/liblzma/api/lzma/stream_flags.h | 6 +++--- + 4 files changed, 14 insertions(+), 14 deletions(-) + +commit d31fbd28be5b79eb682db50004b0fb7aad5299ec +Author: Jia Tan +Date: 2023-02-17 00:54:33 +0800 + + liblzma: Adjust spacing in doc headers in bcj.h. + + src/liblzma/api/lzma/bcj.h | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 701e9be6bede19771895f756082db0c017f86f07 +Author: Jia Tan +Date: 2023-02-17 00:44:44 +0800 + + liblzma: Adjust documentation in bcj.h for consistent style. + + src/liblzma/api/lzma/bcj.h | 43 ++++++++++++++++++++++--------------------- + 1 file changed, 22 insertions(+), 21 deletions(-) + +commit 762c4d0b62d2694cf3a01e030fdfe68e09e7b503 +Author: Jia Tan +Date: 2023-02-17 00:36:05 +0800 + + liblzma: Rename field => member in documentation. + + Also adjusted preset value => preset level. + + src/liblzma/api/lzma/base.h | 18 +++++++-------- + src/liblzma/api/lzma/block.h | 44 ++++++++++++++++++------------------- + src/liblzma/api/lzma/container.h | 26 +++++++++++----------- + src/liblzma/api/lzma/delta.h | 12 +++++----- + src/liblzma/api/lzma/index.h | 30 ++++++++++++------------- + src/liblzma/api/lzma/lzma12.h | 28 +++++++++++------------ + src/liblzma/api/lzma/stream_flags.h | 32 +++++++++++++-------------- + 7 files changed, 95 insertions(+), 95 deletions(-) + +commit 0ce1db0223854d94b4a0d17737ac0486a75d9e6a +Author: Lasse Collin +Date: 2023-02-16 17:59:50 +0200 + + liblzma: Silence a warning from MSVC. + + It gives C4146 here since unary minus with unsigned integer + is still unsigned (which is the intention here). Doing it + with substraction makes it clearer and avoids the warning. + + Thanks to Nathan Moinvaziri for reporting this. + + src/liblzma/check/crc64_fast.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d83da006b3e8dbad9112e6cde6b27049d193c9ec +Author: Jia Tan +Date: 2023-02-16 21:04:54 +0800 + + liblzma: Improve documentation for stream_flags.h + + Standardizing each function to always specify parameters and return + values. Also moved the parameters and return values to the end of each + function description. + + A few small things were reworded and long sentences broken up. + + src/liblzma/api/lzma/stream_flags.h | 76 ++++++++++++++++++++++--------------- + 1 file changed, 46 insertions(+), 30 deletions(-) + +commit 2796bb4736f645d34939b5d62d5958f534e41e69 +Author: Jia Tan +Date: 2023-02-14 21:50:16 +0800 + + liblzma: Improve documentation in lzma12.h. + + All functions now explicitly specify parameter and return values. + + src/liblzma/api/lzma/lzma12.h | 32 +++++++++++++++++++++++--------- + 1 file changed, 23 insertions(+), 9 deletions(-) + +commit ebebaa8d9381afea440eb1b01917117551adf68f +Author: Jia Tan +Date: 2023-01-27 22:44:06 +0800 + + liblzma: Improve documentation in check.h. + + All functions now explicitly specify parameter and return values. + Also moved the note about SHA-256 functions not being exported to the + top of the file. + + src/liblzma/api/lzma/check.h | 41 ++++++++++++++++++++++++++++------------- + 1 file changed, 28 insertions(+), 13 deletions(-) + +commit 765fa2865aab97ea713c1715922e322b3cf599a7 +Author: Jia Tan +Date: 2023-02-08 21:33:52 +0800 + + liblzma: Improve documentation in index.h + + All functions now explicitly specify parameter and return values. + + src/liblzma/api/lzma/index.h | 177 ++++++++++++++++++++++++++++++------------- + 1 file changed, 126 insertions(+), 51 deletions(-) + +commit 918e208af5960728b6def01e692b395f7d8e3701 +Author: Jia Tan +Date: 2023-02-08 20:35:32 +0800 + + liblzma: Reword a comment in index.h. + + src/liblzma/api/lzma/index.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1f157d214bc09338876d2467b549935679abc0bf +Author: Jia Tan +Date: 2023-02-08 20:30:23 +0800 + + liblzma: Omit lzma_index_iter's internal field from Doxygen docs. + + Add \private above this field and its sub-fields since it is not meant + to be modified by users. + + src/liblzma/api/lzma/index.h | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 28757fa46d8e0f0a9c17628b2b6af9bcb3cd96fc +Author: Jia Tan +Date: 2023-01-21 21:32:03 +0800 + + liblzma: Fix documentation for LZMA_MEMLIMIT_ERROR. + + LZMA_MEMLIMIT_ERROR was missing the "<" character needed to put + documentation after a member. + + src/liblzma/api/lzma/base.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 135d5a1a65a9e199b9a5550c1f788cf43cd81018 +Author: Jia Tan +Date: 2023-01-21 00:29:38 +0800 + + liblzma: Improve documentation for base.h. + + Standardizing each function to always specify params and return values. + Also fixed a small grammar mistake. + + src/liblzma/api/lzma/base.h | 30 +++++++++++++++++++++++++----- + 1 file changed, 25 insertions(+), 5 deletions(-) + +commit 2287d5668384e289d51e72724997dc920483768e +Author: Jia Tan +Date: 2023-02-14 00:08:33 +0800 + + liblzma: Minor improvements to vli.h. + + Added [out] annotations to parameters that are pointers and can have + their value changed. Also added a clarification to lzma_vli_is_valid. + + src/liblzma/api/lzma/vli.h | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit 7124b8a16ae60cb2e93218ff531868eebd673bde +Author: Jia Tan +Date: 2023-02-10 21:38:02 +0800 + + liblzma: Add comments for macros in delta.h. + + Document LZMA_DELTA_DIST_MIN and LZMA_DELTA_DIST_MAX for completeness + and to avoid Doxygen warnings. + + src/liblzma/api/lzma/delta.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 59c7bb8931159fdb1a31bbbeaed0e6984e2d3c81 +Author: Jia Tan +Date: 2023-02-10 21:35:23 +0800 + + liblzma: Improve documentation in index_hash.h. + + All functions now explicitly specify parameter and return values. + Also reworded the description of lzma_index_hash_init() for readability. + + src/liblzma/api/lzma/index_hash.h | 36 +++++++++++++++++++++++++++--------- + 1 file changed, 27 insertions(+), 9 deletions(-) + +commit e970c28ac3cb2e8051925f81db2fe953664c2645 +Author: Jia Tan +Date: 2023-02-03 00:33:32 +0800 + + liblzma: Fix bug in lzma_str_from_filters() not checking filters[] length. + + The bug is only a problem in applications that do not properly terminate + the filters[] array with LZMA_VLI_UNKNOWN or have more than + LZMA_FILTERS_MAX filters. This bug does not affect xz. + + src/liblzma/common/string_conversion.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 85e01266a96689448abb249da6c6abc3afcd4a4e +Author: Jia Tan +Date: 2023-02-03 00:32:47 +0800 + + Tests: Create test_filter_str.c. + + Tests lzma_str_to_filters(), lzma_str_from_filters(), and + lzma_str_list_filters() API functions. + + CMakeLists.txt | 1 + *** 6901 LINES SKIPPED *** From nobody Tue Apr 4 14:42:14 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PrVpb09GWz43g5R; Tue, 4 Apr 2023 14:42: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 4PrVpZ6s0mz3N90; Tue, 4 Apr 2023 14:42:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680619335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pZcah3n+2N+esLCtr3o+Ga+zOYeT1E2gQdKamuKlaW4=; b=jhUALwUMAcsa64rgw/iIwWuGMhBUXvy1qUN5WNqaazdoGt5PweLdiWcQtYsHNAMRd7l1pd rgA7EIfNOSHrIXJUlC1X5gH+G0wQ3CCCB/OembIgGy5VrkQ3U6ke5ax1zwELqtfVHNCV/7 MGSFSzOzCIbQUe7Ovrbjyh0mw/ECqkPANsq75AdwIQ1BKLFFxlIW+a6Qk2OBPY8yxyee5Y 5UEfOGf3Q7/Wtx/5IO6FjEyVrDldjj/1wSVBB9n9nSUUq/acy53mWpBnuDPkvn/6RU4AD7 Tpm1F+zHvK6xmjzTKNDo1c9w/H/MMwMLCrLxnfZIWWn1LtdZGV/T1worLy6YeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680619335; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=pZcah3n+2N+esLCtr3o+Ga+zOYeT1E2gQdKamuKlaW4=; b=s7u0OApWlK0Qr2AJjXupisDv4Pvng6w9XATdLali5Gj/HlnJzp+z4UrW2vvRQm93Nxwvk1 xB+p1VZiG1HuuYFmwf8TjKqB3aeNymIIDEp/kSVAqxyvOqPemj7XS8ljDmIVhAT1NBuwjt Nzq65OeEpZK2s2MmZP8hIZNhqDfTFEn554Jegki7n/UVcmesl2QQlfBLHCSytRdYrdtada UvvQWFd6ieGUqpzx/7/s4X381y/BLz8c7r5MNf/oQQ3KzB3kBj+QZUGmT42KUezXZ/LWfH UKMvt/lIO7Pe2Oy+0a4a+B2mdsycWD6huYNbIgyPw5r1+Gp6Mfyy7V5viX+c5Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680619335; a=rsa-sha256; cv=none; b=wWE6sVNYWEfK9hI5bgbGHr5JMOhds27dkiMtlNq/bBenM+aMX8/D/Jgka93J2X+y96ZYWu 5N/skDKf25VM2wus+9IGfKwwybxme4itayGRQjmI950pV2RDxx5KHErI6X4hcut7tjUFwy 4aEZk49GjkK3HxnkQ+XKSzeR/rjSPGMJuHT208ZoGvtODMxufYl4Zr63U2flW+hdpZrlyS THMgnMYYSxbPmv/Eek/t80tDOZLLuTcVA4yJ+xiqYq4RaWfChi3ACqFj95uQj66w5iMTFo uKaU4tWCr13tqtqklKkU1XmWbXTBItjjFZIbAJbYGknbBIpzlzmG5yYkDP7yZw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PrVpZ5x8ZzkVB; Tue, 4 Apr 2023 14:42: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 334EgEhI030294; Tue, 4 Apr 2023 14:42:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 334EgEBa030293; Tue, 4 Apr 2023 14:42:14 GMT (envelope-from git) Date: Tue, 4 Apr 2023 14:42:14 GMT Message-Id: <202304041442.334EgEBa030293@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Cheng Cui Subject: git: aa0188c837cb - stable/13 - Add myself (cc) as a src commiter. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cc X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: aa0188c837cbfdc87d8f24500434a6f8afe34951 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by cc: URL: https://cgit.FreeBSD.org/src/commit/?id=aa0188c837cbfdc87d8f24500434a6f8afe34951 commit aa0188c837cbfdc87d8f24500434a6f8afe34951 Author: Cheng Cui AuthorDate: 2023-03-31 10:06:52 +0000 Commit: Cheng Cui CommitDate: 2023-04-04 10:38:22 +0000 Add myself (cc) as a src commiter. Summary: Adding mentor relationships for cc when committing new diffs. Reviewed by: rscheff (mentor), tuexen (mentor) Approved by: rscheff (mentor), tuexen (mentor) Differential Revision: https://reviews.freebsd.org/D39368 (cherry picked from commit 95940a2d2442c4ae47013b8ddb5bfb8bb5e40b39) --- share/misc/committers-src.dot | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/share/misc/committers-src.dot b/share/misc/committers-src.dot index e855a203e91b..865bbe1a3976 100644 --- a/share/misc/committers-src.dot +++ b/share/misc/committers-src.dot @@ -139,6 +139,7 @@ bryanv [label="Bryan Venteicher\nbryanv@FreeBSD.org\n2012/11/03"] bschmidt [label="Bernhard Schmidt\nbschmidt@FreeBSD.org\n2010/02/06"] bwidawsk [label="Ben Widawsky\nbwidawsk@FreeBSD.org\n2018/07/05"] bz [label="Bjoern A. Zeeb\nbz@FreeBSD.org\n2004/07/27"] +cc [label="Cheng Cui\ncc@FreeBSD.org\n2023/02/15"] cem [label="Conrad Meyer\ncem@FreeBSD.org\n2015/07/05"] chuck [label="Chuck Tuffli\nchuck@FreeBSD.org\n2017/09/06"] cognet [label="Olivier Houchard\ncognet@FreeBSD.org\n2002/10/09"] @@ -817,6 +818,8 @@ rrs -> bcran rrs -> jchandra rrs -> tuexen +rscheff -> cc + rstone -> markj rstone -> mjoras @@ -892,6 +895,7 @@ thompsa -> eri trasz -> jh trasz -> mjg +tuexen -> cc tuexen -> rscheff ume -> jinmei From nobody Wed Apr 5 01:34:12 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PrnGr4T12z43YlB; Wed, 5 Apr 2023 01:34: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 4PrnGr3w8Qz3k7J; Wed, 5 Apr 2023 01:34:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680658452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Lt9ugxfxFqR9SvQnGDFeCHbTdEBV6mPUQawTVlujE2Q=; b=ryzaByt1viVPgZRzbQev0ozSLHJlWONsJvZtAlNIzPbT1q4tInHVU0ZB+O0Nz5oZvjbX4y i0Kumr25eZnuaO681+AKkj1XgpTou5ZLIe+DFQgEf3Vz23LazwrVgbEUz8baHr4VJbpSuu emh9yxGVFm0ZoDPV54TnvUAGMQtk9Gk3j16xeBWrUT8Dntp+FCagjZHwTFITj6H5o2ybq0 BKp3Wi5rwuQ6v45FYPNOEpPj5sCXxD5ZMmk9QP8Ocmb0fwB0Pzcua4INyR6wpHrZl/86M9 IUZpXPrv1LS+znfLg0Gk720ZaLO96X6runjvtIzsX9m6S/IJWhSlB80vrJIWLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680658452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Lt9ugxfxFqR9SvQnGDFeCHbTdEBV6mPUQawTVlujE2Q=; b=kmBuxDN25sD4Dsw7keuA+xu/OBV67AnwS2AlvScoo6tCvW5jOwlW46fS2+57Lb35oKZmpc K7zZHdMYSUwSTTrUcWD/msIhniWoqoJrQILy+1z8KWtRVxcw1neLGoaSKwUqWU62ojBXql c11fsfavonIIAt9yNBMq97aWu2iXkhMY+eFl/9u9JXzFGlmuZrE9G+K8fHxetvI7Kb8mdt S30cbcoxe5BjBM2sL45XyOXMOHhTeL4oTsESYF+UTuONcR0eF3t14v4Dh+F1X1FbqRVcnA sVDk1hhu6dI5VpwK+mtkWizoFam+RfuXNUVWSRJ23UOhx92qoTprN7iDQI0MkA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680658452; a=rsa-sha256; cv=none; b=ofCHcfwC/NurfkXiUEvsXwyU2K7GHs8tf1NPLpbsOfUYlLgRsIKrpu6pWBLsjptavaoSdp /2H1x+Kuhfm7E0TMbQ9Qki3UWmILcH0cj9PkDUKC82UzRiiy+JD+JzDe5owMECfhjXtQVy Pe+eDNvmAhXw1h2XV4qxtrvrNncBhvAJyZ86eUxCdefP7WROPbssoYbzLpY/1gL85xUIEX UPjoBEI/uz+7lP2N7FJsSGj6HoQF5vGmvNsdgQls9MO20gC7/cdZR4lxYdfBnEZgNy4jLy rIekmxhZCbHhPfK7IXV0pzfRfaOPqoCy3Q/WK6p8xLUG/hX0C5OGzQCj4hH8sA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PrnGr2wkFz13Jn; Wed, 5 Apr 2023 01:34: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 3351YCRe000753; Wed, 5 Apr 2023 01:34:12 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 3351YCAm000752; Wed, 5 Apr 2023 01:34:12 GMT (envelope-from git) Date: Wed, 5 Apr 2023 01:34:12 GMT Message-Id: <202304050134.3351YCAm000752@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: 982e61aacc79 - stable/13 - Always install llvm-objdump as objdump List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 982e61aacc79f5b972e4c6e1dab6221403e58b0a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=982e61aacc79f5b972e4c6e1dab6221403e58b0a commit 982e61aacc79f5b972e4c6e1dab6221403e58b0a Author: Ed Maste AuthorDate: 2022-11-18 20:47:13 +0000 Commit: Ed Maste CommitDate: 2023-04-05 01:33:57 +0000 Always install llvm-objdump as objdump Instead of providing no /usr/bin/objdump when LLVM_BINUTILS is false. PR: 267854 [exp-run] Reviewed by: dim Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D37445 (cherry picked from commit 86edb11e7491e657e6c75ef6814867021665c377) --- UPDATING | 8 ++++++++ tools/build/mk/OptionalObsoleteFiles.inc | 7 ++----- usr.bin/clang/llvm-objdump/Makefile | 2 -- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/UPDATING b/UPDATING index 60f583ac26cf..d2c07cf5a80b 100644 --- a/UPDATING +++ b/UPDATING @@ -12,6 +12,14 @@ Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before updating system packages and/or ports. +20230404: + llvm-objump is now always installed as objdump. Previously there was + no /usr/bin/objdump unless the WITH_LLVM_BINUTILS knob was used. + + Some LLVM objdump options have a different output format compared to + GNU objdump; readelf is available for inspecting ELF files, and GNU + objdump is available from the devel/binutils port or package. + 20230217: Bump __FreeBSD_verion after various changes to LinuxKPI pci and 802.11 in order to help out-of-tree consumers to deal accordingly. diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index 81ab89eff94f..e30dc2bc74e8 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1173,6 +1173,7 @@ OLD_FILES+=usr/bin/llvm-readobj OLD_FILES+=usr/bin/llvm-size OLD_FILES+=usr/bin/llvm-strings OLD_FILES+=usr/bin/llvm-symbolizer +OLD_FILES+=usr/bin/objdump OLD_FILES+=usr/share/man/man1/llvm-addr2line.1.gz OLD_FILES+=usr/share/man/man1/llvm-ar.1.gz OLD_FILES+=usr/share/man/man1/llvm-nm.1.gz @@ -1183,6 +1184,7 @@ OLD_FILES+=usr/share/man/man1/llvm-readobj.1.gz OLD_FILES+=usr/share/man/man1/llvm-size.1.gz OLD_FILES+=usr/share/man/man1/llvm-strings.1.gz OLD_FILES+=usr/share/man/man1/llvm-symbolizer.1.gz +OLD_FILES+=usr/share/man/man1/objdump.1.gz .endif .if ${MK_CLANG} == no @@ -2095,11 +2097,6 @@ OLD_FILES+=usr/share/man/man8/strfile.8.gz OLD_FILES+=usr/share/man/man8/unstr.8.gz .endif -.if ${MK_LLVM_BINUTILS} == no -OLD_FILES+=usr/bin/objdump -OLD_FILES+=usr/share/man/man1/objdump.1.gz -.endif - .if ${MK_LLVM_COV} == no && !defined(WITH_PORT_BASE_GCC) OLD_FILES+=usr/bin/gcov OLD_FILES+=usr/share/man/man1/gcov.1.gz diff --git a/usr.bin/clang/llvm-objdump/Makefile b/usr.bin/clang/llvm-objdump/Makefile index 8a9587129f36..fc81304ddb1a 100644 --- a/usr.bin/clang/llvm-objdump/Makefile +++ b/usr.bin/clang/llvm-objdump/Makefile @@ -33,9 +33,7 @@ CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/} LIBADD+= z -.if ${MK_LLVM_BINUTILS} != "no" LINKS= ${BINDIR}/llvm-objdump ${BINDIR}/objdump MLINKS= llvm-objdump.1 objdump.1 -.endif .include "../llvm.prog.mk" From nobody Wed Apr 5 08:08:43 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pry241sYjz443xm; Wed, 5 Apr 2023 08:08: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 4Pry236rtsz4D77; Wed, 5 Apr 2023 08:08:43 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680682124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4VEMIjmJHs6BrB/F3/aACxfY2em5/rhKg+9Co+qOXp8=; b=MZ3zqzquEhOSKqiVSox8wM0u2ZQfORiN24CIATlilDiBKLXguVBWcBf+N9pT/9urDlokU/ Ii85MuZiubbUWr0blFByQ3V07ZR15t0tsDSRo2LZO9u7sG3jc1LFjkQBIariQqmT+qTMDT /6JKrMkOwT5WQ+UF80MfphZ3LURBCgwty/Xt1HumGwmTWy/+ZdAb2Hy4ZiLfk8MTTtfLPb NpPFKT6lKKs+HWGoK+kSEGze95kY8sgPavbAA7bGHRMTTmB769n1+UJNU/lF3Ybnw3biDb 9jmM0GKm77vcBAM1CV8nPe16cT0TdSyYnEtGYaZrOqs9Jadbcw9oFeLpent83g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680682124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4VEMIjmJHs6BrB/F3/aACxfY2em5/rhKg+9Co+qOXp8=; b=sjOCvjJLurQ9KjrRhDjlYs1VIqNnUZF3NCoXBmc/TAOHL3Hi6ftqbQ2Xyz47srfeuWiKRC 0PHRcJcOZm2ucI4GTouLjPMwOcw1SsiSuUVii1vRwiN0hW9LRPGWhEEZM/dmRNDSc58D+s x496WsPvXF9079TNtydpGmphxSptLzjxKmkiycPML1k35DI8/bTJxDRvZz3azkg7dxvF26 mTygESfZKFZmFCyFO9tKfxc3r5rt4+tWUgjLvkTktAJkFqAt13N4INZ21rra87ZfZ0EuhH LQBznlW2z2H4NZzwHB48NHnjOm+OC7CxOz5ptvr5SpY/N/Xp0ko6uZa14CxvMg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680682124; a=rsa-sha256; cv=none; b=heW0sRur3WPXNKovznXjil4V8pRaoNCTtc4jwWNehK8g6Jd7LBhcPp2jEQ6vG90TH8Rkyx Qga+VqQB8T3ors7BtqkLzYpmacuwpqI6vJ+HCHmG+EOciQI38aVWtUplp0tmv/B+Fih+M2 2Q103h0drWc1RNJK4gxQZ8u098gUKdse3yAcp4mYHFORUALEyyv6uJzY8EBqDW3Y0BHZ/e ibKODSN7yUZJK4S5zi8/2rRWnr06MNG1K/mGkwhd9J73m9aOHoHSAgCBQ84HxJJOAppSe1 iW1bylPz18sL0S08lXzKmp4k/11CxzAhCTyEMNSHqlTAOjmnFgPQoZ5Pzioq+Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pry235xHmzFCK; Wed, 5 Apr 2023 08:08: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 33588hIF044265; Wed, 5 Apr 2023 08:08:43 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33588hFG044264; Wed, 5 Apr 2023 08:08:43 GMT (envelope-from git) Date: Wed, 5 Apr 2023 08:08:43 GMT Message-Id: <202304050808.33588hFG044264@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: =?utf-8?Q?Corvin=20K=C3=B6hne?= Subject: git: df7798be4e38 - stable/13 - pci: add tunable hw.pci.enable_mps_tune List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: df7798be4e388fe6d40184021c8885f5d43b769b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=df7798be4e388fe6d40184021c8885f5d43b769b commit df7798be4e388fe6d40184021c8885f5d43b769b Author: Corvin Köhne AuthorDate: 2023-02-06 09:26:33 +0000 Commit: Corvin Köhne CommitDate: 2023-04-05 07:15:26 +0000 pci: add tunable hw.pci.enable_mps_tune If the tunable is set to 0, the tuning of the MPS (maximum payload size) is disabled and the default MPS values set by the BIOS are used. In this case the system may use a lower speed or operate in a less optimized state, but it can resolve issues with stability and compatibility. With specific devices the tuning of the mps, can lead to a complete freeze of the system. Reviewed by: manu MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D38397 (cherry picked from commit 48d70503bcae816eea6109c30ba79261eb47c9d0) --- sys/dev/pci/pci.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 97f6f4da1821..b38311e41d84 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -421,6 +421,11 @@ SYSCTL_INT(_hw_pci, OID_AUTO, clear_aer_on_attach, CTLFLAG_RWTUN, &pci_clear_aer_on_attach, 0, "Clear port and device AER state on driver attach"); +static bool pci_enable_mps_tune = true; +SYSCTL_BOOL(_hw_pci, OID_AUTO, enable_mps_tune, CTLFLAG_RWTUN, + &pci_enable_mps_tune, 1, + "Enable tuning of MPS(maximum payload size)." ); + static int pci_has_quirk(uint32_t devid, int quirk) { @@ -4453,7 +4458,8 @@ pci_add_child(device_t bus, struct pci_devinfo *dinfo) pci_cfg_restore(dev, dinfo); pci_print_verbose(dinfo); pci_add_resources(bus, dev, 0, 0); - pcie_setup_mps(dev); + if (pci_enable_mps_tune) + pcie_setup_mps(dev); pci_child_added(dinfo->cfg.dev); if (pci_clear_aer_on_attach) From nobody Wed Apr 5 10:02:30 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ps0YM0vWvz44Bcs; Wed, 5 Apr 2023 10:02:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Ps0YM0QMWz4LSc; Wed, 5 Apr 2023 10:02:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680688951; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=t+ZvW76oaDKyoiJnserm3LaOeknNLdOq7MCNO5Ai+x4=; b=A/MdbHBxdMIXYqVqW56E7gDHmBzFmghILI1O/0T6MYwgDnU8wai2FaTV5l/0VjosCDymz6 7CCAhkbZjWmyqD8J1aaH9AWt3ujRdEBLRafNCIueYfu8CZOIp1UqhLNU5mpKWBGx0QO6/K nBQZoXs1xslQ6lrs1sVCVYBt4dLb9aeqriTxJEQa8liALqoOqgDQNxPNBSMHvflrV88O98 BrivyaqTUf6/c0LdagU1ClqEHGUF7kcuUNXWPiY7qnPf/JD+6klyNI7r+f2J60rDXcx4eP ccF8CsyPrND/mCziekcyTbH36yuIhkIVp9J9U8lMZM9dH+osoaq70AiY0kdauA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680688951; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=t+ZvW76oaDKyoiJnserm3LaOeknNLdOq7MCNO5Ai+x4=; b=VZlSOzxQPGbR7TCBYsBJn/0qxnY8CISbHcCDzIcoENOi41nVNoiEg/wPx7duIz1/HXv7x/ yX2C/nbjkv5d79cNTGCWNGW0B8+L8kY50NeJgd2no8JsK+4eFA+eSRDCLdr4ACByNGADaf +52tw938yV6hzhq13wU3wC+kqH+r4vN8gQFvQvfWyGtoaYUWKwZ+Yx+BLQb/aVipo+8T3i 32Rli/kxDCDJ6cD8D68eIoMWGaaWQ71YbaTZ3XHD3uUOyc3Ct4exZszNJB+B8pQZAxkGis ILKaGU1oTC8PEgid3bh6w1ksphwZwmcylUjIuBzEi8FZTd+pG7r1zLWq3Taqgw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680688951; a=rsa-sha256; cv=none; b=TweZyBHuN1A9cen5rKrq3h9yaVJeW4Z5ciINUstDAchE/2GPJLpyg8N5iVltkxlARtjC3a ee1jayYw+RibTo8K3tsH0suXqQoctKZDM7TjA3PrZzS0PRvrcGENlV07RwQ+QyExZZMlUg PPXDgvxPWKdgQF83PadzTzr77Vj0f/X18ycvkaEwuOorOwN8h6BpiSdVhm05hWUVfRrmM2 8qUfLqojygHHgq4UZoYecV6LnEwiLEqqVK/dsmGiHfZyaES9pBGldPyxYWwopcRCBTOclE Y6f8mBCeFumixu4WWfyb2+yKVz+ZBAVWi//1OP4eUuBLIXJYRYnTqq6aD2hMwQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ps0YL6Hc1zJ1D; Wed, 5 Apr 2023 10:02: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 335A2UOC040363; Wed, 5 Apr 2023 10:02:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 335A2U2j040362; Wed, 5 Apr 2023 10:02:30 GMT (envelope-from git) Date: Wed, 5 Apr 2023 10:02:30 GMT Message-Id: <202304051002.335A2U2j040362@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: =?utf-8?Q?Corvin=20K=C3=B6hne?= Subject: git: ee3a7907bb98 - stable/13 - bhyve: add helper to read PCI IDs from bhyve config List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ee3a7907bb987b104246efd149c4af251e7bc402 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=ee3a7907bb987b104246efd149c4af251e7bc402 commit ee3a7907bb987b104246efd149c4af251e7bc402 Author: Corvin Köhne AuthorDate: 2023-02-06 10:43:49 +0000 Commit: Corvin Köhne CommitDate: 2023-04-05 10:00:39 +0000 bhyve: add helper to read PCI IDs from bhyve config Changing the PCI IDs is valuable in some situations. The Intel GOP driver requires that some PCI IDs of the LPC bridge are aligned with the physical values of the host LPC bridge. Another use case are oracles virtio driver. They require different subvendor ID than the default one. For that reason, create a helper which makes it easy to read PCI IDs from bhyve config. Additionally, this helper ensures that all emulation devices are using the same config keys. Reviewed by: jhb MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D38402 (cherry picked from commit ffaed739a80319a56d0b1dfd6cedeb3d194ff42c) --- usr.sbin/bhyve/pci_emul.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ usr.sbin/bhyve/pci_emul.h | 3 +++ 2 files changed, 47 insertions(+) diff --git a/usr.sbin/bhyve/pci_emul.c b/usr.sbin/bhyve/pci_emul.c index 93411751d635..41b7718e6935 100644 --- a/usr.sbin/bhyve/pci_emul.c +++ b/usr.sbin/bhyve/pci_emul.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include "pci_emul.h" #include "pci_irq.h" #include "pci_lpc.h" +#include "pci_passthru.h" #define CONF1_ADDR_PORT 0x0cf8 #define CONF1_DATA_PORT 0x0cfc @@ -332,6 +333,49 @@ pci_print_supported_devices(void) } } +uint32_t +pci_config_read_reg(const struct pcisel *const host_sel, nvlist_t *nvl, + const uint32_t reg, const uint8_t size, const uint32_t def) +{ + const char *config; + const nvlist_t *pci_regs; + + assert(size == 1 || size == 2 || size == 4); + + pci_regs = find_relative_config_node(nvl, "pcireg"); + if (pci_regs == NULL) { + return def; + } + + switch (reg) { + case PCIR_DEVICE: + config = get_config_value_node(pci_regs, "device"); + break; + case PCIR_VENDOR: + config = get_config_value_node(pci_regs, "vendor"); + break; + case PCIR_REVID: + config = get_config_value_node(pci_regs, "revid"); + break; + case PCIR_SUBVEND_0: + config = get_config_value_node(pci_regs, "subvendor"); + break; + case PCIR_SUBDEV_0: + config = get_config_value_node(pci_regs, "subdevice"); + break; + default: + return (-1); + } + + if (config == NULL) { + return def; + } else if (host_sel != NULL && strcmp(config, "host") == 0) { + return read_config(host_sel, reg, size); + } else { + return strtol(config, NULL, 16); + } +} + static int pci_valid_pba_offset(struct pci_devinst *pi, uint64_t offset) { diff --git a/usr.sbin/bhyve/pci_emul.h b/usr.sbin/bhyve/pci_emul.h index 117fc78898a2..40487b18f87b 100644 --- a/usr.sbin/bhyve/pci_emul.h +++ b/usr.sbin/bhyve/pci_emul.h @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -227,6 +228,8 @@ typedef void (*pci_lintr_cb)(int b, int s, int pin, int pirq_pin, int init_pci(struct vmctx *ctx); void pci_callback(void); +uint32_t pci_config_read_reg(const struct pcisel *host_sel, nvlist_t *nvl, + uint32_t reg, uint8_t size, uint32_t def); int pci_emul_alloc_bar(struct pci_devinst *pdi, int idx, enum pcibar_type type, uint64_t size); int pci_emul_alloc_rom(struct pci_devinst *const pdi, const uint64_t size, From nobody Wed Apr 5 10:02:31 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ps0YN1WZ0z44BPf; Wed, 5 Apr 2023 10:02: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 4Ps0YN14D2z4Lnf; Wed, 5 Apr 2023 10:02:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680688952; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XU2lSggeB8LSjvSl/KePskTa9pSn46hm7lp5BtELJnk=; b=E38+3e+O8zuVVbMc3txY0IRD+C5MBOCbckFC0XhO6ukXZgrWMRpObJ0j2GA/Uz7r0N1Nn/ OQq5EOL41tuabmChF3pIdfWjRMXUNhhnbXMNNe2tmIQ4ZExs+RXJ/gDoZuiqydrUX3ihRD wch3/ssNTr8AGckMxi5FwYz/hrt4kMY7I7ItH2v1mOsbQFnMYjfqZX2UUZdIndIoxRXGxt erd2qPrTEEteq0NlTX8MdzCPkO+/Vt8/EF0hYFxuvtAdVxEU1yrSt5f0UioV4Iv3QQPCXi w/6T5lJXnYNMkp52wx4zM81d3Oz4hZtkY3s3kzjeuxHqaBkB7ZiBc2FT2SRDMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680688952; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=XU2lSggeB8LSjvSl/KePskTa9pSn46hm7lp5BtELJnk=; b=PwZyp0dg42/U4KM6x17ra7fA6zfXdMGkmuOJEZHqOJVc81N4Vw6ZzckeOvJnn5u0T5LwNE EdKQ1DVPUefdeKTMBVEHwT3ml2TZOWQ84xSR8rQmWpyJOd88rexjLuHpZRtWT1H0fKuSqE bRpqSkRfI1pUrBtpFK5UMlk0eeJ2Sf6NE4nwKypvdVXwh1SpILxD+Vz+Bmqa0EEASux7TA H6Z2qc5ci2Ci76Ec3emcloV0CcUTFEBj9vMEvs6/iGD26IFq1iICvXg4oxW8I9VOAgljrt VcYJcb5a9yQME+RdAuaVB7SKCBXxSOWMCgqw+bci4E2EgUyCG7Niiv7IWtrPag== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680688952; a=rsa-sha256; cv=none; b=qbQcfkqYvCNz9gssrUcrQHoRwGSGr69l5KGQgzcB2+YOxzHQ6SIMI0PhZYq5vEosDXsUBi Ev+Wck1co89k2gI+/1HFiYS36+CCizTOnkZECwEM79ikfEMMWJ4PBlr663gsOW6VSIrO57 uRJVyU7ArMML5Dqtw4FpJasrZMTdjqGcBVjxCENSFP0C/j0sofqOuIQbTDDPcCeVuWYklJ ShPI98yFFKLa8y6NLH4JgUj95C+OnV7iziBTBDp0+aC2T42w3gF82rKsL2eBFWF7e3DZJg Ti7KWkI6903/K0RImr44me8dsQJHxPSN00IGs/qQY5vr09s/vQzEdjvXxz/dnQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ps0YM75T7zJYQ; Wed, 5 Apr 2023 10:02:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 335A2VlB040390; Wed, 5 Apr 2023 10:02:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 335A2Vit040389; Wed, 5 Apr 2023 10:02:31 GMT (envelope-from git) Date: Wed, 5 Apr 2023 10:02:31 GMT Message-Id: <202304051002.335A2Vit040389@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: =?utf-8?Q?Corvin=20K=C3=B6hne?= Subject: git: ab64356b1c9d - stable/13 - bhyve: make use of helper to read PCI IDs from bhyve config List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: ab64356b1c9d5c30875303c231c772df553d3bb2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=ab64356b1c9d5c30875303c231c772df553d3bb2 commit ab64356b1c9d5c30875303c231c772df553d3bb2 Author: Corvin Köhne AuthorDate: 2023-02-06 10:13:56 +0000 Commit: Corvin Köhne CommitDate: 2023-04-05 10:00:39 +0000 bhyve: make use of helper to read PCI IDs from bhyve config For compatibilty reasons, the old config values are still supported. Reviewed by: jhb MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D38403 (cherry picked from commit b72e06b13ee08b94a3e74ac2473e889aeb7a3d1a) --- usr.sbin/bhyve/bhyve_config.5 | 11 +++++++---- usr.sbin/bhyve/pci_hostbridge.c | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/usr.sbin/bhyve/bhyve_config.5 b/usr.sbin/bhyve/bhyve_config.5 index 31f848740aa8..9482d1260e05 100644 --- a/usr.sbin/bhyve/bhyve_config.5 +++ b/usr.sbin/bhyve/bhyve_config.5 @@ -412,12 +412,15 @@ to use standard input and output of the process. .El .Ss Host Bridge Settings -.Bl -column "vendor" "integer" "Default" +.Bl -column "pcireg.*" "integer" "Default" .It Sy Name Ta Sy Format Ta Sy Default Ta Sy Description +.It Va pcireg.* Ta integer Ta Ta +Values of PCI register. +.Bl -column "device" "Default" +.It Sy Name Ta Sy Default .It Va vendor Ta integer Ta 0x1275 Ta -PCI vendor ID. -.It Va devid Ta integer Ta 0x1275 Ta -PCI device ID. +.It Va device Ta integer Ta 0x1275 Ta +.El .El .Ss AHCI Controller Settings AHCI controller devices contain zero or more ports each of which diff --git a/usr.sbin/bhyve/pci_hostbridge.c b/usr.sbin/bhyve/pci_hostbridge.c index f0878d97a77e..cbc61893961b 100644 --- a/usr.sbin/bhyve/pci_hostbridge.c +++ b/usr.sbin/bhyve/pci_hostbridge.c @@ -31,6 +31,7 @@ #include __FBSDID("$FreeBSD$"); +#include #include #include "config.h" @@ -48,9 +49,13 @@ pci_hostbridge_init(struct pci_devinst *pi, nvlist_t *nvl) value = get_config_value_node(nvl, "vendor"); if (value != NULL) vendor = strtol(value, NULL, 0); + else + vendor = pci_config_read_reg(NULL, nvl, PCIR_VENDOR, 2, vendor); value = get_config_value_node(nvl, "devid"); if (value != NULL) device = strtol(value, NULL, 0); + else + device = pci_config_read_reg(NULL, nvl, PCIR_DEVICE, 2, device); /* config space */ pci_set_cfgdata16(pi, PCIR_VENDOR, vendor); @@ -67,8 +72,16 @@ pci_hostbridge_init(struct pci_devinst *pi, nvlist_t *nvl) static int pci_amd_hostbridge_legacy_config(nvlist_t *nvl, const char *opts __unused) { - set_config_value_node(nvl, "vendor", "0x1022"); /* AMD */ - set_config_value_node(nvl, "devid", "0x7432"); /* made up */ + nvlist_t *pci_regs; + + pci_regs = create_relative_config_node(nvl, "pcireg"); + if (pci_regs == NULL) { + warnx("amd_hostbridge: failed to create pciregs node"); + return (-1); + } + + set_config_value_node(pci_regs, "vendor", "0x1022"); /* AMD */ + set_config_value_node(pci_regs, "device", "0x7432"); /* made up */ return (0); } From nobody Wed Apr 5 12:33:26 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ps3vV72Lvz43Pdw; Wed, 5 Apr 2023 12:33: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 4Ps3vV6lgTz3J2X; Wed, 5 Apr 2023 12:33:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680698006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D/14LwYjRUUTg16vwMuTO0pWTbXlsr+dohmEaFqmqdM=; b=adkW5jvuniInDjm3+P+Za/kB3bOnmvXjkdsVOAjKYzKoY6Sw1NYkKfNxjwxeBnz6himF/J qq/j1yl0GcWx0mTA1APGZGWaUvFpoZD/4jklOFotCoBDKwEGSTEZh42zNv8yRRmgfa5GP0 0qyHpowgKwruJHo8efIGe/N7qQ0Eb22DpsfgRkN+PXsIPYXkUS7uYqnPeJGnyxV6DAUh+9 j+xSHoDTBwzKLlRK4d8YkKKpPjfMo4VRRe87+dzu1QDPcs1nglDuml7PtF6/NZNwub+uG3 ZOaLysVdXmTeRFTZ+W7zl8PkEqcsgMRlP0jtLwHRE4PZlrRWYnXzflu5YNaeCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680698006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D/14LwYjRUUTg16vwMuTO0pWTbXlsr+dohmEaFqmqdM=; b=kpIT7qmtjd/L81sJsbdPRWI56OjO47mV6qTQ5rDGj+PuQOdZtexDTF3ehABPuGk214JMKT EN9D45ADih+EMh8kbXUA9Vy2j7RuHp+nXEeBGzgPkcTKCHKpQKkHaRxmO2av3+wcgGLENk lq9xB39n5x+enbaehDp9b1BaYJRDkEffgugEfNSFKY8ljKacx7kdUCGu/842GAXsSuU5QR jv3Bzr1fFDpFSUCR4VoSwdJVYuyuHVmAHsqa0/+Z9FGULU/V25J0Qp+nbkU9rMOXHNW7yU X1Yrv3CwSDRJoGAKrusIxNIF9iGCJM/LxkySs5x++9VMtkCn1AyxSyy1KzXl9g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680698006; a=rsa-sha256; cv=none; b=uYxFF+F/q773tgQf8WdpwihRT1PZFmAS3or5qoWpT29ywrMiYXugc0DVkELf+JBeHgfNio wSYMbLI2m8sMEcBkp8VpCSNZgAwpIx7wN5BIKmDCHmEvdKRO8lTcLndu66A7NM9uocC79z 9jvASOdLwAjMbhBn2HGcQlF00mH45vsfLtQZ/P3noXS4KqZB4RKKo+06j0XdKMjtO5GP9Z DlKonRVKCVR+L1Px4HSFbxJW429YB+crRLBLPeS0qWlUyKvnABPgpKoVf8sMRrhJ67cxdl PhSaYwP5GZz5Hiv/BBkMN/g62br1cvU32oNK/slmwHixRkMHzyHWwHvcqtjQwA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ps3vV5pXCzMY6; Wed, 5 Apr 2023 12:33: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 335CXQQn085156; Wed, 5 Apr 2023 12:33:26 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 335CXQK7085155; Wed, 5 Apr 2023 12:33:26 GMT (envelope-from git) Date: Wed, 5 Apr 2023 12:33:26 GMT Message-Id: <202304051233.335CXQK7085155@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: e85ca03254e0 - stable/13 - tcp_wrappers: Use ANSI (c89) function definitions List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: e85ca03254e0b93055919406285bc66c27114b64 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=e85ca03254e0b93055919406285bc66c27114b64 commit e85ca03254e0b93055919406285bc66c27114b64 Author: Ed Maste AuthorDate: 2023-03-21 14:08:28 +0000 Commit: Ed Maste CommitDate: 2023-04-05 12:33:11 +0000 tcp_wrappers: Use ANSI (c89) function definitions Although this code is in contrib/ there is no active upstream. Reviewed by: brooks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D36047 (cherry picked from commit 14f102eacc8434a5a1f96466752578a4167140c9) (cherry picked from commit 899becbfcbf75008c560bae5e5fce0c205a5bc82) --- contrib/tcp_wrappers/clean_exit.c | 3 +- contrib/tcp_wrappers/diag.c | 6 +--- contrib/tcp_wrappers/environ.c | 32 +++++------------- contrib/tcp_wrappers/eval.c | 18 ++++------ contrib/tcp_wrappers/fakelog.c | 10 ++---- contrib/tcp_wrappers/fix_options.c | 3 +- contrib/tcp_wrappers/fromhost.c | 3 +- contrib/tcp_wrappers/hosts_access.c | 44 +++++++------------------ contrib/tcp_wrappers/hosts_ctl.c | 6 +--- contrib/tcp_wrappers/inetcf.c | 19 +++-------- contrib/tcp_wrappers/misc.c | 12 ++----- contrib/tcp_wrappers/miscd.c | 4 +-- contrib/tcp_wrappers/myvsyslog.c | 5 +-- contrib/tcp_wrappers/ncr.c | 3 +- contrib/tcp_wrappers/options.c | 65 ++++++++++--------------------------- contrib/tcp_wrappers/percent_m.c | 4 +-- contrib/tcp_wrappers/percent_x.c | 7 ++-- contrib/tcp_wrappers/ptx.c | 6 ++-- contrib/tcp_wrappers/refuse.c | 3 +- contrib/tcp_wrappers/rfc931.c | 14 +++----- contrib/tcp_wrappers/safe_finger.c | 10 ++---- contrib/tcp_wrappers/scaffold.c | 22 ++++--------- contrib/tcp_wrappers/setenv.c | 5 +-- contrib/tcp_wrappers/shell_cmd.c | 3 +- contrib/tcp_wrappers/socket.c | 12 +++---- contrib/tcp_wrappers/strcasecmp.c | 7 ++-- contrib/tcp_wrappers/tcpd.c | 4 +-- contrib/tcp_wrappers/tcpdchk.c | 33 ++++++------------- contrib/tcp_wrappers/tcpdmatch.c | 15 +++------ contrib/tcp_wrappers/tli-sequent.c | 8 ++--- contrib/tcp_wrappers/tli.c | 21 ++++-------- contrib/tcp_wrappers/try-from.c | 4 +-- contrib/tcp_wrappers/update.c | 5 ++- contrib/tcp_wrappers/vfprintf.c | 9 ++--- contrib/tcp_wrappers/workarounds.c | 36 +++++--------------- 35 files changed, 129 insertions(+), 332 deletions(-) diff --git a/contrib/tcp_wrappers/clean_exit.c b/contrib/tcp_wrappers/clean_exit.c index 41caaf030665..04b1626d1a72 100644 --- a/contrib/tcp_wrappers/clean_exit.c +++ b/contrib/tcp_wrappers/clean_exit.c @@ -21,8 +21,7 @@ extern void exit(); /* clean_exit - clean up and exit */ -void clean_exit(request) -struct request_info *request; +void clean_exit(struct request_info *request) { /* diff --git a/contrib/tcp_wrappers/diag.c b/contrib/tcp_wrappers/diag.c index ac3df07a202e..f3b8b1aaf589 100644 --- a/contrib/tcp_wrappers/diag.c +++ b/contrib/tcp_wrappers/diag.c @@ -29,11 +29,7 @@ jmp_buf tcpd_buf; /* tcpd_diag - centralize error reporter */ -static void tcpd_diag(severity, tag, format, ap) -int severity; -char *tag; -char *format; -va_list ap; +static void tcpd_diag(int severity, char *tag, char *format, va_list ap) { char fmt[BUFSIZ]; diff --git a/contrib/tcp_wrappers/environ.c b/contrib/tcp_wrappers/environ.c index e7f846ddd6b7..93499189d3fb 100644 --- a/contrib/tcp_wrappers/environ.c +++ b/contrib/tcp_wrappers/environ.c @@ -37,8 +37,7 @@ static int allocated = 0; /* environ is, or is not, allocated */ /* namelength - determine length of name in "name=whatever" */ -static int namelength(name) -char *name; +static int namelength(char *name) { char *equal; @@ -48,9 +47,7 @@ char *name; /* findenv - given name, locate name=value */ -static char **findenv(name, len) -char *name; -int len; +static char **findenv(char *name, int len) { char **envp; @@ -62,8 +59,7 @@ int len; /* getenv - given name, locate value */ -char *getenv(name) -char *name; +char *getenv(char *name) { int len = namelength(name); char **envp = findenv(name, len); @@ -73,8 +69,7 @@ char *name; /* putenv - update or append environment (name,value) pair */ -int putenv(nameval) -char *nameval; +int putenv(char *nameval) { char *equal = strchr(nameval, '='); char *value = (equal ? equal : ""); @@ -84,8 +79,7 @@ char *nameval; /* unsetenv - remove variable from environment */ -void unsetenv(name) -char *name; +void unsetenv(char *name) { char **envp; @@ -96,10 +90,7 @@ char *name; /* setenv - update or append environment (name,value) pair */ -int setenv(name, value, clobber) -char *name; -char *value; -int clobber; +int setenv(char *name, char *value, int clobber) { char *destination; char **envp; @@ -133,9 +124,7 @@ int clobber; /* cmalloc - malloc and copy block of memory */ -static char *cmalloc(new_len, old, old_len) -char *old; -int old_len; +static char *cmalloc(int new_len, char *old, int old_len) { char *new = malloc(new_len); @@ -146,8 +135,7 @@ int old_len; /* addenv - append environment entry */ -static int addenv(nameval) -char *nameval; +static int addenv(char *nameval) { char **envp; int n_used; /* number of environment entries */ @@ -190,9 +178,7 @@ static void printenv() printf("%s\n", *envp); } -int main(argc, argv) -int argc; -char **argv; +int main(int argc, char **argv) { char *cp; int changed = 0; diff --git a/contrib/tcp_wrappers/eval.c b/contrib/tcp_wrappers/eval.c index d68358f3b9c3..cb4ef0650fa7 100644 --- a/contrib/tcp_wrappers/eval.c +++ b/contrib/tcp_wrappers/eval.c @@ -42,8 +42,7 @@ char paranoid[] = STRING_PARANOID; /* eval_user - look up user name */ -char *eval_user(request) -struct request_info *request; +char *eval_user(struct request_info *request) { if (request->user[0] == 0) { strcpy(request->user, unknown); @@ -55,8 +54,7 @@ struct request_info *request; /* eval_hostaddr - look up printable address */ -char *eval_hostaddr(host) -struct host_info *host; +char *eval_hostaddr(struct host_info *host) { if (host->addr[0] == 0) { strcpy(host->addr, unknown); @@ -68,8 +66,7 @@ struct host_info *host; /* eval_hostname - look up host name */ -char *eval_hostname(host) -struct host_info *host; +char *eval_hostname(struct host_info *host) { if (host->name[0] == 0) { strcpy(host->name, unknown); @@ -81,8 +78,7 @@ struct host_info *host; /* eval_hostinfo - return string with host name (preferred) or address */ -char *eval_hostinfo(host) -struct host_info *host; +char *eval_hostinfo(struct host_info *host) { char *hostname; @@ -100,8 +96,7 @@ struct host_info *host; /* eval_client - return string with as much about the client as we know */ -char *eval_client(request) -struct request_info *request; +char *eval_client(struct request_info *request) { static char both[2 * STRING_LENGTH]; char *hostinfo = eval_hostinfo(request->client); @@ -120,8 +115,7 @@ struct request_info *request; /* eval_server - return string with as much about the server as we know */ -char *eval_server(request) -struct request_info *request; +char *eval_server(struct request_info *request) { static char both[2 * STRING_LENGTH]; char *host = eval_hostinfo(request->server); diff --git a/contrib/tcp_wrappers/fakelog.c b/contrib/tcp_wrappers/fakelog.c index 97802dba7fb1..ad4a420ff557 100644 --- a/contrib/tcp_wrappers/fakelog.c +++ b/contrib/tcp_wrappers/fakelog.c @@ -17,20 +17,14 @@ static char sccsid[] = "@(#) fakelog.c 1.3 94/12/28 17:42:21"; /* ARGSUSED */ -void openlog(name, logopt, facility) -char *name; -int logopt; -int facility; +void openlog(char *name, int logopt, int facility) { /* void */ } /* vsyslog - format one record */ -void vsyslog(severity, fmt, ap) -int severity; -char *fmt; -va_list ap; +void vsyslog(int severity, char *fmt, va_list ap) { char buf[BUFSIZ]; diff --git a/contrib/tcp_wrappers/fix_options.c b/contrib/tcp_wrappers/fix_options.c index b31c61a0382d..76ddaae419b4 100644 --- a/contrib/tcp_wrappers/fix_options.c +++ b/contrib/tcp_wrappers/fix_options.c @@ -35,8 +35,7 @@ static char sccsid[] = "@(#) fix_options.c 1.6 97/04/08 02:29:19"; /* fix_options - get rid of IP-level socket options */ void -fix_options(request) -struct request_info *request; +fix_options(struct request_info *request) { #ifdef IP_OPTIONS unsigned char optbuf[BUFFER_SIZE / 3], *cp; diff --git a/contrib/tcp_wrappers/fromhost.c b/contrib/tcp_wrappers/fromhost.c index a46c506e7915..ca065badbd4f 100644 --- a/contrib/tcp_wrappers/fromhost.c +++ b/contrib/tcp_wrappers/fromhost.c @@ -28,8 +28,7 @@ static char sccsid[] = "@(#) fromhost.c 1.17 94/12/28 17:42:23"; /* fromhost - find out what network API we should use */ -void fromhost(request) -struct request_info *request; +void fromhost(struct request_info *request) { /* diff --git a/contrib/tcp_wrappers/hosts_access.c b/contrib/tcp_wrappers/hosts_access.c index 140225fabace..05c62d194091 100644 --- a/contrib/tcp_wrappers/hosts_access.c +++ b/contrib/tcp_wrappers/hosts_access.c @@ -108,8 +108,7 @@ int yp_get_default_domain(char **); /* hosts_access - host access control facility */ -int hosts_access(request) -struct request_info *request; +int hosts_access(struct request_info *request) { int verdict; @@ -142,9 +141,7 @@ struct request_info *request; /* table_match - match table entries with (daemon, client) pair */ -static int table_match(table, request) -char *table; -struct request_info *request; +static int table_match(char *table, struct request_info *request) { FILE *fp; char sv_list[BUFLEN]; /* becomes list of daemons */ @@ -237,9 +234,7 @@ static int list_match(char *list, struct request_info *request, /* server_match - match server information */ -static int server_match(tok, request) -char *tok; -struct request_info *request; +static int server_match(char *tok, struct request_info *request) { char *host; @@ -253,9 +248,7 @@ struct request_info *request; /* client_match - match client information */ -static int client_match(tok, request) -char *tok; -struct request_info *request; +static int client_match(char *tok, struct request_info *request) { char *host; @@ -269,9 +262,7 @@ struct request_info *request; /* hostfile_match - look up host patterns from file */ -static int hostfile_match(path, host) -char *path; -struct host_info *host; +static int hostfile_match(char *path, struct host_info *host) { char tok[BUFSIZ]; int match = NO; @@ -289,9 +280,7 @@ struct host_info *host; /* host_match - match host name and/or address against pattern */ -static int host_match(tok, host) -char *tok; -struct host_info *host; +static int host_match(char *tok, struct host_info *host) { char *mask; @@ -332,9 +321,7 @@ struct host_info *host; /* string_match - match string against pattern */ -static int string_match(tok, string) -char *tok; -char *string; +static int string_match(char *tok, char *string) { int n; @@ -393,22 +380,16 @@ char *string; /* masked_match - match address against netnumber/netmask */ #ifdef INET6 -static int masked_match(net_tok, mask_tok, string) -char *net_tok; -char *mask_tok; -char *string; +static int masked_match(char *net_tok, char *mask_tok, char *string) { return (masked_match4(net_tok, mask_tok, string) || masked_match6(net_tok, mask_tok, string)); } -static int masked_match4(net_tok, mask_tok, string) +static int masked_match4(char *net_tok, char *mask_tok, char *string) #else -static int masked_match(net_tok, mask_tok, string) +static int masked_match(char *net_tok, char *mask_tok, char *string) #endif -char *net_tok; -char *mask_tok; -char *string; { #ifdef INET6 u_int32_t net; @@ -439,10 +420,7 @@ char *string; } #ifdef INET6 -static int masked_match6(net_tok, mask_tok, string) -char *net_tok; -char *mask_tok; -char *string; +static int masked_match6(char *net_tok, char *mask_tok, char *string) { struct addrinfo hints, *res; struct sockaddr_in6 net, addr; diff --git a/contrib/tcp_wrappers/hosts_ctl.c b/contrib/tcp_wrappers/hosts_ctl.c index e57f30aaa4a4..5477c49fdcdd 100644 --- a/contrib/tcp_wrappers/hosts_ctl.c +++ b/contrib/tcp_wrappers/hosts_ctl.c @@ -21,11 +21,7 @@ static char sccsid[] = "@(#) hosts_ctl.c 1.4 94/12/28 17:42:27"; /* hosts_ctl - limited interface to the hosts_access() routine */ -int hosts_ctl(daemon, name, addr, user) -char *daemon; -char *name; -char *addr; -char *user; +int hosts_ctl(char *daemon, char *name, char *addr, char *user) { struct request_info request; diff --git a/contrib/tcp_wrappers/inetcf.c b/contrib/tcp_wrappers/inetcf.c index d68faa06b127..44854c0f6f34 100644 --- a/contrib/tcp_wrappers/inetcf.c +++ b/contrib/tcp_wrappers/inetcf.c @@ -55,8 +55,7 @@ static char whitespace[] = " \t\r\n"; /* inet_conf - read in and examine inetd.conf (or tlid.conf) entries */ -char *inet_cfg(conf) -char *conf; +char *inet_cfg(char *conf) { char buf[BUFSIZ]; FILE *fp; @@ -159,11 +158,7 @@ char *conf; /* inet_chk - examine one inetd.conf (tlid.conf?) entry */ -static void inet_chk(protocol, path, arg0, arg1) -char *protocol; -char *path; -char *arg0; -char *arg1; +static void inet_chk(char *protocol, char *path, char *arg0, char *arg1) { char daemon[BUFSIZ]; struct stat st; @@ -274,9 +269,7 @@ char *arg1; /* inet_set - remember service status */ -void inet_set(name, type) -char *name; -int type; +void inet_set(char *name, int type) { struct inet_ent *ip = (struct inet_ent *) malloc(sizeof(struct inet_ent) + strlen(name)); @@ -293,8 +286,7 @@ int type; /* inet_get - look up service status */ -int inet_get(name) -char *name; +int inet_get(char *name) { struct inet_ent *ip; @@ -310,8 +302,7 @@ char *name; /* base_name - compute last pathname component */ -static char *base_name(path) -char *path; +static char *base_name(char *path) { char *cp; diff --git a/contrib/tcp_wrappers/misc.c b/contrib/tcp_wrappers/misc.c index 258d7091adce..c5fb1c6e92fc 100644 --- a/contrib/tcp_wrappers/misc.c +++ b/contrib/tcp_wrappers/misc.c @@ -25,10 +25,7 @@ static char sccsic[] = "@(#) misc.c 1.2 96/02/11 17:01:29"; /* xgets - fgets() with backslash-newline stripping */ -char *xgets(ptr, len, fp) -char *ptr; -int len; -FILE *fp; +char *xgets(char *ptr, int len, FILE *fp) { int got; char *start = ptr; @@ -52,9 +49,7 @@ FILE *fp; /* split_at - break string at delimiter or return NULL */ -char *split_at(string, delimiter) -char *string; -int delimiter; +char *split_at(char *string, int delimiter) { char *cp; @@ -87,8 +82,7 @@ int delimiter; /* dot_quad_addr - convert dotted quad to internal form */ -unsigned long dot_quad_addr(str) -char *str; +unsigned long dot_quad_addr(char *str) { int in_run = 0; int runs = 0; diff --git a/contrib/tcp_wrappers/miscd.c b/contrib/tcp_wrappers/miscd.c index 1ab835c45061..4e7db2402cd6 100644 --- a/contrib/tcp_wrappers/miscd.c +++ b/contrib/tcp_wrappers/miscd.c @@ -43,9 +43,7 @@ static char sccsid[] = "@(#) miscd.c 1.10 96/02/11 17:01:30"; int allow_severity = SEVERITY; /* run-time adjustable */ int deny_severity = LOG_WARNING; /* ditto */ -main(argc, argv) -int argc; -char **argv; +main(int argc, char **argv) { struct request_info request; char path[MAXPATHNAMELEN]; diff --git a/contrib/tcp_wrappers/myvsyslog.c b/contrib/tcp_wrappers/myvsyslog.c index 20401f1f371b..d8cf9fd7b65f 100644 --- a/contrib/tcp_wrappers/myvsyslog.c +++ b/contrib/tcp_wrappers/myvsyslog.c @@ -18,10 +18,7 @@ static char sccsid[] = "@(#) myvsyslog.c 1.1 94/12/28 17:42:33"; #include "tcpd.h" #include "mystdarg.h" -myvsyslog(severity, format, ap) -int severity; -char *format; -va_list ap; +myvsyslog(int severity, char *format, va_list ap) { char fbuf[BUFSIZ]; char obuf[3 * STRING_LENGTH]; diff --git a/contrib/tcp_wrappers/ncr.c b/contrib/tcp_wrappers/ncr.c index b903fb85a565..e62a48948ce5 100644 --- a/contrib/tcp_wrappers/ncr.c +++ b/contrib/tcp_wrappers/ncr.c @@ -24,8 +24,7 @@ static char sccsid[] = "@(#) ncr.c 1.1 94/12/28 17:42:34"; /* fromhost - tear down the streams stack then rebuild it */ -void fromhost(request) -struct request_info *request; +void fromhost(struct request_info *request) { int i; int num_mod; diff --git a/contrib/tcp_wrappers/options.c b/contrib/tcp_wrappers/options.c index 64ad355faa61..481ba2d372d5 100644 --- a/contrib/tcp_wrappers/options.c +++ b/contrib/tcp_wrappers/options.c @@ -95,7 +95,8 @@ static void banners_option(); /* execute "banners path" option */ struct option { char *name; /* keyword name, case is ignored */ - void (*func) (); /* function that does the real work */ + void (*func) (char *value, struct request_info *request); + /* function that does the real work */ int flags; /* see below... */ }; @@ -132,9 +133,7 @@ static struct option option_table[] = { /* process_options - process access control options */ -void process_options(options, request) -char *options; -struct request_info *request; +void process_options(char *options, struct request_info *request) { char *key; char *value; @@ -218,9 +217,7 @@ struct request_info *request; /* banners_option - expand %, terminate each line with CRLF */ -static void banners_option(value, request) -char *value; -struct request_info *request; +static void banners_option(char *value, struct request_info *request) { char path[MAXPATHNAMELEN]; char ibuf[BUFSIZ]; @@ -250,9 +247,7 @@ struct request_info *request; /* ARGSUSED */ -static void group_option(value, request) -char *value; -struct request_info *request; +static void group_option(char *value, struct request_info *request) { struct group *grp; struct group *getgrnam(); @@ -269,9 +264,7 @@ struct request_info *request; /* ARGSUSED */ -static void user_option(value, request) -char *value; -struct request_info *request; +static void user_option(char *value, struct request_info *request) { struct passwd *pwd; struct passwd *getpwnam(); @@ -291,9 +284,7 @@ struct request_info *request; /* ARGSUSED */ -static void umask_option(value, request) -char *value; -struct request_info *request; +static void umask_option(char *value, struct request_info *request) { unsigned mask; char junk; @@ -307,9 +298,7 @@ struct request_info *request; /* ARGSUSED */ -static void spawn_option(value, request) -char *value; -struct request_info *request; +static void spawn_option(char *value, struct request_info *request) { if (dry_run == 0) shell_cmd(value); @@ -319,9 +308,7 @@ struct request_info *request; /* ARGSUSED */ -static void linger_option(value, request) -char *value; -struct request_info *request; +static void linger_option(char *value, struct request_info *request) { struct linger linger; char junk; @@ -341,9 +328,7 @@ struct request_info *request; /* ARGSUSED */ -static void keepalive_option(value, request) -char *value; -struct request_info *request; +static void keepalive_option(char *value, struct request_info *request) { static int on = 1; @@ -356,9 +341,7 @@ struct request_info *request; /* ARGSUSED */ -static void nice_option(value, request) -char *value; -struct request_info *request; +static void nice_option(char *value, struct request_info *request) { int niceval = 10; char junk; @@ -371,9 +354,7 @@ struct request_info *request; /* twist_option - replace process by shell command */ -static void twist_option(value, request) -char *value; -struct request_info *request; +static void twist_option(char *value, struct request_info *request) { char *error; @@ -409,9 +390,7 @@ struct request_info *request; /* rfc931_option - look up remote user name */ -static void rfc931_option(value, request) -char *value; -struct request_info *request; +static void rfc931_option(char *value, struct request_info *request) { int timeout; char junk; @@ -428,9 +407,7 @@ struct request_info *request; /* ARGSUSED */ -static void setenv_option(value, request) -char *value; -struct request_info *request; +static void setenv_option(char *value, struct request_info *request) { char *var_value; @@ -442,9 +419,7 @@ struct request_info *request; /* severity_map - lookup facility or severity value */ -static int severity_map(table, name) -const CODE *table; -char *name; +static int severity_map(const CODE *table, char *name) { const CODE *t; int ret = -1; @@ -464,9 +439,7 @@ char *name; /* ARGSUSED */ -static void severity_option(value, request) -char *value; -struct request_info *request; +static void severity_option(char *value, struct request_info *request) { char *level = split_at(value, '.'); @@ -477,8 +450,7 @@ struct request_info *request; /* get_field - return pointer to next field in string */ -static char *get_field(string) -char *string; +static char *get_field(char *string) { static char *last = ""; char *src; @@ -520,8 +492,7 @@ char *string; /* chop_string - strip leading and trailing blanks from string */ -static char *chop_string(string) -register char *string; +static char *chop_string(register char *string) { char *start = 0; char *end; diff --git a/contrib/tcp_wrappers/percent_m.c b/contrib/tcp_wrappers/percent_m.c index 1019b82d8c36..1cedbd9c4c0c 100644 --- a/contrib/tcp_wrappers/percent_m.c +++ b/contrib/tcp_wrappers/percent_m.c @@ -19,9 +19,7 @@ extern int sys_nerr; #include "mystdarg.h" -char *percent_m(obuf, ibuf) -char *obuf; -char *ibuf; +char *percent_m(char *obuf, char *ibuf) { char *bp = obuf; char *cp = ibuf; diff --git a/contrib/tcp_wrappers/percent_x.c b/contrib/tcp_wrappers/percent_x.c index 9b37329cf369..433dc4f9a153 100644 --- a/contrib/tcp_wrappers/percent_x.c +++ b/contrib/tcp_wrappers/percent_x.c @@ -29,11 +29,8 @@ extern void exit(); /* percent_x - do % expansion, abort if result buffer is too small */ -char *percent_x(result, result_len, string, request) -char *result; -int result_len; -char *string; -struct request_info *request; +char *percent_x(char *result, int result_len, char *string, + struct request_info *request) { char *bp = result; char *end = result + result_len - 1; /* end of result buffer */ diff --git a/contrib/tcp_wrappers/ptx.c b/contrib/tcp_wrappers/ptx.c index b9c312b82cdc..e8ea7ed08676 100644 --- a/contrib/tcp_wrappers/ptx.c +++ b/contrib/tcp_wrappers/ptx.c @@ -35,8 +35,7 @@ static void ptx_sink(); /* tli_host - determine TLI endpoint info, PTX version */ -void tli_host(request) -struct request_info *request; +void tli_host(struct request_info *request) { static struct sockaddr_in client; static struct sockaddr_in server; @@ -81,8 +80,7 @@ struct request_info *request; /* ptx_sink - absorb unreceived IP datagram */ -static void ptx_sink(fd) -int fd; +static void ptx_sink(int fd) { char buf[BUFSIZ]; struct sockaddr sa; diff --git a/contrib/tcp_wrappers/refuse.c b/contrib/tcp_wrappers/refuse.c index fd04e08ae9bf..833ecbe7e3e1 100644 --- a/contrib/tcp_wrappers/refuse.c +++ b/contrib/tcp_wrappers/refuse.c @@ -24,8 +24,7 @@ static char sccsid[] = "@(#) refuse.c 1.5 94/12/28 17:42:39"; /* refuse - refuse request */ -void refuse(request) -struct request_info *request; +void refuse(struct request_info *request) { #ifdef INET6 syslog(deny_severity, "refused connect from %s (%s)", diff --git a/contrib/tcp_wrappers/rfc931.c b/contrib/tcp_wrappers/rfc931.c index 033254b61261..e2adafb8f6ff 100644 --- a/contrib/tcp_wrappers/rfc931.c +++ b/contrib/tcp_wrappers/rfc931.c @@ -44,10 +44,7 @@ static jmp_buf timebuf; /* fsocket - open stdio stream on top of socket */ -static FILE *fsocket(domain, type, protocol) -int domain; -int type; -int protocol; +static FILE *fsocket(int domain, int type, int protocol) { int s; FILE *fp; @@ -73,15 +70,12 @@ static void timeout(int sig) /* rfc931 - return remote user name, given socket structures */ -void rfc931(rmt_sin, our_sin, dest) #ifdef INET6 -struct sockaddr *rmt_sin; -struct sockaddr *our_sin; +void rfc931(struct sockaddr *rmt_sin, struct sockaddr *our_sin, char *dest) #else -struct sockaddr_in *rmt_sin; -struct sockaddr_in *our_sin; +void rfc931(struct sockaddr_in *rmt_sin, struct sockaddr_in *our_sin, + char *dest) #endif -char *dest; { unsigned rmt_port; unsigned our_port; diff --git a/contrib/tcp_wrappers/safe_finger.c b/contrib/tcp_wrappers/safe_finger.c index 7b8f3cd638a8..dba8f1bf023d 100644 --- a/contrib/tcp_wrappers/safe_finger.c +++ b/contrib/tcp_wrappers/safe_finger.c @@ -49,9 +49,7 @@ int sig; exit(0); } -main(argc, argv) -int argc; -char **argv; +main(int argc, char **argv) { int c; int line_length = 0; @@ -135,8 +133,7 @@ char **argv; /* perror_exit - report system error text and terminate */ -void perror_exit(text) -char *text; +void perror_exit(char *text) { perror(text); exit(1); @@ -144,8 +141,7 @@ char *text; /* pipe_stdin - pipe stdin through program (from my ANSI to OLD C converter) */ -int pipe_stdin(argv) -char **argv; +int pipe_stdin(char **argv) { int pipefds[2]; int pid; diff --git a/contrib/tcp_wrappers/scaffold.c b/contrib/tcp_wrappers/scaffold.c index 325f702a53d4..cb4211fc98ac 100644 --- a/contrib/tcp_wrappers/scaffold.c +++ b/contrib/tcp_wrappers/scaffold.c @@ -43,8 +43,7 @@ int deny_severity = LOG_WARNING; #ifndef INET6 /* dup_hostent - create hostent in one memory block */ -static struct hostent *dup_hostent(hp) -struct hostent *hp; +static struct hostent *dup_hostent(struct hostent *hp) { struct hostent_block { struct hostent host; @@ -80,8 +79,7 @@ struct hostent *hp; /* find_inet_addr - find all addresses for this host, result to free() */ #ifdef INET6 -struct addrinfo *find_inet_addr(host) -char *host; +struct addrinfo *find_inet_addr(char *host) { struct addrinfo hints, *res; @@ -115,8 +113,7 @@ char *host; return (res); } #else -struct hostent *find_inet_addr(host) -char *host; +struct hostent *find_inet_addr(char *host) { struct in_addr addr; struct hostent *hp; @@ -161,8 +158,7 @@ char *host; /* check_dns - give each address thorough workout, return address count */ -int check_dns(host) -char *host; +int check_dns(char *host) { struct request_info request; #ifdef INET6 @@ -215,8 +211,7 @@ char *host; /* ARGSUSED */ -void shell_cmd(command) -char *command; +void shell_cmd(char *command) { if (hosts_access_verbose) printf("command: %s", command); @@ -226,17 +221,14 @@ char *command; /* ARGSUSED */ -void clean_exit(request) -struct request_info *request; +void clean_exit(struct request_info *request) { exit(0); } /* check_path - examine accessibility */ -int check_path(path, st) -char *path; -struct stat *st; +int check_path(char *path, struct stat *st) { struct stat stbuf; char buf[BUFSIZ]; diff --git a/contrib/tcp_wrappers/setenv.c b/contrib/tcp_wrappers/setenv.c index 03c706280c64..6f5720d3a849 100644 *** 527 LINES SKIPPED *** From nobody Wed Apr 5 14:35:46 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Ps6cf3Gldz43Z0H; Wed, 5 Apr 2023 14:35:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Ps6cf2FDhz3lHS; Wed, 5 Apr 2023 14:35:46 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680705346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RV8C7NOlOv78S/c1i9+FN3eLh7yp9CP6qXtWXqTafNY=; b=pYXjiZweeSG7cRp0Ye7/gEXvfhawoywQYgz4B3wecXGAYszPCDNreYLC+kth2mSeXvjUix m5hBGUMh2T1EFzLkFcDgGZhT3z9eVJy/pAvADUYPUL+g8o9IKz8N9zccViqIM0VH0arCT2 UB9ZENT08uFvoSepME6QtvzKunykSkdB3/doMNV/eJC3ZyOWQrcmYdHuUreQiITNhdRKGk t+9kxzj4GNC7JIrzwHyETBfoAktffSxN7L2tWmc/UD6lhv14dDKSodLOePCBmFvQXxSZBg UzPYkpUq82y4yzK8PVDR7qaGWb0b/ir0FgIBXUTXx4y/iRdEaWTe2gSfnrvazQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680705346; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RV8C7NOlOv78S/c1i9+FN3eLh7yp9CP6qXtWXqTafNY=; b=KF8/ccNf4hXvASZB52KTKzp2OSNiMi6nOYki9EJSm3jhiAytOxI2KquNAi6fQDnk8XHHvc NQipXnR5zR9XNTK5Y2w6PiHn4kmdRb7chlq/vvUo1ZXRAcN5byQtFfCV0IJ2ZKgOmecRlK 9G+Y17sHq3hhQ+m06bmFy0XY85Mi12URZzrG0SuC5NecwtYTFhDSV95vMpZI7NGd7GWGg3 n24aR4oKU5kmWmxIXEV7jT+p5IwLcojKLav5NTBPzLmyocadSskJndP58ueRzsi4FFZhTB mH4lbDZ2rMiwArEvytqRFFwa6yPG7GMdPb1px8zKX3aBSMxNVQz0IEXchiXaDQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680705346; a=rsa-sha256; cv=none; b=yob/FaTIHLcdMsVg4jaw4Vi7Ht0tIQmUnyLwhXsY87x/Djr12zXF3r07LK24lC+oEOogja w4meCQhpxnU0P7rovdlH0auxFrUi3gMX+Ql7FBzaP+CnxGM9wh+0IMbna0Z0GGYi530hnr yFaQkD3PrU18WIQ+EyH0qKZz+z7zuTG/cPOiH4iezJWPLluMh/ZFExExi7U0PGpI1LToZl DPXQInnu36gS9UVI5Wv9NDCpefHTjtsftUF5ZaXndl/29wgGjbjDdhWrrkIfpkrw14tqF8 I1ttdSuOhZJIYc8oIKzvIJTLxNjbY77Vo4EexvNBBr5bLzcs/24IkmeB6TttsA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Ps6cf1LTMzRFG; Wed, 5 Apr 2023 14:35:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 335EZkVt083809; Wed, 5 Apr 2023 14:35:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 335EZk8S083808; Wed, 5 Apr 2023 14:35:46 GMT (envelope-from git) Date: Wed, 5 Apr 2023 14:35:46 GMT Message-Id: <202304051435.335EZk8S083808@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: cfae554b7866 - stable/13 - fdescfs: Fix a file ref leak List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: cfae554b786636c3d2c8fb96c3804941a18245b3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=cfae554b786636c3d2c8fb96c3804941a18245b3 commit cfae554b786636c3d2c8fb96c3804941a18245b3 Author: Mark Johnston AuthorDate: 2023-03-22 12:52:57 +0000 Commit: Mark Johnston CommitDate: 2023-04-05 14:29:29 +0000 fdescfs: Fix a file ref leak In fdesc_lookup(), vn_vget_ino_gen() may fail without invoking the callback, in which case the ref on fp is leaked. This happens if the fdescfs mount is being concurrently unmounted. Moreover, we cannot safely drop the ref while the dvp is locked. So: - Use a flag variable to indicate whether the ref is dropped. - Reorganize things to handle the leak. Reported by: C Turt Reviewed by: mjg, kib Tested by: pho MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D39189 (cherry picked from commit 0f5b6f9a041e9cca3b376f6ec909374938887a3b) --- sys/fs/fdescfs/fdesc_vnops.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index 17320b2c8354..81b6690efc80 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -258,6 +258,7 @@ struct fdesc_get_ino_args { int ix; struct file *fp; struct thread *td; + bool fdropped; }; static int @@ -280,6 +281,7 @@ fdesc_get_ino_alloc(struct mount *mp, void *arg, int lkflags, error = fdesc_allocvp(a->ftype, a->fd_fd, a->ix, mp, rvp); } fdrop(a->fp, a->td); + a->fdropped = true; return (error); } @@ -300,6 +302,7 @@ fdesc_lookup(struct vop_lookup_args *ap) int nlen = cnp->cn_namelen; u_int fd, fd1; int error; + bool fdropped; struct vnode *fvp; if ((cnp->cn_flags & ISLASTCN) && @@ -343,24 +346,10 @@ fdesc_lookup(struct vop_lookup_args *ap) */ if ((error = fget(td, fd, &cap_no_rights, &fp)) != 0) goto bad; + fdropped = false; - /* Check if we're looking up ourselves. */ - if (VTOFDESC(dvp)->fd_ix == FD_DESC + fd) { - /* - * In case we're holding the last reference to the file, the dvp - * will be re-acquired. - */ - vhold(dvp); - VOP_UNLOCK(dvp); - fdrop(fp, td); - - /* Re-aquire the lock afterwards. */ - vn_lock(dvp, LK_RETRY | LK_EXCLUSIVE); - vdrop(dvp); - fvp = dvp; - if (VN_IS_DOOMED(dvp)) - error = ENOENT; - } else { + /* Make sure we're not looking up the dvp itself. */ + if (VTOFDESC(dvp)->fd_ix != FD_DESC + fd) { /* * Unlock our root node (dvp) when doing this, since we might * deadlock since the vnode might be locked by another thread @@ -374,8 +363,27 @@ fdesc_lookup(struct vop_lookup_args *ap) arg.ix = FD_DESC + fd; arg.fp = fp; arg.td = td; + arg.fdropped = fdropped; error = vn_vget_ino_gen(dvp, fdesc_get_ino_alloc, &arg, LK_EXCLUSIVE, &fvp); + fdropped = arg.fdropped; + } + + if (!fdropped) { + /* + * In case we're holding the last reference to the file, the dvp + * will be re-acquired. + */ + vhold(dvp); + VOP_UNLOCK(dvp); + fdrop(fp, td); + fdropped = true; + + vn_lock(dvp, LK_RETRY | LK_EXCLUSIVE); + vdrop(dvp); + fvp = dvp; + if (error == 0 && VN_IS_DOOMED(dvp)) + error = ENOENT; } if (error) From nobody Wed Apr 5 20:42:07 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsGlN1yqpz447f5; Wed, 5 Apr 2023 20:42: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 4PsGlM6xLWz4T92; Wed, 5 Apr 2023 20:42:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680727328; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=azJ6ZsMZbK+pkyYIxrE9XmF9W+pUe8wT/J5Rd6kWrbg=; b=eBbn04lw3RGFablD5vPMAnTvRWsf7eVpo4Tg45FVaPBmUcwD+BjvajTbCcxTPPkuzmjPC9 FJ2L1b2i1D9x/4rJY0xQWLDHsLlwUjyiZHViCf/VIBZ4l4LZv0XVwPownChApABDmt+/o3 TmCdnMvzuAoNrKAUp1XWT/z6yPfE64QiSfgWOiVYI6Wmf/Cl2As8GQnT1xKJ8IDapTXmsU V8OsLTLiPZhqeW34yZZeTPpVf3VohNvl8vmVEKR6gRtSGKUUzwIBflo+/UbtCdE52IdHmt AuL1MNtj/MSYwLw25sNIm6hd5otf5VRUGcmgD/FPyVEs3xxf8hHdcda8i7PouQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680727328; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=azJ6ZsMZbK+pkyYIxrE9XmF9W+pUe8wT/J5Rd6kWrbg=; b=KlhhWbYTdrlxgDoyXM9iYhGs4i/O7SgYEjoQ6nnqBhAlFOArqpRcVQMspiTxCsQg9hEDiG ecqsw2BMzsicXyWDdWnQfRv2U+DlYmkzUvlCZFYZec1mrYiWrMO6WyP2bw2Mh37VKSkw1l ZvD2ACDE8gjxdYaYgpWrVEAFMpNRxqMzQl0wJoapxE4jFsdBiPXybVFAFh2EQGE4kMRNKC fcRhFppJC+JGTjFVB68/L2BbxHDEng7xq2kAXr7TQDK0/540Cjq+oVrGBYi129nEP+hJjA COYadX2GHHQInmQaZaNSSqFlNYhraP2bmzMS9GpMQ/yiAR8uPSuRq5M0tQ5R5Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680727328; a=rsa-sha256; cv=none; b=h3FAohn5iGi4eH32fYWfsbD1fWA7VpA124XvL0pFSTFxUU1CrYCodVILeqpYSHULm9n0e2 +SFmrUNpQlR9ya2K9t7hCaB76oY7WofGdTQDDITHXkfMQwXBdxZfq1ptDOaHwLoLtVOju8 vqFv8tV9DNmrnMtYvm9faHA3LzKLT/t2UZszUJc+efLCQNgPMqbe8nPu63RDNYElklzkWu dfBPaQhiSlcNpJIL+rxoGim0/8LiSwX/MuavH9NJhxatut+dVvaEoRUvrJLKrhZ9knqpfp IQnJGdxdkGTQcZJWNHzwbGjOHIXpaROFg9y85Y8XaFEGhN9YbJ4MZoyFGp8R0w== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsGlM60sxzcsp; Wed, 5 Apr 2023 20:42: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 335Kg7AL006822; Wed, 5 Apr 2023 20:42:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 335Kg7TL006807; Wed, 5 Apr 2023 20:42:07 GMT (envelope-from git) Date: Wed, 5 Apr 2023 20:42:07 GMT Message-Id: <202304052042.335Kg7TL006807@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: b74063f03a83 - stable/13 - netmap: fix copyin/copyout of nmreq options list List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: b74063f03a834e9f22fb46f8e989a9df19823ff0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by vmaffione: URL: https://cgit.FreeBSD.org/src/commit/?id=b74063f03a834e9f22fb46f8e989a9df19823ff0 commit b74063f03a834e9f22fb46f8e989a9df19823ff0 Author: Vincenzo Maffione AuthorDate: 2023-03-21 23:23:18 +0000 Commit: Vincenzo Maffione CommitDate: 2023-04-05 20:41:55 +0000 netmap: fix copyin/copyout of nmreq options list The previous code unsuccesfully attempted to report a precise error for each option in the user list. Moreover, commit 253b2ec199b broke some ctrl-api-test (see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260547). With this patch we bail out as soon as an unrecoverable error is detected and we properly check for copy boundaries. EOPNOTSUPP no longer immediately returns an error, so that any other option in the list may be examined by the caller code and a precise report of the (un)supported options can be returned to the user. With this patch, all ctrl-api-test unit tests pass again. PR: 260547 Submitted by: giuseppe.lettieri@unipi.it Reviewed by: vmaffione MFC after: 14 days (cherry picked from commit e2a431a0ffb6894220bdf5d8fc2ca2d0ca316e85) --- sys/dev/netmap/netmap.c | 69 ++++++++++++++++++++++++---------------- tests/sys/netmap/ctrl-api-test.c | 23 ++++++++++++-- 2 files changed, 63 insertions(+), 29 deletions(-) diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c index 8c4481c2e6c3..aedb8c048c81 100644 --- a/sys/dev/netmap/netmap.c +++ b/sys/dev/netmap/netmap.c @@ -3103,7 +3103,7 @@ nmreq_copyin(struct nmreq_header *hdr, int nr_body_is_user) size_t rqsz, optsz, bufsz; int error = 0; char *ker = NULL, *p; - struct nmreq_option **next, *src, **opt_tab; + struct nmreq_option **next, *src, **opt_tab, *opt; uint64_t *ptrs; if (hdr->nr_reserved) { @@ -3154,24 +3154,36 @@ nmreq_copyin(struct nmreq_header *hdr, int nr_body_is_user) *ptrs++ = hdr->nr_body; *ptrs++ = hdr->nr_options; p = (char *)ptrs; + /* overwrite the user pointer with the in-kernel one */ + hdr->nr_body = (uintptr_t)p; + /* prepare the options-list pointers and temporarily terminate + * the in-kernel list, in case we have to jump to out_restore + */ + next = (struct nmreq_option **)&hdr->nr_options; + src = *next; + hdr->nr_options = 0; /* copy the body */ - error = copyin((void *)(uintptr_t)hdr->nr_body, p, rqsz); + error = copyin(*(void **)ker, p, rqsz); if (error) goto out_restore; - /* overwrite the user pointer with the in-kernel one */ - hdr->nr_body = (uintptr_t)p; p += rqsz; /* start of the options table */ opt_tab = (struct nmreq_option **)p; p += sizeof(opt_tab) * NETMAP_REQ_OPT_MAX; /* copy the options */ - next = (struct nmreq_option **)&hdr->nr_options; - src = *next; while (src) { - struct nmreq_option *opt; + struct nmreq_option *nsrc; + if (p - ker + sizeof(uint64_t*) + sizeof(*src) > bufsz) { + error = EMSGSIZE; + /* there might be a loop in the list: don't try to + * copyout the options + */ + hdr->nr_options = 0; + goto out_restore; + } /* copy the option header */ ptrs = (uint64_t *)p; opt = (struct nmreq_option *)(ptrs + 1); @@ -3179,15 +3191,19 @@ nmreq_copyin(struct nmreq_header *hdr, int nr_body_is_user) if (error) goto out_restore; rqsz += sizeof(*src); + p = (char *)(opt + 1); + /* make a copy of the user next pointer */ *ptrs = opt->nro_next; - /* overwrite the user pointer with the in-kernel one */ + /* append the option to the in-kernel list */ *next = opt; - - /* initialize the option as not supported. - * Recognized options will update this field. + /* temporarily teminate the in-kernel list, in case we have to + * jump to out_restore */ - opt->nro_status = EOPNOTSUPP; + nsrc = (struct nmreq_option *)opt->nro_next; + opt->nro_next = 0; + + opt->nro_status = 0; /* check for invalid types */ if (opt->nro_reqtype < 1) { @@ -3195,12 +3211,11 @@ nmreq_copyin(struct nmreq_header *hdr, int nr_body_is_user) nm_prinf("invalid option type: %u", opt->nro_reqtype); opt->nro_status = EINVAL; error = EINVAL; - goto next; + goto out_restore; } if (opt->nro_reqtype >= NETMAP_REQ_OPT_MAX) { - /* opt->nro_status is already EOPNOTSUPP */ - error = EOPNOTSUPP; + /* opt->nro_status will be set to EOPNOTSUPP */ goto next; } @@ -3213,12 +3228,10 @@ nmreq_copyin(struct nmreq_header *hdr, int nr_body_is_user) opt->nro_status = EINVAL; opt_tab[opt->nro_reqtype]->nro_status = EINVAL; error = EINVAL; - goto next; + goto out_restore; } opt_tab[opt->nro_reqtype] = opt; - p = (char *)(opt + 1); - /* copy the option body */ optsz = nmreq_opt_size_by_type(opt->nro_reqtype, opt->nro_size); @@ -3241,18 +3254,20 @@ nmreq_copyin(struct nmreq_header *hdr, int nr_body_is_user) next: /* move to next option */ next = (struct nmreq_option **)&opt->nro_next; - src = *next; + src = nsrc; } - if (error) - nmreq_copyout(hdr, error); - return error; + + /* initialize all the options as not supported. Recognized options + * will update their field. + */ + for (src = (struct nmreq_option *)hdr->nr_options; src; + src = (struct nmreq_option *)src->nro_next) { + src->nro_status = EOPNOTSUPP; + } + return 0; out_restore: - ptrs = (uint64_t *)ker; - hdr->nr_body = *ptrs++; - hdr->nr_options = *ptrs++; - hdr->nr_reserved = 0; - nm_os_free(ker); + nmreq_copyout(hdr, error); out_err: return error; } diff --git a/tests/sys/netmap/ctrl-api-test.c b/tests/sys/netmap/ctrl-api-test.c index cea78141fbe4..67c7bfbf5315 100644 --- a/tests/sys/netmap/ctrl-api-test.c +++ b/tests/sys/netmap/ctrl-api-test.c @@ -984,9 +984,10 @@ infinite_options(struct TestContext *ctx) { struct nmreq_option opt; - printf("Testing infinite list of options on %s\n", ctx->ifname_ext); + printf("Testing infinite list of options on %s (invalid options)\n", ctx->ifname_ext); - opt.nro_reqtype = 1234; + memset(&opt, 0, sizeof(opt)); + opt.nro_reqtype = NETMAP_REQ_OPT_MAX + 1; push_option(&opt, ctx); opt.nro_next = (uintptr_t)&opt; if (port_register_hwall(ctx) >= 0) @@ -995,6 +996,23 @@ infinite_options(struct TestContext *ctx) return (errno == EMSGSIZE ? 0 : -1); } +static int +infinite_options2(struct TestContext *ctx) +{ + struct nmreq_option opt; + + printf("Testing infinite list of options on %s (valid options)\n", ctx->ifname_ext); + + memset(&opt, 0, sizeof(opt)); + opt.nro_reqtype = NETMAP_REQ_OPT_OFFSETS; + push_option(&opt, ctx); + opt.nro_next = (uintptr_t)&opt; + if (port_register_hwall(ctx) >= 0) + return -1; + clear_options(ctx); + return (errno == EINVAL ? 0 : -1); +} + #ifdef CONFIG_NETMAP_EXTMEM int change_param(const char *pname, unsigned long newv, unsigned long *poldv) @@ -1755,6 +1773,7 @@ static struct mytest tests[] = { decltest(vale_polling_enable_disable), decltest(unsupported_option), decltest(infinite_options), + decltest(infinite_options2), #ifdef CONFIG_NETMAP_EXTMEM decltest(extmem_option), decltest(bad_extmem_option), From nobody Wed Apr 5 22:23:38 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsK0V2Q6lz44Fyb; Wed, 5 Apr 2023 22:23:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PsK0V1zn8z3w0Y; Wed, 5 Apr 2023 22:23:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680733418; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YwBz9mVfuJX22+3EelqSxMGg71YYFxiBJEn0jEgnjC4=; b=ulbIBHH3qa4oDS9FryKyLVaqigmmdbe7DC1nt+/+bd8aD5/c58EWX4izWSk/ca1ZpyPv6O HaUazqXpWbc/nJGosiZNdmxC3WQkJpmbz0QvW7VoYCvZVYqTeArWaoCz9+6RoYA7GvVrVi wxWuK8vEBcvOK4PxibK31CxeYxUe4BxPnNjM5pxJTU0gacMLzbqqNLNipwwdsrIOslGkkn tsqLVaeot7vBZIMiGJLXvYOv4dJggYh8HpAOgf4sx6kELFQIcaabZ067du5ZVjp6XHMpA+ 0d8wGybLQNKQTXsUqYzzLuRjlpOqOQO9i9qdR4/v/lhd887TxFvMgGR0PnLD+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680733418; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=YwBz9mVfuJX22+3EelqSxMGg71YYFxiBJEn0jEgnjC4=; b=MKXydCMBdqtlVsGefrPcuMNn/Xl1zvfhnkaTq/3kQunJvkijZwG6sTVk5p3SdqEX0nR0tM g7Y4KDytAkDrByEdT9ExzZ8Y8IWjifiDfU8FD646AUay1F5aUpnE/ymlmnlJPxPDxsM5Xm OFh3uPSeWHEjLanJ9Lcq1OnWeaoVtSUtgX4QuC1k2bAjJRTRSI2OWKL0OwSBWa/fPTuMOG Nk3NIHFrhmLl9FG233rIABSVDGspoUOKH8bj3T1oU8wgKewGXD+15S1FKxwNLQf1TJrkkP PULnbOkNOEB3OeqU9GPS/zOFLadCGbKbzZMeJMEJheftYBQOIfvcZAET+rc+sQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680733418; a=rsa-sha256; cv=none; b=EyZml6TUeiPLhQdzwnlPlj4pZ44K+LYnzDKik3BW+IFdAO2pWBDsXyr3XvZ0uymBbxxr+K Tofj5wy6WUD2oUja4cyc6NXiNDsbyurxmUHP4IeYs+TFZ8GyhFnDi2dvB/GcwG+Zfuymkn sYogWExhVsAOTG/KKb8W3zot6bCSlopuskw6rEwvC6Fx7rtFK9PONgWVsGdGZD+OQXVFy0 2LOQcT+J7CZpOrJGfrRNKS8n5vvvJuvofIb1bHwkG0zPLIazUBf05886bFjM5/7jsVkBuA JEjo9yfk/muURK8Qgl0ItvkWOgnEVSgDkHbISzozyGz3YdgnPNKmeSATScPgow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsK0V12wdzgMy; Wed, 5 Apr 2023 22:23:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 335MNcoR074042; Wed, 5 Apr 2023 22:23:38 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 335MNc4d074041; Wed, 5 Apr 2023 22:23:38 GMT (envelope-from git) Date: Wed, 5 Apr 2023 22:23:38 GMT Message-Id: <202304052223.335MNc4d074041@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: d94a88d249b0 - stable/13 - netmap: fix build issue in unit test List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: d94a88d249b05436c2ab8601557ac24580fdaca2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by vmaffione: URL: https://cgit.FreeBSD.org/src/commit/?id=d94a88d249b05436c2ab8601557ac24580fdaca2 commit d94a88d249b05436c2ab8601557ac24580fdaca2 Author: Vincenzo Maffione AuthorDate: 2023-04-05 22:19:13 +0000 Commit: Vincenzo Maffione CommitDate: 2023-04-05 22:19:13 +0000 netmap: fix build issue in unit test This is a direct commit to fix a build issue introduced by b74063f03a834e9f22fb46f8e989a9df19823ff0 (cherry-picked MFC). The build failure is caused by the use of a netmap option that is available in CURRENT but not in stable/13. Fix it by using an option code that is available also in stable/13. The option value is not relevant for the test. --- tests/sys/netmap/ctrl-api-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/sys/netmap/ctrl-api-test.c b/tests/sys/netmap/ctrl-api-test.c index 67c7bfbf5315..bf85fbb76a2b 100644 --- a/tests/sys/netmap/ctrl-api-test.c +++ b/tests/sys/netmap/ctrl-api-test.c @@ -1004,7 +1004,7 @@ infinite_options2(struct TestContext *ctx) printf("Testing infinite list of options on %s (valid options)\n", ctx->ifname_ext); memset(&opt, 0, sizeof(opt)); - opt.nro_reqtype = NETMAP_REQ_OPT_OFFSETS; + opt.nro_reqtype = NETMAP_REQ_OPT_CSB; push_option(&opt, ctx); opt.nro_next = (uintptr_t)&opt; if (port_register_hwall(ctx) >= 0) From nobody Thu Apr 6 06:09:55 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsWLY0118z43ZP4; Thu, 6 Apr 2023 06:09: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 4PsWLW6j7Fz3C4C; Thu, 6 Apr 2023 06:09:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680761396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K+Mtf08U5MovfzcWYffEWwGx1TqtURst5urjYeTvGw8=; b=DOUH/Mvmt6glTXUzuvLTSH89GgdMlRyx1EYmQg5EVElD2u3SwjdZqLkXT8Fvy64wKLheGg /OZNI52CDpCiGRliS/bovoiiSrmOB0f7yJglE74lGEBsDIPMjberKLKyKKDp/EM8deb1ys PdxU8zsIK+/OcLnu3frlUmVTiHWgTw/jhm6u/VsoTMI6WDbxHesk1bUNOG/6yEEHXh8+Ea Soxh9Js5vGcEZPYT0Pw5jCoSuYTr8rrndW/DKGLmF4Ar2p+IuAB8k867toKz9jP6O9mKjS D0Oxe+uNPOjEVO1AVLFts2xsLFOsp3VagOb35Q3Iwicq/TzehJxRVfuCCqBljA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680761396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=K+Mtf08U5MovfzcWYffEWwGx1TqtURst5urjYeTvGw8=; b=xwMayWEyX9yK9R62CcJdZZrVN8sYIMKJNaJYehavVjxGJwLXk8rznTIGQLtRr6yeQZfw1/ TWvci3XZW2rpaHTZNfsSEgMSXKlced8xEvq/mVkqbNFdVru9GiH+7JD5AVPSGcie8lKh6k 83PRuh4mjxmZfdGPQu0wo0vGAsTnA2gRBKbUgk05uNzQmQnqJHJWWQ3BfZXh8QS8e2bL9S TBw+ej2nkHZomm4gUKiHnovW/yBdypkiuzANOY63tF028sgSbP/q/CwPTKQqjTLEqUMyHN ADiv51CE26VJMoJDRHp4Rpy2cxUz3qgaV9xYhZWdA4m2kPt/AuC4cJmn8ohUPQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680761396; a=rsa-sha256; cv=none; b=CX6w1Jq6Js3srEKyFsumkkKu6E3tpldJhB8LNgD6TMYiq8q7RRoUW/vha+RkJO1Zs4w6Jf uFRb+VxtOS+LD1yVbzI2Cteo0efVFJcxpn27IzOSa5BiRIlr5f6bW1LeWybftl3Q13Haia BWK92msdlzFo0kaTLXa65bP6qcuYGXO+5VoNMwgCSKBu333gTSrTuKbV3j7mYOTnY1ll56 BUCw9pkL1MTLYXhTmzKaDrVTCqtxx846ODhlVx38OTYL8wODm69H7yg95HcevzfbCgcYFp VDyRGwBfq3yELW8doIV5r4BSBYr6vPTz6EUX+rmKlsCJqJ51yzSpTfaHQY50UA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsWLW4DXDzsw0; Thu, 6 Apr 2023 06:09: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 33669tiZ030553; Thu, 6 Apr 2023 06:09:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33669tuU030552; Thu, 6 Apr 2023 06:09:55 GMT (envelope-from git) Date: Thu, 6 Apr 2023 06:09:55 GMT Message-Id: <202304060609.33669tuU030552@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: =?utf-8?Q?Corvin=20K=C3=B6hne?= Subject: git: e6bb702fce3f - stable/13 - bhyve: return EEXIST when adding a fwcfg item twice List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e6bb702fce3feb41a0f30ac9c09e30b70ad850c2 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=e6bb702fce3feb41a0f30ac9c09e30b70ad850c2 commit e6bb702fce3feb41a0f30ac9c09e30b70ad850c2 Author: Corvin Köhne AuthorDate: 2023-03-30 05:43:28 +0000 Commit: Corvin Köhne CommitDate: 2023-04-06 06:06:23 +0000 bhyve: return EEXIST when adding a fwcfg item twice Reviewed by: rew MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D39338 (cherry picked from commit e37edc91b6a0a0116005bdd0fff7c911c37adabf) --- usr.sbin/bhyve/qemu_fwcfg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/bhyve/qemu_fwcfg.c b/usr.sbin/bhyve/qemu_fwcfg.c index 1b0b5e3e9931..bb86d0371985 100644 --- a/usr.sbin/bhyve/qemu_fwcfg.c +++ b/usr.sbin/bhyve/qemu_fwcfg.c @@ -178,7 +178,7 @@ qemu_fwcfg_add_item(const uint16_t architecture, const uint16_t index, if (fwcfg_item->data != NULL) { warnx("%s: qemu fwcfg item exists (architecture %s index 0x%x)", __func__, arch ? "specific" : "generic", idx); - return (-1); + return (EEXIST); } /* save data of the item */ From nobody Thu Apr 6 06:09:54 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsWLX6J0nz43Z8c; Thu, 6 Apr 2023 06:09: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 4PsWLW3yLsz3Bnq; Thu, 6 Apr 2023 06:09:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680761395; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bF4rq1qF5o61pCTQo8ogRjKydAFZR9vJmc6k1AtWuyE=; b=sggxzHf2KIPS/M+QqFAnqe16fm7frQSDQC/+uwwiGNa76LCsN1s4Zltwm/+WWVfAwT+JBX 8Uz1NOe3J3G5/ZZxYlPgl7tfTmIpZmrjKgDD4iZYqIN7TK1lumsQeNJN5ltzlEtXA1pNBt jqqwieVOMvWHIBMvP3shGkr8ocM9nWJey0DzT3w7L4hUzqjVavaoaVgY6qEC0nvRlxUBfv e3xar8ssLHbwvmFaPYmsDbAXYEZN3gP7yGCKu38UXBPXEpSzhPsBYBMxVVSiwKnPma5b9i JaUnbAVeJd2NEYozw7NfQVffvgbgGQCCd00Zz+SLxL1Sd/4PbneFNYi8nXYo3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680761395; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=bF4rq1qF5o61pCTQo8ogRjKydAFZR9vJmc6k1AtWuyE=; b=bYfSMC8j+cjTnCqO0VBhXQEI6LiyjYLbD/ch3T6vyYOuTEs/luF6n19QHIq9sZ0JRLB4K+ JdBJ8PXCsrlTrMwYeOy/KX2SgvWYL97UogBDeqzmdUIDZlFh2VtJlG/X56o9jQZyvCbk2L 1CibJbB0tNfqMgnvJN+VPiqkwVP30RJu+09DYgQTKEHVKAY7lM5GFL2UTf03vlQ2xDK5O4 /DzXY+tHXC3Rvb7neP/v/EPbHNSHqndAxmKG6ETd7jY0AtPWvYs2v+mcFpn+GOekqfr/U+ Q7A/dGWS/0VE7MGl4IisLL7zC0r9tSmMPTk7GLQF7HU+KMc21MSFu9qEpAu48g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680761395; a=rsa-sha256; cv=none; b=P19zJsNRNjH8tE6mNepkjTQ3hfp4u0wXJDkpO4eNWEA6VfQ/OjKILDKfAfzSQo6nysFq4T oyZngjL6/C3YHVgMHh6UfcOjqvF2AJkSiEO8YYN1Gma5bvZJhIp3vziu8kDX1Vw9ZCWBTl 9eoQOU6Ir87KSvu8UNRXfGdEzPFY9eItTwSLeINq2XUiyJs82JKGdruu+pOHTBPNhMuLen McF/MzZ+Jyw0Ola+QwXLpQrrJh4wxTQlCWwaktT0C7wfLE+Kr78OD0aeFqX+x9Zh7HalyH yYwv5QShEJuX2riq0OTKGPGFaYwNMNkzNTvCBNJpuS7LR6Jws91WOX5XjAXrMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsWLV2Wxszt2N; Thu, 6 Apr 2023 06:09: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 33669stq030525; Thu, 6 Apr 2023 06:09:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33669sum030524; Thu, 6 Apr 2023 06:09:54 GMT (envelope-from git) Date: Thu, 6 Apr 2023 06:09:54 GMT Message-Id: <202304060609.33669sum030524@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: =?utf-8?Q?Corvin=20K=C3=B6hne?= Subject: git: 2a33e252a79c - stable/13 - bhyve: remove unnecessary const qualifier in acpi_device.h List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: corvink X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 2a33e252a79c05f5d67c7cc271b9cbee6563e404 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by corvink: URL: https://cgit.FreeBSD.org/src/commit/?id=2a33e252a79c05f5d67c7cc271b9cbee6563e404 commit 2a33e252a79c05f5d67c7cc271b9cbee6563e404 Author: Corvin Köhne AuthorDate: 2023-03-29 13:13:03 +0000 Commit: Corvin Köhne CommitDate: 2023-04-06 06:06:23 +0000 bhyve: remove unnecessary const qualifier in acpi_device.h Those const qualifier declare that the function doesn't change the values internally. It makes no sense to add them in the header file. Reviewed by: markj MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D39318 (cherry picked from commit 404689908632599ee5b3bcbc289ae7f094368dc5) --- usr.sbin/bhyve/acpi_device.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/usr.sbin/bhyve/acpi_device.h b/usr.sbin/bhyve/acpi_device.h index 5fb3ea18e481..49e55c7d4f14 100644 --- a/usr.sbin/bhyve/acpi_device.h +++ b/usr.sbin/bhyve/acpi_device.h @@ -26,13 +26,13 @@ struct acpi_device; * @param[in] hid Hardware ID of the ACPI device. Should always be a NULL * terminated string. */ -int acpi_device_create(struct acpi_device **const new_dev, - struct vmctx *const vm_ctx, const char *const name, const char *const hid); -void acpi_device_destroy(struct acpi_device *const dev); +int acpi_device_create(struct acpi_device **new_dev, struct vmctx *vm_ctx, + const char *name, const char *hid); +void acpi_device_destroy(struct acpi_device *dev); -int acpi_device_add_res_fixed_ioport(struct acpi_device *const dev, - const UINT16 port, UINT8 length); -int acpi_device_add_res_fixed_memory32(struct acpi_device *const dev, - const UINT8 write_protected, const UINT32 address, const UINT32 length); +int acpi_device_add_res_fixed_ioport(struct acpi_device *dev, UINT16 port, + UINT8 length); +int acpi_device_add_res_fixed_memory32(struct acpi_device *dev, + UINT8 write_protected, UINT32 address, UINT32 length); -void acpi_device_write_dsdt(const struct acpi_device *const dev); +void acpi_device_write_dsdt(const struct acpi_device *dev); From nobody Thu Apr 6 15:07:03 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGJ0K1Rz44SQM; Thu, 6 Apr 2023 15:07: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 4PslGH6JPrz4Ll6; Thu, 6 Apr 2023 15:07:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793623; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4T44jQI/pcfmJyO3WNyjB7OHEhGiJase/P2tp90K6YA=; b=czmSYv+qkVxcLuEHW7LMVccIJr8eXWoAMOrwrxV3nKkeizSGi2x+gbS4efs5SLfbn2h3Je cDfibysegMruhKxWQn/a0QnoIjv//6fquw/Q6BUopUrrD8fMOPYk/cqqlJ1AglJj3ngzXI T6+9I9wBE2Ai2oH1brPU1d7dGZj6fVUQsCIzMVtWqkI6n1S3PNT/U5ZN3+AHu4yyE58HJu vneT+wSTnCvfJn8MDAfxUWqtzD2qh2qAjxYERD2apAWBRkCeUqPgXy4EMCDR4t485OeNWm +zGRnxh+tbvZVQeB0rg8jaN49vY6y4NYTkFdw8BkjivHobptdQsFvfP27Oezfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793623; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4T44jQI/pcfmJyO3WNyjB7OHEhGiJase/P2tp90K6YA=; b=ixTJwNznhFqMHILV9EYoqLYK2CuZdDGYn2FdfmvUHgajX7XY4ZN4/2x66DHdAGyYeXnAeB n09pgjtuqPwLAPWGdWdaoja0xmkzc7ZmJSJ5eYf+TARn7EvRfd5yAtRxDn1VgX75JBznB4 3P1zVYhjaGZzFcnLekRTreVdgl1jEQSgft28lbhBQOuem2JEOGdqJ/2oLdldzjsaaN2BaB fIG2l4jakHN+wNw3Bt051ureYlizHlzPAK4sl+Er4+ILe8K2I/caYVyumE745yE8JWjNkc ad39PzrWjhuYFabh7IBeFo7Tjn2tSwbSFOc68QPh5PhO21Xheo5S+clMPKvfcQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793623; a=rsa-sha256; cv=none; b=BcuK1AO4twIDJB2vE8qFQzhyqJcvOlqKaGnMtpg/VuUFjSJZDeuyYUb0aKkOgecCRcxfoe jzS92VXZfWm8I6g9tTsxDPnk1kSu/1dPl9h4lPdmoFrprrgtQeZkpvTdyUKE/jw/lLcMY1 G+Gqk9VsZ8WshwJvoirrpDKVvlgzgee8JIHlv8Ce66l42CSGPdcLJDyo7yGn4bXwtlcOKu TpeFSDLwg6b+csd2sXEQ80EXY1R+pV4Hydv4UalRovEUJH0ToermfBWN01ullrLLjDEVln zZqwSdO6niDYDzKFDpt6w+0Lf8i8e8CXu8qS1LNsC3NSPhtEF+mrYYCr56Eehw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGH5Prtz17gD; Thu, 6 Apr 2023 15:07: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 336F73fe014800; Thu, 6 Apr 2023 15:07:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F73gM014799; Thu, 6 Apr 2023 15:07:03 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:03 GMT Message-Id: <202304061507.336F73gM014799@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: b52c60d4e8c6 - stable/13 - cap_sysctl tests: Serialize List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: b52c60d4e8c628f6158a936184b6b0a844597f62 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=b52c60d4e8c628f6158a936184b6b0a844597f62 commit b52c60d4e8c628f6158a936184b6b0a844597f62 Author: Mark Johnston AuthorDate: 2023-03-24 16:26:20 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 14:54:08 +0000 cap_sysctl tests: Serialize These tests fail spuriously when run in parallel, since some of them write a value to a global sysctl, read it back, and expect to see the written value. These tests complete quite quickly in any case. MFC after: 1 week (cherry picked from commit 5d96ca7a307279cf4bdb191b7074cd1efcd3b8e8) --- lib/libcasper/services/cap_sysctl/tests/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/libcasper/services/cap_sysctl/tests/Makefile b/lib/libcasper/services/cap_sysctl/tests/Makefile index d0d9f9bd7a0d..ec7439351c66 100644 --- a/lib/libcasper/services/cap_sysctl/tests/Makefile +++ b/lib/libcasper/services/cap_sysctl/tests/Makefile @@ -11,6 +11,9 @@ CFLAGS+=-DWITH_CASPER .endif LIBADD+= nv -TEST_METADATA.sysctl_test+= required_user="root" +# cap_sysctl tests modify global sysctl values and read them back, so +# cannot be run in parallel. +TEST_METADATA.sysctl_test+= required_user="root" \ + is_exclusive=true .include From nobody Thu Apr 6 15:07:04 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGK1T9gz44Scl; Thu, 6 Apr 2023 15:07: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 4PslGK0CTDz4M90; Thu, 6 Apr 2023 15:07:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5JCQKGfNuJJUTubmoW/ySgqgWtijNfn1OGC+XWevWfc=; b=cT104NXWynhYruBBRZEdH3NMxGQnjRiFFdoFhhWHp67Dzqv2EX6XtleGUQR0cwQTclE/GO nUdZ1azmEgTFMss+4JyND74525d7tmhPCQJU9URZHtgd/GCSRzDQ6Qn4gJWIBO2fxSgtBL qsZ82gC6muzyMl4kMwsz+w834OLQQGxSuukeuT8qezAuIDskM7tPaJALKGB64xyN7AFS9V oQpAg7XJ298/0tR6jlTds0BqVwFjr/4hMmZIVL/xn2VpLJEkr5WEqMdcS5RRgla39J7qL9 Ebn9F7pchF3u2/19lIiPDIylOQ1hT2YJGiSxnOYh165WYBuZ1Ygj8wm8gtXghA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793625; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5JCQKGfNuJJUTubmoW/ySgqgWtijNfn1OGC+XWevWfc=; b=vwQEotzHwF2wuajK+x7wMS0a0hn59baRFVXtBJfgYBR3EsJaO2zsL7M+PhFn8XLLWu9b/I NaM/PLjVv/ZwfR2F1dKPVgFpLNbqml3nzEjihD+jwzYFpI8DWvlnDqapxRbvczOjLZth9S JuPJWidU08HAPJHNzCQjhZhgLRbOzmfKZrhDgUkSGfW95wtl+2ds97szZkZaa4VUmXVvms yVwaLdDXKR286aqGmICOGqixVl5fOUe1BfwtAgBXmu+NwcugjvOEzy4AddUbNzY9l0AyKl 4a0mKyXCGQxDjq7aH8ZdvOox4p8wMN7SfCrxKiVpTOcjgWSMoLfxkiZapyjd1g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793625; a=rsa-sha256; cv=none; b=P9HDb+uV3eAdUZ7hqU6z5GtEKnwwNXKJCn5BSw9kwbJhCNroobfOupsx07PRhl4Gue00nj SviFoUwUAJZboflkcFZt33Yq5niL9/cfI3lk7HlRDYA8koNKTXuPbfGvjxH7p+v85YRKgz nlnM9wJMeUfo0RmWBsFlPDv877n3o1KSnkHDTMrYQN5qvTvojQkEvQaNsZaVSK6NheryH3 wGjGYFO7i6a/wUjggEF75YzUBZOMl11ABBF56UhctFax+LfGlvHQB4V4UqLwpvbuWtDlTf JPqiUs1v7WWvXAnvaF3ygr5G80Vy78eUun13INRbKEnb7SuZoftnz94OvYxBgA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGJ60Ylz17vS; Thu, 6 Apr 2023 15:07: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 336F74P7014819; Thu, 6 Apr 2023 15:07:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F74fs014818; Thu, 6 Apr 2023 15:07:04 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:04 GMT Message-Id: <202304061507.336F74fs014818@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: 8d775cafb653 - stable/13 - cap_dns tests: Convert to ATF, avoid failing when lookups don't resolve List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 8d775cafb6537b9d5bb110eb05673f3853a460df Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=8d775cafb6537b9d5bb110eb05673f3853a460df commit 8d775cafb6537b9d5bb110eb05673f3853a460df Author: Mark Johnston AuthorDate: 2023-03-30 23:27:36 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 14:57:31 +0000 cap_dns tests: Convert to ATF, avoid failing when lookups don't resolve The cap_dns tests require Internet access. Currently they fail when that's not available, which for CI purposes is undesirable. Let's instead skip the tests if none of the non-casper name/addr lookups succeed. To that end: - Convert the tests to ATF so that skipping is easier to implement. - Break up the tests into separate test cases. - If one of the system (i.e., non-casper) lookup functions fails, skip the test if all of them failed, otherwise fail the tests, since partial failure indicates something is flaky and deserves a closer look. Reviewed by: oshogbo MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D39241 (cherry picked from commit 615bf03e33e466ca10e3f1d203f4c27188d28fc3) --- lib/libcasper/services/cap_dns/tests/Makefile | 2 +- lib/libcasper/services/cap_dns/tests/dns_test.c | 636 ++++++++++++------------ 2 files changed, 328 insertions(+), 310 deletions(-) diff --git a/lib/libcasper/services/cap_dns/tests/Makefile b/lib/libcasper/services/cap_dns/tests/Makefile index f79e872049d1..564b4984e4f8 100644 --- a/lib/libcasper/services/cap_dns/tests/Makefile +++ b/lib/libcasper/services/cap_dns/tests/Makefile @@ -2,7 +2,7 @@ .include -TAP_TESTS_C= dns_test +ATF_TESTS_C= dns_test .if ${MK_CASPER} != "no" LIBADD+= casper diff --git a/lib/libcasper/services/cap_dns/tests/dns_test.c b/lib/libcasper/services/cap_dns/tests/dns_test.c index e25caf9c1c92..06856574fce9 100644 --- a/lib/libcasper/services/cap_dns/tests/dns_test.c +++ b/lib/libcasper/services/cap_dns/tests/dns_test.c @@ -48,29 +48,9 @@ __FBSDID("$FreeBSD$"); #include #include - #include -static int ntest = 1; - -#define CHECK(expr) do { \ - if ((expr)) \ - printf("ok %d # %s:%u\n", ntest, __FILE__, __LINE__); \ - else \ - printf("not ok %d # %s:%u\n", ntest, __FILE__, __LINE__); \ - fflush(stdout); \ - ntest++; \ -} while (0) -#define CHECKX(expr) do { \ - if ((expr)) { \ - printf("ok %d # %s:%u\n", ntest, __FILE__, __LINE__); \ - } else { \ - printf("not ok %d # %s:%u\n", ntest, __FILE__, __LINE__); \ - exit(1); \ - } \ - fflush(stdout); \ - ntest++; \ -} while (0) +#include #define GETHOSTBYNAME 0x01 #define GETHOSTBYNAME2_AF_INET 0x02 @@ -219,37 +199,47 @@ hostent_compare(const struct hostent *hp0, const struct hostent *hp1) return (true); } -static unsigned int -runtest(cap_channel_t *capdns) +static void +runtest(cap_channel_t *capdns, unsigned int expected) { - unsigned int result; + unsigned int result, failure; struct addrinfo *ais, *aic, hints, *hintsp; struct hostent *hps, *hpc; struct in_addr ip4; struct in6_addr ip6; + int caperr, syserr; - result = 0; + failure = result = 0; hps = gethostbyname("example.com"); - if (hps == NULL) + if (hps == NULL) { + failure |= GETHOSTBYNAME; fprintf(stderr, "Unable to resolve %s IPv4.\n", "example.com"); - hpc = cap_gethostbyname(capdns, "example.com"); - if (hostent_compare(hps, hpc)) - result |= GETHOSTBYNAME; + } else { + hpc = cap_gethostbyname(capdns, "example.com"); + if (hostent_compare(hps, hpc)) + result |= GETHOSTBYNAME; + } hps = gethostbyname2("example.com", AF_INET); - if (hps == NULL) + if (hps == NULL) { + failure |= GETHOSTBYNAME2_AF_INET; fprintf(stderr, "Unable to resolve %s IPv4.\n", "example.com"); - hpc = cap_gethostbyname2(capdns, "example.com", AF_INET); - if (hostent_compare(hps, hpc)) - result |= GETHOSTBYNAME2_AF_INET; + } else { + hpc = cap_gethostbyname2(capdns, "example.com", AF_INET); + if (hostent_compare(hps, hpc)) + result |= GETHOSTBYNAME2_AF_INET; + } hps = gethostbyname2("example.com", AF_INET6); - if (hps == NULL) + if (hps == NULL) { + failure |= GETHOSTBYNAME2_AF_INET6; fprintf(stderr, "Unable to resolve %s IPv6.\n", "example.com"); - hpc = cap_gethostbyname2(capdns, "example.com", AF_INET6); - if (hostent_compare(hps, hpc)) - result |= GETHOSTBYNAME2_AF_INET6; + } else { + hpc = cap_gethostbyname2(capdns, "example.com", AF_INET6); + if (hostent_compare(hps, hpc)) + result |= GETHOSTBYNAME2_AF_INET6; + } hints.ai_flags = 0; hints.ai_family = AF_UNSPEC; @@ -262,42 +252,57 @@ runtest(cap_channel_t *capdns) hintsp = &hints; - if (getaddrinfo("freebsd.org", "25", hintsp, &ais) != 0) { + syserr = getaddrinfo("freebsd.org", "25", hintsp, &ais); + if (syserr != 0) { + failure |= GETADDRINFO_AF_UNSPEC; fprintf(stderr, "Unable to issue [system] getaddrinfo() for AF_UNSPEC: %s\n", - gai_strerror(errno)); - } - if (cap_getaddrinfo(capdns, "freebsd.org", "25", hintsp, &aic) == 0) { - if (addrinfo_compare(ais, aic)) - result |= GETADDRINFO_AF_UNSPEC; - freeaddrinfo(ais); - freeaddrinfo(aic); + gai_strerror(syserr)); + } else { + caperr = cap_getaddrinfo(capdns, "freebsd.org", "25", hintsp, + &aic); + if (caperr == 0) { + if (addrinfo_compare(ais, aic)) + result |= GETADDRINFO_AF_UNSPEC; + freeaddrinfo(ais); + freeaddrinfo(aic); + } } hints.ai_family = AF_INET; - if (getaddrinfo("freebsd.org", "25", hintsp, &ais) != 0) { + syserr = getaddrinfo("freebsd.org", "25", hintsp, &ais); + if (syserr != 0) { + failure |= GETADDRINFO_AF_INET; fprintf(stderr, "Unable to issue [system] getaddrinfo() for AF_UNSPEC: %s\n", - gai_strerror(errno)); - } - if (cap_getaddrinfo(capdns, "freebsd.org", "25", hintsp, &aic) == 0) { - if (addrinfo_compare(ais, aic)) - result |= GETADDRINFO_AF_INET; - freeaddrinfo(ais); - freeaddrinfo(aic); + gai_strerror(syserr)); + } else { + caperr = cap_getaddrinfo(capdns, "freebsd.org", "25", hintsp, + &aic); + if (caperr == 0) { + if (addrinfo_compare(ais, aic)) + result |= GETADDRINFO_AF_INET; + freeaddrinfo(ais); + freeaddrinfo(aic); + } } hints.ai_family = AF_INET6; - if (getaddrinfo("freebsd.org", "25", hintsp, &ais) != 0) { + syserr = getaddrinfo("freebsd.org", "25", hintsp, &ais); + if (syserr != 0) { + failure |= GETADDRINFO_AF_INET6; fprintf(stderr, "Unable to issue [system] getaddrinfo() for AF_UNSPEC: %s\n", - gai_strerror(errno)); - } - if (cap_getaddrinfo(capdns, "freebsd.org", "25", hintsp, &aic) == 0) { - if (addrinfo_compare(ais, aic)) - result |= GETADDRINFO_AF_INET6; - freeaddrinfo(ais); - freeaddrinfo(aic); + gai_strerror(syserr)); + } else { + caperr = cap_getaddrinfo(capdns, "freebsd.org", "25", hintsp, + &aic); + if (caperr == 0) { + if (addrinfo_compare(ais, aic)) + result |= GETADDRINFO_AF_INET6; + freeaddrinfo(ais); + freeaddrinfo(aic); + } } /* XXX: hardcoded addresses for "google-public-dns-a.google.com". */ @@ -306,397 +311,410 @@ runtest(cap_channel_t *capdns) inet_pton(AF_INET, GOOGLE_DNS_IPV4, &ip4); hps = gethostbyaddr(&ip4, sizeof(ip4), AF_INET); - if (hps == NULL) + if (hps == NULL) { + failure |= GETHOSTBYADDR_AF_INET; fprintf(stderr, "Unable to resolve %s.\n", GOOGLE_DNS_IPV4); - hpc = cap_gethostbyaddr(capdns, &ip4, sizeof(ip4), AF_INET); - if (hostent_compare(hps, hpc)) - result |= GETHOSTBYADDR_AF_INET; + } else { + hpc = cap_gethostbyaddr(capdns, &ip4, sizeof(ip4), AF_INET); + if (hostent_compare(hps, hpc)) + result |= GETHOSTBYADDR_AF_INET; + } inet_pton(AF_INET6, GOOGLE_DNS_IPV6, &ip6); hps = gethostbyaddr(&ip6, sizeof(ip6), AF_INET6); if (hps == NULL) { + failure |= GETHOSTBYADDR_AF_INET6; fprintf(stderr, "Unable to resolve %s.\n", GOOGLE_DNS_IPV6); + } else { + hpc = cap_gethostbyaddr(capdns, &ip6, sizeof(ip6), AF_INET6); + if (hostent_compare(hps, hpc)) { + caperr = h_errno; + result |= GETHOSTBYADDR_AF_INET6; + } + } + + /* + * If we had any failures, make sure that all lookups failed. If some + * succeeded and some failed, there's a problem with the test or the DNS + * and we should not fail silently. + */ + if (failure != 0) { + ATF_REQUIRE_MSG(failure == (GETHOSTBYNAME | + GETHOSTBYNAME2_AF_INET | GETHOSTBYNAME2_AF_INET6 | + GETADDRINFO_AF_UNSPEC | GETADDRINFO_AF_INET | + GETADDRINFO_AF_INET6 | + GETHOSTBYADDR_AF_INET | GETHOSTBYADDR_AF_INET6), + "expected all tests to fail, got 0x%x", failure); + atf_tc_skip( + "no name lookups succeeded, tests require Internet access"); } - hpc = cap_gethostbyaddr(capdns, &ip6, sizeof(ip6), AF_INET6); - if (hostent_compare(hps, hpc)) - result |= GETHOSTBYADDR_AF_INET6; - return (result); + ATF_REQUIRE_MSG(result == expected, + "expected 0x%x, got 0x%x", expected, result); } -int -main(void) +static cap_channel_t * +cap_dns_init(void) { - cap_channel_t *capcas, *capdns, *origcapdns; - const char *types[2]; - int families[2]; - - printf("1..91\n"); - fflush(stdout); + cap_channel_t *capcas, *capdns; capcas = cap_init(); - CHECKX(capcas != NULL); + ATF_REQUIRE(capcas != NULL); - origcapdns = capdns = cap_service_open(capcas, "system.dns"); - CHECKX(capdns != NULL); + capdns = cap_service_open(capcas, "system.dns"); + ATF_REQUIRE(capdns != NULL); cap_close(capcas); - /* No limits set. */ + return (capdns); +} + +ATF_TC(dns_no_limits); +ATF_TC_HEAD(dns_no_limits, tc) +{ +} +ATF_TC_BODY(dns_no_limits, tc) +{ + cap_channel_t *capdns; + + capdns = cap_dns_init(); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME | GETHOSTBYNAME2_AF_INET | GETHOSTBYNAME2_AF_INET6 | GETHOSTBYADDR_AF_INET | GETHOSTBYADDR_AF_INET6 | - GETADDRINFO_AF_UNSPEC | GETADDRINFO_AF_INET | GETADDRINFO_AF_INET6)); + GETADDRINFO_AF_UNSPEC | GETADDRINFO_AF_INET | + GETADDRINFO_AF_INET6)); - /* - * Allow: - * type: NAME, ADDR - * family: AF_INET, AF_INET6 - */ + cap_close(capdns); +} - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); +ATF_TC(dns_all_limits); +ATF_TC_HEAD(dns_all_limits, tc) +{ +} +ATF_TC_BODY(dns_all_limits, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; + + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); families[0] = AF_INET; families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, NULL, 0) == -1); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, NULL, 0) == -1); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME | GETHOSTBYNAME2_AF_INET | GETHOSTBYNAME2_AF_INET6 | GETHOSTBYADDR_AF_INET | GETHOSTBYADDR_AF_INET6 | GETADDRINFO_AF_INET | GETADDRINFO_AF_INET6)); cap_close(capdns); +} - /* - * Allow: - * type: NAME - * family: AF_INET, AF_INET6 - */ +ATF_TC(dns_name_limit); +ATF_TC_HEAD(dns_name_limit, tc) +{ +} +ATF_TC_BODY(dns_name_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 1) == 0); types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 2) == -1); types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 1) == -1); families[0] = AF_INET; families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME | GETHOSTBYNAME2_AF_INET | GETHOSTBYNAME2_AF_INET6 | GETADDRINFO_AF_INET | GETADDRINFO_AF_INET6)); cap_close(capdns); +} - /* - * Allow: - * type: ADDR - * family: AF_INET, AF_INET6 - */ +ATF_TC(dns_addr_limit); +ATF_TC_HEAD(dns_addr_limit, tc) +{ +} +ATF_TC_BODY(dns_addr_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 1) == 0); types[1] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 2) == -1); types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 1) == -1); families[0] = AF_INET; families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYADDR_AF_INET | GETHOSTBYADDR_AF_INET6)); + cap_close(capdns); +} - /* - * Allow: - * type: NAME, ADDR - * family: AF_INET - */ +ATF_TC(dns_inet_limit); +ATF_TC_HEAD(dns_inet_limit, tc) +{ +} +ATF_TC_BODY(dns_inet_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 1) == 0); families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 2) == -1); families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 1) == -1); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME | GETHOSTBYNAME2_AF_INET | GETHOSTBYADDR_AF_INET | GETADDRINFO_AF_INET)); cap_close(capdns); +} - /* - * Allow: - * type: NAME, ADDR - * family: AF_INET6 - */ +ATF_TC(dns_inet6_limit); +ATF_TC_HEAD(dns_inet6_limit, tc) +{ +} +ATF_TC_BODY(dns_inet6_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 1) == 0); families[1] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 2) == -1); families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 1) == -1); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME2_AF_INET6 | GETHOSTBYADDR_AF_INET6 | GETADDRINFO_AF_INET6)); cap_close(capdns); +} - /* Below we also test further limiting capability. */ - - /* - * Allow: - * type: NAME - * family: AF_INET - */ +ATF_TC(dns_name_inet_limit); +ATF_TC_HEAD(dns_name_inet_limit, tc) +{ +} +ATF_TC_BODY(dns_name_inet_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); families[0] = AF_INET; families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 1) == 0); types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 2) == -1); types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 1) == -1); families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 1) == 0); families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 2) == -1); families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 1) == -1); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME | GETHOSTBYNAME2_AF_INET | GETADDRINFO_AF_INET)); cap_close(capdns); +} - /* - * Allow: - * type: NAME - * family: AF_INET6 - */ +ATF_TC(dns_name_inet6_limit); +ATF_TC_HEAD(dns_name_inet6_limit, tc) +{ +} +ATF_TC_BODY(dns_name_inet6_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); - families[0] = AF_INET; - families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); + families[0] = AF_INET6; + families[1] = AF_INET; + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 1) == 0); types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 2) == -1); types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 1) == -1); families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 1) == 0); families[1] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 2) == -1); families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 1) == -1); - CHECK(runtest(capdns) == + runtest(capdns, (GETHOSTBYNAME2_AF_INET6 | GETADDRINFO_AF_INET6)); cap_close(capdns); +} - /* - * Allow: - * type: ADDR - * family: AF_INET - */ +ATF_TC(dns_addr_inet_limit); +ATF_TC_HEAD(dns_addr_inet_limit, tc) +{ +} +ATF_TC_BODY(dns_addr_inet_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); families[0] = AF_INET; families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 1) == 0); types[1] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 2) == -1); types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 1) == -1); families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 1) == 0); families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 2) == -1); families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 1) == -1); - CHECK(runtest(capdns) == GETHOSTBYADDR_AF_INET); + runtest(capdns, GETHOSTBYADDR_AF_INET); cap_close(capdns); +} - /* - * Allow: - * type: ADDR - * family: AF_INET6 - */ +ATF_TC(dns_addr_inet6_limit); +ATF_TC_HEAD(dns_addr_inet6_limit, tc) +{ +} +ATF_TC_BODY(dns_addr_inet6_limit, tc) +{ + cap_channel_t *capdns; + const char *types[2]; + int families[2]; - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); + capdns = cap_dns_init(); types[0] = "NAME2ADDR"; types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == 0); - families[0] = AF_INET; - families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 2) == 0); + families[0] = AF_INET6; + families[1] = AF_INET; + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 2) == 0); types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); + ATF_REQUIRE(cap_dns_type_limit(capdns, types, 1) == 0); types[1] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 2) == -1); types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_type_limit(capdns, types, 1) == -1); families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); + ATF_REQUIRE(cap_dns_family_limit(capdns, families, 1) == 0); families[1] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 2) == -1); families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); + ATF_REQUIRE_ERRNO(ENOTCAPABLE, + cap_dns_family_limit(capdns, families, 1) == -1); - CHECK(runtest(capdns) == GETHOSTBYADDR_AF_INET6); + runtest(capdns, GETHOSTBYADDR_AF_INET6); cap_close(capdns); +} - /* Trying to rise the limits. */ - - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); - - types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); - families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); - - types[0] = "NAME2ADDR"; - types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); - families[0] = AF_INET; - families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); - - types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); - families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); - - CHECK(cap_dns_type_limit(capdns, NULL, 0) == -1 && - errno == ENOTCAPABLE); - CHECK(cap_dns_family_limit(capdns, NULL, 0) == -1 && - errno == ENOTCAPABLE); - - /* Do the limits still hold? */ - CHECK(runtest(capdns) == (GETHOSTBYNAME | GETHOSTBYNAME2_AF_INET | - GETADDRINFO_AF_INET)); - - cap_close(capdns); - - capdns = cap_clone(origcapdns); - CHECK(capdns != NULL); - - types[0] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 1) == 0); - families[0] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 1) == 0); - - types[0] = "NAME2ADDR"; - types[1] = "ADDR2NAME"; - CHECK(cap_dns_type_limit(capdns, types, 2) == -1 && - errno == ENOTCAPABLE); - families[0] = AF_INET; - families[1] = AF_INET6; - CHECK(cap_dns_family_limit(capdns, families, 2) == -1 && - errno == ENOTCAPABLE); - - types[0] = "NAME2ADDR"; - CHECK(cap_dns_type_limit(capdns, types, 1) == -1 && - errno == ENOTCAPABLE); - families[0] = AF_INET; - CHECK(cap_dns_family_limit(capdns, families, 1) == -1 && - errno == ENOTCAPABLE); - - CHECK(cap_dns_type_limit(capdns, NULL, 0) == -1 && - errno == ENOTCAPABLE); - CHECK(cap_dns_family_limit(capdns, NULL, 0) == -1 && - errno == ENOTCAPABLE); - - /* Do the limits still hold? */ - CHECK(runtest(capdns) == GETHOSTBYADDR_AF_INET6); - - cap_close(capdns); - - cap_close(origcapdns); - - exit(0); +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, dns_no_limits); + ATF_TP_ADD_TC(tp, dns_all_limits); + ATF_TP_ADD_TC(tp, dns_name_limit); + ATF_TP_ADD_TC(tp, dns_addr_limit); + ATF_TP_ADD_TC(tp, dns_inet_limit); + ATF_TP_ADD_TC(tp, dns_inet6_limit); + ATF_TP_ADD_TC(tp, dns_name_inet_limit); + ATF_TP_ADD_TC(tp, dns_name_inet6_limit); + ATF_TP_ADD_TC(tp, dns_addr_inet_limit); + ATF_TP_ADD_TC(tp, dns_addr_inet6_limit); + + return atf_no_error(); } From nobody Thu Apr 6 15:07:05 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGL2csdz44SQW; Thu, 6 Apr 2023 15:07: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 4PslGL0tJvz4M7J; Thu, 6 Apr 2023 15:07:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793626; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c3X42z0Hr71T9gThmuyA4BXaaA8yT25x8mK0l2u8mkc=; b=rb+KKMf5N46UeMlANAuH+q1+7gc8Ww6plfvB0Exr12OZHN7zt6h7tGtMinH315y+8e3CKr DwUfKaD9mK+SbjoOxMqnO7kb+Z3gz59Onwr2qlDR7vSt/RAAwaZIwAQ1BwX4qSi5P4G8vp qHkUCctlMnO/UeM9Lean0cP7mWUTctFoSjLrz2vYAZjXoKLR5rRhhsAeg9YL4H42tagcUm lRzCCclsDQ2DGTsEUEhxpRseNEJh9pZhKc8PeIh6ipx5p4CX8YzLV6M/GH19a4LWmw9FVM LCkaLCmQFjDQwTuxFG3Qt0O/9gkkignFDsbqQq+38MUfLD4tdEqQDaRXNcB9eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793626; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c3X42z0Hr71T9gThmuyA4BXaaA8yT25x8mK0l2u8mkc=; b=eN4Og6FNnDztLLwNwS17EmYNRXlR4BWnyX9etr7l3enMDBROuFH6qqMfcI/f/CK1rlgxM1 okRViWbhTiOxlAlf3rVZyO53s5bnnXiJ0PsIp7INESiQ2vSBwSpUVFvREYVJx5Wbbs9NiO HmVr8gJ/Cl+pZtDNehAoQtJh0GemSdWdMoIjhuJ7FoKputYc9BY1rNhcr6wVGep/XANGFq qoAcgLGL0XRgNCNMVLacws2zDchjQT65zrNjY/2RY44RMdaKc4GImqpwTshQXdulIqdAif Twm2TnIKrVX/eG9ZKyKADJHfiRRuwQBlTPKj4X+vFt7ScsOW6lL2tBheJFPItw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793626; a=rsa-sha256; cv=none; b=ju6ChKF/Ewv1vLelTVkF40tIh82itcYGP54ehMMXFnyFPksdBANE4jxoKQSJ+HMNU7m61x JfQQihAWPqVwHa4Rhhe4IBvb0wbKGPVo6UOVm5VTQOR0I1Q4KIrOYcDTjF4j2YwPG535X8 jGm7VVWaBC52DesPL0RUjzLwZf7b9yWhlKf4mHCGHznpHDkejpqGMlEcXbt/SF3zbDiU06 Hg/mP18yx7ZYo7atyYSxu4xoV5UQOpYjH8+Wo9RkVkPS+q0ld2VpPcKsqyqJwQ0ekesaXI U5WH3Vvst0xA/IpBHl/6v36k8yigIXLXqQ/oc++4p5nQk/r7d2gZF1kxiEUegg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGK6zQrz186W; Thu, 6 Apr 2023 15:07: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 336F75eN014842; Thu, 6 Apr 2023 15:07:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F75Qf014841; Thu, 6 Apr 2023 15:07:05 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:05 GMT Message-Id: <202304061507.336F75Qf014841@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: f6b47fe69528 - stable/13 - aio tests: Use unique names for zvols List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: f6b47fe695289ca56cc17664e6911e0c0f8814f4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=f6b47fe695289ca56cc17664e6911e0c0f8814f4 commit f6b47fe695289ca56cc17664e6911e0c0f8814f4 Author: Mark Johnston AuthorDate: 2023-03-25 19:41:07 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 14:57:40 +0000 aio tests: Use unique names for zvols Otherwise tests which create zvols cannot be run in parallel. MFC after: 1 week (cherry picked from commit 9cefc0fb1387f6c5b0954e875b14e596167c9a45) --- tests/sys/aio/aio_test.c | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/tests/sys/aio/aio_test.c b/tests/sys/aio/aio_test.c index 0c919da739e9..d7ee875f0991 100644 --- a/tests/sys/aio/aio_test.c +++ b/tests/sys/aio/aio_test.c @@ -974,11 +974,12 @@ ATF_TC_CLEANUP(md_waitcomplete, tc) #define ZVOL_NAME "aio_testvol" static int -aio_zvol_setup(void) +aio_zvol_setup(const char *unique) { FILE *pidfile; int fd; pid_t pid; + char vdev_name[160]; char pool_name[80]; char cmd[160]; char zvol_name[160]; @@ -987,40 +988,44 @@ aio_zvol_setup(void) ATF_REQUIRE_KERNEL_MODULE("aio"); ATF_REQUIRE_KERNEL_MODULE("zfs"); - fd = open(ZVOL_VDEV_PATHNAME, O_RDWR | O_CREAT, 0600); + pid = getpid(); + snprintf(vdev_name, sizeof(vdev_name), "%s", ZVOL_VDEV_PATHNAME); + snprintf(pool_name, sizeof(pool_name), "%s_%s.%d", POOL_NAME, unique, + pid); + snprintf(zvol_name, sizeof(zvol_name), "%s/%s_%s", pool_name, ZVOL_NAME, + unique); + + fd = open(vdev_name, O_RDWR | O_CREAT, 0600); ATF_REQUIRE_MSG(fd != -1, "open failed: %s", strerror(errno)); ATF_REQUIRE_EQ_MSG(0, ftruncate(fd, POOL_SIZE), "ftruncate failed: %s", strerror(errno)); close(fd); - pid = getpid(); pidfile = fopen("pidfile", "w"); ATF_REQUIRE_MSG(NULL != pidfile, "fopen: %s", strerror(errno)); fprintf(pidfile, "%d", pid); fclose(pidfile); - snprintf(pool_name, sizeof(pool_name), POOL_NAME ".%d", pid); - snprintf(zvol_name, sizeof(zvol_name), "%s/" ZVOL_NAME, pool_name); - snprintf(cmd, sizeof(cmd), "zpool create %s $PWD/" ZVOL_VDEV_PATHNAME, - pool_name); + snprintf(cmd, sizeof(cmd), "zpool create %s $PWD/%s", pool_name, + vdev_name); ATF_REQUIRE_EQ_MSG(0, system(cmd), "zpool create failed: %s", strerror(errno)); snprintf(cmd, sizeof(cmd), - "zfs create -o volblocksize=8192 -o volmode=dev -V " - ZVOL_SIZE " %s", zvol_name); + "zfs create -o volblocksize=8192 -o volmode=dev -V %s %s", + ZVOL_SIZE, zvol_name); ATF_REQUIRE_EQ_MSG(0, system(cmd), "zfs create failed: %s", strerror(errno)); snprintf(devname, sizeof(devname), "/dev/zvol/%s", zvol_name); do { fd = open(devname, O_RDWR); - } while (fd == -1 && errno == EINTR) ; + } while (fd == -1 && errno == EINTR); ATF_REQUIRE_MSG(fd != -1, "open failed: %s", strerror(errno)); return (fd); } static void -aio_zvol_cleanup(void) +aio_zvol_cleanup(const char *unique) { FILE *pidfile; pid_t testpid; @@ -1035,7 +1040,8 @@ aio_zvol_cleanup(void) ATF_REQUIRE_EQ(1, fscanf(pidfile, "%d", &testpid)); fclose(pidfile); - snprintf(cmd, sizeof(cmd), "zpool destroy " POOL_NAME ".%d", testpid); + snprintf(cmd, sizeof(cmd), "zpool destroy %s_%s.%d", POOL_NAME, unique, + testpid); system(cmd); } @@ -1814,7 +1820,7 @@ ATF_TC_BODY(vectored_unaligned, tc) * Use a zvol with volmode=dev, so it will allow .d_write with * unaligned uio. geom devices use physio, which doesn't allow that. */ - fd = aio_zvol_setup(); + fd = aio_zvol_setup(atf_tc_get_ident(tc)); aio_context_init(&ac, fd, fd, FILE_LEN); /* Break the buffer into 3 parts: @@ -1863,16 +1869,17 @@ ATF_TC_BODY(vectored_unaligned, tc) } ATF_TC_CLEANUP(vectored_unaligned, tc) { - aio_zvol_cleanup(); + aio_zvol_cleanup(atf_tc_get_ident(tc)); } static void -aio_zvol_test(completion comp, struct sigevent *sev, bool vectored) +aio_zvol_test(completion comp, struct sigevent *sev, bool vectored, + const char *unique) { struct aio_context ac; int fd; - fd = aio_zvol_setup(); + fd = aio_zvol_setup(unique); aio_context_init(&ac, fd, fd, MD_LEN); if (vectored) { aio_writev_test(&ac, comp, sev); @@ -1898,11 +1905,11 @@ ATF_TC_BODY(vectored_zvol_poll, tc) { if (atf_tc_get_config_var_as_bool_wd(tc, "ci", false)) atf_tc_skip("https://bugs.freebsd.org/258766"); - aio_zvol_test(poll, NULL, true); + aio_zvol_test(poll, NULL, true, atf_tc_get_ident(tc)); } ATF_TC_CLEANUP(vectored_zvol_poll, tc) { - aio_zvol_cleanup(); + aio_zvol_cleanup(atf_tc_get_ident(tc)); } ATF_TP_ADD_TCS(tp) From nobody Thu Apr 6 15:07:07 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGM5zQHz44Scq; Thu, 6 Apr 2023 15:07: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 4PslGM2Bf8z4MJp; Thu, 6 Apr 2023 15:07:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793627; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=t2yGtKHNdrFChz8pib0J63pY9sqms8LW+eWIfaJLs+o=; b=jzM/BZHpfUGL6RmcwMgzCU74G95RxrUZ8f0FsBA10SpOu+sPR7SV588y0CoCsTg46PHAun km5pY2Tq6mIC8yl39mqi+esSc4cPWfWwHH8AIU2dT2BePJ8KDdLVIhVNx1kchxoHDd0Bbs B87qkhUq/yCguOqobo8B7RHvwSReXLEOTI8RdpjbsS6D4mZMjWSFnBb9lZWPr5Pnfze8dS iU04pEMU/j3y0rJVCxAKGlATaGSEyJClqFmyOrR3Zyf7j54Qwt8whbVzzz8ujP3uK/KoUG yX6YEspQpGuen6ke+3690Pbb5nMet/j14jCv236VCQCj28hXx74ErFVKpspv6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793627; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=t2yGtKHNdrFChz8pib0J63pY9sqms8LW+eWIfaJLs+o=; b=wmZxlWZWy2p7ieobHIQXLXmmoJJTu7mXSB4HGl1lTW3Yp4GHgpF8CwGz6KDzABkQtLGm/k VidfJjKhjTN5pnEBBOfQunp13xo5Y7+JDdsZKgg6sgHJNN1TPvc/BkgjUuQohnp8jfFf7h nZXzKaEGc6tBdUHo96g8U3d83n0N7VNY+UpMcIfCDF5jQMn8MajKNO5svhVqh5AF+UJdM/ FGoma7F7JcdVcn7GGM5wYcJ2ykLfCkMPjIW+Iiu6Um5Jk+BfNon9LkXgbtRMdqA6pW86sy SHmbgrctxt3iyHHrDR4Z5yv0tqQ1BLVoiXYXl5s+ytFmDEEIoU3gPkcL/7tHNg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793627; a=rsa-sha256; cv=none; b=gMPdCtSicKD5qRsYyDrnQkbZT1RJIJ1sZvByLu457DuaUQIONnjMm4H05YofZEKsz3kKdf hK7EhxLb837TthsDpzglUyWSpJthGWaIH9CGJBkSGcNkDJu9kJ7Vi10ftwUrm1r9OFQbiP metm9b8YzgzDSGIrJlkdReKar4+VeWwSfUuq2yJmWebshpi8d96ylm2mVH+ML1RvNQf+Lh Za9h2IwZ1tCGVqO8ejU9Bha7gYZplEmZJkeVLCNlFUWO9uyBmOQjJMp7DwVqkRcbAkkYum +EtsjBlLD/lpb/6QAqUII4mauUpfkwF4YRBrmBTSrggePLcXlCcD/Q005IsYOA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGM0bZ1z17vT; Thu, 6 Apr 2023 15:07: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 336F77JY014863; Thu, 6 Apr 2023 15:07:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F77nP014862; Thu, 6 Apr 2023 15:07:07 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:07 GMT Message-Id: <202304061507.336F77nP014862@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: 64d84e49f4b6 - stable/13 - netpfil tests: Serialize List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 64d84e49f4b64c45ecbc0e942d2ba5a00e409818 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=64d84e49f4b64c45ecbc0e942d2ba5a00e409818 commit 64d84e49f4b64c45ecbc0e942d2ba5a00e409818 Author: Mark Johnston AuthorDate: 2023-03-30 15:20:01 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 14:57:49 +0000 netpfil tests: Serialize These tests reuse jail names and so cannot run in parallel. MFC after: 1 week (cherry picked from commit cdb192434cbc6449778888a73c7bdbe2ae94c3c8) --- tests/sys/netpfil/common/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/sys/netpfil/common/Makefile b/tests/sys/netpfil/common/Makefile index 189b8b44cfce..5ea3e7d9b687 100644 --- a/tests/sys/netpfil/common/Makefile +++ b/tests/sys/netpfil/common/Makefile @@ -13,6 +13,9 @@ ATF_TESTS_SH+= \ fragments \ forward +# Tests reuse jail names and so cannot run in parallel. +TEST_METADATA+= is_exclusive=true + ${PACKAGE}FILES+= \ utils.subr \ runner.subr \ From nobody Thu Apr 6 15:07:08 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGN5rKMz44SKb; Thu, 6 Apr 2023 15:07: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 4PslGN2cL9z4MGd; Thu, 6 Apr 2023 15:07:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=w9kfurILed202WY9/OE6DZTjAFqvvYubBtXux6NoFG4=; b=bi5eMHr2l6Ty6pwOFcD101WbZsHuEifaVKQARxghDM1C4gQiQaBe/6oMh9arGEpsnZLZA3 +ig11VaLownK5qkNXBjribMD3wGw5zQzgxhukhs6yfHC98r9qTolCyl7WrsPnvAOmHufnw QFR4UGUflN0gNSr1KDNH17UrClrLwHzM7IdI8vNSMYtx6hULSKUQc+81Ob78X+ifccP5Qy lfbQ9KcmkSHwYNNNxfvC97Fkm84tFQMZBTIossf586AorjEbfJWacZIeQNdN7/BVexHaw6 23n9lVxUmiLGuORVwtmOilc9DdcZRgwy9MRPLs4STi3rNopVilq+RFAT7acyvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=w9kfurILed202WY9/OE6DZTjAFqvvYubBtXux6NoFG4=; b=KicFLFUU8rGVPITCqiB7QsLfzbeVImXAZMgS94OoWcj7VVDoq4vkauk+CIQ1ZT/OBfNmsx 7LHz1uIeWHB+3DYqzVKcQoNcdHRVtZoBMaZASvVuc0Vhev9xdNN6xKWgaN9vSyOA5SqwED ufzSHn7J7KrSg5XT56wG4p2SwnYzO2SC53Dj3D0sbDeo5txQlzFQ5vsc+aCJno6/9b+qIy ZNnRZ5XjH+bbe+cO/UwjC0JPcCXuhSz7byLaYdBrfbwn4JC/jrb3E818lqMAa3gtU0bdCo 0K8AcOK3h5mFfloDp9qGNnZG7y+xy4R+e6oqvoenbETLUx/GXJw2LFfR1hu1Ng== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793628; a=rsa-sha256; cv=none; b=uwmBjxknsEjNzD9SF7cwSIlSV3rBQHuvdl0y0Ku6bXjVghxcXRE1rsYGgvwpyMcu4uxnJU uFs/UYVQMWsV3EkLKCIy8Qa4p9CboKpzC/fz/q0+RzgKdwcI5zMLG1YT6QHDi5gyVw6ly5 sfNGeDeSFzP9qQYwl0R1Tmcz3FrepbSrmDT4LlSQfujwe3KaiG59lBjMJ7W8R1+6/odRvd N0XXydgI/AuMSOTOgr9G3T7RrGP8nLYD0ig+91+O1hPVtooe5HecpWOaUJYB581uJ9Ag73 h2Tidn6mPh3gy4sFI7qC8OvTwfqdMkMm83oaKvAaQdOuWFp4WbMl1ImWFE+lSQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGN1jVKz17cj; Thu, 6 Apr 2023 15:07: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 336F78su014888; Thu, 6 Apr 2023 15:07:08 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F78sM014887; Thu, 6 Apr 2023 15:07:08 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:08 GMT Message-Id: <202304061507.336F78sM014887@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: e4074bfb2808 - stable/13 - pf tests: Serialize List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: e4074bfb280877054771d0d89e9bb72d2ec8db9a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=e4074bfb280877054771d0d89e9bb72d2ec8db9a commit e4074bfb280877054771d0d89e9bb72d2ec8db9a Author: Mark Johnston AuthorDate: 2023-03-25 12:55:41 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 14:57:57 +0000 pf tests: Serialize These tests reuse jail names and cannot run in parallel. Until this is fixed - which is desirable since these takes take a while to run - tell kyua to serialize them. MFC after: 1 week (cherry picked from commit b60600ceeb68d1001d61222830e0be3441ef0885) --- tests/sys/netpfil/pf/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/sys/netpfil/pf/Makefile b/tests/sys/netpfil/pf/Makefile index a5d3e30ca22e..d0a17ec40f43 100644 --- a/tests/sys/netpfil/pf/Makefile +++ b/tests/sys/netpfil/pf/Makefile @@ -33,6 +33,9 @@ ATF_TESTS_SH+= altq \ table \ tos +# Tests reuse jail names and so cannot run in parallel. +TEST_METADATA+= is_exclusive=true + ${PACKAGE}FILES+= CVE-2019-5597.py \ CVE-2019-5598.py \ echo_inetd.conf \ From nobody Thu Apr 6 15:07:09 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGP4pJ6z44Shf; Thu, 6 Apr 2023 15:07: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 4PslGP3md4z4MCR; Thu, 6 Apr 2023 15:07:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793629; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BV26h4k8ZgMBpRQmDc6E5lQxZ904cs0+spBFugFouRA=; b=xEyer2J93zUAz5Pw6HgQitQbc9+B4C37LddVMuaxkQwvb7wI0RF2RDBAjQryg37MtZeNw7 kPx2J+Sag3jys74k3BZZB43uVBCfG5dIJj7NpBtvt8NXd41B3wdGd28sorkANnZYgTS6DX miQMC4nzZ12eHb+yJmx+qh6oU9ukQrC3O4nAD6RpExsxWhSRWCHcH/MYaCyiswLNCPeysO 5wgZq3Fw9ZxctBBbFHUsy0IZGLuOJwj4CWkVFHVafXz/lzgyZQPVvnyuELE7CNN3DJNzSq MovI8k1FuvgAC64Yj4yP8V+j7j5NcBUzKCWDjv+RXR2Vpf1MiqUOdLZwOFP3pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793629; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BV26h4k8ZgMBpRQmDc6E5lQxZ904cs0+spBFugFouRA=; b=RbZaUFplvGmEeN5lDnj4tQZrin0yJhfWyGu9RhY2vy5mJtSKsFCkW2LZMX6Ss6K935snyE CG2Cle7dDVAIuXkmbH9pNqVQscCD3JThHd2K9v7UVKLBS6UBS3/4rjlMmYgekGPzP59PrQ 7nohNDcf36NbSLG7TSq7WoYDIu9oUZXShKKALSXi5ooHfQQKWZn3KA5lDgPzC1YWacMDD6 gOADq1/zxSf0JJZJ2tMjAGJc49zoHFM17SwqpMNJa3LoHqAig+JrwX8Iq/cO6/iy0JnWkG f3Ik7kmUPCRT3/FO35CqW2u9swuPaYfXVeRmr2aR89iyjprKzQZzQSz+U4e0KA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793629; a=rsa-sha256; cv=none; b=IAIAutlp1wE193Lo7QdmfWws2SAOzaqChdKmBjbtQHHyIgNTt9gUEHhUc0WoUxHTdvZfc/ bv6eV3Ks2yncznywt2slRIjGirmi6JccWu0dyMuvINgWNZUQPQUq7+X65zrvd5NL6T62fl vOWXY+AdCY9JnUV5oRS3GnPjJ5tqwR6eiLDl+Sf7x/2hasdal4w6xWrWRXhf6TZzw5Qy/D +c60uGVoA4nJlCzc//SGfU3DOQUb9CjrlpI6QaaWma0fAGGQsBZXpqv0yT9qPDDTn86CRB eR8hg7RhEZGKwySQCm1z/8T6NRNHoSZhCix/0ueWarKZcWVE2rMVxXUvwui1Wg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGP2QZcz17gF; Thu, 6 Apr 2023 15:07: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 336F79xK014907; Thu, 6 Apr 2023 15:07:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F79GG014906; Thu, 6 Apr 2023 15:07:09 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:09 GMT Message-Id: <202304061507.336F79GG014906@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: d84d733edc0b - stable/13 - fdgrowtable tests: Address a set-but-not-used warning List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: d84d733edc0b48f809cc25a96e5bb234138e3783 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d84d733edc0b48f809cc25a96e5bb234138e3783 commit d84d733edc0b48f809cc25a96e5bb234138e3783 Author: Mark Johnston AuthorDate: 2023-03-30 17:53:48 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 14:58:05 +0000 fdgrowtable tests: Address a set-but-not-used warning MFC after: 1 week (cherry picked from commit 889b5662ce06ad01f87f1e501dc56c7bc50bbf9b) --- tests/sys/kern/fdgrowtable_test.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/sys/kern/fdgrowtable_test.c b/tests/sys/kern/fdgrowtable_test.c index 794342eaa808..023a25ffe5e6 100644 --- a/tests/sys/kern/fdgrowtable_test.c +++ b/tests/sys/kern/fdgrowtable_test.c @@ -233,6 +233,7 @@ ATF_TC_BODY(oldtables_shared_via_process, tc) /* get current status of child */ wpid = waitpid(child, &status, WUNTRACED); + ATF_REQUIRE(wpid == child); /* child should be stopped */ ATF_REQUIRE(WIFSTOPPED(status)); @@ -254,6 +255,7 @@ ATF_TC_BODY(oldtables_shared_via_process, tc) /* child should have exited */ wpid = waitpid(child, &status, 0); + ATF_REQUIRE(wpid == child); ATF_REQUIRE(WIFEXITED(status)); ATF_REQUIRE(WEXITSTATUS(status) == 127); } From nobody Thu Apr 6 15:07:10 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PslGQ5pwhz44Shh; Thu, 6 Apr 2023 15:07: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 4PslGQ4fWfz4MHK; Thu, 6 Apr 2023 15:07:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R0cFBlVQCe6dxr4ejpFLrpuFyGQ+B3Wmjtt9JvYvMj8=; b=i8NO6Y5vntSKio/2L1CSa2dJXuak80V4ZHTiPIjUpp8UwEkBMWK62+kbqWfUB8XX6ehTGz ARII7MeaoBSzeQjCwPLboiJyr5UYS/AGRFRfVsYpJpMUTg81dEglJXVwjr2lRYNOjFpOTU I+9FI/xsx2YWHcbshFZ/oS93KYYsMYys5DyVMwwj3NpfowNTZwGVYEKvG3l+BsiM47SEYq F+ccdDy+LRQXvIK+/51BPbJhwG6S56dEA/Hd+MA95JhoAgZAfU9Nr2c2xX1MDzbRVsmlgW AY3Mvz1HoSXSwdsp7Qm55ZmMcY0+SLtPfbWVAOaEnvy8jQMVjKhsLAqv9nVY/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680793630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=R0cFBlVQCe6dxr4ejpFLrpuFyGQ+B3Wmjtt9JvYvMj8=; b=BmgtrtkmjxNANaQpy3d11Uuarl7eciQvfAxw2PXUjCE1+Ef9/XGxjj8UG2uY5gckKTvnl3 mnW7GBznO+QgyApzbfXH1Mb2w8Twtbkf1czJ/t4RSAnWm/FqsIByHNygIOPTm796YCiGdK PEM4Zvy132AfFnVdYd55djNqJIDNdPj3M2EYlEoq/A481ZrQ2N/3EWiUEP1QdrzRMX9Uk+ nrG5cxYRGImSqXpQPA8TgE84kIh5oYvVQjUgPRaIrYyUGIVD5nXcwm7AJjo/nPr6LfKx27 EtKHmLog53MQazOKVS+Jkx6KmF2L73qL2OJDZpUTRxqQV1QPhGnXGXV6EsNgpQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680793630; a=rsa-sha256; cv=none; b=Q9Kbe+aS8Hltq7x1uLRgnO59OKjfXjyQXt1SbhONnEGUpMmc3NtP2kjUabkyWdzrO3jFjh ihnBQmlmzOQJ0IUiVIAU6d4UKLJ0eAIsREfeTe6K/KmSBMp0u1dh3CCUF904ncwVCUEiQd bc8LMcJNL18w89y4uPU+fj7ugv8K+9pZxBQM4YVeaKbfWSw1aBvKJYcD7Mx4e2EwJwdVb8 m/2X0600xb8vwRme+s8yCoMj/is1YMBdTfrKlLNcBhMaltkzaX354MdKUvV/hlD0L6QUAC 8NB+hpALrm/+e2wcCTJUReq6DCiYnTnpEle/osjkuLvPCrj0CzCKWuxen+aYnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PslGQ3QNXz17p3; Thu, 6 Apr 2023 15:07: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 336F7ARs014932; Thu, 6 Apr 2023 15:07:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336F7Ad5014931; Thu, 6 Apr 2023 15:07:10 GMT (envelope-from git) Date: Thu, 6 Apr 2023 15:07:10 GMT Message-Id: <202304061507.336F7Ad5014931@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: 5cec4958142b - stable/13 - acl tests: Serialize List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 5cec4958142bc08847dc72a2808f8f927cfc8f70 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=5cec4958142bc08847dc72a2808f8f927cfc8f70 commit 5cec4958142bc08847dc72a2808f8f927cfc8f70 Author: Mark Johnston AuthorDate: 2023-03-25 19:09:48 +0000 Commit: Mark Johnston CommitDate: 2023-04-06 15:06:55 +0000 acl tests: Serialize Some of these tests import a ZFS pool with a hard-coded name, so they cannot run in parallel. MFC after: 1 week (cherry picked from commit 34b696e41259e41ae3ac61a539bd152d3afb73ae) --- tests/sys/acl/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/sys/acl/Makefile b/tests/sys/acl/Makefile index bd548f06951e..0b1ab2ca7277 100644 --- a/tests/sys/acl/Makefile +++ b/tests/sys/acl/Makefile @@ -21,7 +21,9 @@ TAP_TESTS_SH+= 03 TAP_TESTS_SH+= 04 .for t in ${TAP_TESTS_SH} -TEST_METADATA.$t+= required_user="root" +# Tests hard-code a ZFS pool name of "acltools" and so cannot run in parallel. +TEST_METADATA.$t+= required_user="root" \ + is_exclusive=true .endfor _ACL_PROGS= getfacl setfacl From nobody Thu Apr 6 18:04:29 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsqC14Kvdz44fDl; Thu, 6 Apr 2023 18:04: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 4PsqC13hLcz3QSv; Thu, 6 Apr 2023 18:04:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680804269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PZayuOCxMIZZU+/aKXv/JjbppSs++m1dIFMt8kWIKv0=; b=REzM1+26vVWNyzk51dhBP8s+UutMaG9Zg+asus1t8R7RKKC8TsXQYoDcLuQiheL7JcUcxh TEfbJjSrdm07HV9sMx3UfQftcuHAxE9N/dZXOTDYXZ8Vev+EZ4iGib6xByC8DHfdCxRJaI gff9q+vPkHJuT44uoEqiNAJHrQ2BsL9eQ2xbHLIzC93tOTmSzcQCbclg69KECzylUHet3S 95cfU468SzdjsSQFF4kfCOwfhRBkS/XqgPgyOcXKcfHpAemFxjkCun/rqpohMqDdy5wbOF /sd/8S9UWiJc/jjsCcGbG89JrHgh741P3brxwzAz4ZmNOcRgcjs+5uBHMydf5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680804269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=PZayuOCxMIZZU+/aKXv/JjbppSs++m1dIFMt8kWIKv0=; b=S5QGTtZFhfAo2McDrOZnJpck1vYZFWnQFbxqngmO5WhocyEFXPXS8GaTq9nTfpp7K8ygPu SPV0KkdDyCFfHOrV2xK+MtQpVuuXGJ7N6hnrWK68++g3BUCKvu6Ni9TKOItQi5m4rMgtPG 9PECzhMxUqwhLbS3adDSikQ4QK5gPIrgiMBfiUYjXLPBQZiCdp8K1cJ/esQjuqCsqAizTc URu0rRJwrWhV9BjVL3oUhbzeELuRERLPud1hmSrRgHReHdQz2CA66wy2r9XP3JapHGjyrh EcQTDXbwp22VcJGk6Z2GIWvKUtGG9uUNwqxyiBVZi+Id5DI33iskqsd5EWOsJw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680804269; a=rsa-sha256; cv=none; b=iyRMQGsimxvB7bCTNm6D67wJVHVajriMEQupkPxNvLmSVSPwSEVyqdg82p+q2SKahRhCdI l1tXcqTdpKfuAP+5luyYnlfaje0c/pxZc56bFI4TA+umjrzAmaz4X0FQajuuM35skCDHrB A4qz6t75kb8ISuro/1+FGx/ZaxkCacD64H79aK2KQRlJAGC/vTIklyk9wvEfyQEB8GmeNG 985jPYKC9nhDnk4m4axt6g+gbIl/UrAERclk/swjZh8pnHmME2WygXyij22D+rxJ1Gt5fu NEIx/K8sJUK7Lwu3RJS7rZ3hnlU4EGX0n9m22UEkWl4PTfLTpoeKuuKE1d+AMQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsqC12mvGzF7V; Thu, 6 Apr 2023 18:04: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 336I4Tni010676; Thu, 6 Apr 2023 18:04:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336I4T6Y010675; Thu, 6 Apr 2023 18:04:29 GMT (envelope-from git) Date: Thu, 6 Apr 2023 18:04:29 GMT Message-Id: <202304061804.336I4T6Y010675@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: 74aa6df1f63d - stable/13 - fdesc_lookup(): no need to vhold the dvp vnode List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 74aa6df1f63d1c92a959e7c6bb9395e6f153cb5d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=74aa6df1f63d1c92a959e7c6bb9395e6f153cb5d commit 74aa6df1f63d1c92a959e7c6bb9395e6f153cb5d Author: Konstantin Belousov AuthorDate: 2023-03-22 13:36:00 +0000 Commit: Konstantin Belousov CommitDate: 2023-04-06 18:04:09 +0000 fdesc_lookup(): no need to vhold the dvp vnode (cherry picked from commit 8d97282a394278d29883e7afa98ed6294efab35e) --- sys/fs/fdescfs/fdesc_vnops.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index 81b6690efc80..ae52ef5c3bea 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -374,13 +374,11 @@ fdesc_lookup(struct vop_lookup_args *ap) * In case we're holding the last reference to the file, the dvp * will be re-acquired. */ - vhold(dvp); VOP_UNLOCK(dvp); fdrop(fp, td); fdropped = true; vn_lock(dvp, LK_RETRY | LK_EXCLUSIVE); - vdrop(dvp); fvp = dvp; if (error == 0 && VN_IS_DOOMED(dvp)) error = ENOENT; From nobody Thu Apr 6 18:04:30 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsqC26wpdz44fZ4; Thu, 6 Apr 2023 18:04: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 4PsqC24dtnz3QmG; Thu, 6 Apr 2023 18:04:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680804270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MCdvQXWeBz8mDommawTXe1NvDHka+mkm+D0Seu7la+g=; b=bpvj0J45hRW/pgkt1luKAdoreGgf9JOQeWDg4GazFFa9MZxiRTw5oZYhyfeltOFJVyeiTa vFeobSu4t8EWCS8G/AYwN6qhH//wl1n8GzILGOLwSEgFzHWhxGFuZXhtFyo/QNRs9p7hrl kJj88S26tK3ODFnwnMBWdOC13G9LZdNABVbYx5r9dc230XURdgUrNhiQJN70F7+3Sg+LV3 VYvwlDFcIZvv6Lz9GifANPVWHIMJfbzfZMTPqpvzGw8vrnF0UQ0Rln7U0mn4eISNVIOFMm rL+kCmGLqQOrWcrx+IqcLheAdFhvUB6sd07qtmPcu6Xygp1S7oj3h9tlZ05jJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680804270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=MCdvQXWeBz8mDommawTXe1NvDHka+mkm+D0Seu7la+g=; b=qxEjlVBgOyefYOI+T0r2iAxEcpZunWAmaf4tHud69X6FFTktT4NZJgXdrq0wl/TYE+mnSp Ly9CB7XEjqBGfsif7EZH9pe+AvBUG6ETYD1LOryLdpN4/FBsUo0w4Jaf7VL8lFg/nie4pG jm4A8cD2MczkG2g4VrmTaFse5ytN11lJZTcgpI1kIMlr3CUdE0Aeiqh3vfdHpHI6cxfGgQ VE7XVYhbGC+eNrDdUrTuMopJI+wUDebwLAyBwFDx+I6LL96NuSW+OGc57ycQH506ivuyOC jTz8NwgD1RfrV2uHCBfS7Bgl472m2VnQO/a45PlHtyrcp1IGXfefnAloXVudlg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680804270; a=rsa-sha256; cv=none; b=LM8utH+IHPNXYvGlfTMdXUfiy31k9VT2kGwUyxKZNHjM+/3SApBGJMs5wrOuxKP2LmUWuR LhrQvwYoQYsbg5x+PbyHL6/83HBzaepNu1FHZGCD/xGWgW6plujGb5AFPxZtRTwwQUJxbR dIlpqmsgkxS84VbJn4DLY9b1u/reld6GZYS4uKa7SiPJ2eScALIXyl7RT76kMn1YFwZHv/ gv5+xFgmYmpoMM/44iJgDlObgQ81w2qHE3vv93DS70FYoEhh5bsosjdCF4ia8RzM1MKFsw 7fMBx6vN9P9kQ6ICQAvIo+dTOFcUg4ITfe8qMzSAQWQQP38gbcOC6wQuqYYTKA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsqC23fMGzDvp; Thu, 6 Apr 2023 18:04: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 336I4UXi010703; Thu, 6 Apr 2023 18:04:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 336I4UMt010702; Thu, 6 Apr 2023 18:04:30 GMT (envelope-from git) Date: Thu, 6 Apr 2023 18:04:30 GMT Message-Id: <202304061804.336I4UMt010702@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: c5adb35ede60 - stable/13 - fdesc_lookup(): the condition to use vn_vget_ino() is always true List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: c5adb35ede6018f56697dcf9f30f701922fe3ca0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=c5adb35ede6018f56697dcf9f30f701922fe3ca0 commit c5adb35ede6018f56697dcf9f30f701922fe3ca0 Author: Konstantin Belousov AuthorDate: 2023-03-23 19:28:08 +0000 Commit: Konstantin Belousov CommitDate: 2023-04-06 18:04:10 +0000 fdesc_lookup(): the condition to use vn_vget_ino() is always true (cherry picked from commit 7dca8fd1cb3f91e7a3c07b7f57af6d9d43d0c71c) --- sys/fs/fdescfs/fdesc_vnops.c | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index ae52ef5c3bea..e8aa9f81dc2e 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -348,26 +348,24 @@ fdesc_lookup(struct vop_lookup_args *ap) goto bad; fdropped = false; - /* Make sure we're not looking up the dvp itself. */ - if (VTOFDESC(dvp)->fd_ix != FD_DESC + fd) { - /* - * Unlock our root node (dvp) when doing this, since we might - * deadlock since the vnode might be locked by another thread - * and the root vnode lock will be obtained afterwards (in case - * we're looking up the fd of the root vnode), which will be the - * opposite lock order. Vhold the root vnode first so we don't - * lose it. - */ - arg.ftype = Fdesc; - arg.fd_fd = fd; - arg.ix = FD_DESC + fd; - arg.fp = fp; - arg.td = td; - arg.fdropped = fdropped; - error = vn_vget_ino_gen(dvp, fdesc_get_ino_alloc, &arg, - LK_EXCLUSIVE, &fvp); - fdropped = arg.fdropped; - } + /* + * Make sure we do not deadlock looking up the dvp itself. + * + * Unlock our root node (dvp) when doing this, since we might + * deadlock since the vnode might be locked by another thread + * and the root vnode lock will be obtained afterwards (in case + * we're looking up the fd of the root vnode), which will be the + * opposite lock order. + */ + arg.ftype = Fdesc; + arg.fd_fd = fd; + arg.ix = FD_DESC + fd; + arg.fp = fp; + arg.td = td; + arg.fdropped = fdropped; + error = vn_vget_ino_gen(dvp, fdesc_get_ino_alloc, &arg, + LK_EXCLUSIVE, &fvp); + fdropped = arg.fdropped; if (!fdropped) { /* From nobody Thu Apr 6 18:04:31 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PsqC36MGcz44fQg; Thu, 6 Apr 2023 18: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 4PsqC35F1Kz3Qpq; Thu, 6 Apr 2023 18:04:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680804271; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hEbhtR19oiAU2xhX3aobmaXNQ2/+1GUTjCN/VlbqtFM=; b=SdCFw6DX5ofpIpxpgJhdhpd4k/ZS3mhS8KCfkpb1RWGkkarR5MNnqWZDMstXQzqnPHWctc 1NJMlLlEVyM1rSdBwLHY3pOv1wuj6N4KQJUBINSEwCwLGQPVjWwe3KMdWU11DDnJkpH5sy Lq7PaBFaRxqZv2tBUsrjnmBfpwjZCHqDK8OtzcTstfHRTF2M+x00yMbRbZFHS05GiwlFyp sitzASZdHwdfe3PyqMNiRrc4du/uJ+dXoLV6apHcRgSfX5YTbLwMqh0++CzrEjHAViA2xJ 1BKR68gEIRZHwCp3Fl3bcKZEukT1T6ONvxYPW+qb7eNfWvYQC9Za7x0gspIUUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680804271; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hEbhtR19oiAU2xhX3aobmaXNQ2/+1GUTjCN/VlbqtFM=; b=SaqAL8QHViEpvFx7aXThhUYz4expsZNpij2vtmdF6guaJMFoRPCyHAQh2MqB6s2wcCr9PF b21up+Y3p3uUaGHokHS+UFbuAmVXx1eT8MpFSH6wwPqYy2DivHat5zNRBRWRR35MY7YW+N Kat59pJuPwxTS7dON8g9nVqg3Ue1yQHESoJ+jSDgA9HplwY+ASWMg5CTsZK6fiPZ7fYc+D Lpw0zBE5/crtzxJPQWxGikGAPU42axRWTK2oDl6Dj+toaREeAdk5Cl8ZMXYts/JvyHfLRc jHAZcSKOYlyee+I7ndyvwInqK3eDc4mm9JJ+EXApnrlyHvmtz5wgU8JxypQeJg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680804271; a=rsa-sha256; cv=none; b=bmdYwQTHmWlnr9uWwloBDREGccglABqDf+5IaJcrfY/pGYXkbwjGQRQTBdp0NdUdBMeyaV DWMb4itdBZcVnokOWdUz/lHN15MOp0e2vZtilGJ04ipPo70QHiWkCWGVv/a0ykXdwEIyXA zgkq6/ZCC+8TbRBW6v+afPTOMgJ7BFZqkgxp5B0iMbS9xGRbJ1MyMNKNMPHpw0sqPz/VK2 PzdaCaDCpIA583vylPfV374HSu+N+5DwFtEmVC6Ro4Cg/IZx0cJs4cY363x2mvogotzQKF a9s6u3CVoMHi2oMQt6grVXde9zdyjwlWLWIn4BIifgNN42qA6kMIUGdqaajscg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PsqC344ZmzDvq; Thu, 6 Apr 2023 18: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 336I4VEG010723; Thu, 6 Apr 2023 18: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 336I4VLJ010722; Thu, 6 Apr 2023 18:04:31 GMT (envelope-from git) Date: Thu, 6 Apr 2023 18:04:31 GMT Message-Id: <202304061804.336I4VLJ010722@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: 4cbd728cb153 - stable/13 - fdesc_lookup(): drop fdropped List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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: 4cbd728cb1535b850e9db3a965bfda6a6629bba8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=4cbd728cb1535b850e9db3a965bfda6a6629bba8 commit 4cbd728cb1535b850e9db3a965bfda6a6629bba8 Author: Konstantin Belousov AuthorDate: 2023-03-23 19:30:04 +0000 Commit: Konstantin Belousov CommitDate: 2023-04-06 18:04:10 +0000 fdesc_lookup(): drop fdropped (cherry picked from commit 13262b07a06910edd5e58e6bb2e1d4786a7b7d8e) --- sys/fs/fdescfs/fdesc_vnops.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index e8aa9f81dc2e..85a3c12f3419 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -302,7 +302,6 @@ fdesc_lookup(struct vop_lookup_args *ap) int nlen = cnp->cn_namelen; u_int fd, fd1; int error; - bool fdropped; struct vnode *fvp; if ((cnp->cn_flags & ISLASTCN) && @@ -346,7 +345,6 @@ fdesc_lookup(struct vop_lookup_args *ap) */ if ((error = fget(td, fd, &cap_no_rights, &fp)) != 0) goto bad; - fdropped = false; /* * Make sure we do not deadlock looking up the dvp itself. @@ -362,19 +360,17 @@ fdesc_lookup(struct vop_lookup_args *ap) arg.ix = FD_DESC + fd; arg.fp = fp; arg.td = td; - arg.fdropped = fdropped; + arg.fdropped = false; error = vn_vget_ino_gen(dvp, fdesc_get_ino_alloc, &arg, LK_EXCLUSIVE, &fvp); - fdropped = arg.fdropped; - if (!fdropped) { + if (!arg.fdropped) { /* * In case we're holding the last reference to the file, the dvp * will be re-acquired. */ VOP_UNLOCK(dvp); fdrop(fp, td); - fdropped = true; vn_lock(dvp, LK_RETRY | LK_EXCLUSIVE); fvp = dvp; From nobody Fri Apr 7 00:04:16 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PszB95PWrz43Yvs; Fri, 7 Apr 2023 00:04: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 4PszB84Mq6z4HSx; Fri, 7 Apr 2023 00:04:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680825856; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u/8rPvb23MIPEa9sbK8jbJ316v7xbqswPHxEQXo/bUY=; b=U8pXmpyB4crwFbupa63T4GNa4PbfEIM9spS9KL2HGdW9D1rtggTGfieT5fYAS4zKIgD5Lo Vth087+xek+MqGQ5lQlsuBNLCkkEdb3yYce8NClqSdu4EpHzsikCnh68/O5+oj6zhIc87M L83ObaDxKYaPtbXVQX8vWgUzrFrr4mBsqmho/q59AQ37sEMfl+FKmpTj3iE8+ErofGURLQ 1GKRDPvCXa3dzRtQBTO0qdPQga6awZPhoCVRnGR6CDwhgOU7ciNYvYqqShuJxLA/DrCNu0 sjHqBYYna0AF5pDRzio5rxXHZXeSP+kfneS8sg/y7ciFjg5kL94sfSgKowQ64w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680825856; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u/8rPvb23MIPEa9sbK8jbJ316v7xbqswPHxEQXo/bUY=; b=QlkgxlTAuhJpRO65AA2XU99tqcXkZl1a6Y80Yq19PaBhKg5/g64R2sqw1O5AzeqnHCLndw VrMQ4uoMKlhVJ+HAB/6RQBWEy3TTgXq9TPujSncXffot+my+f3UVtwZtr73fuhOBa+giJD jMYBuWt5Cif+wH2sP0EqiRHshX91p5hIlZ0ehB9mu2AGuCWpj6Ae2B6lqj0289FXkMD6C2 w15FXbMPQgh4zNGu9bik6GW9ofXKgxHvBGZo6x5t7G12kM5C3rOQNm/3rlvfdVC0iohQs1 7dA0GrqIfwgfmqVUut+4CQlMT9MFKTDJWt/XnO4nCdgA6XB5jzY2U/Z8XnZfhw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680825856; a=rsa-sha256; cv=none; b=xB8nbqUNJDzKvn/Qr13NFvT4OBfUxnUYvqlgXWgiBPzt8ov99VTh/7QbKPBjiTJJs79KrM 1XK0wwhcLfufErXBaF00YdvWf3jMoU8grXTMDFqEnRj7rvNkWHhAYXcQ+/J0mz2a+l9b/w 0FzsVCTf8Ts1MEDSMp7P3qT4AHQoereSQKM40zZXmYD9crWUQHtfEtlM1tFwoObGNi3BvY obT+GlITLukcdgaptTZ8nipQmfEpBVIaXw2NFHZFhHIqtp6V1VRot+bzhuopdY8taukNe5 Y2HPN8IwTKFS80WfhN7hd2k8sdaExxYWN/bJeDOg2N89W21WOOF8CObDAb7G8g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PszB82qrTzP32; Fri, 7 Apr 2023 00:04: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 33704Gau001595; Fri, 7 Apr 2023 00:04:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33704GpI001594; Fri, 7 Apr 2023 00:04:16 GMT (envelope-from git) Date: Fri, 7 Apr 2023 00:04:16 GMT Message-Id: <202304070004.33704GpI001594@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Colin Percival Subject: git: 525ecfdad597 - releng/13.2 - Update in preparation for 13.2-RELEASE List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/releng/13.2 X-Git-Reftype: branch X-Git-Commit: 525ecfdad597980ea4cd59238e24c8530dbcd31d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch releng/13.2 has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=525ecfdad597980ea4cd59238e24c8530dbcd31d commit 525ecfdad597980ea4cd59238e24c8530dbcd31d Author: Colin Percival AuthorDate: 2023-04-07 00:03:18 +0000 Commit: Colin Percival CommitDate: 2023-04-07 00:03:18 +0000 Update in preparation for 13.2-RELEASE - Bump BRANCH to RELEASE - Add the anticipated RELEASE announcement date - Set a static __FreeBSD_version Approved by: re (implicit) Sponsored by: https://www.patreon.com/cperciva --- UPDATING | 3 +++ lib/csu/common/crtbrand.S | 2 +- sys/conf/newvers.sh | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/UPDATING b/UPDATING index a96d4b38e240..a3063ae3c4d2 100644 --- a/UPDATING +++ b/UPDATING @@ -12,6 +12,9 @@ Items affecting the ports and packages system can be found in /usr/ports/UPDATING. Please read that file before updating system packages and/or ports. +20230411: + 13.2-RELEASE. + 20220701: LinuxKPI pm.h changes require an update to the latest drm-kmod version before re-compiling to avoid errors. diff --git a/lib/csu/common/crtbrand.S b/lib/csu/common/crtbrand.S index bf223d84bc12..336ff1853f16 100644 --- a/lib/csu/common/crtbrand.S +++ b/lib/csu/common/crtbrand.S @@ -45,5 +45,5 @@ __FBSDID("$FreeBSD$"); .4byte NT_FREEBSD_ABI_TAG 1: .asciz NOTE_FREEBSD_VENDOR 2: .p2align 2 -3: .4byte __FreeBSD_version +3: .4byte 1302001 4: diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index 9e3e370060e0..52d4ea1070df 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -54,7 +54,7 @@ TYPE="FreeBSD" REVISION="13.2" -BRANCH="RC6" +BRANCH="RELEASE" if [ -n "${BRANCH_OVERRIDE}" ]; then BRANCH=${BRANCH_OVERRIDE} fi From nobody Sat Apr 8 19:44:44 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Km63mzz44npq; Sat, 8 Apr 2023 19:44: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 4Pv5Km4ZWmz43Tg; Sat, 8 Apr 2023 19:44:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983084; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BgJaAToWX9DBBs0RIhzDZVgvJxZzmuf+pFkslMcjDGE=; b=n4oK4I9p1UdxoRml9VJ5qOARB5yasmvBU3P0gCEn0Nctg4UC3gTbuSnGwC/38bVJki/I5J EOpuk/dZcGJGMafEBqu8PGZy9+K8jJiNiyoI0kbspgy28CEN2dKMBhE+dkVVsv61CsAUGS QP2XRmnORRhISr21NXXGcsOaSMIYVkNNe2GOvCqZcBvtfWk4zDZ7QFoLIQnF7FAaSyemng WVrjY9o/E1JBE21b6dKXvbreevFh7YannnVv0F/a1Kz4V2MryEDqSlL9E+sfsmE1fKLjux V+ELHdy6Hof7LiNTjgFcNCs9813zHuwzTHZyYn6noQZxTY4ETtLMnP+luMHzlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983084; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BgJaAToWX9DBBs0RIhzDZVgvJxZzmuf+pFkslMcjDGE=; b=reiRyuC7+8mbiRN1czgSXgXIZrPeOmbLPAypCgyBncU+/wpR8XOM7T9GJxuafjtqV5Ws4h YQrMFpGEXozOmVzoo0XOCL7mVAMEZ7QIBRnLMhnlyv7Ec+FGu+opKajAieNrbfgeV54NuU 2aDgTjIPg5ArXcxEvBgs98E6C1IPQOt9yoKaQTHPUPJp02dVDHh40XB4tZKZANdg0vQ/Th AinMMoQPdK9uA4/dK/D9AdXbQk6ZGsUXT2uDbrc2JcDW1L/FzPiPoa0wTZqcbQDnRJqn2F tMnPVdOQJVI1UN/D/0Ah5hiciyMUFQnkhdI3ce6e1XI4tS5bk3aO5BfICff69Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983084; a=rsa-sha256; cv=none; b=QSeWIiVdEX+nFXBt6xlgbIdsKGfQgZZhTiXKEKp5vmBo+5KWzW67QLWDVTkEcCLjxAnj4k 2EqP4w2N4+7l1S4RCIhQWdtfDqm15ux+Eq9CYnfXfVf5AdlZNCGcGyQhAynreD4dpWB8RV 8rdlaqVlXDKuGFsxFXuKRZb+5oLyKu2aK+66CXUx2goLuum3tXkeVvXxyXroodVNTn3c05 KsTBnSmSSDE/00yrFwTy0Fs0z9gXTmcqNFKmV4M2JDBSUsApZLGAuKamJdGc+UqULvnFav yOEZnBw1jR5PvV256YwYZhBoUQ1v3O8pmmVbhdDhJwLsNFFtBTILUtTZgl7Cng== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Km3ZdPzg3K; Sat, 8 Apr 2023 19:44: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 338JiipW018580; Sat, 8 Apr 2023 19:44:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jiidb018579; Sat, 8 Apr 2023 19:44:44 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:44 GMT Message-Id: <202304081944.338Jiidb018579@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: c0c42c689acc - stable/13 - netlink: add userland name mappings to all NETLINK_ROUTE messages. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: c0c42c689acc76ccad72edbb316ca7dc2e326246 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=c0c42c689acc76ccad72edbb316ca7dc2e326246 commit c0c42c689acc76ccad72edbb316ca7dc2e326246 Author: Alexander V. Chernikov AuthorDate: 2023-03-01 15:22:21 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:03:13 +0000 netlink: add userland name mappings to all NETLINK_ROUTE messages. MFC after: 1 day (cherry picked from commit e6b4177c478da54e25db464ae60ddae9e890c2cb) --- sys/netlink/route/common.h | 78 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 16 deletions(-) diff --git a/sys/netlink/route/common.h b/sys/netlink/route/common.h index 1bfb888b34c0..1f1d98dc4384 100644 --- a/sys/netlink/route/common.h +++ b/sys/netlink/route/common.h @@ -97,23 +97,64 @@ enum { * Use NL_RTM_ prefix in the kernel and map it to RTM_ * for userland. */ -#define RTM_BASE NL_RTM_BASE -#define RTM_NEWLINK NL_RTM_NEWLINK -#define RTM_DELLINK NL_RTM_DELLINK -#define RTM_GETLINK NL_RTM_GETLINK -#define RTM_SETLINK NL_RTM_SETLINK -#define RTM_NEWADDR NL_RTM_NEWADDR -#define RTM_DELADDR NL_RTM_DELADDR -#define RTM_GETADDR NL_RTM_GETADDR -#define RTM_NEWROUTE NL_RTM_NEWROUTE -#define RTM_DELROUTE NL_RTM_DELROUTE -#define RTM_GETROUTE NL_RTM_GETROUTE -#define RTM_NEWNEXTHOP NL_RTM_NEWNEXTHOP -#define RTM_DELNEXTHOP NL_RTM_DELNEXTHOP -#define RTM_GETNEXTHOP NL_RTM_GETNEXTHOP -#endif +#define RTM_BASE NL_RTM_BASE +#define RTM_NEWLINK NL_RTM_NEWLINK +#define RTM_DELLINK NL_RTM_DELLINK +#define RTM_GETLINK NL_RTM_GETLINK +#define RTM_SETLINK NL_RTM_SETLINK +#define RTM_NEWADDR NL_RTM_NEWADDR +#define RTM_DELADDR NL_RTM_DELADDR +#define RTM_GETADDR NL_RTM_GETADDR +#define RTM_NEWROUTE NL_RTM_NEWROUTE +#define RTM_DELROUTE NL_RTM_DELROUTE +#define RTM_GETROUTE NL_RTM_GETROUTE +#define RTM_NEWNEIGH NL_RTM_NEWNEIGH +#define RTM_DELNEIGH NL_RTM_DELNEIGH +#define RTM_GETNEIGH NL_RTM_GETNEIGH +#define RTM_NEWRULE NL_RTM_NEWRULE +#define RTM_DELRULE NL_RTM_DELRULE +#define RTM_GETRULE NL_RTM_GETRULE +#define RTM_NEWQDISC NL_RTM_NEWQDISC +#define RTM_DELQDISC NL_RTM_DELQDISC +#define RTM_GETQDISC NL_RTM_GETQDISC +#define RTM_NEWTCLASS NL_RTM_NEWTCLASS +#define RTM_DELTCLASS NL_RTM_DELTCLASS +#define RTM_GETTCLASS NL_RTM_GETTCLASS +#define RTM_NEWTFILTER NL_RTM_NEWTFILTER +#define RTM_DELTFILTER NL_RTM_DELTFILTER +#define RTM_GETTFILTER NL_RTM_GETTFILTER +#define RTM_NEWACTION NL_RTM_NEWACTION +#define RTM_DELACTION NL_RTM_DELACTION +#define RTM_GETACTION NL_RTM_GETACTION +#define RTM_NEWPREFIX NL_RTM_NEWPREFIX +#define RTM_GETMULTICAST NL_RTM_GETMULTICAST +#define RTM_GETANYCAST NL_RTM_GETANYCAST +#define RTM_NEWNEIGHTBL NL_RTM_NEWNEIGHTBL +#define RTM_GETNEIGHTBL NL_RTM_GETNEIGHTBL +#define RTM_SETNEIGHTBL NL_RTM_SETNEIGHTBL +#define RTM_NEWNDUSEROPT NL_RTM_NEWNDUSEROPT +#define RTM_NEWADDRLABEL NL_RTM_NEWADDRLABEL +#define RTM_DELADDRLABEL NL_RTM_DELADDRLABEL +#define RTM_GETADDRLABEL NL_RTM_GETADDRLABEL +#define RTM_GETDCB NL_RTM_GETDCB +#define RTM_SETDCB NL_RTM_SETDCB +#define RTM_NEWNETCONF NL_RTM_NEWNETCONF +#define RTM_GETNETCONF NL_RTM_GETNETCONF +#define RTM_NEWMDB NL_RTM_NEWMDB +#define RTM_DELMDB NL_RTM_DELMDB +#define RTM_GETMDB NL_RTM_GETMDB +#define RTM_NEWNSID NL_RTM_NEWNSID +#define RTM_DELNSID NL_RTM_DELNSID +#define RTM_GETNSID NL_RTM_GETNSID +#define RTM_NEWSTATS NL_RTM_NEWSTATS +#define RTM_GETSTATS NL_RTM_GETSTATS +#define RTM_NEWNEXTHOP NL_RTM_NEWNEXTHOP +#define RTM_DELNEXTHOP NL_RTM_DELNEXTHOP +#define RTM_GETNEXTHOP NL_RTM_GETNEXTHOP +#define __RTM_MAX __NL_RTM_MAX + +#define RTM_MAX (roundup2(__RTM_MAX, 4)) -#ifndef _KERNEL /* rtnetlink multicast groups - backwards compatibility for userspace */ #define RTMGRP_LINK 0x01 #define RTMGRP_NOTIFY 0x02 @@ -209,5 +250,10 @@ enum rtnetlink_groups { #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) +/* Defined NETLINK_ROUTE virtual multicast address families */ +#define RTNL_FAMILY_IPMR 128 /* Not supported */ +#define RTNL_FAMILY_IP6MR 129 /* Not supported */ +#define RTNL_FAMILY_MAX 129 + #endif From nobody Sat Apr 8 19:44:45 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Kn6kSfz44nsG; Sat, 8 Apr 2023 19:44: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 4Pv5Kn5Qwnz43lV; Sat, 8 Apr 2023 19:44:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983085; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fFiutqTA5sdHgTJr8MKc5bJusp3ZMHxDZ9Q+xoWHeXk=; b=sA/hdGy6NzlV88EsnmqG5lpOECc9Q2K17ZziGvu9VXhFH1uSmgXam7I22rg/H6wR5a5UMO usnbk7fqr9ypVZYjxXDsof3fzrnhPjGBUv7Zr+Bre3gNhXgCVXOPVsZxbUvIeTPyirHp0Q H0VznCL0adIza9Yv4MraeGL+/kygq1bF+KLHtk0R4MUJzSOHUYvoP6WdPdouTnCDsxDv7O R1iaFjZnN8TCOffku2rZOmoaWsPSFPaNdNpY5axTYsCngcM3n6Zsj6JAlXy6c3bW1cVttu TRsbTyEydhZa4ZC4eErn2yLaS1U2S0hGbaNM7gQYo6zXYnH+RSXUQT5o3dLZag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983085; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fFiutqTA5sdHgTJr8MKc5bJusp3ZMHxDZ9Q+xoWHeXk=; b=Mom34rPu9FO9Jta/RjYzheIxM84itgEYAJJW/DGxziNpXIy3B+1MoDD6qlLccmFJAgIl7z 8KmQLMQQhnNA34FPiTwhQubguQMxUziBlneOz/kO1MpEBU9yYoLEJpQZmTE7GBkisG2wdw WSgaUpzx0n1BC+mclBaEw/euOBXnIydYgbpuHJMPGayO6fpFKH2n7xzChs0BhnWlzpkStJ uwCQJb6r++clbAT5tC0QBp1CuT7rMyNb71GVFNfA1ch+S2ZF3mEoZcWAMO491XTBHeIipR 7wk4ibO8tokX2+XhvtHYarH9ALMQGHsS10/7wP+WMFy8sOwfD1ymlzfO34WuUg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983085; a=rsa-sha256; cv=none; b=hDOoTSliHrC0vI4ZThNYRG+ycm9Sgq+oZjmU58pEMbG8dVOzwZqatHgdJtQq/tbhVVLxU9 JdJ2l+lTOuBZex/ZffLdV9PfmOXQcnnDHer5a2w6hqxrOsY55EH/HyXNiReTWkTiDV4Keo MkBDK34jV9aP70yvjmh87QbeeRepUJw8YNtr5a58ZzAFgu0k8FjJ+GwXrmmiEuAZWDQ7Kg i+JTjJxC+SKse8Ny7RHQL9zbpWx2M+HxHfxKhe6J8655ox4AfzgQI6hLxSpxOmdKL+9w5A nimL5e0I2onVeylEDjo2FKTnTN+6ta6CxwtqLcP49e9ZrmqJetqaW5KjPDMgFQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kn4Brvzfnl; Sat, 8 Apr 2023 19:44: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 338JijmV018602; Sat, 8 Apr 2023 19:44:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jij82018601; Sat, 8 Apr 2023 19:44:45 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:45 GMT Message-Id: <202304081944.338Jij82018601@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: f2743786e9a7 - stable/13 - netlink: add u8/u64 attribute fetcher accessors to snl(3). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: f2743786e9a76d16a14e145eee72f77594e4d237 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=f2743786e9a76d16a14e145eee72f77594e4d237 commit f2743786e9a76d16a14e145eee72f77594e4d237 Author: Alexander V. Chernikov AuthorDate: 2023-03-03 14:05:40 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:03:23 +0000 netlink: add u8/u64 attribute fetcher accessors to snl(3). MFC after: 2 weeks (cherry picked from commit 61507ae30b9096eaa0d44fec71211f3843d546eb) --- share/man/man3/snl.3 | 8 ++++++++ sys/netlink/netlink_snl.h | 25 ++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/share/man/man3/snl.3 b/share/man/man3/snl.3 index 78a6b67e88a9..2f328aadd023 100644 --- a/share/man/man3/snl.3 +++ b/share/man/man3/snl.3 @@ -75,10 +75,14 @@ .Ft "bool" .Fn snl_attr_get_flag "struct snl_state *ss" "struct nlattr *nla" "void *target" .Ft "bool" +.Fn snl_attr_get_uint8 "struct snl_state *ss" "struct nlattr *nla" "void *target" +.Ft "bool" .Fn snl_attr_get_uint16 "struct snl_state *ss" "struct nlattr *nla" "void *target" .Ft "bool" .Fn snl_attr_get_uint32 "struct snl_state *ss" "struct nlattr *nla" "void *target" .Ft "bool" +.Fn snl_attr_get_uint64 "struct snl_state *ss" "struct nlattr *nla" "void *target" +.Ft "bool" .Fn snl_attr_get_string "struct snl_state *ss" "struct nlattr *nla" "void *target" .Ft "bool" .Fn snl_attr_get_stringn "struct snl_state *ss" "struct nlattr *nla" "void *target" @@ -181,10 +185,14 @@ A number of predefined getters for the common data types exist. .Fn snl_attr_get_flag converts a flag-type attribute to an uint8_t value of 1 or 0, depending on the attribute presence. +.Fn snl_attr_get_uint8 +stores a uint8_t type attribute into the uint8_t target field. .Fn snl_attr_get_uint16 stores a uint16_t type attribute into the uint16_t target field. .Fn snl_attr_get_uint32 stores a uint32_t type attribute into the uint32_t target field. +.Fn snl_attr_get_uint64 +stores a uint64_t type attribute into the uint64_t target field. .Fn snl_attr_get_ip and .Fn snl_attr_get_ipvia diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index 6e2c4b89a7c4..d88808ea6d3b 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -355,6 +355,17 @@ snl_attr_get_flag(struct snl_state *ss __unused, struct nlattr *nla, void *targe return (false); } +static inline bool +snl_attr_get_uint8(struct snl_state *ss __unused, struct nlattr *nla, + const void *arg __unused, void *target) +{ + if (NLA_DATA_LEN(nla) == sizeof(uint8_t)) { + *((uint8_t *)target) = *((const uint8_t *)NLA_DATA_CONST(nla)); + return (true); + } + return (false); +} + static inline bool snl_attr_get_uint16(struct snl_state *ss __unused, struct nlattr *nla, const void *arg __unused, void *target) @@ -377,6 +388,17 @@ snl_attr_get_uint32(struct snl_state *ss __unused, struct nlattr *nla, return (false); } +static inline bool +snl_attr_get_uint64(struct snl_state *ss __unused, struct nlattr *nla, + const void *arg __unused, void *target) +{ + if (NLA_DATA_LEN(nla) == sizeof(uint64_t)) { + memcpy(target, NLA_DATA_CONST(nla), sizeof(uint64_t)); + return (true); + } + return (false); +} + static inline bool snl_attr_get_string(struct snl_state *ss __unused, struct nlattr *nla, const void *arg __unused, void *target) @@ -416,7 +438,8 @@ snl_attr_get_nested(struct snl_state *ss, struct nlattr *nla, const void *arg, v } static inline bool -snl_attr_get_nla(struct snl_state *ss __unused, struct nlattr *nla, void *target) +snl_attr_get_nla(struct snl_state *ss __unused, struct nlattr *nla, + const void *arg __unused, void *target) { *((struct nlattr **)target) = nla; return (true); From nobody Sat Apr 8 19:44:46 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Kq4lvVz44nXX; Sat, 8 Apr 2023 19:44: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 4Pv5Kq25Prz43SJ; Sat, 8 Apr 2023 19:44:47 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FqEUJSoR1xtWTB0JRGnl0A2i3aVnqX4nnhV4kxok5Fk=; b=jgqECS97mR9kp/RAih1RKIJMAcmjJlE1hACA/sRQG7FYv/hj/btovJPKJvvZWn1t9IdJuy 1lsX5pxblKUijKE3ERilJFZep2wsACLdPHbKHLnqfb/WGskWLbsm51G2UPhAfqFUZ/JkZs aQ39Xep+jw2oO3Ms/lS16QzifqqjV5LyQzaHX5hEEKnDJhC2YxmA67gyZKN46FI7xhaDpq QtuR8NMqU7MiuMDDUIsGij7sqy6q6CefMe9X2j6SD2ndqxiij0ISVkudSz7LG+1WephWB+ C8JgLGdKz8+M9846/5ohmI+OcpyO+pgZ4BZEmJdegUXbS94d+A1q5KARToIh+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=FqEUJSoR1xtWTB0JRGnl0A2i3aVnqX4nnhV4kxok5Fk=; b=KXdZHOFNJum1CxF8aNW2AvxQS9GL+TddnmNDwakCNBHTRNZ7Uu7l3zedy5RFdXC4i6UhKR B8mgCgbfjGokX6R1bVs5gA/BmM5UzTqxYQ/PnUwDcB7a9utaWx1jjg7W3/9TXU/e+tsNsa GjX19G3s0xRrK19oxFViNtU/HPbkVtr4N1IXzzF6etixJGrUPT8HZVEra8Z2S7ckpRelh5 fVhsMsl43KJwpgXkFX1Y2vj8pnY8oRPIggXwJOPOXrBTV7laMeyACtTAH3TPAxrJXjQBAI IYOnGl/fyhn5ZMURp7Ubfg+Glf0h7HEuzhG0YeX8RxmSdoxfaa0nORzVtcWPtA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983087; a=rsa-sha256; cv=none; b=xAW/vGVHnDxERLbP2i9tESzTpGl6FWoHHBnNhlxhQnde19KG0a+LPDM9pK1YyAFWNUcIdU FBZ5XaGxYmhSLNtbYYhn/Zmv3mWlaXHiY+vRMroG72W2E0+occiBL2i+/O+4AkgCKTDgwZ J4i81fAt5ujN/wPA5dg+YvWW0tEfLYmgD7Ts+YywKydvpkmFITnXB0hlvmxdJmUbOko9Pc BN5t0DgoHXIw+Bj2f73JPJe4nyNJF6Qo7TNxGLQzwkJRYI/kSylMWVKd7ixb5jKHXiwmQI ESdICJQ9EJeRAonXedRNOnGXQAYbMB6p0EX2D/10dAWj29KByVG1XBBgZQHoKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kp56sBzfsq; Sat, 8 Apr 2023 19:44: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 338JikKF018627; Sat, 8 Apr 2023 19:44:46 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jikb9018626; Sat, 8 Apr 2023 19:44:46 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:46 GMT Message-Id: <202304081944.338Jikb9018626@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 401a06fd750d - stable/13 - netlink: fix vlan interface creation List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 401a06fd750d95e513b0b2960045b1acff21e5c5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=401a06fd750d95e513b0b2960045b1acff21e5c5 commit 401a06fd750d95e513b0b2960045b1acff21e5c5 Author: Alexander V. Chernikov AuthorDate: 2023-03-03 16:01:34 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:03:59 +0000 netlink: fix vlan interface creation MFC after: 2 weeks (cherry picked from commit ce9f95bd835ec7d3ac6def5a910282509b1413f0) --- sys/netlink/route/iface_drivers.c | 34 +++++++++++++++++++--------------- tests/sys/netlink/test_rtnl_iface.py | 1 - 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/sys/netlink/route/iface_drivers.c b/sys/netlink/route/iface_drivers.c index 7cfaa5a6614b..be28a0f3b676 100644 --- a/sys/netlink/route/iface_drivers.c +++ b/sys/netlink/route/iface_drivers.c @@ -144,20 +144,14 @@ store_cookie(struct nl_pstate *npt, struct ifnet *ifp) nlmsg_report_cookie(npt, nla_cookie); } -/* - * Generic creation interface handler. - * Responsible for creating interfaces w/o parameters and setting - * misc attributes such as state, mtu or description. - */ static int -create_generic(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, - struct nlpcb *nlp, struct nl_pstate *npt) +create_generic_ifd(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, + struct ifc_data *ifd, struct nlpcb *nlp, struct nl_pstate *npt) { int error = 0; - struct ifc_data ifd = {}; struct ifnet *ifp = NULL; - error = ifc_create_ifp(lattrs->ifla_ifname, &ifd, &ifp); + error = ifc_create_ifp(lattrs->ifla_ifname, ifd, &ifp); NLP_LOG(LOG_DEBUG2, nlp, "clone for %s returned %d", lattrs->ifla_ifname, error); @@ -177,6 +171,19 @@ create_generic(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, return (error); } +/* + * Generic creation interface handler. + * Responsible for creating interfaces w/o parameters and setting + * misc attributes such as state, mtu or description. + */ +static int +create_generic(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, + struct nlpcb *nlp, struct nl_pstate *npt) +{ + struct ifc_data ifd = {}; + + return (create_generic_ifd(lattrs, bm, &ifd, nlp, npt)); +} struct nl_cloner generic_cloner = { .name = "_default_", @@ -258,17 +265,14 @@ create_vlan(struct nl_parsed_link *lattrs, const struct nlattr_bmask *bm, return (ENOENT); } - /* Waiting till if_clone changes lands */ -/* struct vlanreq params = { .vlr_tag = attrs.vlan_id, .vlr_proto = attrs.vlan_proto, }; -*/ - int ifname_len = strlen(lattrs->ifla_ifname) + 1; - error = if_clone_create(lattrs->ifla_ifname, ifname_len, (char *)NULL); + strlcpy(params.vlr_parent, if_name(ifp), sizeof(params.vlr_parent)); + struct ifc_data ifd = { .flags = IFC_F_SYSSPACE, .params = ¶ms }; - NLP_LOG(LOG_DEBUG2, nlp, "clone for %s returned %d", lattrs->ifla_ifname, error); + error = create_generic_ifd(lattrs, bm, &ifd, nlp, npt); if_rele(ifp); return (error); diff --git a/tests/sys/netlink/test_rtnl_iface.py b/tests/sys/netlink/test_rtnl_iface.py index cbe5aed8b8ae..c21bf9cb8977 100644 --- a/tests/sys/netlink/test_rtnl_iface.py +++ b/tests/sys/netlink/test_rtnl_iface.py @@ -313,7 +313,6 @@ class TestRtNlIface(NetlinkTestTemplate, SingleVnetTestTemplate): # * {{nla_len=8, nla_type=IFLA_INFO_KIND}, "vlan"...}, # * {{nla_len=12, nla_type=IFLA_INFO_DATA}, "\x06\x00\x01\x00\x16\x00\x00\x00"} # */ - @pytest.mark.skip(reason="vlan support needs more work") @pytest.mark.require_user("root") def test_create_vlan_plain(self): """Creates 802.1Q VLAN interface in vlanXX and ifX fashion""" From nobody Sat Apr 8 19:44:47 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Kr3FrWz44npx; Sat, 8 Apr 2023 19:44:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Pv5Kr1KT3z43hH; Sat, 8 Apr 2023 19:44:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u9ywsgsDj8caEGjo29Ek5cCO2L/eFTFgdqFoFqgByTQ=; b=VWnjDMgvQko7QwrXpuyP6Gclob7Ox9diyNuO7VPrzOLyEsugkb6/Ze6wJSYVHs397mGl8l chFjEzgSWw4c0+tfVelyf156rRPXdE0oBiSJkpSZSed9qgu1LQFFvnxUDQ4Ju1mGYPxU8L hXz9fOw7U0MXFECfcI+k6NewtQk10tNJ0kgJ1COyz12tjs2RJVdHavJVQg6OW9FU9RMSwu u7sW/kk5Ktgx/t5v4oEcPZXC7ajFK6Y06/IizgSvykg1EkS2whEzUsZMQf9eRNZY3xr/8R f4qMrB5XmK0trFWyZxJcRJm7Z4hQ7ciKaKenAryVr8mO23CWWdcLSWQQpTN6lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=u9ywsgsDj8caEGjo29Ek5cCO2L/eFTFgdqFoFqgByTQ=; b=JPRzvhKbcg56TqYCMzvVnKhu17qT5LVA153/pqgFN3furjtPRUYczWsddLFlHoUwuxZrpI gK3u060yGw1/A+mFUV83BXElM+IGCIGRMuDPQJkfVT1+w5CqEr5d0CmdDsP1Cs8f+stjZo 9YM3+zP8NUKpZCyBKVraHCSnblcdDu6J5AwJC373B9pdOVWVSS0Ml3da1ROFImXDzzIYp7 8SEdV1HeUKa8RRel+lj97m93PBYhM0E1c6d3pVZe1cmuXmuBc66w8cKFMQBcVzECXX5n5D UTetraQxsz/mZR5reXpRSot9bqcgDBaL+H6Tl+q7R10OxsfPr7cN5zzrrmdztg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983088; a=rsa-sha256; cv=none; b=actxiH7p5AbxceHnHzyQfoiH+w8erwwN1nZSa0pMCccxUFZ5QAdP1L+Ifj6p0UqSNhXl5Z PnibC3s7AM624qWQvgIUC0dE7OZXSFYcIR/qSp85jK0MlmSOJJ9qbPmLd6L2cUEwPm0xT6 meOSqwMbkof1EereUmjYl4Y75pjP/peK8K1UQI8TtUSCjI13T4KhVfLR6C3aoZCiGNeFlr VfPQA7d0DobKj5aBb0bgi4zVBUJYIJjgCrFdZ3uS8Hhm4+qMg4HNX19JTUIEIXaPHe6UYo 10HKtm5MAwekuNtRQzHTtzhFaZtSPq2ftz0kZKa3Mqf2j1OaRbsEh6XkiFdqKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kq62xJzfsr; Sat, 8 Apr 2023 19:44: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 338JilgM018646; Sat, 8 Apr 2023 19:44:47 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JilFT018645; Sat, 8 Apr 2023 19:44:47 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:47 GMT Message-Id: <202304081944.338JilFT018645@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 4826b224097b - stable/13 - netlink: cleanup netlink_writer code List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 4826b224097b857a161e3910afa77b89eee55c76 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=4826b224097b857a161e3910afa77b89eee55c76 commit 4826b224097b857a161e3910afa77b89eee55c76 Author: Alexander V. Chernikov AuthorDate: 2023-03-07 17:42:27 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:05:26 +0000 netlink: cleanup netlink_writer code * Remove unused nlattr_add_nla() - that's a duplicate of nlattr_add_raw(). * Calculate alignment only once in nlmsg_reserve_data_raw() MFC after: 2 weeks (cherry picked from commit 5c8277ec2588a660f126e1a9866cd65f59336c51) --- sys/netlink/netlink_message_writer.h | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/sys/netlink/netlink_message_writer.h b/sys/netlink/netlink_message_writer.h index bb4bb759251a..13acf5add559 100644 --- a/sys/netlink/netlink_message_writer.h +++ b/sys/netlink/netlink_message_writer.h @@ -124,17 +124,19 @@ nlattr_set_len(const struct nl_writer *nw, int off) static inline void * nlmsg_reserve_data_raw(struct nl_writer *nw, size_t sz) { - if (__predict_false(nw->offset + NETLINK_ALIGN(sz) > nw->alloc_len)) { - if (!nlmsg_refill_buffer(nw, NETLINK_ALIGN(sz))) + sz = NETLINK_ALIGN(sz); + + if (__predict_false(nw->offset + sz > nw->alloc_len)) { + if (!nlmsg_refill_buffer(nw, sz)) return (NULL); } void *data_ptr = &nw->data[nw->offset]; - nw->offset += NLMSG_ALIGN(sz); + nw->offset += sz; return (data_ptr); } -#define nlmsg_reserve_object(_ns, _t) ((_t *)nlmsg_reserve_data_raw(_ns, NLA_ALIGN(sizeof(_t)))) +#define nlmsg_reserve_object(_ns, _t) ((_t *)nlmsg_reserve_data_raw(_ns, sizeof(_t))) #define nlmsg_reserve_data(_ns, _sz, _t) ((_t *)nlmsg_reserve_data_raw(_ns, _sz)) static inline int @@ -163,27 +165,6 @@ _nlmsg_reserve_attr(struct nl_writer *nw, uint16_t nla_type, uint16_t sz) } #define nlmsg_reserve_attr(_ns, _at, _t) ((_t *)_nlmsg_reserve_attr(_ns, _at, NLA_ALIGN(sizeof(_t)))) -static inline bool -nlattr_add_nla(struct nl_writer *nw, const struct nlattr *nla_src) -{ - MPASS(nla_src->nla_len >= sizeof(struct nlattr)); - - int required_len = NLA_ALIGN(nla_src->nla_len); - if (__predict_false(nw->offset + required_len > nw->alloc_len)) { - if (!nlmsg_refill_buffer(nw, required_len)) - return (false); - } - - struct nlattr *nla = (struct nlattr *)(&nw->data[nw->offset]); - if ((nla_src->nla_len % 4) != 0) { - /* clear padding bytes */ - bzero((char *)nla + nla_src->nla_len - 4, 4); - } - memcpy(nla, nla_src, nla_src->nla_len); - nw->offset += required_len; - return (true); -} - static inline bool nlattr_add(struct nl_writer *nw, int attr_type, int attr_len, const void *data) { From nobody Sat Apr 8 19:44:48 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Ks574Kz44nXd; Sat, 8 Apr 2023 19:44: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 4Pv5Ks2623z43kw; Sat, 8 Apr 2023 19:44:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=13sLaudLbXwAWJMtEgGbsRgGiE2cuDhlgCbpj+lU4ig=; b=L04Xa08OLBPGwghy0sTQAWnGkXwUJtyTHb6RoJLLhEJeLf8SkhIfJBie6C9a3s5qGrrTt1 dVMhnjIrhg7gAIIG7DLmwoQExAUnFBpaNY5TwJkQLabGTXTvqoALPzWFnLPh3IL2FFHgsr 4aWQiX/W6b7QGWmYEkr0/QPa9c6c4VzsCsV7JzDk4eSmogRyHAm5qouiE0KOAvtgWLUFBS pLHVeO+0oF5lh2ByFV4LDGgJwSN67LjJY4YxFlQrMohB30KADps6DAOxdE5D2MlBwE7oP8 yLtOswZv1S5X+mwepBVs1WNJYTq5ONapZUTOrmut6AXPzWCbUoOlEgcjWX4YZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=13sLaudLbXwAWJMtEgGbsRgGiE2cuDhlgCbpj+lU4ig=; b=l6vMCuC3Q6xAjOCYpGc54GHoZYeZ/g3b3o1MvG2d9uqxVZnoEBF2h7n+T2riivhkGBtalD D0XGSMbnnh1WQPlqTnif1ao5NGohQRxZpFtFb4hcEYKvL4fAC58WX+qJskOhv+20nD5EGR f6rley+fwjzofCyJq6ZL6qiskyL+5gEn8WYblZVFJqOL6BFSo5h5f+7GY8BPUogdPLgU/o M0MpIhaWgO9gLGU2y/NJz4boIGImfKUUXr2SQ/7CHcsWeVObYcTtXOEJbJnDaZ0mH872AH 4yHELSBdAbvnWNSMfhZeEHGKsRGNEYOIZ8rDREIBSIxY7qulim3zECPuFgMQ+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983089; a=rsa-sha256; cv=none; b=wfde1THwLR45/Hc/yWa1peLE45SZAzZQLSdyBATaiqpzSHq8wlj43lLWdbnPvISpIi+ETz 2zhAUbMC9eTnhrkM5ZFZjQvxJ5XhwBc74MxX9zdUFghk12/cLrC8RiSJ0C4rVW01Lc0NvU j7IocSEFdURJN9/6NlIgGha3sq+CBFQ+Jx9l4xH4ESY7CmqyyeVloG51dlk9tH64i+c4EN 3rwuvhWBBBATEwc35IAhNeoMnFkF7f38kc1o49XOrz2vKTFkZLeuGb3TJsg/cnpNnmX9UK F8U4fkSMbswXk5+G3uOxr5hD3EdAZqV5JoFBmzJLsUU3Rb5+7Crs2XKK9JrKLw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kr6XdzzfxY; Sat, 8 Apr 2023 19:44:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 338JimRi018672; Sat, 8 Apr 2023 19:44:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jim9e018671; Sat, 8 Apr 2023 19:44:48 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:48 GMT Message-Id: <202304081944.338Jim9e018671@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: d1c4e56772f8 - stable/13 - netlink: make snl(3) scratch buffer growable List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: d1c4e56772f804065d7f06c7a6b9d8accccb9d4a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=d1c4e56772f804065d7f06c7a6b9d8accccb9d4a commit d1c4e56772f804065d7f06c7a6b9d8accccb9d4a Author: Alexander V. Chernikov AuthorDate: 2023-03-08 11:17:43 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:05:34 +0000 netlink: make snl(3) scratch buffer growable Differential Revision: https://reviews.freebsd.org/D38946 MFC after: 2 weeks (cherry picked from commit 0679eb1f39aa798da6c4601bb06bab4c175c4b18) --- sys/netlink/netlink_snl.h | 90 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 69 insertions(+), 21 deletions(-) diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index d88808ea6d3b..3c63e3f95419 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -70,11 +70,31 @@ #define NL_ARRAY_LEN(_a) (sizeof(_a) / sizeof((_a)[0])) struct linear_buffer { - char *base; /* Base allocated memory pointer */ - uint32_t offset; /* Currently used offset */ - uint32_t size; /* Total buffer size */ + char *base; /* Base allocated memory pointer */ + uint32_t offset; /* Currently used offset */ + uint32_t size; /* Total buffer size */ + struct linear_buffer *next; /* Buffer chaining */ }; +static inline struct linear_buffer * +lb_init(uint32_t size) +{ + struct linear_buffer *lb = calloc(1, size); + + if (lb != NULL) { + lb->base = (char *)(lb + 1); + lb->size = size - sizeof(*lb); + } + + return (lb); +} + +static inline void +lb_free(struct linear_buffer *lb) +{ + free(lb); +} + static inline char * lb_allocz(struct linear_buffer *lb, int len) { @@ -101,7 +121,7 @@ struct snl_state { size_t datalen; uint32_t seq; bool init_done; - struct linear_buffer lb; + struct linear_buffer *lb; }; #define SCRATCH_BUFFER_SIZE 1024 @@ -145,6 +165,45 @@ static const struct snl_hdr_parser _name = { \ } +static inline void * +snl_allocz(struct snl_state *ss, int len) +{ + void *data = lb_allocz(ss->lb, len); + + if (data == NULL) { + uint32_t size = ss->lb->size * 2; + + while (size < len + sizeof(struct linear_buffer)) + size *= 2; + + struct linear_buffer *lb = lb_init(size); + + if (lb != NULL) { + lb->next = ss->lb; + ss->lb = lb; + data = lb_allocz(ss->lb, len); + } + } + + return (data); +} + +static inline void +snl_clear_lb(struct snl_state *ss) +{ + struct linear_buffer *lb = ss->lb; + + lb_clear(lb); + lb = lb->next; + ss->lb->next = NULL; + /* Remove all linear bufs except the largest one */ + while (lb != NULL) { + struct linear_buffer *lb_next = lb->next; + lb_free(lb); + lb = lb_next; + } +} + static void snl_free(struct snl_state *ss) { @@ -152,8 +211,10 @@ snl_free(struct snl_state *ss) close(ss->fd); if (ss->buf != NULL) free(ss->buf); - if (ss->lb.base != NULL) - free(ss->lb.base); + if (ss->lb != NULL) { + snl_clear_lb(ss); + lb_free(ss->lb); + } } } @@ -181,9 +242,8 @@ snl_init(struct snl_state *ss, int netlink_family) return (false); } - ss->lb.size = SCRATCH_BUFFER_SIZE; - ss->lb.base = calloc(1, ss->lb.size); - if (ss->lb.base == NULL) { + ss->lb = lb_init(SCRATCH_BUFFER_SIZE); + if (ss->lb == NULL) { snl_free(ss); return (false); } @@ -191,18 +251,6 @@ snl_init(struct snl_state *ss, int netlink_family) return (true); } -static inline void * -snl_allocz(struct snl_state *ss, int len) -{ - return (lb_allocz(&ss->lb, len)); -} - -static inline void -snl_clear_lb(struct snl_state *ss) -{ - lb_clear(&ss->lb); -} - static inline bool snl_send(struct snl_state *ss, void *data, int sz) { From nobody Sat Apr 8 19:44:49 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Kt58qZz44nmP; Sat, 8 Apr 2023 19:44: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 4Pv5Kt1F2yz43pm; Sat, 8 Apr 2023 19:44:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983090; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/pZeacW8GpYql+4AsuG5/js/ygOn9EGxxyZfG8A0VvI=; b=DX/5x4WjHWeZxiLBwAyjrrhvG0GOt6BoOQjdadJ17dUjk/TDrt6vmDMQLXFfbmoLkhn3ox N5VBBBz4dh4rVPuXlYiUHF4LPuF3XqelInOUlOhrHz829ZjGU7E3YtF+FEazcTFDxc2WyK 2aOppXBG+AHCEMeCIft79R9uYvpN/NGtz1PbymgAQHNE2XMpsiM8cxrHDf6y0i307LLIZM 2A1XtomK2TdidcbRVaRkzOd4OBnOoTsUkO45y7O3SDfYzUaxCh6/j647jWQL1AimNYuy3m f2Ly/1NbTn/kgpNEkG7CJRZHdPHd2olTxdkqEgw0Y/XG0/+OEAqSLK7iWvlefQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983090; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/pZeacW8GpYql+4AsuG5/js/ygOn9EGxxyZfG8A0VvI=; b=exFP7gcV241Mom/kojltcaJQTSkPzrJDYI9nEv75lRzOOoD9fIdNrkhpikzwCQaR5u7c7/ lMP1yncClkb5vVoIL6okEGbYvuacwrAyyY3TSixei/HiPB2NXZYiIv5ELJ9M6eOb3SIUAF upLDfg6JTseq93ki8C+Ah+IRhvkq6P5FxsBXsGTuHGPKbNhQN9BavcHdVIC7XtuvagF62R D7CPjVOzxHTa1jpx7R2rD4hw1uP58cL1r0ETenfx+H8V0G1bkIPvXvVfNOKIoZqUIoogji GDcKSWNRH3frVyD0I8vcIB8eMmG3cgGxlZQo15w10E2AHSV7iUaI2dAJrTVZ8g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983090; a=rsa-sha256; cv=none; b=B/R/uRc/LCgOI3II6dKo80irrwROwNEx1XWO1/Olrreop/odAAHHc8KNSIHly3J510b6Tv 6hWoNcbAUWd7UbwNRWsQfW7WS0qUJ+IoOGJsR5Dk7y6667/asIF5ncgnURoF2CkcXc9bV9 V8591kUceZ61ljHFOny5+iAyUGO88Z30dkuJ63QuQ5nH/SzVxS4FpzAZL4a969JeO1fchF C+xhnjTRyLKmxkrEa7ifdBppZUr361OcpXQCAuGsZDG2/1U1cv5NLzgypzfwBMhzMhxI95 12XVLOcYzEvnFhdU2UwSQ74aCxfDrb7BiJC6+iH/xHIUgBiyuysa/t/3HxRdQQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kt0KRCzfYZ; Sat, 8 Apr 2023 19:44: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 338Jinho018693; Sat, 8 Apr 2023 19:44:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JinEw018692; Sat, 8 Apr 2023 19:44:49 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:49 GMT Message-Id: <202304081944.338JinEw018692@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: ec1edf13b151 - stable/13 - netlink: add basic message writing support to snl(3). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: ec1edf13b15179e2ac5af41e4b73faa3f560347a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=ec1edf13b15179e2ac5af41e4b73faa3f560347a commit ec1edf13b15179e2ac5af41e4b73faa3f560347a Author: Alexander V. Chernikov AuthorDate: 2023-03-09 14:33:26 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:05:43 +0000 netlink: add basic message writing support to snl(3). Differential Revision: https://reviews.freebsd.org/D38947 MFC after: 2 weeks (cherry picked from commit 76f6d391504b040528882a908147e47ea90b7b90) --- sys/netlink/netlink_snl.h | 324 ++++++++++++++++++++++++++++++++++++++++ sys/netlink/netlink_snl_route.h | 36 +++++ 2 files changed, 360 insertions(+) diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index 3c63e3f95419..19b3e2f985f3 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -124,6 +124,7 @@ struct snl_state { struct linear_buffer *lb; }; #define SCRATCH_BUFFER_SIZE 1024 +#define SNL_WRITER_BUFFER_SIZE 256 typedef void snl_parse_field_f(struct snl_state *ss, void *hdr, void *target); struct snl_field_parser { @@ -294,6 +295,30 @@ snl_read_message(struct snl_state *ss) return (hdr); } +static inline struct nlmsghdr * +snl_read_reply(struct snl_state *ss, uint32_t nlmsg_seq) +{ + while (true) { + struct nlmsghdr *hdr = snl_read_message(ss); + if (hdr == NULL) + break; + if (hdr->nlmsg_seq == nlmsg_seq) + return (hdr); + } + + return (NULL); +} + +static inline struct nlmsghdr * +snl_get_reply(struct snl_state *ss, struct nlmsghdr *hdr) +{ + uint32_t nlmsg_seq = hdr->nlmsg_seq; + + if (snl_send(ss, hdr, hdr->nlmsg_len)) + return (snl_read_reply(ss, nlmsg_seq)); + return (NULL); +} + /* * Checks that attributes are sorted by attribute type. */ @@ -511,4 +536,303 @@ snl_field_get_uint32(struct snl_state *ss __unused, void *src, void *target) *((uint32_t *)target) = *((uint32_t *)src); } +struct snl_errmsg_data { + uint32_t nlmsg_seq; + int error; + char *error_str; + uint32_t error_offs; + struct nlattr *cookie; +}; +#define _IN(_field) offsetof(struct nlmsgerr, _field) +#define _OUT(_field) offsetof(struct snl_errmsg_data, _field) +static const struct snl_attr_parser nla_p_errmsg[] = { + { .type = NLMSGERR_ATTR_MSG, .off = _OUT(error_str), .cb = snl_attr_get_string }, + { .type = NLMSGERR_ATTR_OFFS, .off = _OUT(error_offs), .cb = snl_attr_get_uint32 }, + { .type = NLMSGERR_ATTR_COOKIE, .off = _OUT(cookie), .cb = snl_attr_get_nla }, +}; + +static const struct snl_field_parser nlf_p_errmsg[] = { + { .off_in = _IN(error), .off_out = _OUT(error), .cb = snl_field_get_uint32 }, + { .off_in = _IN(msg.nlmsg_seq), .off_out = _OUT(nlmsg_seq), .cb = snl_field_get_uint32 }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_PARSER(snl_errmsg_parser, struct nlmsgerr, nlf_p_errmsg, nla_p_errmsg); + +static inline bool +snl_check_return(struct snl_state *ss, struct nlmsghdr *hdr, struct snl_errmsg_data *e) +{ + if (hdr != NULL && hdr->nlmsg_type == NLMSG_ERROR) + return (snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)); + return (false); +} + +/* writer logic */ +struct snl_writer { + char *base; + uint32_t offset; + uint32_t size; + struct nlmsghdr *hdr; + struct snl_state *ss; + bool error; +}; + +static inline void +snl_init_writer(struct snl_state *ss, struct snl_writer *nw) +{ + nw->size = SNL_WRITER_BUFFER_SIZE; + nw->base = snl_allocz(ss, nw->size); + if (nw->base == NULL) { + nw->error = true; + nw->size = 0; + } + + nw->offset = 0; + nw->hdr = NULL; + nw->error = false; + nw->ss = ss; +} + +static inline bool +snl_realloc_msg_buffer(struct snl_writer *nw, size_t sz) +{ + uint32_t new_size = nw->size * 2; + + while (new_size < nw->size + sz) + new_size *= 2; + + if (nw->error) + return (false); + + void *new_base = snl_allocz(nw->ss, new_size); + if (new_base == NULL) { + nw->error = true; + return (false); + } + + memcpy(new_base, nw->base, nw->offset); + if (nw->hdr != NULL) { + int hdr_off = (char *)(nw->hdr) - nw->base; + nw->hdr = (struct nlmsghdr *)(void *)((char *)new_base + hdr_off); + } + nw->base = new_base; + + return (true); +} + +static inline void * +snl_reserve_msg_data_raw(struct snl_writer *nw, size_t sz) +{ + sz = NETLINK_ALIGN(sz); + + if (__predict_false(nw->offset + sz > nw->size)) { + if (!snl_realloc_msg_buffer(nw, sz)) + return (NULL); + } + + void *data_ptr = &nw->base[nw->offset]; + nw->offset += sz; + + return (data_ptr); +} +#define snl_reserve_msg_object(_ns, _t) ((_t *)snl_reserve_msg_data_raw(_ns, sizeof(_t))) +#define snl_reserve_msg_data(_ns, _sz, _t) ((_t *)snl_reserve_msg_data_raw(_ns, _sz)) + +static inline void * +_snl_reserve_msg_attr(struct snl_writer *nw, uint16_t nla_type, uint16_t sz) +{ + sz += sizeof(struct nlattr); + + struct nlattr *nla = snl_reserve_msg_data(nw, sz, struct nlattr); + if (__predict_false(nla == NULL)) + return (NULL); + nla->nla_type = nla_type; + nla->nla_len = sz; + + return ((void *)(nla + 1)); +} +#define snl_reserve_msg_attr(_ns, _at, _t) ((_t *)_snl_reserve_msg_attr(_ns, _at, sizeof(_t))) + +static inline bool +snl_add_msg_attr(struct snl_writer *nw, int attr_type, int attr_len, const void *data) +{ + int required_len = NLA_ALIGN(attr_len + sizeof(struct nlattr)); + + if (__predict_false(nw->offset + required_len > nw->size)) { + if (!snl_realloc_msg_buffer(nw, required_len)) + return (false); + } + + struct nlattr *nla = (struct nlattr *)(&nw->base[nw->offset]); + + nla->nla_len = attr_len + sizeof(struct nlattr); + nla->nla_type = attr_type; + if (attr_len > 0) { + if ((attr_len % 4) != 0) { + /* clear padding bytes */ + bzero((char *)nla + required_len - 4, 4); + } + memcpy((nla + 1), data, attr_len); + } + nw->offset += required_len; + return (true); +} + +static inline bool +snl_add_msg_attr_raw(struct snl_writer *nw, const struct nlattr *nla_src) +{ + int attr_len = nla_src->nla_len - sizeof(struct nlattr); + + assert(attr_len >= 0); + + return (snl_add_msg_attr(nw, nla_src->nla_type, attr_len, (const void *)(nla_src + 1))); +} + +static inline bool +snl_add_msg_attr_u8(struct snl_writer *nw, int attrtype, uint8_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(uint8_t), &value)); +} + +static inline bool +snl_add_msg_attr_u16(struct snl_writer *nw, int attrtype, uint16_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(uint16_t), &value)); +} + +static inline bool +snl_add_msg_attr_u32(struct snl_writer *nw, int attrtype, uint32_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(uint32_t), &value)); +} + +static inline bool +snl_add_msg_attr_u64(struct snl_writer *nw, int attrtype, uint64_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(uint64_t), &value)); +} + +static inline bool +snl_add_msg_attr_s8(struct snl_writer *nw, int attrtype, int8_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(int8_t), &value)); +} + +static inline bool +snl_add_msg_attr_s16(struct snl_writer *nw, int attrtype, int16_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(int16_t), &value)); +} + +static inline bool +snl_add_msg_attr_s32(struct snl_writer *nw, int attrtype, int32_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(int32_t), &value)); +} + +static inline bool +snl_add_msg_attr_s64(struct snl_writer *nw, int attrtype, int64_t value) +{ + return (snl_add_msg_attr(nw, attrtype, sizeof(int64_t), &value)); +} + +static inline bool +snl_add_msg_attr_flag(struct snl_writer *nw, int attrtype) +{ + return (snl_add_msg_attr(nw, attrtype, 0, NULL)); +} + +static inline bool +snl_add_msg_attr_string(struct snl_writer *nw, int attrtype, const char *str) +{ + return (snl_add_msg_attr(nw, attrtype, strlen(str) + 1, str)); +} + + +static inline int +snl_get_msg_offset(const struct snl_writer *nw) +{ + return (nw->offset - ((char *)nw->hdr - nw->base)); +} + +static inline void * +_snl_restore_msg_offset(const struct snl_writer *nw, int off) +{ + return ((void *)((char *)nw->hdr + off)); +} +#define snl_restore_msg_offset(_ns, _off, _t) ((_t *)_snl_restore_msg_offset(_ns, _off)) + +static inline int +snl_add_msg_attr_nested(struct snl_writer *nw, int attrtype) +{ + int off = snl_get_msg_offset(nw); + struct nlattr *nla = snl_reserve_msg_data(nw, sizeof(struct nlattr), struct nlattr); + if (__predict_false(nla == NULL)) + return (0); + nla->nla_type = attrtype; + return (off); +} + +static inline void +snl_end_attr_nested(const struct snl_writer *nw, int off) +{ + if (!nw->error) { + struct nlattr *nla = snl_restore_msg_offset(nw, off, struct nlattr); + nla->nla_len = NETLINK_ALIGN(snl_get_msg_offset(nw) - off); + } +} + +static inline struct nlmsghdr * +snl_create_msg_request(struct snl_writer *nw, int nlmsg_type) +{ + assert(nw->hdr == NULL); + + struct nlmsghdr *hdr = snl_reserve_msg_object(nw, struct nlmsghdr); + hdr->nlmsg_type = nlmsg_type; + hdr->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; + nw->hdr = hdr; + + return (hdr); +} + +static void +snl_abort_msg(struct snl_writer *nw) +{ + if (nw->hdr != NULL) { + int offset = (char *)(&nw->base[nw->offset]) - (char *)(nw->hdr); + + nw->offset -= offset; + nw->hdr = NULL; + } +} + +static inline struct nlmsghdr * +snl_finalize_msg(struct snl_writer *nw) +{ + if (nw->error) + snl_abort_msg(nw); + if (nw->hdr != NULL) { + struct nlmsghdr *hdr = nw->hdr; + + int offset = (char *)(&nw->base[nw->offset]) - (char *)(nw->hdr); + hdr->nlmsg_len = offset; + hdr->nlmsg_seq = snl_get_seq(nw->ss); + nw->hdr = NULL; + + return (hdr); + } + return (NULL); +} + +static bool +snl_send_msgs(struct snl_writer *nw) +{ + int offset = nw->offset; + + assert(nw->hdr == NULL); + nw->offset = 0; + + return (snl_send(nw->ss, nw->base, offset)); +} + #endif diff --git a/sys/netlink/netlink_snl_route.h b/sys/netlink/netlink_snl_route.h index 4adb3d697ecd..281794a9d6f7 100644 --- a/sys/netlink/netlink_snl_route.h +++ b/sys/netlink/netlink_snl_route.h @@ -127,4 +127,40 @@ snl_attr_get_ipvia(struct snl_state *ss, struct nlattr *nla, return (false); } +static inline bool +snl_add_msg_attr_ip(struct snl_writer *nw, int attrtype, const struct sockaddr *sa) +{ + const void *addr; + + switch (sa->sa_family) { + case AF_INET: + addr = &((const struct sockaddr_in *)sa)->sin_addr; + return (snl_add_msg_attr(nw, attrtype, 4, addr)); + case AF_INET6: + addr = &((const struct sockaddr_in6 *)sa)->sin6_addr; + return (snl_add_msg_attr(nw, attrtype, 16, addr)); + } + + return (false); +} + +static inline bool +snl_add_msg_attr_ipvia(struct snl_writer *nw, int attrtype, const struct sockaddr *sa) +{ + char buf[17]; + + buf[0] = sa->sa_family; + + switch (sa->sa_family) { + case AF_INET: + memcpy(&buf[1], &((const struct sockaddr_in *)sa)->sin_addr, 4); + return (snl_add_msg_attr(nw, attrtype, 5, buf)); + case AF_INET6: + memcpy(&buf[1], &((const struct sockaddr_in6 *)sa)->sin6_addr, 16); + return (snl_add_msg_attr(nw, attrtype, 17, buf)); + } + + return (false); +} + #endif From nobody Sat Apr 8 19:44:51 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Kv5cyHz44nmR; Sat, 8 Apr 2023 19:44: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 4Pv5Kv2RZpz43yD; Sat, 8 Apr 2023 19:44:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hqur3bneWuTxwKg99P2qwAeBcB2Mg/FeJkCCoB/Lp7M=; b=RXwAIy0yD+kLQ448N3/XR0QtuVeM8zpOWUmFpife0rI7gsVboI77FayImFIyom19Q/Jsig M54t1gysbSkjV4qmDsj3LDidI7V7QTDu9ctCBHaEhBWglqvcD9MjBUVmdTeJAxQkxxa8WJ uOBko2di1Wsaj+ntBPWQ3gB3x5HMrKIGmigESD5bWLXh703+/IZq5xe5f5ZKvZtXQZTbe3 7QjD9h2v+aexMP8AfOqjkUR8OVbAN/qGVM9uTZGVuQU2sYYX4nY1gFtT66O/qn/wFPnBo2 ZKbu9/8dGbqLh9noGPRyXFY7UffG7yvFmW43/Hgr4DzoXLrZAZJwTijzRW9pjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hqur3bneWuTxwKg99P2qwAeBcB2Mg/FeJkCCoB/Lp7M=; b=KeCAU1P4HyQWs+bXVB/0k0vdLVA7Qdk46bLdvaVgPIaLghRxHVGH1G8bUHr2kiQvOXvc/4 V4z2rOJSerdGIFYMwp5E0Kjj8zzqPYndvoQq2+1PHkBvuE1ohma+SDFoN71QYoT2n+lRDp lQ7sUoNzBxyNz0btOltJdjt3oVjVYeAil81WppEodNevWYibdgHJ9HPo1f2YkGpN162QNm 5/M84icppYs9fJHsswMyDZT0AiyUG0mezfwiolAM9E7F2LGijniP5fnH9Cip8mPmSlak7B xRWGWBi2vsfToSRrz4j5OUKCqjDGkft1obGcojzPn2mTSwUlxxu7Z31GhZ/IXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983091; a=rsa-sha256; cv=none; b=IQ6rIWChqbQ2FwiVhXovqyCbG2cuJQV1nJjFo7HKUml41rXPTvMvLnkrdimplqkJiBSva2 26gMNvtjRHAMmpRp0d2fGk3xZvK7fAbYDVhjXKbtyRklmSxrfGirT0OJ2yDIbLUT74AiYo ES1MAO/0zfLx8OVV8kCTFk6c+ssvJPdpiQRxkFIrGsF92NEN0vaymM1NA+e3lsogxIZIRN WqezDdz6OeY1bEH/eumHgswpqd1CWICRyXLE25PjtEuMB5oj8FqB2TG7t1quuaeSNqYNWC lLTOU0z6FeAsjcFtqjorKODUKuBX8UY2A4YF89YYoBtTGcaEnbJWi8KstFs0xg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kv1F2CzfSx; Sat, 8 Apr 2023 19: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 338JipO8018712; Sat, 8 Apr 2023 19: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 338JipsR018711; Sat, 8 Apr 2023 19:44:51 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:51 GMT Message-Id: <202304081944.338JipsR018711@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 96a0db365f5d - stable/13 - netlink: add rtsock-compatible header to use with netlink snl(3). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 96a0db365f5d315fd97b480bb3ecc84cba296d8d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=96a0db365f5d315fd97b480bb3ecc84cba296d8d commit 96a0db365f5d315fd97b480bb3ecc84cba296d8d Author: Alexander V. Chernikov AuthorDate: 2023-03-09 14:36:52 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:05:50 +0000 netlink: add rtsock-compatible header to use with netlink snl(3). Some routing socket defines (`RTM_` and `RTA_` ones) clash with the ones used by the the Netlink. As some rtsock definitions like interface flags or route flags are used in both netlink and rtsock, provide a convenient way to include those without running into the define collision. Differential Revision: https://reviews.freebsd.org/D38982 MFC after: 2 weeks (cherry picked from commit 90d625122886a2db5b66d248807b89f4a0270466) --- sys/net/route.h | 7 +++++ sys/netlink/netlink_snl_route_compat.h | 50 ++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/sys/net/route.h b/sys/net/route.h index 3dac437426b0..870ebbc0bc75 100644 --- a/sys/net/route.h +++ b/sys/net/route.h @@ -268,6 +268,7 @@ struct rt_msghdr { #define RTM_VERSION 5 /* Up the ante and ignore older versions */ +#ifndef NETLINK_COMPAT /* * Message types. * @@ -300,6 +301,8 @@ struct rt_msghdr { #define RTM_IFANNOUNCE 0x11 /* (5) iface arrival/departure */ #define RTM_IEEE80211 0x12 /* (5) IEEE80211 wireless event */ +#endif /* NETLINK_COMPAT*/ + /* * Bitmask values for rtm_inits and rmx_locks. */ @@ -313,6 +316,8 @@ struct rt_msghdr { #define RTV_RTTVAR 0x80 /* init or lock _rttvar */ #define RTV_WEIGHT 0x100 /* init or lock _weight */ +#ifndef NETLINK_COMPAT + /* * Bitmask values for rtm_addrs. */ @@ -325,6 +330,8 @@ struct rt_msghdr { #define RTA_AUTHOR 0x40 /* sockaddr for author of redirect */ #define RTA_BRD 0x80 /* for NEWADDR, broadcast or p-p dest addr */ +#endif /* NETLINK_COMPAT*/ + /* * Index offsets for sockaddr array for alternate internal encoding. */ diff --git a/sys/netlink/netlink_snl_route_compat.h b/sys/netlink/netlink_snl_route_compat.h new file mode 100644 index 000000000000..51904abb4003 --- /dev/null +++ b/sys/netlink/netlink_snl_route_compat.h @@ -0,0 +1,50 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2023 Alexander V. Chernikov + * + * 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. + */ +#ifndef _NETLINK_NETLINK_SNL_ROUTE_COMPAT_H_ +#define _NETLINK_NETLINK_SNL_ROUTE_COMPAT_H_ + +/* + * This file contains netlink-compatible definitions from the + * net/route.h header. + */ +#define NETLINK_COMPAT + +#include + +#define RTSOCK_RTM_ADD 0x1 +#define RTSOCK_RTM_DELETE 0x2 +#define RTSOCK_RTM_CHANGE 0x3 +#define RTSOCK_RTM_GET 0x4 +#define RTSOCK_RTM_NEWADDR 0xc +#define RTSOCK_RTM_DELADDR 0xd +#define RTSOCK_RTM_IFINFO 0xe +#define RTSOCK_RTM_NEWMADDR 0xf +#define RTSOCK_RTM_DELMADDR 0x10 +#define RTSOCK_RTM_IFANNOUNCE 0x11 +#define RTSOCK_RTM_IEEE80211 0x12 + +#endif From nobody Sat Apr 8 19:44:52 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Kx28Dzz44nb5; Sat, 8 Apr 2023 19:44: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 4Pv5Kw6jP5z4400; Sat, 8 Apr 2023 19:44:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983092; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1+Wr+MfHJiD3atrUPWPcEB+N6pDtXKuheiM5SfyrJok=; b=fE7/wYu2nCAIWF7cAs4cDsrUtznLQkrH4mNe/BAPapcUMUZG83/hus4mwZLIgipZjWmRtu feXqmL4NLy6nGm4cPKbSFKMjkwIEn4J7h7seivhusYxF2BhcpoXOKr3p8eddbo18NzCWjD cQ/dGWRmO7gxGM37ffHLDotJaVbQzN7AdA0eZTCamY1GIEKiQJAS/q2cAk6esQrhfFfHK9 soCbGSR+FCMDpbRhE5AcPbCnEUWzROLB43GISMG7YxNYroct626ST1R/2C6dRKYgDSxq8A AQPHC3lItYRTh2ySLCf1MG6e59M4RdkrLLYNVZ8bP1c+DRPcZ1qTvctUyB8P/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983093; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1+Wr+MfHJiD3atrUPWPcEB+N6pDtXKuheiM5SfyrJok=; b=j/m1H/WI13M5cyoFlMHRR1QD3FHRSwwKIycRgn3pVn1dR7tX42mQr4NAWC/lo7WFU2U0WN 1tL/saeGiA6d97OVNbNZg2OYE3elaRxK7mmGcEGIM9kpoDxUveatzDDKi68F4JkQr9vj0v aUct1ViqioQAu92v8LQo5dDwSdOdL8h7mKPDF2bT/aj0tfFDkmggREQ7mJwbeWMeiCdWHp llDjC4wIkX+ZqhkH8uUlZJFJB6y4yvjKSjkF0j7AXZR+uwD79t3cNGWio1UDk4qvivpym8 uZw6TryEJRO6liJ0ZbD7ncIF1GjDM5k19nnB2OCrrw8ejyBwvEJPVH63rnN8Ww== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983093; a=rsa-sha256; cv=none; b=RNtPtwwZXLsOgj1qx6S0UsMrOB29eu23CODum0Wi5OpZ1WHY4AgpzwLkmptR/cDteA4PnX HvcnWDtkFGRfSIwFIBeo+eANueLfL8jFARzWTMtuH1exrAS7CLqsRn7gJ5LMr22L2udewi UnXVownwKfz+BSMUog0Q4umZB5Dp6163yGa+1ri+jF3f5I/p2p1LZnI0qFAOM80hD1RqBL fImXfLhI1XP503mKs839F/vbmSyxX4NVk86u2DxFzaCeC2/G8B0rIv2W28OIuyKGIPEOPr lRjtw1Gd8PLuuEhp6L4VxcRzZvZf5G+xxldVxoS+xdHbPiSkWJ6M2RrQGoearg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kw2CkMzg3L; Sat, 8 Apr 2023 19:44: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 338Jiqp2018733; Sat, 8 Apr 2023 19:44:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jiq7r018732; Sat, 8 Apr 2023 19:44:52 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:52 GMT Message-Id: <202304081944.338Jiq7r018732@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 22b7b3250b2e - stable/13 - netlink: add snl(3) default parsers for routes and links. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 22b7b3250b2ef5ba98500601221dbc1461b3652b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=22b7b3250b2ef5ba98500601221dbc1461b3652b commit 22b7b3250b2ef5ba98500601221dbc1461b3652b Author: Alexander V. Chernikov AuthorDate: 2023-03-09 14:43:56 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:06:01 +0000 netlink: add snl(3) default parsers for routes and links. This change adds the "default" parsers of _all_ route/link attributes exported by the kernel. It removes the need to declare similar parsers in the userland applications, simplifying their logic. Differential Revision: https://reviews.freebsd.org/D38979 MFC after: 2 weeks (cherry picked from commit 595d23f777dc24cb285b072c596ca96bbc2db3cd) --- sys/netlink/netlink_snl.h | 14 ++ sys/netlink/netlink_snl_route_parsers.h | 222 ++++++++++++++++++++++++++++++++ tests/sys/netlink/test_snl.c | 13 ++ 3 files changed, 249 insertions(+) diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index 19b3e2f985f3..4e6524783310 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -518,6 +518,20 @@ snl_attr_get_nla(struct snl_state *ss __unused, struct nlattr *nla, return (true); } +static inline bool +snl_attr_copy_struct(struct snl_state *ss, struct nlattr *nla, + const void *arg __unused, void *target) +{ + void *ptr = snl_allocz(ss, NLA_DATA_LEN(nla)); + + if (ptr != NULL) { + memcpy(ptr, NLA_DATA(nla), NLA_DATA_LEN(nla)); + *((void **)target) = ptr; + return (true); + } + return (false); +} + static inline void snl_field_get_uint8(struct snl_state *ss __unused, void *src, void *target) { diff --git a/sys/netlink/netlink_snl_route_parsers.h b/sys/netlink/netlink_snl_route_parsers.h new file mode 100644 index 000000000000..a76fb7da8ec2 --- /dev/null +++ b/sys/netlink/netlink_snl_route_parsers.h @@ -0,0 +1,222 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2023 Alexander V. Chernikov + * + * 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. + */ +#ifndef _NETLINK_NETLINK_SNL_ROUTE_PARSERS_H_ +#define _NETLINK_NETLINK_SNL_ROUTE_PARSERS_H_ + +#include +#include + +/* TODO: this file should be generated automatically */ + +/* RTM_ROUTE message parser */ + +struct rta_mpath_nh { + struct sockaddr *gw; + uint32_t ifindex; + uint8_t rtnh_flags; + uint8_t rtnh_weight; + uint32_t rtax_mtu; + uint32_t rta_rtflags; +}; + +#define _IN(_field) offsetof(struct rtnexthop, _field) +#define _OUT(_field) offsetof(struct rta_mpath_nh, _field) +static const struct snl_attr_parser _nla_p_mp_nh_metrics[] = { + { .type = NL_RTAX_MTU, .off = _OUT(rtax_mtu), .cb = snl_attr_get_uint32 }, +}; +SNL_DECLARE_ATTR_PARSER(_metrics_mp_nh_parser, _nla_p_mp_nh_metrics); + +static const struct snl_attr_parser _nla_p_mp_nh[] = { + { .type = NL_RTA_GATEWAY, .off = _OUT(gw), .cb = snl_attr_get_ip }, + { .type = NL_RTA_METRICS, .arg = &_metrics_mp_nh_parser, .cb = snl_attr_get_nested }, + { .type = NL_RTA_RTFLAGS, .off = _OUT(rta_rtflags), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_VIA, .off = _OUT(gw), .cb = snl_attr_get_ipvia }, +}; + +static const struct snl_field_parser _fp_p_mp_nh[] = { + { .off_in = _IN(rtnh_flags), .off_out = _OUT(rtnh_flags), .cb = snl_field_get_uint8 }, + { .off_in = _IN(rtnh_hops), .off_out = _OUT(rtnh_weight), .cb = snl_field_get_uint8 }, + { .off_in = _IN(rtnh_ifindex), .off_out = _OUT(ifindex), .cb = snl_field_get_uint32 }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_PARSER(_mpath_nh_parser, struct rtnexthop, _fp_p_mp_nh, _nla_p_mp_nh); + +struct rta_mpath { + int num_nhops; + struct rta_mpath_nh nhops[0]; +}; + +static bool +nlattr_get_multipath(struct snl_state *ss, struct nlattr *nla, const void *arg, void *target) +{ + int data_len = nla->nla_len - sizeof(struct nlattr); + struct rtnexthop *rtnh; + + int max_nhops = data_len / sizeof(struct rtnexthop); + size_t sz = (max_nhops + 2) * sizeof(struct rta_mpath_nh); + + struct rta_mpath *mp = snl_allocz(ss, sz); + mp->num_nhops = 0; + + for (rtnh = (struct rtnexthop *)(nla + 1); data_len > 0; ) { + struct rta_mpath_nh *mpnh = &mp->nhops[mp->num_nhops++]; + + if (!snl_parse_header(ss, rtnh, rtnh->rtnh_len, &_mpath_nh_parser, mpnh)) + return (false); + + int len = NL_ITEM_ALIGN(rtnh->rtnh_len); + data_len -= len; + rtnh = (struct rtnexthop *)((char *)rtnh + len); + } + if (data_len != 0 || mp->num_nhops == 0) { + return (false); + } + + *((struct rta_mpath **)target) = mp; + return (true); +} + +struct snl_parsed_route { + struct sockaddr *rta_dst; + struct sockaddr *rta_gw; + struct nlattr *rta_metrics; + struct rta_mpath *rta_multipath; + uint32_t rta_expires; + uint32_t rta_oif; + uint32_t rta_expire; + uint32_t rta_table; + uint32_t rta_knh_id; + uint32_t rta_nh_id; + uint32_t rta_rtflags; + uint32_t rtax_mtu; + uint32_t rtax_weight; + uint8_t rtm_family; + uint8_t rtm_type; + uint8_t rtm_protocol; + uint8_t rtm_dst_len; +}; + +#define _IN(_field) offsetof(struct rtmsg, _field) +#define _OUT(_field) offsetof(struct snl_parsed_route, _field) +static const struct snl_attr_parser _nla_p_rtmetrics[] = { + { .type = NL_RTAX_MTU, .off = _OUT(rtax_mtu), .cb = snl_attr_get_uint32 }, +}; +SNL_DECLARE_ATTR_PARSER(_metrics_parser, _nla_p_rtmetrics); + +static const struct snl_attr_parser _nla_p_route[] = { + { .type = NL_RTA_DST, .off = _OUT(rta_dst), .cb = snl_attr_get_ip }, + { .type = NL_RTA_OIF, .off = _OUT(rta_oif), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_GATEWAY, .off = _OUT(rta_gw), .cb = snl_attr_get_ip }, + { .type = NL_RTA_METRICS, .arg = &_metrics_parser, .cb = snl_attr_get_nested }, + { .type = NL_RTA_MULTIPATH, .off = _OUT(rta_multipath), .cb = nlattr_get_multipath }, + { .type = NL_RTA_KNH_ID, .off = _OUT(rta_knh_id), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_WEIGHT, .off = _OUT(rtax_weight), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_RTFLAGS, .off = _OUT(rta_rtflags), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_TABLE, .off = _OUT(rta_table), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_VIA, .off = _OUT(rta_gw), .cb = snl_attr_get_ipvia }, + { .type = NL_RTA_EXPIRES, .off = _OUT(rta_expire), .cb = snl_attr_get_uint32 }, + { .type = NL_RTA_NH_ID, .off = _OUT(rta_nh_id), .cb = snl_attr_get_uint32 }, +}; + +static const struct snl_field_parser _fp_p_route[] = { + {.off_in = _IN(rtm_family), .off_out = _OUT(rtm_family), .cb = snl_field_get_uint8 }, + {.off_in = _IN(rtm_type), .off_out = _OUT(rtm_type), .cb = snl_field_get_uint8 }, + {.off_in = _IN(rtm_protocol), .off_out = _OUT(rtm_protocol), .cb = snl_field_get_uint8 }, + {.off_in = _IN(rtm_dst_len), .off_out = _OUT(rtm_dst_len), .cb = snl_field_get_uint8 }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_PARSER(snl_rtm_route_parser, struct rtmsg, _fp_p_route, _nla_p_route); + +/* RTM_LINK message parser */ +struct snl_parsed_link { + uint32_t ifi_index; + uint32_t ifi_flags; + uint32_t ifi_change; + uint16_t ifi_type; + uint8_t ifla_operstate; + uint8_t ifla_carrier; + uint32_t ifla_mtu; + char *ifla_ifname; + struct nlattr *ifla_address; + struct nlattr *ifla_broadcast; + char *ifla_ifalias; + uint32_t ifla_promiscuity; + struct rtnl_link_stats64 *ifla_stats64; +}; + +#define _IN(_field) offsetof(struct ifinfomsg, _field) +#define _OUT(_field) offsetof(struct snl_parsed_link, _field) +static const struct snl_attr_parser _nla_p_link[] = { + { .type = IFLA_ADDRESS, .off = _OUT(ifla_address), .cb = snl_attr_get_nla }, + { .type = IFLA_BROADCAST, .off = _OUT(ifla_broadcast), .cb = snl_attr_get_nla }, + { .type = IFLA_IFNAME, .off = _OUT(ifla_ifname), .cb = snl_attr_get_string }, + { .type = IFLA_MTU, .off = _OUT(ifla_mtu), .cb = snl_attr_get_uint32 }, + { .type = IFLA_OPERSTATE, .off = _OUT(ifla_operstate), .cb = snl_attr_get_uint8 }, + { .type = IFLA_IFALIAS, .off = _OUT(ifla_ifalias), .cb = snl_attr_get_string }, + { .type = IFLA_STATS64, .off = _OUT(ifla_stats64), .cb = snl_attr_copy_struct }, + { .type = IFLA_PROMISCUITY, .off = _OUT(ifla_promiscuity), .cb = snl_attr_get_uint32 }, + { .type = IFLA_CARRIER, .off = _OUT(ifla_carrier), .cb = snl_attr_get_uint8 }, +}; +static const struct snl_field_parser _fp_p_link[] = { + {.off_in = _IN(ifi_index), .off_out = _OUT(ifi_index), .cb = snl_field_get_uint32 }, + {.off_in = _IN(ifi_flags), .off_out = _OUT(ifi_flags), .cb = snl_field_get_uint32 }, + {.off_in = _IN(ifi_change), .off_out = _OUT(ifi_change), .cb = snl_field_get_uint32 }, + {.off_in = _IN(ifi_type), .off_out = _OUT(ifi_type), .cb = snl_field_get_uint16 }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_PARSER(snl_rtm_link_parser, struct ifinfomsg, _fp_p_link, _nla_p_link); + +struct snl_parsed_link_simple { + uint32_t ifi_index; + uint32_t ifla_mtu; + uint16_t ifi_type; + char *ifla_ifname; +}; + +#define _IN(_field) offsetof(struct ifinfomsg, _field) +#define _OUT(_field) offsetof(struct snl_parsed_link_simple, _field) +static struct snl_attr_parser _nla_p_link_s[] = { + { .type = IFLA_IFNAME, .off = _OUT(ifla_ifname), .cb = snl_attr_get_string }, + { .type = IFLA_MTU, .off = _OUT(ifla_mtu), .cb = snl_attr_get_uint32 }, +}; +static struct snl_field_parser _fp_p_link_s[] = { + {.off_in = _IN(ifi_index), .off_out = _OUT(ifi_index), .cb = snl_field_get_uint32 }, + {.off_in = _IN(ifi_type), .off_out = _OUT(ifi_type), .cb = snl_field_get_uint16 }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_PARSER(snl_rtm_link_parser_simple, struct ifinfomsg, _fp_p_link_s, _nla_p_link_s); + +static const struct snl_hdr_parser *snl_all_route_parsers[] = { + &_metrics_mp_nh_parser, &_mpath_nh_parser, &_metrics_parser, &snl_rtm_route_parser, + &snl_rtm_link_parser, &snl_rtm_link_parser_simple, +}; + +#endif diff --git a/tests/sys/netlink/test_snl.c b/tests/sys/netlink/test_snl.c index d917d81d967d..daacc1aaacec 100644 --- a/tests/sys/netlink/test_snl.c +++ b/tests/sys/netlink/test_snl.c @@ -9,6 +9,7 @@ #include #include "netlink/netlink_snl.h" #include "netlink/netlink_snl_route.h" +#include "netlink/netlink_snl_route_parsers.h" #include @@ -19,6 +20,17 @@ require_netlink(void) atf_tc_skip("netlink module not loaded"); } +ATF_TC(snl_verify_parsers); +ATF_TC_HEAD(snl_verify_parsers, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests snl(3) parsers are correct"); +} + +ATF_TC_BODY(snl_verify_parsers, tc) +{ + SNL_VERIFY_PARSERS(snl_all_route_parsers); + +} ATF_TC(snl_list_ifaces); ATF_TC_HEAD(snl_list_ifaces, tc) @@ -87,6 +99,7 @@ ATF_TC_BODY(snl_list_ifaces, tc) ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, snl_list_ifaces); + ATF_TP_ADD_TC(tp, snl_verify_parsers); return (atf_no_error()); } From nobody Sat Apr 8 19:44:53 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Ky0319z44nXl; Sat, 8 Apr 2023 19:44: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 4Pv5Kx55qMz440N; Sat, 8 Apr 2023 19:44:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983093; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=h20CPFKSwl0e8kZ8Sqsbb8L7WLCA3Ixkgg0f4ntRUCc=; b=I7FoSWIAgsY1inbqZlZh99dvqPfwolbey0Nuf6qjyxY++uxyEv7YtHPByJtuxDqJUvrxmA ruWgU+wFmV9doqRfwZHCMcVdjtGPzdnEWVG/vuGC22v5LdlIixuLysRh4tJ8X4phf853IS gHPdRBOrqeDVZC+EIgiX+oLvXHqiPUFq0NI1UFjspuO3I5eRBEjsWgqYq/3E/XpwWxEFqq WveFHXW5/Axn9nZBk1fAq+xfIjBMg43xAlluCpX2VHa6pcAtC7Rq55yInQiZF43vPq9Jrd hitEgnDoltXrugeSRr32FDgLhOiO78rM63oMP1upDyYhgb908uRSJDcadk7BfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983093; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=h20CPFKSwl0e8kZ8Sqsbb8L7WLCA3Ixkgg0f4ntRUCc=; b=cL6WOgINEhBUCgaBsrG0WVw6055JUv2rBpOYjlKHUIrWmn7OtoqUJMtNEyScUYzOzyuOeG QRNaU9fvfS+SWHjYs6619mXMsCtlrS1LDM3gp0zDvyUBLrYvpiAc+4DIAuYALiOIkYWiYw p19BU/AkdAd3eU4bjRiFhU6nx9h0yNWO5Vp4Mv3A0Uvpad6bmK5vK3JpbuvzM6iw30Zdb6 asWOjfneQh1UNTg+Pn22uc+3gRNDVpJ8DOhTb2Q9vJZf7ORMdoAfhfRRY8vH7cewIY/UMk hj3yA7SoNciM4niMdNQsLV8JfpIsvyHWuO2gLWjYprvPHTv3p7f8eLJwV4NbwA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983093; a=rsa-sha256; cv=none; b=oj5qhW21WCxRBe1kbnxQx05+IBkhu55ZVk0XGQ2YNnkMhBxuqdIh6oUiK4rr826Nu0u03A RN4xcnb1e8HcEniVHBGXRbxFs99M4wCRtPaGf2PKrcDu4GF8p+DHFNzPbhirlo0Wz92aPD 3yQScGI/al+9KpllynK6x/hk6Ky0+Nl8Vg5TQUD35nyLyh6I6O3sghc+f/nSTabisNfZFs mAwZothhz+EGm35rK+PP1GYfjKWCL/UFlNnt6oiC4e7jPQGz0GzUnovYEPWqbzGIb4zHfi KprQjGSyYIca+qek9YbZ50D2LWK1qIF8EDIVYixA17jcf0V692dKO8oW5r3Yww== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kx33gmzfss; Sat, 8 Apr 2023 19:44: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 338JirnE018752; Sat, 8 Apr 2023 19:44:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JirXw018751; Sat, 8 Apr 2023 19:44:53 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:53 GMT Message-Id: <202304081944.338JirXw018751@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 32bd3c9438e7 - stable/13 - fix buildworld after 595d23f777dc. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 32bd3c9438e725673e32aff2e95d534d080fe263 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=32bd3c9438e725673e32aff2e95d534d080fe263 commit 32bd3c9438e725673e32aff2e95d534d080fe263 Author: Alexander V. Chernikov AuthorDate: 2023-03-09 15:44:59 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:06:08 +0000 fix buildworld after 595d23f777dc. Reported by: se (cherry picked from commit da4047d3ba23201ae4049dccea1151bd6ca2d1df) --- sys/netlink/netlink_snl.h | 4 ++-- sys/netlink/netlink_snl_route.h | 8 ++++---- sys/netlink/netlink_snl_route_compat.h | 3 +++ sys/netlink/netlink_snl_route_parsers.h | 9 +++++---- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index 4e6524783310..31b90003b519 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -677,7 +677,7 @@ snl_add_msg_attr(struct snl_writer *nw, int attr_type, int attr_len, const void return (false); } - struct nlattr *nla = (struct nlattr *)(&nw->base[nw->offset]); + struct nlattr *nla = (struct nlattr *)(void *)(&nw->base[nw->offset]); nla->nla_len = attr_len + sizeof(struct nlattr); nla->nla_type = attr_type; @@ -838,7 +838,7 @@ snl_finalize_msg(struct snl_writer *nw) return (NULL); } -static bool +static inline bool snl_send_msgs(struct snl_writer *nw) { int offset = nw->offset; diff --git a/sys/netlink/netlink_snl_route.h b/sys/netlink/netlink_snl_route.h index 281794a9d6f7..e67bffde215e 100644 --- a/sys/netlink/netlink_snl_route.h +++ b/sys/netlink/netlink_snl_route.h @@ -134,10 +134,10 @@ snl_add_msg_attr_ip(struct snl_writer *nw, int attrtype, const struct sockaddr * switch (sa->sa_family) { case AF_INET: - addr = &((const struct sockaddr_in *)sa)->sin_addr; + addr = &((const struct sockaddr_in *)(const void *)sa)->sin_addr; return (snl_add_msg_attr(nw, attrtype, 4, addr)); case AF_INET6: - addr = &((const struct sockaddr_in6 *)sa)->sin6_addr; + addr = &((const struct sockaddr_in6 *)(const void *)sa)->sin6_addr; return (snl_add_msg_attr(nw, attrtype, 16, addr)); } @@ -153,10 +153,10 @@ snl_add_msg_attr_ipvia(struct snl_writer *nw, int attrtype, const struct sockadd switch (sa->sa_family) { case AF_INET: - memcpy(&buf[1], &((const struct sockaddr_in *)sa)->sin_addr, 4); + memcpy(&buf[1], &((const struct sockaddr_in *)(const void *)sa)->sin_addr, 4); return (snl_add_msg_attr(nw, attrtype, 5, buf)); case AF_INET6: - memcpy(&buf[1], &((const struct sockaddr_in6 *)sa)->sin6_addr, 16); + memcpy(&buf[1], &((const struct sockaddr_in6 *)(const void *)sa)->sin6_addr, 16); return (snl_add_msg_attr(nw, attrtype, 17, buf)); } diff --git a/sys/netlink/netlink_snl_route_compat.h b/sys/netlink/netlink_snl_route_compat.h index 51904abb4003..0314c5715e4f 100644 --- a/sys/netlink/netlink_snl_route_compat.h +++ b/sys/netlink/netlink_snl_route_compat.h @@ -27,6 +27,9 @@ #ifndef _NETLINK_NETLINK_SNL_ROUTE_COMPAT_H_ #define _NETLINK_NETLINK_SNL_ROUTE_COMPAT_H_ +#include +#include + /* * This file contains netlink-compatible definitions from the * net/route.h header. diff --git a/sys/netlink/netlink_snl_route_parsers.h b/sys/netlink/netlink_snl_route_parsers.h index a76fb7da8ec2..a370f89fb9e3 100644 --- a/sys/netlink/netlink_snl_route_parsers.h +++ b/sys/netlink/netlink_snl_route_parsers.h @@ -28,7 +28,7 @@ #define _NETLINK_NETLINK_SNL_ROUTE_PARSERS_H_ #include -#include +#include /* TODO: this file should be generated automatically */ @@ -72,7 +72,8 @@ struct rta_mpath { }; static bool -nlattr_get_multipath(struct snl_state *ss, struct nlattr *nla, const void *arg, void *target) +nlattr_get_multipath(struct snl_state *ss, struct nlattr *nla, const void *arg __unused, + void *target) { int data_len = nla->nla_len - sizeof(struct nlattr); struct rtnexthop *rtnh; @@ -83,7 +84,7 @@ nlattr_get_multipath(struct snl_state *ss, struct nlattr *nla, const void *arg, struct rta_mpath *mp = snl_allocz(ss, sz); mp->num_nhops = 0; - for (rtnh = (struct rtnexthop *)(nla + 1); data_len > 0; ) { + for (rtnh = (struct rtnexthop *)(void *)(nla + 1); data_len > 0; ) { struct rta_mpath_nh *mpnh = &mp->nhops[mp->num_nhops++]; if (!snl_parse_header(ss, rtnh, rtnh->rtnh_len, &_mpath_nh_parser, mpnh)) @@ -91,7 +92,7 @@ nlattr_get_multipath(struct snl_state *ss, struct nlattr *nla, const void *arg, int len = NL_ITEM_ALIGN(rtnh->rtnh_len); data_len -= len; - rtnh = (struct rtnexthop *)((char *)rtnh + len); + rtnh = (struct rtnexthop *)(void *)((char *)rtnh + len); } if (data_len != 0 || mp->num_nhops == 0) { return (false); From nobody Sat Apr 8 19:44:54 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5Ky66pwz44nb6; Sat, 8 Apr 2023 19:44: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 4Pv5Ky4gRPz442g; Sat, 8 Apr 2023 19:44:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983094; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KvasdEZgWuvGpIM2UDOesVUy5B1TxG9LqveY/OCE98A=; b=aXDPaptYirlJ+unbkcBLIYuxOyI6/1HNHjn6fb7adUVyUtS9HlDy2MqJt/jffhT2Yso3WS PWEC4pKwVQ/UxogTkpzqdxUWJ3diHtmo3QcduthOMKyRoejNwFzx5YeEZLrSr9QQdDmTf8 7xtYStJ7wUEYlOWTkSJ7vDjZ54s/ld1AMpW+V6Vtre0mSdHUtLJrzrXkRfkQW1ui+/G9UX 1HOQ+PbQSeNyhDOwc/s0resAWaTn19Xnu1cGuXV8YXZ6BEA9spCBmUgY65FirIGDqeH6Ro j7gUeBzRImXYzZx8sKYkQ7n+cIfDxvZbl1LjvLGS+PLncX7prlnrAdOpw9wSbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983094; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=KvasdEZgWuvGpIM2UDOesVUy5B1TxG9LqveY/OCE98A=; b=cnnTYjT/9P+MOc+hMuBJ/PLGNXVwknpJOjQTa4J95pXzlQ/BoNpAttyHE1rIUWNPyrUai9 4od0p1+92UbgHYgbCh7PTtimgIbzkwHGlyYWTxE2oOQ9Pl+1DDqLgNSg+lcowrW2pdG7nh AcDx+bd6A1eEZakWft7z0NGBwMi1XFgtoWw1wtT2A8c9UWp8nkh+ZLYJV2p5J41rOzXP2Y 1yIgkK6rjpQ2/kyNif8nuSSDJ9h/24WRc2H+FgQc1e3hWSeiboqGmDFQ3gRDvrt9qBVejj qob1SmXj8zUKMUG5JbgAbZxgunkTkza85zxYWm4mD0CRzHL3fMEIjJTCwYa4QQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983094; a=rsa-sha256; cv=none; b=T1PxbYsTpq0DZVNBDl9VgB3IYWu3f5eRznOow7Yn6xoq7Besiblgk6BHAN+hBicVVb22mF bPypSGaXhWvEHe/zZKN2ivMaQKgXnHJI8jOnWGU0Jg/TroImajSYI5G0ZTm1hClPHebj+W C48Xn0votuFdQuiz4UD6Ki3aebrpgSLp0AOzOt+O0tnz9LgFsVPxo0zymXVLXcuyJpvp6n 8fbORAGvoE+MBkD1x4l+lsoiylEl9sWk4G2jWfrQ2hhnmHi8iSeKzht3O2i8BlLEQ0PTk3 dGigwPPT/ZSyVGPDFOPX+nSMT3uLvCDTTkN2xV0ZteLO96rFPPs5VQTzkvLr5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Ky3mRjzfst; Sat, 8 Apr 2023 19:44: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 338JisC5018773; Sat, 8 Apr 2023 19:44:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JisWN018772; Sat, 8 Apr 2023 19:44:54 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:54 GMT Message-Id: <202304081944.338JisWN018772@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: a5e5f4105346 - stable/13 - netlink: improve snl(3) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: a5e5f410534627f306778ff38ed942f714962f9b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=a5e5f410534627f306778ff38ed942f714962f9b commit a5e5f410534627f306778ff38ed942f714962f9b Author: Alexander V. Chernikov AuthorDate: 2023-03-15 13:56:26 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:11:41 +0000 netlink: improve snl(3) Summary: * add snl_send_message() as a convenient send wrapper * add signed integer parsers * add snl_read_reply_code() to simplify operation result checks * add snl_read_reply_multi() to simplify reading multipart messages * add snl_create_genl_msg_request() * add snl_get_genl_family() to simplify family name->id resolution * add tests for some of the functionality Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D39092 MFC after: 2 weeks (cherry picked from commit 73ae25c174b515616050496dea764a943796efef) --- sys/netlink/netlink_snl.h | 104 +++++++++++++++++++++++++++++------ sys/netlink/netlink_snl_generic.h | 97 ++++++++++++++++++++++++++++++++ tests/sys/netlink/Makefile | 2 +- tests/sys/netlink/test_snl.c | 58 ++++++++++--------- tests/sys/netlink/test_snl_generic.c | 77 ++++++++++++++++++++++++++ 5 files changed, 294 insertions(+), 44 deletions(-) diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index 31b90003b519..be512b67c7ec 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -258,6 +258,14 @@ snl_send(struct snl_state *ss, void *data, int sz) return (send(ss->fd, data, sz, 0) == sz); } +static inline bool +snl_send_message(struct snl_state *ss, struct nlmsghdr *hdr) +{ + ssize_t sz = NLMSG_ALIGN(hdr->nlmsg_len); + + return (send(ss->fd, hdr, sz, 0) == sz); +} + static inline uint32_t snl_get_seq(struct snl_state *ss) { @@ -298,10 +306,9 @@ snl_read_message(struct snl_state *ss) static inline struct nlmsghdr * snl_read_reply(struct snl_state *ss, uint32_t nlmsg_seq) { - while (true) { - struct nlmsghdr *hdr = snl_read_message(ss); - if (hdr == NULL) - break; + struct nlmsghdr *hdr; + + while ((hdr = snl_read_message(ss)) != NULL) { if (hdr->nlmsg_seq == nlmsg_seq) return (hdr); } @@ -309,16 +316,6 @@ snl_read_reply(struct snl_state *ss, uint32_t nlmsg_seq) return (NULL); } -static inline struct nlmsghdr * -snl_get_reply(struct snl_state *ss, struct nlmsghdr *hdr) -{ - uint32_t nlmsg_seq = hdr->nlmsg_seq; - - if (snl_send(ss, hdr, hdr->nlmsg_len)) - return (snl_read_reply(ss, nlmsg_seq)); - return (NULL); -} - /* * Checks that attributes are sorted by attribute type. */ @@ -472,6 +469,34 @@ snl_attr_get_uint64(struct snl_state *ss __unused, struct nlattr *nla, return (false); } +static inline bool +snl_attr_get_int8(struct snl_state *ss, struct nlattr *nla, const void *arg, + void *target) +{ + return (snl_attr_get_uint8(ss, nla, arg, target)); +} + +static inline bool +snl_attr_get_int16(struct snl_state *ss, struct nlattr *nla, const void *arg, + void *target) +{ + return (snl_attr_get_uint16(ss, nla, arg, target)); +} + +static inline bool +snl_attr_get_int32(struct snl_state *ss, struct nlattr *nla, const void *arg, + void *target) +{ + return (snl_attr_get_uint32(ss, nla, arg, target)); +} + +static inline bool +snl_attr_get_int64(struct snl_state *ss, struct nlattr *nla, const void *arg, + void *target) +{ + return (snl_attr_get_uint64(ss, nla, arg, target)); +} + static inline bool snl_attr_get_string(struct snl_state *ss __unused, struct nlattr *nla, const void *arg __unused, void *target) @@ -573,14 +598,55 @@ static const struct snl_field_parser nlf_p_errmsg[] = { #undef _OUT SNL_DECLARE_PARSER(snl_errmsg_parser, struct nlmsgerr, nlf_p_errmsg, nla_p_errmsg); +#define _IN(_field) offsetof(struct nlmsgerr, _field) +#define _OUT(_field) offsetof(struct snl_errmsg_data, _field) +static const struct snl_attr_parser nla_p_donemsg[] = {}; + +static const struct snl_field_parser nlf_p_donemsg[] = { + { .off_in = _IN(error), .off_out = _OUT(error), .cb = snl_field_get_uint32 }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_PARSER(snl_donemsg_parser, struct nlmsgerr, nlf_p_donemsg, nla_p_donemsg); + static inline bool -snl_check_return(struct snl_state *ss, struct nlmsghdr *hdr, struct snl_errmsg_data *e) +snl_read_reply_code(struct snl_state *ss, uint32_t nlmsg_seq, struct snl_errmsg_data *e) { - if (hdr != NULL && hdr->nlmsg_type == NLMSG_ERROR) - return (snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)); + struct nlmsghdr *hdr = snl_read_reply(ss, nlmsg_seq); + + if (hdr == NULL) { + e->error = EINVAL; + } else if (hdr->nlmsg_type == NLMSG_ERROR) { + if (!snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)) + e->error = EINVAL; + return (e->error == 0); + } + return (false); } +/* + * Assumes e is zeroed + */ +static inline struct nlmsghdr * +snl_read_reply_multi(struct snl_state *ss, uint32_t nlmsg_seq, struct snl_errmsg_data *e) +{ + struct nlmsghdr *hdr = snl_read_reply(ss, nlmsg_seq); + + if (hdr == NULL) { + e->error = EINVAL; + } else if (hdr->nlmsg_type == NLMSG_ERROR) { + if (!snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)) + e->error = EINVAL; + } if (hdr->nlmsg_type == NLMSG_DONE) { + snl_parse_nlmsg(ss, hdr, &snl_donemsg_parser, e); + } else + return (hdr); + + return (NULL); +} + + /* writer logic */ struct snl_writer { char *base; @@ -849,4 +915,8 @@ snl_send_msgs(struct snl_writer *nw) return (snl_send(nw->ss, nw->base, offset)); } +static const struct snl_hdr_parser *snl_all_core_parsers[] = { + &snl_errmsg_parser, &snl_donemsg_parser, +}; + #endif diff --git a/sys/netlink/netlink_snl_generic.h b/sys/netlink/netlink_snl_generic.h new file mode 100644 index 000000000000..a725e6948b43 --- /dev/null +++ b/sys/netlink/netlink_snl_generic.h @@ -0,0 +1,97 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2022 Alexander V. Chernikov + * + * 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. + */ +#ifndef _NETLINK_NETLINK_SNL_GENERIC_H_ +#define _NETLINK_NETLINK_SNL_GENERIC_H_ + +#include +#include +#include + +/* Genetlink helpers */ +static inline struct nlmsghdr * +snl_create_genl_msg_request(struct snl_writer *nw, int genl_family, uint8_t genl_cmd) +{ + assert(nw->hdr == NULL); + + struct nlmsghdr *hdr = snl_reserve_msg_object(nw, struct nlmsghdr); + hdr->nlmsg_type = genl_family; + hdr->nlmsg_flags = NLM_F_REQUEST | NLM_F_ACK; + nw->hdr = hdr; + struct genlmsghdr *ghdr = snl_reserve_msg_object(nw, struct genlmsghdr); + ghdr->cmd = genl_cmd; + + return (hdr); +} + +static struct snl_field_parser snl_fp_genl[] = {}; + +#define SNL_DECLARE_GENL_PARSER(_name, _np) SNL_DECLARE_PARSER(_name,\ + struct genlmsghdr, snl_fp_genl, _np) + +struct _getfamily_attrs { + uint16_t family_id; + char *family_name; +}; + +#define _IN(_field) offsetof(struct genlmsghdr, _field) +#define _OUT(_field) offsetof(struct _getfamily_attrs, _field) +static struct snl_attr_parser _nla_p_getfam[] = { + { .type = CTRL_ATTR_FAMILY_ID , .off = _OUT(family_id), .cb = snl_attr_get_uint16 }, + { .type = CTRL_ATTR_FAMILY_NAME, .off = _OUT(family_name), .cb = snl_attr_get_string }, +}; +#undef _IN +#undef _OUT +SNL_DECLARE_GENL_PARSER(_genl_ctrl_getfam_parser, _nla_p_getfam); + +static inline uint16_t +snl_get_genl_family(struct snl_state *ss, const char *family_name) +{ + struct snl_writer nw; + struct nlmsghdr *hdr; + + snl_init_writer(ss, &nw); + hdr = snl_create_genl_msg_request(&nw, GENL_ID_CTRL, CTRL_CMD_GETFAMILY); + snl_add_msg_attr_string(&nw, CTRL_ATTR_FAMILY_NAME, family_name); + if (snl_finalize_msg(&nw) == NULL || !snl_send_message(ss, hdr)) + return (0); + + hdr = snl_read_reply(ss, hdr->nlmsg_seq); + if (hdr != NULL && hdr->nlmsg_type != NLMSG_ERROR) { + struct _getfamily_attrs attrs = {}; + + if (snl_parse_nlmsg(ss, hdr, &_genl_ctrl_getfam_parser, &attrs)) + return (attrs.family_id); + } + + return (0); +} + +static const struct snl_hdr_parser *snl_all_genl_parsers[] = { + &_genl_ctrl_getfam_parser, +}; + +#endif diff --git a/tests/sys/netlink/Makefile b/tests/sys/netlink/Makefile index 45095ac95309..656582be33b6 100644 --- a/tests/sys/netlink/Makefile +++ b/tests/sys/netlink/Makefile @@ -5,7 +5,7 @@ WARNS?= 1 TESTSDIR= ${TESTSBASE}/sys/netlink -#ATF_TESTS_C += test_snl +ATF_TESTS_C += test_snl test_snl_generic ATF_TESTS_PYTEST += test_nl_core.py ATF_TESTS_PYTEST += test_rtnl_iface.py ATF_TESTS_PYTEST += test_rtnl_ifaddr.py diff --git a/tests/sys/netlink/test_snl.c b/tests/sys/netlink/test_snl.c index daacc1aaacec..85bdff7fb163 100644 --- a/tests/sys/netlink/test_snl.c +++ b/tests/sys/netlink/test_snl.c @@ -20,13 +20,25 @@ require_netlink(void) atf_tc_skip("netlink module not loaded"); } -ATF_TC(snl_verify_parsers); -ATF_TC_HEAD(snl_verify_parsers, tc) +ATF_TC(snl_verify_core_parsers); +ATF_TC_HEAD(snl_verify_core_parsers, tc) { - atf_tc_set_md_var(tc, "descr", "Tests snl(3) parsers are correct"); + atf_tc_set_md_var(tc, "descr", "Tests snl(3) core nlmsg parsers are correct"); } -ATF_TC_BODY(snl_verify_parsers, tc) +ATF_TC_BODY(snl_verify_core_parsers, tc) +{ + SNL_VERIFY_PARSERS(snl_all_core_parsers); + +} + +ATF_TC(snl_verify_route_parsers); +ATF_TC_HEAD(snl_verify_route_parsers, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests snl(3) route parsers are correct"); +} + +ATF_TC_BODY(snl_verify_route_parsers, tc) { SNL_VERIFY_PARSERS(snl_all_route_parsers); @@ -61,45 +73,39 @@ SNL_DECLARE_PARSER(link_parser, struct ifinfomsg, fp_link, ap_link); ATF_TC_BODY(snl_list_ifaces, tc) { struct snl_state ss; + struct snl_writer nw; require_netlink(); if (!snl_init(&ss, NETLINK_ROUTE)) atf_tc_fail("snl_init() failed"); - struct { - struct nlmsghdr hdr; - struct ifinfomsg ifmsg; - } msg = { - .hdr.nlmsg_type = RTM_GETLINK, - .hdr.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST, - .hdr.nlmsg_seq = snl_get_seq(&ss), - }; - msg.hdr.nlmsg_len = sizeof(msg); - - if (!snl_send(&ss, &msg, sizeof(msg))) { - snl_free(&ss); - atf_tc_fail("snl_send() failed"); - } + snl_init_writer(&ss, &nw); + + struct nlmsghdr *hdr = snl_create_msg_request(&nw, RTM_GETLINK); + ATF_CHECK(hdr != NULL); + ATF_CHECK(snl_reserve_msg_object(&nw, struct ifinfomsg) != NULL); + ATF_CHECK(snl_finalize_msg(&nw) != NULL); + uint32_t seq_id = hdr->nlmsg_seq; - struct nlmsghdr *hdr; + ATF_CHECK(snl_send_message(&ss, hdr)); + + struct snl_errmsg_data e = {}; int count = 0; - while ((hdr = snl_read_message(&ss)) != NULL && hdr->nlmsg_type != NLMSG_DONE) { - if (hdr->nlmsg_seq != msg.hdr.nlmsg_seq) - continue; - struct nl_parsed_link link = {}; - if (!snl_parse_nlmsg(&ss, hdr, &link_parser, &link)) - continue; + while ((hdr = snl_read_reply_multi(&ss, seq_id, &e)) != NULL) { count++; } + ATF_REQUIRE(e.error == 0); + ATF_REQUIRE_MSG(count > 0, "Empty interface list"); } ATF_TP_ADD_TCS(tp) { + ATF_TP_ADD_TC(tp, snl_verify_core_parsers); + ATF_TP_ADD_TC(tp, snl_verify_route_parsers); ATF_TP_ADD_TC(tp, snl_list_ifaces); - ATF_TP_ADD_TC(tp, snl_verify_parsers); return (atf_no_error()); } diff --git a/tests/sys/netlink/test_snl_generic.c b/tests/sys/netlink/test_snl_generic.c new file mode 100644 index 000000000000..c65d134f080d --- /dev/null +++ b/tests/sys/netlink/test_snl_generic.c @@ -0,0 +1,77 @@ +#include +#include +#include + +#include +#include + +#include +#include "netlink/netlink_snl.h" +#include "netlink/netlink_snl_generic.h" + +#include + +static void +require_netlink(void) +{ + if (modfind("netlink") == -1) + atf_tc_skip("netlink module not loaded"); +} + +ATF_TC(snl_verify_genl_parsers); +ATF_TC_HEAD(snl_verify_genl_parsers, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests snl(3) generic parsers are correct"); +} + +ATF_TC_BODY(snl_verify_genl_parsers, tc) +{ + SNL_VERIFY_PARSERS(snl_all_genl_parsers); + +} + +ATF_TC(test_snl_get_genl_family_success); +ATF_TC_HEAD(test_snl_get_genl_family_success, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests successfull resolution of the 'nlctrl' family"); +} + +ATF_TC_BODY(test_snl_get_genl_family_success, tc) +{ + struct snl_state ss; + + require_netlink(); + + if (!snl_init(&ss, NETLINK_GENERIC)) + atf_tc_fail("snl_init() failed"); + + ATF_CHECK_EQ(snl_get_genl_family(&ss, "nlctrl"), GENL_ID_CTRL); +} + +ATF_TC(test_snl_get_genl_family_failure); +ATF_TC_HEAD(test_snl_get_genl_family_failure, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests unsuccessfull resolution of 'no-such-family' family"); +} + +ATF_TC_BODY(test_snl_get_genl_family_failure, tc) +{ + struct snl_state ss; + + require_netlink(); + + if (!snl_init(&ss, NETLINK_GENERIC)) + atf_tc_fail("snl_init() failed"); + + ATF_CHECK_EQ(snl_get_genl_family(&ss, "no-such-family"), 0); +} + +ATF_TP_ADD_TCS(tp) +{ + ATF_TP_ADD_TC(tp, snl_verify_genl_parsers); + ATF_TP_ADD_TC(tp, test_snl_get_genl_family_success); + ATF_TP_ADD_TC(tp, test_snl_get_genl_family_failure); + + return (atf_no_error()); +} + From nobody Sat Apr 8 19:44:55 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L0006qz44nsR; Sat, 8 Apr 2023 19:44: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 4Pv5Kz6F0Tz44Cn; Sat, 8 Apr 2023 19:44:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983095; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lFMBQRiUBxB2umhjziqxA+tOfRuMfEUUBOh8xs/GQ0o=; b=TsZwslGVncyZhJT+/C/c5nltvUTn7UmenxGgZ/tvOQZ3DkEt9mJT7moQ2LOsHFg5xYDKCq RaZGKHMYveEtmUd5mLFkaUsPT8mosfAx5Fo6WoA+8xTaBct9qLgGh7Nb24a1NedOQxim8E iBfWOE6SokZbZxOAdA1W6nvebi/zmVD0cmisXi8kfb8svKf8V46xhIZq8FWNgvzmlozyDI IZJySL5F5FyrHF27FmsM5zyORrS1fkfrPLZUl9V3JTT1S6yRmF8is0C+NPLfAIf44Wv+Nn P5wJaB5YUSwygUoqgB2k6KmUeZHhXW10buNCRTiQzsXUhuPoMylxo38NEIDMWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983095; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lFMBQRiUBxB2umhjziqxA+tOfRuMfEUUBOh8xs/GQ0o=; b=ni4w9VVfem0bOJzI8CGfWKNmsO6Rojxn2WWp29eVJ25Th7Jd8qKVkxMYCzDqRcSI5UOY8e jzugkMOoQEiyHfk248O6axGGQMr6b1r4U3pgnBQddWtQM/n/sTvBBN4HNzjeflUmlOsbe+ rR4BA/SpdRSJceiD36VwgFb90vMkK/56uo6CfYyqqTiu+/a8MTdcPaZBv1ixKtgf6C1rcE CwaXbgxgI7P87n99x07UzYfpcxU1GYHkKJ+nkfHMQTKTMvs4SLK3EARTUKkfpEZKmiyCwY RyV3l/BV9J1aQQtgPLBWT3nIBeI9bMqVG7LozYK6uqlpjQl8MEpfidjEoLzrfQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983095; a=rsa-sha256; cv=none; b=NFu85cnjcrC6F4CLiac+a77LoO6jD7FWkkxP3SOkCauGR7T0oH9vNO0ZKLRHhrme3+d1Dl upxZJTq6v8utURVd8fRA+HNrf4qZ+J9XHSe+HK65W1Z6locg8FkkwuvWFShPmxWGNTwcVX EU6sZEGhSWD3R+ZYzoxDlzoHP76ZuXnveWmkalkfKLtNe1WWAvrhiOW5cbiQIIfBgtb9EX U3NiHfxOB6pG4742Mn9CgIv6uCxpco/MvkWQrT6e28SA0rnrcJlFaDmP8U521yCpD2Inwt 5qZTMe8Ni8RptJK4cmH0090gb4ajwXZx5DHHrNn8+rfsod5euXX2y5IqEscMyQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5Kz52g8zg3M; Sat, 8 Apr 2023 19:44: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 338JitQQ018796; Sat, 8 Apr 2023 19:44:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JitK0018795; Sat, 8 Apr 2023 19:44:55 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:55 GMT Message-Id: <202304081944.338JitK0018795@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 95b86c887b33 - stable/13 - netlink: fix capped uncapped ack handling in snl(3). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 95b86c887b33fff3ea6ac53364b359f485dba7fd Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=95b86c887b33fff3ea6ac53364b359f485dba7fd commit 95b86c887b33fff3ea6ac53364b359f485dba7fd Author: Alexander V. Chernikov AuthorDate: 2023-03-17 14:27:08 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:12:57 +0000 netlink: fix capped uncapped ack handling in snl(3). Reviewed by: kp Differential Revision: https://reviews.freebsd.org/D39144 MFC after: 2 weeks (cherry picked from commit 568a645ba55a1c3fc4fc74735cb0fab08bfe4cbf) --- sys/netlink/netlink_snl.h | 52 ++++++++++++++---- tests/sys/netlink/test_snl.c | 126 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 11 deletions(-) diff --git a/sys/netlink/netlink_snl.h b/sys/netlink/netlink_snl.h index be512b67c7ec..935012885362 100644 --- a/sys/netlink/netlink_snl.h +++ b/sys/netlink/netlink_snl.h @@ -388,18 +388,25 @@ snl_parse_attrs(struct snl_state *ss, struct nlmsghdr *hdr, int hdrlen, return (snl_parse_attrs_raw(ss, nla_head, len, ps, pslen, target)); } -static inline bool -snl_parse_header(struct snl_state *ss, void *hdr, int len, - const struct snl_hdr_parser *parser, void *target) +static inline void +snl_parse_fields(struct snl_state *ss, struct nlmsghdr *hdr, int hdrlen __unused, + const struct snl_field_parser *ps, int pslen, void *target) { - /* Extract fields first (if any) */ - for (int i = 0; i < parser->fp_size; i++) { - const struct snl_field_parser *fp = &parser->fp[i]; + for (int i = 0; i < pslen; i++) { + const struct snl_field_parser *fp = &ps[i]; void *src = (char *)hdr + fp->off_in; void *dst = (char *)target + fp->off_out; fp->cb(ss, src, dst); } +} + +static inline bool +snl_parse_header(struct snl_state *ss, void *hdr, int len, + const struct snl_hdr_parser *parser, void *target) +{ + /* Extract fields first (if any) */ + snl_parse_fields(ss, hdr, parser->hdr_off, parser->fp, parser->fp_size, target); struct nlattr *nla_head = (struct nlattr *)(void *)((char *)hdr + parser->hdr_off); bool result = snl_parse_attrs_raw(ss, nla_head, len - parser->hdr_off, @@ -575,13 +582,20 @@ snl_field_get_uint32(struct snl_state *ss __unused, void *src, void *target) *((uint32_t *)target) = *((uint32_t *)src); } +static inline void +snl_field_get_ptr(struct snl_state *ss __unused, void *src, void *target) +{ + *((void **)target) = src; +} + struct snl_errmsg_data { - uint32_t nlmsg_seq; + struct nlmsghdr *orig_hdr; int error; - char *error_str; uint32_t error_offs; + char *error_str; struct nlattr *cookie; }; + #define _IN(_field) offsetof(struct nlmsgerr, _field) #define _OUT(_field) offsetof(struct snl_errmsg_data, _field) static const struct snl_attr_parser nla_p_errmsg[] = { @@ -592,7 +606,7 @@ static const struct snl_attr_parser nla_p_errmsg[] = { static const struct snl_field_parser nlf_p_errmsg[] = { { .off_in = _IN(error), .off_out = _OUT(error), .cb = snl_field_get_uint32 }, - { .off_in = _IN(msg.nlmsg_seq), .off_out = _OUT(nlmsg_seq), .cb = snl_field_get_uint32 }, + { .off_in = _IN(msg), .off_out = _OUT(orig_hdr), .cb = snl_field_get_ptr }, }; #undef _IN #undef _OUT @@ -609,6 +623,22 @@ static const struct snl_field_parser nlf_p_donemsg[] = { #undef _OUT SNL_DECLARE_PARSER(snl_donemsg_parser, struct nlmsgerr, nlf_p_donemsg, nla_p_donemsg); +static inline bool +snl_parse_errmsg(struct snl_state *ss, struct nlmsghdr *hdr, struct snl_errmsg_data *e) +{ + if ((hdr->nlmsg_flags & NLM_F_CAPPED) != 0) + return (snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)); + + const struct snl_hdr_parser *ps = &snl_errmsg_parser; + struct nlmsgerr *errmsg = (struct nlmsgerr *)(hdr + 1); + int hdrlen = sizeof(int) + NLMSG_ALIGN(errmsg->msg.nlmsg_len); + struct nlattr *attr_head = (struct nlattr *)(void *)((char *)errmsg + hdrlen); + int attr_len = hdr->nlmsg_len - sizeof(struct nlmsghdr) - hdrlen; + + snl_parse_fields(ss, (struct nlmsghdr *)errmsg, hdrlen, ps->fp, ps->fp_size, e); + return (snl_parse_attrs_raw(ss, attr_head, attr_len, ps->np, ps->np_size, e)); +} + static inline bool snl_read_reply_code(struct snl_state *ss, uint32_t nlmsg_seq, struct snl_errmsg_data *e) { @@ -617,7 +647,7 @@ snl_read_reply_code(struct snl_state *ss, uint32_t nlmsg_seq, struct snl_errmsg_ if (hdr == NULL) { e->error = EINVAL; } else if (hdr->nlmsg_type == NLMSG_ERROR) { - if (!snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)) + if (!snl_parse_errmsg(ss, hdr, e)) e->error = EINVAL; return (e->error == 0); } @@ -636,7 +666,7 @@ snl_read_reply_multi(struct snl_state *ss, uint32_t nlmsg_seq, struct snl_errmsg if (hdr == NULL) { e->error = EINVAL; } else if (hdr->nlmsg_type == NLMSG_ERROR) { - if (!snl_parse_nlmsg(ss, hdr, &snl_errmsg_parser, e)) + if (!snl_parse_errmsg(ss, hdr, e)) e->error = EINVAL; } if (hdr->nlmsg_type == NLMSG_DONE) { snl_parse_nlmsg(ss, hdr, &snl_donemsg_parser, e); diff --git a/tests/sys/netlink/test_snl.c b/tests/sys/netlink/test_snl.c index 85bdff7fb163..8c6d72f6893b 100644 --- a/tests/sys/netlink/test_snl.c +++ b/tests/sys/netlink/test_snl.c @@ -44,6 +44,129 @@ ATF_TC_BODY(snl_verify_route_parsers, tc) } +ATF_TC(snl_parse_errmsg_capped); +ATF_TC_HEAD(snl_parse_errmsg_capped, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests snl(3) correctly parsing capped errors"); +} + +ATF_TC_BODY(snl_parse_errmsg_capped, tc) +{ + struct snl_state ss; + struct snl_writer nw; + + require_netlink(); + + if (!snl_init(&ss, NETLINK_ROUTE)) + atf_tc_fail("snl_init() failed"); + + int optval = 1; + ATF_CHECK(setsockopt(ss.fd, SOL_NETLINK, NETLINK_CAP_ACK, &optval, sizeof(optval)) == 0); + + snl_init_writer(&ss, &nw); + + struct nlmsghdr *hdr = snl_create_msg_request(&nw, 255); + ATF_CHECK(hdr != NULL); + ATF_CHECK(snl_reserve_msg_object(&nw, struct ifinfomsg) != NULL); + snl_add_msg_attr_string(&nw, 143, "some random string"); + ATF_CHECK(snl_finalize_msg(&nw) != NULL); + + ATF_CHECK(snl_send_message(&ss, hdr)); + + struct nlmsghdr *rx_hdr = snl_read_reply(&ss, hdr->nlmsg_seq); + ATF_CHECK(rx_hdr != NULL); + ATF_CHECK(rx_hdr->nlmsg_type == NLMSG_ERROR); + + struct snl_errmsg_data e = {}; + ATF_CHECK(rx_hdr->nlmsg_len == sizeof(struct nlmsghdr) + sizeof(struct nlmsgerr)); + ATF_CHECK(snl_parse_errmsg(&ss, rx_hdr, &e)); + ATF_CHECK(e.error != 0); + ATF_CHECK(!memcmp(hdr, e.orig_hdr, sizeof(struct nlmsghdr))); +} + +ATF_TC(snl_parse_errmsg_capped_extack); +ATF_TC_HEAD(snl_parse_errmsg_capped_extack, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests snl(3) correctly parsing capped errors with extack"); +} + +ATF_TC_BODY(snl_parse_errmsg_capped_extack, tc) +{ + struct snl_state ss; + struct snl_writer nw; + + require_netlink(); + + if (!snl_init(&ss, NETLINK_ROUTE)) + atf_tc_fail("snl_init() failed"); + + int optval = 1; + ATF_CHECK(setsockopt(ss.fd, SOL_NETLINK, NETLINK_CAP_ACK, &optval, sizeof(optval)) == 0); + optval = 1; + ATF_CHECK(setsockopt(ss.fd, SOL_NETLINK, NETLINK_EXT_ACK, &optval, sizeof(optval)) == 0); + + snl_init_writer(&ss, &nw); + + struct nlmsghdr *hdr = snl_create_msg_request(&nw, 255); + ATF_CHECK(hdr != NULL); + ATF_CHECK(snl_reserve_msg_object(&nw, struct ifinfomsg) != NULL); + snl_add_msg_attr_string(&nw, 143, "some random string"); + ATF_CHECK(snl_finalize_msg(&nw) != NULL); + + ATF_CHECK(snl_send_message(&ss, hdr)); + + struct nlmsghdr *rx_hdr = snl_read_reply(&ss, hdr->nlmsg_seq); + ATF_CHECK(rx_hdr != NULL); + ATF_CHECK(rx_hdr->nlmsg_type == NLMSG_ERROR); + + struct snl_errmsg_data e = {}; + ATF_CHECK(snl_parse_errmsg(&ss, rx_hdr, &e)); + ATF_CHECK(e.error != 0); + ATF_CHECK(!memcmp(hdr, e.orig_hdr, sizeof(struct nlmsghdr))); + + ATF_CHECK(e.error_str != NULL); +} + +ATF_TC(snl_parse_errmsg_uncapped_extack); +ATF_TC_HEAD(snl_parse_errmsg_uncapped_extack, tc) +{ + atf_tc_set_md_var(tc, "descr", "Tests snl(3) correctly parsing errors with extack"); +} + +ATF_TC_BODY(snl_parse_errmsg_uncapped_extack, tc) +{ + struct snl_state ss; + struct snl_writer nw; + + require_netlink(); + + ATF_CHECK(snl_init(&ss, NETLINK_ROUTE)); + + int optval = 1; + ATF_CHECK(setsockopt(ss.fd, SOL_NETLINK, NETLINK_EXT_ACK, &optval, sizeof(optval)) == 0); + + snl_init_writer(&ss, &nw); + + struct nlmsghdr *hdr = snl_create_msg_request(&nw, 255); + ATF_CHECK(hdr != NULL); + ATF_CHECK(snl_reserve_msg_object(&nw, struct ifinfomsg) != NULL); + snl_add_msg_attr_string(&nw, 143, "some random string"); + ATF_CHECK(snl_finalize_msg(&nw) != NULL); + + ATF_CHECK(snl_send_message(&ss, hdr)); + + struct nlmsghdr *rx_hdr = snl_read_reply(&ss, hdr->nlmsg_seq); + ATF_CHECK(rx_hdr != NULL); + ATF_CHECK(rx_hdr->nlmsg_type == NLMSG_ERROR); + + struct snl_errmsg_data e = {}; + ATF_CHECK(snl_parse_errmsg(&ss, rx_hdr, &e)); + ATF_CHECK(e.error != 0); + ATF_CHECK(!memcmp(hdr, e.orig_hdr, hdr->nlmsg_len)); + + ATF_CHECK(e.error_str != NULL); +} + ATF_TC(snl_list_ifaces); ATF_TC_HEAD(snl_list_ifaces, tc) { @@ -105,6 +228,9 @@ ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, snl_verify_core_parsers); ATF_TP_ADD_TC(tp, snl_verify_route_parsers); + ATF_TP_ADD_TC(tp, snl_parse_errmsg_capped); + ATF_TP_ADD_TC(tp, snl_parse_errmsg_capped_extack); + ATF_TP_ADD_TC(tp, snl_parse_errmsg_uncapped_extack); ATF_TP_ADD_TC(tp, snl_list_ifaces); return (atf_no_error()); From nobody Sat Apr 8 19:44:56 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L15NY5z44nmX; Sat, 8 Apr 2023 19:44: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 4Pv5L13f10z44Lj; Sat, 8 Apr 2023 19:44:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sPV1Hmf7IFAoNg//Sy6UUhps1o1rRFoXvWVwhPCiCOE=; b=hQ3twwgH6XP4WaBx7YvyVlI/ruMIsUDf5E4dYIsQ/FBxDSM+rsj1Sf4cmPt9IubTfihLlJ lrsYwCy6l4R8cV4gUgf/2p4TPQv4SeBAlyNyDdByH123EiqtPbhLx9YZjZlSP5ZUCT11ST jHJGJBB94+BzgTRqaW4Y+K0LQ0lpFEM5wywzWFCby/Y50udwhAqA1kSOILPNWC0sXffVyV PLqA8Vp39Nf/BnSqZ9Y8sZPbHnDMNte2SY7OtyCObVAenz6x9n0WBtd1J2aEqD4Uto9+Ph nOno/ZZgpbVdM9JztpYmRNsCRkRLrGw9y2kT0g3oeI7LjcwIbh5K7U1tTem6EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sPV1Hmf7IFAoNg//Sy6UUhps1o1rRFoXvWVwhPCiCOE=; b=uVLKeC1ysHxo1Zf3jwd2uwseo6sgHxkljxL05of7sdTiL69SQKbpP2xOoXc5Bri6UnekPm iI0bC93u+jWureUX6iK9urbx2yNOLzjbxAoGiy8+WTvkrYXAztNwMmGZS8NgsA1+huo/XI owCCKQDzDsjFda6g6RL+6dmM8KPWMVBAwsXGxsM+yahlG0wgZJ7oyiQILWUnnu+/k2uLhh CcGmCQb6JFFfMOJWefjCVFuhDrLDe648+IhVirErb0vFLmhd98lXnBvYmFfOhOkoXkdadX Sm9ePQ73ruYuluZczF8YjV65TTeOcc4nRCQwJw3yH+X3A2tX2FWxJxTu4oKpGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983097; a=rsa-sha256; cv=none; b=dWCx86pixcJ+kclnknBJ4fnZGxDfowQ8bN3cF2tBd7Al61wPiQLn7I78uV8CqcEBo+Fw0m yHOp5g54o2I6qhfBEPHa3tFP791Yk5DBaPkffnVutW0+HAB7/blHBTp8vSCgJt18AbjdwE arTmaQP93tutal4QdFlbHKVXnGDHrx272UT8xaJorSCn4E5mfPfoz5Rt0aearEfej7rHZz S7fJRvgDiijdym2veondxJURN/geDxuG6JnrcswYV20bPpeKohJfXq0ZdbmubuDChhfQiB Ijp/lLoSVY01n8c7VBX0zjM6OMvEsL2wiHN/fcVNYp31GWmS1UTcK+wyrWRuHQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L05y0nzfyx; Sat, 8 Apr 2023 19:44: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 338JiuGd018815; Sat, 8 Apr 2023 19:44:56 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JiuYT018814; Sat, 8 Apr 2023 19:44:56 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:56 GMT Message-Id: <202304081944.338JiuYT018814@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 578fa16e10ee - stable/13 - netlink: add public ucred accessor for nlp. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 578fa16e10eec233c01f1c8d88dd450c4e72330c Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=578fa16e10eec233c01f1c8d88dd450c4e72330c commit 578fa16e10eec233c01f1c8d88dd450c4e72330c Author: Alexander V. Chernikov AuthorDate: 2023-03-18 11:44:29 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:13:05 +0000 netlink: add public ucred accessor for nlp. MFC after: 2 weeks (cherry picked from commit 046acc2bfd13f0caaf5132c1ad34877917db1a38) --- sys/netlink/netlink_ctl.h | 1 + sys/netlink/netlink_domain.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/sys/netlink/netlink_ctl.h b/sys/netlink/netlink_ctl.h index 1310a5a5493a..8cd29cf56d10 100644 --- a/sys/netlink/netlink_ctl.h +++ b/sys/netlink/netlink_ctl.h @@ -80,6 +80,7 @@ bool netlink_unregister_proto(int proto); /* Common helpers */ bool nl_has_listeners(int netlink_family, uint32_t groups_mask); bool nlp_has_priv(struct nlpcb *nlp, int priv); +struct ucred *nlp_get_cred(struct nlpcb *nlp); /* netlink_generic.c */ struct genl_cmd { diff --git a/sys/netlink/netlink_domain.c b/sys/netlink/netlink_domain.c index 348788434175..89de379c2e5d 100644 --- a/sys/netlink/netlink_domain.c +++ b/sys/netlink/netlink_domain.c @@ -212,6 +212,12 @@ nlp_has_priv(struct nlpcb *nlp, int priv) return (priv_check_cred(nlp->nl_cred, priv) == 0); } +struct ucred * +nlp_get_cred(struct nlpcb *nlp) +{ + return (nlp->nl_cred); +} + static uint32_t nl_find_port(void) { From nobody Sat Apr 8 19:44:57 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L237bNz44nXr; Sat, 8 Apr 2023 19:44:58 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Pv5L20yflz44Ls; Sat, 8 Apr 2023 19:44:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983098; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/7HJ6G05jtAslTr+wRZS73RqcBiR3BtomKJ4JiYc2Ag=; b=EyTKOmUFY3Ophi5jcMIemPQ4N19rEiyABky1IFTV+1l1MGm8ukPPlatbEwSS9bR72xN2O8 1PhiKxnZNsvspLuYQwMKMMlw6OtlOlZ8BeMe0TDW6VG9u3WctrF/UFZR6cPbi6S76N2wAj Dhbp3XQ9+Ovc5L40LkgNcE7abLaMxCG9kiS9mnroYvD2fXUNdL1icAAIgiQrHnkga5rTaI HGOdb0Ep80xp29bGYO/i5X6oAtj63tJ05aUS3+TsDHtkaHFi3EhUTurLLGVCyzKYv6mw1u rHwJNLrkuNpKlG87MMdSk7n45rJoCSFDofIxRIR0NIXlZfq1onnWqFxfIugUvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983098; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=/7HJ6G05jtAslTr+wRZS73RqcBiR3BtomKJ4JiYc2Ag=; b=EA/vdogf5AEPh6GACO0+13cR4secsknaZWiTcoxRJNu73S8u+qp4rA00Z9WzSbPjcb3hk1 T5axSeKNO5pYctY31aP0TizFoRtVhi9HVgKf+zmhTU+5M9fL60FXXXeRv9NReKJBpWIdsj jeNElDLzsdbfExqLC6NNAHu2RJn/kQLl+tIAko1oshNJ3XMS3fjUXzQVmYHVuQoYAnWXPO cd30gmzv1sdV62EMTJmoWTKmVa28P2G+xQ9LvbCJDE9z43QUHGH4+XFPaUfcrCNIjUxatZ gDz7oFnrmis41jh/q2DnhGgXfC19ybtrcLkfp4vehbLiFI4ajM1+TQpVFhi6fQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983098; a=rsa-sha256; cv=none; b=Otp5NMwwqGBVZQLcoiD8wNgFBArFRSB8fttuEazkPkf9bMYJCsWqD2Wdiv7zasHr7Vs8n9 0ytaLtbhYsnV5sX6zw3VTQS/1YIsNovntkXOeeKbWNbs25qJE53JradAJ4OoPpq5GAD0zr XT7fr2kEP0IPru8UfSP91paG35KH1jcly2gtGo6rVAI9bfD9v+xKSv9LqDZgP1YNdGaMOp fqTuuoQ/3oOYu7TjUB/VLWTdmotgUKkan5UX51WbbNmmrLjO7rIQkYFyq0m71Jt5PdrZsF B6Dis3bbYqXripryp/ct/7qJdtMt8I+W3p4DTqsm50j9RWfHfpySScSgQDf3Zw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L16kcWzfYb; Sat, 8 Apr 2023 19:44: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 338Jiv53018834; Sat, 8 Apr 2023 19:44:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jivep018833; Sat, 8 Apr 2023 19:44:57 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:57 GMT Message-Id: <202304081944.338Jivep018833@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: b68dcb393a47 - stable/13 - netlink: improve attribute decoding in python tests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: b68dcb393a476c3c4b0583c7ab99a7ba280ed836 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=b68dcb393a476c3c4b0583c7ab99a7ba280ed836 commit b68dcb393a476c3c4b0583c7ab99a7ba280ed836 Author: Alexander V. Chernikov AuthorDate: 2023-02-17 18:04:53 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:13:50 +0000 netlink: improve attribute decoding in python tests MFC after: 2 weeks (cherry picked from commit ff8da9b2bab43920a19c16855ac3d30b5ccb1df2) --- tests/atf_python/sys/net/netlink.py | 131 +++++++++++++++++++++++++----------- 1 file changed, 92 insertions(+), 39 deletions(-) diff --git a/tests/atf_python/sys/net/netlink.py b/tests/atf_python/sys/net/netlink.py index ba7d41c7cbf8..16cb746157cc 100644 --- a/tests/atf_python/sys/net/netlink.py +++ b/tests/atf_python/sys/net/netlink.py @@ -72,36 +72,38 @@ class NlErrattrType(Enum): class RtattrType(Enum): RTA_UNSPEC = 0 - RTA_DST = auto() - RTA_SRC = auto() - RTA_IIF = auto() - RTA_OIF = auto() - RTA_GATEWAY = auto() - RTA_PRIORITY = auto() - RTA_PREFSRC = auto() - RTA_METRICS = auto() - RTA_MULTIPATH = auto() - RTA_PROTOINFO = auto() - RTA_FLOW = auto() - RTA_CACHEINFO = auto() - RTA_SESSION = auto() - RTA_MP_ALGO = auto() - RTA_TABLE = auto() - RTA_MARK = auto() - RTA_MFC_STATS = auto() - RTA_VIA = auto() - RTA_NEWDST = auto() - RTA_PREF = auto() - RTA_ENCAP_TYPE = auto() - RTA_ENCAP = auto() - RTA_EXPIRES = auto() - RTA_PAD = auto() - RTA_UID = auto() - RTA_TTL_PROPAGATE = auto() - RTA_IP_PROTO = auto() - RTA_SPORT = auto() - RTA_DPORT = auto() - RTA_NH_ID = auto() + RTA_DST = 1 + RTA_SRC = 2 + RTA_IIF = 3 + RTA_OIF = 4 + RTA_GATEWAY = 5 + RTA_PRIORITY = 6 + RTA_PREFSRC = 7 + RTA_METRICS = 8 + RTA_MULTIPATH = 9 + # RTA_PROTOINFO = 10 + RTA_KNH_ID = 10 + RTA_FLOW = 11 + RTA_CACHEINFO = 12 + RTA_SESSION = 13 + # RTA_MP_ALGO = 14 + RTA_RTFLAGS = 14 + RTA_TABLE = 15 + RTA_MARK = 16 + RTA_MFC_STATS = 17 + RTA_VIA = 18 + RTA_NEWDST = 19 + RTA_PREF = 20 + RTA_ENCAP_TYPE = 21 + RTA_ENCAP = 22 + RTA_EXPIRES = 23 + RTA_PAD = 24 + RTA_UID = 25 + RTA_TTL_PROPAGATE = 26 + RTA_IP_PROTO = 27 + RTA_SPORT = 28 + RTA_DPORT = 29 + RTA_NH_ID = 30 class NlMsgType(Enum): @@ -314,6 +316,32 @@ class NlRtaxType(Enum): RTAX_FASTOPEN_NO_COOKIE = auto() +class RtFlagsBSD(Enum): + RTF_UP = 0x1 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_REJECT = 0x8 + RTF_DYNAMIC = 0x10 + RTF_MODIFIED = 0x20 + RTF_DONE = 0x40 + RTF_XRESOLVE = 0x200 + RTF_LLINFO = 0x400 + RTF_LLDATA = 0x400 + RTF_STATIC = 0x800 + RTF_BLACKHOLE = 0x1000 + RTF_PROTO2 = 0x4000 + RTF_PROTO1 = 0x8000 + RTF_PROTO3 = 0x40000 + RTF_FIXEDMTU = 0x80000 + RTF_PINNED = 0x100000 + RTF_LOCAL = 0x200000 + RTF_BROADCAST = 0x400000 + RTF_MULTICAST = 0x800000 + RTF_STICKY = 0x10000000 + RTF_RNH_LOCKED = 0x40000000 + RTF_GWFLAG_COMPAT = 0x80000000 + + class NlRtGroup(Enum): RTNLGRP_NONE = 0 RTNLGRP_LINK = auto() @@ -496,13 +524,17 @@ class NlHelper: cls = AddressFamilyLinux return cls + @staticmethod + def build_propmap(cls): + ret = {} + for prop in dir(cls): + if not prop.startswith("_"): + ret[getattr(cls, prop).value] = prop + return ret + def get_propmap(self, cls): if cls not in self._pmap: - ret = {} - for prop in dir(cls): - if not prop.startswith("_"): - ret[getattr(cls, prop).value] = prop - self._pmap[cls] = ret + self._pmap[cls] = self.build_propmap(cls) return self._pmap[cls] def get_name_propmap(self, cls): @@ -536,8 +568,8 @@ class NlHelper: def get_rta_name(self, val): return self.get_attr_byval(RtattrType, val) - def get_bitmask_map(self, cls, val): - propmap = self.get_propmap(cls) + @staticmethod + def get_bitmask_map(propmap, val): v = 1 ret = {} while val: @@ -551,7 +583,13 @@ class NlHelper: return ret def get_bitmask_str(self, cls, val): - bmap = self.get_bitmask_map(cls, val) + bmap = self.get_bitmask_map(self.get_propmap(cls), val) + return ",".join([v for k, v in bmap.items()]) + + @staticmethod + def get_bitmask_str_uncached(cls, val): + pmap = NlHelper.build_propmap(cls) + bmap = NlHelper.get_bitmask_map(pmap, val) return ",".join([v for k, v in bmap.items()]) def get_nlm_flags_str(self, msg_str: str, reply: bool, val): @@ -743,6 +781,12 @@ class NlAttrU8(NlAttr): return self._to_bytes(struct.pack("@B", self.u8)) +class NlAttrRtFlags(NlAttrU32): + def _print_attr_value(self): + s = NlHelper.get_bitmask_str_uncached(RtFlagsBSD, self.u32) + return " rtflags={}".format(s) + + class NlAttrIp(NlAttr): def __init__(self, nla_type, addr: str): super().__init__(nla_type, b"") @@ -808,6 +852,11 @@ class NlAttrNhId(NlAttrU32): return " nh_id={}".format(self.u32) +class NlAttrKNhId(NlAttrU32): + def _print_attr_value(self): + return " knh_id={}".format(self.u32) + + class NlAttrMac(NlAttr): def _print_attr_value(self): return ' mac="' + ":".join(["{:02X}".format(b) for b in self._data]) + '"' @@ -956,9 +1005,13 @@ rtnl_route_attrs = prepare_attrs_map( AttrDescr(RtattrType.RTA_SRC, NlAttrIp), AttrDescr(RtattrType.RTA_IIF, NlAttrIfindex), AttrDescr(RtattrType.RTA_OIF, NlAttrIfindex), - AttrDescr(RtattrType.RTA_GATEWAY, NlAttrTable), + AttrDescr(RtattrType.RTA_GATEWAY, NlAttrIp), + AttrDescr(RtattrType.RTA_TABLE, NlAttrTable), + AttrDescr(RtattrType.RTA_PRIORITY, NlAttrU32), AttrDescr(RtattrType.RTA_VIA, NlAttrVia), AttrDescr(RtattrType.RTA_NH_ID, NlAttrNhId), + AttrDescr(RtattrType.RTA_KNH_ID, NlAttrKNhId), + AttrDescr(RtattrType.RTA_RTFLAGS, NlAttrRtFlags), AttrDescr( RtattrType.RTA_METRICS, NlAttrNested, From nobody Sat Apr 8 19:44:58 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L34hj9z44nXt; Sat, 8 Apr 2023 19:44: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 4Pv5L31Gc3z44FB; Sat, 8 Apr 2023 19:44:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983099; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=M3CMMAj43KvjKKhaSG2q1Bw0v2s8E0hJWg75rJP4t04=; b=AbSd99npvHu3z5p9zY3ZhAxigupaMOUYON5rESDYRuqc3tm4ctxR5+0FnDHCwb5bYbdaXK WNYPQML34jNuJN4PBY6XJYVMGhHzSKxRaILXEJP3mEpVv4Bf1N3SDgBlnlsSpP+O8rxVEm WcUvMO0T/E7SSnDY0Nar0dqdL2flYFAY9dhHaOgtaP8KkXrxjKKryx3AAOKdrGjlFcKC6z ECl+RJ/DMcQUEfGZQXoolBMCB3OSmnuoREliQdrzRcB0+CKnc6eUO/D+ESqVX5JrFARVyY vD6DxcM+jb1jcldPR8cTQQ1VEjUXO3Ra7aO8LkVb1GPadFyfVIp1JXp5g2X45A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983099; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=M3CMMAj43KvjKKhaSG2q1Bw0v2s8E0hJWg75rJP4t04=; b=wnYo6mqil9DgJatDtLtSCibikSfeHuSU48f5sjOjt6yo3QPwBwap5nLJemQKzdy/Lp4nHT sZdKzkbKbyG/j9nU9MHgsndi/9ErjjSPVqWXwIXb6edWDQE+DfiR/m4S5DAvxzLaaCn68b uEn+MVQzCVvwO2/Xs20IiBj9XEcWdVz9R5LOTXbPI8e3zeAKNfcXIOtYx7Ik/0D4GdjtKQ nXR7m1InAyygjJ9L80sLEMxguvot0+KHW9mb3IFU0wBEcDQm+G6E/nuxnAfe/TZGAWLuYN fzK7EmQhtARKkmgoSNP+C0EYRycmWaO+G4/IYHIJM0IAN7EWvKkaCqMz9zCAZA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983099; a=rsa-sha256; cv=none; b=wA15nZPz7D2u5aVpzJvGIkN/z7e6BCTPHokvgRBjsVUHX1iPDh1RMfc6b1UiNBPwGwwFsX uzy6tVi5cMWnkdBLARMBDnK/9ENEUYiL4YQy7BnqohQ9vSFGGslijveSo8FVIvxthA+3gy LvVQr4vP9Noydy3QUyyS8TlK0qb7P5QFqO6ISy2hS5xky5Oph0FAHH7zHJWr30eP4raA7c rbmOj1gqzS8A66wvcLHYyuURwsC0RLOmzJ3OifV1ZWlVo/HgKAnNBXI6CNV/b+vsooUaWZ zbUmuj/oxYCr1m6g5QwsInR9LZcKXyIMqk2BJETiG6vMyaI/MXcAyoYNNQ2XAA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L30JbGzfsv; Sat, 8 Apr 2023 19:44: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 338JiwB5018853; Sat, 8 Apr 2023 19:44:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338JiwXo018852; Sat, 8 Apr 2023 19:44:58 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:44:58 GMT Message-Id: <202304081944.338JiwXo018852@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: b8289b8625d4 - stable/13 - netlink: remove redundant check. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: b8289b8625d40d3b7dd60f6ac64126d5a216bdb4 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=b8289b8625d40d3b7dd60f6ac64126d5a216bdb4 commit b8289b8625d40d3b7dd60f6ac64126d5a216bdb4 Author: Alexander V. Chernikov AuthorDate: 2023-02-18 17:10:39 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:14:03 +0000 netlink: remove redundant check. MFC after: 2 weeks CID: 1498867 (cherry picked from commit 1ea58b413595310de43587c609421ede74770f11) --- sys/netlink/route/iface.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sys/netlink/route/iface.c b/sys/netlink/route/iface.c index 3ddef06bed7e..ffd1be9384e1 100644 --- a/sys/netlink/route/iface.c +++ b/sys/netlink/route/iface.c @@ -782,15 +782,11 @@ get_sa_plen(const struct sockaddr *sa) switch (sa->sa_family) { #ifdef INET case AF_INET: - if (sa == NULL) - return (32); paddr = &(((const struct sockaddr_in *)sa)->sin_addr); return bitcount32(paddr->s_addr);; #endif #ifdef INET6 case AF_INET6: - if (sa == NULL) - return (128); paddr6 = &(((const struct sockaddr_in6 *)sa)->sin6_addr); return inet6_get_plen(paddr6); #endif From nobody Sat Apr 8 19:45:00 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L44zv6z44nbJ; Sat, 8 Apr 2023 19:45: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 4Pv5L42rVqz44Hj; Sat, 8 Apr 2023 19:45:00 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983100; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZUp5fr+XU4qC6WEjdRF6ZQ5aZDG2ra/5otDx2LFjshc=; b=IEPDy5uF+2aZg1JNMkIagMHufjQF0J5SSO67sf4kolL9hZJk3orWM3njdKsu6RdE4le8sR d+Nr6B8oHWnomiXluqYx0KTjbCssvBpc5fqDT/0RjdLPZrqK3n/Kdj019r6nfACN61hhHS QsZ7nC2adCTa5dEozo6eurhldZsQ8CMJdZbF2PonAeCzDnQVlH1+F/qz9Ta276eDbui6Gd Leu1foX6XHgqmSHymnhcXusYcObTF0TsNiV+l/nTB5thx/kgsFhJPo8930Dlx/4qzuCjXP rjs3ZiDTcMY95ztgbErSOHf35UHlzTgr87RBsB7ohGqn2SQmglwYRLJG3HO2Kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983100; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZUp5fr+XU4qC6WEjdRF6ZQ5aZDG2ra/5otDx2LFjshc=; b=G/xzcAfimO+WifEDrvG0qgNESj/qcl9kn41xJvq+jjmNdUsl5B0VwL5q6yhC0U7VoCd5Z5 kEbpOAVm7t0D4t2bXG8Dd3YE/eKkn4gptbZpv/gvZGI9Ect9R1ThvpYX1StCl5NE4Y4PdF CMEbUTDhIcqDU/2w/Gq3R/F8/ll9O7XdkwdtifPzAvVjNzI5eb1HS+WEqhTdFY18I7gkQ9 6iriwKy2XN5ySY2Ni0umn+DbYUKK4igwbbeFwd/+49Ge34cr//t6/pGYt8P3gUdWYDlz6C njrOiWzKtS8TtrdI/YpESL8gyuCeM8p/TaYge0SU/0mVo4/elL2zBATr28nMdw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983100; a=rsa-sha256; cv=none; b=AWz9muWZWdtiUXqUmakBCiScFW06pPxkgLT4aF0QSlELDwT+r3aYj/B7nZ04HWb68Ma0he vGpW6AL7DOTalOLJ64mBHYqWTaCGqaInu7EWz+GiL6xjnsZwAZMCqgzu3q8CMjznS2IU88 vgsfs9o5V6D+9cESnNVasV91oj1fnKu2rVS0tRGsk2DoXcO4LKvXOSsnnqx4d3EzAf913R PpzKQLnWHTnaK8ly+38rCn1k5yBB53CUl7Y9/UmBHVrLBw3rc+VG3mKBf588Nc4XyNxiwn c7FhQjqGL204aooPgGxlbDyuyDKbLGxz1GUBFTn3X56tF9R1EtazSdDYK0Ckpw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L4168czfsw; Sat, 8 Apr 2023 19:45: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 338Jj0F3018876; Sat, 8 Apr 2023 19:45:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj0nP018875; Sat, 8 Apr 2023 19:45:00 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:00 GMT Message-Id: <202304081945.338Jj0nP018875@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 3c1ba1f1122a - stable/13 - netlink: check result of sooptcopyin(). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 3c1ba1f1122a95980593df4629f1da22fb7d6d55 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=3c1ba1f1122a95980593df4629f1da22fb7d6d55 commit 3c1ba1f1122a95980593df4629f1da22fb7d6d55 Author: Alexander V. Chernikov AuthorDate: 2023-02-18 17:15:25 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:14:11 +0000 netlink: check result of sooptcopyin(). CID: 1498866 MFC after: 2 weeks (cherry picked from commit 3f70fca90f9f1c6a40e55e6edd2dc1b1272f4998) --- sys/netlink/netlink_domain.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/netlink/netlink_domain.c b/sys/netlink/netlink_domain.c index 89de379c2e5d..c9e51cd98ea6 100644 --- a/sys/netlink/netlink_domain.c +++ b/sys/netlink/netlink_domain.c @@ -623,7 +623,9 @@ nl_ctloutput(struct socket *so, struct sockopt *sopt) switch (sopt->sopt_name) { case NETLINK_ADD_MEMBERSHIP: case NETLINK_DROP_MEMBERSHIP: - sooptcopyin(sopt, &optval, sizeof(optval), sizeof(optval)); + error = sooptcopyin(sopt, &optval, sizeof(optval), sizeof(optval)); + if (error != 0) + break; if (optval <= 0 || optval >= NLP_MAX_GROUPS) { error = ERANGE; break; @@ -640,7 +642,9 @@ nl_ctloutput(struct socket *so, struct sockopt *sopt) case NETLINK_CAP_ACK: case NETLINK_EXT_ACK: case NETLINK_GET_STRICT_CHK: - sooptcopyin(sopt, &optval, sizeof(optval), sizeof(optval)); + error = sooptcopyin(sopt, &optval, sizeof(optval), sizeof(optval)); + if (error != 0) + break; flag = nl_getoptflag(sopt->sopt_name); From nobody Sat Apr 8 19:45:01 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L54ydJz44nlj; Sat, 8 Apr 2023 19:45: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 4Pv5L52pbnz44Y2; Sat, 8 Apr 2023 19:45:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983101; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lsJKkJy22Wtui6HAYHbM+5hetkmH2qte2pT5PbxlHxM=; b=mqhNjg408HG8mAihP4SWkw6ojmDNVyfpT90eOHYyjTy8muNrG1uZKakxOlzTwHvIQknWZe O/QCL9z2Vxw5S1mg7C9wmvhXFDHDrhoGbHhMhMNniAauHhb1fg5QMCe1BSf2ky0q+sO4cW SwVSCDesJEy3JvPIAx2/BYZj1ofktwniezoVXrc5S/Gk//YkBL0rJ4XYF5jarlR1MHEudP OmApC53+7+5O4x3C4aFw/ECuDEuRzfspS6X7Qj7VmLdDqOfdPDZ9onJ5qwEfU6XI37Ydp+ TRK7hLZo/2RxnDsLGIpcp+rwEYWycaV9PBFazmc/EeijH9CvYj8KJ7Y9RaGIsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983101; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lsJKkJy22Wtui6HAYHbM+5hetkmH2qte2pT5PbxlHxM=; b=s2T5njuw613mYuF0N5M6T0vQvu9pUhhDOr0ca89mRlfJ60tfwMR3GizwOVRCF1C58oeyyn PuzVSUVlePxXaw5fsOp+Q1VX/l/pw/kUboMaAztoigey12Iat1TDc0XG/u0q2AhOKwqqJw lWP9MP8yxOg+5JhECK5yZ3iz/cdFfJtJ0zAoJt0hHoosxR1q8zwTY/PLN4qKZnpoXWdm6j jolkIW/sG5UtNOknbfxJFCR7Gf3zj4AMsO2zc4vIL5oZMBnjEOmda0KtXeQ4CQRyhXarnO IRzC5+IkjS+zvG886rPF9RvtCmaGo8luyMl8qfbh0U3NF6vS8HazNYWtFOSc2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983101; a=rsa-sha256; cv=none; b=XXpCp3rAQOx6uKScOa5LDhAVGnJldyX2CCRx4HnkCv6rYLivpONQA9p7z2qPvt70aWwDa/ yo0WGI7ksv6t4KSGst0aVTal37qQ8ZGcxpbYR27YH2IvsGlxJl9C4XnBDtUiGgq5WysNdQ 7KqcJV+ynCLAhdi0hUhtE9ouYZlwuf6HnJW2hlOtAjQpztiLjDLextb3DzsIVu4vaDtpyS xQDhnHQcp6deR+v2nP+CaZBDKyc1UMaYkd8hsyhWtmobfTWBuDejg/hyuIis267RlE8Zrt l0O7nKy/vmL0bnp0aZR4aSol4jPz4ODyOz8T49H5/4KT+j7YFVWl357LXpM//g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L51mKxzfSy; Sat, 8 Apr 2023 19:45: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 338Jj1pQ018907; Sat, 8 Apr 2023 19:45:01 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj14Y018906; Sat, 8 Apr 2023 19:45:01 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:01 GMT Message-Id: <202304081945.338Jj14Y018906@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 799ef84263d7 - stable/13 - netlink: initialise error in nl_autobind_port(). List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 799ef84263d7949e86fd9eb89de887590da18ce7 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=799ef84263d7949e86fd9eb89de887590da18ce7 commit 799ef84263d7949e86fd9eb89de887590da18ce7 Author: Alexander V. Chernikov AuthorDate: 2023-02-18 17:18:57 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:14:19 +0000 netlink: initialise error in nl_autobind_port(). CID: 1498877 MFC after: 2 weeks (cherry picked from commit 4404e840cf3aa8d06d79dc281fffbb32860ab2af) --- sys/netlink/netlink_domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netlink/netlink_domain.c b/sys/netlink/netlink_domain.c index c9e51cd98ea6..64e1469e0d33 100644 --- a/sys/netlink/netlink_domain.c +++ b/sys/netlink/netlink_domain.c @@ -395,7 +395,7 @@ nl_autobind_port(struct nlpcb *nlp, uint32_t candidate_id) uint32_t port_id = candidate_id; NLCTL_TRACKER; bool exist; - int error; + int error = EADDRINUSE; for (int i = 0; i < 10; i++) { NL_LOG(LOG_DEBUG3, "socket %p, trying to assign port %d", nlp->nl_socket, port_id); From nobody Sat Apr 8 19:45:02 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L71TY6z44nlk; Sat, 8 Apr 2023 19:45: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 4Pv5L66YjDz44T6; Sat, 8 Apr 2023 19:45:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D+oHELZE98MT7R7/U1+nAxgulsB8dhF8ytueWolAMW4=; b=UrXh9uprFkxE+Z/6tXkiaANkgk8WN3vdKz0pfcC9iAqSt1Bg5NhmggZ0UWv2aIn03WeYhy uIjvEta+bv3K1EDIYANLpq/hJaSNr0HjqXkhBfaFQ8r0dIqe3UdSSyrrSUu9gxlx4AqW96 PuGlxov/PpAX1YJdOcV66a5Ugcc0/l0nO7MfUgrolKMeFDpMCZktWoyaQQB/9vHO273g3a 2PLHUHzcyPaGYRJGT+u4srXrKdnKv1ZnCAoHa3RRP3s26cgMF41J8+6/eikMZxD0AmTgvw Jq+zLrbwF1XGcq1BfpYndabrBEvzn/GBs632fvwcicMFWsbcsNw5Q1cEJAU7WA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=D+oHELZE98MT7R7/U1+nAxgulsB8dhF8ytueWolAMW4=; b=NuLBiO3ThbHNt/YuQ3qAeWpViZTZtFQ8Wckxrn2HCn5pJddcSSoh9mpPwi5LuSganZPejY kO9spQC5vVhw5X4g9sFc2wf5LXMtTH7h9doIOY0bJu5cNgDbDsJVX/+IlhBKlJ4ltaSu+K G+ceXwOnDE76banOQQFG0b+PIhAkNX5gZBk8eI2eiMAXj4SUZFGR0AuvskUytrHth9gJPY lqyaBIfQ4Ptve4yNiy1n/X5rnKZMO1jzQjKdD5t+ImTdDz2YiS0ZwQ02IaIZbcVNa0SsZt o1cuNepkuYEZNxWHSTc2Vo++YS3dXx4A6fk0vD6bSe8FPCiLY2xdHQPvYzEpaw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983103; a=rsa-sha256; cv=none; b=BxrUQcDEmIlaKcQ2V2aYry2Ukb0tA/3zKKajVfBS05gsq0nZtRM0z55YCRd7Pq3FzrAFvr bWaaR3WWcxePkvKXw/rGWfQCmS37CYGiRiMTE5COymN+56/i6+TJ0cbd71gNdKSwTHI3n3 +IABSxIul2aILBPanL1OD1uIlFn68qlKfPcWGOpnEsMubhErtdZUUipUagNFf+vlJZY39P OJBuPK4ELHllx/eqzCfHZZj0CJViAFmFpeu2pCowK1V+Z0fK1QiYak0PcAk63EwTeKy7Vo tse8n1LFA6h6R+NSb0uog5z1TYur3jDlY+eQORN5QBqgxKRaXlIgyyxDDEJe8Q== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L62XM6zfsx; Sat, 8 Apr 2023 19: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 338Jj2fb018926; Sat, 8 Apr 2023 19: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 338Jj2Lm018925; Sat, 8 Apr 2023 19:45:02 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:02 GMT Message-Id: <202304081945.338Jj2Lm018925@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: efd56d95cde2 - stable/13 - netlink: do not crash when linux message translation fails. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: efd56d95cde2f4f3a2df2d71e1c4eb76bbbec76b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=efd56d95cde2f4f3a2df2d71e1c4eb76bbbec76b commit efd56d95cde2f4f3a2df2d71e1c4eb76bbbec76b Author: Alexander V. Chernikov AuthorDate: 2023-02-18 17:41:48 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:14:31 +0000 netlink: do not crash when linux message translation fails. CID: 1498889 MFC after: 2 weeks (cherry picked from commit 453c7d6803aa9cbbaec74c7706276736de22f7b4) --- sys/netlink/netlink_io.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/netlink/netlink_io.c b/sys/netlink/netlink_io.c index fb8006f689e4..509065d04818 100644 --- a/sys/netlink/netlink_io.c +++ b/sys/netlink/netlink_io.c @@ -430,9 +430,11 @@ nl_receive_message(struct nlmsghdr *hdr, int remaining_length, struct nlmsghdr *hdr_orig = hdr; hdr = linux_netlink_p->msg_from_linux(nlp->nl_proto, hdr, npt); if (hdr == NULL) { - npt->hdr = hdr_orig; + /* Failed to translate to kernel format. Report an error back */ + hdr = hdr_orig; + npt->hdr = hdr; if (hdr->nlmsg_flags & NLM_F_ACK) - nlmsg_ack(nlp, EAGAIN, hdr, npt); + nlmsg_ack(nlp, EOPNOTSUPP, hdr, npt); return (0); } } From nobody Sat Apr 8 19:45:03 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L83vCGz44nsh; Sat, 8 Apr 2023 19:45: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 4Pv5L75JyHz44RD; Sat, 8 Apr 2023 19:45:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qn3mnGpV9hlQUNyrNlWs7pUyyB3QyTZewghOpKJrdls=; b=fZKzzYMFu/WfmW3PtVYJSXp3nk6OOqcT7koYFKr4vFL7cGnTS4jKC++GTx+EGCRhkRmls0 TQlDDJAAr2YrCaFbVefeT5+GYkjsP6Nx3SR6Bhnrv+UsuQfN0vH8SgQJ16IWBjDbZ/F3ku jAJ/+PRotCbMPCiKsGbM2lyHLrzG+rFfgNTH3iD1PTSleKFAYgVj/eNkg5loCekD3wu0Cg iEzjw/X++RniEkPHpLeF4jakSD9lLoHI7mXzAFUNHzmYW1vi4A1FBqlt83qA9wnWlg7qu3 +wY1+UD3KAOsJuZ/nBiBc38WT6auEK7kjqI+mQUr0b0936ANn/sRDiTPsVxk8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qn3mnGpV9hlQUNyrNlWs7pUyyB3QyTZewghOpKJrdls=; b=jo7BdHws8Vg6maBKajNwy8xaHLHvuJeegZ2SqiEgBkfb165nAm/G/pjeChJtW/VBYQTjJj CG57SAv8d/t8GY05svp44ZeuJQtlmUB7PtuguGAYJAV1jff7cXgQPusM95xGHOaTZ4CBl3 3scRbcOJsZksNhRgINR5DRmxPIMeaUgZ8ya+sIsaS2Or7a376DbAz7eFWfTQgQK49dPBgF AzUgMbY1sJ1vvfWvT/ujq2owrqNsGjDAN/1KZiywAXrcq9eVjcbqkg1Oll3QiE0SlQ95dt kFKuWlo8YDxK0Ce7SwrHaegFs0T0O0kRacujZeR0Sa4XLle4jhss6hDO73tfaA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983103; a=rsa-sha256; cv=none; b=uKFwsSMzJojg683LmPyn+4ygOxDS46vY+fqxGQIhCT+cUZJ62Ml4h3AMVlQEm3wNRIQc/8 MJFCwrhefjhEjCi3GfxcknnM6kZuiD96Cyn/YwgietySlHkoX2wfO3qnFoRcRJ0ho0gex8 6g3a5sEb8dhP1JMzFdDPxa/VVpzhK7HF+e4C5xv6fB+aurPDWjcaa4SqcvkztGgTwXdqm0 6/WJyYr05aP+FF6ITCTB0kyXx66e7kmVFIuOmrnDIobxc/fPzzJNj3TM/1/3yJzGEz93Wp SrZeAH0atfC70K6yMCK7/Y6BBYB+4Qp+e249qnAzL5aVBtMxXJPgdrC/k+o5vA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L73H3Bzfyy; Sat, 8 Apr 2023 19:45: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 338Jj3D0018946; Sat, 8 Apr 2023 19:45:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj3Ed018945; Sat, 8 Apr 2023 19:45:03 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:03 GMT Message-Id: <202304081945.338Jj3Ed018945@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 0da116b051e4 - stable/13 - tests: fix netlink test_dump_ifaces_many test. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0da116b051e48e21c43b73e6b82ebb4ebdf7c4b0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=0da116b051e48e21c43b73e6b82ebb4ebdf7c4b0 commit 0da116b051e48e21c43b73e6b82ebb4ebdf7c4b0 Author: Alexander V. Chernikov AuthorDate: 2023-02-18 22:26:32 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:14:41 +0000 tests: fix netlink test_dump_ifaces_many test. Consider only loopback interfaces when counting. Otherwise, if pf is loaded, 'pflog0' gets added to the vnet, breaking the test. MFC after: 2 weeks (cherry picked from commit 79748cec1f1c3437e49d7694e95fc7f438336805) --- tests/sys/netlink/test_rtnl_iface.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/sys/netlink/test_rtnl_iface.py b/tests/sys/netlink/test_rtnl_iface.py index c21bf9cb8977..da3db93b05c6 100644 --- a/tests/sys/netlink/test_rtnl_iface.py +++ b/tests/sys/netlink/test_rtnl_iface.py @@ -247,9 +247,7 @@ class TestRtNlIface(NetlinkTestTemplate, SingleVnetTestTemplate): """Tests if interface dummp is not missing interfaces""" ifmap = {} - for ifname in (self.vnet.iface_alias_map["if1"].name, "lo0"): - ifindex = socket.if_nametoindex(ifname) - ifmap[ifindex] = ifname + ifmap[socket.if_nametoindex("lo0")] = "lo0" for i in range(40): ifname = "lo{}".format(i + 1) @@ -300,7 +298,9 @@ class TestRtNlIface(NetlinkTestTemplate, SingleVnetTestTemplate): ifindex = rx_msg.base_hdr.ifi_index assert ifindex == rx_msg.base_hdr.ifi_index - kernel_ifmap[ifindex] = rx_msg.get_nla(IflattrType.IFLA_IFNAME).text + ifname = rx_msg.get_nla(IflattrType.IFLA_IFNAME).text + if ifname.startswith("lo"): + kernel_ifmap[ifindex] = ifname assert kernel_ifmap == ifmap # From nobody Sat Apr 8 19:45:04 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5L91GJWz44nmh; Sat, 8 Apr 2023 19:45: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 4Pv5L85HcHz44g8; Sat, 8 Apr 2023 19:45:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fC5jyFN3D90y9tlEpPTxwwOXNv+bBdKBG57dd4lIg38=; b=iKFttDQX17ZRep6nMUFShS8usRWQ1Rxr+KZ8ZsqyWQvnxnyFsrcEZSjy1WR9RIjluwhU/F m7E5C1ss30NIdUuiB+qebU2Mgwb93jHoIjSVen2r7NPBab/kNA4mRSe1WTfTEQzUMseohS 8u9pSWZh0ImoJMzJfcelumMVp+z4NBvPqGfwaFfHDC94xcggpvnDf4O44q0hQAXt48KO7J XvRiDVTpvQsgEU+xc6/3GI9eDXk/cbOgG4Uv/JlxWfBKE2GduhHxBuQLSe6qRu3/3Pb3Pw URwUqchaJzzmIn6TVyrUhwG6SVsA7SYacy5h7ONJirOWGMYuCHEU6xQIeJabxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fC5jyFN3D90y9tlEpPTxwwOXNv+bBdKBG57dd4lIg38=; b=jFS0YuAc+uGnrOG6l0lOLppTUkf7RN8mm6hpBSQg6sxf1i/IMnW7IYU8kvp8diiV36dmm0 VTzQIK1CaBLPJ3U1bziDKlQA7PGt7ol/fxAPB869fMIDV+DZqb24dqe2skYXXvvf+io1ok 4t9caJ8lO35GDhjgnKsTIHB7nB1ev2qka5mZOIckXMBcjBklEYZisFJVav2DQw1V66gUHh Mg8ff7/scXwWoRdJ5l5hyX5gOxe/gyhpH5FGWRsNKzfn89AeUgungRW7eiuU+PKpYYLhL1 0PWEvc2BshxKlJHsYbWAnX1Bgn/E8RxY9NuCHIyxc7d2Ff3uvDWbGYnYqgG+yw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983104; a=rsa-sha256; cv=none; b=yoLxXysT6oZKEyUyTjWkL1BoDX/y5et0OR50R77r+ECaabMUpvrh6qlRKH+mxV0Cztksol u/rp5LdcG1cpflbocRoXsdwgrqNY/i7praSwaHYNBLo3afwPbC0tiYsOZEvjjSEddPXsiG TS23sjBLRqB2A3gF0oNdjqmZL3WKEpjY0YzcWnYtK3XdMY0/b7xtA0bhk3h1MBknsSRn8h j7nc3F0SJaw2VYAnm2qQKdQlxxktX+C3/UoCQJcjZ1XdQSTrLiTqyc2BWSTYEHvqIEYXqV YUTD6pTYmsjCxMPRccuo5xUNS46jYBjVQCQVi2RpmsoQN0ePm2EEnapNpczXnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L84NH1zg3N; Sat, 8 Apr 2023 19:45: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 338Jj44V018965; Sat, 8 Apr 2023 19:45:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj4KR018964; Sat, 8 Apr 2023 19:45:04 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:04 GMT Message-Id: <202304081945.338Jj4KR018964@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 0276eb664724 - stable/13 - tests: add netlink large dump buffer check List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 0276eb66472412d6fe93614a3e9d1a2a5e1f20c0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=0276eb66472412d6fe93614a3e9d1a2a5e1f20c0 commit 0276eb66472412d6fe93614a3e9d1a2a5e1f20c0 Author: Alexander V. Chernikov AuthorDate: 2023-02-20 10:20:23 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:14:49 +0000 tests: add netlink large dump buffer check Differential Revision: https://reviews.freebsd.org/D38665 MFC after: 2 weeks (cherry picked from commit 828d3c6c4cc0b782e16abb1ae18023734a0b710f) --- tests/atf_python/sys/net/netlink.py | 20 +++++----- tests/sys/netlink/Makefile | 1 + tests/sys/netlink/test_rtnl_route.py | 76 ++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+), 9 deletions(-) diff --git a/tests/atf_python/sys/net/netlink.py b/tests/atf_python/sys/net/netlink.py index 16cb746157cc..ec5a7feef317 100644 --- a/tests/atf_python/sys/net/netlink.py +++ b/tests/atf_python/sys/net/netlink.py @@ -1609,18 +1609,20 @@ class NetlinkTestTemplate(object): self.helper = NlHelper() self.nlsock = Nlsock(netlink_family, self.helper) - def write_message(self, msg): - print("") - print("============= >> TX MESSAGE =============") - msg.print_message() + def write_message(self, msg, silent=False): + if not silent: + print("") + print("============= >> TX MESSAGE =============") + msg.print_message() + msg.print_as_bytes(bytes(msg), "-- DATA --") self.nlsock.write_data(bytes(msg)) - msg.print_as_bytes(bytes(msg), "-- DATA --") - def read_message(self): + def read_message(self, silent=False): msg = self.nlsock.read_message() - print("") - print("============= << RX MESSAGE =============") - msg.print_message() + if not silent: + print("") + print("============= << RX MESSAGE =============") + msg.print_message() return msg def get_reply(self, tx_msg): diff --git a/tests/sys/netlink/Makefile b/tests/sys/netlink/Makefile index 656582be33b6..cbec7b2d8b5d 100644 --- a/tests/sys/netlink/Makefile +++ b/tests/sys/netlink/Makefile @@ -9,6 +9,7 @@ ATF_TESTS_C += test_snl test_snl_generic ATF_TESTS_PYTEST += test_nl_core.py ATF_TESTS_PYTEST += test_rtnl_iface.py ATF_TESTS_PYTEST += test_rtnl_ifaddr.py +ATF_TESTS_PYTEST += test_rtnl_route.py CFLAGS+= -I${.CURDIR:H:H:H} diff --git a/tests/sys/netlink/test_rtnl_route.py b/tests/sys/netlink/test_rtnl_route.py new file mode 100644 index 000000000000..71125343166a --- /dev/null +++ b/tests/sys/netlink/test_rtnl_route.py @@ -0,0 +1,76 @@ +import ipaddress +import socket + +import pytest +from atf_python.sys.net.netlink import NetlinkRtMessage +from atf_python.sys.net.netlink import NetlinkTestTemplate +from atf_python.sys.net.netlink import NlAttrIp +from atf_python.sys.net.netlink import NlConst +from atf_python.sys.net.netlink import NlmBaseFlags +from atf_python.sys.net.netlink import NlmGetFlags +from atf_python.sys.net.netlink import NlmNewFlags +from atf_python.sys.net.netlink import NlMsgType +from atf_python.sys.net.netlink import NlRtMsgType +from atf_python.sys.net.netlink import RtattrType +from atf_python.sys.net.vnet import SingleVnetTestTemplate + + +class TestRtNlRoute(NetlinkTestTemplate, SingleVnetTestTemplate): + IPV6_PREFIXES = ["2001:db8::1/64"] + + def setup_method(self, method): + super().setup_method(method) + self.setup_netlink(NlConst.NETLINK_ROUTE) + + @pytest.mark.timeout(20) + def test_buffer_override(self): + msg_flags = ( + NlmBaseFlags.NLM_F_ACK.value + | NlmBaseFlags.NLM_F_REQUEST.value + | NlmNewFlags.NLM_F_CREATE.value + ) + + num_routes = 1000 + base_address = bytearray(ipaddress.ip_address("2001:db8:ffff::").packed) + for i in range(num_routes): + base_address[7] = i % 256 + base_address[6] = i // 256 + prefix_address = ipaddress.IPv6Address(bytes(base_address)) + + msg = NetlinkRtMessage(self.helper, NlRtMsgType.RTM_NEWROUTE.value) + msg.nl_hdr.nlmsg_flags = msg_flags + msg.base_hdr.rtm_family = socket.AF_INET6 + msg.base_hdr.rtm_dst_len = 65 + msg.add_nla(NlAttrIp(RtattrType.RTA_DST, str(prefix_address))) + msg.add_nla(NlAttrIp(RtattrType.RTA_GATEWAY, "2001:db8::2")) + + self.write_message(msg, silent=True) + rx_msg = self.read_message(silent=True) + assert rx_msg.is_type(NlMsgType.NLMSG_ERROR) + assert msg.nl_hdr.nlmsg_seq == rx_msg.nl_hdr.nlmsg_seq + assert rx_msg.error_code == 0 + # Now, dump + msg = NetlinkRtMessage(self.helper, NlRtMsgType.RTM_GETROUTE.value) + msg.nl_hdr.nlmsg_flags = ( + NlmBaseFlags.NLM_F_ACK.value + | NlmBaseFlags.NLM_F_REQUEST.value + | NlmGetFlags.NLM_F_ROOT.value + | NlmGetFlags.NLM_F_MATCH.value + ) + msg.base_hdr.rtm_family = socket.AF_INET6 + self.write_message(msg) + num_received = 0 + while True: + rx_msg = self.read_message(silent=True) + if msg.nl_hdr.nlmsg_seq == rx_msg.nl_hdr.nlmsg_seq: + if rx_msg.is_type(NlMsgType.NLMSG_ERROR): + if rx_msg.error_code != 0: + raise ValueError( + "unable to dump routes: error {}".format(rx_msg.error_code) + ) + if rx_msg.is_type(NlMsgType.NLMSG_DONE): + break + if rx_msg.is_type(NlRtMsgType.RTM_NEWROUTE): + if rx_msg.base_hdr.rtm_dst_len == 65: + num_received += 1 + assert num_routes == num_received From nobody Sat Apr 8 19:45:05 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5LB0Hb0z44nY4; Sat, 8 Apr 2023 19:45: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 4Pv5L96Dgtz44gQ; Sat, 8 Apr 2023 19:45:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e/FjXQkK4w/3B+9Fk2oVULiHLSJ9IWsQsGv9m/d7Cmc=; b=CGnG4BK9LbwsJLUQLaUfeGOwWTFm8NihgY8LIbnP3gOkNjf8MdKVGC8CI2o1FfdHoIEBzU dZLp+QOCD0Qk0rcLh/nD/QknoRBWUgPagnyk8pq4C3f+uHqrkcsEkLQ98t/PfS/EZFFxsj r6xml/KfWBaJesSFwGA7U+y26cMNPsctr5EUuqoIc9TOqzX5MFrr4zIAlYMJRH9RlDBLlW gAPiepg7p0XhUwLYKSZQhvWY6a8LcLrHeZ8uosElpCiq5sdJIMjjlkCTj03LXhC0YiI+85 XKqG3RbK47i/t7pDunLHGI7eFLp8vVEM1O+LL4NssIV+Sw8PUBqJNA5LEfssBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e/FjXQkK4w/3B+9Fk2oVULiHLSJ9IWsQsGv9m/d7Cmc=; b=ORW95L8NMiL4g+bZvBzO71MQB92B+CrUglUR+jDzRHcVbjJ7vr0lxTsDb+CUm7HShPhTwp SYFjLbIiGFLGLgLzAk1IhsvN6pwZVoB8gQDwVm9nG3sQ3AilKD/dEfrO4HSlKS5tzE7MZC veU4zzi7T/sy6BJjDjuwW1NSsw577/cVknXI5hgWIM+OdNPMcTvsVbXO18YNohyEvqMfxo kIubVZxS8Fx/Uw8M3oW7frY7KFqyP5XV7z8png2tMLST6z7xmsTkgJnOL3jSdG7l0EWeLd S0yeTc0wvh16q4Lvf3t8MHzbUqhZDqP4Bvgc9jwgXdohs2HWvqP2ucf8tv5xJQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983105; a=rsa-sha256; cv=none; b=UpJc20IXcS583ZC85+J5DSIO2dTUuU+kwS47ztfBMMNgPWxphx3OhfOxaQmgSJkLH1725F TkeZ3Hfr/8GY3mSZt6th8T4UgDWzMvRMAGVMFvPAxYy9qRyVt5PlNWce6JERQzpo1T1/Sv TsR22dxrwWvCU729M5mn7FqDIf+L1hCBI0s04jgfjUzXCDo2EHxB7VAa80yZWmBlRQFbcP LkErRZxcw4/CnQkpUCSNuoonu18I5uucfebZ5bZmDeFM28bUD1iORs/x9iJw1GvBcAwsRL XNfHJmLHFHctGcaKmlnGMg260BrCCIFwpHwHANgp++J4NN4vf+KrJxJfJhmz6g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5L95JZNzfxZ; Sat, 8 Apr 2023 19:45: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 338Jj5vC018985; Sat, 8 Apr 2023 19:45:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj5Ew018984; Sat, 8 Apr 2023 19:45:05 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:05 GMT Message-Id: <202304081945.338Jj5Ew018984@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: b18abe2e1f22 - stable/13 - tests: add more netlink tests for neighbors/routes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: b18abe2e1f22394717d4847f2c7b491929cee92b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=b18abe2e1f22394717d4847f2c7b491929cee92b commit b18abe2e1f22394717d4847f2c7b491929cee92b Author: Alexander V. Chernikov AuthorDate: 2023-03-07 17:30:35 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:15:16 +0000 tests: add more netlink tests for neighbors/routes Differential Revision: https://reviews.freebsd.org/D38912 MFC after: 2 weeks (cherry picked from commit c57dfd92c876fabc04e94945dd9534468520bbbf) --- tests/atf_python/sys/net/netlink.py | 121 ++++++++++++++++++++++++++++++----- tests/sys/netlink/Makefile | 1 + tests/sys/netlink/test_rtnl_neigh.py | 53 +++++++++++++++ tests/sys/netlink/test_rtnl_route.py | 23 +++++++ 4 files changed, 183 insertions(+), 15 deletions(-) diff --git a/tests/atf_python/sys/net/netlink.py b/tests/atf_python/sys/net/netlink.py index ec5a7feef317..bfbf3217d52a 100644 --- a/tests/atf_python/sys/net/netlink.py +++ b/tests/atf_python/sys/net/netlink.py @@ -29,6 +29,12 @@ def align4(val: int) -> int: return roundup2(val, 4) +def enum_or_int(val) -> int: + if isinstance(val, Enum): + return val.value + return val + + class SockaddrNl(Structure): _fields_ = [ ("nl_len", c_ubyte), @@ -125,8 +131,8 @@ class NlRtMsgType(Enum): RTM_DELROUTE = 25 RTM_GETROUTE = 26 RTM_NEWNEIGH = 28 - RTM_DELNEIGH = 27 - RTM_GETNEIGH = 28 + RTM_DELNEIGH = 29 + RTM_GETNEIGH = 30 RTM_NEWRULE = 32 RTM_DELRULE = 33 RTM_GETRULE = 34 @@ -491,6 +497,39 @@ class IfattrType(Enum): IFA_TARGET_NETNSID = auto() +class NdMsg(Structure): + _fields_ = [ + ("ndm_family", c_ubyte), + ("ndm_pad1", c_ubyte), + ("ndm_pad2", c_ubyte), + ("ndm_ifindex", c_uint), + ("ndm_state", c_ushort), + ("ndm_flags", c_ubyte), + ("ndm_type", c_ubyte), + ] + + +class NdAttrType(Enum): + NDA_UNSPEC = 0 + NDA_DST = 1 + NDA_LLADDR = 2 + NDA_CACHEINFO = 3 + NDA_PROBES = 4 + NDA_VLAN = 5 + NDA_PORT = 6 + NDA_VNI = 7 + NDA_IFINDEX = 8 + NDA_MASTER = 9 + NDA_LINK_NETNSID = 10 + NDA_SRC_VNI = 11 + NDA_PROTOCOL = 12 + NDA_NH_ID = 13 + NDA_FDB_EXT_ATTRS = 14 + NDA_FLAGS_EXT = 15 + NDA_NDM_STATE_MASK = 16 + NDA_NDM_FLAGS_MASK = 17 + + class GenlMsgHdr(Structure): _fields_ = [ ("cmd", c_ubyte), @@ -702,7 +741,7 @@ class NlAttrNested(NlAttr): class NlAttrU32(NlAttr): def __init__(self, nla_type, val): - self.u32 = val + self.u32 = enum_or_int(val) super().__init__(nla_type, b"") @property @@ -729,7 +768,7 @@ class NlAttrU32(NlAttr): class NlAttrU16(NlAttr): def __init__(self, nla_type, val): - self.u16 = val + self.u16 = enum_or_int(val) super().__init__(nla_type, b"") @property @@ -756,7 +795,7 @@ class NlAttrU16(NlAttr): class NlAttrU8(NlAttr): def __init__(self, nla_type, val): - self.u8 = val + self.u8 = enum_or_int(val) super().__init__(nla_type, b"") @property @@ -842,6 +881,11 @@ class NlAttrIfindex(NlAttrU32): return " iface=if#{}".format(self.u32) +class NlAttrMac(NlAttr): + def _print_attr_value(self): + return ["{:02}".format(int(d)) for d in data[4:]].join(":") + + class NlAttrTable(NlAttrU32): def _print_attr_value(self): return " rtable={}".format(self.u32) @@ -1067,26 +1111,44 @@ rtnl_ifa_attrs = prepare_attrs_map( ) +rtnl_nd_attrs = prepare_attrs_map( + [ + AttrDescr(NdAttrType.NDA_DST, NlAttrIp), + AttrDescr(NdAttrType.NDA_IFINDEX, NlAttrIfindex), + AttrDescr(NdAttrType.NDA_FLAGS_EXT, NlAttrU32), + AttrDescr(NdAttrType.NDA_LLADDR, NlAttrMac), + ] +) + + class BaseNetlinkMessage(object): def __init__(self, helper, nlmsg_type): - self.nlmsg_type = nlmsg_type + self.nlmsg_type = enum_or_int(nlmsg_type) self.ut = unittest.TestCase() self.nla_list = [] self._orig_data = None self.helper = helper self.nl_hdr = Nlmsghdr( - nlmsg_type=nlmsg_type, nlmsg_seq=helper.get_seq(), nlmsg_pid=helper.pid + nlmsg_type=self.nlmsg_type, nlmsg_seq=helper.get_seq(), nlmsg_pid=helper.pid ) self.base_hdr = None + def set_request(self, need_ack=True): + self.add_nlflags([NlmBaseFlags.NLM_F_REQUEST]) + if need_ack: + self.add_nlflags([NlmBaseFlags.NLM_F_ACK]) + + def add_nlflags(self, flags: List): + int_flags = 0 + for flag in flags: + int_flags |= enum_or_int(flag) + self.nl_hdr.nlmsg_flags |= int_flags + def add_nla(self, nla): self.nla_list.append(nla) def _get_nla(self, nla_list, nla_type): - if isinstance(nla_type, Enum): - nla_type_raw = nla_type.value - else: - nla_type_raw = nla_type + nla_type_raw = enum_or_int(nla_type) for nla in nla_list: if nla.nla_type == nla_type_raw: return nla @@ -1102,10 +1164,7 @@ class BaseNetlinkMessage(object): return Nlmsghdr.from_buffer_copy(data), sizeof(Nlmsghdr) def is_type(self, nlmsg_type): - if isinstance(nlmsg_type, Enum): - nlmsg_type_raw = nlmsg_type.value - else: - nlmsg_type_raw = nlmsg_type + nlmsg_type_raw = enum_or_int(nlmsg_type) return nlmsg_type_raw == self.nl_hdr.nlmsg_type def is_reply(self, hdr): @@ -1422,6 +1481,37 @@ class NetlinkIfaMessage(BaseNetlinkRtMessage): ) +class NetlinkNdMessage(BaseNetlinkRtMessage): + messages = [ + NlRtMsgType.RTM_NEWNEIGH.value, + NlRtMsgType.RTM_DELNEIGH.value, + NlRtMsgType.RTM_GETNEIGH.value, + ] + nl_attrs_map = rtnl_nd_attrs + + def __init__(self, helper, nlm_type): + super().__init__(helper, nlm_type) + self.base_hdr = NdMsg() + + def parse_base_header(self, data): + if len(data) < sizeof(NdMsg): + raise ValueError("length less than NdMsg header") + nd_hdr = NdMsg.from_buffer_copy(data) + return (nd_hdr, sizeof(NdMsg)) + + def print_base_header(self, hdr, prepend=""): + family = self.helper.get_af_name(hdr.ndm_family) + print( + "{}family={}, ndm_ifindex={}, ndm_state={}, ndm_flags={}".format( # noqa: E501 + prepend, + family, + hdr.ndm_ifindex, + hdr.ndm_state, + hdr.ndm_flags, + ) + ) + + class Nlsock: def __init__(self, family, helper): self.helper = helper @@ -1435,6 +1525,7 @@ class Nlsock: NetlinkRtMessage, NetlinkIflaMessage, NetlinkIfaMessage, + NetlinkNdMessage, NetlinkDoneMessage, NetlinkErrorMessage, ] diff --git a/tests/sys/netlink/Makefile b/tests/sys/netlink/Makefile index cbec7b2d8b5d..16559f0e9d3d 100644 --- a/tests/sys/netlink/Makefile +++ b/tests/sys/netlink/Makefile @@ -9,6 +9,7 @@ ATF_TESTS_C += test_snl test_snl_generic ATF_TESTS_PYTEST += test_nl_core.py ATF_TESTS_PYTEST += test_rtnl_iface.py ATF_TESTS_PYTEST += test_rtnl_ifaddr.py +ATF_TESTS_PYTEST += test_rtnl_neigh.py ATF_TESTS_PYTEST += test_rtnl_route.py CFLAGS+= -I${.CURDIR:H:H:H} diff --git a/tests/sys/netlink/test_rtnl_neigh.py b/tests/sys/netlink/test_rtnl_neigh.py new file mode 100644 index 000000000000..6d6f95098d14 --- /dev/null +++ b/tests/sys/netlink/test_rtnl_neigh.py @@ -0,0 +1,53 @@ +import socket +import pytest + +from atf_python.sys.net.netlink import NdAttrType +from atf_python.sys.net.netlink import NetlinkNdMessage +from atf_python.sys.net.netlink import NetlinkTestTemplate +from atf_python.sys.net.netlink import NlConst +from atf_python.sys.net.netlink import NlRtMsgType +from atf_python.sys.net.vnet import SingleVnetTestTemplate + + +class TestRtNlNeigh(NetlinkTestTemplate, SingleVnetTestTemplate): + def setup_method(self, method): + method_name = method.__name__ + if "4" in method_name: + self.IPV4_PREFIXES = ["192.0.2.1/24"] + if "6" in method_name: + self.IPV6_PREFIXES = ["2001:db8::1/64"] + super().setup_method(method) + self.setup_netlink(NlConst.NETLINK_ROUTE) + + def filter_iface(self, family, num_items): + epair_ifname = self.vnet.iface_alias_map["if1"].name + epair_ifindex = socket.if_nametoindex(epair_ifname) + + msg = NetlinkNdMessage(self.helper, NlRtMsgType.RTM_GETNEIGH) + msg.set_request() + msg.base_hdr.ndm_family = family + msg.base_hdr.ndm_ifindex = epair_ifindex + self.write_message(msg) + + ret = [] + for rx_msg in self.read_msg_list( + msg.nl_hdr.nlmsg_seq, NlRtMsgType.RTM_NEWNEIGH + ): + ifname = socket.if_indextoname(rx_msg.base_hdr.ndm_ifindex) + family = rx_msg.base_hdr.ndm_family + assert ifname == epair_ifname + assert family == family + assert rx_msg.get_nla(NdAttrType.NDA_DST) is not None + assert rx_msg.get_nla(NdAttrType.NDA_LLADDR) is not None + ret.append(rx_msg) + assert len(ret) == num_items + + @pytest.mark.timeout(5) + def test_6_filter_iface(self): + """Tests that listing outputs all nd6 records""" + return self.filter_iface(socket.AF_INET6, 2) + + @pytest.mark.timeout(5) + def test_4_filter_iface(self): + """Tests that listing outputs all arp records""" + return self.filter_iface(socket.AF_INET, 1) diff --git a/tests/sys/netlink/test_rtnl_route.py b/tests/sys/netlink/test_rtnl_route.py index 71125343166a..b64fce57a518 100644 --- a/tests/sys/netlink/test_rtnl_route.py +++ b/tests/sys/netlink/test_rtnl_route.py @@ -2,9 +2,11 @@ import ipaddress import socket import pytest +from atf_python.sys.net.tools import ToolsHelper from atf_python.sys.net.netlink import NetlinkRtMessage from atf_python.sys.net.netlink import NetlinkTestTemplate from atf_python.sys.net.netlink import NlAttrIp +from atf_python.sys.net.netlink import NlAttrU32 from atf_python.sys.net.netlink import NlConst from atf_python.sys.net.netlink import NlmBaseFlags from atf_python.sys.net.netlink import NlmGetFlags @@ -22,6 +24,27 @@ class TestRtNlRoute(NetlinkTestTemplate, SingleVnetTestTemplate): super().setup_method(method) self.setup_netlink(NlConst.NETLINK_ROUTE) + @pytest.mark.timeout(5) + def test_add_route6_ll_gw(self): + epair_ifname = self.vnet.iface_alias_map["if1"].name + epair_ifindex = socket.if_nametoindex(epair_ifname) + + msg = NetlinkRtMessage(self.helper, NlRtMsgType.RTM_NEWROUTE) + msg.set_request() + msg.add_nlflags([NlmNewFlags.NLM_F_CREATE]) + msg.base_hdr.rtm_family = socket.AF_INET6 + msg.base_hdr.rtm_dst_len = 64 + msg.add_nla(NlAttrIp(RtattrType.RTA_DST, "2001:db8:2::")) + msg.add_nla(NlAttrIp(RtattrType.RTA_GATEWAY, "fe80::1")) + msg.add_nla(NlAttrU32(RtattrType.RTA_OIF, epair_ifindex)) + + rx_msg = self.get_reply(msg) + assert rx_msg.is_type(NlMsgType.NLMSG_ERROR) + assert rx_msg.error_code == 0 + + ToolsHelper.print_net_debug() + ToolsHelper.print_output("netstat -6onW") + @pytest.mark.timeout(20) def test_buffer_override(self): msg_flags = ( From nobody Sat Apr 8 19:45:06 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5LC5Htnz44nY8; Sat, 8 Apr 2023 19: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 4Pv5LC36HLz44nQ; Sat, 8 Apr 2023 19:45:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983107; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=410Y+sOtQ9FEXStFk87ZJKZggPyaEDeAHl6IpGhkNcU=; b=yQFzq1Tf1js8p8mAr8aNFYyIwGMqca922nZXN1pfs5Qmhb/2FLwt+3Cl43+VSrl2YXSH07 sMVns2LhPAjQJyahJSRSC7wlox9HxVKr60XPumGQS1lt7goctiszohTzT2ifG3iN1+sQgK Jv7Sz+szCrawmK7E3uMKfSaDe7rQMyI1azQD7cT7vGlGo7cxWgQD+W5pAIwB5GjIinVKXm dswVPFx1ebO5PBUchto0Lj9U9tZHnqCe7dFQPsHoqGCD7yxmKdNRO2ND4ks3XEVhgmQDLx mtQITCG7p6a6uDTaI6V+F1vahX+BKv+WMOwKHsPlpJ3T/vSlNYnKP1QPPbZo6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983107; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=410Y+sOtQ9FEXStFk87ZJKZggPyaEDeAHl6IpGhkNcU=; b=Du/cBqA++dLFcvGUv2MlryOFALWa+Utd3I7MzsJCDBHXmrkyGSHa6cUy1QBqOd0ahR+6Zb +mX38MR7XQ2u2oh5auqUmDs/YdIZ+j+2VoIhC0vQsslHpRJXYi20fNtW1aF+ECEuVJFhtM IITPlxX7UXCzuqnZWggpx5eyT9zVKpIBj52vmmPMxbxAuma+/XCIc1fp46OjhBWuLni2N8 OTvq3mHE0MOGUpT6yfdv2M45Nr0KVBQzwXsxqdSQDxBNjGuLxPj7tOD9aWNlhRhcLdtix2 D22kEyWOVi3EBhWJt3CjJZLSdU3jZsMPCJvQ+sm37QqSWMp1nys34/AnWDDlhg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983107; a=rsa-sha256; cv=none; b=AaRZbtiMy8meSqbLXQZY5dSLRX5if5XF1fs2KsATKWubuR0Jir2GX827FdnRZc/VMsGTmb xo+m8rVrQUhfisNNxnudQkrazkd303Luji8qvoWBg6AhcJVaKDTzDx9AO8+xMIdBsveo45 kWjP8ULnNOb2xmS55LHk4MP1yTI0djKmhqKLk6fXYsVbxZjVqEUEU1CHTtH0frz3BGgHfq jfqLT0hn3G6HYHhGZfu6sj6hfMMlWyYRmgZklAgr9jIhsZgmR6G3ZM6if0ZmAi+CiDIi3r 8P914W1/fc3RIUltNDmAlW5l36D7gNDZYxyRhMd5sXfav6dc0YLdmonPaYGKWg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5LB6CFmzfYc; Sat, 8 Apr 2023 19:45: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 338Jj6o5019015; Sat, 8 Apr 2023 19:45:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj6aa019014; Sat, 8 Apr 2023 19:45:06 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:06 GMT Message-Id: <202304081945.338Jj6aa019014@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 9a8ea61a14fc - stable/13 - tests: fix python parsing of netlink nested attributes List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 9a8ea61a14fc698092370eff87f9723abc7dfc84 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=9a8ea61a14fc698092370eff87f9723abc7dfc84 commit 9a8ea61a14fc698092370eff87f9723abc7dfc84 Author: Alexander V. Chernikov AuthorDate: 2023-03-13 10:17:36 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:18:47 +0000 tests: fix python parsing of netlink nested attributes MFC after: 2 weeks (cherry picked from commit 90bc2120b51bc5ac9fbcb29763cc47562ee49977) --- tests/atf_python/sys/net/netlink.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/atf_python/sys/net/netlink.py b/tests/atf_python/sys/net/netlink.py index bfbf3217d52a..053eb432e915 100644 --- a/tests/atf_python/sys/net/netlink.py +++ b/tests/atf_python/sys/net/netlink.py @@ -1082,6 +1082,7 @@ rtnl_ifla_attrs = prepare_attrs_map( AttrDescr(IflattrType.IFLA_BROADCAST, NlAttrMac), AttrDescr(IflattrType.IFLA_IFNAME, NlAttrStr), AttrDescr(IflattrType.IFLA_MTU, NlAttrU32), + AttrDescr(IflattrType.IFLA_LINK, NlAttrU32), AttrDescr(IflattrType.IFLA_PROMISCUITY, NlAttrU32), AttrDescr(IflattrType.IFLA_OPERSTATE, NlAttrU8), AttrDescr(IflattrType.IFLA_CARRIER, NlAttrU8), @@ -1279,8 +1280,8 @@ class StdNetlinkMessage(BaseNetlinkMessage): val = v["ad"].cls.from_bytes(data[off : off + nla_len], v["ad"].val) if "child" in v: # nested - attrs, _ = self.parse_attrs(data[off : off + nla_len], v["child"]) - val = NlAttrNested(raw_nla_type, attrs) + attrs, _ = self.parse_attrs(data[off + 4 : off + nla_len], v["child"]) + val = NlAttrNested(v["ad"].val, attrs) else: # unknown attribute val = NlAttr(raw_nla_type, data[off + 4 : off + nla_len]) From nobody Sat Apr 8 19:45:07 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5LD1mmHz44nmp; Sat, 8 Apr 2023 19:45: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 4Pv5LD0wq3z44kG; Sat, 8 Apr 2023 19:45:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983108; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZysuSw/8z7JbskyDo1uowxK8+Yw1RZh9P8qjCbWJX3I=; b=t3atOihIDbyOgip2hauVeN9hx8L+T5F+SS7jm0xukknICIR5SgkNq0qZjrJtzEYznCVnHl 6tSiSIbCTrlcBw7J5yyuXmKz9SQj7z1TUV0g0gW4fCYHfZmEItgsHOMiGSO/ZmAWF6Dy9p gB5bTaHtblvyNNR07D9WTcF3XxaUC+TFSXUkb96Aihy1oZyHAijhLwPOsk7hi/P1JLLbWB jpbw23rxwIZfx852owGyEdy5vGMymLpYRFbw8MafdTgxniTlGvN1BlfMegWGvCI2AmwrCY U0jUg6xieEQsQrLDdKtPJXmjBoDCc15XJTn+fVZ97lIYP8J9SjCgSC7/GWINZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983108; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=ZysuSw/8z7JbskyDo1uowxK8+Yw1RZh9P8qjCbWJX3I=; b=ULjWNhOriA4ogto/Kx1zFUxVGCzhAabMMIhfk6mcbsTmv9hA6Lys8H791zLS4xYr7CQvtl TvUd223Nbo78rXPkVKWVrhABHFIx5CxqzP7tHE04aIFNynaF/U1fZrOa9nz6Bqyspc23gN /iT+7dDIvg2q84q4mKjXQblUrebmJKqp7kZrKdFEl6bJ44PY/VTcu4s1ifFpNrTeWkRcOO +Z+j1kijEjlCNuup7uGtisylnnEscjW1Sd/PcZsyQoEHiNUAtJ0CF+QFEygkqCmcW4VRX7 D4kez0i9EYWgC+z4K2uf4Im+IrJ+sdyFnF5NmI3fRAdmQlT8kgIOvb0btRPpWg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983108; a=rsa-sha256; cv=none; b=gWi6cy+JH2iM3/dinVXQXdkX/idwbpGxrgh4pnEitqFCSh3fVdD8upLH0DVG9B/UkcOFtO sZjiTMQbvhkfmTf1Knw/AjE9JjPw03GTmlUeW1Pg+V2SaSXeDP/xBcm+eGhvn/sOWHKqOb Z2N/NCbWIkucd1LDZtnhOoOv2korzTtMoLa2PBi9KmdsnEgab1BJr7BSsVX3fo7z1GKPDT dSwBiZKDR0d96cIFkfPOr6+6h6fWDxE9Q22B8iEZ2zUNLoOEnffpaM+Z7HE8tQBWnI4WXZ IRVqPkeEYeuk2dSnMt60d+HTGmS5XDXSRJ9xM4mGFmBWzN6hucnaj4j2LceUOA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5LD00gFzfsy; Sat, 8 Apr 2023 19:45: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 338Jj7XI019035; Sat, 8 Apr 2023 19: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 338Jj79C019034; Sat, 8 Apr 2023 19:45:07 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:07 GMT Message-Id: <202304081945.338Jj79C019034@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 5628f34221c5 - stable/13 - netlink: reduce the default debugging levels List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 5628f34221c514488c608c59542b7aa906803da0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=5628f34221c514488c608c59542b7aa906803da0 commit 5628f34221c514488c608c59542b7aa906803da0 Author: Alexander V. Chernikov AuthorDate: 2023-03-21 18:55:00 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:19:04 +0000 netlink: reduce the default debugging levels Reported by: kp MFC after: 2 weeks (cherry picked from commit a74998f38a2e1d1c943087e2c9cf104a4f037a45) --- sys/netlink/netlink_generic.c | 2 +- sys/netlink/route/nexthop.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/netlink/netlink_generic.c b/sys/netlink/netlink_generic.c index a16fdc312daa..d4022c2c2a75 100644 --- a/sys/netlink/netlink_generic.c +++ b/sys/netlink/netlink_generic.c @@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$"); #define DEBUG_MOD_NAME nl_generic #define DEBUG_MAX_LEVEL LOG_DEBUG3 #include -_DECLARE_DEBUG(LOG_DEBUG3); +_DECLARE_DEBUG(LOG_DEBUG); #define MAX_FAMILIES 20 #define MAX_GROUPS 64 diff --git a/sys/netlink/route/nexthop.c b/sys/netlink/route/nexthop.c index 63e491687249..b435a9afb3e7 100644 --- a/sys/netlink/route/nexthop.c +++ b/sys/netlink/route/nexthop.c @@ -54,7 +54,7 @@ __FBSDID("$FreeBSD$"); #define DEBUG_MOD_NAME nl_nhop #define DEBUG_MAX_LEVEL LOG_DEBUG3 #include -_DECLARE_DEBUG(LOG_DEBUG3); +_DECLARE_DEBUG(LOG_DEBUG); /* * This file contains the logic to maintain kernel nexthops and From nobody Sat Apr 8 19:45:09 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Pv5LG0Q7Qz44nqS; Sat, 8 Apr 2023 19:45: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 4Pv5LF1sFcz4536; Sat, 8 Apr 2023 19:45:09 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983109; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=87dO9jQ1RVyIYLOvDV3AFLETBw99/zO2HWxDmT4v5kM=; b=Tp4IleTX0GQsHy42K4BQpiMspYctz3sCcVAt05MZwM1ssOlzr3TNrvoZMESSbYdkv6a/BV 5w9yPPPM2GvfR3lDPHjuzoWEcy+e9RBJq57JvoRD1SXMHAteuuaWvgOf47mMKdGbte6RPC lqFtYSGuxujZon3ygH1t1fua9T1wDON043PK2jN0STlaaKHpufVqIfPOawnoCG3uIMulqv XhaKVIK7/39vifpsQuvyGnpT5xbWPc9myRMkSwvadAfMgp7pfTTwM7x5UYb5UadU06e2pp S2STEt+ImUcZ+bmw9BVqIy9d9ou3+NLMuHFmnOaKW684qpmhyDHq+v9ZrvyfMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1680983109; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=87dO9jQ1RVyIYLOvDV3AFLETBw99/zO2HWxDmT4v5kM=; b=UqCQujbt7vRco8znK/AtcEtujdSPIcoON7I00pxHUqgOY55f5aFPc6LjET3MnxAOL0xGQq fK+tcjwsKcVMXDH3Ev31RC1a6lCRK9ON8OmNJqV//QaJqm5EA9Tbc0Yp4UrxaTraOK1pif AeVtveU8xZHxNAU+N0NX93sigSbG3WmlaE9Fy3PWkvLRjgSl4vaHt9FyO6VCNgj8Jc4Nsr eQjAAH42LVWLnyvcgG2P/GvAMp+VvIT4q/qYy2ZU1HLSu8GAl7UZPfevnE/yKtni0ee678 JYUTRoZu4p+Ag65YvigNQ/fTxCaXjvWNl1J7Oqx3+AIKiUm8RLf4n3uPdqsb3Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1680983109; a=rsa-sha256; cv=none; b=NZnNY9s+PXLM2TPiW5wE5SFwwXVwCc81tFlWsk/aFDZRDG9I4i6qGh76am/KKWxaxeYKDI Tzp8z8bUDwxQXHa12RDlb9BI52cCCypaTvWxqJ8h/bXOw8QRJVqD0NG5Ux4vFwQ8PEcNQ6 xNAVWFP6Nb9Hd6OXVFXxOJneFTSXhjgdXpUPmuID/smKt9/Oo7ytV6Vjlz27q+ECj/Di/L SMvMrvRIxm2E3bp5P5TgGo8q2K7SMpZ6y2PvrgozuCaH015htZ4Dsmz2lfbFf9BmGvpoZZ tCpNmPgvGqW7JvAce8yHzVIItBqLl2Zco+wooXpuQafF25oQGBVGAup9elaK9g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Pv5LF0yX9zfxb; Sat, 8 Apr 2023 19:45: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 338Jj9HT019054; Sat, 8 Apr 2023 19:45:09 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 338Jj9rV019053; Sat, 8 Apr 2023 19:45:09 GMT (envelope-from git) Date: Sat, 8 Apr 2023 19:45:09 GMT Message-Id: <202304081945.338Jj9rV019053@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: e18df856ef9a - stable/13 - routing: fix panic when adding an interface route to the p2p interface without and inet/inet6 addresses attached. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: e18df856ef9a87339f179faafac2219335245662 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=e18df856ef9a87339f179faafac2219335245662 commit e18df856ef9a87339f179faafac2219335245662 Author: Alexander V. Chernikov AuthorDate: 2023-03-29 20:28:24 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-08 19:19:24 +0000 routing: fix panic when adding an interface route to the p2p interface without and inet/inet6 addresses attached. MFC after: 3 days (cherry picked from commit badcb3fd5710a511e35ac3afd724ef68c77614b7) --- sys/net/if.c | 2 +- tests/sys/net/routing/test_routing_l3.py | 39 ++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/sys/net/if.c b/sys/net/if.c index 9de81b7da248..f53b98aca923 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -2133,7 +2133,7 @@ ifaof_ifpforaddr(const struct sockaddr *addr, struct ifnet *ifp) continue; } if (ifp->if_flags & IFF_POINTOPOINT) { - if (sa_equal(addr, ifa->ifa_dstaddr)) + if (ifa->ifa_dstaddr && sa_equal(addr, ifa->ifa_dstaddr)) goto done; } else { cp = addr->sa_data; diff --git a/tests/sys/net/routing/test_routing_l3.py b/tests/sys/net/routing/test_routing_l3.py index 74017ae0459c..3a3822293424 100755 --- a/tests/sys/net/routing/test_routing_l3.py +++ b/tests/sys/net/routing/test_routing_l3.py @@ -1,7 +1,13 @@ import ipaddress +import socket import pytest +from atf_python.sys.net.rtsock import RtConst +from atf_python.sys.net.rtsock import Rtsock +from atf_python.sys.net.rtsock import RtsockRtMessage +from atf_python.sys.net.rtsock import SaHelper from atf_python.sys.net.tools import ToolsHelper +from atf_python.sys.net.vnet import SingleVnetTestTemplate from atf_python.sys.net.vnet import VnetTestTemplate @@ -79,3 +85,36 @@ class TestIfOps(VnetTestTemplate): nhops = ToolsHelper.get_nhops(family) nh = [nh for nh in nhops if nh["index"] == nhop_kidx][0] assert nh["ifa"] == str(second_addr.ip) + + +class TestRouteCornerCase1(SingleVnetTestTemplate): + @pytest.mark.parametrize("family", ["inet", "inet6"]) + @pytest.mark.require_user("root") + def test_add_direct_route_p2p_wo_ifa(self, family): + + tun_ifname = ToolsHelper.get_output("/sbin/ifconfig tun create").rstrip() + tun_ifindex = socket.if_nametoindex(tun_ifname) + assert tun_ifindex > 0 + rtsock = Rtsock() + + if family == "inet": + prefix = "172.16.0.0/12" + else: + prefix = "2a02:6b8::/64" + IFT_ETHER = 0x06 + gw_link = SaHelper.link_sa(ifindex=tun_ifindex, iftype=IFT_ETHER) + + msg = rtsock.new_rtm_add(prefix, gw_link) + msg.add_link_attr(RtConst.RTA_IFP, tun_ifindex) + rtsock.write_message(msg) + + data = rtsock.read_data(msg.rtm_seq) + msg_in = RtsockRtMessage.from_bytes(data) + msg_in.print_in_message() + + desired_sa = { + RtConst.RTA_DST: msg.get_sa(RtConst.RTA_DST), + RtConst.RTA_NETMASK: msg.get_sa(RtConst.RTA_NETMASK), + } + + msg_in.verify(msg.rtm_type, desired_sa)