Commit Graph

1013560 Commits

Author SHA1 Message Date
Namjae Jeon
fe30ea69ff cifsd: Blank lines aren't necessary after an open brace '{'
Blank lines aren't necessary after an open brace '{'.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:46 +09:00
Namjae Jeon
10268f7d57 cifsd: No space is necessary after a cast
No space is necessary after a cast.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:41 +09:00
Namjae Jeon
2f5205c237 cifsd: don't use multiple blank lines
don't use multiple blank lines.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:37 +09:00
Namjae Jeon
c8ed11522b cifsd: spaces preferred around that '/'
Fix "CHECK: paces preferred around that '/' from checkpatch.pl --strict.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:30 +09:00
Namjae Jeon
a2d6321b45 cifsd: braces {} should be used on all arms of this statement
Fix "CHECK: braces {} should be used on all arms of this statement"
from checkpatch.pl --strict.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:26 +09:00
Namjae Jeon
a2d0b5034a cifsd: add the check to prevent potential overflow with smb_strtoUTF16() and UNICODE_LEN()
Add the check to prevent potential overflow with smb_strtoUTF16() and
UNICODE_LEN().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:21 +09:00
Namjae Jeon
7047805976 cifsd: alignment match open parenthesis
Alignment match open parenthesis.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:16 +09:00
Namjae Jeon
0e579cd17f cifsd: return -ENOMEM about error from ksmbd_crypto_ctx_find_xxx calls
Return -ENOMEM about error from ksmbd_crypto_ctx_find_xxx calls.
And remove unneeded return value print in debug message.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:12 +09:00
Namjae Jeon
d3cd8c4915 cifsd: simplify error handling in ksmbd_gen_preauth_integrity_hash()
Simplify error handling in ksmbd_gen_preauth_integrity_hash().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:07 +09:00
Namjae Jeon
12fc704441 cifsd: call kzalloc() directly instead of wrapper
Call kzalloc() directly instead of wrapper function.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:13:03 +09:00
Namjae Jeon
533a45da1a cifsd: add default case in switch statment in alloc_shash_desc()
Add default case in switch statment in alloc_shash_desc().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:57 +09:00
Namjae Jeon
73b8b08539 cifsd: change success handling to failure handling
Change success handling to failure handling in ksmbd_crypt_message().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:53 +09:00
Namjae Jeon
27aa646db0 cifsd: fix wrong return value in ksmbd_crypt_message()
Change error return instead of returning always success return.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:48 +09:00
Namjae Jeon
03f1c3d388 cifsd: remove unneeded initialization of rc variable in ksmbd_crypt_message()
Remove unneeded initialization of rc variable in ksmbd_crypt_message().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:42 +09:00
Namjae Jeon
08591ccfdd cifsd: len can never be negative in ksmbd_init_sg()
Dan pointed out len can not be negative.
This patch remove unneeded negative check in loop.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:37 +09:00
Namjae Jeon
41a7848a01 cifsd: add the check if nvec is zero
Dan Carpenter pointed out that memory can be corrupted when nvec is zero.
This patch add the check to prevent it.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:33 +09:00
Namjae Jeon
522dcc7626 cifsd: never return 1 on failure
Never return 1 on failure.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:29 +09:00
Namjae Jeon
876edcc4cf cifsd: return zero in always success case
Return zero in always success case.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:26 +09:00
Namjae Jeon
b72802aa77 cifsd: set error return value for memcmp() difference
Set error return value for memcmp() difference.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:20 +09:00
Namjae Jeon
192cc732c6 cifsd: remove unneeded type casting
Remove unneeded type casting.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:16 +09:00
Namjae Jeon
4a6b022826 cifsd: simplify error handling in ksmbd_auth_ntlm()
simplify error handling in ksmbd_auth_ntlm().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:11 +09:00
Namjae Jeon
7e38ea254c cifsd: move ret check before the out label
Move ret check before the out label.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:04 +09:00
Namjae Jeon
fd43cbbe0a cifsd: just return smbhash() instead of using rc return value
Just return smbhash() instead of using rc return value.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:12:00 +09:00
Namjae Jeon
9409670237 cifsd: move fips_enabled check before the str_to_key()
Move fips_enabled check before the str_to_key().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:11:53 +09:00
Namjae Jeon
8bae4419ce cifsd: add goto fail in neg_token_init_mech_type()
Add goto fail in neg_token_init_mech_type().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:11:45 +09:00
Namjae Jeon
3566a2b0f7 cifsd: use memcmp instead of for loop check in oid_eq()
Use memcmp instead of for loop check in oid_eq().

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:11:41 +09:00
Namjae Jeon
cdd10398e7 cifsd: add goto fail in asn1_oid_decode()
Add goto fail in asn1_oid_decode() to clean-up exception handling code.

Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-26 18:11:35 +09:00
Wei Yongjun
be29a3709b cifsd: fix build error without CONFIG_OID_REGISTRY
Fix build error when CONFIG_OID_REGISTRY is not set:

mips-linux-gnu-ld: fs/cifsd/asn1.o: in function `gssapi_this_mech':
asn1.c:(.text+0xaa0): undefined reference to `sprint_oid'
mips-linux-gnu-ld: fs/cifsd/asn1.o: in function `neg_token_init_mech_type':
asn1.c:(.text+0xbec): undefined reference to `sprint_oid'

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-21 09:33:22 +09:00
Namjae Jeon
eb817368f5 cifsd: add support for FSCTL_DUPLICATE_EXTENTS_TO_FILE
Add support for FSCTL_DUPLICATE_EXTENTS_TO_FILE in smb2 ioctl.

Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-18 10:38:41 +09:00
Marios Makassikis
8602c3e2ce cifsd: Do not use 0 or 0xFFFFFFFF for TreeID
Returning TreeID=0 is valid behaviour according to [MS-SMB2] 2.2.1.2:

  TreeId (4 bytes): Uniquely identifies the tree connect for the command.
  This MUST be 0 for the SMB2 TREE_CONNECT Request. The TreeId can be
  any unsigned 32-bit integer that is received from a previous
  SMB2 TREE_CONNECT Response. TreeId SHOULD be set to 0 for the
  following commands:
   [...]

However, some client implementations reject it as invalid. Windows10
assigns ids starting from 1, and samba4 returns a random uint32_t
which suggests there may be other clients that consider it is
invalid behaviour.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-18 10:31:03 +09:00
Namjae Jeon
50bf80a553 cifsd: fix xfstests generic/504 test failure
If lock length in smb2 lock request from client is over
flock max length size, lock length is changed to flock max length
and don't return error response.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-14 12:28:36 +09:00
kernel test robot
5616015f54 cifsd: fix boolreturn.cocci warnings
fs/cifsd/smb2pdu.c:8098:8-9: WARNING: return of 0/1 in function
'smb2_is_sign_req' with return type bool

 Return statements in functions returning bool should use  true/false
instead of 1/0.
Generated by: scripts/coccinelle/misc/boolreturn.cocci

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: kernel test robot <lkp@intel.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-12 09:25:53 +09:00
Namjae Jeon
5ce0716593 cifsd: fix build break from asn1
build break from asn1 happened on some environment.

  CHECK   /home/smfrench/smb3-kernel/fs/cifsd/smb2misc.c
  CC [M]  /home/smfrench/smb3-kernel/fs/cifsd/asn1.o
/home/smfrench/smb3-kernel/fs/cifsd/asn1.c:21:10: fatal error:
spnego_negtokeninit.asn1.h: No such file or directory
   21 | #include "spnego_negtokeninit.asn1.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.build:271:
/home/smfrench/smb3-kernel/fs/cifsd/asn1.o] Error 1
make: *** [Makefile:1857: /home/smfrench/smb3-kernel/fs/cifsd] Error 2
make: Leaving directory
'/usr/src/linux-headers-5.12.0-051200rc8-generic'

This patch fix that asn1 compiler build *.asn1 file before compiling
asn.c

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-11 10:46:50 +09:00
Namjae Jeon
3d47e54623 cifsd: fix WARNING: Too many leading tabs
WARNING: Too many leading tabs - consider code refactoring
3066: FILE: fs/cifsd/smb2pdu.c:2733:
+                                               if (fattr.cf_dacls)

Fix a warning from checkpatch.pl.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-11 10:46:47 +09:00
Namjae Jeon
63c454f839 cifsd: fix WARNING: Possible unnecessary 'out of memory' message
WARNING: Possible unnecessary 'out of memory' message
902: FILE: fs/cifsd/smb2pdu.c:569:
+       if (!work->response_buf) {
+               ksmbd_err("Failed to allocate %zu bytes buffer\n", sz);

Fix a warning from checkpatch.pl.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-11 10:46:42 +09:00
Hyunchul Lee
fad4161b5c cifsd: decoding gss token using lib/asn1_decoder.c
Decode gss token of SMB2_SESSSION_SETUP using
lib/asn1_decoder.c

Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-11 10:46:38 +09:00
Namjae Jeon
bcd62a3683 cifsd: fix invalid memory access in smb2_write()
Add missing fp initialzation to prevent invalid memory access in
smb2_write().

Reported-by: Coverity Scan <scan-admin@coverity.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:49 -05:00
Namjae Jeon
5a0ca77005 cifsd: add support for AES256 encryption
Now that 256 bit encryption can be negotiated, update
names of the nonces to match the updated official protocol
documentation (e.g. AES_GCM_NONCE instead of AES_128GCM_NONCE)
since they apply to both 128 bit and 256 bit encryption.
update smb encryption code to set 32 byte key length and to
set gcm256/ccm256 when requested on mount.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:48 -05:00
Marios Makassikis
1fca8038e9 cifsd: Fix potential null-ptr-deref in destroy_previous_session()
The user field in the session structure is allocated when the client is
authenticated. If the client explicitly logs off, the user field is freed,
but the session is kept around in case the user reconnects. If the TCP
connection hasn't been closed and the client sends a session setup with
a PreviousSessionId set, destroy_previous_session() will be called to
check if the session needs to be cleaned up.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:48 -05:00
Marios Makassikis
e7735c8548 cifsd: Update out_buf_len in smb2_populate_readdir_entry()
When processing a SMB2 QUERY_DIRECTORY request,
smb2_populate_readdir_entry() is called first to fill the dot/dotdot
entries. This moves the d_info->wptr pointer but out_buf_len remains
unchanged. As a result, reserve_populate_dentry() may end up writing
past the end of the buffer since the bounds checking is done on
invalid values.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:47 -05:00
Marios Makassikis
79caa9606d cifsd: Handle ksmbd_session_rpc_open() failure in create_smb2_pipe()
Currently, a SMB2 client does not receive an error message if
ksmbd_session_rpc_open() fails when opening a pipe.
Fix this by responding with STATUS_NO_MEMORY or STATUS_INVALID_PARAMETER
depending on the error that occurred.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:47 -05:00
Marios Makassikis
a4382db9ba cifsd: Call smb2_set_err_rsp() in smb2_read/smb2_write error path
Call smb2_set_err_rsp() in smb2_read/smb2_write error path.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:47 -05:00
Namjae Jeon
204fcceb7c cifsd: add ksmbd/nfsd interoperability to feature table
Add ksmbd/nfsd interoperability to feature table and sync with a table in
patch cover letter.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:46 -05:00
Sebastian Gottschall
ced2b26a76 cifsd: Fix regression in smb2_get_info
a Windows 10 client isn't able to store files from ksmbd servers due
unknown local permission problems (code 0x8007003A) if smb3 encryption
is enabled. Windows 10 is requesting for ATTRIBUTE_SECINFO (mask 0x20)
which is not yet handled by ksmbd, this leads to a invalid response.
For now we just reintroduce the old check to avoid processing of unhandled
flags until ATTRIBUTE_SECINFO is properly handled.

Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:46 -05:00
Marios Makassikis
7adfd4f6f7 cifsd: Remove is_attributes_write_allowed() wrapper
Inline it in the only place it is used and remove it.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:45 -05:00
Marios Makassikis
a299669b2c cifsd: Update access check in set_file_allocation_info/set_end_of_file_info
[MS-SMB2] 3.3.5.21.1
  If the object store supports security and FileInfoClass is
  FileAllocationInformation, FileEndOfFileInformation, or
  FileValidDataLengthInformation, and Open.GrantedAccess does not
  include FILE_WRITE_DATA, the server MUST fail the request with
  STATUS_ACCESS_DENIED.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:45 -05:00
Namjae Jeon
73f9dad511 cifsd: remove the dead code of unimplemented durable handle
Remove the dead code of unimplemented durable handle.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:44 -05:00
Namjae Jeon
fba08fa005 cifsd: use d_inode()
Use d_inode().

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:44 -05:00
Marios Makassikis
e6b1059ffa cifsd: Fix potential null-ptr-deref in smb2_open()
Fix potential null-ptr-deref in smb2_open().

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:43 -05:00
Namjae Jeon
5626518eca cifsd: move nt time functions to misc.c
Move nt time functions in netmisc.c to misc.c to remove netmisc.c file.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-05-10 19:15:43 -05:00