[ti:ti-rt-linux-5.10.y 4405/10206] drivers/pci/endpoint/pci-epf-core.c:169 pci_epf_add_vepf() warn: inconsistent returns '&epf_pf->lock'.

From: Dan Carpenter
Date: Mon Nov 22 2021 - 06:18:26 EST


tree: git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git ti-rt-linux-5.10.y
head: 0c67d996db8f3c9149598bc98657ae28fee22208
commit: 0cf43e35b1743dc43574089fcf3ff71d8cd2ae39 [4405/10206] PCI: endpoint: Add support to add virtual function in endpoint core
config: x86_64-randconfig-m001-20211116 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>

smatch warnings:
drivers/pci/endpoint/pci-epf-core.c:169 pci_epf_add_vepf() warn: inconsistent returns '&epf_pf->lock'.

vim +169 drivers/pci/endpoint/pci-epf-core.c

0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 141 int pci_epf_add_vepf(struct pci_epf *epf_pf, struct pci_epf *epf_vf)
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 142 {
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 143 u32 vfunc_no;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 144
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 145 if (IS_ERR_OR_NULL(epf_pf) || IS_ERR_OR_NULL(epf_vf))
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 146 return -EINVAL;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 147
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 148 if (epf_pf->epc || epf_vf->epc || epf_vf->epf_pf)
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 149 return -EBUSY;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 150
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 151 if (epf_pf->sec_epc || epf_vf->sec_epc)
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 152 return -EBUSY;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 153
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 154 mutex_lock(&epf_pf->lock);
^^^^^^^^^^^^^^^^^^^^^^^^

0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 155 vfunc_no = find_first_zero_bit(&epf_pf->vfunction_num_map,
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 156 BITS_PER_LONG);
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 157 if (vfunc_no >= BITS_PER_LONG)
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 158 return -EINVAL;

Missing unlock on error path.

0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 159
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 160 set_bit(vfunc_no, &epf_pf->vfunction_num_map);
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 161 epf_vf->vfunc_no = vfunc_no;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 162
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 163 epf_vf->epf_pf = epf_pf;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 164 epf_vf->is_vf = true;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 165
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 166 list_add_tail(&epf_vf->list, &epf_pf->pci_vepf);
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 167 mutex_unlock(&epf_pf->lock);
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 168
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 @169 return 0;
0cf43e35b1743d Kishon Vijay Abraham I 2021-03-30 170 }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx