bus/vmbus: fix check for mmap failure

The code was testing the result of mmap incorrectly.
I.e the test that a local pointer is not MAP_FAILED would
always succeed and therefore hid any potential problems.

Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support")
Cc: stable@dpdk.org

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
This commit is contained in:
Stephen Hemminger 2019-02-07 19:44:03 -08:00 committed by Thomas Monjalon
parent 4a9efcddad
commit 3f9277031a

View File

@ -202,6 +202,7 @@ static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev,
char ring_path[PATH_MAX];
size_t file_size;
struct stat sb;
void *mapaddr;
int fd;
snprintf(ring_path, sizeof(ring_path),
@ -232,14 +233,16 @@ static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev,
return -EINVAL;
}
*ring_size = file_size / 2;
*ring_buf = vmbus_map_resource(vmbus_map_addr, fd,
0, sb.st_size, 0);
mapaddr = vmbus_map_resource(vmbus_map_addr, fd,
0, file_size, 0);
close(fd);
if (ring_buf == MAP_FAILED)
if (mapaddr == MAP_FAILED)
return -EIO;
*ring_size = file_size / 2;
*ring_buf = mapaddr;
vmbus_map_addr = RTE_PTR_ADD(ring_buf, file_size);
return 0;
}