From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202502 header.b=chPQ76zk; dkim-atps=neutral Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id B4D665A061A for ; Thu, 27 Feb 2025 06:55:30 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202502; t=1740635720; bh=rp5/eT0/yeRITmQbBK3dL9/bczfec95pcYXOlzFhXrY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=chPQ76zkExQp5wctayTq8Gk4qs8wo5Zuy+GTu51vuBhBO6J3Y34Xh6XEzy3C+gIBu Htqu1GxBf1KPYaZqsL4nXUEZkXJXLajcIfTIeIZdPh6IJMG/o+VSsFY5TPuf8HPse6 LP92F4PjKVquCJPWRXc6u/hDD49ZCRi0zdLUFMsZSbF5osfkIsuH6hV7S4ULshAmFL xfUk0TqFyaWv8Dn9sjG5XuvGwy3RzrOlOHpUM3/IzaWVULSaLv3lZ9wNikFMQFP9Xj ivaWvtbOdANbN0NtRN6HseqG4UB7WxYOMnQNUKj+CDgNGyjQQzLAyrUegtI2/40azy TQSAm4NeJxa/Q== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4Z3LCr0dfWz4x5g; Thu, 27 Feb 2025 16:55:20 +1100 (AEDT) From: David Gibson To: Stefano Brivio , passt-dev@passt.top Subject: [PATCH v4 3/5] tcp: Correct error code handling from tcp_flow_repair_socket() Date: Thu, 27 Feb 2025 16:55:15 +1100 Message-ID: <20250227055517.497347-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250227055517.497347-1-david@gibson.dropbear.id.au> References: <20250227055517.497347-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: KXTBGOYV5ZMFSRJLFJ5I2ABOQ3G2GHVC X-Message-ID-Hash: KXTBGOYV5ZMFSRJLFJ5I2ABOQ3G2GHVC X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: David Gibson X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: There are two small bugs in error returns from tcp_low_repair_socket(), which is supposed to return a negative errno code: 1) On bind() failures, wedirectly pass on the return code from bind(), which is just 0 or -1, instead of an error code. 2) In the caller, tcp_flow_migrate_target() we call strerror_() directly on the negative error code, but strerror() requires a positive error code. Correct both of these. Signed-off-by: David Gibson --- tcp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tcp.c b/tcp.c index e3c0a53b..8528ee35 100644 --- a/tcp.c +++ b/tcp.c @@ -3280,7 +3280,8 @@ int tcp_flow_repair_socket(struct ctx *c, struct tcp_tap_conn *conn) tcp_sock_set_nodelay(s); - if ((rc = bind(s, &a.sa, sizeof(a)))) { + if (bind(s, &a.sa, sizeof(a))) { + rc = -errno; err_perror("Failed to bind socket for migrated flow"); goto err; } @@ -3375,7 +3376,7 @@ int tcp_flow_migrate_target(struct ctx *c, int fd) conn->seq_init_from_tap = ntohl(t.seq_init_from_tap); if ((rc = tcp_flow_repair_socket(c, conn))) { - flow_err(flow, "Can't set up socket: %s, drop", strerror_(rc)); + flow_err(flow, "Can't set up socket: %s, drop", strerror_(-rc)); flow_alloc_cancel(flow); return 0; } -- 2.48.1