RDMA/uverbs: Remove needs_kfree_rcu from uverbs_obj_type_class
authorJason Gunthorpe <jgg@mellanox.com>
Mon, 13 Jan 2020 14:33:10 +0000 (14:33 +0000)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 13 Jan 2020 20:17:18 +0000 (16:17 -0400)
commit8bdf9dd984c18375d1090ddeb1792511f619c5c1
treef5fe75a0e22cc09ccb4518668d5525dddc60f796
parent3f59b6c3e600f9665dcf5b8e566cd7b778f03045
RDMA/uverbs: Remove needs_kfree_rcu from uverbs_obj_type_class

After device disassociation the uapi_objects are destroyed and freed,
however it is still possible that core code can be holding a kref on the
uobject. When it finally goes to uverbs_uobject_free() via the kref_put()
it can trigger a use-after-free on the uapi_object.

Since needs_kfree_rcu is a micro optimization that only benefits file
uobjects, just get rid of it. There is no harm in using kfree_rcu even if
it isn't required, and the number of involved objects is small.

Link: https://lore.kernel.org/r/20200113143306.GA28717@ziepe.ca
Signed-off-by: Michael Guralnik <michaelgur@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/rdma_core.c
include/rdma/uverbs_types.h