IB/uverbs: Use inline data transfer for UHW_IN
authorJason Gunthorpe <jgg@mellanox.com>
Tue, 13 Feb 2018 10:18:30 +0000 (12:18 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 15 Feb 2018 21:59:44 +0000 (14:59 -0700)
commit6c976c30ad1c205bd6e34182c5ba9a1267d752ca
tree067a09af8ce5420766a1e8c6f7af8c1315a355d5
parent89d9e8d3f14d807bbd7725f8f6f5eeb7f6f5c42f
IB/uverbs: Use inline data transfer for UHW_IN

The rule for the API is pointers less than 8 bytes are inlined into
the .data field of the attribute. Fix the creation of the driver udata
struct to follow this rule and point to the .data itself when the size
is less than 8 bytes.

Otherwise if the UHW struct is less than 8 bytes the driver will get
EFAULT during copy_from_user.

Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/uverbs_std_types.c