linux-cifs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ksmbd: limit read/write/trans buffer size not to exceed MAX_STREAM_PROT_LEN
@ 2021-10-08  3:29 Namjae Jeon
  2021-10-11 12:28 ` Hyunchul Lee
  0 siblings, 1 reply; 3+ messages in thread
From: Namjae Jeon @ 2021-10-08  3:29 UTC (permalink / raw)
  To: linux-cifs
  Cc: Namjae Jeon, Tom Talpey, Ronnie Sahlberg, Ralph Böhme,
	Hyunchul Lee, Steve French, Sergey Senozhatsky

ksmbd limit read/write/trans buffer size not to exceed
maximum stream protocol length(0x00FFFFFF).

Cc: Tom Talpey <tom@talpey.com>
Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Cc: Ralph Böhme <slow@samba.org>
Cc: Hyunchul Lee <hyc.lee@gmail.com>
Cc: Steve French <smfrench@gmail.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
---
 v2:
  - change 8MB limitation to MAX_STREAM_PROT_LEN.

 fs/ksmbd/smb2ops.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/ksmbd/smb2ops.c b/fs/ksmbd/smb2ops.c
index b06456eb587b..63289872da97 100644
--- a/fs/ksmbd/smb2ops.c
+++ b/fs/ksmbd/smb2ops.c
@@ -284,6 +284,7 @@ int init_smb3_11_server(struct ksmbd_conn *conn)
 
 void init_smb2_max_read_size(unsigned int sz)
 {
+	sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
 	smb21_server_values.max_read_size = sz;
 	smb30_server_values.max_read_size = sz;
 	smb302_server_values.max_read_size = sz;
@@ -292,6 +293,7 @@ void init_smb2_max_read_size(unsigned int sz)
 
 void init_smb2_max_write_size(unsigned int sz)
 {
+	sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
 	smb21_server_values.max_write_size = sz;
 	smb30_server_values.max_write_size = sz;
 	smb302_server_values.max_write_size = sz;
@@ -300,6 +302,7 @@ void init_smb2_max_write_size(unsigned int sz)
 
 void init_smb2_max_trans_size(unsigned int sz)
 {
+	sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
 	smb21_server_values.max_trans_size = sz;
 	smb30_server_values.max_trans_size = sz;
 	smb302_server_values.max_trans_size = sz;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] ksmbd: limit read/write/trans buffer size not to exceed MAX_STREAM_PROT_LEN
  2021-10-08  3:29 [PATCH v2] ksmbd: limit read/write/trans buffer size not to exceed MAX_STREAM_PROT_LEN Namjae Jeon
@ 2021-10-11 12:28 ` Hyunchul Lee
  2021-10-11 13:44   ` Namjae Jeon
  0 siblings, 1 reply; 3+ messages in thread
From: Hyunchul Lee @ 2021-10-11 12:28 UTC (permalink / raw)
  To: Namjae Jeon
  Cc: linux-cifs, Tom Talpey, Ronnie Sahlberg, Ralph Böhme,
	Steve French, Sergey Senozhatsky

2021년 10월 8일 (금) 오후 12:29, Namjae Jeon <linkinjeon@kernel.org>님이 작성:
>
> ksmbd limit read/write/trans buffer size not to exceed
> maximum stream protocol length(0x00FFFFFF).
>
> Cc: Tom Talpey <tom@talpey.com>
> Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com>
> Cc: Ralph Böhme <slow@samba.org>
> Cc: Hyunchul Lee <hyc.lee@gmail.com>
> Cc: Steve French <smfrench@gmail.com>
> Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
> ---
>  v2:
>   - change 8MB limitation to MAX_STREAM_PROT_LEN.
>
>  fs/ksmbd/smb2ops.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/fs/ksmbd/smb2ops.c b/fs/ksmbd/smb2ops.c
> index b06456eb587b..63289872da97 100644
> --- a/fs/ksmbd/smb2ops.c
> +++ b/fs/ksmbd/smb2ops.c
> @@ -284,6 +284,7 @@ int init_smb3_11_server(struct ksmbd_conn *conn)
>
>  void init_smb2_max_read_size(unsigned int sz)
>  {
> +       sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);

If the maximum read size is MAX_STREAM_PROT_LEN, couldn't headers +
data exceed MAX_STREAM_PROT_LEN?

>         smb21_server_values.max_read_size = sz;
>         smb30_server_values.max_read_size = sz;
>         smb302_server_values.max_read_size = sz;
> @@ -292,6 +293,7 @@ void init_smb2_max_read_size(unsigned int sz)
>
>  void init_smb2_max_write_size(unsigned int sz)
>  {
> +       sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
>         smb21_server_values.max_write_size = sz;
>         smb30_server_values.max_write_size = sz;
>         smb302_server_values.max_write_size = sz;
> @@ -300,6 +302,7 @@ void init_smb2_max_write_size(unsigned int sz)
>
>  void init_smb2_max_trans_size(unsigned int sz)
>  {
> +       sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
>         smb21_server_values.max_trans_size = sz;
>         smb30_server_values.max_trans_size = sz;
>         smb302_server_values.max_trans_size = sz;
> --
> 2.25.1
>


-- 
Thanks,
Hyunchul

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] ksmbd: limit read/write/trans buffer size not to exceed MAX_STREAM_PROT_LEN
  2021-10-11 12:28 ` Hyunchul Lee
