From: Martin K. Petersen Date: Mon, 29 Apr 2013 16:13:01 +0000 (-0400) Subject: [SCSI] 3w-xxxx: Create sense buffer for unsupported commands X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=28ce280fe46f0ba90c7df26d9fa5ba21a2e8a6bc;p=deliverable%2Flinux.git [SCSI] 3w-xxxx: Create sense buffer for unsupported commands Make the driver return appropriate sense data when an unsupported operation is queued. This will cause the SCSI layer to stop issuing the offending command. Reported-by: Florian Westphal Signed-off-by: Martin K. Petersen Acked-by: Adam Radford Signed-off-by: James Bottomley --- diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 56662ae03dea..b9276d10b25c 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c @@ -216,6 +216,7 @@ #include #include #include +#include #include "3w-xxxx.h" /* Globals */ @@ -2009,7 +2010,8 @@ static int tw_scsi_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_c printk(KERN_NOTICE "3w-xxxx: scsi%d: Unknown scsi opcode: 0x%x\n", tw_dev->host->host_no, *command); tw_dev->state[request_id] = TW_S_COMPLETED; tw_state_request_finish(tw_dev, request_id); - SCpnt->result = (DID_BAD_TARGET << 16); + SCpnt->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; + scsi_build_sense_buffer(1, SCpnt->sense_buffer, ILLEGAL_REQUEST, 0x20, 0); done(SCpnt); retval = 0; }