IB/hfi1: Fix SL array bounds check
Subsystems (3)
PATCH 1/1 IB/hfi1: Fix SL array bounds check
commit 0dbfaa9f2813787679e296eb5476e40938ab48c8 upstream.
The SL specified by a user needs to be a valid SL.
Add a range check to the user specified SL value which protects from running off the end of the SL to SC table.
Cc [email protected] # 4.9.x
Fixes 7724105686e7 ("IB/hfi1: add driver files")
Signed-off-by Ira Weiny <[email protected]>
Signed-off-by Dennis Dalessandro <[email protected]>
Signed-off-by Jason Gunthorpe <[email protected]>
--- drivers/infiniband/hw/hfi1/verbs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
drivers/infiniband/hw/hfi1/verbs.c +7 -1
@@ -1511,12 +1511,18 @@ static int hfi1_check_ah(struct ib_device *ibdev, struct ib_ah_attr *ah_attr)struct hfi1_pportdata *ppd;struct hfi1_devdata *dd;u8 sc5; +u8 sl;/* test the mapping for validity */ ibp =to_iport (ibdev, ah_attr->port_num); ppd =ppd_from_ibp (ibp); - sc5 = ibp->sl_to_sc[ah_attr->sl]; dd =dd_from_ppd (ppd); + + sl = ah_attr->sl; +if (sl >=ARRAY_SIZE (ibp->sl_to_sc)) +return -EINVAL ; + + sc5 = ibp->sl_to_sc[sl];if (sc_to_vlt (dd, sc5) > num_vls &&sc_to_vlt (dd, sc5) !=0xf )return -EINVAL ;return 0 ;
Signature · 1 line
1.7.12.4