]> 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:33:54 +0000 (15:33 -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 6040de0923f8512213f71047f792cdfec2ca2c21..bc2bb92a624ab673a3ad0af079a58c68f50d8c9e 100644 (file)
@@ -982,10 +982,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