]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
NFSD: Fix crash in nfsd4_read_release()
authorChuck Lever <chuck.lever@oracle.com>
Tue, 30 Sep 2025 14:05:20 +0000 (10:05 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:36:36 +0000 (15:36 -0500)
commit abb1f08a2121dd270193746e43b2a9373db9ad84 upstream.

When tracing is enabled, the trace_nfsd_read_done trace point
crashes during the pynfs read.testNoFh test.

Fixes: 15a8b55dbb1b ("nfsd: call op_release, even when op_func returns an error")
Cc: stable@vger.kernel.org
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/nfsd/nfs4proc.c

index 7ae8e885d7530cc2cb60b37ccd59b2e606659639..69c86e0a0893b86e5f2a6d0bdefeed9bc034704c 100644 (file)
@@ -988,10 +988,11 @@ nfsd4_read(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 static void
 nfsd4_read_release(union nfsd4_op_u *u)
 {
-       if (u->read.rd_nf)
+       if (u->read.rd_nf) {
+               trace_nfsd_read_done(u->read.rd_rqstp, u->read.rd_fhp,
+                                    u->read.rd_offset, u->read.rd_length);
                nfsd_file_put(u->read.rd_nf);
-       trace_nfsd_read_done(u->read.rd_rqstp, u->read.rd_fhp,
-                            u->read.rd_offset, u->read.rd_length);
+       }
 }
 
 static __be32