• Jason Gunthorpe's avatar
    IB/uverbs: Use uverbs_api to manage the object type inside the uobject · 6b0d08f4
    Jason Gunthorpe authored
    Currently the struct uverbs_obj_type stored in the ib_uobject is part of
    the .rodata segment of the module that defines the object. This is a
    problem if drivers define new uapi objects as we will be left with a
    dangling pointer after device disassociation.
    
    Switch the uverbs_obj_type for struct uverbs_api_object, which is
    allocated memory that is part of the uverbs_api and is guaranteed to
    always exist. Further this moves the 'type_class' into this memory which
    means access to the IDR/FD function pointers is also guaranteed. Drivers
    cannot define new types.
    
    This makes it safe to continue to use all uobjects, including driver
    defined ones, after disassociation.
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    6b0d08f4
ib_verbs.h 118 KB