Messages in this thread Patch in this message | | | From | Xi Wang <> | Subject | [PATCH 3/3] [SCSI] mvsas: fix shift in mv_ffc64() | Date | Mon, 5 Nov 2012 14:53:03 -0500 |
| |
Invoking ffz(x) with x = ~0 is undefined. This patch returns -1 for this case, and invokes __ffs64() instead.
Signed-off-by: Xi Wang <xi.wang@gmail.com> --- drivers/scsi/mvsas/mv_94xx.h | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/drivers/scsi/mvsas/mv_94xx.h b/drivers/scsi/mvsas/mv_94xx.h index 8f7eb4f..487aa6f 100644 --- a/drivers/scsi/mvsas/mv_94xx.h +++ b/drivers/scsi/mvsas/mv_94xx.h @@ -258,21 +258,11 @@ enum sas_sata_phy_regs { #define SPI_ADDR_VLD_94XX (1U << 1) #define SPI_CTRL_SpiStart_94XX (1U << 0) -#define mv_ffc(x) ffz(x) - static inline int mv_ffc64(u64 v) { - int i; - i = mv_ffc((u32)v); - if (i >= 0) - return i; - i = mv_ffc((u32)(v>>32)); - - if (i != 0) - return 32 + i; - - return -1; + u64 x = ~v; + return x ? __ffs64(x) : -1; } #define r_reg_set_enable(i) \ -- 1.7.10.4
| |