scsi: csiostor: Don't enable IRQs too early
[ Upstream commit d6c9b31ac3064fbedf8961f120a4c117daa59932 ] These are called with IRQs disabled from csio_mgmt_tmo_handler() so we can't call spin_unlock_irq() or it will enable IRQs prematurely. Fixes: a3667aaed569 ("[SCSI] csiostor: Chelsio FCoE offload driver") Link: https://lore.kernel.org/r/20191019085913.GA14245@mwanda Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
781f73d867
commit
b0183bc00d
@ -301,6 +301,7 @@ csio_ln_fdmi_rhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)
|
||||
struct fc_fdmi_port_name *port_name;
|
||||
uint8_t buf[64];
|
||||
uint8_t *fc4_type;
|
||||
unsigned long flags;
|
||||
|
||||
if (fdmi_req->wr_status != FW_SUCCESS) {
|
||||
csio_ln_dbg(ln, "WR error:%x in processing fdmi rhba cmd\n",
|
||||
@ -377,13 +378,13 @@ csio_ln_fdmi_rhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)
|
||||
len = (uint32_t)(pld - (uint8_t *)cmd);
|
||||
|
||||
/* Submit FDMI RPA request */
|
||||
spin_lock_irq(&hw->lock);
|
||||
spin_lock_irqsave(&hw->lock, flags);
|
||||
if (csio_ln_mgmt_submit_req(fdmi_req, csio_ln_fdmi_done,
|
||||
FCOE_CT, &fdmi_req->dma_buf, len)) {
|
||||
CSIO_INC_STATS(ln, n_fdmi_err);
|
||||
csio_ln_dbg(ln, "Failed to issue fdmi rpa req\n");
|
||||
}
|
||||
spin_unlock_irq(&hw->lock);
|
||||
spin_unlock_irqrestore(&hw->lock, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -404,6 +405,7 @@ csio_ln_fdmi_dprt_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)
|
||||
struct fc_fdmi_rpl *reg_pl;
|
||||
struct fs_fdmi_attrs *attrib_blk;
|
||||
uint8_t buf[64];
|
||||
unsigned long flags;
|
||||
|
||||
if (fdmi_req->wr_status != FW_SUCCESS) {
|
||||
csio_ln_dbg(ln, "WR error:%x in processing fdmi dprt cmd\n",
|
||||
@ -483,13 +485,13 @@ csio_ln_fdmi_dprt_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)
|
||||
attrib_blk->numattrs = htonl(numattrs);
|
||||
|
||||
/* Submit FDMI RHBA request */
|
||||
spin_lock_irq(&hw->lock);
|
||||
spin_lock_irqsave(&hw->lock, flags);
|
||||
if (csio_ln_mgmt_submit_req(fdmi_req, csio_ln_fdmi_rhba_cbfn,
|
||||
FCOE_CT, &fdmi_req->dma_buf, len)) {
|
||||
CSIO_INC_STATS(ln, n_fdmi_err);
|
||||
csio_ln_dbg(ln, "Failed to issue fdmi rhba req\n");
|
||||
}
|
||||
spin_unlock_irq(&hw->lock);
|
||||
spin_unlock_irqrestore(&hw->lock, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -504,6 +506,7 @@ csio_ln_fdmi_dhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)
|
||||
void *cmd;
|
||||
struct fc_fdmi_port_name *port_name;
|
||||
uint32_t len;
|
||||
unsigned long flags;
|
||||
|
||||
if (fdmi_req->wr_status != FW_SUCCESS) {
|
||||
csio_ln_dbg(ln, "WR error:%x in processing fdmi dhba cmd\n",
|
||||
@ -534,13 +537,13 @@ csio_ln_fdmi_dhba_cbfn(struct csio_hw *hw, struct csio_ioreq *fdmi_req)
|
||||
len += sizeof(*port_name);
|
||||
|
||||
/* Submit FDMI request */
|
||||
spin_lock_irq(&hw->lock);
|
||||
spin_lock_irqsave(&hw->lock, flags);
|
||||
if (csio_ln_mgmt_submit_req(fdmi_req, csio_ln_fdmi_dprt_cbfn,
|
||||
FCOE_CT, &fdmi_req->dma_buf, len)) {
|
||||
CSIO_INC_STATS(ln, n_fdmi_err);
|
||||
csio_ln_dbg(ln, "Failed to issue fdmi dprt req\n");
|
||||
}
|
||||
spin_unlock_irq(&hw->lock);
|
||||
spin_unlock_irqrestore(&hw->lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user