[PATCH 0/6] Fix uABI structure layouts for 32/64 compat

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jason Gunthorpe <jgg@xxxxxxxxxxxx>

The design of the uAPI had intended all structs to share the same layout on 32
and 64 bit compiles. Unfortunately over the years some errors have crept in.

This series fixes all the incompatabilities. It goes along with a userspace
rdma-core series that causes the providers to use these structs directly and
then does various self-checks on the command formation.

Those checks were combined with output from pahole on 32 and 64 bit compiles
to confirm that the structure layouts are the same.

This series does not make implicit padding explicit, as long as the implicit
padding is the same on 32 and 64 bit compiles.

Finally, the issue is put to rest by using __aligned_u64 in the uapi headers,
if new code copies that type, and is checked in userspace, it is unlikely we
will see problems in future.

There are two patches that break the ABI for a 32 bit kernel, one for rxe and
one for mlx4. Both patches have notes, but the overall feeling from Doug and I
is that providing compat is just too difficult and not necessary since there
is no real user of a 32 bit userspace and 32 bit kernel for various good
reasons.

The 32 bit userspace / 64 bit kernel case however does seem to have some real
users and does need to work as designed.

Jason Gunthorpe (6):
  RDMA: Remove minor pahole differences between 32/64
  RDMA/ucma: Fix uABI structure layouts for 32/64 compat
  RDMA/qedr: Fix uABI structure layouts for 32/64 compat
  RDMA/mlx4: Fix uABI structure layouts for 32/64 compat
  RDMA/rxe: Fix uABI structure layouts for 32/64 compat
  RDMA: Change all uapi headers to use __aligned_u64 instead of __u64

 drivers/infiniband/core/ucma.c     |   9 ++-
 drivers/infiniband/sw/rxe/rxe.h    |   6 +-
 include/uapi/rdma/bnxt_re-abi.h    |  14 ++--
 include/uapi/rdma/cxgb3-abi.h      |  12 +--
 include/uapi/rdma/cxgb4-abi.h      |  24 +++---
 include/uapi/rdma/hfi/hfi1_ioctl.h |  32 ++++----
 include/uapi/rdma/hfi/hfi1_user.h  |   4 +-
 include/uapi/rdma/hns-abi.h        |  14 ++--
 include/uapi/rdma/i40iw-abi.h      |  12 +--
 include/uapi/rdma/ib_user_cm.h     |  48 +++++------
 include/uapi/rdma/ib_user_mad.h    |   4 +-
 include/uapi/rdma/ib_user_verbs.h  | 158 ++++++++++++++++++-------------------
 include/uapi/rdma/mlx4-abi.h       |  25 +++---
 include/uapi/rdma/mlx5-abi.h       |  40 +++++-----
 include/uapi/rdma/mthca-abi.h      |  10 +--
 include/uapi/rdma/nes-abi.h        |   6 +-
 include/uapi/rdma/ocrdma-abi.h     |  30 +++----
 include/uapi/rdma/qedr-abi.h       |  20 +++--
 include/uapi/rdma/rdma_user_cm.h   |  39 +++++----
 include/uapi/rdma/rdma_user_rxe.h  |  34 +++++---
 include/uapi/rdma/vmw_pvrdma-abi.h |  49 ++++++------
 21 files changed, 310 insertions(+), 280 deletions(-)

-- 
2.16.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux