On Fri, Jul 15, 2022 at 01:24:15PM -0500, Bob Pearson wrote: > @@ -173,12 +172,11 @@ int rxe_mr_init_user(struct rxe_pd *pd, u64 start, u64 length, u64 iova, > void *vaddr; > int err; > > - umem = ib_umem_get(pd->ibpd.device, start, length, access); > + mr->umem = umem = ib_umem_get(&rxe->ib_dev, start, length, access); > if (IS_ERR(umem)) { So this puts an err_ptr into mr->umem and then later the cleanup: if (mr->umem) ib_umem_release(mr->umem); Will not like it very much. I'm OK with the idea of initializing structures that are cleaned up by their single master cleanup, but you have to do it in a way that doesn't put corrupted data into the object.. Jason