From ee1ab6f6be998b40a95363d4a5579c28233f2b83 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Tue, 9 Aug 2022 05:46:34 +0200 Subject: [PATCH] vmd: increment dev_cnt once device is initialized This is done in order to avoid having to decrement this counter in case of a failure. Also, it makes the result valid for the few error cases when we didn't decrement it. Signed-off-by: Konrad Sztyber Change-Id: Ia944fb8b810ce69caa8db5bc7c941e0905c9d3bd Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13954 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Tomasz Zawadzki Reviewed-by: Jim Harris Reviewed-by: Tom Nabarro --- lib/vmd/vmd.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/vmd/vmd.c b/lib/vmd/vmd.c index f5c70fca0..bb1b4a189 100644 --- a/lib/vmd/vmd.c +++ b/lib/vmd/vmd.c @@ -967,7 +967,6 @@ vmd_scan_single_bus(struct vmd_pci_bus *bus, struct vmd_pci_device *parent_bridg continue; } - dev_cnt++; if (new_dev->header->common.header_type & PCI_HEADER_TYPE_BRIDGE) { slot_cap.as_uint32_t = 0; if (new_dev->pcie_cap != NULL) { @@ -1009,6 +1008,7 @@ vmd_scan_single_bus(struct vmd_pci_bus *bus, struct vmd_pci_device *parent_bridg TAILQ_INSERT_TAIL(&bus->vmd->bus_list, new_bus, tailq); vmd_dev_init(new_dev); + dev_cnt++; if (slot_cap.bit_field.hotplug_capable && new_dev->pcie_cap != NULL && new_dev->pcie_cap->express_cap_register.bit_field.slot_implemented) { @@ -1025,9 +1025,8 @@ vmd_scan_single_bus(struct vmd_pci_bus *bus, struct vmd_pci_device *parent_bridg rc = vmd_init_end_device(new_dev); if (rc != 0) { vmd_dev_free(new_dev); - if (dev_cnt) { - dev_cnt--; - } + } else { + dev_cnt++; } } }