Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp674052pxv; Wed, 14 Jul 2021 12:43:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy6xisKuYuav/UPdaS3JZDiedKDWV818wB+s0Jf9+dwvThW2nLKkluKlSYfle+jpbmLt4yR X-Received: by 2002:a5d:8453:: with SMTP id w19mr8138621ior.105.1626291834973; Wed, 14 Jul 2021 12:43:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626291834; cv=none; d=google.com; s=arc-20160816; b=BzSYyZQ+a5QuXwH0vIgPWVCRBw481gHRp5JdHSECqBv1s0mUglAXM+6A7b1KV99kgU WtyT1aV92EpZlm11mqsDb1qbNkvwitfE3XO049L4ObeQa4WMg9xSoRZAFGpiEDNWhZws WCv/AX7GEpnb90Eo2JzUrhRq7kjOfrIWtU3wGJ8L3nEk8zkQKwVvf/q03qzpDcre3DLf AHThGTnFraybYVh75CPb0EmiHdi8/hlONshm688Q8+/dfsRIqvXVKiLoxSiXscpNvHvp 2irNxgsyhfxuUa9KWPPkLhK2Ng1lY8R6eoUKEPVJcrR3NNYgM7Ni9sKgunNkqgxcgrf8 yMpA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=zjqrBki4bOlnTvqLYRvZQ8TTEDdqmnzyo+Rco70Z7c4=; b=KY8z3Di3DsXuMAIqH0GgEM7sZVFO1W34OLtcz/j7iFhsSFwF/h091S115buhTywcWj 1SA695W9kACH49EkrRVZqu/t1x0ZSMp3eGgxd9xkgHs8fDys7N8iddLPB6RxDYpPLTzV gELVHTnzNJDk9/jzGzKRtpKuCEn4IASNaqgSkgcrSYoQCY6yewx5hlosmnP6Q5YP+Jtb vuP/N2wU5elAhcrWRbusdlzifhN8HaN9qD9XjVcfGBBWYECSLxVyf+CD/rFrYsljk5YO Q1RJjaIrFDct1YVC3xr2yPfnl75iKV7G9GbJ5fn+RTB1ttoTDIE3m6AyjcsMXpW7oL+I oW9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=MKU4Dkbh; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m4si3346601iln.52.2021.07.14.12.43.28; Wed, 14 Jul 2021 12:43: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=@kernel.org header.s=k20201202 header.b=MKU4Dkbh; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236450AbhGNTpe (ORCPT + 99 others); Wed, 14 Jul 2021 15:45:34 -0400 Received: from mail.kernel.org ([198.145.29.99]:38404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235954AbhGNTnR (ORCPT ); Wed, 14 Jul 2021 15:43:17 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A8A2A613D1; Wed, 14 Jul 2021 19:40:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626291621; bh=jWSKzkJ1vsphKuArPC7UbEpDSmeIB1msXfkM5MF16iA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MKU4DkbhrBJ2I7myv25ZDqHSMmmDR6ZO7sw/fbJNJq5kKOeO0DOx4OUTV3dN4AmGl tEC9kzFKhe5BAbdLAdQ4C89+F3Y6t45TpMgxqFus6BGLpA8KRZdEOd6Haxk/NwXHj8 r2h2OMez9DDkd/NZpL1H5HebeJRE7TVzC8s2nmzlmqppo+5wPkY0SMsolcDj0f1kC/ JUDP6+29PuQKfc4jRSB1Zn50eWPniRSSswGEOhr6kSZPjxGbwp1ZP1RXClTp1Vh9HZ GajBnCqode4oBaj1JdiaHIBW+VPU9yXiYdhxGSu9tzEwjAscs8Y6nNIO7mcuDW3pS9 88yhzkEEQbwTA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Colin Ian King , "Martin K . Petersen" , Sasha Levin , linux-scsi@vger.kernel.org Subject: [PATCH AUTOSEL 5.13 098/108] scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 Date: Wed, 14 Jul 2021 15:37:50 -0400 Message-Id: <20210714193800.52097-98-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210714193800.52097-1-sashal@kernel.org> References: <20210714193800.52097-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Colin Ian King [ Upstream commit 332a9dd1d86f1e7203fc7f0fd7e82f0b304200fe ] The shifting of the u8 integer returned fom ahc_inb(ahc, port+3) 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. [ This dates back to 2002, I found the offending commit from the git history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git, commit f58eb66c0b0a ("Update aic7xxx driver to 6.2.10...") ] Link: https://lore.kernel.org/r/20210621151727.20667-1-colin.king@canonical.com Signed-off-by: Colin Ian King Signed-off-by: Martin K. Petersen Addresses-Coverity: ("Unintended sign extension") Signed-off-by: Sasha Levin --- drivers/scsi/aic7xxx/aic7xxx_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c index 4b04ab8908f8..a396f048a031 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_core.c +++ b/drivers/scsi/aic7xxx/aic7xxx_core.c @@ -493,7 +493,7 @@ ahc_inq(struct ahc_softc *ahc, u_int port) return ((ahc_inb(ahc, port)) | (ahc_inb(ahc, port+1) << 8) | (ahc_inb(ahc, port+2) << 16) - | (ahc_inb(ahc, port+3) << 24) + | (((uint64_t)ahc_inb(ahc, port+3)) << 24) | (((uint64_t)ahc_inb(ahc, port+4)) << 32) | (((uint64_t)ahc_inb(ahc, port+5)) << 40) | (((uint64_t)ahc_inb(ahc, port+6)) << 48) -- 2.30.2