On Thu, 28 Sept 2023 at 00:44, Namjae Jeon <linkinjeon@xxxxxxxxxx> wrote: > > Cthon test fail with the following error. > > check for proper open/unlink operation > nfsjunk files before unlink: > -rwxr-xr-x 1 root root 0 9월 25 11:03 ./nfs2y8Jm9 > ./nfs2y8Jm9 open; unlink ret = 0 > nfsjunk files after unlink: > -rwxr-xr-x 1 root root 0 9월 25 11:03 ./nfs2y8Jm9 > data compare ok > nfsjunk files after close: > ls: cannot access './nfs2y8Jm9': No such file or directory > special tests failed > > Cthon expect to second unlink failure when file is already unlinked. > ksmbd can not allow to open file if flags of ksmbd inode is set with > S_DEL_ON_CLS flags. > > Reported-by: Tom Talpey <tom@xxxxxxxxxx> > Signed-off-by: Namjae Jeon <linkinjeon@xxxxxxxxxx> > --- > fs/smb/server/vfs_cache.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/fs/smb/server/vfs_cache.c b/fs/smb/server/vfs_cache.c > index f41f8d6108ce..f2e2a7cc24a9 100644 > --- a/fs/smb/server/vfs_cache.c > +++ b/fs/smb/server/vfs_cache.c > @@ -577,6 +577,11 @@ struct ksmbd_file *ksmbd_open_fd(struct ksmbd_work *work, struct file *filp) > goto err_out; > } > > + if (fp->f_ci->m_flags & S_DEL_ON_CLS) { > + ret = -ENOENT; > + goto err_out; > + } > + Is enoent the right error here? I assume that the file will still show in a directory listing so maybe eacces would be better? > ret = __open_id(&work->sess->file_table, fp, OPEN_ID_TYPE_VOLATILE_ID); > if (ret) { > ksmbd_inode_put(fp->f_ci); > -- > 2.25.1 >