diff options
| author | Frank Hsiao 蕭法宣 <frankhsiao@qnap.com> | 2024-05-17 13:09:55 +0300 |
|---|---|---|
| committer | Tyler Hicks <code@tyhicks.com> | 2026-03-26 06:35:49 +0300 |
| commit | 7d9ebf33d85317f3f258c627de51701e2bf7642d (patch) | |
| tree | b5a0a472595ed1cfe31684f788e81f2c6e30f207 | |
| parent | c369299895a591d96745d6492d4888259b004a9e (diff) | |
| download | linux-7d9ebf33d85317f3f258c627de51701e2bf7642d.tar.xz | |
ecryptfs: Set s_time_gran to get correct time granularity
Set the eCryptfs superblock time granularity, using the lower
filesystem's s_time_gran value, to prevent unnecessary inode timestamp
truncation to the granularity of a full second.
The use of utimensat(2) to set a timestamp with nanosecond precision
would trigger this bug. That occurred when using the following utilities
to update timestamps of a file:
* cp -p: copy a file and preserve its atime and mtime
* touch -r: touch a file and use a reference file's timestamps
Closes: https://bugs.launchpad.net/ecryptfs/+bug/1890486
Signed-off-by: Frank Hsiao 蕭法宣 <frankhsiao@qnap.com>
[tyhicks: Partially rewrite the commit message]
Signed-off-by: Tyler Hicks <code@tyhicks.com>
| -rw-r--r-- | fs/ecryptfs/main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index f4ab387eb4ed..5f37cddb956f 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c @@ -531,6 +531,7 @@ static int ecryptfs_get_tree(struct fs_context *fc) s->s_blocksize = path.dentry->d_sb->s_blocksize; s->s_magic = ECRYPTFS_SUPER_MAGIC; s->s_stack_depth = path.dentry->d_sb->s_stack_depth + 1; + s->s_time_gran = path.dentry->d_sb->s_time_gran; rc = -EINVAL; if (s->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) { |
