)]}'
{
  "commit": "aaacf4bb51b243875b203e6ff73b5047636b4efa",
  "tree": "3b9849cb5be8ea60c1b0ddb6b908d57484153747",
  "parents": [
    "dc8c214a9c37eb288b1c4782632649e55d251c68"
  ],
  "author": {
    "name": "Wolfgang Ocker",
    "email": "weo@reccoware.de",
    "time": "Mon Dec 01 13:13:52 2008 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Dec 01 19:55:24 2008 -0800"
  },
  "message": "spi: avoid spidev crash when device is removed\n\nI saw a kernel oops in spidev_remove() when a spidev device was registered\nand I unloaded the SPI master driver:\n\nUnable to handle kernel paging request for data at address 0x00000004\nFaulting instruction address: 0xc01c0c50\nOops: Kernel access of bad area, sig: 11 [#1]\nCDSPR\nModules linked in: spi_ppc4xx(-)\nNIP: c01c0c50 LR: c01bf9e4 CTR: c01c0c34\nREGS: cec89c30 TRAP: 0300   Not tainted  (2.6.27.3izt)\nMSR: 00021000 \u003cME\u003e  CR: 24000228  XER: 20000007\nDEAR: 00000004, ESR: 00800000\nTASK \u003d cf889040[2070] \u0027rmmod\u0027 THREAD: cec88000\nGPR00: 00000000 cec89ce0 cf889040 cec8e000 00000004 cec8e000 ffffffff 00000000\nGPR08: 0000001c c0336380 00000000 c01c0c34 00000001 1001a338 100e0000 100df49c\nGPR16: 100b54c0 100df49c 100ddd20 100f05a8 100b5340 100efd68 00000000 00000000\nGPR24: 100ec008 100f0428 c0327788 c0327794 cec8e0ac cec8e000 c0336380 00000000\nNIP [c01c0c50] spidev_remove+0x1c/0xe4\nLR [c01bf9e4] spi_drv_remove+0x2c/0x3c\nCall Trace:\n[cec89d00] [c01bf9e4] spi_drv_remove+0x2c/0x3c\n[cec89d10] [c01859a0] __device_release_driver+0x78/0xb4\n[cec89d20] [c0185ab0] device_release_driver+0x28/0x44\n[cec89d40] [c0184be8] bus_remove_device+0xac/0xd8\n[cec89d60] [c0183094] device_del+0x100/0x194\n[cec89d80] [c0183140] device_unregister+0x18/0x30\n[cec89da0] [c01bf30c] __unregister+0x20/0x34\n[cec89db0] [c0182778] device_for_each_child+0x38/0x74\n[cec89de0] [c01bf2d0] spi_unregister_master+0x28/0x44\n[cec89e00] [c01bfeac] spi_bitbang_stop+0x1c/0x58\n[cec89e20] [d908a5e0] spi_ppc4xx_of_remove+0x24/0x7c [spi_ppc4xx]\n[...]\n\nIMHO a call to spi_set_drvdata() is missing in spidev_probe(). The patch\nbelow helped.\n\nSigned-off-by: Wolfgang Ocker \u003cweo@reccoware.de\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\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": "89a43755a453bb265ebfa789adca222a8cce1ebe",
      "old_mode": 33188,
      "old_path": "drivers/spi/spidev.c",
      "new_id": "5d869c4d3eb2a2e3dd9f46ae3ebf1cfbd333e61f",
      "new_mode": 33188,
      "new_path": "drivers/spi/spidev.c"
    }
  ]
}
