Skip to content

Commit cecb354

Browse files
committed
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI fixes from James Bottomley: "Driver fixes and and one core patch. Nine of the driver patches are minor fixes and reworks to lpfc and the rest are trivial and minor fixes elsewhere" * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: scsi: pmcraid: Fix missing resource cleanup in error case scsi: ipr: Fix missing/incorrect resource cleanup in error case scsi: mpt3sas: Fix out-of-bounds compiler warning scsi: lpfc: Update lpfc version to 14.2.0.4 scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion scsi: lpfc: Add more logging of cmd and cqe information for aborted NVMe cmds scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology scsi: lpfc: Resolve NULL ptr dereference after an ELS LOGO is aborted scsi: lpfc: Address NULL pointer dereference after starget_to_rport() scsi: lpfc: Resolve some cleanup issues following SLI path refactoring scsi: lpfc: Resolve some cleanup issues following abort path refactoring scsi: lpfc: Correct BDE type for XMIT_SEQ64_WQE in lpfc_ct_reject_event() scsi: vmw_pvscsi: Expand vcpuHint to 16 bits scsi: sd: Fix interpretation of VPD B9h length
2 parents abe71eb + ec1e8ad commit cecb354

File tree

15 files changed

+94
-61
lines changed

15 files changed

+94
-61
lines changed

drivers/scsi/ipr.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9795,7 +9795,7 @@ static int ipr_alloc_mem(struct ipr_ioa_cfg *ioa_cfg)
97959795
GFP_KERNEL);
97969796

97979797
if (!ioa_cfg->hrrq[i].host_rrq) {
9798-
while (--i > 0)
9798+
while (--i >= 0)
97999799
dma_free_coherent(&pdev->dev,
98009800
sizeof(u32) * ioa_cfg->hrrq[i].size,
98019801
ioa_cfg->hrrq[i].host_rrq,
@@ -10068,7 +10068,7 @@ static int ipr_request_other_msi_irqs(struct ipr_ioa_cfg *ioa_cfg,
1006810068
ioa_cfg->vectors_info[i].desc,
1006910069
&ioa_cfg->hrrq[i]);
1007010070
if (rc) {
10071-
while (--i >= 0)
10071+
while (--i > 0)
1007210072
free_irq(pci_irq_vector(pdev, i),
1007310073
&ioa_cfg->hrrq[i]);
1007410074
return rc;

drivers/scsi/lpfc/lpfc_crtn.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,6 @@ int lpfc_sli_issue_iocb_wait(struct lpfc_hba *, uint32_t,
420420
uint32_t);
421421
void lpfc_sli_abort_fcp_cmpl(struct lpfc_hba *, struct lpfc_iocbq *,
422422
struct lpfc_iocbq *);
423-
void lpfc_sli4_abort_fcp_cmpl(struct lpfc_hba *h, struct lpfc_iocbq *i,
424-
struct lpfc_wcqe_complete *w);
425423

426424
void lpfc_sli_free_hbq(struct lpfc_hba *, struct hbq_dmabuf *);
427425

@@ -630,7 +628,7 @@ void lpfc_nvmet_invalidate_host(struct lpfc_hba *phba,
630628
struct lpfc_nodelist *ndlp);
631629
void lpfc_nvme_abort_fcreq_cmpl(struct lpfc_hba *phba,
632630
struct lpfc_iocbq *cmdiocb,
633-
struct lpfc_wcqe_complete *abts_cmpl);
631+
struct lpfc_iocbq *rspiocb);
634632
void lpfc_create_multixri_pools(struct lpfc_hba *phba);
635633
void lpfc_create_destroy_pools(struct lpfc_hba *phba);
636634
void lpfc_move_xri_pvt_to_pbl(struct lpfc_hba *phba, u32 hwqid);

drivers/scsi/lpfc/lpfc_ct.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ lpfc_ct_reject_event(struct lpfc_nodelist *ndlp,
197197
memset(bpl, 0, sizeof(struct ulp_bde64));
198198
bpl->addrHigh = le32_to_cpu(putPaddrHigh(mp->phys));
199199
bpl->addrLow = le32_to_cpu(putPaddrLow(mp->phys));
200-
bpl->tus.f.bdeFlags = BUFF_TYPE_BLP_64;
200+
bpl->tus.f.bdeFlags = BUFF_TYPE_BDE_64;
201201
bpl->tus.f.bdeSize = (LPFC_CT_PREAMBLE - 4);
202202
bpl->tus.w = le32_to_cpu(bpl->tus.w);
203203

drivers/scsi/lpfc/lpfc_els.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2998,10 +2998,7 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
29982998
ndlp->nlp_DID, ulp_status,
29992999
ulp_word4);
30003000

3001-
/* Call NLP_EVT_DEVICE_RM if link is down or LOGO is aborted */
30023001
if (lpfc_error_lost_link(ulp_status, ulp_word4)) {
3003-
lpfc_disc_state_machine(vport, ndlp, cmdiocb,
3004-
NLP_EVT_DEVICE_RM);
30053002
skip_recovery = 1;
30063003
goto out;
30073004
}
@@ -3021,18 +3018,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
30213018
spin_unlock_irq(&ndlp->lock);
30223019
lpfc_disc_state_machine(vport, ndlp, cmdiocb,
30233020
NLP_EVT_DEVICE_RM);
3024-
lpfc_els_free_iocb(phba, cmdiocb);
3025-
lpfc_nlp_put(ndlp);
3026-
3027-
/* Presume the node was released. */
3028-
return;
3021+
goto out_rsrc_free;
30293022
}
30303023

30313024
out:
3032-
/* Driver is done with the IO. */
3033-
lpfc_els_free_iocb(phba, cmdiocb);
3034-
lpfc_nlp_put(ndlp);
3035-
30363025
/* At this point, the LOGO processing is complete. NOTE: For a
30373026
* pt2pt topology, we are assuming the NPortID will only change
30383027
* on link up processing. For a LOGO / PLOGI initiated by the
@@ -3059,6 +3048,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
30593048
ndlp->nlp_DID, ulp_status,
30603049
ulp_word4, tmo,
30613050
vport->num_disc_nodes);
3051+
3052+
lpfc_els_free_iocb(phba, cmdiocb);
3053+
lpfc_nlp_put(ndlp);
3054+
30623055
lpfc_disc_start(vport);
30633056
return;
30643057
}
@@ -3075,6 +3068,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
30753068
lpfc_disc_state_machine(vport, ndlp, cmdiocb,
30763069
NLP_EVT_DEVICE_RM);
30773070
}
3071+
out_rsrc_free:
3072+
/* Driver is done with the I/O. */
3073+
lpfc_els_free_iocb(phba, cmdiocb);
3074+
lpfc_nlp_put(ndlp);
30783075
}
30793076

