)]}'
{
  "commit": "4e9e92003529e5c7bb11281f7c2c9b3fe8858403",
  "tree": "07169c9a996a119aebb5865a76ff1177afe90a22",
  "parents": [
    "f4e2332cfcf900e0a926c4e0fc35f751bcbcaa1b"
  ],
  "author": {
    "name": "Pete Zaitcev",
    "email": "zaitcev@redhat.com",
    "time": "Thu Jun 11 08:53:20 2009 -0600"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Wed Sep 23 06:46:19 2009 -0700"
  },
  "message": "USB: usbmon: end ugly tricks with DMA peeking\n\nThis patch fixes crashes when usbmon attempts to access GART aperture.\nThe old code attempted to take a bus address and convert it into a\nvirtual address, which clearly was impossible on systems with actual\nIOMMUs. Let us not persist in this foolishness, and use transfer_buffer\nin all cases instead.\n\nI think downsides are negligible. The ones I see are:\n - A driver may pass an address of one buffer down as transfer_buffer,\n   and entirely different entity mapped for DMA, resulting in misleading\n   output of usbmon. Note, however, that PIO based controllers would\n   do transfer the same data that usbmon sees here.\n - Out of tree drivers may crash usbmon if they store garbage in\n   transfer_buffer. I inspected the in-tree drivers, and clarified\n   the documentation in comments.\n - Drivers that use get_user_pages will not be possible to monitor.\n   I only found one driver with this problem (drivers/staging/rspiusb).\n - Same happens with with usb_storage transferring from highmem, but\n   it works fine on 64-bit systems, so I think it\u0027s not a concern.\n   At least we don\u0027t crash anymore.\n\nWhy didn\u0027t we do this in 2.6.10? That\u0027s because back in those days\nit was popular not to fill in transfer_buffer, so almost all\ntraffic would be invisible (e.g. all of HID was like that).\nBut now, the tree is almost 100% PIO friendly, so we can do the\nright thing at last.\n\nSigned-off-by: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c6516b56673182cd6a3425f4ee495d83c6320eb1",
      "old_mode": 33188,
      "old_path": "drivers/usb/mon/Makefile",
      "new_id": "384b198faa7c0365f941267cee267cf8587e4153",
      "new_mode": 33188,
      "new_path": "drivers/usb/mon/Makefile"
    },
    {
      "type": "modify",
      "old_id": "0f7a30b7d2d16e08f7c63ddc1711833d0667fc15",
      "old_mode": 33188,
      "old_path": "drivers/usb/mon/mon_bin.c",
      "new_id": "dfdc43e2e00df86414fd2097e24a578c53e16174",
      "new_mode": 33188,
      "new_path": "drivers/usb/mon/mon_bin.c"
    },
    {
      "type": "delete",
      "old_id": "140cc80bd2b1d085fe438663237be4cfd16ba124",
      "old_mode": 33188,
      "old_path": "drivers/usb/mon/mon_dma.c",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "5e0ab4201c00894def56d3c182461173c89344c7",
      "old_mode": 33188,
      "old_path": "drivers/usb/mon/mon_main.c",
      "new_id": "e0c2db3b767b7cb91539e1ed1fe8f386beebc268",
      "new_mode": 33188,
      "new_path": "drivers/usb/mon/mon_main.c"
    },
    {
      "type": "modify",
      "old_id": "a7eb4c99342c91d0fabdb8a6d9beab5e09b093b9",
      "old_mode": 33188,
      "old_path": "drivers/usb/mon/mon_text.c",
      "new_id": "9f1a9227ebe6571454ee3081d4df80ec5490f4c7",
      "new_mode": 33188,
      "new_path": "drivers/usb/mon/mon_text.c"
    },
    {
      "type": "modify",
      "old_id": "f5d84ff8c101b2c783a5b3cca9307ffb600ed21c",
      "old_mode": 33188,
      "old_path": "drivers/usb/mon/usb_mon.h",
      "new_id": "df9a4df342c7b80fdf28049ccfaa331a8279e2ea",
      "new_mode": 33188,
      "new_path": "drivers/usb/mon/usb_mon.h"
    },
    {
      "type": "modify",
      "old_id": "19fabc487bebfed827a835e6555b718a61a04ccc",
      "old_mode": 33188,
      "old_path": "include/linux/usb.h",
      "new_id": "3b45a0d27b80e1a6559c4b9cbdf2be3aaec2b14c",
      "new_mode": 33188,
      "new_path": "include/linux/usb.h"
    }
  ]
}
