IB/uverbs: Remove the ib_uverbs_attr pointer from each attr
authorJason Gunthorpe <jgg@mellanox.com>
Fri, 10 Aug 2018 02:14:39 +0000 (20:14 -0600)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 10 Aug 2018 22:06:24 +0000 (16:06 -0600)
commit6a1f444fefeba392d1232b408aaf5902e33e0982
tree7e1e771666a574797c890a2a9d2a29fa22c9c2ab
parent4b3dd2bbf0818ccb23e7f2831f2ca4a86789cd1f
IB/uverbs: Remove the ib_uverbs_attr pointer from each attr

Memory in the bundle is valuable, do not waste it holding an 8 byte
pointer for the rare case of writing to a PTR_OUT. We can compute the
pointer by storing a small 1 byte array offset and the base address of the
uattr memory in the bundle private memory.

This also means we can access the kernel's copy of the ib_uverbs_attr, so
drop the copy of flags as well.

Since the uattr base should be private bundle information this also
de-inlines the already too big uverbs_copy_to inline and moves
create_udata into uverbs_ioctl.c so they can see the private struct
definition.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
drivers/infiniband/core/uverbs_ioctl.c
drivers/infiniband/core/uverbs_std_types.c
include/rdma/uverbs_ioctl.h