[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20231205071733.334474-1-gehao@kylinos.cn>
Date: Tue, 5 Dec 2023 15:17:33 +0800
From: Hao Ge <gehao@...inos.cn>
To: viro@...iv.linux.org.uk, brauner@...nel.org
Cc: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
gehao618@....com, Hao Ge <gehao@...inos.cn>
Subject: [PATCH] fs/namei: Don't update atime when some errors occur in get_link
Perhaps we have some errors occur(like security),then we don't update
atime,because we didn't actually access it
Signed-off-by: Hao Ge <gehao@...inos.cn>
---
fs/namei.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/fs/namei.c b/fs/namei.c
index 71c13b2990b4..033d36d5c1c5 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1779,15 +1779,6 @@ static const char *pick_link(struct nameidata *nd, struct path *link,
unlikely(link->mnt->mnt_flags & MNT_NOSYMFOLLOW))
return ERR_PTR(-ELOOP);
- if (!(nd->flags & LOOKUP_RCU)) {
- touch_atime(&last->link);
- cond_resched();
- } else if (atime_needs_update(&last->link, inode)) {
- if (!try_to_unlazy(nd))
- return ERR_PTR(-ECHILD);
- touch_atime(&last->link);
- }
-
error = security_inode_follow_link(link->dentry, inode,
nd->flags & LOOKUP_RCU);
if (unlikely(error))
@@ -1810,6 +1801,16 @@ static const char *pick_link(struct nameidata *nd, struct path *link,
if (IS_ERR(res))
return res;
}
+
+ if (!(nd->flags & LOOKUP_RCU)) {
+ touch_atime(&last->link);
+ cond_resched();
+ } else if (atime_needs_update(&last->link, inode)) {
+ if (!try_to_unlazy(nd))
+ return ERR_PTR(-ECHILD);
+ touch_atime(&last->link);
+ }
+
if (*res == '/') {
error = nd_jump_root(nd);
if (unlikely(error))
--
2.25.1
Powered by blists - more mailing lists