30803077
/**

drivers/scsi/lpfc/lpfc_hw4.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4487,6 +4487,9 @@ struct wqe_common {
44874487
#define wqe_sup_SHIFT 6
44884488
#define wqe_sup_MASK 0x00000001
44894489
#define wqe_sup_WORD word11
4490+
#define wqe_ffrq_SHIFT 6
4491+
#define wqe_ffrq_MASK 0x00000001
4492+
#define wqe_ffrq_WORD word11
44904493
#define wqe_wqec_SHIFT 7
44914494
#define wqe_wqec_MASK 0x00000001
44924495
#define wqe_wqec_WORD word11

drivers/scsi/lpfc/lpfc_init.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12188,7 +12188,7 @@ lpfc_sli_enable_msi(struct lpfc_hba *phba)
1218812188
rc = pci_enable_msi(phba->pcidev);
1218912189
if (!rc)
1219012190
lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
12191-
"0462 PCI enable MSI mode success.\n");
12191+
"0012 PCI enable MSI mode success.\n");
1219212192
else {
1219312193
lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
1219412194
"0471 PCI enable MSI mode failed (%d)\n", rc);

drivers/scsi/lpfc/lpfc_nportdisc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,8 @@ lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
834834
lpfc_nvmet_invalidate_host(phba, ndlp);
835835

836836
if (ndlp->nlp_DID == Fabric_DID) {
837-
if (vport->port_state <= LPFC_FDISC)
837+
if (vport->port_state <= LPFC_FDISC ||
838+
vport->fc_flag & FC_PT2PT)
838839
goto out;
839840
lpfc_linkdown_port(vport);
840841
spin_lock_irq(shost->host_lock);

drivers/scsi/lpfc/lpfc_nvme.c

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,25 +1065,37 @@ lpfc_nvme_io_cmd_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
10651065
nCmd->rcv_rsplen = wcqe->parameter;
10661066
nCmd->status = 0;
10671067

1068+
/* Get the NVME cmd details for this unique error. */
1069+
cp = (struct nvme_fc_cmd_iu *)nCmd->cmdaddr;
1070+
ep = (struct nvme_fc_ersp_iu *)nCmd->rspaddr;
1071+
10681072
/* Check if this is really an ERSP */
10691073
if (nCmd->rcv_rsplen == LPFC_NVME_ERSP_LEN) {
10701074
lpfc_ncmd->status = IOSTAT_SUCCESS;
10711075
lpfc_ncmd->result = 0;
10721076

10731077
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME,
1074-
"6084 NVME Completion ERSP: "
1075-
"xri %x placed x%x\n",
1076-
lpfc_ncmd->cur_iocbq.sli4_xritag,
1077-
wcqe->total_data_placed);
1078+
"6084 NVME FCP_ERR ERSP: "
1079+
"xri %x placed x%x opcode x%x cmd_id "
1080+
"x%x cqe_status x%x\n",
1081+
lpfc_ncmd->cur_iocbq.sli4_xritag,
1082+
wcqe->total_data_placed,
1083+
cp->sqe.common.opcode,
1084+
cp->sqe.common.command_id,
1085+
ep->cqe.status);
10781086
break;
10791087
}
10801088
lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
10811089
"6081 NVME Completion Protocol Error: "
10821090
"xri %x status x%x result x%x "
1083-
"placed x%x\n",
1091+
"placed x%x opcode x%x cmd_id x%x, "
1092+
"cqe_status x%x\n",
10841093
lpfc_ncmd->cur_iocbq.sli4_xritag,
10851094
lpfc_ncmd->status, lpfc_ncmd->result,
1086-
wcqe->total_data_placed);
1095+
wcqe->total_data_placed,
1096+
cp->sqe.common.opcode,
1097+
cp->sqe.common.command_id,
1098+
ep->cqe.status);
10871099
break;
10881100
case IOSTAT_LOCAL_REJECT:
10891101
/* Let fall through to set command final state. */
@@ -1195,7 +1207,8 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport,
11951207
{
11961208
struct lpfc_hba *phba = vport->phba;
11971209
struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvmeCmd;
1198-
struct lpfc_iocbq *pwqeq = &(lpfc_ncmd->cur_iocbq);
1210+
struct nvme_common_command *sqe;
1211+
struct lpfc_iocbq *pwqeq = &lpfc_ncmd->cur_iocbq;
11991212
union lpfc_wqe128 *wqe = &pwqeq->wqe;
12001213
uint32_t req_len;
12011214

@@ -1252,8 +1265,14 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport,
12521265
cstat->control_requests++;
12531266
}
12541267

