lib/vmd: check header_type after the vmd_adapter structure is verified

First check both vmd_pci_device for not being a NULL,
same as vmd_adapter structure being present.

Otherwise dev was dereferenced before checking for NULL.

Change-Id: I3719f33c1762f789b0eb63b0f2ddce8258843ded
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/462509
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Wojciech Malikowski <wojciech.malikowski@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Tomasz Zawadzki 2019-07-18 07:44:36 -04:00 committed by Ben Walker
parent ba323d44ca
commit 8500db5ee0

View File

@ -173,7 +173,7 @@ vmd_assign_base_addrs(struct vmd_pci_device *dev)
{
uint16_t mem_base = 0, mem_limit = 0;
unsigned char mem_attr = 0;
int last = dev->header_type ? 2 : 6;
int last;
struct vmd_adapter *vmd = NULL;
bool ret_val = false;
uint32_t bar_value;
@ -189,6 +189,7 @@ vmd_assign_base_addrs(struct vmd_pci_device *dev)
vmd_align_base_addrs(vmd, ONE_MB);
last = dev->header_type ? 2 : 6;
for (int i = 0; i < last; i++) {
bar_value = dev->header->zero.BAR[i];
dev->header->zero.BAR[i] = ~(0U);