Hi Quinn, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on scsi/for-next] [also build test WARNING on next-20171220] [cannot apply to v4.15-rc4] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Himanshu-Madhani/qla2xxx-Driver-update/20171221-085840 base: https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) vim +4828 drivers/scsi/qla2xxx/qla_os.c 4743 4744 static 4745 void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e) 4746 { 4747 unsigned long flags; 4748 fc_port_t *fcport = NULL, *tfcp; 4749 struct qlt_plogi_ack_t *pla = 4750 (struct qlt_plogi_ack_t *)e->u.new_sess.pla; 4751 uint8_t free_fcport = 0; 4752 4753 ql_dbg(ql_dbg_disc, vha, 0xffff, 4754 "%s %d %8phC enter\n", 4755 __func__, __LINE__, e->u.new_sess.port_name); 4756 4757 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); 4758 fcport = qla2x00_find_fcport_by_wwpn(vha, e->u.new_sess.port_name, 1); 4759 if (fcport) { 4760 fcport->d_id = e->u.new_sess.id; 4761 if (pla) { 4762 fcport->fw_login_state = DSC_LS_PLOGI_PEND; 4763 memcpy(fcport->node_name, 4764 pla->iocb.u.isp24.u.plogi.node_name, 4765 WWN_SIZE); 4766 qlt_plogi_ack_link(vha, pla, fcport, QLT_PLOGI_LINK_SAME_WWN); 4767 /* we took an extra ref_count to prevent PLOGI ACK when 4768 * fcport/sess has not been created. 4769 */ 4770 pla->ref_count--; 4771 } 4772 } else { 4773 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); 4774 fcport = qla2x00_alloc_fcport(vha, GFP_KERNEL); 4775 if (fcport) { 4776 fcport->d_id = e->u.new_sess.id; 4777 fcport->scan_state = QLA_FCPORT_FOUND; 4778 fcport->flags |= FCF_FABRIC_DEVICE; 4779 fcport->fw_login_state = DSC_LS_PLOGI_PEND; 4780 4781 memcpy(fcport->port_name, e->u.new_sess.port_name, 4782 WWN_SIZE); 4783 } else { 4784 ql_dbg(ql_dbg_disc, vha, 0xffff, 4785 "%s %8phC mem alloc fail.\n", 4786 __func__, e->u.new_sess.port_name); 4787 4788 if (pla) 4789 kmem_cache_free(qla_tgt_plogi_cachep, pla); 4790 return; 4791 } 4792 4793 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); 4794 /* search again to make sure one else got ahead */ 4795 tfcp = qla2x00_find_fcport_by_wwpn(vha, 4796 e->u.new_sess.port_name, 1); 4797 if (tfcp) { 4798 /* should rarily happen */ 4799 ql_dbg(ql_dbg_disc, vha, 0xffff, 4800 "%s %8phC found existing fcport b4 add. DS %d LS %d\n", 4801 __func__, tfcp->port_name, tfcp->disc_state, 4802 tfcp->fw_login_state); 4803 4804 free_fcport = 1; 4805 } else { 4806 list_add_tail(&fcport->list, &vha->vp_fcports); 4807 4808 } 4809 if (pla) { 4810 qlt_plogi_ack_link(vha, pla, fcport, 4811 QLT_PLOGI_LINK_SAME_WWN); 4812 pla->ref_count--; 4813 } 4814 } 4815 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); 4816 4817 if (fcport) { 4818 if (N2N_TOPO(vha->hw)) 4819 fcport->flags &= ~FCF_FABRIC_DEVICE; 4820 4821 if (pla) { 4822 if (pla->iocb.u.isp24.status_subcode == ELS_PRLI) { 4823 u16 wd3_lo; 4824 4825 fcport->fw_login_state = DSC_LS_PRLI_PEND; 4826 fcport->local = 0; 4827 fcport->loop_id = > 4828 le16_to_cpu( 4829 pla->iocb.u.isp24.nport_handle); 4830 fcport->fw_login_state = DSC_LS_PRLI_PEND; 4831 wd3_lo = 4832 le16_to_cpu( 4833 pla->iocb.u.isp24.u.prli.wd3_lo); 4834 4835 if (wd3_lo & BIT_7) 4836 fcport->conf_compl_supported = 1; 4837 4838 if ((wd3_lo & BIT_4) == 0) 4839 fcport->port_type = FCT_INITIATOR; 4840 else 4841 fcport->port_type = FCT_TARGET; 4842 } 4843 qlt_plogi_ack_unref(vha, pla); 4844 } else { 4845 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); 4846 tfcp = qla2x00_find_fcport_by_nportid(vha, 4847 &e->u.new_sess.id, 1); 4848 if (tfcp && (tfcp != fcport)) { 4849 /* 4850 * We have a conflict fcport with same NportID. 4851 */ 4852 ql_dbg(ql_dbg_disc, vha, 0xffff, 4853 "%s %8phC found conflict b4 add. DS %d LS %d\n", 4854 __func__, tfcp->port_name, tfcp->disc_state, 4855 tfcp->fw_login_state); 4856 4857 switch (tfcp->disc_state) { 4858 case DSC_DELETED: 4859 break; 4860 case DSC_DELETE_PEND: 4861 fcport->login_pause = 1; 4862 tfcp->conflict = fcport; 4863 break; 4864 default: 4865 fcport->login_pause = 1; 4866 tfcp->conflict = fcport; 4867 qlt_schedule_sess_for_deletion_lock 4868 (tfcp); 4869 break; 4870 } 4871 } 4872 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); 4873 qla24xx_async_gnl(vha, fcport); 4874 } 4875 } 4876 4877 if (free_fcport) { 4878 qla2x00_free_fcport(fcport); 4879 if (pla) 4880 kmem_cache_free(qla_tgt_plogi_cachep, pla); 4881 } 4882 } 4883 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation