[SCSI] libfc: Correct use of ! and &
authorJulia Lawall <julia@diku.dk>
Wed, 4 Feb 2009 21:17:29 +0000 (22:17 +0100)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Thu, 12 Mar 2009 17:58:13 +0000 (12:58 -0500)
!ep->esb_stat is either 1 or 0, and the rightmost bit of ESB_ST_COMPLETE is
always 0, making the result of !ep->esb_stat & ESB_ST_COMPLETE always 0.
Thus parentheses around the argument to ! seem needed.

The semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@@ expression E; constant C; @@
(
  !E & !C
|
- !E & C
+ !(E & C)
)
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/libfc/fc_exch.c

index 505825b..8a0c5c2 100644 (file)
@@ -281,7 +281,7 @@ static void fc_exch_release(struct fc_exch *ep)
                        ep->destructor(&ep->seq, ep->arg);
                if (ep->lp->tt.exch_put)
                        ep->lp->tt.exch_put(ep->lp, mp, ep->xid);
-               WARN_ON(!ep->esb_stat & ESB_ST_COMPLETE);
+               WARN_ON(!(ep->esb_stat & ESB_ST_COMPLETE));
                mempool_free(ep, mp->ep_pool);
        }
 }