Commit ccc1c72c authored by Ziye Yang's avatar Ziye Yang Committed by Tomasz Zawadzki
Browse files

vmd: fix the memory leak issue if vmd address cannot assigned.



Also cleanup some codes.

Change-Id: I45ff18cd2afcf38c50b073e80448ba5e267e3ef7
Signed-off-by: default avatarZiye Yang <ziye.yang@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472664


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent fcf4c5e4
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ static void
vmd_align_base_addrs(struct vmd_adapter *vmd, uint32_t alignment)
{
	uint32_t pad;

	/*
	 *  Device is not in hot plug path, align the base address remaining from membar 1.
	 */
@@ -891,6 +892,7 @@ vmd_scan_single_bus(struct vmd_pci_bus *bus, struct vmd_pci_device *parent_bridg
			} else {
				SPDK_DEBUGLOG(SPDK_LOG_VMD, "Removing failed device:%p\n", new_dev);
				TAILQ_REMOVE(&bus->dev_list, new_dev, tailq);
				free(new_dev);
				if (dev_cnt) {
					dev_cnt--;
				}
@@ -1003,11 +1005,12 @@ vmd_scan_pcibus(struct vmd_pci_bus *bus)
	return dev_cnt;
}


static int
vmd_map_bars(struct vmd_adapter *vmd, struct spdk_pci_device *dev)
{
	int rc = spdk_pci_device_map_bar(dev, 0, (void **)&vmd->cfg_vaddr,
	int rc;

	rc = spdk_pci_device_map_bar(dev, 0, (void **)&vmd->cfg_vaddr,
				     &vmd->cfgbar, &vmd->cfgbar_size);
	if (rc == 0) {
		rc = spdk_pci_device_map_bar(dev, 2, (void **)&vmd->mem_vaddr,