[SRU][Bionic][PATCH 4/4] (upstream) NFS: Fix up a sparse warning
Chengen Du
chengen.du at canonical.com
Sat Jan 21 14:47:13 UTC 2023
From: Trond Myklebust <trond.myklebust at hammerspace.com>
BugLink: https://bugs.launchpad.net/bugs/2003053
sparse is warning about an incorrect RCU dereference.
fs/nfs/dir.c:2965:56: warning: incorrect type in argument 1 (different address spaces)
fs/nfs/dir.c:2965:56: expected struct cred const *
fs/nfs/dir.c:2965:56: got struct cred const [noderef] __rcu *const cred
Signed-off-by: Trond Myklebust <trond.myklebust at hammerspace.com>
(cherry picked from commit 5e9a7b9c2ea18551759833146a181b14835bfe39)
Signed-off-by: Chengen Du <chengen.du at canonical.com>
---
fs/nfs/dir.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 9a39bb94d5d8..b98b19ca367c 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2298,12 +2298,14 @@ static u64 nfs_access_login_time(const struct task_struct *task,
const struct cred *cred)
{
const struct task_struct *parent;
+ const struct cred *pcred;
u64 ret;
rcu_read_lock();
for (;;) {
parent = rcu_dereference(task->real_parent);
- if (parent == task || cred_fscmp(parent->cred, cred) != 0)
+ pcred = rcu_dereference(parent->cred);
+ if (parent == task || cred_fscmp(pcred, cred) != 0)
break;
task = parent;
}
--
2.17.1
More information about the kernel-team
mailing list