Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750889Ab2KETxw (ORCPT ); Mon, 5 Nov 2012 14:53:52 -0500 Received: from mail-vb0-f46.google.com ([209.85.212.46]:35664 "EHLO mail-vb0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753036Ab2KETxp (ORCPT ); Mon, 5 Nov 2012 14:53:45 -0500 From: Xi Wang To: Xiangliang Yu Cc: Xi Wang , "James E.J. Bottomley" , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] [SCSI] mvsas: fix shift in mvs_94xx_free_reg_set() Date: Mon, 5 Nov 2012 14:53:02 -0500 Message-Id: <1352145183-29355-3-git-send-email-xi.wang@gmail.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1352145183-29355-1-git-send-email-xi.wang@gmail.com> References: <1352145183-29355-1-git-send-email-xi.wang@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1190 Lines: 37 Invoking bit(n) with n >= 64 is undefined behavior, since bit(n) does a 64-bit shift. This patch adds a check on the shifting amount. Signed-off-by: Xi Wang --- drivers/scsi/mvsas/mv_94xx.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/mvsas/mv_94xx.c b/drivers/scsi/mvsas/mv_94xx.c index 7e423e5..e1f35d4 100644 --- a/drivers/scsi/mvsas/mv_94xx.c +++ b/drivers/scsi/mvsas/mv_94xx.c @@ -715,11 +715,13 @@ static void mvs_94xx_free_reg_set(struct mvs_info *mvi, u8 *tfs) if (*tfs == MVS_ID_NOT_MAPPED) return; - mvi->sata_reg_set &= ~bit(reg_set); - if (reg_set < 32) + if (reg_set < 32) { + mvi->sata_reg_set &= ~bit(reg_set); w_reg_set_enable(reg_set, (u32)mvi->sata_reg_set); - else + } else if (reg_set < 64) { + mvi->sata_reg_set &= ~bit(reg_set); w_reg_set_enable(reg_set, (u32)(mvi->sata_reg_set >> 32)); + } *tfs = MVS_ID_NOT_MAPPED; -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/