From nobody Mon Jun 15 06:35:45 2026 Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) (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 C9CFB2D7812 for ; Sun, 19 Apr 2026 16:31:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776616308; cv=none; b=a7Kkb3Gtdz38Ic8CP04D2AEZdwuUR/9Jv9o8hrfQzujTRNWzVMJ0+FAX6kZCQhHWT2fL6YiaMhHRgatSN8QxUI3F7hk9XaNedpF/YWMBsbXnYrn7KZrke89JjazI7fjpiwjvYbqhdSdsXuP8ZtT2MyQn6KzKkjvXBLtxQKv8Rec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776616308; c=relaxed/simple; bh=NL7/rpUFZgcXfFXM3mLGmeyhHSstJj05hAh1BkI2xWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kPQVbnkDsIBgz7RAmJw5opNfh0tDf+/v5aiD7w4Di2JqWWsCLs5X2L6niIbf9zZHmm3oDD9+TShBxVfxqJQVngQYDxpti5hAYQe+NT2MyAjMnhkzB0YDT/fi/B4UmTAldAU/8zvjCLHukRGRQqR94+3p+8nWtw7ITqfy6AYOXs0= 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=Hvjc1NdP; arc=none smtp.client-ip=209.85.215.174 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="Hvjc1NdP" Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-c7961d7bc09so746889a12.1 for ; Sun, 19 Apr 2026 09:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776616306; x=1777221106; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IYB76730a2VnObmOSGsgG6RhIK7mfAkEXznIiOrB1/E=; b=Hvjc1NdPSc67F7HAWxe6IAHl/aUX6hamQdsN0Chy7FHLxQ6xRSJhF1C9k4q1ecFE74 5Gl2Xm4p9ga1v3M1Yb9NMQcnQz0ISduMB4fNvOLE9gWLfThQk74/lPfR1QoT4mdejA+H Jiyr+7W9Gzfxld37MyOnEVrSiU7wzKPlVVfpUfhyrYyv2/oXvs/NKpBp7dfEaY9UcGnj I84UAVPlupC5n9BGH8XFr1BGnu7d+S1gVTNuN3kJa0ZlFcBHqw5UbYjVFouPxeOU03id MRat5S+ZvTtswNX1mw720qsAq+6cvh8A10qFnTs67O8/oOtYRMgE11FaBcw2EmhVjNkQ C6Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776616306; x=1777221106; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IYB76730a2VnObmOSGsgG6RhIK7mfAkEXznIiOrB1/E=; b=WixupgI1yyI7XPmOQZ6PaWfhh58AZY+M23UG9sdi200OOac/L9CiuKXKe+bBl3vht2 v+c86S41TJLkS58S/tr0kgQDMlTAVX7En6BTr8+9NmfhHVGLBeUy6yVr76TJxa9S6yKJ VV2kDTlkdCQmFhgR86M98RL8XKuOV7yiCxnXefm1jIQqJcdu0+Unm2JYzEuYA5hA+nky bXOjITqzpuB5d+gnxQBSZVF9fknQg+l5Lfoda7TYbyYbq6wGJFPI5/k9DMoOBaSbLOl+ Rwcp5sr0WD1vabshrJtyGjdvmgpTzPTcW24YUp++10+Rw6kloVOAqROnUfTaGtvmyLku xwYQ== X-Forwarded-Encrypted: i=1; AFNElJ/d9a4YTXOGmTSsWxOY9Kvqp2Ty//iDOcE3ASyKYUZZlWnaCT8qpOr30z8MNzvEsOqthzRSik1Qh8a4aOg=@vger.kernel.org X-Gm-Message-State: AOJu0YzdCZgeJJRjbUhZuMC+pefy3IsHtO+Vw6CCAbtZ6v52aJVqvpNQ uSw4eGWyAOHl/KpgCy9C1RR0lVum1hAiPB+dXIH/6OdvNE59Rbc/NRae X-Gm-Gg: AeBDieuZzXdzfaGdmLDX9iOj/5qAVzEcEUAy3SqatYFdIszEAPJ7M7QEjTxjlBcTXyJ k2QzgULrBlChYyHxxZ5hbM0ev0ANbklgNyEv5GNScTQud251tpzdg9NO0eRAU8T5SQ8OWQUE8kB KawFkXbKu4wjjveC+CtFf+NCl+QXN+CZ7wQgqIDJDqd2QXvS+as6MZs4y2biGS59HtWUW3GVG3i l6x5WvYl9TenfaaU7nKQHopwhcNF/nKd9heQPeqnXA9o4LQhalSGpz3vISTKiB2SayPs4ip2+tS xFf4VipdGZYZ+Yq6/iYvOno/unhpJNpoRfi0oJ0+GncGyrpBJ+w9qEa041ODJW79labvl+PPmqd caWJNOvbx9z1A+37U372Kx2zTtz638yJ8eKr2VwxwW0HbAc5+xheLStWZCHS9RYOq2gWDd/ujiR 7Zclxh8fy5nkNwWf7Bbqm6kaTHOilRdU9I3X0L4dRB4fGHmnnezpn+DmmSD93iYWl2y8D5urHgO SDc6ZRrB8jhoOnl+6n+ZAk8/fOFvA== X-Received: by 2002:a17:90b:3c8d:b0:35a:18b1:c245 with SMTP id 98e67ed59e1d1-361403bd142mr11178841a91.3.1776616306029; Sun, 19 Apr 2026 09:31:46 -0700 (PDT) Received: from localhost.localdomain (1-160-233-238.dynamic-ip.hinet.net. [1.160.233.238]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-361417748aesm7814196a91.0.2026.04.19.09.31.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Apr 2026 09:31:45 -0700 (PDT) From: Sean Chang To: Benjamin Coddington Cc: Jeff Layton , trondmy@kernel.org, anna@kernel.org, linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, Sean Chang , Benjamin Coddington Subject: [PATCH v3 1/2] NFS: remove redundant __private attribute from nfs_page_class Date: Mon, 20 Apr 2026 00:31:37 +0800 Message-ID: <20260419163138.26963-2-seanwascoding@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260419163138.26963-1-seanwascoding@gmail.com> References: <20260419163138.26963-1-seanwascoding@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The nfs_page_class tracepoint uses a pointer for the 'req' field marked with the __private attribute. This causes Sparse to complain about dereferencing a private pointer within the trace ring buffer context, specifically during the TP_fast_assign() operation. This fixes a Sparse warning introduced in commit b6ef079fd984 ("nfs: more in-depth tracing of writepage events") by removing the redundant __private attribute from the 'req' field. Reviewed-by: Benjamin Coddington Signed-off-by: Sean Chang --- fs/nfs/nfstrace.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h index 9f9ce4a565ea..ff467959f733 100644 --- a/fs/nfs/nfstrace.h +++ b/fs/nfs/nfstrace.h @@ -1496,7 +1496,7 @@ DECLARE_EVENT_CLASS(nfs_page_class, __field(dev_t, dev) __field(u32, fhandle) __field(u64, fileid) - __field(const struct nfs_page *__private, req) + __field(const struct nfs_page *, req) __field(loff_t, offset) __field(unsigned int, count) __field(unsigned long, flags) --=20 2.43.0 From nobody Mon Jun 15 06:35:45 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 374402D9780 for ; Sun, 19 Apr 2026 16:31:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776616311; cv=none; b=VbObpFvIHURYhW5quw7LgCwih1tiQcntP/0992Rw5Edi9mXn4WiKpNdfLJXa/ByGJNY0HII7iPU1OGSrHkAy9ABeGHF92jxLsGK7bZmVBnjBva9QEygcLZpLagB+TbrAQnx7mfuwGqt7k2rEgKY55nzUOvs+xADfmPF5MFG+LX0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776616311; c=relaxed/simple; bh=ff8TxayYcJM1Xb+UydnUDsukyJ/CSZYuBMqv05UKuK0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=raZKXy8PVfV+OBQ1uYX/y0tXFMSx4JN04myOJqJsnIRNJY6vYR8CVswpUZUk7bQjRHHpv9qUXylUEnYAT8TYMkIeHiHBb0rXVqqWRukXiMo4KPBs8GWouR5S36Xibw7B2DzSCNsk73gtNTt9TFvU+fPvozVB/KFHon5rKlvdyL4= 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=KeqJ+m/0; arc=none smtp.client-ip=209.85.216.46 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="KeqJ+m/0" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-36146ae9dd4so1499004a91.3 for ; Sun, 19 Apr 2026 09:31:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776616308; x=1777221108; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uG+XFyafSRmvtoGWdsZ9aUvZEWjPbX53j6Q6FbiLCsc=; b=KeqJ+m/0HPbb73W3Yzk3i8buTW8tF2D+Zy2qM99GHjF1GDp/AgZpWtt5nTywexnE30 oTLR6pGbNWBfGFV3QkUGyMp4x3+4fuOEK9OErEDMRFyxrZg5Vs/KMX6hKNR3h/yMQ+6W 0j5HZk+p5t1SyipMGDnO741pM9rCGYn5eh/yFx+hINq80Pz5ERTFfBjTj+G3HP4rjMAJ Iy1gQAJo7BWCtoTK5wG1RFi+wEwyI1yXagk+jJP9wQs6hVw4WsE4YHMmAzDPbjZLOErH eGKPW1dV/46qRmGKK6UtRk63IiArbKjiuOX81oAVAWyQvZms2u/JAaXk5hEwERWPMcB6 KlFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776616308; x=1777221108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=uG+XFyafSRmvtoGWdsZ9aUvZEWjPbX53j6Q6FbiLCsc=; b=TxivqiPQx3sAkHkATqMUngcX1uQalcN02CKjexodL5++Z3PRtJT3Kp6YoQ46iPfVMk yygFaABzaD3uVRcXkrF9C0DrssQO6JZ72EUdxOOWIHLgL1v9IWy9ZqoEX4fA00HrLre9 6y29+BNR0+QXCCtNQmdEAwAubAAjxzyav3KTuXmG1eKAiGGM4u1YX5INVjytoxfTkapj vbo6R/x+xuEmFpNm31wMXjI6juNnD3bx3lo/16CAhsnkgYfx+oaWIRHWIl5ibnOXMxRl pHsPid7GJ34AJTdFzimxBP/yvUbjeM0jRLQQ7dfZTYIpahDS/DdQ/a0vOQngEoYG8gDu d3pg== X-Forwarded-Encrypted: i=1; AFNElJ+vciU/MweTOiBHi2/ubc9nw0C+XyCO/LHqUxx8xkLFuY6Z6KuS1J5Ii4YoR67x50pwL4UjRVXpSiFR6fA=@vger.kernel.org X-Gm-Message-State: AOJu0YxqTnj0dIrnRZcBHddDZbWAgd5fLa9YUUAkwgG+8Br5JnLBXOR9 iFxV0XnxOYhub0w36NsqFh/RhRCaQbk6DNIRJRBtcEe5kJRuoju7SgMBT/rgqw== X-Gm-Gg: AeBDievA9gGFG0peubFl/vUtjjfhA1pAIKQzhC5uFaDEmzdUYGGJ36CoZ6bsu95isET 7Pmdf9nCVNIj4PKde0mAb4lPZ0mZpdI1ubLvW+1ko6c3YAzdjbkfD2N8uOUhifMcrnZoTU7SGve HjrvOx790MMnhAv7RNsPHMOaoOtKXMJLQkIMSnniyKAeVWY4W0M7X4NZzhTnc0xgNq2PNnMI/R8 0BqQJh2rb4FfXXbP3VZU8RwfY79H6JI2hchwGUHNHeLovPwmyNXGRIx0uwMHEq5GJ5SHQLre+QX iDlqsKlEehEy133mqia4qE2O+Hcyg2DAH1RwG6rfQ6odMI0mPvL3oEmGTHWx/Ne42TZvjtGYJXY 3A6rMFRkbjLPZgl06Q8fG4ZpO//F8pzg934Q8Nvl/6BKxT739yttNmHcWBmGuhPXhGfosc4d4LI idqm4sI3UcKuMExplCnhq+z9Gr5u+2jiuSDarnlZaQqNcJB9HCFwf0EoFIkBK8qZMbd0LgaNi6/ 6YbmVxqNzgflCTA8BkeYQeTuqDY9Q== X-Received: by 2002:a17:90a:d09:b0:361:45df:f5 with SMTP id 98e67ed59e1d1-36145df04afmr6199178a91.16.1776616307905; Sun, 19 Apr 2026 09:31:47 -0700 (PDT) Received: from localhost.localdomain (1-160-233-238.dynamic-ip.hinet.net. [1.160.233.238]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-361417748aesm7814196a91.0.2026.04.19.09.31.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Apr 2026 09:31:47 -0700 (PDT) From: Sean Chang To: Benjamin Coddington Cc: Jeff Layton , trondmy@kernel.org, anna@kernel.org, linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, Sean Chang Subject: [PATCH v3 2/2] NFS: Fix RCU dereference of cl_xprt in nfs_compare_super_address Date: Mon, 20 Apr 2026 00:31:38 +0800 Message-ID: <20260419163138.26963-3-seanwascoding@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260419163138.26963-1-seanwascoding@gmail.com> References: <20260419163138.26963-1-seanwascoding@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The cl_xprt pointer in struct rpc_clnt is marked as __rcu. Accessing it directly in nfs_compare_super_address() is unsafe and triggers Sparse warnings. Fix this by using rcu_dereference() within an RCU read-side critical section to retrieve the transport pointer. This addresses the sparse warning and ensures atomic access to the pointer, as the transport can be updated via transport switching even while the superblock remains active under sb_lock. Fixes: 7e3fcf61abde ("nfs: don't share mounts between network namespaces") Signed-off-by: Sean Chang Reviewed-by: Benjamin Coddington --- fs/nfs/super.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 7a318581f85b..4cd420b14ce3 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -1166,12 +1166,18 @@ static int nfs_set_super(struct super_block *s, str= uct fs_context *fc) static int nfs_compare_super_address(struct nfs_server *server1, struct nfs_server *server2) { + struct rpc_xprt *xprt1, *xprt2; struct sockaddr *sap1, *sap2; - struct rpc_xprt *xprt1 =3D server1->client->cl_xprt; - struct rpc_xprt *xprt2 =3D server2->client->cl_xprt; + + rcu_read_lock(); + + xprt1 =3D rcu_dereference(server1->client->cl_xprt); + xprt2 =3D rcu_dereference(server2->client->cl_xprt); =20 if (!net_eq(xprt1->xprt_net, xprt2->xprt_net)) - return 0; + goto out_unlock; + + rcu_read_unlock(); =20 sap1 =3D (struct sockaddr *)&server1->nfs_client->cl_addr; sap2 =3D (struct sockaddr *)&server2->nfs_client->cl_addr; @@ -1203,6 +1209,10 @@ static int nfs_compare_super_address(struct nfs_serv= er *server1, } =20 return 1; + +out_unlock: + rcu_read_unlock(); + return 0; } =20 static int nfs_compare_userns(const struct nfs_server *old, --=20 2.43.0