Hi Daniel, kernel test robot noticed the following build warnings: https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Daniel-Wagner/nvme-fc-Do-not-wait-in-vain-when-unloading-module/20230620-213849 base: linus/master patch link: https://lore.kernel.org/r/20230620133711.22840-5-dwagner%40suse.de patch subject: [PATCH v2 4/5] nvme-fc: Make initial connect attempt synchronous config: openrisc-randconfig-m041-20230622 (https://download.01.org/0day-ci/archive/20230624/202306240125.U2jdrjAY-lkp@xxxxxxxxx/config) compiler: or1k-linux-gcc (GCC) 12.3.0 reproduce: (https://download.01.org/0day-ci/archive/20230624/202306240125.U2jdrjAY-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202306240125.U2jdrjAY-lkp@xxxxxxxxx/ smatch warnings: drivers/nvme/host/fc.c:3590 nvme_fc_init_ctrl() warn: passing zero to 'ERR_PTR' vim +/ERR_PTR +3590 drivers/nvme/host/fc.c 61bff8ef008845 James Smart 2017-04-23 3533 ret = nvme_init_ctrl(&ctrl->ctrl, dev, &nvme_fc_ctrl_ops, 0); 61bff8ef008845 James Smart 2017-04-23 3534 if (ret) 98e3528012cd57 Ross Lagerwall 2023-01-20 3535 goto out_free_queues; e399441de9115c James Smart 2016-12-02 3536 61bff8ef008845 James Smart 2017-04-23 3537 /* at this point, teardown path changes to ref counting on nvme ctrl */ e399441de9115c James Smart 2016-12-02 3538 98e3528012cd57 Ross Lagerwall 2023-01-20 3539 ret = nvme_alloc_admin_tag_set(&ctrl->ctrl, &ctrl->admin_tag_set, 98e3528012cd57 Ross Lagerwall 2023-01-20 3540 &nvme_fc_admin_mq_ops, 98e3528012cd57 Ross Lagerwall 2023-01-20 3541 struct_size((struct nvme_fcp_op_w_sgl *)NULL, priv, 98e3528012cd57 Ross Lagerwall 2023-01-20 3542 ctrl->lport->ops->fcprqst_priv_sz)); 98e3528012cd57 Ross Lagerwall 2023-01-20 3543 if (ret) 98e3528012cd57 Ross Lagerwall 2023-01-20 3544 goto fail_ctrl; 98e3528012cd57 Ross Lagerwall 2023-01-20 3545 e399441de9115c James Smart 2016-12-02 3546 spin_lock_irqsave(&rport->lock, flags); e399441de9115c James Smart 2016-12-02 3547 list_add_tail(&ctrl->ctrl_list, &rport->ctrl_list); e399441de9115c James Smart 2016-12-02 3548 spin_unlock_irqrestore(&rport->lock, flags); e399441de9115c James Smart 2016-12-02 3549 ac881fd1288ca6 Daniel Wagner 2023-06-20 3550 if (!nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING)) { 4c984154efa131 James Smart 2018-06-13 3551 dev_err(ctrl->ctrl.device, 4c984154efa131 James Smart 2018-06-13 3552 "NVME-FC{%d}: failed to init ctrl state\n", ctrl->cnum); 4c984154efa131 James Smart 2018-06-13 3553 goto fail_ctrl; No error code on this path. Originally it didn't matter because it was hardcoded to return ERR_PTR(-EIO); 17c4dc6eb7e1b2 James Smart 2017-10-09 3554 } 17c4dc6eb7e1b2 James Smart 2017-10-09 3555 ac881fd1288ca6 Daniel Wagner 2023-06-20 3556 ret = nvme_fc_create_association(ctrl); ac881fd1288ca6 Daniel Wagner 2023-06-20 3557 if (ret) 4c984154efa131 James Smart 2018-06-13 3558 goto fail_ctrl; 4c984154efa131 James Smart 2018-06-13 3559 4c984154efa131 James Smart 2018-06-13 3560 dev_info(ctrl->ctrl.device, 4c984154efa131 James Smart 2018-06-13 3561 "NVME-FC{%d}: new ctrl: NQN \"%s\"\n", e5ea42faa773c6 Hannes Reinecke 2021-09-22 3562 ctrl->cnum, nvmf_ctrl_subsysnqn(&ctrl->ctrl)); 4c984154efa131 James Smart 2018-06-13 3563 4c984154efa131 James Smart 2018-06-13 3564 return &ctrl->ctrl; 4c984154efa131 James Smart 2018-06-13 3565 4c984154efa131 James Smart 2018-06-13 3566 fail_ctrl: 19fce0470f0503 James Smart 2020-12-01 3567 cancel_work_sync(&ctrl->ioerr_work); cf25809bec2c7d James Smart 2018-03-13 3568 cancel_work_sync(&ctrl->ctrl.reset_work); cf25809bec2c7d James Smart 2018-03-13 3569 cancel_delayed_work_sync(&ctrl->connect_work); cf25809bec2c7d James Smart 2018-03-13 3570 de41447aac034c Ewan D. Milne 2017-04-24 3571 ctrl->ctrl.opts = NULL; 17c4dc6eb7e1b2 James Smart 2017-10-09 3572 61bff8ef008845 James Smart 2017-04-23 3573 /* initiate nvme ctrl ref counting teardown */ e399441de9115c James Smart 2016-12-02 3574 nvme_uninit_ctrl(&ctrl->ctrl); 61bff8ef008845 James Smart 2017-04-23 3575 0b5a7669a457dd James Smart 2017-06-15 3576 /* Remove core ctrl ref. */ 0b5a7669a457dd James Smart 2017-06-15 3577 nvme_put_ctrl(&ctrl->ctrl); 0b5a7669a457dd James Smart 2017-06-15 3578 61bff8ef008845 James Smart 2017-04-23 3579 /* as we're past the point where we transition to the ref 61bff8ef008845 James Smart 2017-04-23 3580 * counting teardown path, if we return a bad pointer here, 61bff8ef008845 James Smart 2017-04-23 3581 * the calling routine, thinking it's prior to the 61bff8ef008845 James Smart 2017-04-23 3582 * transition, will do an rport put. Since the teardown 61bff8ef008845 James Smart 2017-04-23 3583 * path also does a rport put, we do an extra get here to 61bff8ef008845 James Smart 2017-04-23 3584 * so proper order/teardown happens. 61bff8ef008845 James Smart 2017-04-23 3585 */ 61bff8ef008845 James Smart 2017-04-23 3586 nvme_fc_rport_get(rport); 61bff8ef008845 James Smart 2017-04-23 3587 ac881fd1288ca6 Daniel Wagner 2023-06-20 3588 if (ret > 0) ac881fd1288ca6 Daniel Wagner 2023-06-20 3589 ret = -EIO; ac881fd1288ca6 Daniel Wagner 2023-06-20 @3590 return ERR_PTR(ret); e399441de9115c James Smart 2016-12-02 3591 61bff8ef008845 James Smart 2017-04-23 3592 out_free_queues: 61bff8ef008845 James Smart 2017-04-23 3593 kfree(ctrl->queues); e399441de9115c James Smart 2016-12-02 3594 out_free_ida: 61bff8ef008845 James Smart 2017-04-23 3595 put_device(ctrl->dev); 3dd83f4013f0e8 Sagi Grimberg 2022-02-14 3596 ida_free(&nvme_fc_ctrl_cnt, ctrl->cnum); e399441de9115c James Smart 2016-12-02 3597 out_free_ctrl: e399441de9115c James Smart 2016-12-02 3598 kfree(ctrl); e399441de9115c James Smart 2016-12-02 3599 out_fail: e399441de9115c James Smart 2016-12-02 3600 /* exit via here doesn't follow ctlr ref points */ e399441de9115c James Smart 2016-12-02 3601 return ERR_PTR(ret); e399441de9115c James Smart 2016-12-02 3602 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki