All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/nvme/target/pci-epf.c:1087:8-12: ERROR: reference preceded by free on line 1082
@ 2025-12-16 17:36 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-12-16 17:36 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Julia Lawall

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Damien Le Moal <dlemoal@kernel.org>
CC: Keith Busch <kbusch@kernel.org>
CC: Christoph Hellwig <hch@lst.de>
CC: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
CC: "Krzysztof Wilczyński" <kwilczynski@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   40fbbd64bba6c6e7a72885d2f59b6a3be9991eeb
commit: 0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 nvmet: New NVMe PCI endpoint function target driver
date:   11 months ago
:::::: branch date: 10 hours ago
:::::: commit date: 11 months ago
config: sparc64-randconfig-r053-20251216 (https://download.01.org/0day-ci/archive/20251217/202512170146.WfjrzWNF-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 8.5.0

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@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202512170146.WfjrzWNF-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/nvme/target/pci-epf.c:1087:8-12: ERROR: reference preceded by free on line 1082

vim +1087 drivers/nvme/target/pci-epf.c

0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1033  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1034  static int nvmet_pci_epf_iod_parse_sgl_segments(struct nvmet_pci_epf_ctrl *ctrl,
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1035  						struct nvmet_pci_epf_iod *iod)
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1036  {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1037  	struct nvme_command *cmd = &iod->cmd;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1038  	struct nvme_sgl_desc seg = cmd->common.dptr.sgl;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1039  	struct nvme_sgl_desc *sgls = NULL;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1040  	int n = 0, i, nr_sgls;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1041  	int ret;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1042  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1043  	/*
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1044  	 * We do not support inline data nor keyed SGLs, so we should be seeing
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1045  	 * only segment descriptors.
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1046  	 */
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1047  	if (seg.type != (NVME_SGL_FMT_SEG_DESC << 4) &&
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1048  	    seg.type != (NVME_SGL_FMT_LAST_SEG_DESC << 4)) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1049  		iod->status = NVME_SC_SGL_INVALID_TYPE | NVME_STATUS_DNR;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1050  		return -EIO;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1051  	}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1052  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1053  	while (seg.length) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1054  		sgls = nvmet_pci_epf_get_sgl_segment(ctrl, &seg, &nr_sgls);
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1055  		if (!sgls) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1056  			iod->status = NVME_SC_INTERNAL | NVME_STATUS_DNR;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1057  			return -EIO;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1058  		}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1059  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1060  		/* Grow the PCI segment table as needed. */
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1061  		ret = nvmet_pci_epf_alloc_iod_data_segs(iod, nr_sgls);
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1062  		if (ret) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1063  			iod->status = NVME_SC_INTERNAL | NVME_STATUS_DNR;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1064  			goto out;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1065  		}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1066  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1067  		/*
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1068  		 * Parse the SGL descriptors to build the PCI segment table,
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1069  		 * checking the descriptor type as we go.
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1070  		 */
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1071  		for (i = 0; i < nr_sgls; i++) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1072  			if (sgls[i].type != (NVME_SGL_FMT_DATA_DESC << 4)) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1073  				iod->status = NVME_SC_SGL_INVALID_TYPE |
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1074  					NVME_STATUS_DNR;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1075  				goto out;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1076  			}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1077  			iod->data_segs[n].pci_addr = le64_to_cpu(sgls[i].addr);
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1078  			iod->data_segs[n].length = le32_to_cpu(sgls[i].length);
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1079  			n++;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1080  		}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1081  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04 @1082  		kfree(sgls);
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1083  	}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1084  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1085   out:
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1086  	if (iod->status != NVME_SC_SUCCESS) {
0faa0fe6f90ea59 Damien Le Moal 2025-01-04 @1087  		kfree(sgls);
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1088  		return -EIO;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1089  	}
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1090  
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1091  	return 0;
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1092  }
0faa0fe6f90ea59 Damien Le Moal 2025-01-04  1093  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* drivers/nvme/target/pci-epf.c:1087:8-12: ERROR: reference preceded by free on line 1082
@ 2026-02-16 11:11 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-02-16 11:11 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Julia Lawall

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Damien Le Moal <dlemoal@kernel.org>
CC: Keith Busch <kbusch@kernel.org>
CC: Christoph Hellwig <hch@lst.de>
CC: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
CC: "Krzysztof Wilczyński" <kwilczynski@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   0f2acd3148e0ef42bdacbd477f90e8533f96b2ac
commit: 0faa0fe6f90ea59b10d1b0f15ce0eb0c18eff186 nvmet: New NVMe PCI endpoint function target driver
date:   1 year, 1 month ago
:::::: branch date: 7 hours ago
:::::: commit date: 1 year, 1 month ago
config: powerpc-randconfig-r053-20260216 (https://download.01.org/0day-ci/archive/20260216/202602161926.2b0yVKkf-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project afd4df07ab0262482829d4410a6bae9f2809d37b)

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@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202602161926.2b0yVKkf-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/nvme/target/pci-epf.c:1087:8-12: ERROR: reference preceded by free on line 1082

vim +1087 drivers/nvme/target/pci-epf.c

0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1033  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1034  static int nvmet_pci_epf_iod_parse_sgl_segments(struct nvmet_pci_epf_ctrl *ctrl,
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1035  						struct nvmet_pci_epf_iod *iod)
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1036  {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1037  	struct nvme_command *cmd = &iod->cmd;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1038  	struct nvme_sgl_desc seg = cmd->common.dptr.sgl;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1039  	struct nvme_sgl_desc *sgls = NULL;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1040  	int n = 0, i, nr_sgls;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1041  	int ret;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1042  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1043  	/*
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1044  	 * We do not support inline data nor keyed SGLs, so we should be seeing
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1045  	 * only segment descriptors.
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1046  	 */
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1047  	if (seg.type != (NVME_SGL_FMT_SEG_DESC << 4) &&
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1048  	    seg.type != (NVME_SGL_FMT_LAST_SEG_DESC << 4)) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1049  		iod->status = NVME_SC_SGL_INVALID_TYPE | NVME_STATUS_DNR;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1050  		return -EIO;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1051  	}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1052  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1053  	while (seg.length) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1054  		sgls = nvmet_pci_epf_get_sgl_segment(ctrl, &seg, &nr_sgls);
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1055  		if (!sgls) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1056  			iod->status = NVME_SC_INTERNAL | NVME_STATUS_DNR;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1057  			return -EIO;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1058  		}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1059  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1060  		/* Grow the PCI segment table as needed. */
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1061  		ret = nvmet_pci_epf_alloc_iod_data_segs(iod, nr_sgls);
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1062  		if (ret) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1063  			iod->status = NVME_SC_INTERNAL | NVME_STATUS_DNR;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1064  			goto out;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1065  		}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1066  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1067  		/*
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1068  		 * Parse the SGL descriptors to build the PCI segment table,
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1069  		 * checking the descriptor type as we go.
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1070  		 */
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1071  		for (i = 0; i < nr_sgls; i++) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1072  			if (sgls[i].type != (NVME_SGL_FMT_DATA_DESC << 4)) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1073  				iod->status = NVME_SC_SGL_INVALID_TYPE |
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1074  					NVME_STATUS_DNR;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1075  				goto out;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1076  			}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1077  			iod->data_segs[n].pci_addr = le64_to_cpu(sgls[i].addr);
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1078  			iod->data_segs[n].length = le32_to_cpu(sgls[i].length);
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1079  			n++;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1080  		}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1081  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04 @1082  		kfree(sgls);
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1083  	}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1084  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1085   out:
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1086  	if (iod->status != NVME_SC_SUCCESS) {
0faa0fe6f90ea5 Damien Le Moal 2025-01-04 @1087  		kfree(sgls);
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1088  		return -EIO;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1089  	}
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1090  
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1091  	return 0;
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1092  }
0faa0fe6f90ea5 Damien Le Moal 2025-01-04  1093  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-02-16 11:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-16 17:36 drivers/nvme/target/pci-epf.c:1087:8-12: ERROR: reference preceded by free on line 1082 kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2026-02-16 11:11 kernel test robot

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.