2021-08-24 0:13 GMT+09:00, Christian Brauner <brauner@xxxxxxxxxx>: > From: Christian Brauner <christian.brauner@xxxxxxxxxx> > > Permission checking and copying over ownership information is the task > of the underlying filesystem not ksmbd. The order is also wrong here. > This modifies the inode before notify_change(). If notify_change() fails > this will have changed ownership nonetheless. All of this is unnecessary > though since the underlying filesystem's ->setattr handler will do all > this (if required) by itself. > > Cc: Steve French <stfrench@xxxxxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> > Cc: Namjae Jeon <namjae.jeon@xxxxxxxxxxx> > Cc: Hyunchul Lee <hyc.lee@xxxxxxxxx> > Cc: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx> > Cc: linux-cifs@xxxxxxxxxxxxxxx > Signed-off-by: Christian Brauner <christian.brauner@xxxxxxxxxx> > --- > fs/ksmbd/smb2pdu.c | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c > index 1148e52a4037..059764753aaa 100644 > --- a/fs/ksmbd/smb2pdu.c > +++ b/fs/ksmbd/smb2pdu.c > @@ -5521,12 +5521,7 @@ static int set_file_basic_info(struct ksmbd_file *fp, > char *buf, > if (IS_IMMUTABLE(inode) || IS_APPEND(inode)) > return -EACCES; > > - rc = setattr_prepare(user_ns, dentry, &attrs); > - if (rc) > - return -EINVAL; > - > inode_lock(inode); > - setattr_copy(user_ns, inode, &attrs); > attrs.ia_valid &= ~ATTR_CTIME; > rc = notify_change(user_ns, dentry, &attrs, NULL); setattr_prepare() was used for updating ->ctime to ChangeTime in set file basic info request. but notify_change() have just updated it to current time. So some of smbtorture tests failed. Could you please review the below change ? https://github.com/namjaejeon/smb3-kernel/commit/831bcdeaa5231a8d8125f6155833f1cb5dc0f8ca Thanks! > inode_unlock(inode); > -- > 2.30.2 > >