bnx2fc: fix test of "err_warn_bit_map"
Subsystems (3)
PATCH 1/1 bnx2fc: fix test of "err_warn_bit_map"
The bug in this code is "if (err_warn_bit_map & (u64) (1 << i)) {". The cast to u64 happens after we have already shift wrapped so it's too late. Presumably this means some warnings are ignored.
I also cleanup the other err_warn_bit_map check.
Signed-off-by Dan Carpenter <[email protected]>
---
Not tested.
drivers/scsi/bnx2fc/bnx2fc_hwi.c +2 -2
@@ -734,7 +734,7 @@ static void bnx2fc_process_unsol_compl(struct bnx2fc_rport *tgt, u16 wqe) ((u64 )err_entry->data.err_warn_bitmap_hi <<32 ) | (u64 )err_entry->data.err_warn_bitmap_lo;for (i =0 ; i <BNX2FC_NUM_ERR_BITS ; i++) { -if (err_warn_bit_map & (u64)((u64 )1 << i)) { +if (err_warn_bit_map &1ULL << i) { err_warn = i;break ; }
@@ -829,7 +829,7 @@ ret_err_rqe: ((u64 )err_entry->data.err_warn_bitmap_hi <<32 ) | (u64 )err_entry->data.err_warn_bitmap_lo;for (i =0 ; i <BNX2FC_NUM_ERR_BITS ; i++) { -if (err_warn_bit_map & (u64) (1 << i)) { +if (err_warn_bit_map &1ULL << i) { err_warn = i;break ; }