)]}'
{
  "commit": "a394f83bdfec10b09d8cb111e622556b2e6fd0de",
  "tree": "bc9735ed3ccda810634173f01528741cefc71a6c",
  "parents": [
    "2be8e3ee8efd6f99ce454115c29d09750915021a"
  ],
  "author": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Tue Oct 09 19:59:15 2007 -0700"
  },
  "committer": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Tue Oct 09 19:59:15 2007 -0700"
  },
  "message": "IB/umad: Fix bit ordering and 32-on-64 problems on big endian systems\n\nThe declaration of struct ib_user_mad_reg_req.method_mask[] exported\nto userspace was an array of __u32, but the kernel internally treated\nit as a bitmap made up of longs.  This makes a difference for 64-bit\nbig-endian kernels, where numbering the bits in an array of__u32 gives:\n\n    |31.....0|63....31|95....64|127...96|\n\nwhile numbering the bits in an array of longs gives:\n\n    |63..............0|127............64|\n\n64-bit userspace can handle this by just treating method_mask[] as an\narray of longs, but 32-bit userspace is really stuck: the meaning of\nthe bits in method_mask[] depends on whether the kernel is 32-bit or\n64-bit, and there\u0027s no sane way for userspace to know that.\n\nFix this by updating \u003crdma/ib_user_mad.h\u003e to make it clear that\nmethod_mask[] is an array of longs, and using a compat_ioctl method to\nconvert to an array of 64-bit longs to handle the 32-on-64 problem.\nThis fixes the interface description to match existing behavior (so\nworking binaries continue to work) in almost all situations, and gives\nconsistent semantics in the case of 32-bit userspace that can run on\neither a 32-bit or 64-bit kernel, so that the same binary can work for\nboth 32-on-32 and 32-on-64 systems.\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aee29139368c75b9b32b50141a1ab345126c3d60",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/core/user_mad.c",
      "new_id": "b53eac4611de387b6eb8f831108810205204d5c1",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/core/user_mad.c"
    },
    {
      "type": "modify",
      "old_id": "2a32043d1abd6de08c653cd88a3e85deca143f12",
      "old_mode": 33188,
      "old_path": "include/rdma/ib_user_mad.h",
      "new_id": "29d2c7205a90f17d76928dd1c01ae9940866005c",
      "new_mode": 33188,
      "new_path": "include/rdma/ib_user_mad.h"
    }
  ]
}
