From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: passt.top; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=CAH/kdx4; dkim-atps=neutral Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTPS id 9186B5A0265 for ; Fri, 03 Apr 2026 17:18:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1775229508; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=kWNEcIY9d4qOpcqyq+rUIw5ayEbrdClTHVQ4muzvh1E=; b=CAH/kdx4jbhppyXo091kj549/GkLIzAcLBnuIXaz4DsFNNk7xDuFNgnZfcGqKB6dff3cjG uRQKcXBcLWSTHCvcee11YPiTEiaHZAfPZcXGtCfUtNGWe4hraJwuH0ScavP+cJO1kwXpFQ O/MQRQ6/8p7O2WNXZKYhBlIJxEZYxJE= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-501-hx3voVpnOvOvE1LNrGm6kA-1; Fri, 03 Apr 2026 11:18:27 -0400 X-MC-Unique: hx3voVpnOvOvE1LNrGm6kA-1 X-Mimecast-MFC-AGG-ID: hx3voVpnOvOvE1LNrGm6kA_1775229506 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4887f516cf5so14658875e9.1 for ; Fri, 03 Apr 2026 08:18:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775229506; x=1775834306; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kWNEcIY9d4qOpcqyq+rUIw5ayEbrdClTHVQ4muzvh1E=; b=R0cxWxUQD1Uk7mOrcsg2qrWsgm4pToSBQZGmNbkVEWGRSsDUGsz+5s/n28GSyecfPX hKAv5NLygf3X1MhhMNnNMWl+rd4wG40leal00/d7siDvNKsYx7kAkq6E/nyfYG+1qh4F GH9smPIj/Su92kM7phnaXDRnbJDoh84la/yk4uqxqEOyOhPjal0x62781OKwWm6BFzss DGRBJP8bsvkHasI0QdkC44XDQO8twxzNj1dI6VkHr89PNl59Tfsd59HIQkme2Fy+w8E5 BiJz1AwzE9su9xCl7WJUBVAAZ3mDSJ6I/v6/RffNooDVmjSih2/UtPSMzT+nQpinXtdi yA8g== X-Gm-Message-State: AOJu0YyE6i7D+pA+zhEC7bS+UbJU0xiMwvtrnYu/U67wpNChq7Nlnazk txKLYybaoXojfJgniDw3GwE9PDjqPiUwWhL5oRh2JLvm8ULIML+ddg1Gr+uR9nBORYAsSx/XBT1 wQYpzesfPNCIm4JSl0vJDybuJ+aw92dfwJdktclXONROV0QZxWUwLUA== X-Gm-Gg: ATEYQzzLf32Um6h6EvcaY+iH6Z1Lj9ZB+kT0lrpKFD/keXUZJ7xF13XX7we6Uko8Glp FMfa785fxfs+GOBxuP6msCB4LyOvguxxnLT6mwA1Gb0H5B0aLyblyCNY7N5BuGb/BXtlK5gw4Or jEgF0JpywohUXVGxSLna32qWzQvyIYb9YgRJTw2eH5hyvrxgTpls2/vQR9ZVNSV+WGoSw+XxTMA E4U6q707q9Ch0cXufkdvpoZrJZz23Q5REM9XcvT2eGJP6spZSOh9A98nRc5q6ACTTgWVQP7PaBK EerljfEnDOrCzS3Az6nmteUG6s1KNn6xHagf87k48hH6SNBaK4BkMGONb4/PQAJnxCGtWu4UgwU jaao7N4vGs+QDq2PzA6WDcMWJe0LlBZ6IYH/J4q3XeJNt7VkC7y+6PFA= X-Received: by 2002:a05:600c:34c7:b0:485:41c4:e2e5 with SMTP id 5b1f17b1804b1-488997c345dmr57210775e9.27.1775229505892; Fri, 03 Apr 2026 08:18:25 -0700 (PDT) X-Received: by 2002:a05:600c:34c7:b0:485:41c4:e2e5 with SMTP id 5b1f17b1804b1-488997c345dmr57210155e9.27.1775229505278; Fri, 03 Apr 2026 08:18:25 -0700 (PDT) Received: from [192.168.100.100] (82-64-211-94.subs.proxad.net. [82.64.211.94]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4888a63c9b1sm143624865e9.5.2026.04.03.08.18.24 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 03 Apr 2026 08:18:24 -0700 (PDT) Message-ID: <032ffd0c-1f46-435b-adeb-7cceea4d30b7@redhat.com> Date: Fri, 3 Apr 2026 17:18:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 1/3] udp_vu: Allow virtqueue elements with multiple iovec entries To: Stefano Brivio References: <20260401192326.1783350-1-lvivier@redhat.com> <20260401192326.1783350-2-lvivier@redhat.com> <20260403135309.1d84f5dd@elisabeth> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: <20260403135309.1d84f5dd@elisabeth> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: lwPvqJb3WpjXzgY2A2SaeXe79OYOyHtYL8anMCLlYkU_1775229506 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID-Hash: 7VT2REMU5ABM7ZAQ2BFO2WAKHDWVBB6L X-Message-ID-Hash: 7VT2REMU5ABM7ZAQ2BFO2WAKHDWVBB6L X-MailFrom: lvivier@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On 4/3/26 13:53, Stefano Brivio wrote: > On Wed, 1 Apr 2026 21:23:24 +0200 > Laurent Vivier wrote: > >> The previous code assumed a 1:1 mapping between virtqueue elements and >> iovec entries (enforced by an assert). Drop that assumption to allow >> elements that span multiple iovecs: track elem_used separately by >> walking the element list against the iov count returned after padding. >> This also fixes vu_queue_rewind() and vu_flush() to use the element >> count rather than the iov count. >> >> Use iov_tail_clone() in udp_vu_sock_recv() to handle header offset, >> replacing the manual base/len adjustment and restore pattern. >> >> Signed-off-by: Laurent Vivier >> --- >> udp_vu.c | 29 ++++++++++++++--------------- >> 1 file changed, 14 insertions(+), 15 deletions(-) >> >> diff --git a/udp_vu.c b/udp_vu.c >> index 30af64034516..5608a3a96ff5 100644 >> --- a/udp_vu.c >> +++ b/udp_vu.c >> @@ -64,30 +64,25 @@ static size_t udp_vu_hdrlen(bool v6) >> */ >> static ssize_t udp_vu_sock_recv(struct iovec *iov, size_t *cnt, int s, bool v6) >> { >> + struct iovec msg_iov[*cnt]; > > Variable-length Arrays (VLAs) are allowed starting from C99 but we > should really really avoid them. If 'cnt' is big enough, we risk > writing all over the place. That's the main reason why they were more > or less banned from the Linux kernel some years ago and eventually > eradicated: I can use alloca() if you prefer ;) > > https://lore.kernel.org/lkml/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com/ > > https://lore.kernel.org/lkml/20181028172401.GA41102@beast/ > > Can we use VIRTQUEUE_MAX_SIZE as upper bound like udp_vu_sock_to_tap() > does? Yes, but the idea here is we have always *cnt < VIRTQUEUE_MAX_SIZE (because the value comes from vu_collect() and in vu_collect(): *in_sg (&iov_cnt or *cnt) < max_in_sg (ARRAY_SIZE(iov_vu) or VIRTQUEUE_MAX_SIZE or 1024) And vu_collect(), in this case, sets generally *in_sg to a value lower than 44: we want to create a frame of ETH_MAX_MTU by coalescing kernel buffers of size ETH_FRAME_LEN) For me 16 kB on the stack is a lot of memory (but I started programming on a 48 kB RAM computer...). Thanks, Laurent