Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"Two small(ish) fixes, both in drivers"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: fnic: Finish scsi_cmnd before dropping the spinlock
scsi: mpt3sas: Page fault in reply q processing

Changed files
+9 -9
drivers
scsi
+6 -7
drivers/scsi/fnic/fnic_scsi.c
··· 986 986 CMD_SP(sc) = NULL; 987 987 CMD_FLAGS(sc) |= FNIC_IO_DONE; 988 988 989 - spin_unlock_irqrestore(io_lock, flags); 990 - 991 989 if (hdr_status != FCPIO_SUCCESS) { 992 990 atomic64_inc(&fnic_stats->io_stats.io_failures); 993 991 shost_printk(KERN_ERR, fnic->lport->host, "hdr status = %s\n", ··· 993 995 } 994 996 995 997 fnic_release_ioreq_buf(fnic, io_req, sc); 996 - 997 - mempool_free(io_req, fnic->io_req_pool); 998 998 999 999 cmd_trace = ((u64)hdr_status << 56) | 1000 1000 (u64)icmnd_cmpl->scsi_status << 48 | ··· 1016 1020 fnic->fcp_output_bytes += xfer_len; 1017 1021 } else 1018 1022 fnic->lport->host_stats.fcp_control_requests++; 1023 + 1024 + /* Call SCSI completion function to complete the IO */ 1025 + scsi_done(sc); 1026 + spin_unlock_irqrestore(io_lock, flags); 1027 + 1028 + mempool_free(io_req, fnic->io_req_pool); 1019 1029 1020 1030 atomic64_dec(&fnic_stats->io_stats.active_ios); 1021 1031 if (atomic64_read(&fnic->io_cmpl_skip)) ··· 1051 1049 if(io_duration_time > atomic64_read(&fnic_stats->io_stats.current_max_io_time)) 1052 1050 atomic64_set(&fnic_stats->io_stats.current_max_io_time, io_duration_time); 1053 1051 } 1054 - 1055 - /* Call SCSI completion function to complete the IO */ 1056 - scsi_done(sc); 1057 1052 } 1058 1053 1059 1054 /* fnic_fcpio_itmf_cmpl_handler
+3 -2
drivers/scsi/mpt3sas/mpt3sas_base.c
··· 2011 2011 enable_irq(reply_q->os_irq); 2012 2012 } 2013 2013 } 2014 + 2015 + if (poll) 2016 + _base_process_reply_queue(reply_q); 2014 2017 } 2015 - if (poll) 2016 - _base_process_reply_queue(reply_q); 2017 2018 } 2018 2019 2019 2020 /**