With support of delegated timestamps, nfsd can issue a setattr that sets the atime, but not the ctime. Ensure that when the ctime isn't set that "now" is set to the current coarse-grained time. Reported-by: Jan Kara <jack@xxxxxxx> Closes: https://lore.kernel.org/linux-fsdevel/20241009153022.5uyp6aku2kcfeexp@quack3/ Fixes: d8d11298e8a1 ("fs: handle delegated timestamps in setattr_copy_mgtime") Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- A fix for bug that Jan reported. Christian, it may be best to fold this into d8d11298e8a1. --- fs/attr.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/attr.c b/fs/attr.c index c614b954bda5244cc20ee82a98a8e68845f23bd7..9caf63d20d03e86c535e9c8c91d49c2a34d34b7a 100644 --- a/fs/attr.c +++ b/fs/attr.c @@ -298,6 +298,7 @@ static void setattr_copy_mgtime(struct inode *inode, const struct iattr *attr) } else { /* If ATTR_CTIME isn't set, then ATTR_MTIME shouldn't be either. */ WARN_ON_ONCE(ia_valid & ATTR_MTIME); + now = current_time(inode); } if (ia_valid & ATTR_ATIME_SET) --- base-commit: 109aff7a3b294d9dc0f49d33fc6746e8d27e46f6 change-id: 20241009-mgtime-f672852d67cc Best regards, -- Jeff Layton <jlayton@xxxxxxxxxx>