Re: [PATCH v2 1/7] ksmbd: remove RFC1002 check in smb2 request

Steve French
2021-09-26T03:21:41Z

Also reviewed by me, and merged into cifsd-for-next

On Sat, Sep 25, 2021 at 8:17 AM Namjae Jeon <linkinjeon@kernel.org> wrote:
>
> From: Ronnie Sahlberg <lsahlber@redhat.com>
>
> In smb_common.c you have this function : ksmbd_smb_request() which
> is called from connection.c once you have read the initial 4 bytes for
> the next length+smb2 blob.
>
> It checks the first byte of this 4 byte preamble for valid values,
> i.e. a NETBIOSoverTCP SESSION_MESSAGE or a SESSION_KEEP_ALIVE.
>
> We don't need to check this for ksmbd since it only implements SMB2
> over TCP port 445.
> The netbios stuff was only used in very old servers when SMB ran over
> TCP port 139.
> Now that we run over TCP port 445, this is actually not a NB header anymore
> and you can just treat it as a 4 byte length field that must be less
> than 16Mbyte. and remove the references to the RFC1002 constants that no
> longer applies.
>
> Cc: Tom Talpey <tom@talpey.com>
> Cc: Ronnie Sahlberg <ronniesahlberg@gmail.com>
> Cc: Ralph Böhme <slow@samba.org>
> Cc: Steve French <smfrench@gmail.com>
> Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
> Acked-by: Hyunchul Lee <hyc.lee@gmail.com>
> Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
> ---
> fs/ksmbd/smb_common.c | 15 +--------------
> fs/ksmbd/smb_common.h | 8 --------
> 2 files changed, 1 insertion(+), 22 deletions(-)
>
> diff --git a/fs/ksmbd/smb_common.c b/fs/ksmbd/smb_common.c
> index 43d3123d8b62..1da67217698d 100644
> --- a/fs/ksmbd/smb_common.c
> +++ b/fs/ksmbd/smb_common.c
> @@ -149,20 +149,7 @@ int ksmbd_verify_smb_message(struct ksmbd_work *work)
> */
> bool ksmbd_smb_request(struct ksmbd_conn *conn)
> {
> - int type = *(char *)conn->request_buf;
> -
> - switch (type) {
> - case RFC1002_SESSION_MESSAGE:
> - /* Regular SMB request */
> - return true;
> - case RFC1002_SESSION_KEEP_ALIVE:
> - ksmbd_debug(SMB, "RFC 1002 session keep alive\n");
> - break;
> - default:
> - ksmbd_debug(SMB, "RFC 1002 unknown request type 0x%x\n", type);
> - }
> -
> - return false;
> + return conn->request_buf[0] == 0;
> }
>
> static bool supported_protocol(int idx)
> diff --git a/fs/ksmbd/smb_common.h b/fs/ksmbd/smb_common.h
> index 57c667c1be06..d7df19c97c4c 100644
> --- a/fs/ksmbd/smb_common.h
> +++ b/fs/ksmbd/smb_common.h
> @@ -48,14 +48,6 @@
> #define CIFS_DEFAULT_IOSIZE (64 * 1024)
> #define MAX_CIFS_SMALL_BUFFER_SIZE 448 /* big enough for most */
>
> -/* RFC 1002 session packet types */
> -#define RFC1002_SESSION_MESSAGE 0x00
> -#define RFC1002_SESSION_REQUEST 0x81
> -#define RFC1002_POSITIVE_SESSION_RESPONSE 0x82
> -#define RFC1002_NEGATIVE_SESSION_RESPONSE 0x83
> -#define RFC1002_RETARGET_SESSION_RESPONSE 0x84
> -#define RFC1002_SESSION_KEEP_ALIVE 0x85
> -
> /* Responses when opening a file. */
> #define F_SUPERSEDED 0
> #define F_OPENED 1
> --
> 2.25.1
>

--
Thanks,

Steve