Hence fixing CID 174663 (Fixes https://bugs.linaro.org/show_bug.cgi?id=2827)
Signed-off-by: Christophe Milard <christophe.mil...@linaro.org> --- since V1: -print strerror(errno) and sets __odp_errno (Maxim) -ref to bugzilla bug ID (Mike, Bill) platform/linux-generic/_ishm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/linux-generic/_ishm.c b/platform/linux-generic/_ishm.c index f889834..5ca1067 100644 --- a/platform/linux-generic/_ishm.c +++ b/platform/linux-generic/_ishm.c @@ -818,7 +818,14 @@ int _odp_ishm_reserve(const char *name, uint64_t size, int fd, /* If a file descriptor is provided, get the real size and map: */ if (fd >= 0) { - fstat(fd, &statbuf); + if (fstat(fd, &statbuf) < 0) { + close(fd); + odp_spinlock_unlock(&ishm_tbl->lock); + ODP_ERR("_ishm_reserve failed (fstat failed: %s).\n", + strerror(errno)); + __odp_errno = errno; + return -1; + } len = statbuf.st_size; /* note that the huge page flag is meningless here as huge * page is determined by the provided file descriptor: */ -- 2.7.4