Check unmap return code
https://bugs.linaro.org/show_bug.cgi?id=2831

Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org>
---
 platform/linux-generic/pktio/socket_mmap.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/platform/linux-generic/pktio/socket_mmap.c 
b/platform/linux-generic/pktio/socket_mmap.c
index 666aae6a..fdf8cca5 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -454,11 +454,11 @@ static int mmap_sock(pkt_sock_mmap_t *pkt_sock)
        return 0;
 }
 
-static void mmap_unmap_sock(pkt_sock_mmap_t *pkt_sock)
+static int mmap_unmap_sock(pkt_sock_mmap_t *pkt_sock)
 {
-       munmap(pkt_sock->mmap_base, pkt_sock->mmap_len);
        free(pkt_sock->rx_ring.rd);
        free(pkt_sock->tx_ring.rd);
+       return munmap(pkt_sock->mmap_base, pkt_sock->mmap_len);
 }
 
 static int mmap_bind_sock(pkt_sock_mmap_t *pkt_sock, const char *netdev)
@@ -486,8 +486,14 @@ static int mmap_bind_sock(pkt_sock_mmap_t *pkt_sock, const 
char *netdev)
 static int sock_mmap_close(pktio_entry_t *entry)
 {
        pkt_sock_mmap_t *const pkt_sock = &entry->s.pkt_sock_mmap;
+       int ret;
+
+       ret = mmap_unmap_sock(pkt_sock);
+       if (ret != 0) {
+               ODP_ERR("mmap_unmap_sock() %s\n", strerror(errno));
+               return -1;
+       }
 
-       mmap_unmap_sock(pkt_sock);
        if (pkt_sock->sockfd != -1 && close(pkt_sock->sockfd) != 0) {
                __odp_errno = errno;
                ODP_ERR("close(sockfd): %s\n", strerror(errno));
-- 
2.11.0.295.gd7dffce

Reply via email to