1255-
if (pnode->nlp_nvme_info & NLP_NVME_NSLER)
1268+
if (pnode->nlp_nvme_info & NLP_NVME_NSLER) {
12561269
bf_set(wqe_erp, &wqe->generic.wqe_com, 1);
1270+
sqe = &((struct nvme_fc_cmd_iu *)
1271+
nCmd->cmdaddr)->sqe.common;
1272+
if (sqe->opcode == nvme_admin_async_event)
1273+
bf_set(wqe_ffrq, &wqe->generic.wqe_com, 1);
1274+
}
1275+
12571276
/*
12581277
* Finish initializing those WQE fields that are independent
12591278
* of the nvme_cmnd request_buffer
@@ -1787,7 +1806,7 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
17871806
* lpfc_nvme_abort_fcreq_cmpl - Complete an NVME FCP abort request.
17881807
* @phba: Pointer to HBA context object
17891808
* @cmdiocb: Pointer to command iocb object.
1790-
* @abts_cmpl: Pointer to wcqe complete object.
1809+
* @rspiocb: Pointer to response iocb object.
17911810
*
17921811
* This is the callback function for any NVME FCP IO that was aborted.
17931812
*
@@ -1796,8 +1815,10 @@ lpfc_nvme_fcp_io_submit(struct nvme_fc_local_port *pnvme_lport,
17961815
**/
17971816
void
17981817
lpfc_nvme_abort_fcreq_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
1799-
struct lpfc_wcqe_complete *abts_cmpl)
1818+
struct lpfc_iocbq *rspiocb)
18001819
{
1820+
struct lpfc_wcqe_complete *abts_cmpl = &rspiocb->wcqe_cmpl;
1821+
18011822
lpfc_printf_log(phba, KERN_INFO, LOG_NVME,
18021823
"6145 ABORT_XRI_CN completing on rpi x%x "
18031824
"original iotag x%x, abort cmd iotag x%x "
@@ -1840,6 +1861,7 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
18401861
struct lpfc_nvme_fcpreq_priv *freqpriv;
18411862
unsigned long flags;
18421863
int ret_val;
1864+
struct nvme_fc_cmd_iu *cp;
18431865

18441866
/* Validate pointers. LLDD fault handling with transport does
18451867
* have timing races.
@@ -1963,10 +1985,16 @@ lpfc_nvme_fcp_abort(struct nvme_fc_local_port *pnvme_lport,
19631985
return;
19641986
}
19651987

1988+
/*
1989+
* Get Command Id from cmd to plug into response. This
1990+
* code is not needed in the next NVME Transport drop.
1991+
*/
1992+
cp = (struct nvme_fc_cmd_iu *)lpfc_nbuf->nvmeCmd->cmdaddr;
19661993
lpfc_printf_vlog(vport, KERN_INFO, LOG_NVME_ABTS,
19671994
"6138 Transport Abort NVME Request Issued for "
1968-
"ox_id x%x\n",
1969-
nvmereq_wqe->sli4_xritag);
1995+
"ox_id x%x nvme opcode x%x nvme cmd_id x%x\n",
1996+
nvmereq_wqe->sli4_xritag, cp->sqe.common.opcode,
1997+
cp->sqe.common.command_id);
19701998
return;
19711999

19722000
out_unlock:

drivers/scsi/lpfc/lpfc_scsi.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6062,6 +6062,9 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd)
60626062
int status;
60636063
u32 logit = LOG_FCP;
60646064

