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]

 



2023-09-29 10:13 GMT+09:00, ronnie sahlberg <ronniesahlberg@xxxxxxxxx>:
> 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
No, It should be STATUS_DELETE_PENDING error.
> in a directory listing so maybe eacces would be better?
Right. but it should not be STATUS_ACCESS_DENIED error.
So I will change the patch to return STATUS_DELETE_PENDING error to
client on v2.

Thanks for your review!
>
>
>>         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