From 823bb32026586e2d7fbfb2a14a510e6c9c833017 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Mon, 15 Mar 2021 14:22:04 -0700 Subject: [PATCH] sock: Null out sock on spdk_sock_close in all success cases Even if the operation is deferred, null it out if it reported success. Signed-off-by: Ben Walker Change-Id: I3cc9eaa88bdd7a2e7d13790782f4a9b0966e5585 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6892 Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Aleksey Marchuk Reviewed-by: Tomasz Zawadzki --- lib/sock/sock.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/sock/sock.c b/lib/sock/sock.c index 3c4d1143d..971c9110a 100644 --- a/lib/sock/sock.c +++ b/lib/sock/sock.c @@ -358,7 +358,6 @@ int spdk_sock_close(struct spdk_sock **_sock) { struct spdk_sock *sock = *_sock; - int rc; if (sock == NULL) { errno = EBADF; @@ -371,6 +370,9 @@ spdk_sock_close(struct spdk_sock **_sock) return -1; } + /* Beyond this point the socket is considered closed. */ + *_sock = NULL; + sock->flags.closed = true; if (sock->cb_cnt > 0) { @@ -380,12 +382,7 @@ spdk_sock_close(struct spdk_sock **_sock) spdk_sock_abort_requests(sock); - rc = sock->net_impl->close(sock); - if (rc == 0) { - *_sock = NULL; - } - - return rc; + return sock->net_impl->close(sock); } ssize_t