From f6866117acb32c78d5ea7bd76ba330284655af35 Mon Sep 17 00:00:00 2001 From: Tomasz Zawadzki Date: Thu, 9 Mar 2023 11:07:54 +0100 Subject: [PATCH] freebsd: return negated error from getaddrinfo() On FreeBSD getaddrinfo() report positive error code values, meanwhile Linux does it with negative ones. Make sure that regardless of the system used, error codes with same sign are reported. This can be observed in the log reported in #2936. Besides the above, in some instances replaced EINVAL with the actual return value. Change-Id: I7f88c314bdf5c3a03f8661c2213e33b2fc276ef7 Signed-off-by: Tomasz Zawadzki Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17097 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Community-CI: Mellanox Build Bot Reviewed-by: Aleksey Marchuk --- lib/iscsi/portal_grp.c | 2 +- lib/jsonrpc/jsonrpc_client_tcp.c | 2 +- lib/nvme/nvme_rdma.c | 2 +- lib/nvme/nvme_tcp.c | 2 +- lib/nvmf/rdma.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/iscsi/portal_grp.c b/lib/iscsi/portal_grp.c index 03e6b3e13..5e87e28ab 100644 --- a/lib/iscsi/portal_grp.c +++ b/lib/iscsi/portal_grp.c @@ -219,7 +219,7 @@ iscsi_parse_redirect_addr(struct sockaddr_storage *sa, rc = getaddrinfo(host, port, &hints, &res); if (rc != 0) { SPDK_ERRLOG("getaddinrfo failed: %s (%d)\n", gai_strerror(rc), rc); - return -EINVAL; + return -(abs(rc)); } if (res->ai_addrlen > sizeof(*sa)) { diff --git a/lib/jsonrpc/jsonrpc_client_tcp.c b/lib/jsonrpc/jsonrpc_client_tcp.c index 447efcce0..6ec76a10a 100644 --- a/lib/jsonrpc/jsonrpc_client_tcp.c +++ b/lib/jsonrpc/jsonrpc_client_tcp.c @@ -282,7 +282,7 @@ spdk_jsonrpc_client_connect(const char *addr, int addr_family) rc = getaddrinfo(host, port, &hints, &res); if (rc != 0) { SPDK_ERRLOG("Unable to look up RPC connect address '%s' (%d): %s\n", addr, rc, gai_strerror(rc)); - rc = -EINVAL; + rc = -(abs(rc)); goto err; } diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index 2da8b8642..3f8b1d195 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -1256,7 +1256,7 @@ nvme_rdma_parse_addr(struct sockaddr_storage *sa, int family, const char *addr, ret = getaddrinfo(addr, service, &hints, &res); if (ret) { SPDK_ERRLOG("getaddrinfo failed: %s (%d)\n", gai_strerror(ret), ret); - return ret; + return -(abs(ret)); } if (res->ai_addrlen > sizeof(*sa)) { diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index bc3800198..f9a99c9b1 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -225,7 +225,7 @@ nvme_tcp_parse_addr(struct sockaddr_storage *sa, int family, const char *addr, c ret = getaddrinfo(addr, service, &hints, &res); if (ret) { SPDK_ERRLOG("getaddrinfo failed: %s (%d)\n", gai_strerror(ret), ret); - return ret; + return -(abs(ret)); } if (res->ai_addrlen > sizeof(*sa)) { diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 9ac2a4546..33e400788 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -2856,7 +2856,7 @@ nvmf_rdma_listen(struct spdk_nvmf_transport *transport, const struct spdk_nvme_t if (rc) { SPDK_ERRLOG("getaddrinfo failed: %s (%d)\n", gai_strerror(rc), rc); free(port); - return -EINVAL; + return -(abs(rc)); } rc = rdma_create_id(rtransport->event_channel, &port->id, port, RDMA_PS_TCP);