From patchwork Wed Jul 29 16:28:36 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Lici X-Patchwork-Id: 38 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7000:fd0b:b0:87d:ab56:3700 with SMTP id cw11csp2194117mac; Wed, 29 Jul 2026 09:29:17 -0700 (PDT) X-Forwarded-Encrypted: i=2; AHgh+RpXlynQQk+eS/QedE+YVh7xtTQ/yILYKeGYEVG6D2J8GLJDqQEglUNIrTijrIYdFyG16lfwQUaIVO8=@openvpn.net X-Received: by 2002:a05:6820:a03:b0:6a3:e297:2f14 with SMTP id 006d021491bc7-6ac969bd820mr3695944eaf.8.1785342557441; Wed, 29 Jul 2026 09:29:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1785342557; cv=none; d=google.com; s=arc-20260327; b=C5nsjvsi/5DZ1Y2Nt8b/sbqpdOnLEw+ABiHfqZTis9q0LbhSOZgK6fJhhUpfJH8db+ IHQv/0fyvZmJMANtyVx68r5k8jJpNP3q9JXPj8oKdlDGXt8Cjx12RS9QSChy7VYX1HUX E9vnrHcBdok9NPLKVJyxchwAVrCAFFWOCjqrKzOivXsB9DdI1CsjsHPwUwsGUyY/Z0gL XaoWbRM03nbIoRwhyGfP4D6VpudqKrBvf54L7EIe3EGDbbnKAvdyZLaTlPOJkAuYnLdT pdnS8JIIawbtiyuXpBgnJ0WJtM1RhN5hXp+mewVmuub3Gomdl3FtgYzP/BEkYcgsJHEq czXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=errors-to:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:message-id:date:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=B35B5Z4LcSi2nj8KaxpYrd3zK1AQJVeoQRbPHd0h4fo=; fh=4NbAC/LsuMLI0S0hprUlLSLCiHwg6SCAifhH718Jh0Q=; b=jt71SaJCSz4HJoARjIdHmvLZPLZzLKJ+yFMRiVA/4/wlbwnq8JyOAlzphqqDm5IuOD SWENSu4aKNqGg5uF/+sOQjgoA7925RALfkOxuIXxjbj6tkWlU7wfuncDNzaXfE3/QCWT 47SC894Gdd1zL6Q9M6SUUQeRGS7wctZXtqSnnWinq5bsZgrPR1lFEOUY7n1ZhOrsOpaJ sxnJIFyeFWhWGOHQeMJxs3aG1D+EmCuRTnfBPH6nrM/Q6KcHRFBBelYh52rv+eITx6kA J3S1AqTriA5qrEwHO5cxORuwipOAMgmnInoZa5dbf5VXx+/6HASJxm2T2EVcw3aYeoyp iklQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b=T4Tt9Nx9; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b="c/XLoMqf"; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b="PjZx/ucs"; dkim=neutral (body hash did not verify) header.i=@mandelbit.com header.s=MBO0001 header.b=NQ9GbDgB; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id 586e51a60fabf-45886b4fe55si2948204fac.240.2026.07.29.09.29.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Jul 2026 09:29:17 -0700 (PDT) Received-SPF: pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) client-ip=216.105.38.7; Authentication-Results: mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b=T4Tt9Nx9; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b="c/XLoMqf"; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b="PjZx/ucs"; dkim=neutral (body hash did not verify) header.i=@mandelbit.com header.s=MBO0001 header.b=NQ9GbDgB; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Subject:MIME-Version:Message-ID:Date:To:From:Sender:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=B35B5Z4LcSi2nj8KaxpYrd3zK1AQJVeoQRbPHd0h4fo=; b=T4Tt9Nx9U3HkqSuvkykNhafV+X 6Tb0LfK6MdIGJu9daghtg4BmgVmrmFN1eV8AIRtUTSjovtPlR2HJ1oSpmGa0XSS8Qa+Mp78Mghvuw UpSeyppDf3J3wE8gO+Q2MI4K4JtnAGEWuClfJx5hZI+tTI7RaUoNT0ZfjbIuR6ZN8+20=; Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1wp79V-0005sl-9E; Wed, 29 Jul 2026 16:29:06 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1wp79R-0005sR-Qk for openvpn-devel@lists.sourceforge.net; Wed, 29 Jul 2026 16:29:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:Message-ID: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=0ZMrp3ZbiWn+cy9Ex5VTWRIZPbKEcY/tMCJTP7U1rk4=; b=c/XLoMqfqbg56aUgakcgH3uJdX sJPLQlMhalhBusz8DJ+P3rK0mpT5XSkVr9/iBlI39YDRHhEKL553AUhVQWAhIyl+etbxJ8h0glEIe hVyAcY2wpcQSvp0WAIGfVaqBrIKSdnBsGupzTjsXonXP0GfMYkGR6Bn3e5dlnQDI4v/4=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From :Sender:Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=0ZMrp3ZbiWn+cy9Ex5VTWRIZPbKEcY/tMCJTP7U1rk4=; b=P jZx/ucsPlTe1HIChWaZFQkapROfBRLUDOYzquLF4aqkFKUuW7+kvtDD6jjExKCLRMZsHdhFOvxL4I nAmkIZ3S19qgXVYssHSsWk7d/H5H6A6SEgPevP10lHWDqLlxkflFMESkmNPOv7Url1nWnAHadY+/b pxKCj0wHkl14Lv+0=; Received: from mout-b-110.mailbox.org ([195.10.208.55]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1wp79S-0003CL-5C for openvpn-devel@lists.sourceforge.net; Wed, 29 Jul 2026 16:29:01 +0000 Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-b-110.mailbox.org (Postfix) with ESMTPS id 4h9HpB17WMzNkvy; Wed, 29 Jul 2026 18:28:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandelbit.com; s=MBO0001; t=1785342530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=0ZMrp3ZbiWn+cy9Ex5VTWRIZPbKEcY/tMCJTP7U1rk4=; b=NQ9GbDgBX4HgdYk/Cu9RUYLm8hIWgxVxGNKaeF84lj3LnKcUZ+fOonFbaUJVsTnQXFDFZZ V94JGDI0G0CqYYMf5OyuYsHxdrC80S29+hCsO3nK90LeAKL1ekon7hh3dJ0S9CiWfzHew9 0pvBDwY2sbyKj2KQajKBwuu83DsNcMDCj4vbLlwb5jYlAYIPXk87+4fm86oBdC/tvUfnLx HfP9N9EfPbtcwAM/AUzAs/WWMqN/JA2vyN2ELbw1hoD/gvZblBRMtTW6spZox2yvcd3oIn nXxihNaEJ0Wn+0nAneVxRg36KeuBP29UyqomeTZzFZ0Ls5hSK769LUP/SC6c4Q== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of ralf@mandelbit.com designates 2001:67c:2050:b231:465::102 as permitted sender) smtp.mailfrom=ralf@mandelbit.com From: Ralf Lici To: openvpn-devel@lists.sourceforge.net Date: Wed, 29 Jul 2026 18:28:36 +0200 Message-ID: MIME-Version: 1.0 X-Rspamd-Queue-Id: 4h9HpB17WMzNkvy X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "sfi-spamd-2.hosts.colo.sdot.me", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hi, This is a rebase of v2 so no functional changes are included in this v3. v1 added setup-time validation for userspace-provided sockets and TX-time checks for socket state that can still change after the socket is attached to ovpn. Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1wp79S-0003CL-5C Subject: [Openvpn-devel] [PATCH ovpn net v3 0/4] ovpn: harden UDP TX against mutable socket state X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: 1872067357314343772 X-GMAIL-MSGID: 1872067357314343772 Hi, This is a rebase of v2 so no functional changes are included in this v3. v1 added setup-time validation for userspace-provided sockets and TX-time checks for socket state that can still change after the socket is attached to ovpn. In v1, ovpn_udp_send_skb consumed the error internally, so ovpn_encrypt_post could still update link TX stats and last_sent for a packet that was dropped before transmit. v2 propagates those errors back to the common TX completion path, so TX-side checks are handled as local transmit failures, not as successful handoff to the UDP stack. v2 also makes socket/remote address-family mismatches fatal for the peer. Those mismatches mean the peer can no longer transmit with the socket it was configured with, so keeping it around would just keep dropping packets. The peer deletion is deferred through a common transport-error work item, which is also reused by the TCP transport-error paths. The source-port-zero case is kept as drop+warning for now. It is still a broken socket state for ovpn TX, but it is not treated as a peer-fatal address-family mismatch in this series. Thanks, Ralf Lici Mandelbit Srl --- Changes since v2 https://lore.kernel.org/openvpn-devel/cover.1780663425.git.ralf@mandelbit.com/ - Rebase on top of OpenVPN/ovpn-net-next/development-net. Changes since v1 https://lore.kernel.org/openvpn-devel/20260526124544.425791-1-ralf@mandelbit.com/T/ - Add ratelimited warnings for TX-side socket state failures. - Propagate local UDP TX errors to ovpn_encrypt_post, so local drops do not update link TX stats or last_sent. - Delete peers with TRANSPORT_ERROR on UDP socket/remote address-family mismatches. - Add a common deferred transport-error deletion helper shared by TCP and UDP. - Clarify that netlink socket/remote validation is setup-time diagnostics; the TX path remains the runtime gate for mutable socket state. - Use a single READ_ONCE() snapshot of sk->sk_family in the netlink helper. - Fix the IPV6_V6ONLY typo. Ralf Lici (4): ovpn: avoid sending UDP packets with source port 0 ovpn: validate sockets before attaching peer transports ovpn: reject UDP remotes incompatible with socket family ovpn: recheck UDP socket family before transmit drivers/net/ovpn/io.c | 4 +- drivers/net/ovpn/netlink.c | 133 ++++++++++++++++++++++++++++--------- drivers/net/ovpn/peer.c | 19 ++++++ drivers/net/ovpn/peer.h | 5 +- drivers/net/ovpn/socket.c | 16 +++-- drivers/net/ovpn/tcp.c | 23 +------ drivers/net/ovpn/udp.c | 57 ++++++++++++---- drivers/net/ovpn/udp.h | 4 +- 8 files changed, 183 insertions(+), 78 deletions(-) base-commit: a6b96b20e356138d932e2e44eebe15bf01506c15