> On Oct 21, 2021, at 2:32 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote: > > From: Quinn Tran <qutran@xxxxxxxxxxx> > > This patch is per review comment by Hannes Reinecke from > previous submission to replace list_for_each_safe with > list_for_each_entry_safe. > > Reviewed-by: Hannes Reinecke <hare@xxxxxxx> > Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx> > Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx> > --- > drivers/scsi/qla2xxx/qla_edif.c | 39 ++++++++------------------------- > drivers/scsi/qla2xxx/qla_edif.h | 1 - > drivers/scsi/qla2xxx/qla_os.c | 8 +++---- > 3 files changed, 13 insertions(+), 35 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c > index b4eca966067a..ca3b947770b9 100644 > --- a/drivers/scsi/qla2xxx/qla_edif.c > +++ b/drivers/scsi/qla2xxx/qla_edif.c > @@ -1674,41 +1674,25 @@ static struct enode * > qla_enode_find(scsi_qla_host_t *vha, uint32_t ntype, uint32_t p1, uint32_t p2) > { > struct enode *node_rtn = NULL; > - struct enode *list_node = NULL; > + struct enode *list_node, *q; > unsigned long flags; > - struct list_head *pos, *q; > uint32_t sid; > - uint32_t rw_flag; > struct purexevent *purex; > > /* secure the list from moving under us */ > spin_lock_irqsave(&vha->pur_cinfo.pur_lock, flags); > > - list_for_each_safe(pos, q, &vha->pur_cinfo.head) { > - list_node = list_entry(pos, struct enode, list); > + list_for_each_entry_safe(list_node, q, &vha->pur_cinfo.head, list) { > > /* node type determines what p1 and p2 are */ > purex = &list_node->u.purexinfo; > sid = p1; > - rw_flag = p2; > > if (purex->pur_info.pur_sid.b24 == sid) { > - if (purex->pur_info.pur_pend == 1 && > - rw_flag == PUR_GET) { > - /* > - * if the receive is in progress > - * and its a read/get then can't > - * transfer yet > - */ > - ql_dbg(ql_dbg_edif, vha, 0x9106, > - "%s purex xfer in progress for sid=%x\n", > - __func__, sid); > - } else { > - /* found it and its complete */ > - node_rtn = list_node; > - list_del(pos); > - break; > - } > + /* found it and its complete */ > + node_rtn = list_node; > + list_del(&list_node->list); > + break; > } > } > > @@ -2419,7 +2403,6 @@ void qla24xx_auth_els(scsi_qla_host_t *vha, void **pkt, struct rsp_que **rsp) > > purex = &ptr->u.purexinfo; > purex->pur_info.pur_sid = a.did; > - purex->pur_info.pur_pend = 0; > purex->pur_info.pur_bytes_rcvd = totlen; > purex->pur_info.pur_rx_xchg_address = le32_to_cpu(p->rx_xchg_addr); > purex->pur_info.pur_nphdl = le16_to_cpu(p->nport_handle); > @@ -3171,18 +3154,14 @@ static uint16_t qla_edif_sadb_get_sa_index(fc_port_t *fcport, > /* release any sadb entries -- only done at teardown */ > void qla_edif_sadb_release(struct qla_hw_data *ha) > { > - struct list_head *pos; > - struct list_head *tmp; > - struct edif_sa_index_entry *entry; > + struct edif_sa_index_entry *entry, *tmp; > > - list_for_each_safe(pos, tmp, &ha->sadb_rx_index_list) { > - entry = list_entry(pos, struct edif_sa_index_entry, next); > + list_for_each_entry_safe(entry, tmp, &ha->sadb_rx_index_list, next) { > list_del(&entry->next); > kfree(entry); > } > > - list_for_each_safe(pos, tmp, &ha->sadb_tx_index_list) { > - entry = list_entry(pos, struct edif_sa_index_entry, next); > + list_for_each_entry_safe(entry, tmp, &ha->sadb_tx_index_list, next) { > list_del(&entry->next); > kfree(entry); > } > diff --git a/drivers/scsi/qla2xxx/qla_edif.h b/drivers/scsi/qla2xxx/qla_edif.h > index 9e8f28d0caa1..cd54c1dfe3cb 100644 > --- a/drivers/scsi/qla2xxx/qla_edif.h > +++ b/drivers/scsi/qla2xxx/qla_edif.h > @@ -102,7 +102,6 @@ struct dinfo { > }; > > struct pur_ninfo { > - unsigned int pur_pend:1; > port_id_t pur_sid; > port_id_t pur_did; > uint8_t vp_idx; > diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c > index 3fca6b8bb23f..df0e46ef3e96 100644 > --- a/drivers/scsi/qla2xxx/qla_os.c > +++ b/drivers/scsi/qla2xxx/qla_os.c > @@ -3885,13 +3885,13 @@ qla2x00_remove_one(struct pci_dev *pdev) > static inline void > qla24xx_free_purex_list(struct purex_list *list) > { > - struct list_head *item, *next; > + struct purex_item *item, *next; > ulong flags; > > spin_lock_irqsave(&list->lock, flags); > - list_for_each_safe(item, next, &list->head) { > - list_del(item); > - kfree(list_entry(item, struct purex_item, list)); > + list_for_each_entry_safe(item, next, &list->head, list) { > + list_del(&item->list); > + kfree(item); > } > spin_unlock_irqrestore(&list->lock, flags); > } > -- > 2.19.0.rc0 > Looks Good. Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx> -- Himanshu Madhani Oracle Linux Engineering