)]}'
{
  "log": [
    {
      "commit": "8a102eed9c4e1d21bad07a8fd97bd4fbf125d966",
      "tree": "9ec99f046b94971db46b08a87d7eab3e84c4acd4",
      "parents": [
        "3df494a32b936aef76d893f5065f962ebd9b9437"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 13 00:34:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] PM: Fix SMP races in the freezer\n\nCurrently, to tell a task that it should go to the refrigerator, we set the\nPF_FREEZE flag for it and send a fake signal to it.  Unfortunately there\nare two SMP-related problems with this approach.  First, a task running on\nanother CPU may be updating its flags while the freezer attempts to set\nPF_FREEZE for it and this may leave the task\u0027s flags in an inconsistent\nstate.  Second, there is a potential race between freeze_process() and\nrefrigerator() in which freeze_process() running on one CPU is reading a\ntask\u0027s PF_FREEZE flag while refrigerator() running on another CPU has just\nset PF_FROZEN for the same task and attempts to reset PF_FREEZE for it.  If\nthe refrigerator wins the race, freeze_process() will state that PF_FREEZE\nhasn\u0027t been set for the task and will set it unnecessarily, so the task\nwill go to the refrigerator once again after it\u0027s been thawed.\n\nTo solve first of these problems we need to stop using PF_FREEZE to tell\ntasks that they should go to the refrigerator.  Instead, we can introduce a\nspecial TIF_*** flag and use it for this purpose, since it is allowed to\nchange the other tasks\u0027 TIF_*** flags and there are special calls for it.\n\nTo avoid the freeze_process()-refrigerator() race we can make\nfreeze_process() to always check the task\u0027s PF_FROZEN flag after it\u0027s read\nits \"freeze\" flag.  We should also make sure that refrigerator() will\nalways reset the task\u0027s \"freeze\" flag after it\u0027s set PF_FROZEN for it.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5c543eff6cc658f46241f1ccb77436d65abbf445",
      "tree": "c8e097efe8b6f5731caecbb23f0c581ece15c3c0",
      "parents": [
        "cf1b939e41c28a31f2052e5c0a6619b5711ad7d0"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sun Dec 10 02:18:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:40 2006 -0800"
      },
      "message": "[PATCH] freezer.h uses task_struct fields\n\nfreezer.h uses task_struct fields so it should include sched.h.\n\n  CC [M]  fs/jfs/jfs_txnmgr.o\nIn file included from fs/jfs/jfs_txnmgr.c:49:\ninclude/linux/freezer.h: In function \u0027frozen\u0027:\ninclude/linux/freezer.h:9: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:9: error: \u0027PF_FROZEN\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h:9: error: (Each undeclared identifier is reported only once\ninclude/linux/freezer.h:9: error: for each function it appears in.)\ninclude/linux/freezer.h: In function \u0027freezing\u0027:\ninclude/linux/freezer.h:17: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:17: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h: In function \u0027freeze\u0027:\ninclude/linux/freezer.h:26: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:26: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h: In function \u0027do_not_freeze\u0027:\ninclude/linux/freezer.h:34: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:34: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h: In function \u0027thaw_process\u0027:\ninclude/linux/freezer.h:43: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:43: error: \u0027PF_FROZEN\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h:44: warning: implicit declaration of function \u0027wake_up_process\u0027\ninclude/linux/freezer.h: In function \u0027frozen_process\u0027:\ninclude/linux/freezer.h:55: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:55: error: dereferencing pointer to incomplete type\ninclude/linux/freezer.h:55: error: \u0027PF_FREEZE\u0027 undeclared (first use in this function)\ninclude/linux/freezer.h:55: error: \u0027PF_FROZEN\u0027 undeclared (first use in this function)\nfs/jfs/jfs_txnmgr.c: In function \u0027freezing\u0027:\ninclude/linux/freezer.h:18: warning: control reaches end of non-void function\nmake[2]: *** [fs/jfs/jfs_txnmgr.o] Error 1\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a9b6f562f14dc28fb4b2415f0f275cede0abe9b5",
      "tree": "8d83009585877bf4c5f263690468d35105058822",
      "parents": [
        "a6d70980602e6f1869ebcdcbfaf55a0a5941583e"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:28 2006 -0800"
      },
      "message": "[PATCH] swsusp: Untangle thaw_processes\n\nMove the loop from thaw_processes() to a separate function and call it\nindependently for kernel threads and user space processes so that the order\nof thawing tasks is clearly visible.\n\nDrop thaw_kernel_threads() which is never used.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ff39593ad0ff7a79a3717edac6634407aa8200c2",
      "tree": "571e02e20d5d211224567d5cc22333196cf6f563",
      "parents": [
        "14b5b7cfaa110b1d25b8f80b01a8c97cf2db30bc"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "ncunningham@linuxmail.org",
        "time": "Wed Dec 06 20:34:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:28 2006 -0800"
      },
      "message": "[PATCH] swsusp: thaw userspace and kernel space separately\n\nModify process thawing so that we can thaw kernel space without thawing\nuserspace, and thaw kernelspace first.  This will be useful in later\npatches, where I intend to get swsusp thawing kernel threads only before\nseeking to free memory.\n\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7dfb71030f7636a0d65200158113c37764552f93",
      "tree": "276b812903d377b16d8828e888552fd256f48aab",
      "parents": [
        "8a05aac2631aa0e6494d9dc990f8c68ed8b8fde7"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "ncunningham@linuxmail.org",
        "time": "Wed Dec 06 20:34:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] Add include/linux/freezer.h and move definitions from sched.h\n\nMove process freezing functions from include/linux/sched.h to freezer.h, so\nthat modifications to the freezer or the kernel configuration don\u0027t require\nrecompiling just about everything.\n\n[akpm@osdl.org: fix ueagle driver]\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
