From nobody Sat Feb 7 00:58:29 2026 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 4f7CJ62TfTz6Qs8h for ; Sat, 07 Feb 2026 00:58: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 "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f7CJ60P5cz3LyT for ; Sat, 07 Feb 2026 00:58:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770425910; 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=Snt0m9Co9whwaVICdKlJFqR76kVEgTbGlN9aqiVcZTs=; b=a0LWRgS73HmkmZ6VIbT2pIdkPbTJSEzHWEPTl25/7uk2db7PV9Gx+jU4flRFqOXMLa79ng g3eOx02TjqHaN99g4VLe5X4tpU3s29tTwLFCFTGI9gIjPQm69KWmrm8DlzowdUVnTE5huP 9kb8yAe/5mjFzll7p00Ool0Lg0kc/EWjXQXSYwBKL/qhpK9x1AWgl0T49QnsHn/1pgwthu Zbg+4CLcGsjNTOQC1dxLmpIQ4RaH0RHp0GI5img0oFmcBEw1Marzh54rqcTbu9/bPbb85a 7eHhafzSp/PGOHmO/FLbgDXOVowd4e/nCkrk/dXom2nxtRi0TOwo6dd5Sj0KoQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770425910; a=rsa-sha256; cv=none; b=JGdROU+AHg1hxeaRpQZ9tJfeNhrCK/5NOdwSv/fUWhh9TLradZrtQmGA+LHVdLAV53PIdi SM7GWhnoobO7fLtCflLgerCDwXTp8rCAUktPwuBW4BYtcOQhLuzHVJcJ62R+Y2M1hF7vKb PNhmW58XJxdewjNdqDn6RxNeST94/ifvhC9oTPl+sB7V3oXU9YdhiX+Ea2Z2AodvshKmjX Z58pMu41bl+1GV6BXUBpmn/j14WLHtFYBYxRYCynRDfFfSmKK3rqxiFcbv6Wl+3CgPPh7f JYRfKAfeiam/R2YlisLgiRCLCl8C7yTGrEfjYXjKOSjYbWFwyvynUAo7X4sQAQ== 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=1770425910; 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=Snt0m9Co9whwaVICdKlJFqR76kVEgTbGlN9aqiVcZTs=; b=iK4b/85VBQQTKIUFopSBT11qazNIdqCiiMwERTFao6FOT1KDMBHWD5/UbiMEB4TLQ7RBQR IZF3ax0+SSPps6k1jUqeKpBzpbzHoItXQcoyGSxZtknopP0JzmONNSh/9w2B0Jg4EXwEVs k6kuTaSYmkrvMdJoko7r3zNvP35b7I0745gdPbzT8BlhfFFsHgmtfpib4ZZEFw1xmMJ+p4 ve03hHsZpJbp/+4dTx+hgLXMT4XlRLqo9IzyBiate7o1fVn1PDNEYES6SiwUFiXt/pikX5 1XqOn9qIyyObQ8ZdV19aUIa+eVomhvo4yUIF/AvJYFu3Cit6MF8U4VXO07NOPg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f7CJ56Q9zzfYK for ; Sat, 07 Feb 2026 00:58:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3497c by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 07 Feb 2026 00:58:29 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 94be5dbdfd22 - main - LinuxKPI: 802.11: catch possible NULL pointer deref with mt76 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: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 94be5dbdfd22de4ec9ad699803ae18d9d209d824 Auto-Submitted: auto-generated Date: Sat, 07 Feb 2026 00:58:29 +0000 Message-Id: <69868e35.3497c.7cff2db@gitrepo.freebsd.org> The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=94be5dbdfd22de4ec9ad699803ae18d9d209d824 commit 94be5dbdfd22de4ec9ad699803ae18d9d209d824 Author: Bjoern A. Zeeb AuthorDate: 2026-02-04 22:46:47 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-02-07 00:57:53 +0000 LinuxKPI: 802.11: catch possible NULL pointer deref with mt76 With mt76 we, for the first time, see that txstat->skb or txstat->info may not be filled in linuxkpi_ieee80211_tx_status_ext(). Guard for these cases checking for skb and info to be not NULL and assume a TX failure in case info is NULL. Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/compat/linuxkpi/common/src/linux_80211.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 54571b28e2b8..0b732cb691c6 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -8304,6 +8304,9 @@ _lkpi_ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb, struct ieee80211_node *ni; struct mbuf *m; + if (skb == NULL) + return; + m = skb->m; skb->m = NULL; @@ -8329,13 +8332,13 @@ linuxkpi_ieee80211_tx_status_ext(struct ieee80211_hw *hw, struct ieee80211_tx_status *txstat) { struct sk_buff *skb; - struct ieee80211_tx_info *info; + struct ieee80211_tx_info *info, _info = { }; struct ieee80211_ratectl_tx_status txs; struct ieee80211_node *ni; int status; skb = txstat->skb; - if (skb->m != NULL) { + if (skb != NULL && skb->m != NULL) { struct mbuf *m; m = skb->m; @@ -8345,7 +8348,13 @@ linuxkpi_ieee80211_tx_status_ext(struct ieee80211_hw *hw, ni = NULL; } + /* + * If we have no info information on tx, set info to an all-zero struct + * to make the code (and debug output) simpler. + */ info = txstat->info; + if (info == NULL) + info = &_info; if (info->flags & IEEE80211_TX_STAT_ACK) { status = 0; /* No error. */ txs.status = IEEE80211_RATECTL_TX_SUCCESS; @@ -8410,7 +8419,8 @@ linuxkpi_ieee80211_tx_status_ext(struct ieee80211_hw *hw, if (txstat->free_list) { _lkpi_ieee80211_free_txskb(hw, skb, status); - list_add_tail(&skb->list, txstat->free_list); + if (skb != NULL) + list_add_tail(&skb->list, txstat->free_list); } else { linuxkpi_ieee80211_free_txskb(hw, skb, status); }