From nobody Thu May 1 03:01:18 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZnzN01Rsnz5vQJ5; Thu, 01 May 2025 03:01:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZnzMz4CTPz3nnR; Thu, 01 May 2025 03:01:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746068479; 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=EWt1RcW6obEKspQdoJPtWv/t+Kf/nUaD7A+Zalt5YLk=; b=gaXroTdRdZakcyyjs6KOv78vxrENv1JXOebZ/eLd5T5bM1b7CGsGALkEWDCh9dsM7kKS0F 3foR4UIA/opio6ujpOLvOaViUZArKjCDofpfjOG4wns6FEOJPoZ+E4tWGj5DgoZPI9THzl qMdWBgK4NCn1uDwYtBLxxOhGueTtkJsPb4XUNV10xzjEqGvjUYr6uN0fFcbQN1dWPx3uJ1 0FTjFnYqNNN0Iv5mcG5EHvjaaNDc4RDUtkWc0RWN5gaIXjX5zyegEuwF3LGyKRWGv8Vgga qI6rLksT+aVwobhoHs1DtU8x7xw8+L1ljqPz+MjeRb0Vaos3IhKYQ+SD4lvvCg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1746068480; a=rsa-sha256; cv=none; b=t3CTZ0qqUC6zxe/+Vo0ilSdtXrAax+bRXxYKnQFR4T1+UFbAK/Aj5x7hSHe8WgR6W3M9o4 irq9iaNWTnS3gejLKOXhvK50CURs5TSn3W3qhZI2G4g5jccmgAmAuhiBE+ACR09C6TUkqN Wmvzym4r+FBC/sd+61P2n9Q6N/P7z2U/IB8F72wuvZKnzNXJYBI1DEFfhLd1cGmPnwmqrv lrDXc1u/8yGYVWes//SQNb7/rLuPkjSXXokqchFxRxzl0jm/BKDQx5hGe2+v6xGOy8Kigy Sd0T+RcbBqi2xEWpQ+FA2YUK4mYBQTdSanrxQJuYIygXdugXiVUTlTAliW343w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746068480; 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=EWt1RcW6obEKspQdoJPtWv/t+Kf/nUaD7A+Zalt5YLk=; b=ver64QS19H0xtmPjCDLIzL0hZUskbzLfwQDAfyYTBxixRC47Sht0UpqJiG9lDxvyDN6mn0 PL2wJ5GafaEmYNUeEC012itfCFj1vEeEYe34D3U6tzV/LmILq2zzXQPJ+1iLFuXI5+h9wh Py2J4zjhYX3FMTLPSmm6cbmz5z6TND3Ipv9ovYJ/UZRpQQ+mmIQJgd5mSKYNIfMhWRXOnC nTnGTzbh3AdxvDK6WeBOoRr2h9NwFJhbE9o4UBaO6nQxcl0J4Wc0Nq4LkkeGSwvna62J+9 7Q8pVsmDK1sosXgE0/oFP5QFaQSV+fP+CSlBkz4ixw15+s8xxyNWUk3SDPzx/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 4ZnzMz0flCzZJr; Thu, 01 May 2025 03:01:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 54131IG5078889; Thu, 1 May 2025 03:01:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 54131Ilo078886; Thu, 1 May 2025 03:01:18 GMT (envelope-from git) Date: Thu, 1 May 2025 03:01:18 GMT Message-Id: <202505010301.54131Ilo078886@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: 28e89934a9be - main - rtwn: fix mbuf allocation errors in USB RX path for > 4 KiB frames List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 28e89934a9bec3eca08f4d291a5699485c29d203 Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=28e89934a9bec3eca08f4d291a5699485c29d203 commit 28e89934a9bec3eca08f4d291a5699485c29d203 Author: Adrian Chadd AuthorDate: 2025-04-27 23:50:51 +0000 Commit: Adrian Chadd CommitDate: 2025-05-01 03:01:05 +0000 rtwn: fix mbuf allocation errors in USB RX path for > 4 KiB frames We can and do receive > 4 KiB frames in the RX path (A-MSDU frames can be up to 11KiB.) At least one user has reported seeing this and having it break their traffic flows. Use m_get3() to try and grab an mbuf jumbo cluster. This may not be the best permanent solution, but it at least will fail for frame sizes we expect to see up and including the largest A-MPDU frame (11Kib) and keep a counter if it can't allocate, versus just returning NULL because it's too large (and not keeping counters.) Differential Revision: https://reviews.freebsd.org/D50049 PR: kern/286366 Reviewed by: bz --- sys/dev/rtwn/usb/rtwn_usb_rx.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sys/dev/rtwn/usb/rtwn_usb_rx.c b/sys/dev/rtwn/usb/rtwn_usb_rx.c index 657d6bdeb9e4..4a4294c0d890 100644 --- a/sys/dev/rtwn/usb/rtwn_usb_rx.c +++ b/sys/dev/rtwn/usb/rtwn_usb_rx.c @@ -124,10 +124,15 @@ rtwn_rx_copy_to_mbuf(struct rtwn_softc *sc, struct rtwn_rx_stat_common *stat, if (rtwn_rx_check_pre_alloc(sc, stat) != 0) goto fail; - m = m_get2(totlen, M_NOWAIT, MT_DATA, M_PKTHDR); + /* + * Note: this can require >4 KiB (eg de-aggregating an A-MSDU + * from an USB frame. See kern/286366 for more information. + */ + m = m_get3(totlen, M_NOWAIT, MT_DATA, M_PKTHDR); if (__predict_false(m == NULL)) { - device_printf(sc->sc_dev, "%s: could not allocate RX mbuf\n", - __func__); + device_printf(sc->sc_dev, + "%s: could not allocate RX mbuf (%d bytes)\n", + __func__, totlen); goto fail; }