diff mbox series

[SMB3,client] fix touch -h of symlink

Message ID CAH2r5mui-uk5XVnJMM2UQ40VJM5dyA=+YChGpDcLAapBTCk4kw@mail.gmail.com
State New
Headers show
Series [SMB3,client] fix touch -h of symlink | expand

Commit Message

Steve French Oct. 16, 2023, 5:26 p.m. UTC
For example:
          touch -h -t 02011200 testfile
    where testfile is a symlink would not change the timestamp, but
          touch -t 02011200 testfile
    does work to change the timestamp of the target

Looks like some symlink inode operations are missing for other fs as well

Comments

Matthew Wilcox Oct. 16, 2023, 5:30 p.m. UTC | #1
On Mon, Oct 16, 2023 at 12:26:23PM -0500, Steve French wrote:
> For example:
>           touch -h -t 02011200 testfile
>     where testfile is a symlink would not change the timestamp, but
>           touch -t 02011200 testfile
>     does work to change the timestamp of the target
> 
> Looks like some symlink inode operations are missing for other fs as well

Do we have an xfstests for this?
Steve French Oct. 16, 2023, 10:14 p.m. UTC | #2
On Mon, Oct 16, 2023 at 12:30 PM Matthew Wilcox <willy@infradead.org> wrote:
>
> On Mon, Oct 16, 2023 at 12:26:23PM -0500, Steve French wrote:
> > For example:
> >           touch -h -t 02011200 testfile
> >     where testfile is a symlink would not change the timestamp, but
> >           touch -t 02011200 testfile
> >     does work to change the timestamp of the target
> >
> > Looks like some symlink inode operations are missing for other fs as well
>
> Do we have an xfstests for this?

I was thinking the same thing - would be useful to add an xfstest for
this.  I actually noticed this old bug when someone reported an
unrelated problem (where "find . -type l" doesn't show the symlink but
"ls" and "stat" do) and the other unrelated symlink bug could be
useful to add to the same test

Are there other scenarios we could repro problems to an fs that
doesn't have a .getattr method (like cifs.ko, afs) or .permission
(like nfs and ext4)?
diff mbox series

Patch

From 6af5f835ba4987994aecbba0d7c060160c892856 Mon Sep 17 00:00:00 2001
From: Steve French <stfrench@microsoft.com>
Date: Mon, 16 Oct 2023 12:18:23 -0500
Subject: [PATCH] smb3: fix touch -h of symlink

For example:
      touch -h -t 02011200 testfile
where testfile is a symlink would not change the timestamp, but
      touch -t 02011200 testfile
does work to change the timestamp of the target

Reported-by: Micah Veilleux <micah.veilleux@iba-group.com>
Closes: https://bugzilla.samba.org/show_bug.cgi?id=14476
Cc: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
---
 fs/smb/client/cifsfs.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/smb/client/cifsfs.c b/fs/smb/client/cifsfs.c
index 22869cda1356..ea3a7a668b45 100644
--- a/fs/smb/client/cifsfs.c
+++ b/fs/smb/client/cifsfs.c
@@ -1191,6 +1191,7 @@  const char *cifs_get_link(struct dentry *dentry, struct inode *inode,
 
 const struct inode_operations cifs_symlink_inode_ops = {
 	.get_link = cifs_get_link,
+	.setattr = cifs_setattr,
 	.permission = cifs_permission,
 	.listxattr = cifs_listxattr,
 };
-- 
2.39.2