@ 2021-10-11 13:44   ` Namjae Jeon
  0 siblings, 0 replies; 3+ messages in thread
From: Namjae Jeon @ 2021-10-11 13:44 UTC (permalink / raw)
  To: Hyunchul Lee
  Cc: linux-cifs, Tom Talpey, Ronnie Sahlberg, Ralph Böhme,
	Steve French, Sergey Senozhatsky

2021-10-11 21:28 GMT+09:00, Hyunchul Lee <hyc.lee@gmail.com>:
> 2021년 10월 8일 (금) 오후 12:29, Namjae Jeon <linkinjeon@kernel.org>님이 작성:
>>
>> ksmbd limit read/write/trans buffer size not to exceed
>> maximum stream protocol length(0x00FFFFFF).
>>
>> Cc: Tom Talpey <tom@talpey.com>
>> Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com>
>> Cc: Ralph Böhme <slow@samba.org>
>> Cc: Hyunchul Lee <hyc.lee@gmail.com>
>> Cc: Steve French <smfrench@gmail.com>
>> Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
>> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
>> ---
>>  v2:
>>   - change 8MB limitation to MAX_STREAM_PROT_LEN.
>>
>>  fs/ksmbd/smb2ops.c | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/fs/ksmbd/smb2ops.c b/fs/ksmbd/smb2ops.c
>> index b06456eb587b..63289872da97 100644
>> --- a/fs/ksmbd/smb2ops.c
>> +++ b/fs/ksmbd/smb2ops.c
>> @@ -284,6 +284,7 @@ int init_smb3_11_server(struct ksmbd_conn *conn)
>>
>>  void init_smb2_max_read_size(unsigned int sz)
>>  {
>> +       sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
>
> If the maximum read size is MAX_STREAM_PROT_LEN, couldn't headers +
> data exceed MAX_STREAM_PROT_LEN?
Right, I will fix it on v3.

Thanks!
>
>>         smb21_server_values.max_read_size = sz;
>>         smb30_server_values.max_read_size = sz;
>>         smb302_server_values.max_read_size = sz;
>> @@ -292,6 +293,7 @@ void init_smb2_max_read_size(unsigned int sz)
>>
>>  void init_smb2_max_write_size(unsigned int sz)
>>  {
>> +       sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
>>         smb21_server_values.max_write_size = sz;
>>         smb30_server_values.max_write_size = sz;
>>         smb302_server_values.max_write_size = sz;
>> @@ -300,6 +302,7 @@ void init_smb2_max_write_size(unsigned int sz)
>>
>>  void init_smb2_max_trans_size(unsigned int sz)
>>  {
>> +       sz = min_t(u32, sz, MAX_STREAM_PROT_LEN);
>>         smb21_server_values.max_trans_size = sz;
>>         smb30_server_values.max_trans_size = sz;
>>         smb302_server_values.max_trans_size = sz;
>> --
>> 2.25.1
>>
>
>
> --
> Thanks,
> Hyunchul
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-10-11 13:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-08  3:29 [PATCH v2] ksmbd: limit read/write/trans buffer size not to exceed MAX_STREAM_PROT_LEN Namjae Jeon
2021-10-11 12:28 ` Hyunchul Lee
2021-10-11 13:44   ` Namjae Jeon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).