)]}'
{
  "log": [
    {
      "commit": "172a2c0685ff3bc0b7a611b308aac0694de34594",
      "tree": "3cafd39bf2053827001d9af18f62ebd2e649b8c1",
      "parents": [
        "5d77381fd8aa631a8fda718c395da1319afb5d2d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 19 10:23:53 2014 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 19 10:23:53 2014 -0400"
      },
      "message": "cgroup: reorganize cgroup bootstrapping\n\n* Fields of init_css_set and css_set_count are now set using\n  initializer instead of programmatically from cgroup_init_early().\n\n* init_cgroup_root() now also takes @opts and performs the optional\n  part of initialization too.  The leftover part of\n  cgroup_root_from_opts() is collapsed into its only caller -\n  cgroup_mount().\n\n* Initialization of cgroup_root_count and linking of init_css_set are\n  moved from cgroup_init_early() to to cgroup_init().  None of the\n  early_init users depends on init_css_set being linked.\n\n* Subsystem initializations are moved after dummy hierarchy init and\n  init_css_set linking.\n\nThese changes reorganize the bootstrap logic so that the dummy\nhierarchy can share the usual hierarchy init path and be made more\nnormal.  These changes don\u0027t make noticeable behavior changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "5d77381fd8aa631a8fda718c395da1319afb5d2d",
      "tree": "60c8d92fa51eb74238d4ecb92966b71c3ad03751",
      "parents": [
        "b8dadcb58d542ecbf1d3dae5fefcd3fd8cb26539"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 19 10:23:53 2014 -0400"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 19 10:23:53 2014 -0400"
      },
      "message": "cgroup: relocate setting of CGRP_DEAD\n\nIn cgroup_destroy_locked(), move setting of CGRP_DEAD above\ninvocations of kill_css().  This doesn\u0027t make any visible behavior\ndifference now but will be used to inhibit manipulating controller\nenable states of a dying cgroup on the unified hierarchy.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "b8dadcb58d542ecbf1d3dae5fefcd3fd8cb26539",
      "tree": "fc8075d0506b22f79213d97cf4e19408b622454d",
      "parents": [
        "a60bed296ac67b9e2765646dec8e36e3b4d7c395"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Mar 03 17:28:36 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Mar 03 17:28:36 2014 -0500"
      },
      "message": "cpuset: use rcu_read_lock() to protect task_cs()\n\nWe no longer use task_lock() to protect tsk-\u003ecgroups.\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "a60bed296ac67b9e2765646dec8e36e3b4d7c395",
      "tree": "8056af9bec7cc230369ce94514560111bce0ad29",
      "parents": [
        "952aaa125428fae883670a2c2e40ea8044ca1eaa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 16:07:59 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:40 2014 -0500"
      },
      "message": "cgroup_freezer: document freezer_fork() subtleties\n\ncgroup_subsys-\u003efork() callback is special in that it\u0027s called outside\nthe usual cgroup locking and may race with on-going migration.\nfreezer_fork() currently doesn\u0027t consider such race condition;\nhowever, it is still correct thanks to the fact that freeze_task() may\nbe called spuriously.\n\nThis is quite subtle.  Let\u0027s explain what\u0027s going on and add test to\ndetect racing and losing to task migration and skip freeze_task() in\nsuch cases for documentation.\n\nThis doesn\u0027t make any behavior difference meaningful to userland.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@rjwysocki.net\u003e\n"
    },
    {
      "commit": "952aaa125428fae883670a2c2e40ea8044ca1eaa",
      "tree": "54c4f846256d192f094dd6004012989b6d9f414c",
      "parents": [
        "0e1d768f1b1873272ec4e8dc1482bb5281855017"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "message": "cgroup: update cgroup_transfer_tasks() to either succeed or fail\n\ncgroup_transfer_tasks() can currently fail in the middle due to memory\nallocation failure.  When that happens, the function just aborts and\nreturns error code and there\u0027s no way to tell how many actually got\nmigrated at the point of failure and or to revert the partial\nmigration.\n\nUpdate it to use cgroup_migrate{_add_src|prepare_dst|migrate|finish}()\nso that the function either succeeds or fails as a whole as long as\n-\u003ecan_attach() doesn\u0027t fail.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "0e1d768f1b1873272ec4e8dc1482bb5281855017",
      "tree": "8c8156afaa83e9d647c0202d63112b4be6a240d1",
      "parents": [
        "eaf797abc53b0ab3f0a02d4ef873a565fcce6daa"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "message": "cgroup: drop task_lock() protection around task-\u003ecgroups\n\nFor optimization, task_lock() is additionally used to protect\ntask-\u003ecgroups.  The optimization is pretty dubious as either\ncss_set_rwsem is grabbed anyway or PF_EXITING already protects\ntask-\u003ecgroups.  It adds only overhead and confusion at this point.\nLet\u0027s drop task_[un]lock() and update comments accordingly.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "eaf797abc53b0ab3f0a02d4ef873a565fcce6daa",
      "tree": "690461cc8a6262e0fd0fc8472d8a93a8a7592750",
      "parents": [
        "1958d2d53dadbb1c9aaf0b37741f13a60098b243"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "message": "cgroup: update how a newly forked task gets associated with css_set\n\nWhen a new process is forked, cgroup_fork() associates it with the\ncss_set of its parent but doesn\u0027t link it into it.  After the new\nprocess is linked to tasklist, cgroup_post_fork() does the linking.\n\nThis is problematic for cgroup_transfer_tasks() as there\u0027s no way to\ntell whether there are tasks which are pointing to a css_set but not\nlinked yet.  It is impossible to implement an operation which transfer\nall tasks of a cgroup to another and the current\ncgroup_transfer_tasks() can easily be tricked into leaving a newly\nforked process behind if it gets called between cgroup_fork() and\ncgroup_post_fork().\n\nLet\u0027s make association with a css_set and linking atomic by moving it\nto cgroup_post_fork().  cgroup_fork() sets child-\u003ecgroups to\ninit_css_set as a placeholder and cgroup_post_fork() is updated to\nperform both the association with the parent\u0027s cgroup and linking\nthere.  This means that a newly created task will point to\ninit_css_set without holding a ref to it much like what it does on the\nexit path.  Empty cg_list is used to indicate that the task isn\u0027t\nholding a ref to the associated css_set.\n\nThis fixes an actual bug with cgroup_transfer_tasks(); however, I\u0027m\nnot marking it for -stable.  The whole thing is broken in multiple\nother ways which require invasive updates to fix and I don\u0027t think\nit\u0027s worthwhile to bother with backporting this particular one.\nFortunately, the only user is cpuset and these bugs don\u0027t crash the\nmachine.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "1958d2d53dadbb1c9aaf0b37741f13a60098b243",
      "tree": "2c9ad370a8ef3b9db1191f73e7e163857da8a641",
      "parents": [
        "ceb6a081f6f52d17ec9e46e271cc26a1eb8a7573"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:03 2014 -0500"
      },
      "message": "cgroup: split process / task migration into four steps\n\nCurrently, process / task migration is a single operation which may\nfail depending on memory pressure or the involved controllers\u0027\n-\u003ecan_attach() callbacks.  One problem with this approach is migration\nof multiple targets.  It\u0027s impossible to tell whether a given target\nwill be successfully migrated beforehand and cgroup core can\u0027t keep\ntrack of enough states to roll back after intermediate failure.\n\nThis is already an issue with cgroup_transfer_tasks().  Also, we\u0027re\ngonna need multiple target migration for unified hierarchy.\n\nThis patch splits migration into four stages -\ncgroup_migrate_add_src(), cgroup_migrate_prepare_dst(),\ncgroup_migrate() and cgroup_migrate_finish(), where\ncgroup_migrate_prepare_dst() performs all the operations which may\nfail due to allocation failure without actually migrating the target.\n\nThe four separate stages mean that, disregarding -\u003ecan_attach()\nfailures, the success or failure of multi target migration can be\ndetermined before performing any actual migration.  If preparations of\nall targets succeed, the whole thing will succeed.  If not, the whole\noperation can fail without any side-effect.\n\nSince the previous patch to use css_set-\u003emg_tasks to keep track of\nmigration targets, the only thing which may need memory allocation\nduring migration is the target css_sets.  cgroup_migrate_prepare()\npins all source and target css_sets and link them up.  Note that this\ncan be performed without holding threadgroup_lock even if the target\nis a process.  As long as cgroup_mutex is held, no new css_set can be\nput into play.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "ceb6a081f6f52d17ec9e46e271cc26a1eb8a7573",
      "tree": "100b59acde1d14b2995b0a399ff53e1ea6c571ed",
      "parents": [
        "b3dc094e93905ae9c1bc0815402ad8e5b203d068"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:02 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:02 2014 -0500"
      },
      "message": "cgroup: separate out cset_group_from_root() from task_cgroup_from_root()\n\nThis will be used by the planned migration path update.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "b3dc094e93905ae9c1bc0815402ad8e5b203d068",
      "tree": "6d99ba4737ccbf7ce94f06937db571a7fcb902a4",
      "parents": [
        "c75611282cf1bf717c1866e7a7eb4d0743815187"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:01 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:01 2014 -0500"
      },
      "message": "cgroup: use css_set-\u003emg_tasks to track target tasks during migration\n\nCurrently, while migrating tasks from one cgroup to another,\ncgroup_attach_task() builds a flex array of all target tasks;\nunfortunately, this has a couple issues.\n\n* Flex array has size limit.  On 64bit, struct task_and_cgroup is\n  24bytes making the flex element limit around 87k.  It is a high\n  number but not impossible to hit.  This means that the current\n  cgroup implementation can\u0027t migrate a process with more than 87k\n  threads.\n\n* Process migration involves memory allocation whose size is dependent\n  on the number of threads the process has.  This means that cgroup\n  core can\u0027t guarantee success or failure of multi-process migrations\n  as memory allocation failure can happen in the middle.  This is in\n  part because cgroup can\u0027t grab threadgroup locks of multiple\n  processes at the same time, so when there are multiple processes to\n  migrate, it is imposible to tell how many tasks are to be migrated\n  beforehand.\n\n  Note that this already affects cgroup_transfer_tasks().  cgroup\n  currently cannot guarantee atomic success or failure of the\n  operation.  It may fail in the middle and after such failure cgroup\n  doesn\u0027t have enough information to roll back properly.  It just\n  aborts with some tasks migrated and others not.\n\nTo resolve the situation, this patch updates the migration path to use\ntask-\u003ecg_list to track target tasks.  The previous patch already added\ncss_set-\u003emg_tasks and updated iterations in non-migration paths to\ninclude them during task migration.  This patch updates migration path\nto actually make use of it.\n\nInstead of putting onto a flex_array, each target task is moved from\nits css_set-\u003etasks list to css_set-\u003emg_tasks and the migration path\nkeeps trace of all the source css_sets and the associated cgroups.\nOnce all source css_sets are determined, the destination css_set for\neach is determined, linked to the matching source css_set and put on a\nseparate list.\n\nTo iterate the target tasks, migration path just needs to iterat\nthrough either the source or target css_sets, depending on whether\nmigration has been committed or not, and the tasks on their -\u003emg_tasks\nlists.  cgroup_taskset is updated to contain the list_heads for source\nand target css_sets and the iteration cursor.  cgroup_taskset_*() are\naccordingly updated to walk through css_sets and their -\u003emg_tasks.\n\nThis resolves the above listed issues with moderate additional\ncomplexity.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "c75611282cf1bf717c1866e7a7eb4d0743815187",
      "tree": "4579606847463892cc65977a55bee386b2b5cf2a",
      "parents": [
        "f153ad11bca27996a5e8e1782557e36e80b03a8c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:01 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 10:04:01 2014 -0500"
      },
      "message": "cgroup: add css_set-\u003emg_tasks\n\nCurrently, while migrating tasks from one cgroup to another,\ncgroup_attach_task() builds a flex array of all target tasks;\nunfortunately, this has a couple issues.\n\n* Flex array has size limit.  On 64bit, struct task_and_cgroup is\n  24bytes making the flex element limit around 87k.  It is a high\n  number but not impossible to hit.  This means that the current\n  cgroup implementation can\u0027t migrate a process with more than 87k\n  threads.\n\n* Process migration involves memory allocation whose size is dependent\n  on the number of threads the process has.  This means that cgroup\n  core can\u0027t guarantee success or failure of multi-process migrations\n  as memory allocation failure can happen in the middle.  This is in\n  part because cgroup can\u0027t grab threadgroup locks of multiple\n  processes at the same time, so when there are multiple processes to\n  migrate, it is imposible to tell how many tasks are to be migrated\n  beforehand.\n\n  Note that this already affects cgroup_transfer_tasks().  cgroup\n  currently cannot guarantee atomic success or failure of the\n  operation.  It may fail in the middle and after such failure cgroup\n  doesn\u0027t have enough information to roll back properly.  It just\n  aborts with some tasks migrated and others not.\n\nTo resolve the situation, we\u0027re going to use task-\u003ecg_list during\nmigration too.  Instead of building a separate array, target tasks\nwill be linked into a dedicated migration list_head on the owning\ncss_set.  Tasks on the migration list are treated the same as tasks on\nthe usual tasks list; however, being on a separate list allows cgroup\nmigration code path to keep track of the target tasks by simply\nkeeping the list of css_sets with tasks being migrated, making\nunpredictable dynamic allocation unnecessary.\n\nIn prepartion of such migration path update, this patch introduces\ncss_set-\u003emg_tasks list and updates css_set task iterations so that\nthey walk both css_set-\u003etasks and -\u003emg_tasks.  Note that -\u003emg_tasks\nisn\u0027t used yet.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "f153ad11bca27996a5e8e1782557e36e80b03a8c",
      "tree": "df87bf56d2c7fb6d7b3122ed838ce652337b08a3",
      "parents": [
        "dc5736ed7aaf942caaac0c15af74a018e04ec79d",
        "532de3fc72adc2a6525c4d53c07bf81e1732083d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 09:56:49 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 25 09:56:49 2014 -0500"
      },
      "message": "Merge branch \u0027cgroup/for-3.14-fixes\u0027 into cgroup/for-3.15\n\nPull in for-3.14-fixes to receive 532de3fc72ad (\"cgroup: update\ncgroup_enable_task_cg_lists() to grab siglock\") which conflicts with\nafeb0f9fd425 (\"cgroup: relocate cgroup_enable_task_cg_lists()\") and\nthe following cg_lists updates.  This is likely to cause further\nconflicts down the line too, so let\u0027s merge it early.\n\nAs cgroup_enable_task_cg_lists() is relocated in for-3.15, this merge\ncauses conflict in the original position.  It\u0027s resolved by applying\nsiglock changes to the updated version in the new location.\n\nConflicts:\n\tkernel/cgroup.c\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "532de3fc72adc2a6525c4d53c07bf81e1732083d",
      "tree": "72ee4b0fe873589f814939a3b4e60fedb1f9c6ef",
      "parents": [
        "1a11533fbd71792e8c5d36f6763fbce8df0d231d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 13:29:31 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 18 18:23:18 2014 -0500"
      },
      "message": "cgroup: update cgroup_enable_task_cg_lists() to grab siglock\n\nCurrently, there\u0027s nothing preventing cgroup_enable_task_cg_lists()\nfrom missing set PF_EXITING and race against cgroup_exit().  Depending\non the timing, cgroup_exit() may finish with the task still linked on\ncss_set leading to list corruption.  Fix it by grabbing siglock in\ncgroup_enable_task_cg_lists() so that PF_EXITING is guaranteed to be\nvisible.\n\nThis whole on-demand cg_list optimization is extremely fragile and has\nample possibility to lead to bugs which can cause things like\nonce-a-year oops during boot.  I\u0027m wondering whether the better\napproach would be just adding \"cgroup_disable\u003dall\" handling which\ndisables the whole cgroup rather than tempting fate with this\non-demand craziness.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "dc5736ed7aaf942caaac0c15af74a018e04ec79d",
      "tree": "173eb94ee590ef0ba1ab295a49304a0fd1f8a4c2",
      "parents": [
        "cc045e3952175e84c38dad22dea14465b9fc8fb5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Feb 17 10:41:50 2014 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 18 18:20:09 2014 -0500"
      },
      "message": "cgroup: add a validation check to cgroup_add_cftyps()\n\nFengguang reported this bug:\n\nBUG: unable to handle kernel NULL pointer dereference at 0000003c\nIP: [\u003ccc90b4ad\u003e] cgroup_cfts_commit+0x27/0x1c1\n...\nCall Trace:\n  [\u003ccc9d1129\u003e] ? kmem_cache_alloc_trace+0x33f/0x3b7\n  [\u003ccc90c6fc\u003e] cgroup_add_cftypes+0x8f/0xca\n  [\u003ccd78b646\u003e] cgroup_init+0x6a/0x26a\n  [\u003ccd764d7d\u003e] start_kernel+0x4d7/0x57a\n  [\u003ccd7642ef\u003e] i386_start_kernel+0x92/0x96\n\nThis happens in a corner case. If CGROUP_SCHED\u003dy but CFS_BANDWIDTH\u003dn \u0026\u0026\nFAIR_GROUP_SCHED\u003dn \u0026\u0026 RT_GROUP_SCHED\u003dn, we have:\n\ncpu_files[] \u003d {\n\t{ }\t/* terminate */\n}\n\nWhen we pass cpu_files to cgroup_apply_cftypes(), as cpu_files[0].ss\nis NULL, we\u0027ll access NULL pointer.\n\nThe bug was introduced by commit de00ffa56ea3132c6013fc8f07133b8a1014cf53\n(\"cgroup: make cgroup_subsys-\u003ebase_cftypes use cgroup_add_cftypes()\").\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "6534fd6c15858fe4ce4ae568106225e68d5afa81",
      "tree": "895805085f542dfa62ce380d0d91d98d5fdb2283",
      "parents": [
        "bad34660344f37db8b55ce8bc139bddc7d83af1b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Feb 14 16:55:04 2014 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 14 10:52:40 2014 -0500"
      },
      "message": "cgroup: fix memory leak in cgroup_mount()\n\nWe should free the memory allocated in parse_cgroupfs_options() before\ncalling this function again.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "bad34660344f37db8b55ce8bc139bddc7d83af1b",
      "tree": "21fbb75b3761a8f9c6d902780209089d6f059fb4",
      "parents": [
        "430af8ad9dad82d775d688155e1db1da385d3e7a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Fri Feb 14 16:54:28 2014 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 14 10:52:39 2014 -0500"
      },
      "message": "cgroup: fix locking in cgroupstats_build()\n\ncss_set_lock has been converted to css_set_rwsem, and rwsem can\u0027t nest\ninside rcu_read_lock.\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "430af8ad9dad82d775d688155e1db1da385d3e7a",
      "tree": "80aa4c350091f772884564fe0c009fdac3f9a534",
      "parents": [
        "d6250ee2fa79637a5750e46734816c7af71ea97e"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Feb 13 16:42:43 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 16:42:45 2014 -0500"
      },
      "message": "cgroup: fix coccinelle warnings\n\nkernel/cgroup.c:2256:1-3: WARNING: PTR_RET can be used\n\n Use PTR_ERR_OR_ZERO rather than if(IS_ERR(...)) + PTR_ERR\n\nGenerated by: coccinelle/api/ptr_ret.cocci\n\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "8541fecc04a91842f023cbfe2c376d4de3b5047e",
      "tree": "73ac7f7e6495cb4918a55692bf91c559c56df086",
      "parents": [
        "9db8de3722d184b8a431afd6bef803d6867ac889"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:43 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:43 2014 -0500"
      },
      "message": "cgroup: unexport functions\n\nWith module support gone, a lot of functions no longer need to be\nexported.  Unexport them.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "9db8de3722d184b8a431afd6bef803d6867ac889",
      "tree": "eeb23ad425d8bad43382e53ac61287092b0a8530",
      "parents": [
        "bc668c7519ff8b4681af80e92f463bec7bf7cf9e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:43 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:43 2014 -0500"
      },
      "message": "cgroup: cosmetic updates to cgroup_attach_task()\n\ncgroup_attach_task() is planned to go through restructuring.  Let\u0027s\ntidy it up a bit in preparation.\n\n* Update cgroup_attach_task() to receive the target task argument in\n  @leader instead of @tsk.\n\n* Rename @tsk to @task.\n\n* Rename @retval to @ret.\n\nThis is purely cosmetic.\n\nv2: get_nr_threads() was using uninitialized @task instead of @leader.\n    Fixed.  Reported by Dan Carpenter.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\n"
    },
    {
      "commit": "bc668c7519ff8b4681af80e92f463bec7bf7cf9e",
      "tree": "f2940d003d0cb3d2395d5f7d12524e968839add2",
      "parents": [
        "57fce0a68e3aa71d223d9023aae66c7393970c34"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:43 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:43 2014 -0500"
      },
      "message": "cgroup: remove cgroup_taskset_cur_css() and cgroup_taskset_size()\n\nThe two functions don\u0027t have any users left.  Remove them along with\ncgroup_taskset-\u003ecur_cgrp.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "57fce0a68e3aa71d223d9023aae66c7393970c34",
      "tree": "73c6e626bbb96e404113ecd81a6de1c6007e2b70",
      "parents": [
        "924f0d9a2078f49ff331bb43196ec5afadc16b8f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:41 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:41 2014 -0500"
      },
      "message": "cpuset: don\u0027t use cgroup_taskset_cur_css()\n\ncgroup_taskset_cur_css() will be removed during the planned\nresturcturing of migration path.  The only use of\ncgroup_taskset_cur_css() is finding out the old cgroup_subsys_state of\nthe leader in cpuset_attach().  This usage can easily be removed by\nremembering the old value from cpuset_can_attach().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "924f0d9a2078f49ff331bb43196ec5afadc16b8f",
      "tree": "6df0c9852c7b16c2f2eb69b04f90aacae9f95132",
      "parents": [
        "cb0f1fe9ba47c202a98a9d41ad5c12c0ac7732e9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:41 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:41 2014 -0500"
      },
      "message": "cgroup: drop @skip_css from cgroup_taskset_for_each()\n\nIf !NULL, @skip_css makes cgroup_taskset_for_each() skip the matching\ncss.  The intention of the interface is to make it easy to skip css\u0027s\n(cgroup_subsys_states) which already match the migration target;\nhowever, this is entirely unnecessary as migration taskset doesn\u0027t\ninclude tasks which are already in the target cgroup.  Drop @skip_css\nfrom cgroup_taskset_for_each().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nCc: Daniel Borkmann \u003cdborkman@redhat.com\u003e\n"
    },
    {
      "commit": "cb0f1fe9ba47c202a98a9d41ad5c12c0ac7732e9",
      "tree": "9728e6a5883ddc8136e3a240ecaa9fea8343db66",
      "parents": [
        "89c5509b0d71d1609761bf72d33333ab206dac9f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:41 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:41 2014 -0500"
      },
      "message": "cgroup: move css_set_rwsem locking outside of cgroup_task_migrate()\n\nInstead of repeatedly locking and unlocking css_set_rwsem inside\ncgroup_task_migrate(), update cgroup_attach_task() to grab it outside\nof the loop and update cgroup_task_migrate() to use\nput_css_set_locked().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "89c5509b0d71d1609761bf72d33333ab206dac9f",
      "tree": "746b3319035871869c68df21c8216688055f930f",
      "parents": [
        "889ed9ceaa97bb02bf5d7349e24639f7fc5f4fa0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "message": "cgroup: separate out put_css_set_locked() and remove put_css_set_taskexit()\n\nput_css_set() is performed in two steps - it first tries to put\nwithout grabbing css_set_rwsem if such put wouldn\u0027t make the count\nzero.  If that fails, it puts after write-locking css_set_rwsem.  This\npatch separates out the second phase into put_css_set_locked() which\nshould be called with css_set_rwsem locked.\n\nAlso, put_css_set_taskexit() is droped and put_css_set() is made to\ntake @taskexit.  There are only a handful users of these functions.\nNo point in providing different variants.\n\nput_css_locked() will be used by later changes.  This patch doesn\u0027t\nintroduce any functional changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "889ed9ceaa97bb02bf5d7349e24639f7fc5f4fa0",
      "tree": "82986b170db353226b40e26a0c8954645b676974",
      "parents": [
        "d66393e54e0a9dc743e440eb36c58bd1158a560e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "message": "cgroup: remove css_scan_tasks()\n\ncss_scan_tasks() doesn\u0027t have any user left.  Remove it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "d66393e54e0a9dc743e440eb36c58bd1158a560e",
      "tree": "62aa7143ecca51903919ede1cee8f8802c79f042",
      "parents": [
        "96d365e0b86ee7ec6366c99669687e54c9f145e3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "message": "cpuset: use css_task_iter_start/next/end() instead of css_scan_tasks()\n\nNow that css_task_iter_start/next_end() supports blocking while\niterating, there\u0027s no reason to use css_scan_tasks() which is more\ncumbersome to use and scheduled to be removed.\n\nConvert all css_scan_tasks() usages in cpuset to\ncss_task_iter_start/next/end().  This simplifies the code by removing\nheap allocation and callbacks.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "96d365e0b86ee7ec6366c99669687e54c9f145e3",
      "tree": "274fe1598ce568c61f1ddbe0cdd3c5310afc13e4",
      "parents": [
        "e406d1cfff6ab189c8676072d211809c94fecaf0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:40 2014 -0500"
      },
      "message": "cgroup: make css_set_lock a rwsem and rename it to css_set_rwsem\n\nCurrently there are two ways to walk tasks of a cgroup -\ncss_task_iter_start/next/end() and css_scan_tasks().  The latter\nbuilds on the former but allows blocking while iterating.\nUnfortunately, the way css_scan_tasks() is implemented is rather\nnasty, it uses a priority heap of pointers to extract some number of\ntasks in task creation order and loops over them invoking the callback\nand repeats that until it reaches the end.  It requires either\npreallocated heap or may fail under memory pressure, while unlikely to\nbe problematic, the complexity is O(N^2), and in general just nasty.\n\nWe\u0027re gonna convert all css_scan_users() to\ncss_task_iter_start/next/end() and remove css_scan_users().  As\ncss_scan_tasks() users may block, let\u0027s convert css_set_lock to a\nrwsem so that tasks can block during css_task_iter_*() is in progress.\n\nWhile this does increase the chance of possible deadlock scenarios,\ngiven the current usage, the probability is relatively low, and even\nif that happens, the right thing to do is updating the iteration in\nthe similar way to css iterators so that it can handle blocking.\n\nMost conversions are trivial; however, task_cgroup_path() now expects\nto be called with css_set_rwsem locked instead of locking itself.\nThis is because the function is called with RCU read lock held and\nrwsem locking should nest outside RCU read lock.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "e406d1cfff6ab189c8676072d211809c94fecaf0",
      "tree": "d8c9771025242f6a3a1c0b3e430fdb0bba50ce16",
      "parents": [
        "07bc356ed2950048d33d667e933e1b913c6e6b6d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:39 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:39 2014 -0500"
      },
      "message": "cgroup: reimplement cgroup_transfer_tasks() without using css_scan_tasks()\n\nReimplement cgroup_transfer_tasks() so that it repeatedly fetches the\nfirst task in the cgroup and then tranfers it.  This achieves the same\nresult without using css_scan_tasks() which is scheduled to be\nremoved.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "07bc356ed2950048d33d667e933e1b913c6e6b6d",
      "tree": "5efb91f14c21157285965cfcbf480a3538dda35e",
      "parents": [
        "afeb0f9fd425239aa477c842480f240bfb6325b3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:39 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:39 2014 -0500"
      },
      "message": "cgroup: implement cgroup_has_tasks() and unexport cgroup_task_count()\n\ncgroup_task_count() read-locks css_set_lock and walks all tasks to\ncount them and then returns the result.  The only thing all the users\nwant is determining whether the cgroup is empty or not.  This patch\nimplements cgroup_has_tasks() which tests whether cgroup-\u003ecset_links\nis empty, replaces all cgroup_task_count() usages and unexports it.\n\nNote that the test isn\u0027t synchronized.  This is the same as before.\nThe test has always been racy.\n\nThis will help planned css_set locking update.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "afeb0f9fd425239aa477c842480f240bfb6325b3",
      "tree": "9c13d5f1837c4d99d2ff932c4f13bfc5feadc09a",
      "parents": [
        "56fde9e01de45bcfabbb444d33e8bdd8388d2da0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:39 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:39 2014 -0500"
      },
      "message": "cgroup: relocate cgroup_enable_task_cg_lists()\n\nMove it above so that prototype isn\u0027t necessary.  Let\u0027s also move the\ndefinition of use_task_css_set_links next to it.\n\nThis is purely cosmetic.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "56fde9e01de45bcfabbb444d33e8bdd8388d2da0",
      "tree": "93eec834c34d59104ca88344c9c8455060c59284",
      "parents": [
        "35585573055f37837eb752ee22eb5523682ca742"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:38 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:38 2014 -0500"
      },
      "message": "cgroup: enable task_cg_lists on the first cgroup mount\n\nTasks are not linked on their css_sets until cgroup task iteration is\nactually used.  This is to avoid incurring overhead on the fork and\nexit paths for systems which have cgroup compiled in but don\u0027t use it.\n     \nThis lazy binding also affects the task migration path.  It has to be\ncareful so that it doesn\u0027t link tasks to css_sets when task_cg_lists\nlinking is not enabled yet.  Unfortunately, this conditional linking\nin the migration path interferes with planned migration updates.\n\nThis patch moves the lazy binding a bit earlier, to the first cgroup\nmount.  It\u0027s a clear indication that cgroup is being used on the\nsystem and task_cg_lists linking is highly likely to be enabled soon\nanyway through \"tasks\" and \"cgroup.procs\" files.\n\nThis allows cgroup_task_migrate() to always link @tsk-\u003ecg_list.  Note\nthat it may still race with cgroup_post_fork() but who wins that race\nis inconsequential.\n\nWhile at it, make use_task_css_set_links a bool, add sanity checks in\ncgroup_enable_task_cg_lists() and css_task_iter_start(), and update\nthe former so that it\u0027s guaranteed and assumes to run only once.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "35585573055f37837eb752ee22eb5523682ca742",
      "tree": "6cf006b6409e6256ca4d3a81eb5701cde931a324",
      "parents": [
        "d3ba07c3aa9ae3e03329b0a7f1a067c0647aa2af"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:38 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:38 2014 -0500"
      },
      "message": "cgroup: drop CGRP_ROOT_SUBSYS_BOUND\n\nBefore kernfs conversion, due to the way super_block lookup works,\ncgroup roots were created and made visible before being fully\ninitialized.  This in turn required a special flag to mark that the\nroot hasn\u0027t been fully initialized so that the destruction path can\ntell fully bound ones from half initialized.\n\nThat flag is CGRP_ROOT_SUBSYS_BOUND and no longer necessary after the\nkernfs conversion as the lookup and creation of new root are atomic\nw.r.t. cgroup_mutex.  This patch removes the flag and passes the\nrequests subsystem mask to cgroup_setup_root() so that it can set the\nrespective mask bits as subsystems are bound.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "d3ba07c3aa9ae3e03329b0a7f1a067c0647aa2af",
      "tree": "17a4968e339822a520f864fe4127be39e0563f5c",
      "parents": [
        "a755180bab81c038a6989d7ab746c702f1b3ec03"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:38 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Feb 13 06:58:38 2014 -0500"
      },
      "message": "cgroup: disallow xattr, release_agent and name if sane_behavior\n\nDisallow more mount options if sane_behavior.  Note that xattr used to\ngenerate warning.\n\nWhile at it, simplify option check in cgroup_mount() and update\nsane_behavior comment in cgroup.h.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "1a11533fbd71792e8c5d36f6763fbce8df0d231d",
      "tree": "f7d31231685d2c52af4804d265956660f0f849fb",
      "parents": [
        "0ab02ca8f887908152d1a96db5130fc661d36a1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 19:06:19 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 19:08:28 2014 -0500"
      },
      "message": "Revert \"cgroup: use an ordered workqueue for cgroup destruction\"\n\nThis reverts commit ab3f5faa6255a0eb4f832675507d9e295ca7e9ba.\nExplanation from Hugh:\n\n  It\u0027s because more thorough testing, by others here, found that it\n  wasn\u0027t always solving the problem: so I asked Tejun privately to\n  hold off from sending it in, until we\u0027d worked out why not.\n\n  Most of our testing being on a v3,11-based kernel, it was perfectly\n  possible that the problem was merely our own e.g. missing Tejun\u0027s\n  8a2b75384444 (\"workqueue: fix ordered workqueues in NUMA setups\").\n\n  But that turned out not to be enough to fix it either. Then Filipe\n  pointed out how percpu_ref_kill_and_confirm() uses call_rcu_sched()\n  before we ever get to put the offline on to the workqueue: by the\n  time we get to the workqueue, the ordering has already been lost.\n\n  So, thanks for the Acks, but I\u0027m afraid that this ordered workqueue\n  solution is just not good enough: we should simply forget that patch\n  and provide a different answer.\"\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\n"
    },
    {
      "commit": "776f02fa4e1ad70557c0318c70ce928e0642bee0",
      "tree": "f2080066461b0ef75a964a8ef2b9a2243d7b5389",
      "parents": [
        "3c9c825b8b50de7dbb015e6bfc04bb2da79364d9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "message": "cgroup: remove cgroupfs_root-\u003erefcnt\n\nCurrently, cgroupfs_root and its -\u003etop_cgroup are separated reference\ncounted and the latter\u0027s is ignored.  There\u0027s no reason to do this\nseparately.  This patch removes cgroupfs_root-\u003erefcnt and destroys\ncgroupfs_root when the top_cgroup is released.\n\n* cgroup_put() updated to ignore cgroup_is_dead() test for top\n  cgroups.  cgroup_free_fn() updated to handle root destruction when\n  releasing a top cgroup.\n\n* As root destruction is now bounced through cgroup destruction, it is\n  asynchronous.  Update cgroup_mount() so that it waits for pending\n  release which is currently implemented using msleep().  Converting\n  this to proper wait_queue isn\u0027t hard but likely unnecessary.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "3c9c825b8b50de7dbb015e6bfc04bb2da79364d9",
      "tree": "d12fdc2cc0c232e07f1cccb1f72435210e18075e",
      "parents": [
        "e61734c55c24cdf11b07e52a74aec4dc4a7f4bd0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "message": "cgroup: rename cgroupfs_root-\u003enumber_of_cgroups to -\u003enr_cgrps and make it atomic_t\n\nroot-\u003enumber_of_cgroups is currently an integer protected with\ncgroup_mutex.  Except for sanity checks and proc reporting, the only\nplace it\u0027s used is to check whether the root has any child during\nremount; however, this is a bit flawed as the counter is not\ndecremented when the cgroup is unlinked but when it\u0027s released,\nmeaning that there could be an extended period where all cgroups are\nremoved but remount is still not allowed because some internal objects\nare lingering.  While not perfect either, it\u0027d be better to use\nemptiness test on root-\u003etop_cgroup.children.\n\nThis patch updates cgroup_remount() to test top_cgroup\u0027s children\ninstead, which makes number_of_cgroups only actual usage statistics\nprinting in proc implemented in proc_cgroupstats_show().  Let\u0027s\nshorten its name and make it an atomic_t so that we don\u0027t have to\nworry about its synchronization.  It\u0027s purely auxiliary at this point.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "e61734c55c24cdf11b07e52a74aec4dc4a7f4bd0",
      "tree": "bab256faae539cd38840bfc886317f80385acae4",
      "parents": [
        "6f30558f37bfbd428e3854c2c34b5c32117c8f7e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "message": "cgroup: remove cgroup-\u003ename\n\ncgroup-\u003ename handling became quite complicated over time involving\ndedicated struct cgroup_name for RCU protection.  Now that cgroup is\non kernfs, we can drop all of it and simply use kernfs_name/path() and\nfriends.  Replace cgroup-\u003ename and all related code with kernfs\nname/path constructs.\n\n* Reimplement cgroup_name() and cgroup_path() as thin wrappers on top\n  of kernfs counterparts, which involves semantic changes.\n  pr_cont_cgroup_name() and pr_cont_cgroup_path() added.\n\n* cgroup-\u003ename handling dropped from cgroup_rename().\n\n* All users of cgroup_name/path() updated to the new semantics.  Users\n  which were formatting the string just to printk them are converted\n  to use pr_cont_cgroup_name/path() instead, which simplifies things\n  quite a bit.  As cgroup_name() no longer requires RCU read lock\n  around it, RCU lockings which were protecting only cgroup_name() are\n  removed.\n\nv2: Comment above oom_info_lock updated as suggested by Michal.\n\nv3: dummy_top doesn\u0027t have a kn associated and\n    pr_cont_cgroup_name/path() ended up calling the matching kernfs\n    functions with NULL kn leading to oops.  Test for NULL kn and\n    print \"/\" if so.  This issue was reported by Fengguang Wu.\n\nv4: Rebased on top of 0ab02ca8f887 (\"cgroup: protect modifications to\n    cgroup_idr with cgroup_mutex\").\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "6f30558f37bfbd428e3854c2c34b5c32117c8f7e",
      "tree": "c02c711bf750ea306cc008a787335fedfba7feab",
      "parents": [
        "21a2d3430ba8c188af405a5c2eb9c06bdcb6add6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:50 2014 -0500"
      },
      "message": "cgroup: make cgroup hold onto its kernfs_node\n\ncgroup currently releases its kernfs_node when it gets removed.  While\nnot buggy, this makes cgroup-\u003ekn access rules complicated than\nnecessary and leads to things like get/put protection around\nkernfs_remove() in cgroup_destroy_locked().  In addition, we want to\nuse kernfs_name/path() and friends but also want to be able to\ndetermine a cgroup\u0027s name between removal and release.\n\nThis patch makes cgroup hold onto its kernfs_node until freed so that\ncgroup-\u003ekn is always accessible.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "21a2d3430ba8c188af405a5c2eb9c06bdcb6add6",
      "tree": "7fc1d9be2e3297a53c64c7599bf2760cacbf6187",
      "parents": [
        "0adb070426dde2fd0b84e7f4f5cefcd8f0b24410"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:49 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:49 2014 -0500"
      },
      "message": "cgroup: simplify dynamic cftype addition and removal\n\nDynamic cftype addition and removal using cgroup_add/rm_cftypes()\nrespectively has been quite hairy due to vfs i_mutex.  As i_mutex\nnests outside cgroup_mutex, cgroup_mutex has to be released and\nregrabbed on each iteration through the hierarchy complicating the\nprocess.  Now that i_mutex is no longer in play, it can be simplified.\n\n* Just holding cgroup_tree_mutex is enough.  No need to meddle with\n  cgroup_mutex.\n\n* No reason to play the unlock - relock - check serial_nr dancing.\n  Everything can be atomically while holding cgroup_tree_mutex.\n\n* cgroup_cfts_prepare() is replaced with direct locking of\n  cgroup_tree_mutex.\n\n* cgroup_cfts_commit() no longer fiddles with locking.  It just\n  applies the cftypes change to the existing cgroups in the hierarchy.\n  Renamed to cgroup_cfts_apply().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "0adb070426dde2fd0b84e7f4f5cefcd8f0b24410",
      "tree": "d6acf3d7e39fa838998af178ef340f1d159d2fb2",
      "parents": [
        "80b13586997d8e584caa772bd99e2a3e55ac6abe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:48 2014 -0500"
      },
      "message": "cgroup: remove cftype_set\n\ncftype_set was added primarily to allow registering the same cftype\narray more than once for different subsystems.  Nobody uses or needs\nsuch thing and it\u0027s already broken because each cftype has -\u003ess\npointer which is initialized during registration.\n\nLet\u0027s add list_head -\u003enode to cftype and use the first cftype entry in\nthe array to link them instead of allocating separate cftype_set.\nWhile at it, trigger WARN if cft seems previously initialized during\nregistration.\n\nThis simplifies cftype handling a bit.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "80b13586997d8e584caa772bd99e2a3e55ac6abe",
      "tree": "ced02346669ef3d032ffe6a4a8f4d064fd46840c",
      "parents": [
        "86bf4b68759141459864ebd36ac3038a9cda895b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:48 2014 -0500"
      },
      "message": "cgroup: relocate cgroup_rm_cftypes()\n\ncftype handling is about to be revamped.  Relocate cgroup_rm_cftypes()\nabove cgroup_add_cftypes() in preparation.  This is pure relocation.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "86bf4b68759141459864ebd36ac3038a9cda895b",
      "tree": "81c1bfe990c4752f5056c9df02258391fc9ca464",
      "parents": [
        "2bd59d48ebfb3df41ee56938946ca0dd30887312"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 12 09:29:48 2014 -0500"
      },
      "message": "cgroup: warn if \"xattr\" is specified with \"sane_behavior\"\n\nMount option \"xattr\" is no longer necessary as it\u0027s enabled by default\non kernfs.  Warn if \"xattr\" is specified with \"sane_behavior\" so that\nthe option can be removed in the future.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "2bd59d48ebfb3df41ee56938946ca0dd30887312",
      "tree": "8e18b5e94b96f42418113687f27c61fa1ec5e147",
      "parents": [
        "f2e85d574e881ff3c597518c1ab48c86f9109880"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "message": "cgroup: convert to kernfs\n\ncgroup filesystem code was derived from the original sysfs\nimplementation which was heavily intertwined with vfs objects and\nlocking with the goal of re-using the existing vfs infrastructure.\nThat experiment turned out rather disastrous and sysfs switched, a\nlong time ago, to distributed filesystem model where a separate\nrepresentation is maintained which is queried by vfs.  Unfortunately,\ncgroup stuck with the failed experiment all these years and\naccumulated even more problems over time.\n\nLocking and object lifetime management being entangled with vfs is\nprobably the most egregious.  vfs is never designed to be misused like\nthis and cgroup ends up jumping through various convoluted dancing to\nmake things work.  Even then, operations across multiple cgroups can\u0027t\nbe done safely as it\u0027ll deadlock with rename locking.\n\nRecently, kernfs is separated out from sysfs so that it can be used by\nusers other than sysfs.  This patch converts cgroup to use kernfs,\nwhich will bring the following benefits.\n\n* Separation from vfs internals.  Locking and object lifetime\n  management is contained in cgroup proper making things a lot\n  simpler.  This removes significant amount of locking convolutions,\n  hairy object lifetime rules and the restriction on multi-cgroup\n  operations.\n\n* Can drop a lot of code to implement filesystem interface as most are\n  provided by kernfs.\n\n* Proper \"severing\" semantics, which allows controllers to not worry\n  about lingering file accesses after offline.\n\nWhile the preceding patches did as much as possible to make the\ntransition less painful, large part of the conversion has to be one\ndiscrete step making this patch rather large.  The rest of the commit\nmessage lists notable changes in different areas.\n\nOverall\n-------\n\n* vfs constructs replaced with kernfs ones.  cgroup-\u003edentry w/ -\u003ekn,\n  cgroupfs_root-\u003esb w/ -\u003ekf_root.\n\n* All dentry accessors are removed.  Helpers to map from kernfs\n  constructs are added.\n\n* All vfs plumbing around dentry, inode and bdi removed.\n\n* cgroup_mount() now directly looks for matching root and then\n  proceeds to create a new one if not found.\n\nSynchronization and object lifetime\n-----------------------------------\n\n* vfs inode locking removed.  Among other things, this removes the\n  need for the convolution in cgroup_cfts_commit().  Future patches\n  will further simplify it.\n\n* vfs refcnting replaced with cgroup internal ones.  cgroup-\u003erefcnt,\n  cgroupfs_root-\u003erefcnt added.  cgroup_put_root() now directly puts\n  root-\u003erefcnt and when it reaches zero proceeds to destroy it thus\n  merging cgroup_put_root() and the former cgroup_kill_sb().\n  Simliarly, cgroup_put() now directly schedules cgroup_free_rcu()\n  when refcnt reaches zero.\n\n* Unlike before, kernfs objects don\u0027t hold onto cgroup objects.  When\n  cgroup destroys a kernfs node, all existing operations are drained\n  and the association is broken immediately.  The same for\n  cgroupfs_roots and mounts.\n\n* All operations which come through kernfs guarantee that the\n  associated cgroup is and stays valid for the duration of operation;\n  however, there are two paths which need to find out the associated\n  cgroup from dentry without going through kernfs -\n  css_tryget_from_dir() and cgroupstats_build().  For these two,\n  kernfs_node-\u003epriv is RCU managed so that they can dereference it\n  under RCU read lock.\n\nFile and directory handling\n---------------------------\n\n* File and directory operations converted to kernfs_ops and\n  kernfs_syscall_ops.\n\n* xattrs is implicitly supported by kernfs.  No need to worry about it\n  from cgroup.  This means that \"xattr\" mount option is no longer\n  necessary.  A future patch will add a deprecated warning message\n  when sane_behavior.\n\n* When cftype-\u003emax_write_len \u003e PAGE_SIZE, it\u0027s necessary to make a\n  private copy of one of the kernfs_ops to set its atomic_write_len.\n  cftype-\u003ekf_ops is added and cgroup_init/exit_cftypes() are updated\n  to handle it.\n\n* cftype-\u003elockdep_key added so that kernfs lockdep annotation can be\n  per cftype.\n\n* Inidividual file entries and open states are now managed by kernfs.\n  No need to worry about them from cgroup.  cfent, cgroup_open_file\n  and their friends are removed.\n\n* kernfs_nodes are created deactivated and kernfs_activate()\n  invocations added to places where creation of new nodes are\n  committed.\n\n* cgroup_rmdir() uses kernfs_[un]break_active_protection() for\n  self-removal.\n\nv2: - Li pointed out in an earlier patch that specifying \"name\u003d\"\n      during mount without subsystem specification should succeed if\n      there\u0027s an existing hierarchy with a matching name although it\n      should fail with -EINVAL if a new hierarchy should be created.\n      Prior to the conversion, this used by handled by deferring\n      failure from NULL return from cgroup_root_from_opts(), which was\n      necessary because root was being created before checking for\n      existing ones.  Note that cgroup_root_from_opts() returned an\n      ERR_PTR() value for error conditions which require immediate\n      mount failure.\n\n      As we now have separate search and creation steps, deferring\n      failure from cgroup_root_from_opts() is no longer necessary.\n      cgroup_root_from_opts() is updated to always return ERR_PTR()\n      value on failure.\n\n    - The logic to match existing roots is updated so that a mount\n      attempt with a matching name but different subsys_mask are\n      rejected.  This was handled by a separate matching loop under\n      the comment \"Check for name clashes with existing mounts\" but\n      got lost during conversion.  Merge the check into the main\n      search loop.\n\n    - Add __rcu __force casting in RCU_INIT_POINTER() in\n      cgroup_destroy_locked() to avoid the sparse address space\n      warning reported by kbuild test bot.  Maybe we want an explicit\n      interface to use kn-\u003epriv as RCU protected pointer?\n\nv3: Make CONFIG_CGROUPS select CONFIG_KERNFS.\n\nv4: Rebased on top of 0ab02ca8f887 (\"cgroup: protect modifications to\n    cgroup_idr with cgroup_mutex\").\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: kbuild test robot fengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "f2e85d574e881ff3c597518c1ab48c86f9109880",
      "tree": "ee31ff03e65f841fe07d8b27bba51b3de3777486",
      "parents": [
        "59f5296b51b86718dd6eecf0a268b2f1a1ec0a2d"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "message": "cgroup: relocate functions in preparation of kernfs conversion\n\nRelocate cgroup_init/exit_root_id(), cgroup_free_root(),\ncgroup_kill_sb() and cgroup_file_name() in preparation of kernfs\nconversion.\n\nThese are pure relocations to make kernfs conversion easier to follow.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "59f5296b51b86718dd6eecf0a268b2f1a1ec0a2d",
      "tree": "0854f2b46c93190b8fb5bb1e0a992f1e5b77320e",
      "parents": [
        "b1664924062393bb048203bd4622e0b1c9e1d328"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "message": "cgroup: misc preps for kernfs conversion\n\n* Un-inline seq_css().  After kernfs conversion, the function will\n  need to dereference internal data structures.\n\n* Add cgroup_get/put_root() and replace direct super_block-\u003es_active\n  manipulatinos with them.  These will be converted to kernfs_root\n  refcnting.\n\n* Add cgroup_get/put() and replace dget/put() on cgrp-\u003edentry with\n  them.  These will be converted to kernfs refcnting.\n\n* Update current_css_set_cg_links_read() to use cgroup_name() instead\n  of reaching into the dentry name.  The end result is the same.\n\nThese changes don\u0027t make functional differences but will make\ntransition to kernfs easier.\n\nv2: Rebased on top of 0ab02ca8f887 (\"cgroup: protect modifications to\n    cgroup_idr with cgroup_mutex\").\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "b1664924062393bb048203bd4622e0b1c9e1d328",
      "tree": "4fbbb4a62793e72d9dbe44c71db0ea75f54cc21b",
      "parents": [
        "2da440a26ce4743bd3e71ba964ba3f983d09bba5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:49 2014 -0500"
      },
      "message": "cgroup: introduce cgroup_ino()\n\nmm/memory-failure.c::hwpoison_filter_task() has been reaching into\ncgroup to extract the associated ino to be used as a filtering\ncriterion.  This is an implementation detail which shouldn\u0027t be\ndepended upon from outside cgroup proper and is about to change with\nthe scheduled kernfs conversion.\n\nThis patch introduces a proper interface to determine the associated\nino, cgroup_ino(), and updates hwpoison_filter_task() to use it\ninstead of reaching directly into cgroup.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "2da440a26ce4743bd3e71ba964ba3f983d09bba5",
      "tree": "3a8abc5740529ac5ba918fb464622f43beb6a533",
      "parents": [
        "5f46990787e2721b4db190ddc8af6fdbe8f010d7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "message": "cgroup: introduce cgroup_init/exit_cftypes()\n\nFactor out cft-\u003ess initialization into cgroup_init_cftypes() from\ncgroup_add_cftypes() and add cft-\u003ess clearing to cgroup_rm_cftypes()\nthrough cgroup_exit_cftypes().\n\nThis doesn\u0027t make any meaningful difference now but the two new\nfunctions will be expanded during kernfs transition.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "5f46990787e2721b4db190ddc8af6fdbe8f010d7",
      "tree": "5a5e8439e8560eb95a86f58036b5282e1a7036b6",
      "parents": [
        "de00ffa56ea3132c6013fc8f07133b8a1014cf53"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "message": "cgroup: update the meaning of cftype-\u003emax_write_len\n\ncftype-\u003emax_write_len is used to extend the maximum size of writes.\nIt\u0027s interpreted in such a way that the actual maximum size is one\nless than the specified value.  The default size is defined by\nCGROUP_LOCAL_BUFFER_SIZE.  Its interpretation is quite confusing - its\nvalue is decremented by 1 and then compared for equality with max\nsize, which means that the actual default size is\nCGROUP_LOCAL_BUFFER_SIZE - 2, which is 62 chars.\n\nThere\u0027s no point in having a limit that low.  Update its definition so\nthat it means the actual string length sans termination and anything\nbelow PAGE_SIZE-1 is treated as PAGE_SIZE-1.\n\n.max_write_len for \"release_agent\" is updated to PATH_MAX-1 and\ncgroup_release_agent_write() is updated so that the redundant strlen()\ncheck is removed and it uses strlcpy() instead of strcpy().\n.max_write_len initializations in blk-throttle.c and cfq-iosched.c are\nno longer necessary and removed.  The one in cpuset is kept unchanged\nas it\u0027s an approximated value to begin with.\n\nThis will also make transition to kernfs smoother.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "de00ffa56ea3132c6013fc8f07133b8a1014cf53",
      "tree": "25e6f273dc9374ad2a4507bb42627d1262e4582e",
      "parents": [
        "8d7e6fb0a1db970ac3589f87af0f2a20ef46654b"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "message": "cgroup: make cgroup_subsys-\u003ebase_cftypes use cgroup_add_cftypes()\n\nCurrently, cgroup_subsys-\u003ebase_cftypes registration is different from\ndynamic cftypes registartion.  Instead of going through\ncgroup_add_cftypes(), cgroup_init_subsys() invokes\ncgroup_init_cftsets() which makes use of cgroup_subsys-\u003ebase_cftset\nwhich doesn\u0027t involve dynamic allocation.\n\nWhile avoiding dynamic allocation is somewhat nice, having two\nseparate paths for cftypes registration is nasty, especially as we\u0027re\nplanning to add more operations during cftypes registration.\n\nThis patch drops cgroup_init_cftsets() and cgroup_subsys-\u003ebase_cftset\nand registers base_cftypes using cgroup_add_cftypes().  This is done\nas a separate step in cgroup_init() instead of a part of\ncgroup_init_subsys().  This is because cgroup_init_subsys() can be\ncalled very early during boot when kmalloc() isn\u0027t available yet.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "8d7e6fb0a1db970ac3589f87af0f2a20ef46654b",
      "tree": "f6b10b105575da92908db304722450511e9cdf23",
      "parents": [
        "d427dfeb120b92c0c5e2ca9d1ec6952de67ebad9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "message": "cgroup: update cgroup name handling\n\nStraightforward updates to cgroup name handling in preparation of\nkernfs conversion.\n\n* cgroup_alloc_name() is updated to take const char * isntead of\n  dentry * for name source.\n\n* cgroup name formatting is separated out into cgroup_file_name().\n  While at it, buffer length protection is added.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "d427dfeb120b92c0c5e2ca9d1ec6952de67ebad9",
      "tree": "e43b6acf5f2d58ec60847900ecea418789693702",
      "parents": [
        "8e30e2b8ba0ee58aa0f442d0b4a3cac1a4f2efb5"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "message": "cgroup: factor out cgroup_setup_root() from cgroup_mount()\n\nFactor out new root initialization into cgroup_setup_root() from\ncgroup_mount().  This makes it easier to follow and will ease kernfs\nconversion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "8e30e2b8ba0ee58aa0f442d0b4a3cac1a4f2efb5",
      "tree": "b1a796507f905ef496f7d6b63e4f2451e756ea5c",
      "parents": [
        "4ac0601744eb86e982fbdadde35f1945f7ce5882"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:48 2014 -0500"
      },
      "message": "cgroup: restructure locking and error handling in cgroup_mount()\n\ncgroup is scheduled to be converted to kernfs.  After conversion,\ncgroup_mount() won\u0027t use the sget() machinery for finding out existing\nsuper_blocks but instead would do that directly.  It\u0027ll search the\nexisting cgroupfs_roots for a matching one and create a new one iff a\nmatch doesn\u0027t exist.  To ease such conversion, this patch restructures\nlocking and error handling of the function.\n\ncgroup_tree_mutex and cgroup_mutex are grabbed from the get-go and\nheld until return.  For now, due to the way vfs locks nest outside\ncgroup mutexes, the two cgroup mutexes are temporarily dropped across\nsget() and inode mutex locking, which looks quite ridiculous; however,\nthese will be removed through kernfs conversion and structuring the\ncode this way makes the conversion less painful.\n\nThe error goto labels are consolidated to two.  This looks unwieldy\nnow but the next patch will factor out creation of new root into a\nseparate function with accompanying error handling and it\u0027ll look a\nlot better.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "4ac0601744eb86e982fbdadde35f1945f7ce5882",
      "tree": "887f0cbc2853802ad113b87f0d2c5b764e2619ce",
      "parents": [
        "ace2bee8135a3dc725958b8d08c55ee9df813d39"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:47 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:47 2014 -0500"
      },
      "message": "cgroup: release cgroup_mutex over file removals\n\nNow that cftypes and all tree modification operations are protected by\ncgroup_tree_mutex, we can drop cgroup_mutex while deleting files and\ndirectories.  Drop cgroup_mutex over removals.\n\nThis doesn\u0027t make any noticeable difference now but is to help kernfs\nconversion.  In kernfs, removals are sync points which drain in-flight\noperations as those operations would grab cgroup_mutex, trying to\ndelete under cgroup_mutex would deadlock.  This can be resolved by\njust holding the outer cgroup_tree_mutex which nests outside both\nkernfs active reference and cgroup_mutex.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "ace2bee8135a3dc725958b8d08c55ee9df813d39",
      "tree": "8221115e4d100e566a9405bb25db79b0a751c480",
      "parents": [
        "5a17f543ed6808e9085063277fe46795dea484bd"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:47 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:47 2014 -0500"
      },
      "message": "cgroup: introduce cgroup_tree_mutex\n\nCurrently cgroup uses combination of inode-\u003ei_mutex\u0027es and\ncgroup_mutex for synchronization.  With the scheduled kernfs\nconversion, i_mutex\u0027es will be removed.  Unfortunately, just using\ncgroup_mutex isn\u0027t possible.  All kernfs file and syscall operations,\nmost of which require grabbing cgroup_mutex, will be called with\nkernfs active ref held and, if we try to perform kernfs removals under\ncgroup_mutex, it can deadlock as kernfs_remove() tries to drain the\ntarget node.\n\nLet\u0027s introduce a new outer mutex, cgroup_tree_mutex, which protects\nstuff used during hierarchy changing operations - cftypes and all the\noperations which may affect the cgroupfs.  It also covers css\nassociation and iteration.  This allows cgroup_css(), for_each_css()\nand other css iterators to be called under cgroup_tree_mutex.  The new\nmutex will nest above both kernfs\u0027s active ref protection and\ncgroup_mutex.  By protecting tree modifications with a separate outer\nmutex, we can get rid of the forementioned deadlock condition.\n\nActual file additions and removals now require cgroup_tree_mutex\ninstead of cgroup_mutex.  Currently, cgroup_tree_mutex is never used\nwithout cgroup_mutex; however, we\u0027ll soon add hierarchy modification\nsections which are only protected by cgroup_tree_mutex.  In the\nfuture, we might want to make the locking more granular by better\nsplitting the coverages of the two mutexes.  For now, this should do.\n\nv2: Rebased on top of 0ab02ca8f887 (\"cgroup: protect modifications to\n    cgroup_idr with cgroup_mutex\").\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "5a17f543ed6808e9085063277fe46795dea484bd",
      "tree": "8b6e2afd5619bcff76438470670247eb55bef908",
      "parents": [
        "398f878789fceb51bf5e424b753a3756643513c4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:47 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:52:47 2014 -0500"
      },
      "message": "cgroup: improve css_from_dir() into css_tryget_from_dir()\n\ncss_from_dir() returns the matching css (cgroup_subsys_state) given a\ndentry and subsystem.  The function doesn\u0027t pin the css before\nreturning and requires the caller to be holding RCU read lock or\ncgroup_mutex and handling pinning on the caller side.\n\nGiven that users of the function are likely to want to pin the\nreturned css (both existing users do) and that getting and putting\ncss\u0027s are very cheap, there\u0027s no reason for the interface to be tricky\nlike this.\n\nRename css_from_dir() to css_tryget_from_dir() and make it try to pin\nthe found css and return it only if pinning succeeded.  The callers\nare updated so that they no longer do RCU locking and pinning around\nthe function and just use the returned css.\n\nThis will also ease converting cgroup to kernfs.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "398f878789fceb51bf5e424b753a3756643513c4",
      "tree": "cd80a446bd1e2f1adc5652a805ac2f98a40b003e",
      "parents": [
        "f7cef064aa01a1ac682c1945cc168b878cb118ff",
        "0ab02ca8f887908152d1a96db5130fc661d36a1e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:02:59 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 11:02:59 2014 -0500"
      },
      "message": "Merge branch \u0027cgroup/for-3.14-fixes\u0027 into cgroup/for-3.15\n\nPull for-3.14-fixes to receive 0ab02ca8f887 (\"cgroup: protect\nmodifications to cgroup_idr with cgroup_mutex\") prior to kernfs\nconversion series to avoid non-trivial conflicts.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "0ab02ca8f887908152d1a96db5130fc661d36a1e",
      "tree": "81f7be1f4da646a88ab09bd7c01927a4f2a180bf",
      "parents": [
        "48573a893303986e3b0b2974d6fb11f3d1bb7064"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Tue Feb 11 16:05:46 2014 +0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 11 10:38:30 2014 -0500"
      },
      "message": "cgroup: protect modifications to cgroup_idr with cgroup_mutex\n\nSetup cgroupfs like this:\n  # mount -t cgroup -o cpuacct xxx /cgroup\n  # mkdir /cgroup/sub1\n  # mkdir /cgroup/sub2\n\nThen run these two commands:\n  # for ((; ;)) { mkdir /cgroup/sub1/tmp \u0026\u0026 rmdir /mnt/sub1/tmp; } \u0026\n  # for ((; ;)) { mkdir /cgroup/sub2/tmp \u0026\u0026 rmdir /mnt/sub2/tmp; } \u0026\n\nAfter seconds you may see this warning:\n\n------------[ cut here ]------------\nWARNING: CPU: 1 PID: 25243 at lib/idr.c:527 sub_remove+0x87/0x1b0()\nidr_remove called for id\u003d6 which is not allocated.\n...\nCall Trace:\n [\u003cffffffff8156063c\u003e] dump_stack+0x7a/0x96\n [\u003cffffffff810591ac\u003e] warn_slowpath_common+0x8c/0xc0\n [\u003cffffffff81059296\u003e] warn_slowpath_fmt+0x46/0x50\n [\u003cffffffff81300aa7\u003e] sub_remove+0x87/0x1b0\n [\u003cffffffff810f3f02\u003e] ? css_killed_work_fn+0x32/0x1b0\n [\u003cffffffff81300bf5\u003e] idr_remove+0x25/0xd0\n [\u003cffffffff810f2bab\u003e] cgroup_destroy_css_killed+0x5b/0xc0\n [\u003cffffffff810f4000\u003e] css_killed_work_fn+0x130/0x1b0\n [\u003cffffffff8107cdbc\u003e] process_one_work+0x26c/0x550\n [\u003cffffffff8107eefe\u003e] worker_thread+0x12e/0x3b0\n [\u003cffffffff81085f96\u003e] kthread+0xe6/0xf0\n [\u003cffffffff81570bac\u003e] ret_from_fork+0x7c/0xb0\n---[ end trace 2d1577ec10cf80d0 ]---\n\nIt\u0027s because allocating/removing cgroup ID is not properly synchronized.\n\nThe bug was introduced when we converted cgroup_ida to cgroup_idr.\nWhile synchronization is already done inside ida_simple_{get,remove}(),\nusers are responsible for concurrent calls to idr_{alloc,remove}().\n\ntj: Refreshed on top of b58c89986a77 (\"cgroup: fix error return from\ncgroup_create()\").\n\nFixes: 4e96ee8e981b (\"cgroup: convert cgroup_ida to cgroup_idr\")\nCc: \u003cstable@vger.kernel.org\u003e #3.12+\nReported-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1a698a4aba26dd58e8409d325a9a9db22f7cd2db",
      "tree": "bc4b414c7eca762c0bac1176bd1d63b74c9f965e",
      "parents": [
        "3417ae1f5f59bbf36c3defbbf2a76c5ca498db2a",
        "48573a893303986e3b0b2974d6fb11f3d1bb7064"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:37:14 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:37:14 2014 -0500"
      },
      "message": "Merge branch \u0027for-3.14-fixes\u0027 into for-3.15\n\nPending kernfs conversion depends on fixes in for-3.14-fixes.  Pull it\ninto for-3.15.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "3417ae1f5f59bbf36c3defbbf2a76c5ca498db2a",
      "tree": "d5b03fc5ec2b71b4fde60ca6337ad45e1fd0ab45",
      "parents": [
        "69e943b7d3c2dcca1087e03e556ac6cb0d4433b4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:37:01 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:37:01 2014 -0500"
      },
      "message": "cgroup: remove cgroup_root_mutex\n\ncgroup_root_mutex was added to avoid deadlock involving namespace_sem\nvia cgroup_show_options().  It added a lot of overhead for the small\npurpose of it and, because it\u0027s nested under cgroup_mutex, it has very\nlimited usefulness.  The previous patch made cgroup_show_options() not\nuse cgroup_root_mutex, so nobody needs it anymore.  Remove it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "69e943b7d3c2dcca1087e03e556ac6cb0d4433b4",
      "tree": "79bce2147f3eebb43e4300120a3a0d81b0a97e1c",
      "parents": [
        "aec25020f5d4b69aea5317551d1cb7043f6b04fb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "message": "cgroup: update locking in cgroup_show_options()\n\ncgroup_show_options() grabs cgroup_root_mutex to protect the options\nchanging while printing; however, holding root_mutex or not doesn\u0027t\nreally make much difference for the function.  subsys_mask can be\natomically tested and most of the options aren\u0027t allowed to change\nanyway once mounted.\n\nThe only field which needs synchronization is -\u003erelease_agent_path.\nThis patch introduces a dedicated spinlock to synchronize accesses to\nthe field and drops cgroup_root_mutex locking from\ncgroup_show_options().  The next patch will remove cgroup_root_mutex.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "aec25020f5d4b69aea5317551d1cb7043f6b04fb",
      "tree": "ed9c89b1468542a9d5be6f20af24db8d6251c90b",
      "parents": [
        "073219e995b4a3f8cf1ce8228b7ef440b6994ac0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "message": "cgroup: rename cgroup_subsys-\u003esubsys_id to -\u003eid\n\nIt\u0027s no longer referenced outside cgroup core, so renaming is easy.\nLet\u0027s rename it for consistency \u0026 brevity.\n\nThis patch is pure rename.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "073219e995b4a3f8cf1ce8228b7ef440b6994ac0",
      "tree": "d140fc2e94bd8fd09270286b7267fb087a79f288",
      "parents": [
        "3ed80a62bf959d34ebd4d553b026fbe7e6fbcc54"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "message": "cgroup: clean up cgroup_subsys names and initialization\n\ncgroup_subsys is a bit messier than it needs to be.\n\n* The name of a subsys can be different from its internal identifier\n  defined in cgroup_subsys.h.  Most subsystems use the matching name\n  but three - cpu, memory and perf_event - use different ones.\n\n* cgroup_subsys_id enums are postfixed with _subsys_id and each\n  cgroup_subsys is postfixed with _subsys.  cgroup.h is widely\n  included throughout various subsystems, it doesn\u0027t and shouldn\u0027t\n  have claim on such generic names which don\u0027t have any qualifier\n  indicating that they belong to cgroup.\n\n* cgroup_subsys-\u003esubsys_id should always equal the matching\n  cgroup_subsys_id enum; however, we require each controller to\n  initialize it and then BUG if they don\u0027t match, which is a bit\n  silly.\n\nThis patch cleans up cgroup_subsys names and initialization by doing\nthe followings.\n\n* cgroup_subsys_id enums are now postfixed with _cgrp_id, and each\n  cgroup_subsys with _cgrp_subsys.\n\n* With the above, renaming subsys identifiers to match the userland\n  visible names doesn\u0027t cause any naming conflicts.  All non-matching\n  identifiers are renamed to match the official names.\n\n  cpu_cgroup -\u003e cpu\n  mem_cgroup -\u003e memory\n  perf -\u003e perf_event\n\n* controllers no longer need to initialize -\u003esubsys_id and -\u003ename.\n  They\u0027re generated in cgroup core and set automatically during boot.\n\n* Redundant cgroup_subsys declarations removed.\n\n* While updating BUG_ON()s in cgroup_init_early(), convert them to\n  WARN()s.  BUGging that early during boot is stupid - the kernel\n  can\u0027t print anything, even through serial console and the trap\n  handler doesn\u0027t even link stack frame properly for back-tracing.\n\nThis patch doesn\u0027t introduce any behavior changes.\n\nv2: Rebased on top of fe1217c4f3f7 (\"net: net_cls: move cgroupfs\n    classid handling into core\").\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: \"Rafael J. Wysocki\" \u003crjw@rjwysocki.net\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Aristeu Rozanski \u003caris@redhat.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@redhat.com\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Thomas Graf \u003ctgraf@suug.ch\u003e\n"
    },
    {
      "commit": "3ed80a62bf959d34ebd4d553b026fbe7e6fbcc54",
      "tree": "3ec2ce050e41b056a8de66f24eac76dd2d5912e5",
      "parents": [
        "af6363374cbda5007e46efa99f7346efd4eea5fc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:36:58 2014 -0500"
      },
      "message": "cgroup: drop module support\n\nWith module supported dropped from net_prio, no controller is using\ncgroup module support.  None of actual resource controllers can be\nbuilt as a module and we aren\u0027t gonna add new controllers which don\u0027t\ncontrol resources.  This patch drops module support from cgroup.\n\n* cgroup_[un]load_subsys() and cgroup_subsys-\u003emodule removed.\n\n* As there\u0027s no point in distinguishing IS_BUILTIN() and IS_MODULE(),\n  cgroup_subsys.h now uses IS_ENABLED() directly.\n\n* enum cgroup_subsys_id now exactly matches the list of enabled\n  controllers as ordered in cgroup_subsys.h.\n\n* cgroup_subsys[] is now a contiguously occupied array.  Size\n  specification is no longer necessary and dropped.\n\n* for_each_builtin_subsys() is removed and for_each_subsys() is\n  updated to not require any locking.\n\n* module ref handling is removed from rebind_subsystems().\n\n* Module related comments dropped.\n\nv2: Rebased on top of fe1217c4f3f7 (\"net: net_cls: move cgroupfs\n    classid handling into core\").\n\nv3: Added {} around the if (need_forkexit_callback) block in\n    cgroup_post_fork() for readability as suggested by Li.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\n"
    },
    {
      "commit": "48573a893303986e3b0b2974d6fb11f3d1bb7064",
      "tree": "a01edf5728485e7637a25b08020f210a3ae0d67e",
      "parents": [
        "b58c89986a77a23658682a100eb15d8edb571ebb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:26:34 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:26:34 2014 -0500"
      },
      "message": "cgroup: fix locking in cgroup_cfts_commit()\n\ncgroup_cfts_commit() walks the cgroup hierarchy that the target\nsubsystem is attached to and tries to apply the file changes.  Due to\nthe convolution with inode locking, it can\u0027t keep cgroup_mutex locked\nwhile iterating.  It currently holds only RCU read lock around the\nactual iteration and then pins the found cgroup using dget().\n\nUnfortunately, this is incorrect.  Although the iteration does check\ncgroup_is_dead() before invoking dget(), there\u0027s nothing which\nprevents the dentry from going away inbetween.  Note that this is\ndifferent from the usual css iterations where css_tryget() is used to\npin the css - css_tryget() tests whether the css can be pinned and\nfails if not.\n\nThe problem can be solved by simply holding cgroup_mutex instead of\nRCU read lock around the iteration, which actually reduces LOC.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "b58c89986a77a23658682a100eb15d8edb571ebb",
      "tree": "414266b86775faf92a7027e0ded52ca6b50f4c24",
      "parents": [
        "eb46bf89696972b856a9adb6aebd5c7b65c266e4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:26:33 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:26:33 2014 -0500"
      },
      "message": "cgroup: fix error return from cgroup_create()\n\ncgroup_create() was returning 0 after allocation failures.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "eb46bf89696972b856a9adb6aebd5c7b65c266e4",
      "tree": "c4dd21535dd50996f296d056d05068fbe534dffa",
      "parents": [
        "ab3f5faa6255a0eb4f832675507d9e295ca7e9ba"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:26:33 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Feb 08 10:26:33 2014 -0500"
      },
      "message": "cgroup: fix error return value in cgroup_mount()\n\nWhen cgroup_mount() fails to allocate an id for the root, it didn\u0027t\nset ret before jumping to unlock_drop ending up returning 0 after a\nfailure.  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Li Zefan \u003clizefan@huawei.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "ab3f5faa6255a0eb4f832675507d9e295ca7e9ba",
      "tree": "1f9a906214d8f20bf9f58ccb202d2eb8dade8db4",
      "parents": [
        "0a6be6555302eebb14510fd6b35bb17e8dfa1386"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Feb 06 15:56:01 2014 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Feb 07 10:21:12 2014 -0500"
      },
      "message": "cgroup: use an ordered workqueue for cgroup destruction\n\nSometimes the cleanup after memcg hierarchy testing gets stuck in\nmem_cgroup_reparent_charges(), unable to bring non-kmem usage down to 0.\n\nThere may turn out to be several causes, but a major cause is this: the\nworkitem to offline parent can get run before workitem to offline child;\nparent\u0027s mem_cgroup_reparent_charges() circles around waiting for the\nchild\u0027s pages to be reparented to its lrus, but it\u0027s holding cgroup_mutex\nwhich prevents the child from reaching its mem_cgroup_reparent_charges().\n\nJust use an ordered workqueue for cgroup_destroy_wq.\n\ntj: Committing as the temporary fix until the reverse dependency can\n    be removed from memcg.  Comment updated accordingly.\n\nFixes: e5fca243abae (\"cgroup: use a dedicated workqueue for cgroup destruction\")\nSuggested-by: Filipe Brandenburger \u003cfilbranden@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@vger.kernel.org # 3.10+\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1ff6bbfd13ca2c114a5cb58e1a92d1e5d68ce0b7",
      "tree": "3ef9611bb58c311a439b1fcdd46329c265c07b5e",
      "parents": [
        "38dbfb59d1175ef458d006556061adeaa8751b72"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 28 18:10:37 2014 -0500"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 03 13:24:01 2014 -0500"
      },
      "message": "arm, pm, vmpressure: add missing slab.h includes\n\narch/arm/mach-tegra/pm.c, kernel/power/console.c and mm/vmpressure.c\nwere somehow getting slab.h indirectly through cgroup.h which in turn\nwas getting it indirectly through xattr.h.  A scheduled cgroup change\ndrops xattr.h inclusion from cgroup.h and breaks compilation of these\nthree files.  Add explicit slab.h includes to the three files.\n\nA pending cgroup patch depends on this change and it\u0027d be great if\nthis can be routed through cgroup/for-3.14-fixes branch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Stephen Warren \u003cswarren@wwwdotorg.org\u003e\nCc: Thierry Reding \u003cthierry.reding@gmail.com\u003e\nCc: linux-tegra@vger.kernel.org\nCc: \"Rafael J. Wysocki\" \u003crjw@rjwysocki.net\u003e\nCc: linux-pm@vger.kernel.org\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: cgroups@vger.kernel.org\n"
    },
    {
      "commit": "aafd9d6a46745926648cb5d0b68b108e79ceb8d4",
      "tree": "b099dece2ff08e57d141af686ffbb24dc663c05b",
      "parents": [
        "595bf999e3a864f40e049c67c42ecee50fb7a78a",
        "a2b4c607c93a0850c8e3d90688cf3bd08576b986"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 31 09:02:51 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 31 09:02:51 2014 -0800"
      },
      "message": "Merge branch \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull timer/dynticks updates from Ingo Molnar:\n \"This tree contains misc dynticks updates: a fix and three cleanups\"\n\n* \u0027timers-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  sched/nohz: Fix overflow error in scheduler_tick_max_deferment()\n  nohz_full: fix code style issue of tick_nohz_full_stop_tick\n  nohz: Get timekeeping max deferment outside jiffies_lock\n  tick: Rename tick_check_idle() to tick_irq_enter()\n"
    },
    {
      "commit": "595bf999e3a864f40e049c67c42ecee50fb7a78a",
      "tree": "ef6ccc5e84c7152eff59d6db55733de42c32329b",
      "parents": [
        "ab5318788c6725b6d5c95aff28e63af4c35a0e2c",
        "a57beec5d427086cdc8d75fd51164577193fa7f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 31 09:00:44 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 31 09:00:44 2014 -0800"
      },
      "message": "Merge branch \u0027sched-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler fixes from Ingo Molnar:\n \"A crash fix and documentation updates\"\n\n* \u0027sched-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  sched: Make sched_class::get_rr_interval() optional\n  sched/deadline: Add sched_dl documentation\n  sched: Fix docbook parameter annotation error in wait.h\n"
    },
    {
      "commit": "ab5318788c6725b6d5c95aff28e63af4c35a0e2c",
      "tree": "fb4a81d66ed06828948e3272ebe15088d405ec1e",
      "parents": [
        "14164b46fc994bcf82963ace00372cf808a31af1",
        "270750dbc18a71b23d660df110e433ff9616a2d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 31 08:59:46 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 31 08:59:46 2014 -0800"
      },
      "message": "Merge branch \u0027core-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull core debug changes from Ingo Molnar:\n \"This contains mostly kernel debugging related updates:\n\n   - make hung_task detection more configurable to distros\n   - add final bits for x86 UV NMI debugging, with related KGDB changes\n   - update the mailing-list of MAINTAINERS entries I\u0027m involved with\"\n\n* \u0027core-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  hung_task: Display every hung task warning\n  sysctl: Add neg_one as a standard constraint\n  x86/uv/nmi, kgdb/kdb: Fix UV NMI handler when KDB not configured\n  x86/uv/nmi: Fix Sparse warnings\n  kgdb/kdb: Fix no KDB config problem\n  MAINTAINERS: Restore \"L: linux-kernel@vger.kernel.org\" entries\n"
    },
    {
      "commit": "73f945505b9bf798d8c3ee830cb330dd6d7fb4c7",
      "tree": "be2309d3d55b40f1830f0c51b3f14d941228b562",
      "parents": [
        "6897fc22ea01b562b55c6168592bcbd3ee62b006"
      ],
      "author": {
        "name": "Roman Gushchin",
        "email": "klamm@yandex-team.ru",
        "time": "Thu Jan 30 15:45:48 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 30 16:56:54 2014 -0800"
      },
      "message": "kernel/smp.c: remove cpumask_ipi\n\nAfter commit 9a46ad6d6df3 (\"smp: make smp_call_function_many() use logic\nsimilar to smp_call_function_single()\"), cfd-\u003ecpumask is accessed only\nin smp_call_function_many().  So there is no more need to copy it into\ncfd-\u003ecpumask_ipi before putting csd into the list.  The cpumask_ipi\nfield is obsolete and can be removed.\n\nSigned-off-by: Roman Gushchin \u003cklamm@yandex-team.ru\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Wang YanQing \u003cudknight@gmail.com\u003e\nCc: Xie XiuQi \u003cxiexiuqi@huawei.com\u003e\nCc: Shaohua Li \u003cshli@fusionio.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6897fc22ea01b562b55c6168592bcbd3ee62b006",
      "tree": "034c4b774880c2bbf8a9347acef749478a3443b0",
      "parents": [
        "0c692d07842a67d9aa6b8266a80e4ac460a5c1a2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jan 30 15:45:47 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 30 16:56:54 2014 -0800"
      },
      "message": "kernel: use lockless list for smp_call_function_single\n\nMake smp_call_function_single and friends more efficient by using a\nlockless list.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f568849edac8611d603e00bd6cbbcfea09395ae6",
      "tree": "b9472d640fe5d87426d38c9d81d946cf197ad3fb",
      "parents": [
        "d9894c228b11273e720bb63ba120d1d326fe9d94",
        "675675ada486dde5bf9aa51665e90706bff11a35"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 30 11:19:05 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 30 11:19:05 2014 -0800"
      },
      "message": "Merge branch \u0027for-3.14/core\u0027 of git://git.kernel.dk/linux-block\n\nPull core block IO changes from Jens Axboe:\n \"The major piece in here is the immutable bio_ve series from Kent, the\n  rest is fairly minor.  It was supposed to go in last round, but\n  various issues pushed it to this release instead.  The pull request\n  contains:\n\n   - Various smaller blk-mq fixes from different folks.  Nothing major\n     here, just minor fixes and cleanups.\n\n   - Fix for a memory leak in the error path in the block ioctl code\n     from Christian Engelmayer.\n\n   - Header export fix from CaiZhiyong.\n\n   - Finally the immutable biovec changes from Kent Overstreet.  This\n     enables some nice future work on making arbitrarily sized bios\n     possible, and splitting more efficient.  Related fixes to immutable\n     bio_vecs:\n\n        - dm-cache immutable fixup from Mike Snitzer.\n        - btrfs immutable fixup from Muthu Kumar.\n\n  - bio-integrity fix from Nic Bellinger, which is also going to stable\"\n\n* \u0027for-3.14/core\u0027 of git://git.kernel.dk/linux-block: (44 commits)\n  xtensa: fixup simdisk driver to work with immutable bio_vecs\n  block/blk-mq-cpu.c: use hotcpu_notifier()\n  blk-mq: for_each_* macro correctness\n  block: Fix memory leak in rw_copy_check_uvector() handling\n  bio-integrity: Fix bio_integrity_verify segment start bug\n  block: remove unrelated header files and export symbol\n  blk-mq: uses page-\u003elist incorrectly\n  blk-mq: use __smp_call_function_single directly\n  btrfs: fix missing increment of bi_remaining\n  Revert \"block: Warn and free bio if bi_end_io is not set\"\n  block: Warn and free bio if bi_end_io is not set\n  blk-mq: fix initializing request\u0027s start time\n  block: blk-mq: don\u0027t export blk_mq_free_queue()\n  block: blk-mq: make blk_sync_queue support mq\n  block: blk-mq: support draining mq queue\n  dm cache: increment bi_remaining when bi_end_io is restored\n  block: fixup for generic bio chaining\n  block: Really silence spurious compiler warnings\n  block: Silence spurious compiler warnings\n  block: Kill bio_pair_split()\n  ...\n"
    },
    {
      "commit": "bf3d846b783327359ddc4bd4f52627b36abb4d1d",
      "tree": "c6b8fddbf04a2962dfcf9f487af25033f11b10b9",
      "parents": [
        "54c0a4b46150db1571d955d598cd342c9f1d9657",
        "f6500801522c61782d4990fa1ad96154cb397cd4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 28 08:38:04 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 28 08:38:04 2014 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs updates from Al Viro:\n \"Assorted stuff; the biggest pile here is Christoph\u0027s ACL series.  Plus\n  assorted cleanups and fixes all over the place...\n\n  There will be another pile later this week\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (43 commits)\n  __dentry_path() fixes\n  vfs: Remove second variable named error in __dentry_path\n  vfs: Is mounted should be testing mnt_ns for NULL or error.\n  Fix race when checking i_size on direct i/o read\n  hfsplus: remove can_set_xattr\n  nfsd: use get_acl and -\u003eset_acl\n  fs: remove generic_acl\n  nfs: use generic posix ACL infrastructure for v3 Posix ACLs\n  gfs2: use generic posix ACL infrastructure\n  jfs: use generic posix ACL infrastructure\n  xfs: use generic posix ACL infrastructure\n  reiserfs: use generic posix ACL infrastructure\n  ocfs2: use generic posix ACL infrastructure\n  jffs2: use generic posix ACL infrastructure\n  hfsplus: use generic posix ACL infrastructure\n  f2fs: use generic posix ACL infrastructure\n  ext2/3/4: use generic posix ACL infrastructure\n  btrfs: use generic posix ACL infrastructure\n  fs: make posix_acl_create more useful\n  fs: make posix_acl_chmod more useful\n  ...\n"
    },
    {
      "commit": "a57beec5d427086cdc8d75fd51164577193fa7f4",
      "tree": "86bbff9570824031ec4bd42bfd5dd11e4b825a55",
      "parents": [
        "712e5e34aef449ab680b35c0d9016f59b0a4494c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Jan 27 11:54:13 2014 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jan 28 13:08:41 2014 +0100"
      },
      "message": "sched: Make sched_class::get_rr_interval() optional\n\nNot all classes implement (or can implement) a useful get_rr_interval()\nfunction, default to a 0 time-slice for them.\n\nThis fixes a crash reported by Tommi Rantala.\n\nReported-by: Tommi Rantala \u003ctt.rantala@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Tommi Rantala \u003ctt.rantala@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20140127105413.GC11314@laptop.programming.kicks-ass.net\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "712e5e34aef449ab680b35c0d9016f59b0a4494c",
      "tree": "cf578361c799de1e7b25e3b646f769d90d047c40",
      "parents": [
        "b78f4c7c4402d1070dc7ccaca6001abb4ab4053a"
      ],
      "author": {
        "name": "Dario Faggioli",
        "email": "raistlin@linux.it",
        "time": "Mon Jan 27 12:20:15 2014 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Jan 28 13:08:40 2014 +0100"
      },
      "message": "sched/deadline: Add sched_dl documentation\n\nAdd in Documentation/scheduler/ some hints about the design\nchoices, the usage and the future possible developments of the\nsched_dl scheduling class and of the SCHED_DEADLINE policy.\n\nReviewed-by: Henrik Austad \u003chenrik@austad.us\u003e\nSigned-off-by: Dario Faggioli \u003craistlin@linux.it\u003e\nSigned-off-by: Juri Lelli \u003cjuri.lelli@gmail.com\u003e\n[ Re-wrote sections 2 and 3. ]\nSigned-off-by: Luca Abeni \u003cluca.abeni@unitn.it\u003e\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/1390821615-23247-1-git-send-email-juri.lelli@gmail.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ce85b4f2eab663dfd4ff2cb5b603ba03f595922e",
      "tree": "46bbedbb7883c93a2b058eb1cb6603ce39789b69",
      "parents": [
        "403227641533c4227d44d14f25c8f3676f6e7436"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jan 27 17:07:16 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 21:02:40 2014 -0800"
      },
      "message": "softirq: use const char * const for softirq_to_name, whitespace neatening\n\nReduce data size a little.\nReduce checkpatch noise.\n\n$ size kernel/softirq.o*\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n  11554\t   6013\t   4008\t  21575\t   5447\tkernel/softirq.o.new\n  11474\t   6093\t   4008\t  21575\t   5447\tkernel/softirq.o.old\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "403227641533c4227d44d14f25c8f3676f6e7436",
      "tree": "7e7ca15762b47e44d3ba25c6ee5207c08f75540b",
      "parents": [
        "2e702b9f6cba4eb87d90e2a2d425a1fc05eec803"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jan 27 17:07:15 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 21:02:40 2014 -0800"
      },
      "message": "softirq: convert printks to pr_\u003clevel\u003e\n\nUse a more current logging style.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e702b9f6cba4eb87d90e2a2d425a1fc05eec803",
      "tree": "ade4a3bcec477ced2780f1841e7c06f547effe84",
      "parents": [
        "a19428e5c3f4f39c302cb97b847dfd23613145c1"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jan 27 17:07:14 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 21:02:40 2014 -0800"
      },
      "message": "softirq: use ffs() in __do_softirq()\n\nPossible speed improvement of __do_softirq() by using ffs() instead of\nusing a while loop with an \u0026 1 test then single bit shift.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a19428e5c3f4f39c302cb97b847dfd23613145c1",
      "tree": "ef2341c5034451ae55e5c0ca0a727a4455ec6c44",
      "parents": [
        "53e0ee9fc59cb17fcad57e481b5889c791afe6c3"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Jan 27 17:07:13 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 21:02:40 2014 -0800"
      },
      "message": "kernel/kexec.c: use vscnprintf() instead of vsnprintf() in vmcoreinfo_append_str()\n\nvsnprintf() may let \u0027r\u0027 larger than sizeof(buf), in this case, if \u0027r\u0027 is\nalso less than \"vmcoreinfo_max_size - vmcoreinfo_size\" (left size of\ndestination buffer), next memcpy() will read the unexpected addresses.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba635f8cd20ebc7bddf1eb8e1f4eae28a034e916",
      "tree": "2e1f0c73c8fdedc2523dd29fcf32a366427576e5",
      "parents": [
        "ba6b5084e6cdd34645dc7430eeef0ebfd09f723f",
        "3132e107d608f8753240d82d61303c500fd515b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 08:22:30 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 27 08:22:30 2014 -0800"
      },
      "message": "Merge tag \u0027trace-fixes-3.14\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing fixes from Steven Rostedt:\n \"The first two patches fix the debugfs README file to reflect better\n  the new features added to 3.14.\n\n  The third patch is a minor bugfix to the trace_puts() functions that\n  will crash the system if a developer adds one before the tracing\n  system is setup.  It also affects trace_printk() if it has no\n  arguments, as the code will convert it to a trace_puts() as well.\n\n  Note, this bug will not affect unmodified kernels, as trace_printk()\n  and trace_puts() should only be used by developers for testing\"\n\n* tag \u0027trace-fixes-3.14\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  tracing: Check if tracing is enabled in trace_puts()\n  tracing: Fix formatting of trace README file\n  tracing/README: Add event file usage to tracing mini-HOWTO\n"
    },
    {
      "commit": "f6d13daaddeb6e63b15a93bf36a80173bafd29bf",
      "tree": "fbdd45b284d537865036e8e8d740d849be0bbfc3",
      "parents": [
        "d4a63a83933bcd1ef4f3ff6e8637e187dea25632",
        "5e3c1afd4587e70c201bf7224b51f747c9a3dfa8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 25 11:11:31 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 25 11:11:31 2014 -0800"
      },
      "message": "Merge branch \u0027sched-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull scheduler fixes from Ingo Molnar:\n \"A couple of regression fixes mostly hitting virtualized setups, but\n  also some bare metal systems\"\n\n* \u0027sched-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  sched/x86/tsc: Initialize multiplier to 0\n  sched/clock: Fixup early initialization\n  sched/preempt/x86: Fix voluntary preempt for x86\n  Revert \"sched: Fix sleep time double accounting in enqueue entity\"\n"
    },
    {
      "commit": "270750dbc18a71b23d660df110e433ff9616a2d4",
      "tree": "9b0400fc3713bd02d31835e8d0315cfbd7ccd912",
      "parents": [
        "2397efb1bb17595b35f31abb40d95074ebc04f1b"
      ],
      "author": {
        "name": "Aaron Tomlin",
        "email": "atomlin@redhat.com",
        "time": "Mon Jan 20 17:34:13 2014 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jan 25 12:13:33 2014 +0100"
      },
      "message": "hung_task: Display every hung task warning\n\nWhen khungtaskd detects hung tasks, it prints out\nbacktraces from a number of those tasks.\n\nLimiting the number of backtraces being printed\nout can result in the user not seeing the information\nnecessary to debug the issue. The hung_task_warnings\nsysctl controls this feature.\n\nThis patch makes it possible for hung_task_warnings\nto accept a special value to print an unlimited\nnumber of backtraces when khungtaskd detects hung\ntasks.\n\nThe special value is -1. To use this value it is\nnecessary to change types from ulong to int.\n\nSigned-off-by: Aaron Tomlin \u003catomlin@redhat.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: oleg@redhat.com\nLink: http://lkml.kernel.org/r/1390239253-24030-3-git-send-email-atomlin@redhat.com\n[ Build warning fix. ]\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "a8d4b8345e0ee48b732126d980efaf0dc373e2b0",
      "tree": "4bdfc52ef4ad176f54e4ce7b81091c0fbef0fd04",
      "parents": [
        "2ccdc413196b43a02bb68b46be5b68850904e9ea"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Jan 11 19:19:32 2014 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 25 03:14:36 2014 -0500"
      },
      "message": "introduce __fcheck_files() to fix rcu_dereference_check_fdtable(), kill rcu_my_thread_group_empty()\n\nrcu_dereference_check_fdtable() looks very wrong,\n\n1. rcu_my_thread_group_empty() was added by 844b9a8707f1 \"vfs: fix\n   RCU-lockdep false positive due to /proc\" but it doesn\u0027t really\n   fix the problem. A CLONE_THREAD (without CLONE_FILES) task can\n   hit the same race with get_files_struct().\n\n   And otoh rcu_my_thread_group_empty() can suppress the correct\n   warning if the caller is the CLONE_FILES (without CLONE_THREAD)\n   task.\n\n2. files-\u003ecount \u003d\u003d 1 check is not really right too. Even if this\n   files_struct is not shared it is not safe to access it lockless\n   unless the caller is the owner.\n\n   Otoh, this check is sub-optimal. files-\u003ecount \u003d\u003d 0 always means\n   it is safe to use it lockless even if files !\u003d current-\u003efiles,\n   but put_files_struct() has to take rcu_read_lock(). See the next\n   patch.\n\nThis patch removes the buggy checks and turns fcheck_files() into\n__fcheck_files() which uses rcu_dereference_raw(), the \"unshared\"\ncallers, fget_light() and fget_raw_light(), can use it to avoid\nthe warning from RCU-lockdep.\n\nfcheck_files() is trivially reimplemented as rcu_lockdep_assert()\nplus __fcheck_files().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2397efb1bb17595b35f31abb40d95074ebc04f1b",
      "tree": "4e8694d40ddb82a231718f9e188642fdfc966f6e",
      "parents": [
        "64389998151214c71ba59ac893180744fd880052"
      ],
      "author": {
        "name": "Aaron Tomlin",
        "email": "atomlin@redhat.com",
        "time": "Mon Jan 20 17:34:12 2014 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jan 25 08:59:53 2014 +0100"
      },
      "message": "sysctl: Add neg_one as a standard constraint\n\nAdd neg_one to the list of standard constraints - will be used by the next patch.\n\nSigned-off-by: Aaron Tomlin \u003catomlin@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: oleg@redhat.com\nLink: http://lkml.kernel.org/r/1390239253-24030-2-git-send-email-atomlin@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "fc8b13740b2978b34872650cc8e928392e3758aa",
      "tree": "b9f1420e4e6d1bf4adcfe48a2cda802f268ba42a",
      "parents": [
        "981c3a4ff8596a9dcd2b058ee12d6749639c32a5"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Jan 14 10:25:52 2014 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jan 25 08:55:09 2014 +0100"
      },
      "message": "kgdb/kdb: Fix no KDB config problem\n\nSome code added to the debug_core module had KDB dependencies\nthat it shouldn\u0027t have.  Move the KDB dependent REASON back to\nthe caller to remove the dependency in the debug core code.\n\nUpdate the call from the UV NMI handler to conform to the new\ninterface.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nReviewed-by: Hedi Berriche \u003chedi@sgi.com\u003e\nCc: Russ Anderson \u003crja@sgi.com\u003e\nCc: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nLink: http://lkml.kernel.org/r/20140114162551.318251993@asylum.americas.sgi.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "a2b4c607c93a0850c8e3d90688cf3bd08576b986",
      "tree": "fd1ef8cd906a864f6db3551b3891fd5d0c2075fd",
      "parents": [
        "15c81026204da897a05424c79263aea861a782cc",
        "8fe8ff09ce3b5750e1f3e45a1f4a81d59c7ff1f1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jan 25 08:27:26 2014 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Jan 25 08:27:26 2014 +0100"
      },
      "message": "Merge branch \u0027timers/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks into timers/urgent\n\nPull dynticks cleanups from Frederic Weisbecker.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "09da8dfa98682d871987145ed11e3232accac860",
      "tree": "152a9bb1e52f70db6efb66fffbdc4871f749d7df",
      "parents": [
        "3aacd625f20129f5a41ea3ff3b5353b0e4dabd01",
        "7744064731a9543105e207504e0262f883bc14c0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 24 15:51:02 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 24 15:51:02 2014 -0800"
      },
      "message": "Merge tag \u0027pm+acpi-3.14-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n\nPull ACPI and power management updates from Rafael Wysocki:\n \"As far as the number of commits goes, the top spot belongs to ACPI\n  this time with cpufreq in the second position and a handful of PM\n  core, PNP and cpuidle updates.  They are fixes and cleanups mostly, as\n  usual, with a couple of new features in the mix.\n\n  The most visible change is probably that we will create struct\n  acpi_device objects (visible in sysfs) for all devices represented in\n  the ACPI tables regardless of their status and there will be a new\n  sysfs attribute under those objects allowing user space to check that\n  status via _STA.\n\n  Consequently, ACPI device eject or generally hot-removal will not\n  delete those objects, unless the table containing the corresponding\n  namespace nodes is unloaded, which is extremely rare.  Also ACPI\n  container hotplug will be handled quite a bit differently and cpufreq\n  will support CPU boost (\"turbo\") generically and not only in the\n  acpi-cpufreq driver.\n\n  Specifics:\n\n   - ACPI core changes to make it create a struct acpi_device object for\n     every device represented in the ACPI tables during all namespace\n     scans regardless of the current status of that device.  In\n     accordance with this, ACPI hotplug operations will not delete those\n     objects, unless the underlying ACPI tables go away.\n\n   - On top of the above, new sysfs attribute for ACPI device objects\n     allowing user space to check device status by triggering the\n     execution of _STA for its ACPI object.  From Srinivas Pandruvada.\n\n   - ACPI core hotplug changes reducing code duplication, integrating\n     the PCI root hotplug with the core and reworking container hotplug.\n\n   - ACPI core simplifications making it use ACPI_COMPANION() in the\n     code \"glueing\" ACPI device objects to \"physical\" devices.\n\n   - ACPICA update to upstream version 20131218.  This adds support for\n     the DBG2 and PCCT tables to ACPICA, fixes some bugs and improves\n     debug facilities.  From Bob Moore, Lv Zheng and Betty Dall.\n\n   - Init code change to carry out the early ACPI initialization\n     earlier.  That should allow us to use ACPI during the timekeeping\n     initialization and possibly to simplify the EFI initialization too.\n     From Chun-Yi Lee.\n\n   - Clenups of the inclusions of ACPI headers in many places all over\n     from Lv Zheng and Rashika Kheria (work in progress).\n\n   - New helper for ACPI _DSM execution and rework of the code in\n     drivers that uses _DSM to execute it via the new helper.  From\n     Jiang Liu.\n\n   - New Win8 OSI blacklist entries from Takashi Iwai.\n\n   - Assorted ACPI fixes and cleanups from Al Stone, Emil Goode, Hanjun\n     Guo, Lan Tianyu, Masanari Iida, Oliver Neukum, Prarit Bhargava,\n     Rashika Kheria, Tang Chen, Zhang Rui.\n\n   - intel_pstate driver updates, including proper Baytrail support,\n     from Dirk Brandewie and intel_pstate documentation from Ramkumar\n     Ramachandra.\n\n   - Generic CPU boost (\"turbo\") support for cpufreq from Lukasz\n     Majewski.\n\n   - powernow-k6 cpufreq driver fixes from Mikulas Patocka.\n\n   - cpufreq core fixes and cleanups from Viresh Kumar, Jane Li, Mark\n     Brown.\n\n   - Assorted cpufreq drivers fixes and cleanups from Anson Huang, John\n     Tobias, Paul Bolle, Paul Walmsley, Sachin Kamat, Shawn Guo, Viresh\n     Kumar.\n\n   - cpuidle cleanups from Bartlomiej Zolnierkiewicz.\n\n   - Support for hibernation APM events from Bin Shi.\n\n   - Hibernation fix to avoid bringing up nonboot CPUs with ACPI EC\n     disabled during thaw transitions from Bjørn Mork.\n\n   - PM core fixes and cleanups from Ben Dooks, Leonardo Potenza, Ulf\n     Hansson.\n\n   - PNP subsystem fixes and cleanups from Dmitry Torokhov, Levente\n     Kurusa, Rashika Kheria.\n\n   - New tool for profiling system suspend from Todd E Brandt and a\n     cpupower tool cleanup from One Thousand Gnomes\"\n\n* tag \u0027pm+acpi-3.14-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (153 commits)\n  thermal: exynos: boost: Automatic enable/disable of BOOST feature (at Exynos4412)\n  cpufreq: exynos4x12: Change L0 driver data to CPUFREQ_BOOST_FREQ\n  Documentation: cpufreq / boost: Update BOOST documentation\n  cpufreq: exynos: Extend Exynos cpufreq driver to support boost\n  cpufreq / boost: Kconfig: Support for software-managed BOOST\n  acpi-cpufreq: Adjust the code to use the common boost attribute\n  cpufreq: Add boost frequency support in core\n  intel_pstate: Add trace point to report internal state.\n  cpufreq: introduce cpufreq_generic_get() routine\n  ARM: SA1100: Create dummy clk_get_rate() to avoid build failures\n  cpufreq: stats: create sysfs entries when cpufreq_stats is a module\n  cpufreq: stats: free table and remove sysfs entry in a single routine\n  cpufreq: stats: remove hotplug notifiers\n  cpufreq: stats: handle cpufreq_unregister_driver() and suspend/resume properly\n  cpufreq: speedstep: remove unused speedstep_get_state\n  platform: introduce OF style \u0027modalias\u0027 support for platform bus\n  PM / tools: new tool for suspend/resume performance optimization\n  ACPI: fix module autoloading for ACPI enumerated devices\n  ACPI: add module autoloading support for ACPI enumerated devices\n  ACPI: fix create_modalias() return value handling\n  ...\n"
    },
    {
      "commit": "3aacd625f20129f5a41ea3ff3b5353b0e4dabd01",
      "tree": "7cf4ea65397f80098b30494df31cfc8f5fa26d63",
      "parents": [
        "7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24",
        "2a1d689c9ba42a6066540fb221b6ecbd6298b728"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 19:11:50 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 19:11:50 2014 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (incoming from Andrew)\n\nMerge second patch-bomb from Andrew Morton:\n - various misc bits\n - the rest of MM\n - add generic fixmap.h, use it\n - backlight updates\n - dynamic_debug updates\n - printk() updates\n - checkpatch updates\n - binfmt_elf\n - ramfs\n - init/\n - autofs4\n - drivers/rtc\n - nilfs\n - hfsplus\n - Documentation/\n - coredump\n - procfs\n - fork\n - exec\n - kexec\n - kdump\n - partitions\n - rapidio\n - rbtree\n - userns\n - memstick\n - w1\n - decompressors\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (197 commits)\n  lib/decompress_unlz4.c: always set an error return code on failures\n  romfs: fix returm err while getting inode in fill_super\n  drivers/w1/masters/w1-gpio.c: add strong pullup emulation\n  drivers/memstick/host/rtsx_pci_ms.c: fix ms card data transfer bug\n  userns: relax the posix_acl_valid() checks\n  arch/sh/kernel/dwarf.c: use rbtree postorder iteration helper instead of solution using repeated rb_erase()\n  fs-ext3-use-rbtree-postorder-iteration-helper-instead-of-opencoding-fix\n  fs/ext3: use rbtree postorder iteration helper instead of opencoding\n  fs/jffs2: use rbtree postorder iteration helper instead of opencoding\n  fs/ext4: use rbtree postorder iteration helper instead of opencoding\n  fs/ubifs: use rbtree postorder iteration helper instead of opencoding\n  net/netfilter/ipset/ip_set_hash_netiface.c: use rbtree postorder iteration instead of opencoding\n  rbtree/test: test rbtree_postorder_for_each_entry_safe()\n  rbtree/test: move rb_node to the middle of the test struct\n  rapidio: add modular rapidio core build into powerpc and mips branches\n  partitions/efi: complete documentation of gpt kernel param purpose\n  kdump: add /sys/kernel/vmcoreinfo ABI documentation\n  kdump: fix exported size of vmcoreinfo note\n  kexec: add sysctl to disable kexec_load\n  fs/exec.c: call arch_pick_mmap_layout() only once\n  ...\n"
    },
    {
      "commit": "13c789a6b219aa23f917466c7e630566106b14c2",
      "tree": "ad9e096ded01f433306bcd40af3a3f8dc1ddea6f",
      "parents": [
        "6dd9158ae8577372aa433e6b0eae3c3d4caa5439",
        "79ba451d66ca8402c8d052ceb50e359ddc5e1161"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 18:11:00 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 18:11:00 2014 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\nPull crypto update from Herbert Xu:\n \"Here is the crypto update for 3.14:\n\n   - Improved crypto_memneq helper\n   - Use cyprto_memneq in arch-specific crypto code\n   - Replaced orphaned DCP driver with Freescale MXS DCP driver\n   - Added AVX/AVX2 version of AESNI-GCM encode and decode\n   - Added AMD Cryptographic Coprocessor (CCP) driver\n   - Misc fixes\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (41 commits)\n  crypto: aesni - fix build on x86 (32bit)\n  crypto: mxs - Fix sparse non static symbol warning\n  crypto: ccp - CCP device enabled/disabled changes\n  crypto: ccp - Cleanup hash invocation calls\n  crypto: ccp - Change data length declarations to u64\n  crypto: ccp - Check for caller result area before using it\n  crypto: ccp - Cleanup scatterlist usage\n  crypto: ccp - Apply appropriate gfp_t type to memory allocations\n  crypto: drivers - Sort drivers/crypto/Makefile\n  ARM: mxs: dts: Enable DCP for MXS\n  crypto: mxs - Add Freescale MXS DCP driver\n  crypto: mxs - Remove the old DCP driver\n  crypto: ahash - Fully restore ahash request before completing\n  crypto: aesni - fix build on x86 (32bit)\n  crypto: talitos - Remove redundant dev_set_drvdata\n  crypto: ccp - Remove redundant dev_set_drvdata\n  crypto: crypto4xx - Remove redundant dev_set_drvdata\n  crypto: caam - simplify and harden key parsing\n  crypto: omap-sham - Fix Polling mode for larger blocks\n  crypto: tcrypt - Added speed tests for AEAD crypto alogrithms in tcrypt test suite\n  ...\n"
    },
    {
      "commit": "6dd9158ae8577372aa433e6b0eae3c3d4caa5439",
      "tree": "aa097a9f9ea6206d668ac924460ad1a5d64e751c",
      "parents": [
        "90804ed61f24712975fa12f8a1fc12cd46ef7d59",
        "f3411cb2b2e396a41ed3a439863f028db7140a34"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 18:08:10 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 18:08:10 2014 -0800"
      },
      "message": "Merge git://git.infradead.org/users/eparis/audit\n\nPull audit update from Eric Paris:\n \"Again we stayed pretty well contained inside the audit system.\n  Venturing out was fixing a couple of function prototypes which were\n  inconsistent (didn\u0027t hurt anything, but we used the same value as an\n  int, uint, u32, and I think even a long in a couple of places).\n\n  We also made a couple of minor changes to when a couple of LSMs called\n  the audit system.  We hoped to add aarch64 audit support this go\n  round, but it wasn\u0027t ready.\n\n  I\u0027m disappearing on vacation on Thursday.  I should have internet\n  access, but it\u0027ll be spotty.  If anything goes wrong please be sure to\n  cc rgb@redhat.com.  He\u0027ll make fixing things his top priority\"\n\n* git://git.infradead.org/users/eparis/audit: (50 commits)\n  audit: whitespace fix in kernel-parameters.txt\n  audit: fix location of __net_initdata for audit_net_ops\n  audit: remove pr_info for every network namespace\n  audit: Modify a set of system calls in audit class definitions\n  audit: Convert int limit uses to u32\n  audit: Use more current logging style\n  audit: Use hex_byte_pack_upper\n  audit: correct a type mismatch in audit_syscall_exit()\n  audit: reorder AUDIT_TTY_SET arguments\n  audit: rework AUDIT_TTY_SET to only grab spin_lock once\n  audit: remove needless switch in AUDIT_SET\n  audit: use define\u0027s for audit version\n  audit: documentation of audit\u003d kernel parameter\n  audit: wait_for_auditd rework for readability\n  audit: update MAINTAINERS\n  audit: log task info on feature change\n  audit: fix incorrect set of audit_sock\n  audit: print error message when fail to create audit socket\n  audit: fix dangling keywords in audit_log_set_loginuid() output\n  audit: log on errors from filter user rules\n  ...\n"
    },
    {
      "commit": "77019967f06b5f30c8b619eac0dfdbc68465fa87",
      "tree": "56ca684bc235251c80fdae212b8ca912f4958a35",
      "parents": [
        "7984754b99b6c89054edc405e9d9d35810a91d36"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Jan 23 15:56:00 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:03 2014 -0800"
      },
      "message": "kdump: fix exported size of vmcoreinfo note\n\nRight now we seem to be exporting the max data size contained inside\nvmcoreinfo note.  But this does not include the size of meta data around\nvmcore info data.  Like name of the note and starting and ending elf_note.\n\nI think user space expects total size and that size is put in PT_NOTE elf\nheader.  Things seem to be fine so far because we are not using vmcoreinfo\nnote to the maximum capacity.  But as it starts filling up, to capacity,\nat some point of time, problem will be visible.\n\nI don\u0027t think user space will be broken with this change.  So there is no\nneed to introduce vmcoreinfo2.  This change is safe and backward\ncompatible.  More explanation on why this change is safe is below.\n\nvmcoreinfo contains information about kernel which user space needs to\nknow to do things like filtering.  For example, various kernel config\noptions or information about size or offset of some data structures etc.\nAll this information is commmunicated to user space with an ELF note\npresent in ELF /proc/vmcore file.\n\nCurrently vmcoreinfo data size is 4096.  With some elf note meta data\naround it, actual size is 4132 bytes.  But we are using barely 25% of that\nsize.  Rest is empty.  So even if we tell user space that size of ELf note\nis 4096 and not 4132, nothing will be broken becase after around 1000\nbytes, everything is zero anyway.\n\nBut once we start filling up the note to the capacity, and not report the\nfull size of note, bad things will start happening.  Either some data will\nbe lost or tools will be confused that they did not fine the zero note at\nthe end.\n\nSo I think this change is safe and should not break existing tools.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Ken\u0027ichi Ohmichi \u003coomichi@mxs.nes.nec.co.jp\u003e\nCc: Dan Aloni \u003cda-x@monatomic.org\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7984754b99b6c89054edc405e9d9d35810a91d36",
      "tree": "9828ff56e995007158fecee07666f6a5c08f403a",
      "parents": [
        "3b96d7db3b6dc99d207bca50037274d22e48dea5"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Jan 23 15:55:59 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:03 2014 -0800"
      },
      "message": "kexec: add sysctl to disable kexec_load\n\nFor general-purpose (i.e.  distro) kernel builds it makes sense to build\nwith CONFIG_KEXEC to allow end users to choose what kind of things they\nwant to do with kexec.  However, in the face of trying to lock down a\nsystem with such a kernel, there needs to be a way to disable kexec_load\n(much like module loading can be disabled).  Without this, it is too easy\nfor the root user to modify kernel memory even when CONFIG_STRICT_DEVMEM\nand modules_disabled are set.  With this change, it is still possible to\nload an image for use later, then disable kexec_load so the image (or lack\nof image) can\u0027t be altered.\n\nThe intention is for using this in environments where \"perfect\"\nenforcement is hard.  Without a verified boot, along with verified\nmodules, and along with verified kexec, this is trying to give a system a\nbetter chance to defend itself (or at least grow the window of\ndiscoverability) against attack in the face of a privilege escalation.\n\nIn my mind, I consider several boot scenarios:\n\n1) Verified boot of read-only verified root fs loading fd-based\n   verification of kexec images.\n2) Secure boot of writable root fs loading signed kexec images.\n3) Regular boot loading kexec (e.g. kcrash) image early and locking it.\n4) Regular boot with no control of kexec image at all.\n\n1 and 2 don\u0027t exist yet, but will soon once the verified kexec series has\nlanded.  4 is the state of things now.  The gap between 2 and 4 is too\nlarge, so this change creates scenario 3, a middle-ground above 4 when 2\nand 1 are not possible for a system.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d38f203b46c36626285400b9466b08abecaaa80",
      "tree": "262015ec19a4d39c29d9b21e0e14cbe2863ffb26",
      "parents": [
        "2e1f38358246b8f8e5871026b21d374e9bb1a163"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jan 23 15:55:56 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:02 2014 -0800"
      },
      "message": "kernel/signal.c: change do_signal_stop/do_sigaction to use while_each_thread()\n\nChange do_signal_stop() and do_sigaction() to avoid next_thread() and use\nwhile_each_thread() instead.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Kees Cook \u003ckeescook@chromium.org\u003e\nReviewed-by: Sameer Nanda \u003csnanda@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e1f38358246b8f8e5871026b21d374e9bb1a163",
      "tree": "b8688891fbf1f64622e60117b092561040cd794f",
      "parents": [
        "185ee40ee7fd1ecfc6575e8cefa2331218d1eca2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jan 23 15:55:55 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:02 2014 -0800"
      },
      "message": "kernel/sys.c: k_getrusage() can use while_each_thread()\n\nChange k_getrusage() to use while_each_thread(), no changes in the\ncompiled code.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Kees Cook \u003ckeescook@chromium.org\u003e\nReviewed-by: Sameer Nanda \u003csnanda@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98611e4e6a2b4a03fd2d4750cce8e4455a995c8d",
      "tree": "5979f4761ba67616eaeb3c5fd6fd19dbd265f9f2",
      "parents": [
        "63e46b95e9eae1161832bf45cb40bbad37bfb182"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jan 23 15:55:52 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:02 2014 -0800"
      },
      "message": "exec: kill task_struct-\u003edid_exec\n\nWe can kill either task-\u003edid_exec or PF_FORKNOEXEC, they are mutually\nexclusive.  The patch kills -\u003edid_exec because it has a single user.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68ce670b6e8edc30551862e7f6a306e45389e189",
      "tree": "6d11b7ba37a902af3640da2eeb7e1ab701e607ec",
      "parents": [
        "5d59e18270d4769c9160c282b25c00b6fc004ffb"
      ],
      "author": {
        "name": "Daeseok Youn",
        "email": "daeseok.youn@gmail.com",
        "time": "Thu Jan 23 15:55:48 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:02 2014 -0800"
      },
      "message": "kernel/fork.c: remove redundant NULL check in dup_mm()\n\ncurrent-\u003emm doesn\u0027t need a NULL check in dup_mm().  Becasue dup_mm() is\nused only in copy_mm() and current-\u003emm is checked whether it is NULL or\nnot in copy_mm() before calling dup_mm().\n\nSigned-off-by: Daeseok Youn \u003cdaeseok.youn@gmail.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5d59e18270d4769c9160c282b25c00b6fc004ffb",
      "tree": "2f945528b513b51d0735cf38f71df9cdefb125cb",
      "parents": [
        "ff252c1fc537b0c9e40f62da0a9d11bf0737b7db"
      ],
      "author": {
        "name": "Daeseok Youn",
        "email": "daeseok.youn@gmail.com",
        "time": "Thu Jan 23 15:55:47 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:02 2014 -0800"
      },
      "message": "kernel/fork.c: fix coding style issues\n\nFix errors reported by checkpatch.pl.  One error is parentheses, the other\nis a whitespace issue.\n\nSigned-off-by: Daeseok Youn \u003cdaeseok.youn@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff252c1fc537b0c9e40f62da0a9d11bf0737b7db",
      "tree": "04748be19b9fda59912d3511f8ff8a711dd8209f",
      "parents": [
        "abaf3787ac26ba33e2f75e76b1174c32254c25b0"
      ],
      "author": {
        "name": "DaeSeok Youn",
        "email": "daeseok.youn@gmail.com",
        "time": "Thu Jan 23 15:55:46 2014 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 23 16:37:02 2014 -0800"
      },
      "message": "kernel/fork.c: make dup_mm() static\n\ndup_mm() is used only in kernel/fork.c\n\nSigned-off-by: Daeseok Youn \u003cdaeseok.youn@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "1d3fa370346d9d96ab0efb84e3312aed3aeb35ea"
}
