]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.15.17/i40iw-validate-correct-ird-ord-connection-parameters.patch
Linux 4.14.95
[thirdparty/kernel/stable-queue.git] / releases / 4.15.17 / i40iw-validate-correct-ird-ord-connection-parameters.patch
1 From foo@baz Mon Apr 9 10:16:32 CEST 2018
2 From: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
3 Date: Fri, 22 Dec 2017 09:47:01 -0600
4 Subject: i40iw: Validate correct IRD/ORD connection parameters
5
6 From: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
7
8
9 [ Upstream commit ce9ce74145aa6814a370a9ff4f5a1d719baaced1 ]
10
11 Casting to u16 before validating IRD/ORD connection
12 parameters could cause recording wrong IRD/ORD values
13 in the cm_node. Validate the IRD/ORD parameters as
14 they are passed by the application before recording
15 them.
16
17 Fixes: f27b4746f378 ("i40iw: add connection management code")
18 Signed-off-by: Tatyana Nikolova <tatyana.e.nikolova@intel.com>
19 Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
20 Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
21 Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
22 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23 ---
24 drivers/infiniband/hw/i40iw/i40iw_cm.c | 5 +++--
25 1 file changed, 3 insertions(+), 2 deletions(-)
26
27 --- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
28 +++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
29 @@ -125,7 +125,8 @@ static u8 i40iw_derive_hw_ird_setting(u1
30 * @conn_ird: connection IRD
31 * @conn_ord: connection ORD
32 */
33 -static void i40iw_record_ird_ord(struct i40iw_cm_node *cm_node, u16 conn_ird, u16 conn_ord)
34 +static void i40iw_record_ird_ord(struct i40iw_cm_node *cm_node, u32 conn_ird,
35 + u32 conn_ord)
36 {
37 if (conn_ird > I40IW_MAX_IRD_SIZE)
38 conn_ird = I40IW_MAX_IRD_SIZE;
39 @@ -3849,7 +3850,7 @@ int i40iw_connect(struct iw_cm_id *cm_id
40 }
41
42 cm_node->apbvt_set = true;
43 - i40iw_record_ird_ord(cm_node, (u16)conn_param->ird, (u16)conn_param->ord);
44 + i40iw_record_ird_ord(cm_node, conn_param->ird, conn_param->ord);
45 if (cm_node->send_rdma0_op == SEND_RDMA_READ_ZERO &&
46 !cm_node->ord_size)
47 cm_node->ord_size = 1;