[client] common: fix time of check/time of use issue

This commit is contained in:
Geoffrey McRae 2023-11-11 13:37:51 +11:00
parent 9a53880b9b
commit aa42751743

View File

@ -149,16 +149,7 @@ bool ivshmemOpenDev(struct IVSHMEM * dev, const char * shmDevice)
} }
else else
{ {
struct stat st; devFd = open(shmDevice, O_RDWR, (mode_t)0600);
if (stat(shmDevice, &st) != 0)
{
DEBUG_ERROR("Failed to stat: %s", shmDevice);
DEBUG_ERROR("%s", strerror(errno));
return false;
}
devSize = st.st_size;
devFd = open(shmDevice, O_RDWR, (mode_t)0600);
if (devFd < 0) if (devFd < 0)
{ {
DEBUG_ERROR("Failed to open: %s", shmDevice); DEBUG_ERROR("Failed to open: %s", shmDevice);
@ -166,7 +157,17 @@ bool ivshmemOpenDev(struct IVSHMEM * dev, const char * shmDevice)
return false; return false;
} }
hasDMA = false; struct stat st;
if (fstat(devFd, &st) != 0)
{
DEBUG_ERROR("Failed to stat: %s", shmDevice);
DEBUG_ERROR("%s", strerror(errno));
close(devFd);
return false;
}
devSize = st.st_size;
hasDMA = false;
} }
void * map = mmap(0, devSize, PROT_READ | PROT_WRITE, MAP_SHARED, devFd, 0); void * map = mmap(0, devSize, PROT_READ | PROT_WRITE, MAP_SHARED, devFd, 0);