• Jason Gunthorpe's avatar
    RDMA/bnxt: Fix structure layout for bnxt_re_pd_resp · 958d2c1b
    Jason Gunthorpe authored
    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: default avatarJason Gunthorpe <jgg@mellanox.com>
    958d2c1b
bnxt_re-abi.h 2.92 KB