Hello James Smart,

The patch 5e9d9b827698: "[SCSI] lpfc 8.2.7 : Rework the worker
thread" from Jun 14, 2008, leads to the following static checker
warning:

        drivers/scsi/lpfc/lpfc_sli.c:9365 lpfc_sli_host_down()
        warn: test_bit() takes a bit number

drivers/scsi/lpfc/lpfc_sli.c
  9357          spin_lock_irqsave(&phba->hbalock, flags);
  9358          for (i = 0; i < psli->num_rings; i++) {
  9359                  pring = &psli->ring[i];
  9360                  prev_pring_flag = pring->flag;
  9361                  /* Only slow rings */
  9362                  if (pring->ringno == LPFC_ELS_RING) {
  9363                          pring->flag |= LPFC_DEFERRED_RING_EVENT;
  9364                          /* Set the lpfc data pending flag */
  9365                          set_bit(LPFC_DATA_READY, &phba->data_flags);

LPFC_DATA_READY is defined as:

#define LPFC_DATA_READY         (1<<0)

The intention seems to be that we use BIT(0) but because set_bit() has
a shift built in it is using BIT(1).  In other words:

Good:   set_bit(0, &phba->data_flags);
 Bad:   set_bit(BIT(0), &phba->data_flags);

This seems to be used consistently so I think it's fine, but static
checkers will complain.  I think this is the only ->data_flag that we
use so it doesn't matter (I haven't looked very hard at this code).

  9366                  }
  9367                  /*
  9368                   * Error everything on the txq since these iocbs have 
not been
  9369                   * given to the FW yet.
  9370                   */

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to