On Wed, Jun 09, 2021 at 08:47:20AM -0300, Jason Gunthorpe wrote: > On Wed, Jun 09, 2021 at 01:55:22PM +0300, Leon Romanovsky wrote: > > On Tue, Jun 08, 2021 at 05:09:35PM -0300, Jason Gunthorpe wrote: > > > On Tue, Jun 08, 2021 at 08:12:24AM +0300, Leon Romanovsky wrote: > > > > @@ -3198,6 +3199,13 @@ static int ib_uverbs_ex_create_flow(struct uverbs_attr_bundle *attrs) > > > > if (err) > > > > return err; > > > > > > > > + ucontext = ib_uverbs_get_ucontext(attrs); > > > > + if (IS_ERR(ucontext)) > > > > + return PTR_ERR(ucontext); > > > > > > ib_uverbs_get_ucontext() should only be used by methods that don't > > > have a uboject, this one does so it should be using uobj->context > > > instead > > > > Why "should"? > > At the end, we will get same ucontext. > > The locking methodologies are different, they are not guarenteed to be > exactly the same, but once the uobj is obtained then the related > ucontext is fixed. > > > > It looks like this can be moved down to after the uobject is allocated > > > > The idea is to fail early, before first kmalloc and uobj_alloc, so we won't need > > to do any error unwinding. > > The error handling is needed anyhow.. Thanks, I'll change. > > Jason