Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4748882pxj; Wed, 12 May 2021 12:19:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZOXFrExEM4dizQJGZhHI6fi9t8Y+7WB6eDINIK10hK9fooXb22YjMsRBb4h+SmsoLyFty X-Received: by 2002:a17:906:4704:: with SMTP id y4mr2068532ejq.68.1620847194652; Wed, 12 May 2021 12:19:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620847194; cv=none; d=google.com; s=arc-20160816; b=a1mvK3hbSZWYzKrILxnYFbKyNKVA9+c2mDYixyhSaDshb3Nz0xAhXQrr+c2YKvL0N4 V/uIWEdp0cvyssSFfnJoR+3KG7YXm5CmB0dSRSpiKvKkXJm111W7thVZkVWV7UK/huBl qyixd7Mlwwz6j3Uazs5HIf7PGWnyRtunj2etn3nTrEa7B7tDE3r20ExUoZc/CkjZFOES hw1OgDisHaiSQCUHnTYPX5rt/OfghwZBoiFS1ytQkPfQzNLHczvsanzNKSgmSIdd9JVz q94tJPodDNCXIQsgYQbWLt7uExvSGPjV42FChSRWbpm4z2IWmNSQTIjd7qXdOJM9kiGd rrUA== 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=8MhazfxotYo2wL87FfdcQg3KY8/D2YPBt0hpgYYo97Y=; b=SlLf7wHl0Y8vV3z9e3aQpn4yeHZRK+SZp1KyNw2xo3H4yIz/eDYB0qmof5lT+7dGYF UQNkg9YkQ/GjGwHu3yQGCRZOkTrpLYURj6njz23yA/SiGSDOjdW5ESIag8OQPtks9XfU 5BExOU7Mymf4JtXX9tAff3coPYGo57klL8GUiXIuHSuReeN0zBOY5JbdDVEVhnAt7lDa zBudzyavV1wGgijvggFMNUVDSoCNRm4EhLnwMkiCd3BvFQcSN7w25//eDJRm5PCau1Ek 5en0poI2DDeQ91jVk7G5ulSwaiJis673rNi8TMDqYqGDDhDnHbTYa3U2V3fmWK2+bLzA K5aQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=a3AlVVHD; 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 yw18si678814ejb.569.2021.05.12.12.19.26; Wed, 12 May 2021 12:19:54 -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=a3AlVVHD; 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 S1377988AbhELTKD (ORCPT + 99 others); Wed, 12 May 2021 15:10:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:33484 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244305AbhELQmx (ORCPT ); Wed, 12 May 2021 12:42:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id DDE9E61E13; Wed, 12 May 2021 16:12:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620835952; bh=X7kW5XeS5iSsyQsOvlCif7BER4DQTsz13EwFSfoR8g0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a3AlVVHDaJ97/shkVce/lc9oQ86eGKkJvk6NPfkGiykZ/RGqFSe3gTo+RklMZRivd hvRQRP6TmhpvabAdHnvTVrzxePjbXSD/IRafGvo4WrrOrvmL0W1atLvxWJNiT0fd/m ChIZ/wp1IeF5bb4odVArNzri/S0Hk8h7MfmeAqE0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Colin Ian King , "David S. Miller" , Sasha Levin Subject: [PATCH 5.12 550/677] cxgb4: Fix unintentional sign extension issues Date: Wed, 12 May 2021 16:49:56 +0200 Message-Id: <20210512144855.657112926@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144837.204217980@linuxfoundation.org> References: <20210512144837.204217980@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: Colin Ian King [ Upstream commit dd2c79677375c37f8f9f8d663eb4708495d595ef ] The shifting of the u8 integers f->fs.nat_lip[] by 24 bits to the left will be promoted to a 32 bit signed int and then sign-extended to a u64. In the event that the top bit of the u8 is set then all then all the upper 32 bits of the u64 end up as also being set because of the sign-extension. Fix this by casting the u8 values to a u64 before the 24 bit left shift. Addresses-Coverity: ("Unintended sign extension") Fixes: 12b276fbf6e0 ("cxgb4: add support to create hash filters") Signed-off-by: Colin Ian King Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- .../net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c index 83b46440408b..bde8494215c4 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c @@ -174,31 +174,31 @@ static void set_nat_params(struct adapter *adap, struct filter_entry *f, WORD_MASK, f->fs.nat_lip[15] | f->fs.nat_lip[14] << 8 | f->fs.nat_lip[13] << 16 | - f->fs.nat_lip[12] << 24, 1); + (u64)f->fs.nat_lip[12] << 24, 1); set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 1, WORD_MASK, f->fs.nat_lip[11] | f->fs.nat_lip[10] << 8 | f->fs.nat_lip[9] << 16 | - f->fs.nat_lip[8] << 24, 1); + (u64)f->fs.nat_lip[8] << 24, 1); set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 2, WORD_MASK, f->fs.nat_lip[7] | f->fs.nat_lip[6] << 8 | f->fs.nat_lip[5] << 16 | - f->fs.nat_lip[4] << 24, 1); + (u64)f->fs.nat_lip[4] << 24, 1); set_tcb_field(adap, f, tid, TCB_SND_UNA_RAW_W + 3, WORD_MASK, f->fs.nat_lip[3] | f->fs.nat_lip[2] << 8 | f->fs.nat_lip[1] << 16 | - f->fs.nat_lip[0] << 24, 1); + (u64)f->fs.nat_lip[0] << 24, 1); } else { set_tcb_field(adap, f, tid, TCB_RX_FRAG3_LEN_RAW_W, WORD_MASK, f->fs.nat_lip[3] | f->fs.nat_lip[2] << 8 | f->fs.nat_lip[1] << 16 | - f->fs.nat_lip[0] << 24, 1); + (u64)f->fs.nat_lip[0] << 25, 1); } } @@ -208,25 +208,25 @@ static void set_nat_params(struct adapter *adap, struct filter_entry *f, WORD_MASK, f->fs.nat_fip[15] | f->fs.nat_fip[14] << 8 | f->fs.nat_fip[13] << 16 | - f->fs.nat_fip[12] << 24, 1); + (u64)f->fs.nat_fip[12] << 24, 1); set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 1, WORD_MASK, f->fs.nat_fip[11] | f->fs.nat_fip[10] << 8 | f->fs.nat_fip[9] << 16 | - f->fs.nat_fip[8] << 24, 1); + (u64)f->fs.nat_fip[8] << 24, 1); set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 2, WORD_MASK, f->fs.nat_fip[7] | f->fs.nat_fip[6] << 8 | f->fs.nat_fip[5] << 16 | - f->fs.nat_fip[4] << 24, 1); + (u64)f->fs.nat_fip[4] << 24, 1); set_tcb_field(adap, f, tid, TCB_RX_FRAG2_PTR_RAW_W + 3, WORD_MASK, f->fs.nat_fip[3] | f->fs.nat_fip[2] << 8 | f->fs.nat_fip[1] << 16 | - f->fs.nat_fip[0] << 24, 1); + (u64)f->fs.nat_fip[0] << 24, 1); } else { set_tcb_field(adap, f, tid, @@ -234,13 +234,13 @@ static void set_nat_params(struct adapter *adap, struct filter_entry *f, WORD_MASK, f->fs.nat_fip[3] | f->fs.nat_fip[2] << 8 | f->fs.nat_fip[1] << 16 | - f->fs.nat_fip[0] << 24, 1); + (u64)f->fs.nat_fip[0] << 24, 1); } } set_tcb_field(adap, f, tid, TCB_PDU_HDR_LEN_W, WORD_MASK, (dp ? (nat_lp[1] | nat_lp[0] << 8) : 0) | - (sp ? (nat_fp[1] << 16 | nat_fp[0] << 24) : 0), + (sp ? (nat_fp[1] << 16 | (u64)nat_fp[0] << 24) : 0), 1); } -- 2.30.2