RDMA/nes: Check for zero STag
STags are generated randomly but the driver does not correctly prevent a zero STag. Using STag zero is privileged and causes a user space application to fail. This change prevents the driver from trying to allocate a zero STag. Signed-off-by: Faisal Latif <faisal.latif@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
886f98a315
commit
fd000e12a5
|
@ -437,11 +437,12 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
|
||||||
nesadapter->qp_table = (struct nes_qp **)(&nesadapter->allocated_arps[BITS_TO_LONGS(arp_table_size)]);
|
nesadapter->qp_table = (struct nes_qp **)(&nesadapter->allocated_arps[BITS_TO_LONGS(arp_table_size)]);
|
||||||
|
|
||||||
|
|
||||||
/* mark the usual suspect QPs and CQs as in use */
|
/* mark the usual suspect QPs, MR and CQs as in use */
|
||||||
for (u32temp = 0; u32temp < NES_FIRST_QPN; u32temp++) {
|
for (u32temp = 0; u32temp < NES_FIRST_QPN; u32temp++) {
|
||||||
set_bit(u32temp, nesadapter->allocated_qps);
|
set_bit(u32temp, nesadapter->allocated_qps);
|
||||||
set_bit(u32temp, nesadapter->allocated_cqs);
|
set_bit(u32temp, nesadapter->allocated_cqs);
|
||||||
}
|
}
|
||||||
|
set_bit(0, nesadapter->allocated_mrs);
|
||||||
|
|
||||||
for (u32temp = 0; u32temp < 20; u32temp++)
|
for (u32temp = 0; u32temp < 20; u32temp++)
|
||||||
set_bit(u32temp, nesadapter->allocated_pds);
|
set_bit(u32temp, nesadapter->allocated_pds);
|
||||||
|
|
|
@ -2503,9 +2503,6 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
|
||||||
stag = stag_index << 8;
|
stag = stag_index << 8;
|
||||||
stag |= driver_key;
|
stag |= driver_key;
|
||||||
stag += (u32)stag_key;
|
stag += (u32)stag_key;
|
||||||
if (stag == 0) {
|
|
||||||
stag = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
iova_start = virt;
|
iova_start = virt;
|
||||||
/* Make the leaf PBL the root if only one PBL */
|
/* Make the leaf PBL the root if only one PBL */
|
||||||
|
|
Loading…
Reference in New Issue