From 7a1c0b79dbe3423214e70750a5ee38fb617168ab Mon Sep 17 00:00:00 2001 From: Sergei Shtylyov Date: Tue, 16 Jul 2019 23:40:47 +0300 Subject: [PATCH] scsi: fdomain: use BSTAT_{MSG|CMD|IO} in fdomain_work() 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 Signed-off-by: Martin K. Petersen --- drivers/scsi/fdomain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/fdomain.c b/drivers/scsi/fdomain.c index fcf4cd5ef1ac..772bdc93930a 100644 --- a/drivers/scsi/fdomain.c +++ b/drivers/scsi/fdomain.c @@ -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;