6065+
if (!rport)
6066+
return FAILED;
6067+
60656068
rdata = rport->dd_data;
60666069
if (!rdata || !rdata->pnode) {
60676070
lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
@@ -6140,6 +6143,9 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)
61406143
unsigned long flags;
61416144
DECLARE_WAIT_QUEUE_HEAD_ONSTACK(waitq);
61426145

6146+
if (!rport)
6147+
return FAILED;
6148+
61436149
rdata = rport->dd_data;
61446150
if (!rdata || !rdata->pnode) {
61456151
lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,

drivers/scsi/lpfc/lpfc_sli.c

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1930,7 +1930,7 @@ lpfc_issue_cmf_sync_wqe(struct lpfc_hba *phba, u32 ms, u64 total)
19301930
sync_buf = __lpfc_sli_get_iocbq(phba);
19311931
if (!sync_buf) {
19321932
lpfc_printf_log(phba, KERN_ERR, LOG_CGN_MGMT,
1933-
"6213 No available WQEs for CMF_SYNC_WQE\n");
1933+
"6244 No available WQEs for CMF_SYNC_WQE\n");
19341934
ret_val = ENOMEM;
19351935
goto out_unlock;
19361936
}
@@ -3805,7 +3805,7 @@ lpfc_sli_process_sol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
38053805
set_job_ulpword4(cmdiocbp,
38063806
IOERR_ABORT_REQUESTED);
38073807
/*
3808-
* For SLI4, irsiocb contains
3808+
* For SLI4, irspiocb contains
38093809
* NO_XRI in sli_xritag, it
38103810
* shall not affect releasing
38113811
* sgl (xri) process.
@@ -3823,7 +3823,7 @@ lpfc_sli_process_sol_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
38233823
}
38243824
}
38253825
}
3826-
(cmdiocbp->cmd_cmpl) (phba, cmdiocbp, saveq);
3826+
cmdiocbp->cmd_cmpl(phba, cmdiocbp, saveq);
38273827
} else
38283828
lpfc_sli_release_iocbq(phba, cmdiocbp);
38293829
} else {
@@ -4063,8 +4063,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba *phba,
40634063
cmdiocbq->cmd_flag &= ~LPFC_DRIVER_ABORTED;
40644064
if (cmdiocbq->cmd_cmpl) {
40654065
spin_unlock_irqrestore(&phba->hbalock, iflag);
4066-
(cmdiocbq->cmd_cmpl)(phba, cmdiocbq,
4067-
&rspiocbq);
4066+
cmdiocbq->cmd_cmpl(phba, cmdiocbq, &rspiocbq);
40684067
spin_lock_irqsave(&phba->hbalock, iflag);
40694068
}
40704069
break;
@@ -10288,7 +10287,7 @@ __lpfc_sli_issue_iocb_s3(struct lpfc_hba *phba, uint32_t ring_number,
1028810287
* @flag: Flag indicating if this command can be put into txq.
1028910288
*
1029010289
* __lpfc_sli_issue_fcp_io_s3 is wrapper function to invoke lockless func to
10291-
* send an iocb command to an HBA with SLI-4 interface spec.
10290+
* send an iocb command to an HBA with SLI-3 interface spec.
1029210291
*
1029310292
* This function takes the hbalock before invoking the lockless version.
1029410293
* The function will return success after it successfully submit the wqe to
@@ -12740,7 +12739,7 @@ lpfc_sli_wake_iocb_wait(struct lpfc_hba *phba,
1274012739
cmdiocbq->cmd_cmpl = cmdiocbq->wait_cmd_cmpl;
1274112740
cmdiocbq->wait_cmd_cmpl = NULL;
1274212741
if (cmdiocbq->cmd_cmpl)
12743-
(cmdiocbq->cmd_cmpl)(phba, cmdiocbq, NULL);
12742+
cmdiocbq->cmd_cmpl(phba, cmdiocbq, NULL);
1274412743
else
1274512744
lpfc_sli_release_iocbq(phba, cmdiocbq);
1274612745
return;
@@ -12754,9 +12753,9 @@ lpfc_sli_wake_iocb_wait(struct lpfc_hba *phba,
1275412753

1275512754
/* Set the exchange busy flag for task management commands */
1275612755
if ((cmdiocbq->cmd_flag & LPFC_IO_FCP) &&
12757-
!(cmdiocbq->cmd_flag & LPFC_IO_LIBDFC)) {
12756+
!(cmdiocbq->cmd_flag & LPFC_IO_LIBDFC)) {
1275812757
lpfc_cmd = container_of(cmdiocbq, struct lpfc_io_buf,
12759-
cur_iocbq);
12758+
cur_iocbq);
1276012759
if (rspiocbq && (rspiocbq->cmd_flag & LPFC_EXCHANGE_BUSY))
1276112760
lpfc_cmd->flags |= LPFC_SBUF_XBUSY;
1276212761
else
@@ -13896,7 +13895,7 @@ void lpfc_sli4_els_xri_abort_event_proc(struct lpfc_hba *phba)
1389613895
* @irspiocbq: Pointer to work-queue completion queue entry.
1389713896
*
1389813897
* This routine handles an ELS work-queue completion event and construct
13899-
* a pseudo response ELS IODBQ from the SLI4 ELS WCQE for the common
13898+
* a pseudo response ELS IOCBQ from the SLI4 ELS WCQE for the common
1390013899
* discovery engine to handle.
1390113900
*
1390213901
* Return: Pointer to the receive IOCBQ, NULL otherwise.
@@ -13940,7 +13939,7 @@ lpfc_sli4_els_preprocess_rspiocbq(struct lpfc_hba *phba,
1394013939

1394113940
if (bf_get(lpfc_wcqe_c_xb, wcqe)) {
1394213941
spin_lock_irqsave(&phba->hbalock, iflags);
13943-
cmdiocbq->cmd_flag |= LPFC_EXCHANGE_BUSY;
13942+
irspiocbq->cmd_flag |= LPFC_EXCHANGE_BUSY;
1394413943
spin_unlock_irqrestore(&phba->hbalock, iflags);
1394513944
}
1394613945

@@ -14799,7 +14798,7 @@ lpfc_sli4_fp_handle_fcp_wcqe(struct lpfc_hba *phba, struct lpfc_queue *cq,
1479914798
/* Pass the cmd_iocb and the wcqe to the upper layer */
1480014799
memcpy(&cmdiocbq->wcqe_cmpl, wcqe,
1480114800
sizeof(struct lpfc_wcqe_complete));
14802-
(cmdiocbq->cmd_cmpl)(phba, cmdiocbq, cmdiocbq);
14801+
cmdiocbq->cmd_cmpl(phba, cmdiocbq, cmdiocbq);
1480314802
} else {
1480414803
lpfc_printf_log(phba, KERN_WARNING, LOG_SLI,
1480514804
"0375 FCP cmdiocb not callback function "
@@ -18956,7 +18955,7 @@ lpfc_sli4_send_seq_to_ulp(struct lpfc_vport *vport,
1895618955

1895718956
/* Free iocb created in lpfc_prep_seq */
1895818957
list_for_each_entry_safe(curr_iocb, next_iocb,
18959-
&iocbq->list, list) {
18958+
&iocbq->list, list) {
1896018959
list_del_init(&curr_iocb->list);
1896118960
lpfc_sli_release_iocbq(phba, curr_iocb);
1896218961
}

0 commit comments

Comments
 (0)