Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3621924ybt; Tue, 30 Jun 2020 07:29:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzOzzn2tFmTUJ5Tlme5EgS5o0+g/K9dNF7lahwHMB7Mw6rcyogbcyJi8Gvdw8AwxfMHLCb1 X-Received: by 2002:a17:906:3158:: with SMTP id e24mr18153593eje.543.1593527379878; Tue, 30 Jun 2020 07:29:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593527379; cv=none; d=google.com; s=arc-20160816; b=k2lCj1lncrXmh22HQw1mTu4hoUtp3yOkDyBfVImHf+3eT+xKhAvwgtfXLbXXqXvZ65 dk+ujAngiiGlY4dYcO4UxwqoDPNKu2+yXo4oQ/5pdKmUSfXCkPGx60NOmiuh5GzrX7qn nkmolxm7vQE9KvAqAU3Bto+s+OQamMg2F3SbAQY2pcni2tJ5MeDICnYLexJ3/4855z6W Pwk2H9+ezd4QZ421HiKBrN3Mj96rlhRLK1h9p0XEv0kMjXMlovozB5eFjN93ERROLLt2 g402h6R923Pgt4fzR20PuDMdnR7yHMOcfR7pW9RynbcOLFBwhu0bizVoNRbUJWbHWeVD HliQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=g5o5q95nmLk6yZiExwimc4p67JoP1aZcNa7P0MUFeiY=; b=cN7I9UVzMaX5Ozjif3h2l9pIIIeZpDvMs2lvx/uUL6yw9Qb8tVHTwj1d81yOlwsW0k 9KAMk50PzU4EdL2uhX2AAtGWVZ0LOz2cxxwyzsJqs6DbgdrtuP4wkhDw2vRi242b0eYi hsZrhWRu5AdK/E9cJI2au55AysDnbqvkYhxK73fufvF6EdPY0Ps1MXxYTfH89gvInYCV 8EZYU448PQB/1C3sPpyhDnD6gYSN+ibHsAl5dxp8+CBDdBr4q/ouO1EguSyRy0JJS93l vDTA3vo6DaVmk2J6iuhBcaN+zC/MG9u78isBSiCdCstT5+2D9amWZWPPuXuwdN30bTMo 3yEA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bh6si1829596ejb.325.2020.06.30.07.29.16; Tue, 30 Jun 2020 07:29:39 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388936AbgF3O15 (ORCPT + 99 others); Tue, 30 Jun 2020 10:27:57 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:47963 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388137AbgF3O15 (ORCPT ); Tue, 30 Jun 2020 10:27:57 -0400 Received: from 1.general.cking.uk.vpn ([10.172.193.212] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1jqHEg-0000Ds-8j; Tue, 30 Jun 2020 14:27:46 +0000 From: Colin King To: Boris Pismenny , Aviad Yehezkel , John Fastabend , Daniel Borkmann , Jakub Kicinski , "David S . Miller" , Tariq Toukan , Saeed Mahameed , netdev@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][next] net/tls: fix sign extension issue when left shifting u16 value Date: Tue, 30 Jun 2020 15:27:46 +0100 Message-Id: <20200630142746.516188-1-colin.king@canonical.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Colin Ian King Left shifting the u16 value promotes it to a int and then it gets sign extended to a u64. If len << 16 is greater than 0x7fffffff then the upper bits get set to 1 because of the implicit sign extension. Fix this by casting len to u64 before shifting it. Addresses-Coverity: ("integer handling issues") Fixes: ed9b7646b06a ("net/tls: Add asynchronous resync") Signed-off-by: Colin Ian King --- include/net/tls.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/net/tls.h b/include/net/tls.h index c875c0a445a6..e5dac7e74e79 100644 --- a/include/net/tls.h +++ b/include/net/tls.h @@ -637,7 +637,7 @@ tls_offload_rx_resync_async_request_start(struct sock *sk, __be32 seq, u16 len) struct tls_offload_context_rx *rx_ctx = tls_offload_ctx_rx(tls_ctx); atomic64_set(&rx_ctx->resync_async->req, ((u64)ntohl(seq) << 32) | - (len << 16) | RESYNC_REQ | RESYNC_REQ_ASYNC); + ((u64)len << 16) | RESYNC_REQ | RESYNC_REQ_ASYNC); rx_ctx->resync_async->loglen = 0; } -- 2.27.0