From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f228.google.com (mail-pl1-f228.google.com [209.85.214.228]) (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 36BEF388363 for ; Tue, 7 Jul 2026 06:23:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.228 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783405428; cv=none; b=lShG6Ewc7sfnJBPM5Va8Htj6pZkpfFxbJpKtKYSfeZZ1/3fPI65Wxc4lMCa4uzpAaoXlh35Id/7dnNldBBXeH5Pgk/Qkx5b1P/4aZT9oMpOMOhlpj4b+eOBANB3VhcTOa+AZRCHXdsmaqJCxNBa5DUh0L1sSeXbHn+TcCY7SCSA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783405428; c=relaxed/simple; bh=jvZRHZ4j/77Db2kXTFTTdW7GCViS7D5Div1n8hqkoEI=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=BYE1ZDo2EJobSrNgfO4mXs/RFaDdllYpV3umvI1B+S/Bopzfe2l+xc6CvFVnEc7jZPbm6t/MguH3lBf+HJllu28aLVHdEYt+pJdXPp1D9wFakwH3lyrYGktRXvj1sWtf/0vy1M1GZH6I6AbxlmlNxCfksH6At8Z86KkeV3Y8d30= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=E5CgaCK/; arc=none smtp.client-ip=209.85.214.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="E5CgaCK/" Received: by mail-pl1-f228.google.com with SMTP id d9443c01a7336-2cacf197759so60810465ad.2 for ; Mon, 06 Jul 2026 23:23:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783405426; x=1784010226; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to:content-type; bh=M5rmW+g6FerM+zxe2E3NZHO62TO11qiXbHIYS1I5iXU=; b=bWmAiNdhITBrFP8NDCEsp53XgwhJthW1nc6lX99B55edhVWtSg6KU/8qOUCw8237oL tq0ojSjjAKDkJyDDpWeVhTLHs63gaeeGO7HKShst8XFQdwmqYa040T9cXx7nIgAoVXW2 gPQkYj9RkNRHYGkHHi/ZfGNBhptt+vLUp7nEo3jSNDQMvU6t7XpfmXanBPiqMZ6UqQ4r /1o6mLHfNVM+Lm05h3y13Vb/q7O3RgBMGWOCw4cTbdmWFKin3ksIVNqtSZFijISJYh2b A8ipONoroQDilSuakanm2+UplvlYmFGA/2vYgBW6tca26NnVl78vs7AARrAJtV/We++i V7rw== X-Forwarded-Encrypted: i=1; AHgh+Rq/pjOfhKQll+81C5hK/CY/gYg6Xxh3TW4KXcojPBORX1YQQGi2C10zQXn6XvN+tXX1XzaEYHRvZNwBFJs=@vger.kernel.org X-Gm-Message-State: AOJu0YyIheGuwu+gwZEv2PVsZQ7d/zcjWYBErXr61kp1TrJu3VtZ8Mui uGDka4SMpwbr/Xvxeu/+6CVGGwhXtT50R3v8eFwe1rQk963i5TuNXLkTc+dSq+kr5RjfJCJ18J+ qxULPcFfMoSYW2RT2Mm5WSrHFCn881t6JhANOfdjs77ImG7dNDc62C92BfKdLrfdvI946X6NpBW vY4EO96xrtbvhHig3y9eQWHNul+O3f8KOats+5bXgYoVwsvhno5WfvhVLaOW/JWpCpJv2daKqmf FjJFkEhTUAGMBsd8A== X-Gm-Gg: AfdE7ckIS5FjDcOp0qSnW2vakVDF0OoYLrbagJTpewzMatBO8N/uVRWlO4KBWo6QMh/ 5ZVYvJ+iks5pssexy0vBcs7FgSX+60B1d32HytV5jQlmxZkEHXv2kw9kqM2kEw4YBVqbQVYmILc hatskzGkTJx5588kfXYzn08shIInmA6d+/orL8M0/jSmtr65b01ygmTyWAWB+oG+kg53KOz5Cf1 KQRmSR0KnoEQBnYqDWhszeGsXFlPKbmDIDJQ92SL1Gi24uJh3uQ/D15DAAbvzHNK/ooRoKM0VxG xL1T+CRSHBcXe4wzRv4Vvc9g29YWC9gHxQ0cycKzcXPqstg62JDcNxUuBYF6Mrk3nHpZq2bBdw7 0/35DXwVC8ocSzS31vj7zaCKhkcCtUK6EuSv6GrBMgsHq6SlGB64LGJHWXLqHSS2qP2odB+JzlH vNUu8BP7i9TQvSkm9CTFjCbK3I0IJSr9zhxMbmU7xN18ts X-Received: by 2002:a17:903:1c2:b0:2ca:b8fd:1a8f with SMTP id d9443c01a7336-2ccbf184d59mr39592575ad.39.1783405426492; Mon, 06 Jul 2026 23:23:46 -0700 (PDT) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-11.dlp.protect.broadcom.com. [144.49.247.11]) by smtp-relay.gmail.com with ESMTPS id d9443c01a7336-2ccc9cdc6aasm1211575ad.44.2026.07.06.23.23.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 Jul 2026 23:23:46 -0700 (PDT) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-845df469a26so10298268b3a.3 for ; Mon, 06 Jul 2026 23:23:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1783405425; x=1784010225; darn=vger.kernel.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=M5rmW+g6FerM+zxe2E3NZHO62TO11qiXbHIYS1I5iXU=; b=E5CgaCK/qNhW3FY7JMLZUeKT0rBvfHUJZAazeliT0iRmZPWoTCcydXRyEwIqWdGh24 jq4zF38o2flOT3uipvzHJ35cwvXWm1RjhOMkGXXatrQVu27lqrqvob2dBPFfQ/VZS0H1 +TLjE13+PxTIla1j/53eGO7QXfb8HPNSh8Svo= X-Forwarded-Encrypted: i=1; AHgh+RqKBwBfiFdlDfP8lghkKJx8x7hIkZifaZtSz1eGhccwmj4XCJm/BaKw3oPy9uWXpbNEaJ2fPzWgsqqC7eI=@vger.kernel.org X-Received: by 2002:aa7:88cd:0:b0:845:c6c3:5e79 with SMTP id d2e1a72fcca58-84826dae10fmr3762060b3a.40.1783405424655; Mon, 06 Jul 2026 23:23:44 -0700 (PDT) X-Received: by 2002:aa7:88cd:0:b0:845:c6c3:5e79 with SMTP id d2e1a72fcca58-84826dae10fmr3762035b3a.40.1783405424196; Mon, 06 Jul 2026 23:23:44 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20260703112431.2860506-1-kiran.kella@broadcom.com> In-Reply-To: From: Kiran Kella Date: Tue, 7 Jul 2026 11:53:05 +0530 X-Gm-Features: AVVi8Cdu7posF_ERMGiTWWl1bGAabeWlUHgpg74RE2Pr9n-DkBAD09HUCJicyS8 Message-ID: Subject: Re: [PATCH net] psp: fix NULL genl_sock deref race with concurrent netns teardown To: Daniel Zahka Cc: kuba@kernel.org, willemdebruijn.kernel@gmail.com, davem@davemloft.net, edumazet@google.com, pabeni@redhat.com, horms@kernel.org, weibunny@fb.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, jayakrishnan.udayavarma@broadcom.com, ajit.khaparde@broadcom.com, akhilesh.samineni@broadcom.com, Vikas Gupta , Bhargava Marreddy X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000da34f30655ff6e5d" --000000000000da34f30655ff6e5d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jul 6, 2026 at 7:16=E2=80=AFPM Daniel Zahka wrote: > > > On 7/3/26 7:24 AM, Kiran Kella wrote: > > The race occurs between network namespace removal and PSP device > > unregistration. When a netns is deleted while a PSP device associated > > with that netns is concurrently being removed, psp_dev_unregister() > > > Thanks. I was able to repro myself by inserting a delay after the old: > > main_net =3D dev_net(psd->main_netdev); > > and then executing nsim_psp_rereg_write() in parallel with destroying > the netns that I placed a netdevsim dev into. > > Tested-by: Daniel Zahka > > Reviewed-by: Daniel Zahka Thanks Daniel for reviewing and validating the fix. > > > --- > > net/psp/psp_nl.c | 33 +++++++++++++++++++++------------ > > 1 file changed, 21 insertions(+), 12 deletions(-) > > + ntf =3D build_ntf(psd, net, ctx); > > + if (ntf) > > + genlmsg_multicast_netns(&psp_nl_family, net, ntf,= 0, > > + group, GFP_KERNEL); > > + put_net(net); > > } > > some optional nits if you wanted to respin: > > You could eliminate the extra struct net *net, by just doing something > like if (!maybe_get_net(assoc_net)) directly. > > You could get away with a single put_net(net); call site, if you reorder > the ops that could fail so that maybe_get_net(assoc_net) happens last > before the build_ntf(psd, net, ctx) > ACK. Will fix in v2. Thanks, Kiran > > xa_destroy(&sent_nets); > > --000000000000da34f30655ff6e5d Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 ksPFF8lRQaSHMJFFWI2usTUpS9gKxRAuJyHc0xlNKy4vK2ZEic8RWs34T6LcL98JR51RaKtE0Dw9 7F/uUf87z+/74aOyyxrTl58LlkxL/+1yMEHZhyn6z30LHQuA52TSp7uD3au8gu0YN+hKIsPBKVbs dzf/bW6eDpGSwgwRzqF2BcDBOUA9U2mB2cxinBxOxCVbYRy//Q46OuAx0pXw8trIkPDdp8kHAoWD 7JxJ70nrdMy8VRmC02NQp185/6szeMFYLA0CAwEAAaOCAdwwggHYMA4GA1UdDwEB/wQEAwIFoDAM BgNVHRMBAf8EAjAAMIGTBggrBgEFBQcBAQSBhjCBgzBGBggrBgEFBQcwAoY6aHR0cDovL3NlY3Vy ZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3NnY2NyNnNtaW1lY2EyMDIzLmNydDA5BggrBgEFBQcw AYYtaHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyNnNtaW1lY2EyMDIzMGUGA1UdIARe MFwwCQYHZ4EMAQUDAzALBgkrBgEEAaAyASgwQgYKKwYBBAGgMgoDAjA0MDIGCCsGAQUFBwIBFiZo dHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzBBBgNVHR8EOjA4MDagNKAyhjBo dHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2dzZ2NjcjZzbWltZWNhMjAyMy5jcmwwIwYDVR0RBBww GoEYa2lyYW4ua2VsbGFAYnJvYWRjb20uY29tMBMGA1UdJQQMMAoGCCsGAQUFBwMEMB8GA1UdIwQY MBaAFAApNp5ceroPry1QLdugI4UYsKCSMB0GA1UdDgQWBBS/iTArBeV9hFyyktvkwzGbaKne3zAN BgkqhkiG9w0BAQsFAAOCAgEAdavxLwcm6Kj3S7/bA/IO6B6MTHIndKyB630T3CTPeOeuHV7ZS4wr rDZbrSjERD36308lnaXSESlcu8LX2SKJ0KqNM3VQNTawSKS4wMXlyTzOBfaslsjtFiT4jQW9Py6u 6nf1EVoQ6YTCGJ+htyKqFgIljJIdBBOvXY+gECh/DC+VbLUVK9CgZLKkFJ5udhYvw1tOc3zOXGOd kwaK7AtwRSLgNt5RSAaikL6bvU1kUWgITNKKhBK5F3CNUbR0hD/i7yG6Afdh27V1T7FEdV07fBbu 3+AVnAdbZmHfnB2T8lHTaR9GbgkF6lG/a8I+eUG5NPrDEM+afXT7/+zOTjf799qoyhMdfgp90DEW 9ukfyqfUq37ctBG4TdnDlxtkwy9XYw0Avotf2lrYy+6MYjt3cZFF+AF/F6ANk+Gx9zH5gyeUlruJ +aqmP1U1lX/n2YEXAfiLJulbb3Jfi8lvyYzHXpHLIFtLfyVOzUXdGdj3dVxxFSPJ4uXmpk2SLExM W7+cvJ+PxSJyWK723U609whQmqbVRz5B49CjNt/exjWtBGGjCwLPMGNWbHbwtDVWcoZzE0KoL7EK VPB0t6uom5ElZ+qieZghO80tR/MW2eL8i+EiVMwq5GF1Ni3D6uypwZYqgdicI0YGj7JCgrIzr1kC xwtQkw5ij2CCUWXxadt/C9gxggJXMIICUwIBATBiMFIxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBH bG9iYWxTaWduIG52LXNhMSgwJgYDVQQDEx9HbG9iYWxTaWduIEdDQyBSNiBTTUlNRSBDQSAyMDIz AgxbhXTUwXZ3dIWSpigwDQYJYIZIAWUDBAIBBQCggccwLwYJKoZIhvcNAQkEMSIEIKRUNQzPhfLb c8DN87hJniU+wM52ConmgnKAlffpE2ttMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI hvcNAQkFMQ8XDTI2MDcwNzA2MjM0NVowXAYJKoZIhvcNAQkPMU8wTTALBglghkgBZQMEASowCwYJ YIZIAWUDBAEWMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzALBgkqhkiG9w0BAQcwCwYJYIZIAWUD BAIBMA0GCSqGSIb3DQEBAQUABIIBAFBtgDI+3gxTVupUIKBzvuDtVkHQVJs9zhhliWQfq2byP0dY x4BUGxME36b4mjlC4pdbb5Eb0C7F+vv/B9rwFP8zXWOq/zvK+Z+Suw5XT10astBjiH1oRw/Ek7Bo l7n1fJISr/rwzkCxZhIy693P1AMZ+HbE3JpO9JTRYKPE4WhVaOiWbP4NYpAYxnmGGCOnxdPNnNIQ /SEWBLcTyaYQFvxPLy63m2tUvi2tJ+Dkv+3erZhSQHLPWMQTgOpNdpcsyRbh9Vj2KejkFOJOOehm tMYRWGVJTqUzm30KdQ5K9ZKlFMhPm1FQc42Xg84zWstWW4gBh4WWAKCJGLYGWv0xEJ8= --000000000000da34f30655ff6e5d--