staging: rts5208: fix case of bitwise operator on zero in ms.c
authorJiayi Ye <yejiayily@gmail.com>
Mon, 20 Oct 2014 07:01:08 +0000 (15:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Oct 2014 06:10:49 +0000 (14:10 +0800)
If a variable has value 0, then there is no point in combining it with other things with |, as for any
 x, 0 | x is just x. The following semantic patch finds this problem.
    @@
    expression x,e,e1;
    statement S;
    @@

    if (x == 0) {
      <... when != x = e1
          when != while(...) S
          when != for(...;...;...) S
    (
    *  x |= e
    |
    *  x | e
    )
      ...>
    }

Signed-off-by: Jiayi Ye <yejiayily@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rts5208/ms.c

index 228e48339b9eed048a1827f0944a75984992e669..b4612fb615f68ba77c60ec6edddc7354a8d92ce2 100644 (file)
@@ -2599,9 +2599,9 @@ static int mspro_rw_multi_sector(struct scsi_cmnd *srb,
 
                        if (count > sector_cnt) {
                                if (mode_2k)
-                                       ms_card->seq_mode |= MODE_2K_SEQ;
+                                       ms_card->seq_mode = MODE_2K_SEQ;
                                else
-                                       ms_card->seq_mode |= MODE_512_SEQ;
+                                       ms_card->seq_mode = MODE_512_SEQ;
                        }
                } else {
                        count = sector_cnt;