Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp3698719pxv; Mon, 26 Jul 2021 09:40:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz1hJ+enwf0J6Y/MxEhAk10VQ2Jj74uBoQlSU7o4ec+jNCV2MrBsRq+wyQu9syXiRPvWped X-Received: by 2002:a05:6638:3292:: with SMTP id f18mr17785242jav.120.1627317512327; Mon, 26 Jul 2021 09:38:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627317512; cv=none; d=google.com; s=arc-20160816; b=rshQ+oXhlQrsw75hf0kfQDE8R/iSwMBhOmQq31WyJrE1lKYKrU5VyPMrIC8FdPPlRm 2sAq7E6FdwGFA6bptuA9ymZPeoMfZWKRd7h9ackF9oAtqTDFMc0/3+tGwaJ/FBOWDHw9 f7qbxzyiub3t9YtvyulNtuo7A6uavFx/p9RUTMdmDBd30eSU6hcHXfHNoQYJOdPiomG6 B28X0tgOOkTPIvne752FEmBs+x32rhxhCxCbXeNkrz2DmoOba328LhWK8lWUT/I+5iPU q1szDqfDgfmBVA1Gi9vbxAkILIP3iUD85VZUQ/g3IsbOit/bPf5gR456Zv7Yl7NrivZE DHQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7+JDDFyKW9KisAjW6JY3+kI61wrb/Ze71XC/PbFtIVc=; b=CvfSxFAq0CgwIRdFdyaWXY+hSD+fIct/8L0Jfl/ryImX9o44Ugb3ayge1LcEVfRzow m0ymqNOCQoj9TfNqZEASOhOasLXrSo8uuJelPXp+BSH5M5AIKMNWdSXyJ/85cmwvj6ae A4Rw89G5iiLU3hJG/W8FlsqtdG+Qu6kkROcT7DNPl7F1CmLpQ/8k6NoEmyyt+aNtXN9L qMl5RY2dpR6tOZAAYw9tZAjBbL7u2d0vX9Ug/BGQbb3ycH/1knq2CQAR2f4iJhTp7t0n Y5ueWkFpCMtUQON22ovYzrJ5SUHE4vq6Jn+DAsuWQqbzmFlKtq/NHcb+zsG6vZxoGhdu AKkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=L+ZVvKkY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m1si450902ilu.13.2021.07.26.09.38.20; Mon, 26 Jul 2021 09:38:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=L+ZVvKkY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239586AbhGZPxj (ORCPT + 99 others); Mon, 26 Jul 2021 11:53:39 -0400 Received: from mail.kernel.org ([198.145.29.99]:48254 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233188AbhGZPcL (ORCPT ); Mon, 26 Jul 2021 11:32:11 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2FDF960F6B; Mon, 26 Jul 2021 16:12:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1627315938; bh=W1bGz6A82bEqY/+wCZCf5+pdrKBaUCUwYowAFAan5c4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L+ZVvKkYRyHsgdPRtdhlFtEXBN8qXeL+SLXEuURJ1mDnrJaejohVmenG46csLTbLL Bod653PCGfdNwfVXWql1mcFszvpBMMdBS4JfiuevjAXAkjP/cRotL7pl5CtO+L8CPq z/elegm5KXH2+mEt31/9iRpKE0/JHmW6CzDUZXGU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Somnath Kotur , Michael Chan , "David S. Miller" , Sasha Levin Subject: [PATCH 5.13 108/223] bnxt_en: Validate vlan protocol ID on RX packets Date: Mon, 26 Jul 2021 17:38:20 +0200 Message-Id: <20210726153849.812349524@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210726153846.245305071@linuxfoundation.org> References: <20210726153846.245305071@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Michael Chan [ Upstream commit 96bdd4b9ea7ef9a12db8fdd0ce90e37dffbd3703 ] Only pass supported VLAN protocol IDs for stripped VLAN tags to the stack. The stack will hit WARN() if the protocol ID is unsupported. Existing firmware sets up the chip to strip 0x8100, 0x88a8, 0x9100. Only the 1st two protocols are supported by the kernel. Fixes: a196e96bb68f ("bnxt_en: clean up VLAN feature bit handling") Reviewed-by: Somnath Kotur Signed-off-by: Michael Chan Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 49aca3289c00..be36dee65f90 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1640,11 +1640,16 @@ static inline struct sk_buff *bnxt_tpa_end(struct bnxt *bp, if ((tpa_info->flags2 & RX_CMP_FLAGS2_META_FORMAT_VLAN) && (skb->dev->features & BNXT_HW_FEATURE_VLAN_ALL_RX)) { - u16 vlan_proto = tpa_info->metadata >> - RX_CMP_FLAGS2_METADATA_TPID_SFT; + __be16 vlan_proto = htons(tpa_info->metadata >> + RX_CMP_FLAGS2_METADATA_TPID_SFT); u16 vtag = tpa_info->metadata & RX_CMP_FLAGS2_METADATA_TCI_MASK; - __vlan_hwaccel_put_tag(skb, htons(vlan_proto), vtag); + if (eth_type_vlan(vlan_proto)) { + __vlan_hwaccel_put_tag(skb, vlan_proto, vtag); + } else { + dev_kfree_skb(skb); + return NULL; + } } skb_checksum_none_assert(skb); @@ -1865,9 +1870,15 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, (skb->dev->features & BNXT_HW_FEATURE_VLAN_ALL_RX)) { u32 meta_data = le32_to_cpu(rxcmp1->rx_cmp_meta_data); u16 vtag = meta_data & RX_CMP_FLAGS2_METADATA_TCI_MASK; - u16 vlan_proto = meta_data >> RX_CMP_FLAGS2_METADATA_TPID_SFT; + __be16 vlan_proto = htons(meta_data >> + RX_CMP_FLAGS2_METADATA_TPID_SFT); - __vlan_hwaccel_put_tag(skb, htons(vlan_proto), vtag); + if (eth_type_vlan(vlan_proto)) { + __vlan_hwaccel_put_tag(skb, vlan_proto, vtag); + } else { + dev_kfree_skb(skb); + goto next_rx; + } } skb_checksum_none_assert(skb); -- 2.30.2