* [bug report] scsi: lpfc: NVME Initiator: Base modifications
@ 2017-02-27 15:55 Dan Carpenter
2017-03-04 17:48 ` James Smart
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2017-02-27 15:55 UTC (permalink / raw)
To: jsmart2021; +Cc: linux-scsi
Hello James Smart,
The patch 895427bd012c: "scsi: lpfc: NVME Initiator: Base
modifications" from Feb 12, 2017, leads to the following static
checker warning:
[ Heck... I just decided to report all the static checker warnings for
this file. - dan ]
drivers/scsi/lpfc/lpfc_hbadisc.c:316 lpfc_dev_loss_tmo_handler()
warn: we tested 'vport->load_flag & 2' before and it was 'false'
248 /* Don't defer this if we are in the process of deleting the vport
249 * or unloading the driver. The unload will cleanup the node
250 * appropriately we just need to cleanup the ndlp rport info here.
251 */
252 if (vport->load_flag & FC_UNLOADING) {
253 if (ndlp->nlp_sid != NLP_NO_SID) {
254 /* flush the target */
255 lpfc_sli_abort_iocb(vport,
256 &phba->sli.sli3_ring[LPFC_FCP_RING],
257 ndlp->nlp_sid, 0, LPFC_CTX_TGT);
258 }
259 put_node = rdata->pnode != NULL;
260 rdata->pnode = NULL;
261 ndlp->rport = NULL;
262 if (put_node)
263 lpfc_nlp_put(ndlp);
264 put_device(&rport->dev);
265
266 return fcf_inuse;
267 }
[ snip ]
315
316 if (!(vport->load_flag & FC_UNLOADING) &&
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Delete this dead code.
317 !(ndlp->nlp_flag & NLP_DELAY_TMO) &&
318 !(ndlp->nlp_flag & NLP_NPR_2B_DISC) &&
319 (ndlp->nlp_state != NLP_STE_UNMAPPED_NODE) &&
320 (ndlp->nlp_state != NLP_STE_REG_LOGIN_ISSUE) && 2201 /* Check the FCF record against the connection list */
321 (ndlp->nlp_state != NLP_STE_PRLI_ISSUE))
322 lpfc_disc_state_machine(vport, ndlp, NULL, NLP_EVT_DEVICE_RM);
323
324 return fcf_inuse;
325 }
drivers/scsi/lpfc/lpfc_hbadisc.c:701 lpfc_work_done()
warn: test_bit() takes a bit number
698 if (pring->flag & LPFC_STOP_IOCB_EVENT) {
699 pring->flag |= LPFC_DEFERRED_RING_EVENT;
700 /* Set the lpfc data pending flag */
701 set_bit(LPFC_DATA_READY, &phba->data_flags);
^^^^^^^^^^^^^^^
Not harmful because 1 << 0 is still 1. But still wrong.
702 } else {
703 if (phba->link_state >= LPFC_LINK_UP) {
704 pring->flag &= ~LPFC_DEFERRED_RING_EVENT;
705 lpfc_sli_handle_slow_ring_event(phba, pring,
706 (status &
707 HA_RXMASK));
708 }
709 }
drivers/scsi/lpfc/lpfc_hbadisc.c:2206 lpfc_mbx_cmpl_fcf_scan_read_fcf_rec()
error: uninitialized symbol 'vlan_id'.
drivers/scsi/lpfc/lpfc_hbadisc.c:2582 lpfc_mbx_cmpl_fcf_rr_read_fcf_rec()
error: uninitialized symbol 'vlan_id'.
drivers/scsi/lpfc/lpfc_hbadisc.c:2683 lpfc_mbx_cmpl_read_fcf_rec() error:
uninitialized symbol 'vlan_id'.
2201 /* Check the FCF record against the connection list */
2202 rc = lpfc_match_fcf_conn_list(phba, new_fcf_record, &boot_flag,
2203 &addr_mode, &vlan_id);
2204
2205 /* Log the FCF record information if turned on */
2206 lpfc_sli4_log_fcf_record_info(phba, new_fcf_record, vlan_id,
^^^^^^^
Perhaps move this under the check for if (!rc) {?
2207 next_fcf_index);
2208
2209 /*
2210 * If the fcf record does not match with connect list entries
2211 * read the next entry; otherwise, this is an eligible FCF
2212 * record for roundrobin FCF failover.
2213 */
2214 if (!rc) {
^^^
drivers/scsi/lpfc/lpfc_hbadisc.c:4025 lpfc_register_remote_port()
error: we previously assumed 'rdata' could be null (see line 4023)
4018 rport = ndlp->rport;
4019 if (rport) {
4020 rdata = rport->dd_data;
4021 /* break the link before dropping the ref */
4022 ndlp->rport = NULL;
4023 if (rdata && rdata->pnode == ndlp)
^^^^^
Check.
4024 lpfc_nlp_put(ndlp);
4025 rdata->pnode = NULL;
^^^^^^^^^^^^
Unchecked.
4026 /* drop reference for earlier registeration */
4027 put_device(&rport->dev);
4028 }
drivers/scsi/lpfc/lpfc_hbadisc.c:4613 lpfc_sli4_dequeue_nport_iocbs()
error: double unlock 'irq:'
drivers/scsi/lpfc/lpfc_hbadisc.c
4597 static void
4598 lpfc_sli4_dequeue_nport_iocbs(struct lpfc_hba *phba,
4599 struct lpfc_nodelist *ndlp, struct list_head *dequeue_list)
4600 {
4601 struct lpfc_sli_ring *pring;
4602 struct lpfc_queue *qp = NULL;
4603
4604 spin_lock_irq(&phba->hbalock);
4605 list_for_each_entry(qp, &phba->sli4_hba.lpfc_wq_list, wq_list) {
4606 pring = qp->pring;
4607 if (!pring)
4608 continue;
4609 spin_lock_irq(&pring->ring_lock);
4610 __lpfc_dequeue_nport_iocbs(phba, ndlp, pring, dequeue_list);
4611 spin_unlock_irq(&pring->ring_lock);
spin_lock_irq() is not nestable. It should just be
spin_lock(&pring->ring_lock); and we leave the IRQs as-is (locked).
4612 }
4613 spin_unlock_irq(&phba->hbalock);
4614 }
regards,
dan carpenter
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [bug report] scsi: lpfc: NVME Initiator: Base modifications
2017-02-27 15:55 [bug report] scsi: lpfc: NVME Initiator: Base modifications Dan Carpenter
@ 2017-03-04 17:48 ` James Smart
0 siblings, 0 replies; 2+ messages in thread
From: James Smart @ 2017-03-04 17:48 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-scsi
On 2/27/2017 7:55 AM, Dan Carpenter wrote:
> Hello James Smart,
>
> The patch 895427bd012c: "scsi: lpfc: NVME Initiator: Base
> modifications" from Feb 12, 2017, leads to the following static
> checker warning:
>
>
Thanks. Issues addressed in the lpfc patch set just posted.
see http://marc.info/?l=linux-scsi&m=148864868015116&w=2
-- james
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-03-04 17:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-27 15:55 [bug report] scsi: lpfc: NVME Initiator: Base modifications Dan Carpenter
2017-03-04 17:48 ` James Smart
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.