Hi all, Currently, when an application creates a PD, the ib uverbs creates a PD uobj resource and tracks it through the xarray which is looked up using an uobj id/pd_handle. If a user application were to create a verb resource, example QP, with some random ibv_pd object [i.e. one not allocated by user process], whose pd_handle happens to match the id of created PDs, the QP creation would succeed though one would expect it to fail For example: During an alloc PD: irdma_ualloc_pd, 122], pd_id: 44, ibv_pd: 0x8887c0, pd_handle: 0 During create QP: [irdma_ucreate_qp, 1480], ibv_pd: 0x8889f0, pd_handle: 0 Clearly, the ibv_pd that the application wants the QP to be associated with is not the same as the ibv_pd created during the allocation of PD. Yet, the creation of the QP is successful as the pd handle of 0 matches. It appears there is missing infrastructure to check if the incoming ibv_pd during create QP, MR etc is a valid one. Looking for inputs. Thank you, Sindhu