)]}'
{
  "log": [
    {
      "commit": "34b087e48367c252e343c2f8de65676a78af1e4a",
      "tree": "fbe94bad0a3073c6f4231752fba99c6bc8702277",
      "parents": [
        "adfa543e7314b36ac55a40019977de6e47946dd7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 23 09:28:17 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Nov 23 09:28:17 2011 -0800"
      },
      "message": "freezer: kill unused set_freezable_with_signal()\n\nThere\u0027s no in-kernel user of set_freezable_with_signal() left.  Mixing\nTIF_SIGPENDING with kernel threads can lead to nasty corner cases as\nkernel threads never travel signal delivery path on their own.\n\ne.g. the current implementation is buggy in the cancelation path of\n__thaw_task().  It calls recalc_sigpending_and_wake() in an attempt to\nclear TIF_SIGPENDING but the function never clears it regardless of\nsigpending state.  This means that signallable freezable kthreads may\ncontinue executing with !freezing() \u0026\u0026 stuck TIF_SIGPENDING, which can\nbe troublesome.\n\nThis patch removes set_freezable_with_signal() along with\nPF_FREEZER_NOSIG and recalc_sigpending*() calls in freezer.  User\ntasks get TIF_SIGPENDING, kernel tasks get woken up and the spurious\nsigpending is dealt with in the usual signal delivery path.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "839e3407d90a810318d17c17ceb3d5928a910704",
      "tree": "9b75e8f69cadba5d33537698931cf637a22d423b",
      "parents": [
        "37ad8aca94a1da2112a7c56151390914e80d1113"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "message": "freezer: remove unused @sig_only from freeze_task()\n\nAfter \"freezer: make freezing() test freeze conditions in effect\ninstead of TIF_FREEZE\", freezing() returns authoritative answer on\nwhether the current task should freeze or not and freeze_task()\ndoesn\u0027t need or use @sig_only.  Remove it.\n\nWhile at it, rewrite function comment for freeze_task() and rename\n@sig_only to @user_only in try_to_freeze_tasks().\n\nThis patch doesn\u0027t cause any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "37ad8aca94a1da2112a7c56151390914e80d1113",
      "tree": "daf5f8956aa7fa7b8d3e15aaf67dd3d6fc6f2375",
      "parents": [
        "5ece3eae4cdb968c269e0bc7e2c0e2b223552025"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "message": "freezer: use lock_task_sighand() in fake_signal_wake_up()\n\ncgroup_freezer calls freeze_task() without holding tasklist_lock and,\nif the task is exiting, its -\u003esighand may be gone by the time\nfake_signal_wake_up() is called.  Use lock_task_sighand() instead of\naccessing -\u003esighand directly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\n"
    },
    {
      "commit": "5ece3eae4cdb968c269e0bc7e2c0e2b223552025",
      "tree": "8e38ac6fc88864eff7fbbe3fa3671a4b76cfd8e9",
      "parents": [
        "96ee6d8539c9fc6742908d85eb9723abb5c91854"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:26 2011 -0800"
      },
      "message": "freezer: restructure __refrigerator()\n\nIf another freeze happens before all tasks leave FROZEN state after\nbeing thawed, the freezer can see the existing FROZEN and consider the\ntasks to be frozen but they can clear FROZEN without checking the new\nfreezing().\n\nOleg suggested restructuring __refrigerator() such that there\u0027s single\ncondition check section inside freezer_lock and sigpending is cleared\nafterwards, which fixes the problem and simplifies the code.\nRestructure accordingly.\n\n-v2: Frozen loop exited without releasing freezer_lock.  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "96ee6d8539c9fc6742908d85eb9723abb5c91854",
      "tree": "0c042d74508c777c33744e5a917ac16e057f073b",
      "parents": [
        "948246f70a811c872b9d93bb4a8ab5823c4c79e0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "freezer: fix set_freezable[_with_signal]() race\n\nA kthread doing set_freezable*() may race with on-going PM freeze and\nthe freezer might think all tasks are frozen while the new freezable\nkthread is merrily proceeding to execute code paths which aren\u0027t\nsupposed to be executing during PM freeze.\n\nReimplement set_freezable[_with_signal]() using __set_freezable() such\nthat freezable PF flags are modified under freezer_lock and\ntry_to_freeze() is called afterwards.  This eliminates race condition\nagainst freezing.\n\nNote: Separated out from larger patch to resolve fix order dependency\n      Oleg pointed out.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "948246f70a811c872b9d93bb4a8ab5823c4c79e0",
      "tree": "385fee0509ba5e05f1f651c8b86b7b56a0518163",
      "parents": [
        "d88e4cb67197d007fb778d62fe17360e970d5bfa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "freezer: remove should_send_signal() and update frozen()\n\nshould_send_signal() is only used in freezer.c.  Exporting them only\nincreases chance of abuse.  Open code the two users and remove it.\n\nUpdate frozen() to return bool.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a3201227f803ad7fd43180c5195dbe5a2bf998aa",
      "tree": "1845ba06346f8a8772fe1c90f8960bd1a430d05c",
      "parents": [
        "22b4e111fa01a1147aa562ceaf18a752a928ef4e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:25 2011 -0800"
      },
      "message": "freezer: make freezing() test freeze conditions in effect instead of TIF_FREEZE\n\nUsing TIF_FREEZE for freezing worked when there was only single\nfreezing condition (the PM one); however, now there is also the\ncgroup_freezer and single bit flag is getting clumsy.\nthaw_processes() is already testing whether cgroup freezing in in\neffect to avoid thawing tasks which were frozen by both PM and cgroup\nfreezers.\n\nThis is racy (nothing prevents race against cgroup freezing) and\nfragile.  A much simpler way is to test actual freeze conditions from\nfreezing() - ie. directly test whether PM or cgroup freezing is in\neffect.\n\nThis patch adds variables to indicate whether and what type of\nfreezing conditions are in effect and reimplements freezing() such\nthat it directly tests whether any of the two freezing conditions is\nactive and the task should freeze.  On fast path, freezing() is still\nvery cheap - it only tests system_freezing_cnt.\n\nThis makes the clumsy dancing aroung TIF_FREEZE unnecessary and\nfreeze/thaw operations more usual - updating state variables for the\nnew state and nudging target tasks so that they notice the new state\nand comply.  As long as the nudging happens after state update, it\u0027s\nrace-free.\n\n* This allows use of freezing() in freeze_task().  Replace the open\n  coded tests with freezing().\n\n* p !\u003d current test is added to warning printing conditions in\n  try_to_freeze_tasks() failure path.  This is necessary as freezing()\n  is now true for the task which initiated freezing too.\n\n-v2: Oleg pointed out that re-freezing FROZEN cgroup could increment\n     system_freezing_cnt.  Fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Paul Menage \u003cpaul@paulmenage.org\u003e  (for the cgroup portions)\n"
    },
    {
      "commit": "03afed8bc296fa70186ba832c1126228bb992465",
      "tree": "96d0a6a9bffdcfc678d31f21caa88e43693bde94",
      "parents": [
        "376fede80e74d98b49d1ba9ac18f23c9fd026ddd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "message": "freezer: clean up freeze_processes() failure path\n\nfreeze_processes() failure path is rather messy.  Freezing is canceled\nfor workqueues and tasks which aren\u0027t frozen yet but frozen tasks are\nleft alone and should be thawed by the caller and of course some\ncallers (xen and kexec) didn\u0027t do it.\n\nThis patch updates __thaw_task() to handle cancelation correctly and\nmakes freeze_processes() and freeze_kernel_threads() call\nthaw_processes() on failure instead so that the system is fully thawed\non failure.  Unnecessary [suspend_]thaw_processes() calls are removed\nfrom kernel/power/hibernate.c, suspend.c and user.c.\n\nWhile at it, restructure error checking if clause in suspend_prepare()\nto be less weird.\n\n-v2: Srivatsa spotted missing removal of suspend_thaw_processes() in\n     suspend_prepare() and error in commit message.  Updated.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "376fede80e74d98b49d1ba9ac18f23c9fd026ddd",
      "tree": "78a48a9565efabba585dd9253c6f2c12966a995e",
      "parents": [
        "85f1d476653f52c97ca75466b2494e67c1cbd25d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "message": "freezer: kill PF_FREEZING\n\nWith the previous changes, there\u0027s no meaningful difference between\nPF_FREEZING and PF_FROZEN.  Remove PF_FREEZING and use PF_FROZEN\ninstead in task_contributes_to_load().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "85f1d476653f52c97ca75466b2494e67c1cbd25d",
      "tree": "a1839143272cc4e6593e5d4c97e8a3c39aed08ff",
      "parents": [
        "6907483b4e803a20f0b48cc9afa3817420ce61c5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "message": "freezer: test freezable conditions while holding freezer_lock\n\ntry_to_freeze_tasks() and thaw_processes() use freezable() and\nfrozen() as preliminary tests before initiating operations on a task.\nThese are done without any synchronization and hinder with\nsynchronization cleanup without any real performance benefits.\n\nIn try_to_freeze_tasks(), open code self test and move PF_NOFREEZE and\nfrozen() tests inside freezer_lock in freeze_task().\n\nthaw_processes() can simply drop freezable() test as frozen() test in\n__thaw_task() is enough.\n\nNote: This used to be a part of larger patch to fix set_freezable()\n      race.  Separated out to satisfy ordering among dependent fixes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "6907483b4e803a20f0b48cc9afa3817420ce61c5",
      "tree": "9f4b7cbe59eae0c6f59d704e4f465d537c172479",
      "parents": [
        "0c9af09262864a2744091ee94c98c4a8fd60c98b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "message": "freezer: make freezing indicate freeze condition in effect\n\nCurrently freezing (TIF_FREEZE) and frozen (PF_FROZEN) states are\ninterlocked - freezing is set to request freeze and when the task\nactually freezes, it clears freezing and sets frozen.\n\nThis interlocking makes things more complex than necessary - freezing\ndoesn\u0027t mean there\u0027s freezing condition in effect and frozen doesn\u0027t\nmatch the task actually entering and leaving frozen state (it\u0027s\ncleared by the thawing task).\n\nThis patch makes freezing indicate that freeze condition is in effect.\nA task enters and stays frozen if freezing.  This makes PF_FROZEN\nmanipulation done only by the task itself and prevents wakeup from\n__thaw_task() leaking outside of refrigerator.\n\nThe only place which needs to tell freezing \u0026\u0026 !frozen is\ntry_to_freeze_task() to whine about tasks which don\u0027t enter frozen.\nIt\u0027s updated to test the condition explicitly.\n\nWith the change, frozen() state my linger after __thaw_task() until\nthe task wakes up and exits fridge.  This can trigger BUG_ON() in\nupdate_if_frozen().  Work it around by testing freezing() \u0026\u0026 frozen()\ninstead of frozen().\n\n-v2: Oleg pointed out missing re-check of freezing() when trying to\n     clear FROZEN and possible spurious BUG_ON() trigger in\n     update_if_frozen().  Both fixed.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Paul Menage \u003cpaul@paulmenage.org\u003e\n"
    },
    {
      "commit": "0c9af09262864a2744091ee94c98c4a8fd60c98b",
      "tree": "e7dacbb7f370e0d7c515ed743a2c5b5179a1de5e",
      "parents": [
        "6cd8dedcdd8e8de01391a7cf25f0b2afeb24f8f4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:24 2011 -0800"
      },
      "message": "freezer: use dedicated lock instead of task_lock() + memory barrier\n\nFreezer synchronization is needlessly complicated - it\u0027s by no means a\nhot path and the priority is staying unintrusive and safe.  This patch\nmakes it simply use a dedicated lock instead of piggy-backing on\ntask_lock() and playing with memory barriers.\n\nOn the failure path of try_to_freeze_tasks(), locking is moved from it\nto cancel_freezing().  This makes the frozen() test racy but the race\nhere is a non-issue as the warning is printed for tasks which failed\nto enter frozen for 20 seconds and race on PF_FROZEN at the last\nmoment doesn\u0027t change anything.\n\nThis simplifies freezer implementation and eases further changes\nincluding some race fixes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a5be2d0d1a8746e7be5210e3d6b904455000443c",
      "tree": "1dcfa2725057a73059a3f768f5f5f7825b5d56ef",
      "parents": [
        "8a32c441c1609f80e55df75422324a1151208f40"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "message": "freezer: rename thaw_process() to __thaw_task() and simplify the implementation\n\nthaw_process() now has only internal users - system and cgroup\nfreezers.  Remove the unnecessary return value, rename, unexport and\ncollapse __thaw_process() into it.  This will help further updates to\nthe freezer code.\n\n-v3: oom_kill grew a use of thaw_process() while this patch was\n     pending.  Convert it to use __thaw_task() for now.  In the longer\n     term, this should be handled by allowing tasks to die if killed\n     even if it\u0027s frozen.\n\n-v2: minor style update as suggested by Matt.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\n"
    },
    {
      "commit": "8a32c441c1609f80e55df75422324a1151208f40",
      "tree": "73884b06cc2db3ea155af9a88815bb5105a4473e",
      "parents": [
        "a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:23 2011 -0800"
      },
      "message": "freezer: implement and use kthread_freezable_should_stop()\n\nWriteback and thinkpad_acpi have been using thaw_process() to prevent\ndeadlock between the freezer and kthread_stop(); unfortunately, this\nis inherently racy - nothing prevents freezing from happening between\nthaw_process() and kthread_stop().\n\nThis patch implements kthread_freezable_should_stop() which enters\nrefrigerator if necessary but is guaranteed to return if\nkthread_stop() is invoked.  Both thaw_process() users are converted to\nuse the new function.\n\nNote that this deadlock condition exists for many of freezable\nkthreads.  They need to be converted to use the new should_stop or\nfreezable workqueue.\n\nTested with synthetic test case.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Henrique de Moraes Holschuh \u003cibm-acpi@hmh.eng.br\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6",
      "tree": "0b763388360a5a9043986e1f2201e43df74ebc46",
      "parents": [
        "3a7cbd50f74907580eb47a8d08e1f29741b81abf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "message": "freezer: unexport refrigerator() and update try_to_freeze() slightly\n\nThere is no reason to export two functions for entering the\nrefrigerator.  Calling refrigerator() instead of try_to_freeze()\ndoesn\u0027t save anything noticeable or removes any race condition.\n\n* Rename refrigerator() to __refrigerator() and make it return bool\n  indicating whether it scheduled out for freezing.\n\n* Update try_to_freeze() to return bool and relay the return value of\n  __refrigerator() if freezing().\n\n* Convert all refrigerator() users to try_to_freeze().\n\n* Update documentation accordingly.\n\n* While at it, add might_sleep() to try_to_freeze().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "50fb4f7fc907efff65eadb0b74387a9ffed6e849",
      "tree": "e3392afa49a97c187d7e63f3fee862aef9e342ed",
      "parents": [
        "6fe4c6d466e95d31164f14b1ac4aefb51f0f4f82"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "message": "freezer: fix current-\u003estate restoration race in refrigerator()\n\nrefrigerator() saves current-\u003estate before entering frozen state and\nrestores it before returning using __set_current_state(); however,\nthis is racy, for example, please consider the following sequence.\n\n\tset_current_state(TASK_INTERRUPTIBLE);\n\ttry_to_freeze();\n\tif (kthread_should_stop())\n\t\tbreak;\n\tschedule();\n\nIf kthread_stop() races with -\u003estate restoration, the restoration can\nrestore -\u003estate to TASK_INTERRUPTIBLE after kthread_stop() sets it to\nTASK_RUNNING but kthread_should_stop() may still see zero\n-\u003eshould_stop because there\u0027s no memory barrier between restoring\nTASK_INTERRUPTIBLE and kthread_should_stop() test.\n\nThis isn\u0027t restricted to kthread_should_stop().  current-\u003estate is\noften used in memory barrier based synchronization and silently\nrestoring it w/o mb breaks them.\n\nUse set_current_state() instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "d6cc76856d353a3a9c43bead33210b9216dce332",
      "tree": "06d072db1e4672ef595a1e8f411f7bd4b8e63866",
      "parents": [
        "6f35c4abd7f0294166a5e0ab0401fe7949b33034"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 04 01:04:52 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Nov 04 22:28:15 2011 +0100"
      },
      "message": "PM / Freezer: Revert 27920651fe \"PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too\"\n\nCommit 27920651fe \"PM / Freezer: Make fake_signal_wake_up() wake\nTASK_KILLABLE tasks too\" updated fake_signal_wake_up() used by freezer\nto wake up KILLABLE tasks.  Sending unsolicited wakeups to tasks in\nkillable sleep is dangerous as there are code paths which depend on\ntasks not waking up spuriously from KILLABLE sleep.\n\nFor example. sys_read() or page can sleep in TASK_KILLABLE assuming\nthat wait/down/whatever _killable can only fail if we can not return\nto the usermode.  TASK_TRACED is another obvious example.\n\nThe previous patch updated wait_event_freezekillable() such that it\ndoesn\u0027t depend on the spurious wakeup.  This patch reverts the\noffending commit.\n\nNote that the spurious KILLABLE wakeup had other implicit effects in\nKILLABLE sleeps in nfs and cifs and those will need further updates to\nregain freezekillable behavior.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "9984de1a5a8a96275fcab818f7419af5a3c86e71",
      "tree": "1935d411752707a1621c5caf64f75dfe105beb3a",
      "parents": [
        "7c77509c542927ee2a3c8812fad84957e51bf67d"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon May 23 14:51:41 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 09:20:12 2011 -0400"
      },
      "message": "kernel: Map most files to use export.h instead of module.h\n\nThe changed files were only including linux/module.h for the\nEXPORT_SYMBOL infrastructure, and nothing else.  Revector them\nonto the isolated export header for faster compile times.\n\nNothing to see here but a whole lot of instances of:\n\n  -#include \u003clinux/module.h\u003e\n  +#include \u003clinux/export.h\u003e\n\nThis commit is only changing the kernel dir; next targets\nwill probably be mm, fs, the arch dirs, etc.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "27920651fe0d16a25632dc238e81b54f3a504869",
      "tree": "3f3c5c21b3267329c0b3718717c4c313b5e2115b",
      "parents": [
        "f126f7334f72e2fd1b7a62bba20c488b86e6e7c4"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue Oct 11 21:20:55 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Oct 16 23:30:37 2011 +0200"
      },
      "message": "PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too\n\nTASK_KILLABLE is often used to put tasks to sleep for quite some time.\nOne of the most common uses is to put tasks to sleep while waiting for\nreplies from a server on a networked filesystem (such as CIFS or NFS).\n\nUnfortunately, fake_signal_wake_up does not currently wake up tasks\nthat are sleeping in TASK_KILLABLE state. This means that even if the\ncode were in place to allow them to freeze while in this sleep, it\nwouldn\u0027t work anyway.\n\nThis patch changes this function to wake tasks in this state as well.\nThis should be harmless -- if the code doing the sleeping doesn\u0027t have\nhandling to deal with freezer events, it should just go back to sleep.\nIf it does, then this will allow that code to do the right thing.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "ee940d8dccd899aa1777ea84da3d9cd04b1d2e8e",
      "tree": "0bb19033f820a485dea0c5fc848206b6479fc7df",
      "parents": [
        "3c431936087e93d2219a184a8e19eaa68077e379"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Mon Apr 25 12:33:15 2011 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Tue May 17 23:19:17 2011 +0200"
      },
      "message": "Freezer: Use SMP barriers\n\nThe freezer processes are dealing with multiple threads running\nsimultaneously, and on a UP system, the memory reads/writes do\nnot need barriers to keep things in sync.  These are only needed\non SMP systems, so use SMP barriers instead.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "8cfe400ca54fd1ed96f962bea5f7e20b09b6d69f",
      "tree": "393f1eb68d2497b04778c2e062fc4e1450df33eb",
      "parents": [
        "133f1128b2bf178a1976b17c54bd14ce6feb90bf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Nov 26 23:07:27 2010 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Dec 24 15:02:40 2010 +0100"
      },
      "message": "Freezer: Fix a race during freezing of TASK_STOPPED tasks\n\nAfter calling freeze_task(), try_to_freeze_tasks() see whether the\ntask is stopped or traced and if so, considers it to be frozen;\nhowever, nothing guarantees that either the task being frozen sees\nTIF_FREEZE or the freezer sees TASK_STOPPED -\u003e TASK_RUNNING\ntransition.  The task being frozen may wake up and not see TIF_FREEZE\nwhile the freezer fails to notice the transition and believes the task\nis still stopped.\n\nThis patch fixes the race by making freeze_task() always go through\nfake_signal_wake_up() for applicable tasks.  The function goes through\nthe target task\u0027s scheduler lock and thus guarantees that either the\ntarget sees TIF_FREEZE or try_to_freeze_task() sees TASK_RUNNING.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "6301cb95c119ebf324bb96ee226fa9ddffad80a7",
      "tree": "7201f406d135212bae3775dc7d71cbdd6990e5de",
      "parents": [
        "a468d389349a7560249b355cdb6d2097ea1616c9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Jul 17 14:15:47 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jul 18 14:19:53 2009 +0200"
      },
      "message": "sched: fix nr_uninterruptible accounting of frozen tasks really\n\ncommit e3c8ca8336 (sched: do not count frozen tasks toward load) broke\nthe nr_uninterruptible accounting on freeze/thaw. On freeze the task\nis excluded from accounting with a check for (task-\u003eflags \u0026\nPF_FROZEN), but that flag is cleared before the task is thawed. So\nwhile we prevent that the task with state TASK_UNINTERRUPTIBLE\nis accounted to nr_uninterruptible on freeze we decrement\nnr_uninterruptible on thaw.\n\nUse a separate flag which is handled by the freezing task itself. Set\nit before calling the scheduler with TASK_UNINTERRUPTIBLE state and\nclear it after we return from frozen state.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "00c2e63c31d0f431952ff2a671c5c6997dd4f8b2",
      "tree": "2277b400fef79e55c13d7045aa63d5bed9ad5883",
      "parents": [
        "80a6a2cf3bebcf20285cf05373b9c5ec96816577"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Oct 29 14:00:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "freezer_cg: use thaw_process() in unfreeze_cgroup()\n\nDon\u0027t duplicate the implementation of thaw_process().\n\n[akpm@linux-foundation.org: make __thaw_process() static]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nAcked-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc52ddc0e6f45b04780b26fc0813509f8e798c42",
      "tree": "384826e9fab4e434bc5c85ce744470ae472e52c3",
      "parents": [
        "8174f1503f4bf7e9a14b3fbbfdb30c6be6e29f77"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Sat Oct 18 20:27:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:34 2008 -0700"
      },
      "message": "container freezer: implement freezer cgroup subsystem\n\nThis patch implements a new freezer subsystem in the control groups\nframework.  It provides a way to stop and resume execution of all tasks in\na cgroup by writing in the cgroup filesystem.\n\nThe freezer subsystem in the container filesystem defines a file named\nfreezer.state.  Writing \"FROZEN\" to the state file will freeze all tasks\nin the cgroup.  Subsequently writing \"RUNNING\" will unfreeze the tasks in\nthe cgroup.  Reading will return the current state.\n\n* Examples of usage :\n\n   # mkdir /containers/freezer\n   # mount -t cgroup -ofreezer freezer  /containers\n   # mkdir /containers/0\n   # echo $some_pid \u003e /containers/0/tasks\n\nto get status of the freezer subsystem :\n\n   # cat /containers/0/freezer.state\n   RUNNING\n\nto freeze all tasks in the container :\n\n   # echo FROZEN \u003e /containers/0/freezer.state\n   # cat /containers/0/freezer.state\n   FREEZING\n   # cat /containers/0/freezer.state\n   FROZEN\n\nto unfreeze all tasks in the container :\n\n   # echo RUNNING \u003e /containers/0/freezer.state\n   # cat /containers/0/freezer.state\n   RUNNING\n\nThis is the basic mechanism which should do the right thing for user space\ntask in a simple scenario.\n\nIt\u0027s important to note that freezing can be incomplete.  In that case we\nreturn EBUSY.  This means that some tasks in the cgroup are busy doing\nsomething that prevents us from completely freezing the cgroup at this\ntime.  After EBUSY, the cgroup will remain partially frozen -- reflected\nby freezer.state reporting \"FREEZING\" when read.  The state will remain\n\"FREEZING\" until one of these things happens:\n\n\t1) Userspace cancels the freezing operation by writing \"RUNNING\" to\n\t\tthe freezer.state file\n\t2) Userspace retries the freezing operation by writing \"FROZEN\" to\n\t\tthe freezer.state file (writing \"FREEZING\" is not legal\n\t\tand returns EIO)\n\t3) The tasks that blocked the cgroup from entering the \"FROZEN\"\n\t\tstate disappear from the cgroup\u0027s set of tasks.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: export thaw_process]\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nTested-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8174f1503f4bf7e9a14b3fbbfdb30c6be6e29f77",
      "tree": "a8df1ebd62255dd231452b3f72782604e8919991",
      "parents": [
        "83224b08372be48d5fcefedc4886457da29130c8"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Sat Oct 18 20:27:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:33 2008 -0700"
      },
      "message": "container freezer: make refrigerator always available\n\nNow that the TIF_FREEZE flag is available in all architectures, extract\nthe refrigerator() and freeze_task() from kernel/power/process.c and make\nit available to all.\n\nThe refrigerator() can now be used in a control group subsystem\nimplementing a control group freezer.\n\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nTested-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
