)]}'
{
  "commit": "a684e7d33096892093456dd56a582cfc3bfad648",
  "tree": "25f1225b14a1e4f5abca7565203e6410e0de34cc",
  "parents": [
    "a70dcb969f64e2fa98c24f47854f20bf02ff0092"
  ],
  "author": {
    "name": "Geert Uytterhoeven",
    "email": "Geert.Uytterhoeven@sonycom.com",
    "time": "Thu Nov 06 12:53:37 2008 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Nov 06 15:41:19 2008 -0800"
  },
  "message": "fbdev: fix fb_compat_ioctl() deadlocks\n\ncommit 3e680aae4e53ab54cdbb0c29257dae0cbb158e1c (\"fb: convert\nlock/unlock_kernel() into local fb mutex\") introduced several deadlocks\nin the fb_compat_ioctl() path, as mutex_lock() doesn\u0027t allow recursion,\nunlike lock_kernel().  This broke frame buffer applications on 64-bit\nsystems with a 32-bit userland.\n\ncommit 120a37470c2831fea49fdebaceb5a7039f700ce6 (\"framebuffer compat_ioctl\ndeadlock\") fixed one of the deadlocks.\n\nThis patch fixes the remaining deadlocks:\n  - Revert commit 120a37470c2831fea49fdebaceb5a7039f700ce6,\n  - Extract the core logic of fb_ioctl() into a new function do_fb_ioctl(),\n  - Change all callsites of fb_ioctl() where info-\u003elock is already held to\n    call do_fb_ioctl() instead,\n  - Add sparse annotations to all routines that take info-\u003elock.\n\nSigned-off-by: Geert Uytterhoeven \u003cGeert.Uytterhoeven@sonycom.com\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: Krzysztof Helt \u003ckrzysztof.h1@wp.pl\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6048b55f2878b8755179c0641785ac89fe217b4b",
      "old_mode": 33188,
      "old_path": "drivers/video/fbmem.c",
      "new_id": "1d5ae39cb271ecb3219f9089ef9366f532f93efe",
      "new_mode": 33188,
      "new_path": "drivers/video/fbmem.c"
    }
  ]
}
