)]}'
{
  "commit": "181e9bdef37bfcaa41f3ab6c948a2a0d60a268b5",
  "tree": "66e69f83b63e8517a47e0eb0e7ae730d8a9a109b",
  "parents": [
    "0a9626575400879d1d5e6bc8768188b938d7c501"
  ],
  "author": {
    "name": "Rafael J. Wysocki",
    "email": "rjw@sisk.pl",
    "time": "Sun Jan 29 20:35:52 2012 +0100"
  },
  "committer": {
    "name": "Rafael J. Wysocki",
    "email": "rjw@sisk.pl",
    "time": "Sun Jan 29 20:35:52 2012 +0100"
  },
  "message": "PM / Hibernate: Fix s2disk regression related to freezing workqueues\n\nCommit 2aede851ddf08666f68ffc17be446420e9d2a056\n\n  PM / Hibernate: Freeze kernel threads after preallocating memory\n\nintroduced a mechanism by which kernel threads were frozen after\nthe preallocation of hibernate image memory to avoid problems with\nfrozen kernel threads not responding to memory freeing requests.\nHowever, it overlooked the s2disk code path in which the\nSNAPSHOT_CREATE_IMAGE ioctl was run directly after SNAPSHOT_FREE,\nwhich caused freeze_workqueues_begin() to BUG(), because it saw\nthat worqueues had been already frozen.\n\nAlthough in principle this issue might be addressed by removing\nthe relevant BUG_ON() from freeze_workqueues_begin(), that would\nreintroduce the very problem that commit 2aede851ddf08666f68ffc17be4\nattempted to avoid into that particular code path.  For this reason,\nto fix the issue at hand, introduce thaw_kernel_threads() and make\nthe SNAPSHOT_FREE ioctl execute it.\n\nSpecial thanks to Srivatsa S. Bhat for detailed analysis of the\nproblem.\n\nReported-and-tested-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: stable@kernel.org\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0ab54e16a91f499b37db61fcd2be564232144a4a",
      "old_mode": 33188,
      "old_path": "include/linux/freezer.h",
      "new_id": "d09af4b67cf121ad91fd4ca02bec01560b6110fd",
      "new_mode": 33188,
      "new_path": "include/linux/freezer.h"
    },
    {
      "type": "modify",
      "old_id": "77274c9ba2f1a95862787e041254f736539a1264",
      "old_mode": 33188,
      "old_path": "kernel/power/process.c",
      "new_id": "eeca00311f39568a7baa237364d58c3788d000cc",
      "new_mode": 33188,
      "new_path": "kernel/power/process.c"
    },
    {
      "type": "modify",
      "old_id": "6b1ab7a88522827cc1ec5cdd3f0cdfa62d56accf",
      "old_mode": 33188,
      "old_path": "kernel/power/user.c",
      "new_id": "e5a21a857302e5e596e54eb3f8f6a00e8a342cae",
      "new_mode": 33188,
      "new_path": "kernel/power/user.c"
    }
  ]
}
