Blame patches.kernel.org/6.2.3-734-nfsd-zero-out-pointers-after-putting-nfsd_files.patch
|
Jiri Slaby |
ef7db2 |
From: Jeff Layton <jlayton@kernel.org>
|
|
Jiri Slaby |
ef7db2 |
Date: Tue, 17 Jan 2023 14:38:30 -0500
|
|
Jiri Slaby |
ef7db2 |
Subject: [PATCH] nfsd: zero out pointers after putting nfsd_files on COPY
|
|
Jiri Slaby |
ef7db2 |
setup error
|
|
Jiri Slaby |
ef7db2 |
References: bsc#1012628
|
|
Jiri Slaby |
ef7db2 |
Patch-mainline: 6.2.3
|
|
Jiri Slaby |
ef7db2 |
Git-commit: 1f0001d43d0c0ac2a19a34a914f6595ad97cbc1d
|
|
Jiri Slaby |
ef7db2 |
|
|
Jiri Slaby |
ef7db2 |
[ Upstream commit 1f0001d43d0c0ac2a19a34a914f6595ad97cbc1d ]
|
|
Jiri Slaby |
ef7db2 |
|
|
Jiri Slaby |
ef7db2 |
At first, I thought this might be a source of nfsd_file overputs, but
|
|
Jiri Slaby |
ef7db2 |
the current callers seem to avoid an extra put when nfsd4_verify_copy
|
|
Jiri Slaby |
ef7db2 |
returns an error.
|
|
Jiri Slaby |
ef7db2 |
|
|
Jiri Slaby |
ef7db2 |
Still, it's "bad form" to leave the pointers filled out when we don't
|
|
Jiri Slaby |
ef7db2 |
have a reference to them anymore, and that might lead to bugs later.
|
|
Jiri Slaby |
ef7db2 |
Zero them out as a defensive coding measure.
|
|
Jiri Slaby |
ef7db2 |
|
|
Jiri Slaby |
ef7db2 |
Signed-off-by: Jeff Layton <jlayton@kernel.org>
|
|
Jiri Slaby |
ef7db2 |
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
|
|
Jiri Slaby |
ef7db2 |
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
|
Jiri Slaby |
ef7db2 |
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
|
Jiri Slaby |
ef7db2 |
---
|
|
Jiri Slaby |
ef7db2 |
fs/nfsd/nfs4proc.c | 2 ++
|
|
Jiri Slaby |
ef7db2 |
1 file changed, 2 insertions(+)
|
|
Jiri Slaby |
ef7db2 |
|
|
Jiri Slaby |
ef7db2 |
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
|
|
Jiri Slaby |
ef7db2 |
index 92674077..e02ff76f 100644
|
|
Jiri Slaby |
ef7db2 |
--- a/fs/nfsd/nfs4proc.c
|
|
Jiri Slaby |
ef7db2 |
+++ b/fs/nfsd/nfs4proc.c
|
|
Jiri Slaby |
ef7db2 |
@@ -1214,8 +1214,10 @@ nfsd4_verify_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
Jiri Slaby |
ef7db2 |
return status;
|
|
Jiri Slaby |
ef7db2 |
out_put_dst:
|
|
Jiri Slaby |
ef7db2 |
nfsd_file_put(*dst);
|
|
Jiri Slaby |
ef7db2 |
+ *dst = NULL;
|
|
Jiri Slaby |
ef7db2 |
out_put_src:
|
|
Jiri Slaby |
ef7db2 |
nfsd_file_put(*src);
|
|
Jiri Slaby |
ef7db2 |
+ *src = NULL;
|
|
Jiri Slaby |
ef7db2 |
goto out;
|
|
Jiri Slaby |
ef7db2 |
}
|
|
Jiri Slaby |
ef7db2 |
|
|
Jiri Slaby |
ef7db2 |
--
|
|
Jiri Slaby |
ef7db2 |
2.35.3
|
|
Jiri Slaby |
ef7db2 |
|