Re: [PATCH] ksmbd: not allow to open file if delelete on close bit is set

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>




[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux