linux-stable/fs/cifs
Long Li 2796d303e3 cifs: Allocate validate negotiation request through kmalloc
The data buffer allocated on the stack can't be DMA'ed, ib_dma_map_page will
return an invalid DMA address for a buffer on stack. Even worse, this
incorrect address can't be detected by ib_dma_mapping_error. Sending data
from this address to hardware will not fail, but the remote peer will get
junk data.

Fix this by allocating the request on the heap in smb3_validate_negotiate.

Changes in v2:
Removed duplicated code on freeing buffers on function exit.
(Thanks to Parav Pandit <parav@mellanox.com>)
Fixed typo in the patch title.

Changes in v3:
Added "Fixes" to the patch.
Changed several sizeof() to use *pointer in place of struct.

Changes in v4:
Added detailed comments on the failure through RDMA.
Allocate request buffer using GPF_NOFS.
Fixed possible memory leak.

Changes in v5:
Removed variable ret for checking return value.
Changed to use pneg_inbuf->Dialects[0] to calculate unused space in pneg_inbuf.

Fixes: ff1c038add ("Check SMB3 dialects against downgrade attacks")
Signed-off-by: Long Li <longli@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
Reviewed-by: Tom Talpey <ttalpey@microsoft.com>
2018-05-09 11:48:31 -05:00
..
asn1.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cache.c fscache: Pass object size in rather than calling back for it 2018-04-06 14:05:14 +01:00
cifs_debug.c CIFS: add ONCE flag for cifs_dbg type 2018-04-11 16:44:58 -05:00
cifs_debug.h CIFS: fix typo in cifs_dbg 2018-04-20 13:39:10 -05:00
cifs_dfs_ref.c CIFS: add build_path_from_dentry_optional_prefix() 2017-03-01 22:26:10 -06:00
cifs_fs_sb.h Rename superblock flags (MS_xyz -> SB_xyz) 2017-11-27 13:05:09 -08:00
cifs_ioctl.h Enable previous version support 2016-10-13 19:48:11 -05:00
cifs_spnego.c cifs: Create dedicated keyring for spnego operations 2016-05-19 21:56:30 -05:00
cifs_spnego.h
cifs_unicode.c [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
cifs_unicode.h [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
cifs_uniupr.h
cifsacl.c fs/cifs/cifsacl.c Fixes typo in a comment 2018-01-28 09:19:45 -06:00
cifsacl.h cifs: fix SID binary to string conversion 2012-12-11 11:48:49 -06:00
cifsencrypt.c CIFS: fix sha512 check in cifs_crypto_secmech_release 2018-04-01 20:24:40 -05:00
cifsfs.c CIFS: add sha512 secmech 2018-04-01 20:24:39 -05:00
cifsfs.h update internal version number for cifs.ko 2018-01-26 17:03:01 -06:00
cifsglob.h cifs: add resp_buf_size to the mid_q_entry structure 2018-04-12 20:32:48 -05:00
cifspdu.h CIFS: move DFS response parsing out of SMB1 code 2017-03-01 22:26:10 -06:00
cifsproto.h CIFS: refactor crypto shash/sdesc allocation&free 2018-04-01 20:24:39 -05:00
cifssmb.c cifs: smbd: Don't use RDMA read/write when signing is used 2018-04-25 11:15:53 -05:00
connect.c SMB3: Fix 3.11 encryption to Windows and handle encrypted smb3 tcon 2018-04-24 10:07:14 -05:00
dir.c cifs: do not allow creating sockets except with SMB1 posix exensions 2018-04-20 13:31:32 -05:00
dns_resolve.c cifs: fix composing of mount options for DFS referrals 2013-05-24 13:08:31 -05:00
dns_resolve.h
export.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
file.c fs: cifs: Adding new return type vm_fault_t 2018-04-17 14:44:35 -05:00
fscache.c fscache: Pass object size in rather than calling back for it 2018-04-06 14:05:14 +01:00
fscache.h fscache: Attach the index key and aux data to the cookie 2018-04-04 13:41:28 +01:00
inode.c cifs: Use ULL suffix for 64-bit constant 2018-04-11 16:44:58 -05:00
ioctl.c [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
Kconfig cifs: smbd: depend on INFINIBAND_ADDR_TRANS 2018-04-27 11:15:44 -04:00
link.c CIFS: refactor crypto shash/sdesc allocation&free 2018-04-01 20:24:39 -05:00
Makefile CIFS: SMBD: Establish SMB Direct connection 2018-01-24 19:49:05 -06:00
misc.c CIFS: refactor crypto shash/sdesc allocation&free 2018-04-01 20:24:39 -05:00
netmisc.c cifs: small underflow in cnvrtDosUnixTm() 2017-05-02 14:57:34 -05:00
nterr.c CIFS: Rename 7 error codes to NT_ style 2012-07-24 10:25:10 -05:00
nterr.h CIFS: Rename 7 error codes to NT_ style 2012-07-24 10:25:10 -05:00
ntlmssp.h cifs: dynamic allocation of ntlmssp blob 2016-06-23 23:45:07 -05:00
readdir.c cifs: initialize file_info_lock 2017-01-14 14:58:29 -06:00
rfc1002pdu.h
sess.c smb2: Enforce sec= mount option 2017-03-02 23:13:37 -06:00
smb1ops.c cifs: add server->vals->header_preamble_size 2018-04-02 13:09:44 -05:00
smb2file.c CIFS: use tcon_ipc instead of use_ipc parameter of SMB2_ioctl 2018-01-26 17:03:00 -06:00
smb2glob.h CIFS: Separate SMB2 header structure 2017-02-01 16:46:34 -06:00
smb2inode.c Do not send SMB3 SET_INFO request if nothing is changing 2016-10-13 19:46:51 -05:00
smb2maperror.c Don't log expected error on DFS referral request 2018-04-01 20:24:40 -05:00
smb2misc.c smb3.11: replace a 4 with server->vals->header_preamble_size 2018-04-12 20:32:13 -05:00
smb2ops.c cifs: smbd: Don't use RDMA read/write when signing is used 2018-04-25 11:15:53 -05:00
smb2pdu.c cifs: Allocate validate negotiation request through kmalloc 2018-05-09 11:48:31 -05:00
smb2pdu.h SMB3: Fix 3.11 encryption to Windows and handle encrypted smb3 tcon 2018-04-24 10:07:14 -05:00
smb2proto.h cifs: Change SMB2_open to return an iov for the error parameter 2018-04-12 20:32:50 -05:00
smb2status.h CIFS: Add SMB2 status codes 2012-07-24 10:25:13 -05:00
smb2transport.c cifs: add resp_buf_size to the mid_q_entry structure 2018-04-12 20:32:48 -05:00
smbdirect.c cifs: smbd: Avoid allocating iov on the stack 2018-04-25 11:15:58 -05:00
smbdirect.h move a few externs to smbdirect.h to eliminate warning 2018-01-26 17:03:00 -06:00
smbencrypt.c CIFS: refactor crypto shash/sdesc allocation&free 2018-04-01 20:24:39 -05:00
smberr.h
smbfsctl.h [SMB3] Send durable handle v2 contexts when use of persistent handles required 2015-11-03 09:26:27 -06:00
transport.c SMB311: Fix reconnect 2018-04-25 11:15:20 -05:00
winucase.c [CIFS] quiet sparse compile warning 2013-09-08 14:54:24 -05:00
xattr.c Rename superblock flags (MS_xyz -> SB_xyz) 2017-11-27 13:05:09 -08:00