From: Jakub Grajciar Date: Thu, 27 Sep 2018 08:26:35 +0000 (+0200) Subject: libmemif: external region bugfix X-Git-Tag: v18.10-rc1~92 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=412e7b64f9c0b3d5802eee4cd219daff2fcd3dd6 libmemif: external region bugfix Change-Id: I7dbece80dda917ff78f53f8f4074132895aed316 Signed-off-by: Jakub Grajciar --- diff --git a/extras/libmemif/src/main.c b/extras/libmemif/src/main.c index 338292508c8..782442d440b 100644 --- a/extras/libmemif/src/main.c +++ b/extras/libmemif/src/main.c @@ -1185,6 +1185,8 @@ memif_disconnect_internal (memif_connection_t * c) for (i = 0; i < c->regions_num; i++) { + if (&c->regions[i] == NULL) + continue; if (c->regions[i].is_external != 0) { lm->del_external_region (c->regions[i].addr, @@ -1318,7 +1320,7 @@ memif_connect1 (memif_connection_t * c) if (mr->is_external) { if (lm->get_external_region_addr == NULL) - return 99; /* FIXME: propper error report */ + return 99; /* FIXME: proper error report */ mr->addr = lm->get_external_region_addr (mr->region_size, mr->fd, c->private_ctx); diff --git a/extras/libmemif/src/socket.c b/extras/libmemif/src/socket.c index 7c4bbd437d2..b25b0261d77 100644 --- a/extras/libmemif/src/socket.c +++ b/extras/libmemif/src/socket.c @@ -506,7 +506,8 @@ memif_msg_receive_add_region (memif_connection_t * c, memif_msg_t * msg, c->regions[ar->index].region_size = ar->size; c->regions[ar->index].addr = NULL; - if (lm->get_external_region_addr) + /* region 0 is never external */ + if (lm->get_external_region_addr && (ar->index != 0)) c->regions[ar->index].is_external = 1; return MEMIF_ERR_SUCCESS; /* 0 */