)]}'
{
  "commit": "c30c9b15187e977ab5928f7276e9dfcd8d6f9460",
  "tree": "d36d7513c5acf1d39f581625ffa5c1915ae5627f",
  "parents": [
    "dd78c9439fc1e031835bccb934d27b978c72c536"
  ],
  "author": {
    "name": "David Fries",
    "email": "david@fries.net",
    "time": "Wed Oct 15 22:04:38 2008 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Thu Oct 16 11:21:49 2008 -0700"
  },
  "message": "W1: fix deadlocks and remove w1_control_thread\n\nw1_control_thread was removed which would wake up every second and process\nnewly registered family codes and complete some final cleanup for a\nremoved master.  Those routines were moved to the threads that were\npreviously requesting those operations.  A new function\nw1_reconnect_slaves takes care of reconnecting existing slave devices when\na new family code is registered or removed.  The removal case was missing\nand would cause a deadlock waiting for the family code reference count to\ndecrease, which will now happen.  A problem with registering a family code\nwas fixed.  A slave device would be unattached if it wasn\u0027t yet claimed,\nthen attached at the end of the list, two unclaimed slaves would cause an\ninfinite loop.\n\nThe struct w1_bus_master.search now takes a pointer to the struct\nw1_master device to avoid searching for it, which would have caused a\nlock ordering deadlock with the removal of w1_control_thread.\n\nSigned-off-by: David Fries \u003cdavid@fries.net\u003e\nSigned-off-by: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\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": "10211e493001582e0a5b27f549a4c9c00f3a6e5a",
      "old_mode": 33188,
      "old_path": "drivers/w1/masters/ds1wm.c",
      "new_id": "ea894bf181136d79053222eb102a383748c2e13f",
      "new_mode": 33188,
      "new_path": "drivers/w1/masters/ds1wm.c"
    },
    {
      "type": "modify",
      "old_id": "7293c9b11f9160e2b80f89e8e9c63d6bdfd6553f",
      "old_mode": 33188,
      "old_path": "drivers/w1/w1.c",
      "new_id": "25640f6817292d080e6a53d346ff07a1c18dc77d",
      "new_mode": 33188,
      "new_path": "drivers/w1/w1.c"
    },
    {
      "type": "modify",
      "old_id": "f1df5343f4ad4a25ab87f7c1782216f1135eec33",
      "old_mode": 33188,
      "old_path": "drivers/w1/w1.h",
      "new_id": "13e0ea880bf87ff7baa79ec2c984776b8e356d01",
      "new_mode": 33188,
      "new_path": "drivers/w1/w1.h"
    },
    {
      "type": "modify",
      "old_id": "a3c95bd6890af7ae20a8c63b00d3b0082f714ad0",
      "old_mode": 33188,
      "old_path": "drivers/w1/w1_family.c",
      "new_id": "8c35f9ccb6897dd96bded60f375cad838536c996",
      "new_mode": 33188,
      "new_path": "drivers/w1/w1_family.c"
    },
    {
      "type": "modify",
      "old_id": "ef1e1dafa19a36c61a24d2fa126d9f9bd4cda118",
      "old_mode": 33188,
      "old_path": "drivers/w1/w1_family.h",
      "new_id": "296a87edd92250b1a78bfa07c607e32e9b4caf54",
      "new_mode": 33188,
      "new_path": "drivers/w1/w1_family.h"
    },
    {
      "type": "modify",
      "old_id": "6840dfebe4d4c82a5abc242a8ee1d66570f100ab",
      "old_mode": 33188,
      "old_path": "drivers/w1/w1_int.c",
      "new_id": "ed3228017dad0fa89813f071b84fe4803e4413d2",
      "new_mode": 33188,
      "new_path": "drivers/w1/w1_int.c"
    },
    {
      "type": "modify",
      "old_id": "30b6fbf83bd4a9fcead97864e679d6c7bd222d07",
      "old_mode": 33188,
      "old_path": "drivers/w1/w1_io.c",
      "new_id": "0056ef69009b8fb7a387daf7bca8e785ee75de69",
      "new_mode": 33188,
      "new_path": "drivers/w1/w1_io.c"
    }
  ]
}
