From nobody Fri Sep 25 15:13:46 2026 Received: from mail-ot1-f51.google.com (mail-ot1-f51.google.com [209.85.210.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 10A772853E9 for ; Thu, 10 Sep 2026 23:46:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789083983; cv=none; b=hrheOfd4q7J072cwGI2FXIQcS0OJsergLopx/DmyGs6TAkISiu4pv5SPCSBTwbw5CZhfab6ZrYIde+1n55fqxNe9F1zVcZmRsepFXU2lkJuK96y7vJLlZg3tUH80KfDuwxwPRvDts0KHGDBnv6mtiZNPnenbQhAV16NdeRQclRU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789083983; c=relaxed/simple; bh=M6jIXaEoyrgc6/WiURsN+U8IhrrnZ9zZFg+Oj7F70yQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NfW72PpIiLSkdbLesdr+wLuBDYoxyt3Io5lMjarjmqqOyIEPIGh+L9g53KRzxPdlIs6qwZY6QdUs1JFMY8/wgOurq/EZXLM6lxZcU+Oj7WPvYFaVuuqlomx0W+pHiYHzUFV9klYAzxBBXCycxbSfBbsi4K85YD6Mn3C5Rh5xbRE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h2zxLEdh; arc=none smtp.client-ip=209.85.210.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h2zxLEdh" Received: by mail-ot1-f51.google.com with SMTP id 46e09a7af769-7f64ea07036so353223a34.0 for ; Thu, 10 Sep 2026 16:46:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789083980; x=1789688780; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kbyz7e2Zj6Paq1U1ORPGnZB2czddhzmepRdeHB+cyyk=; b=h2zxLEdh2X+9pBLiJGXLrsF7DuPx0SdMZj202+AUvu8KfSElB9fEgE145Bxigj4AaA u1LgPi24WJzLIPC3Ul4quk3T72yvOtIRcand7Ete+47fyfL//NNTyMG3PXMj/iqH4+Ny QNkg2Mhy7ddOPMQ0mBNHQVU4UY1ipAIiXRL+GNmwUvf23+NQm6ZL2AAITHbxx0/6egQN 6gq/FI7XVpOyAQS+//I6tkbUIJ6SRTYa6fUodc/SD8sHgCYev3YBRNMA3q39ZK04nnYu n0UGk+hwJgpsllh4x8XRiPAePsH8aZ83TNZMX8lYIjm2Bl2L0f0Api6sCwAHuAmN3TN2 mClQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789083980; x=1789688780; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=kbyz7e2Zj6Paq1U1ORPGnZB2czddhzmepRdeHB+cyyk=; b=r3L8rR0gYj99ONaVJdR9VSY+x43n+gHzwpmDflZ4MHFADbX8FY6f6pnV7mmAqWx6bC EvlJ+2CinL8n6/vX4YSw8p5KgG4rXuEqn59L+ZlCu6X8RbCx/sbU4t6CaandJBtP5jM2 MV7CyPxPrkyvfnUSqDsmraPLkeygPVj7Cek3lqVWmxymnz0xMO1xVuPiI0lWVkDHuMW5 HEtAT1KIvYB79vkwqEwlCTHtXpYqxGxHc7+ErALIHngEVGtSoOTFXjCF5DBywkTN0llt BnT2/0eE67HEiQOyXILOtZRG4HnOVHCOKkJGxLenL6xGUkYFqYG6DNAvU7DCP5u0ioIb uiaA== X-Forwarded-Encrypted: i=1; AKwUvBx8D7VvqpfPah5eJu/cZfxGo+EUxsXc2jS1Zn3MGpV861g3Kw4Tojk/7j6v3f2x8gnmVLjw3kHRfMGEDCs=@vger.kernel.org X-Gm-Message-State: AFuF++lKxUqDiWsHh5hSOE5XxqAEJjL24VJYOfAcYjbaZ3XQjVJ9e+X9 45OcJvJV7GFXRXJqoS4j8ZiH5aj80cGQ4tD+DwqQF7d1diRx6L+RqJFe X-Gm-Gg: AYBFou2qcVEB+muyd9S3vP5o/ckS6Qfu1CEipGksjIlImkxbD7g5xUOHgwtCfPlwV0k uxv3UHVUD5srByTcDXSKywNI792o62rbJGd7g2dfZePQF01nYD5Iqe+whyv1VfZWdDZM7kS/b7a zxmqKO0qPu7za8+G3F8q32qgW8NO/wAx7NTV1UlPznF4pvpav6sN8DTWFS05kC1g8OwGS2pWZNZ 9+mWjCQtdgioHRxjJzM+8FLm3e+G1wLLZX2CKWWydhrvfUBki7Mq8bc+XRPqhFLObvad387HuUK vYNdp145rG9l1Dqr6iCVYV2cN/3EGLQelZiPUc+DwWiTPCAEl2Ht82SmOpPK/hEDaVw8NlzxGH7 gw4enFm7ctS8pIsFeDwPRm3yNhnN0dkc1+AKWsbn2f06GPp7RDjwCrZD4zbG9odcdCS7+j98dXv eo/8lLVuYcH4yWocgW+ZZHfiX1R91RTCcZ9s0XqDgp6v3QDOtRJrlQOadhYhE18p3DdZg= X-Received: by 2002:a05:6830:81cf:b0:7dc:df37:844b with SMTP id 46e09a7af769-803fadd1e9dmr1084870a34.4.1789083979942; Thu, 10 Sep 2026 16:46:19 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:1::]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-803f5adf6absm926604a34.6.2026.09.10.16.46.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 16:46:19 -0700 (PDT) From: Daniel Zahka Date: Thu, 10 Sep 2026 16:46:04 -0700 Subject: [PATCH net 1/2] net: psp: avoid conflicts with skb->decrypted and sk_validate_xmit_skb() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260910-psp-ktls-fix-v1-1-e3f30aaeca4e@gmail.com> References: <20260910-psp-ktls-fix-v1-0-e3f30aaeca4e@gmail.com> In-Reply-To: <20260910-psp-ktls-fix-v1-0-e3f30aaeca4e@gmail.com> To: Eric Dumazet , Neal Cardwell , Kuniyuki Iwashima , "David S. Miller" , Jakub Kicinski , Paolo Abeni , Simon Horman , Willem de Bruijn , Andrew Lunn , Shuah Khan Cc: Willem de Bruijn , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org X-Mailer: b4 0.13.0 PSP conflicts with TLS ULP in its usage of both skb->decrypted and sk->sk_validate_xmit_skb(). Offloaded TLS conflicts on both sides in both Tx and Rx. SW TLS could mistake skb->decrypted in the Rx path set by a PSP device as being a decrypted TLS record. Prevent PSP from being used with other socket features that use skb->decrypted or sk->sk_validate_xmit_skb(). For now, we include all TCP ULPs in the sk_has_decrypt_user() check, even though TLS is the only one that conflicts with PSP via the decrypted bit. This is intentional because PSP was not designed to be used with ULPs. It is best to close off surface area that may make bugs reachable, until someone wishes to design and test an actual user of PSP with ULPs. Fixes: 6b46ca260e22 ("net: psp: add socket security association code") Signed-off-by: Daniel Zahka --- include/net/sock.h | 11 +++++++++++ net/core/sock.c | 7 +++++++ net/ipv4/tcp_ulp.c | 4 ++++ net/psp/psp_sock.c | 4 ++++ 4 files changed, 26 insertions(+) diff --git a/include/net/sock.h b/include/net/sock.h index 51185222aac2..ba5e5092f192 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2312,6 +2312,17 @@ static inline void sk_gso_disable(struct sock *sk) sk->sk_route_caps &=3D ~NETIF_F_GSO_MASK; } =20 +static inline bool sk_has_validate_xmit_skb(const struct sock *sk) +{ +#ifdef CONFIG_SOCK_VALIDATE_XMIT + return !!sk->sk_validate_xmit_skb; +#else + return false; +#endif +} + +bool sk_has_decrypt_user(const struct sock *sk); + static inline int skb_do_copy_data_nocache(struct sock *sk, struct sk_buff= *skb, struct iov_iter *from, char *to, int copy, int offset) diff --git a/net/core/sock.c b/net/core/sock.c index fa60b7494c58..9489d9c47949 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -142,6 +142,7 @@ =20 #include =20 +#include #include #include #include @@ -2670,6 +2671,12 @@ void sk_setup_caps(struct sock *sk, struct dst_entry= *dst) } EXPORT_SYMBOL_GPL(sk_setup_caps); =20 +bool sk_has_decrypt_user(const struct sock *sk) +{ + return psp_sk_assoc(sk) || + (sk_is_inet(sk) && inet_csk_has_ulp(sk)); /* for tls */ +} + /* * Simple resource managers for sockets. */ diff --git a/net/ipv4/tcp_ulp.c b/net/ipv4/tcp_ulp.c index 2aa442128630..f3e0c9d379bb 100644 --- a/net/ipv4/tcp_ulp.c +++ b/net/ipv4/tcp_ulp.c @@ -136,6 +136,10 @@ static int __tcp_set_ulp(struct sock *sk, const struct= tcp_ulp_ops *ulp_ops) if (icsk->icsk_ulp_ops) goto out_err; =20 + err =3D -EINVAL; + if (sk_has_decrypt_user(sk) || sk_has_validate_xmit_skb(sk)) + goto out_err; + if (sk->sk_socket) clear_bit(SOCK_SUPPORT_ZC, &sk->sk_socket->flags); =20 diff --git a/net/psp/psp_sock.c b/net/psp/psp_sock.c index 1a2a6b7516b0..509035617894 100644 --- a/net/psp/psp_sock.c +++ b/net/psp/psp_sock.c @@ -143,6 +143,10 @@ int psp_sock_assoc_set_rx(struct sock *sk, struct psp_= assoc *pas, NL_SET_ERR_MSG(extack, "Socket already has PSP state"); err =3D -EBUSY; goto exit_unlock; + } else if (sk_has_decrypt_user(sk) || sk_has_validate_xmit_skb(sk)) { + NL_SET_ERR_MSG(extack, "Socket has incompatible state"); + err =3D -EINVAL; + goto exit_unlock; } =20 refcount_inc(&pas->refcnt); --=20 2.52.0 From nobody Fri Sep 25 15:13:46 2026 Received: from mail-oi2-f13.google.com (mail-oi2-f13.google.com [74.125.231.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE85A39E9CB for ; Thu, 10 Sep 2026 23:46:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.231.205 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789083987; cv=none; b=XDChqWlSX710+EkbK8/Q2//1AZt901V80vWQaKr8ZgBuEbbQKMsc6+AGekyLDLbGvo7dT4C+lkAVGyTIKuY4w5pVZ2Hf/BQATdD9SG/V1N8GWysofZbzlpBqwCWMoqREqLIcHd1M878YelA0PFe6p9EFCBnPk1uHxyhohMkgqUQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789083987; c=relaxed/simple; bh=i5SSJclfpTZsD3tbZQrq1a93Y6jfPDeXDX017S0hopk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=grebmCyahXh8iohfoBrmjw+V+YKO+MDDdmTjOCfpU8FP3uziUpzmQ84klCDQRtRYgh47J0EppEkr27khPs4l0QWrR/3y9J303ersnt8Oaek36m4NVYpXWmjuyb3dQfBB/S7EAiG9AAhF7UcgkXeYKjGubnG5UrrI+U+RcNYMqRw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=T7ivxdE4; arc=none smtp.client-ip=74.125.231.205 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="T7ivxdE4" Received: by mail-oi2-f13.google.com with SMTP id 5614622812f47-4bf948737e1so318595b6e.2 for ; Thu, 10 Sep 2026 16:46:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789083984; x=1789688784; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6n6jlSmBF1kKwhxMNpXMOGrKa/toteP0cdIVsSP+HbE=; b=T7ivxdE4Fif996iORt5oA7e3pLkxwRGj/3nP3hJCO0A9UO23rObl1IjQXF02XW7G4M lqlc864YT5wrsuIARDbQdxrB897JjqjUFaTobHCgh8rvtUjKqMt41Wxt5hQJi8M1R0sE fnZcfnBs2fNQHVZxE2/gujk78ISoUQGXWPJn2O5SvrZBIcYhA8MjMths9Nzjlz8t/0Jn W0emt2tKdBLL5pYBV4gRrmZ2XYPR4sN8Kb5TJ98JscmmGl8pNCPJcvHsxmb6g1M4ea/U +QCkGk2ZbObVKbmjgKStRN1UgkDktvQt1HuOntcnWpdrHKAR2cosmWuhvOWbpDdxUPJV UZ9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789083984; x=1789688784; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6n6jlSmBF1kKwhxMNpXMOGrKa/toteP0cdIVsSP+HbE=; b=b2fUBcrPTK5YzWgD6kkp7xWi7N+WgyoeoI2EEllrc5VBEZTYCburjR8fitsHoaNfHW qi0ufhVJmmF3+qbaTV+xXswufQUPl6C5W15MhdEBpXcQ+o8aGnYW9nQfel+xiSPdxnab 41nue7ydSQvJawqhClJXAtYXyjrM2Ot5UTTMiwRq6zPgKCIGyEWLS57P3VYLBVfkiwNR xKQkFjlQtk7CnDmJVR2EL7aZd3I8W+1HG9rSsQLN8vaKdDxtIgKmQ2ko8oXLBzqyC4n6 j2oiBLE7vbcRzx6R7TGLmVSbmV4Y5uh5orhIEmJC9SIefARlXEmuxAfI5EGDcP8EwqDY OcQA== X-Forwarded-Encrypted: i=1; AKwUvBwW0ouqzd0cDH9Xa/IzJJJnmwUfHH9d8OTEwUmNSq23cFkm3uKtQ2pwOzui+/X4b6IQnh4m7krwQdYpwFc=@vger.kernel.org X-Gm-Message-State: AFuF++mDLHxnVVa0YZNLuj2iBYnmfLAzrTJIVSBIa5BtDc7V1w+jvqH7 46sX6nSlH2OrPAsdE2o6mQWNAxvJF3YjRctdiW+X2nuLvmLDwCXA7ERJ X-Gm-Gg: AYBFou3fbBOjYubVNR+Ioy2tUmlCDlsBU6N+y4la6LaWMz79FwOBae+5s0aqL1VhQ4r kyT1gLPgqErtmI6nMt4G8z0eNAR3v0r5eqvUfw/87VDPY2IpgOqvUFM2MwViwfQ7cnf4ei+L5Op Rgh461jPhnTZDeDVAcaXcg9xnAQxVi720IzS4bU2I67qz3pw9Ko2Iz1sAZ5n8aGJIKJg6RCNefQ e1o/44UN6F9b98BjhUuvf6+Q8KrDhF1Fg7MiqCBj2nb+6QYfFDFbkOhndbUhaHeZdVTTO5SmG7b 52zVcMZy27GzDvbbD3UimqR+lwZEjPKWxIYO7W45+Sg+oBs4mR3CINhpGg7DE2NrbtviYkPtXTN NKuWpLa4oDczlHyAbh8+m9d+4aBMU0g6pkixnhKazDtyKPzLGpYxqaYz0l7eSsnD/RlQEnxyERN EGS4ww79VgjTgx1980vxji6pDIyAxpjgcJSWsihboDsHYu+Ac0cn6FZszojWVr10pMgarQ X-Received: by 2002:a05:6808:30aa:b0:495:eb86:6e8f with SMTP id 5614622812f47-4c31bcf3a50mr2081426b6e.14.1789083983151; Thu, 10 Sep 2026 16:46:23 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:72::]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4c331bc9342sm698094b6e.12.2026.09.10.16.46.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 16:46:22 -0700 (PDT) From: Daniel Zahka Date: Thu, 10 Sep 2026 16:46:05 -0700 Subject: [PATCH net 2/2] selftests: drv-net: psp: test PSP and TCP ULP mutual exclusion Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260910-psp-ktls-fix-v1-2-e3f30aaeca4e@gmail.com> References: <20260910-psp-ktls-fix-v1-0-e3f30aaeca4e@gmail.com> In-Reply-To: <20260910-psp-ktls-fix-v1-0-e3f30aaeca4e@gmail.com> To: Eric Dumazet , Neal Cardwell , Kuniyuki Iwashima , "David S. Miller" , Jakub Kicinski , Paolo Abeni , Simon Horman , Willem de Bruijn , Andrew Lunn , Shuah Khan Cc: Willem de Bruijn , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org X-Mailer: b4 0.13.0 Test both setting PSP after TLS ULP, and TLS ULP after PSP. Add CONFIG_TLS=3Dy to the drivers/net/config. Signed-off-by: Daniel Zahka --- tools/testing/selftests/drivers/net/config | 1 + tools/testing/selftests/drivers/net/psp.py | 46 ++++++++++++++++++++++++++= ++++ 2 files changed, 47 insertions(+) diff --git a/tools/testing/selftests/drivers/net/config b/tools/testing/sel= ftests/drivers/net/config index b6989c7d3d9d..4838adf27fa1 100644 --- a/tools/testing/selftests/drivers/net/config +++ b/tools/testing/selftests/drivers/net/config @@ -21,5 +21,6 @@ CONFIG_NET_SCH_INGRESS=3Dy CONFIG_NET_SCH_PRIO=3Dm CONFIG_PPP=3Dy CONFIG_PPPOE=3Dy +CONFIG_TLS=3Dy CONFIG_VLAN_8021Q=3Dm CONFIG_XDP_SOCKETS=3Dy diff --git a/tools/testing/selftests/drivers/net/psp.py b/tools/testing/sel= ftests/drivers/net/psp.py index 315648a770d0..12b27f2a3fa1 100755 --- a/tools/testing/selftests/drivers/net/psp.py +++ b/tools/testing/selftests/drivers/net/psp.py @@ -23,6 +23,8 @@ from lib.py import NetNSEnter from lib.py import bkg, rand_port, wait_port_listen from lib.py import ip =20 +TCP_ULP =3D 31 + =20 def _get_outq(s): one =3D b'\0' * 4 @@ -333,6 +335,50 @@ def assoc_version_mismatch(cfg): ksft_eq(the_exception.nl_msg.error, -errno.EINVAL) =20 =20 +def _require_tls_ulp(): + with socket.create_server(("localhost", 0)) as srv: + with socket.create_connection(srv.getsockname()) as s: + try: + s.setsockopt(socket.SOL_TCP, TCP_ULP, b"tls") + except OSError as exc: + raise KsftSkipEx("kTLS not available") from exc + + +def assoc_psp_ulp_exclusive(cfg): + """ Test that a TCP ULP cannot be attached to a PSP socket """ + _init_psp_dev(cfg) + _require_tls_ulp() + + with _make_clr_conn(cfg) as s: + try: + cfg.pspnl.rx_assoc({"version": 0, + "dev-id": cfg.psp_dev_id, + "sock-fd": s.fileno()}) + with ksft_raises(OSError) as cm: + s.setsockopt(socket.SOL_TCP, TCP_ULP, b"tls") + ksft_eq(cm.exception.errno, errno.EINVAL) + finally: + _close_conn(cfg, s) + + +def assoc_ulp_psp_exclusive(cfg): + """ Test that a PSP assoc cannot be added to a socket with a TCP ULP "= "" + _init_psp_dev(cfg) + _require_tls_ulp() + + with _make_clr_conn(cfg) as s: + try: + s.setsockopt(socket.SOL_TCP, TCP_ULP, b"tls") + with ksft_raises(NlError) as cm: + cfg.pspnl.rx_assoc({"version": 0, + "dev-id": cfg.psp_dev_id, + "sock-fd": s.fileno()}) + ksft_eq(cm.exception.nl_msg.error, -errno.EINVAL) + ksft_eq(cm.exception.nl_msg.extack['bad-attr'], ".sock-fd") + finally: + _close_conn(cfg, s) + + def assoc_twice(cfg): """ Test reusing Tx assoc for two sockets """ _init_psp_dev(cfg) --=20 2.52.0