scsi: fdomain: use BSTAT_{MSG|CMD|IO} in fdomain_work()
authorSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Tue, 16 Jul 2019 20:40:47 +0000 (23:40 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 30 Jul 2019 16:17:28 +0000 (12:17 -0400)
Commit 1697c6a64c49 ("scsi: fdomain: Add register definitions") somehow
missed the masking of the 'status' variable with the SCSI phase mask in
fdomain_work(), leaving the magic number intact. Fix this issue; while at
it, change the order of BSTAT_{MSG|CMD|IO} bits in the MESSAGE IN
phase *case* (with no change in the generated object file).

Fixes: 1697c6a64c49 ("scsi: fdomain: Add register definitions")
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/fdomain.c

index fcf4cd5..772bdc9 100644 (file)
@@ -306,7 +306,7 @@ static void fdomain_work(struct work_struct *work)
        status = inb(fd->base + REG_BSTAT);
 
        if (status & BSTAT_REQ) {
-               switch (status & 0x0e) {
+               switch (status & (BSTAT_MSG | BSTAT_CMD | BSTAT_IO)) {
                case BSTAT_CMD: /* COMMAND OUT */
                        outb(cmd->cmnd[cmd->SCp.sent_command++],
                             fd->base + REG_SCSI_DATA);
@@ -331,7 +331,7 @@ static void fdomain_work(struct work_struct *work)
                case BSTAT_MSG | BSTAT_CMD:     /* MESSAGE OUT */
                        outb(MESSAGE_REJECT, fd->base + REG_SCSI_DATA);
                        break;
-               case BSTAT_MSG | BSTAT_IO | BSTAT_CMD:  /* MESSAGE IN */
+               case BSTAT_MSG | BSTAT_CMD | BSTAT_IO:  /* MESSAGE IN */
                        cmd->SCp.Message = inb(fd->base + REG_SCSI_DATA);
                        if (!cmd->SCp.Message)
                                ++done;