aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core
diff options
context:
space:
mode:
authorJason Gunthorpe <jgg@mellanox.com>2018-03-15 21:18:14 -0600
committerJason Gunthorpe <jgg@mellanox.com>2018-03-19 11:41:40 -0600
commit958d2c1ba37680b765a089dc374cc199fb61619b (patch)
tree87a9c84265096138f232de4a8f8df6ce3ac821f3 /drivers/infiniband/core
parentIB/mlx5: Set the default active rate and width to QDR and 4X (diff)
downloadlinux-dev-958d2c1ba37680b765a089dc374cc199fb61619b.tar.xz
linux-dev-958d2c1ba37680b765a089dc374cc199fb61619b.zip
RDMA/bnxt: Fix structure layout for bnxt_re_pd_resp
What is going on here is a bit subtle, in the kernel there is no problem because the struct is copied using copy_from_user, so it can safely have an 8 byte alignment, however in userspace it must be constructed by concatenation with the ib_uverbs_alloc_pd_resp struct. This is due to the required memory layout to execute the command. Since ibv_uverbs_alloc_pd_resp is only 4 bytes long, this causes misalignment, and the user space will experience an unexpected padding. Currently it works around this via pointer maths. Make everything more robust by having the compiler reduce the alignment of the struct to 4. The userspace has assertions to ensure this works properly in all situations. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/infiniband/core')
0 files changed, 0 insertions, 0 deletions