)]}'
{
  "commit": "cfafca8067c6defbaeb28cb898b7b3f8abdfe20d",
  "tree": "93c5bae1e14a4d9bec3e9396c5dd9ef0fecfaf1d",
  "parents": [
    "afd1db1632c3f8f95cbc2786bfa122cead79db58"
  ],
  "author": {
    "name": "Jesse Barnes",
    "email": "jesse.barnes@intel.com",
    "time": "Tue Jul 17 04:05:33 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Tue Jul 17 10:23:11 2007 -0700"
  },
  "message": "fbdev: fbcon: console unregistration from unregister_framebuffer\n\nThis allows for proper console unregistration via the VT layer, and updates\nthe FB layer to use it.  This makes debugging new console drivers much easier,\nsince you can properly clean them up before unloading.\n\n[adaplas]\nunregister_framebuffer() is typically called as part of the driver\u0027s\nmodule_exit(). Doing so otherwise will freeze the machine as the VT layer is\nholding reference counts on fbcon, and fbcon on the driver.  With this change,\nit allows unregister_framebuffer() to be called safely anywhere as needed.\n\nAdditions from the original:  If multiple drivers are used by fbcon, and if\none of them unregisters, a driver will take over the consoles vacated by the\noutgoing one (via set_con2fb_map).   Once only the outgoing driver remains,\nthen fbcon will unbind from the VT layer (if CONFIG_HW_CONSOLE_UNBINDING is\nset to y).\n\nIt is important that these drivers implement fb_open() and fb_release()\njust to ensure that no other process is using the driver. Likewise, these\ndrivers _must_ check the return value of unregister_framebuffer().\n\n[akpm@linux-foundation.org: make fbcon_unbind() stub inline]\nSigned-off-by: Jesse Barnes \u003cjesse.barnes@intel.com\u003e\nSigned-off-by: Antonino Daplas \u003cadaplas@gmail.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\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": "9b66331020dd3cd2302de8028c5f53f6f684bb1b",
      "old_mode": 33188,
      "old_path": "drivers/video/console/fbcon.c",
      "new_id": "decfdc8eb9cc8b255572bd28376570ea102a08e7",
      "new_mode": 33188,
      "new_path": "drivers/video/console/fbcon.c"
    },
    {
      "type": "modify",
      "old_id": "8d6dbe8b8dd14b08c4ebb391eb33d9318207acd3",
      "old_mode": 33188,
      "old_path": "drivers/video/fbmem.c",
      "new_id": "7f3a0cca0fd4f8eecfc4d185c2b958fe5c0bdf14",
      "new_mode": 33188,
      "new_path": "drivers/video/fbmem.c"
    },
    {
      "type": "modify",
      "old_id": "66226824ab68b4bd106525c820d8803934c054ed",
      "old_mode": 33188,
      "old_path": "include/linux/fb.h",
      "new_id": "8628423c6dd37864d68463315af687c705bff799",
      "new_mode": 33188,
      "new_path": "include/linux/fb.h"
    }
  ]
}
