Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp707068pxv; Wed, 14 Jul 2021 13:34:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzysyIIgGbRHSXfLVPf7y7vIelu7kCI7KA2GiE5ci6r9lxRD5ehRQ6biyC3O2bFGABeKF14 X-Received: by 2002:a17:907:d28:: with SMTP id gn40mr39840ejc.175.1626294897451; Wed, 14 Jul 2021 13:34:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626294897; cv=none; d=google.com; s=arc-20160816; b=nX9tbv1xBtngp55JtN815cE3UYpNE+QgcmfuDfacfMylxFHiG3UwWoM9ac9hOMRsVM 4k6ffo2GgtdPLWPy3/XOs4GprXAAHfX5Zsh0okwvaBUHEvFA4jcfgAd8MgNjzC/Wcl2R txUKIoy72M8bIVWaEa9Fsg6W15pVU6voHSIZ2aNPm/h28C+pkZtYi1kyQzA95OZY54h2 37sRoaHVd/x4VTMho1ZraqqNfFB6Zv6g9O2buuuizY4Yw1CZtlDmxrrpCBDEfbPlSiZj seZUIqcxLAe0q7RWBN4N5KF3ll8MnQhzx2e0i7I4imXj3aReTMHMD4BD1d8U8caDJ8nA LqhQ== 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=SgDyzNPHyRRWYW7PwgCsuuw66EcX7vTvICrYZyJD8aU=; b=kC2DeOMo5pnklNuhH1VTIrwefCqoLsQp4udKsVSydka3x8kVXposfewp/vZudfBeqR oavsvbRljAHa60yFvJnLfIw5NDFSWmy7Fyk+Xv0lrRGgz0OxD7MpHXYI5VKwRcsR3/yM sQk89RR/19egDW7/Qx+UqfMYXJfvmrcG+uQ1eS9Ali7QAeo5DLqF8yp0/5XTDjfhVp2j o1KEAahOrdolyp3VHfGnSEXkRdXVH7KxvAGKqF54tBJURKBd3+swnQIyHhUmaQnorcth nVyF2xB37/iJngFfg243f/WFyYrySxpk3ctShoF2VXiPsy3S/M521apozJUe9nca85xb no7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DChLe3WA; 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 c4si3813120eds.528.2021.07.14.13.34.34; Wed, 14 Jul 2021 13:34:57 -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=DChLe3WA; 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 S240630AbhGNUFf (ORCPT + 99 others); Wed, 14 Jul 2021 16:05:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:49772 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240044AbhGNTvV (ORCPT ); Wed, 14 Jul 2021 15:51:21 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A6C5D613F9; Wed, 14 Jul 2021 19:48:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626292109; bh=EOn9u7CR6/zKn+iKpJ5wP4mwdhdoEP+PkurRyOi8y00=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DChLe3WAtSEF0ex689hlhk7t0B3kkLBj5RwIxMr/31laxQl1b5j81v2htHpqtSIU3 Pi6vR9ancqCcN+Y3uHfuInim8HyTgsE5DV50C5BEf5zipjg9An1Vq8jD8QYfnVXtTf vvaxuP1wPQC4+MOUdP9c+5uejOQszx+gyNlWCuq5J1n6U2e4VY6dmsZhL1ZDMHpAQz /9NjDmhSU6i1cgwABTyW1qKcMidkeU00WPQ99LIPJyMdln6XFiSoZXy32Io3hplY4K jlUgitZDE4Q9qomAheuZfD0f7WtQdvkrAm47m8MiBkMWkvoT0Ru6vdeUnaEa6xO++X VkL0EljyfYceA== 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 4.9 16/18] scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 Date: Wed, 14 Jul 2021 15:48:04 -0400 Message-Id: <20210714194806.55962-16-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210714194806.55962-1-sashal@kernel.org> References: <20210714194806.55962-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 def3208dd290..9b5832b46dec 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_core.c +++ b/drivers/scsi/aic7xxx/aic7xxx_core.c @@ -500,7 +500,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