)]}'
{
  "commit": "6dc0c2082b8acf30c9239fbbcc051eebdaf7ecff",
  "tree": "709bc082b259b1a0bf2dfbc6a5aee4a7aaf343de",
  "parents": [
    "09c7d8293a2d1317d16ef4ddb9f6dd2553d0694e"
  ],
  "author": {
    "name": "Al Viro",
    "email": "viro@zeniv.linux.org.uk",
    "time": "Sun Jul 29 00:15:18 2007 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@sunset.davemloft.net",
    "time": "Tue Jul 31 02:28:06 2007 -0700"
  },
  "message": "[BLUETOOTH]: Fix endianness bug in l2cap_sock_listen()\n\nWe loop through psm values, calling __l2cap_get_sock_by_addr(psm, ...)\nuntil we get NULL; then we set -\u003epsm of our socket to htobs(psm).\nIOW, we find unused psm value and put it into our socket.  So far, so\ngood, but...  __l2cap_get_sock_by_addr() compares its argument with\n-\u003epsm of sockets.  IOW, the entire thing works correctly only on\nlittle-endian.  On big-endian we\u0027ll get \"no socket with such psm\"\non the first iteration, since we won\u0027t find a socket with -\u003epsm \u003d\u003d 0x1001.\nWe will happily conclude that 0x1001 is unused and slap htobs(0x1001)\n(i.e. 0x110) into -\u003epsm of our socket.  Of course, the next time around\nthe same thing will repeat and we\u0027ll just get a fsckload of sockets\nwith the same -\u003epsm assigned.\n\nFix: pass htobs(psm) to __l2cap_get_sock_by_addr() there.  All other\ncallers are already passing little-endian values and all places that\nstore something in -\u003epsm are storing little-endian.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "670ff95ca64b1b30048ce72eb82584ca5b17baa3",
      "old_mode": 33188,
      "old_path": "net/bluetooth/l2cap.c",
      "new_id": "b82cbdd1fcb1a6969c2bb7032ed9ca2f77239367",
      "new_mode": 33188,
      "new_path": "net/bluetooth/l2cap.c"
    }
  ]
}
