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: ff1c038addc4 ("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
..
2018-04-07 09:08:24 -07:00
2018-04-20 09:59:33 -07:00
2018-05-04 20:32:18 -10:00
2018-03-14 13:31:23 +01:00
\n
2018-04-20 09:01:26 -07:00
2018-04-11 10:28:39 -07:00
2018-03-27 13:18:09 -04:00
2018-04-12 12:55:50 -07:00
2018-04-03 16:27:08 -04:00
2018-04-11 10:28:39 -07:00
2018-04-20 17:18:36 -07:00
2018-02-07 14:25:22 -08:00
2018-04-10 10:25:57 -07:00
2018-04-11 10:28:39 -07:00
2018-04-11 10:28:37 -07:00
2017-12-07 14:23:30 -05:00
2018-05-03 16:11:37 -06:00
2018-04-11 10:28:39 -07:00
2018-01-29 07:27:24 -08:00
2018-02-06 10:41:33 -08:00
2018-02-15 15:34:42 -05:00
2018-04-04 12:44:02 -07:00