Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4564074pxj; Wed, 12 May 2021 08:16:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWVYYWbrXJEvExBOGFQ024tpptS8AVlXRySUQMz2KmW23EpMBX9aIQd2kvdmt9r+ddiy7p X-Received: by 2002:aca:3dc3:: with SMTP id k186mr8115310oia.126.1620832611013; Wed, 12 May 2021 08:16:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620832611; cv=none; d=google.com; s=arc-20160816; b=WWNq9R4GA9PotjD4pZvekHJ7M13hqiv57hHHTox1+GOTob1PAbhT4GfUsMmvkfsRbR o2K4WENlv9acdPjcGrB6LTLCjZBQ5JyM7UrZHJLNkkbhxc0C3oKt6PNfCfc7LsY34PIf 2oQyOsbDuYOlg/LGApghdLu15q4RODk5yBjNwp5rvKaK1VRmvujTlYahMoCto25l1zVb JIexwIOHYvPO1gE8tnLYr+9U3YJnKljHbY61r8kwLc8SkH860hGNKWzmnBWIKg2F43aj vu+zB/D+tnB8cehM9UHj3qOHXqHw2hV2p4FgL/KnVsR18M1BI6mzt+lk7CIwq3fnDqAE b2wg== 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=+WsCDpS/67U6fOThp4MYSO+xU0Q2iDzlw7nas81QgoU=; b=VvKZ5MIpxXsDvtuGvIKzzUrIz6fjdmu5+R5HVeCxcE7nJfethX1MHgute8o/4RXL9Q f5B5vOCq0MASN0MZvv7LHX4ZZ2tQ4SIHJzvFxTig09hq+oGYHzvYJkc58UYjID44rB2B rVp5/ZS1+6zlNwj65K/M2wKqMNGd94ID9sCYg3Z3XcG7SdQvO5/XVjSC8lLShNRjGXH/ 0grUJx1DSYP1uTX7A4d/vjIih3+8fet+ei/3g3b2VF84YGTPbMC4dOqz4Aj5nJksj/ex uq3i8gJl5dxelqjyr9Ib9peLwwR9TqQLZJO9h7SvedtMQYLMhB/gDzHYcmFynZCPgjfR n8GQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Iu9UYlS0; 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 v5si150979ote.104.2021.05.12.08.16.36; Wed, 12 May 2021 08:16:51 -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=Iu9UYlS0; 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 S234175AbhELPQM (ORCPT + 99 others); Wed, 12 May 2021 11:16:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:59082 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232744AbhELPG1 (ORCPT ); Wed, 12 May 2021 11:06:27 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 05A0761440; Wed, 12 May 2021 15:01:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620831665; bh=5BzllfyODiknD9PB5SlxmMJoDpEIpxygDl6M2PGADag=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Iu9UYlS0VSB/88eOHjDRdDtPgSyEvFCj5aVFb3+HT9v9Qm8fKnt1W+0BpICUhy2SD r9OSvCcglP7hzdEgRSXiS3s3Cu8TlxnJxqJZtqUu2VCWYtNTw/AKnbLfowoR6eZQo8 cSHsss566gO707wtyldH9WyIkjIs8UP45qY1+41Q= 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.4 194/244] cxgb4: Fix unintentional sign extension issues Date: Wed, 12 May 2021 16:49:25 +0200 Message-Id: <20210512144749.207218953@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144743.039977287@linuxfoundation.org> References: <20210512144743.039977287@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 cb50b41cd3df..64a2453e06ba 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