On 7/21/22 14:15, Jason Gunthorpe wrote: > 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 I fixed this patch but it collides with the map set revert Li sent in. Bob