The driver has a limit of eight LUs because of the byte-sized bitfield
that is used for busy flags. Reject commands with LUN > 7.

Signed-off-by: Finn Thain <fth...@telegraphics.com.au>

---
 drivers/scsi/NCR5380.c |    6 ++++++
 drivers/scsi/NCR5380.h |    2 ++
 2 files changed, 8 insertions(+)

Index: linux/drivers/scsi/NCR5380.c
===================================================================
--- linux.orig/drivers/scsi/NCR5380.c   2016-03-14 15:26:45.000000000 +1100
+++ linux/drivers/scsi/NCR5380.c        2016-03-14 15:26:48.000000000 +1100
@@ -661,6 +661,12 @@ static int NCR5380_queue_command(struct
        }
 #endif /* (NDEBUG & NDEBUG_NO_WRITE) */
 
+       if (cmd->device->lun > MAX_LUN) {
+               cmd->result = DID_NO_CONNECT << 16;
+               cmd->scsi_done(cmd);
+               return 0;
+       }
+
        cmd->result = 0;
 
        if (!NCR5380_acquire_dma_irq(instance))
Index: linux/drivers/scsi/NCR5380.h
===================================================================
--- linux.orig/drivers/scsi/NCR5380.h   2016-03-14 15:26:45.000000000 +1100
+++ linux/drivers/scsi/NCR5380.h        2016-03-14 15:26:48.000000000 +1100
@@ -244,6 +244,8 @@ struct NCR5380_hostdata {
 
 #ifdef __KERNEL__
 
+#define MAX_LUN        7
+
 struct NCR5380_cmd {
        struct list_head list;
 };


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to