|
@@ -2116,18 +2116,21 @@ static inline void zfcp_fsf_trace_latency(struct zfcp_fsf_req *fsf_req)
|
|
|
|
|
|
static void zfcp_fsf_send_fcp_command_task_handler(struct zfcp_fsf_req *req)
|
|
|
{
|
|
|
- struct scsi_cmnd *scpnt = req->data;
|
|
|
+ struct scsi_cmnd *scpnt;
|
|
|
struct fcp_rsp_iu *fcp_rsp_iu = (struct fcp_rsp_iu *)
|
|
|
&(req->qtcb->bottom.io.fcp_rsp);
|
|
|
u32 sns_len;
|
|
|
char *fcp_rsp_info = (unsigned char *) &fcp_rsp_iu[1];
|
|
|
unsigned long flags;
|
|
|
|
|
|
- if (unlikely(!scpnt))
|
|
|
- return;
|
|
|
-
|
|
|
read_lock_irqsave(&req->adapter->abort_lock, flags);
|
|
|
|
|
|
+ scpnt = req->data;
|
|
|
+ if (unlikely(!scpnt)) {
|
|
|
+ read_unlock_irqrestore(&req->adapter->abort_lock, flags);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (unlikely(req->status & ZFCP_STATUS_FSFREQ_ABORTED)) {
|
|
|
set_host_byte(scpnt, DID_SOFT_ERROR);
|
|
|
set_driver_byte(scpnt, SUGGEST_RETRY);
|