From b4226d6f99ed9f98022cdb6234a1766f6beb6fb5 Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Sun, 13 Jun 2021 21:10:19 +0800 Subject: [PATCH] posix: set fd to -1 after close(fd) in posix_sock_create() In posix_sock_create(), we loops through all the addresses available. If something is wrong, we should close(fd) and set fd to -1, and try the next address. Only, when one fd satisfies all conditions, we will break the loop with the useful fd. Signed-off-by: Zhiqiang Liu Change-Id: Icbfc10246c92b95cacd6eb058e6e46cf8924fc4c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8310 Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk Reviewed-by: Shuhei Matsumoto Reviewed-by: Ziye Yang Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot --- module/sock/posix/posix.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/module/sock/posix/posix.c b/module/sock/posix/posix.c index 444d5df42..bc060fcde 100644 --- a/module/sock/posix/posix.c +++ b/module/sock/posix/posix.c @@ -499,12 +499,14 @@ retry: rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof val); if (rc != 0) { close(fd); + fd = -1; /* error */ continue; } rc = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof val); if (rc != 0) { close(fd); + fd = -1; /* error */ continue; } @@ -514,6 +516,7 @@ retry: rc = setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &opts->priority, sizeof val); if (rc != 0) { close(fd); + fd = -1; /* error */ continue; } @@ -524,6 +527,7 @@ retry: rc = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &val, sizeof val); if (rc != 0) { close(fd); + fd = -1; /* error */ continue; }