• Jason Gunthorpe's avatar
    IB/uverbs: Rework the locking for cleaning up the ucontext · e951747a
    Jason Gunthorpe authored
    The locking here has always been a bit crazy and spread out, upon some
    careful analysis we can simplify things.
    
    Create a single function uverbs_destroy_ufile_hw() that internally handles
    all locking. This pulls together pieces of this process that were
    sprinkled all over the places into one place, and covers them with one
    lock.
    
    This eliminates several duplicate/confusing locks and makes the control
    flow in ib_uverbs_close() and ib_uverbs_free_hw_resources() extremely
    simple.
    
    Unfortunately we have to keep an extra mutex, ucontext_lock.  This lock is
    logically part of the rwsem and provides the 'down write, fail if write
    locked, wait if read locked' semantic we require.
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    e951747a
uverbs_main.c 34.9 KB