)]}'
{
  "log": [
    {
      "commit": "e0a70217107e6f9844628120412cb27bb4cea194",
      "tree": "3c805ee6cfe97afee77b226e0cf5d36135e82dda",
      "parents": [
        "b312e131cb88b83b6edc7a017b0249b4ea176edc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Nov 05 16:53:42 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 05 14:16:03 2010 -0700"
      },
      "message": "posix-cpu-timers: workaround to suppress the problems with mt exec\n\nposix-cpu-timers.c correctly assumes that the dying process does\nposix_cpu_timers_exit_group() and removes all !CPUCLOCK_PERTHREAD\ntimers from signal-\u003ecpu_timers list.\n\nBut, it also assumes that timer-\u003eit.cpu.task is always the group\nleader, and thus the dead -\u003etask means the dead thread group.\n\nThis is obviously not true after de_thread() changes the leader.\nAfter that almost every posix_cpu_timer_ method has problems.\n\nIt is not simple to fix this bug correctly. First of all, I think\nthat timer-\u003eit.cpu should use struct pid instead of task_struct.\nAlso, the locking should be reworked completely. In particular,\ntasklist_lock should not be used at all. This all needs a lot of\nnontrivial and hard-to-test changes.\n\nChange __exit_signal() to do posix_cpu_timers_exit_group() when\nthe old leader dies during exec. This is not the fix, just the\ntemporary hack to hide the problem for 2.6.37 and stable. IOW,\nthis is obviously wrong but this is what we currently have anyway:\ncpu timers do not work after mt exec.\n\nIn theory this change adds another race. The exiting leader can\ndetach the timers which were attached to the new leader. However,\nthe window between de_thread() and release_task() is small, we\ncan pretend that sys_timer_create() was called before de_thread().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d16e15f5b029fc7d03540ba0e5fb23b0abb0ebe0",
      "tree": "382a6779f4eee476d86538372f0f6586d64ddb8b",
      "parents": [
        "895021552d6ffe8a4d076cb5c4b1e700c33e96e1"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Oct 27 15:34:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:13 2010 -0700"
      },
      "message": "exit: add lock context annotation on find_new_reaper()\n\nfind_new_reaper() releases and regrabs tasklist_lock but was missing\nproper annotations.  Add it.  This remove following sparse warning:\n\n warning: context imbalance in \u0027find_new_reaper\u0027 - unexpected unlock\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "3d5992d2ac7dc09aed8ab537cba074589f0f0a52",
      "tree": "0fbb51026e8aa13ddd7a6516c04471ceb97bc277",
      "parents": [
        "0f4d208f1975f16f269134cee5f44c1f048581da"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue Oct 26 14:21:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: add per-mm oom disable count\n\nIt\u0027s pointless to kill a task if another thread sharing its mm cannot be\nkilled to allow future memory freeing.  A subsequent patch will prevent\nkills in such cases, but first it\u0027s necessary to have a way to flag a task\nthat shares memory with an OOM_DISABLE task that doesn\u0027t incur an\nadditional tasklist scan, which would make select_bad_process() an O(n^2)\nfunction.\n\nThis patch adds an atomic counter to struct mm_struct that follows how\nmany threads attached to it have an oom_score_adj of OOM_SCORE_ADJ_MIN.\nThey cannot be killed by the kernel, so their memory cannot be freed in\noom conditions.\n\nThis only requires task_lock() on the task that we\u0027re operating on, it\ndoes not require mm-\u003emmap_sem since task_lock() pins the mm and the\noperation is atomic.\n\n[rientjes@google.com: changelog and sys_unshare() code]\n[rientjes@google.com: protect oom_disable_count with task_lock in fork]\n[rientjes@google.com: use old_mm for oom_disable_count in exec]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@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": "4e231c7962ce711c7d8c2a4dc23ecd1e8fc28363",
      "tree": "05af30e5c2f1084d8e77c89f0e55beaafa2194c0",
      "parents": [
        "1b9a644fece117cfa5474a2388d6b89d1baf8ddf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Sep 09 21:01:59 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 09 21:07:09 2010 +0200"
      },
      "message": "perf: Fix up delayed_put_task_struct()\n\nI missed a perf_event_ctxp user when converting it to an array. Pull this\nlast user into perf_event.c as well and fix it up.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f362b73244fb16ea4ae127ced1467dd8adaa7733",
      "tree": "6aa3e767b527157b532c0620f2e9ef4c8f131c45",
      "parents": [
        "d7627467b7a8dd6944885290a03a07ceb28c10eb"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel.blueman@gmail.com",
        "time": "Tue Aug 17 23:56:55 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 17 18:07:43 2010 -0700"
      },
      "message": "Fix unprotected access to task credentials in waitid()\n\nUsing a program like the following:\n\n\t#include \u003cstdlib.h\u003e\n\t#include \u003cunistd.h\u003e\n\t#include \u003csys/types.h\u003e\n\t#include \u003csys/wait.h\u003e\n\n\tint main() {\n\t\tid_t id;\n\t\tsiginfo_t infop;\n\t\tpid_t res;\n\n\t\tid \u003d fork();\n\t\tif (id \u003d\u003d 0) { sleep(1); exit(0); }\n\t\tkill(id, SIGSTOP);\n\t\talarm(1);\n\t\twaitid(P_PID, id, \u0026infop, WCONTINUED);\n\t\treturn 0;\n\t}\n\nto call waitid() on a stopped process results in access to the child task\u0027s\ncredentials without the RCU read lock being held - which may be replaced in the\nmeantime - eliciting the following warning:\n\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t[ INFO: suspicious rcu_dereference_check() usage. ]\n\t---------------------------------------------------\n\tkernel/exit.c:1460 invoked rcu_dereference_check() without protection!\n\n\tother info that might help us debug this:\n\n\trcu_scheduler_active \u003d 1, debug_locks \u003d 1\n\t2 locks held by waitid02/22252:\n\t #0:  (tasklist_lock){.?.?..}, at: [\u003cffffffff81061ce5\u003e] do_wait+0xc5/0x310\n\t #1:  (\u0026(\u0026sighand-\u003esiglock)-\u003erlock){-.-...}, at: [\u003cffffffff810611da\u003e]\n\twait_consider_task+0x19a/0xbe0\n\n\tstack backtrace:\n\tPid: 22252, comm: waitid02 Not tainted 2.6.35-323cd+ #3\n\tCall Trace:\n\t [\u003cffffffff81095da4\u003e] lockdep_rcu_dereference+0xa4/0xc0\n\t [\u003cffffffff81061b31\u003e] wait_consider_task+0xaf1/0xbe0\n\t [\u003cffffffff81061d15\u003e] do_wait+0xf5/0x310\n\t [\u003cffffffff810620b6\u003e] sys_waitid+0x86/0x1f0\n\t [\u003cffffffff8105fce0\u003e] ? child_wait_callback+0x0/0x70\n\t [\u003cffffffff81003282\u003e] system_call_fastpath+0x16/0x1b\n\nThis is fixed by holding the RCU read lock in wait_task_continued() to ensure\nthat the task\u0027s current credentials aren\u0027t destroyed between us reading the\ncred pointer and us reading the UID from those credentials.\n\nFurthermore, protect wait_task_stopped() in the same way.\n\nWe don\u0027t need to keep holding the RCU read lock once we\u0027ve read the UID from\nthe credentials as holding the RCU read lock doesn\u0027t stop the target task from\nchanging its creds under us - so the credentials may be outdated immediately\nafter we\u0027ve read the pointer, lock or no lock.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c7e49c1488ab20342eaaf38f1ca35a207f4c051d",
      "tree": "43876a69cafbb49ce86f71ba5db88018ca7cc036",
      "parents": [
        "13d7e3a2dba6a79589ed34dc0b9114d7b5ff9eab"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Aug 10 18:03:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "ptrace: optimize exit_ptrace() for the likely case\n\nexit_ptrace() takes tasklist_lock unconditionally.  We need this lock to\navoid the race with ptrace_traceme(), it acts as a barrier.\n\nChange its caller, forget_original_parent(), to call exit_ptrace() under\ntasklist_lock.  Change exit_ptrace() to drop and reacquire this lock if\nneeded.\n\nThis allows us to add the fastpath list_empty(ptraced) check.  In the\nlikely no-tracees case exit_ptrace() just returns and we avoid the lock()\n+ unlock() sequence.\n\n\"Zhang, Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e suggested to add this\ncheck, and he reports that this change adds about 11% improvement in some\ntests.\n\nSuggested-and-tested-by: \"Zhang, Yanmin\" \u003cyanmin_zhang@linux.intel.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "b3ac022cb9dc5883505a88b159d1b240ad1ef405",
      "tree": "bffa035303cbe3c5bde048ac3d3154fb57059e2d",
      "parents": [
        "dd98acf74762764fbc4382a1d9a244f11a2658cc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:24 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:47 2010 -0700"
      },
      "message": "proc: turn signal_struct-\u003ecount into \"int nr_threads\"\n\nNo functional changes, just s/atomic_t count/int nr_threads/.\n\nWith the recent changes this counter has a single user, get_nr_threads()\nAnd, none of its callers need the really accurate number of threads, not\nto mention each caller obviously races with fork/exit.  It is only used to\nreport this value to the user-space, except first_tid() uses it to avoid\nthe unnecessary while_each_thread() loop in the unlikely case.\n\nIt is a bit sad we need a word in struct signal_struct for this, perhaps\nwe can change get_nr_threads() to approximate the number of threads using\nsignal-\u003elive and kill -\u003enr_threads later.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "97101eb41d0d3c97543878ce40e0b8a8b2747ed7",
      "tree": "d33299c8d4787d3b578ea432fdaceb965a2acd97",
      "parents": [
        "a705be6b5e8b05f2ae51536ec709de921960326c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:20 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "exit: move taskstats_tgid_free() from __exit_signal() to free_signal_struct()\n\nMove taskstats_tgid_free() from __exit_signal() to free_signal_struct().\n\nThis way signal-\u003estats never points to nowhere and we can read -\u003estats\nlockless.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Veaceslav Falico \u003cvfalico@redhat.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@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": "d40e48e02f3785b9342ee4eb3d7cc9f12981b7f5",
      "tree": "05f900ae17f4727c0e8b8c2c84d41b1cee7c13b0",
      "parents": [
        "b7b8ff6373d4b910af081f76888395e6df53249d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "exit: __exit_signal: use thread_group_leader() consistently\n\nCleanup:\n\n- Add the boolean, group_dead \u003d thread_group_leader(), for clarity.\n\n- Do not test/set sig \u003d\u003d NULL to detect the all-dead case, use this\n  boolean.\n\n- Pass this boolen to __unhash_process() and use it instead of another\n  thread_group_leader() call which needs -\u003egroup_leader.\n\n  This can be considered as microoptimization, but hopefully this also\n  allows us do do other cleanups later.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Veaceslav Falico \u003cvfalico@redhat.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@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": "b7b8ff6373d4b910af081f76888395e6df53249d",
      "tree": "128a1b2cf026fb8b9791eaefb6f79f872999a5c6",
      "parents": [
        "4ada856fb0ee62f6fe3aac3de726deac0640d929"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "signals: kill the awful task_rq_unlock_wait() hack\n\nNow that task-\u003esignal can\u0027t go away we can revert the horrible hack added\nby ad474caca3e2a0550b7ce0706527ad5ab389a4d4 (\"fix for\naccount_group_exec_runtime(), make sure -\u003esignal can\u0027t be freed under\nrq-\u003elock\").\n\nAnd we can do more cleanups sched_stats.h/posix-cpu-timers.c later.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Roland McGrath \u003croland@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": "4ada856fb0ee62f6fe3aac3de726deac0640d929",
      "tree": "8dd3efbc19f6e1f1dac2ff7afdcd9658fb08b814",
      "parents": [
        "ea6d290ca34c4fd91b7348338c0cc7bdeff94a35"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "signals: clear signal-\u003etty when the last thread exits\n\nWhen the last thread exits signal-\u003etty is freed, but the pointer is not\ncleared and points to nowhere.\n\nThis is OK.  Nobody should use signal-\u003etty lockless, and it is no longer\npossible to take -\u003esiglock.  However this looks wrong even if correct, and\nthe nice OOPS is better than subtle and hard to find bugs.\n\nChange __exit_signal() to clear signal-\u003etty under -\u003esiglock.\n\nNote: __exit_signal() needs more cleanups.  It should not check \"sig !\u003d\nNULL\" to detect the all-dead case and we have the same issues with\nsignal-\u003estats.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Roland McGrath \u003croland@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": "ea6d290ca34c4fd91b7348338c0cc7bdeff94a35",
      "tree": "6e9bd367650d9233c5b6cf1059845f17cb1bc460",
      "parents": [
        "4dec2a91fd7e8815d730afbfdcf085cbf53433ac"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:16 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "signals: make task_struct-\u003esignal immutable/refcountable\n\nWe have a lot of problems with accessing task_struct-\u003esignal, it can\n\"disappear\" at any moment.  Even current can\u0027t use its -\u003esignal safely\nafter exit_notify().  -\u003esiglock helps, but it is not convenient, not\nalways possible, and sometimes it makes sense to use task-\u003esignal even\nafter this task has already dead.\n\nThis patch adds the reference counter, sigcnt, into signal_struct.  This\nreference is owned by task_struct and it is dropped in\n__put_task_struct().  Perhaps it makes sense to export\nget/put_signal_struct() later, but currently I don\u0027t see the immediate\nreason.\n\nRename __cleanup_signal() to free_signal_struct() and unexport it.  With\nthe previous changes it does nothing except kmem_cache_free().\n\nChange __exit_signal() to not clear/free -\u003esignal, it will be freed when\nthe last reference to any thread in the thread group goes away.\n\nNote:\n\t- when the last thead exits signal-\u003etty can point to nowhere, see\n\t  the next patch.\n\n\t- with or without this patch signal_struct-\u003ecount should go away,\n\t  or at least it should be \"int nr_threads\" for fs/proc. This will\n\t  be addressed later.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Alan Cox \u003calan@linux.intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Roland McGrath \u003croland@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": "4dec2a91fd7e8815d730afbfdcf085cbf53433ac",
      "tree": "cd33cc793abf532d4ca212d09c1e8d3154a8b530",
      "parents": [
        "ffdf91856c812646aa276711fa7e3ad80b00764a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "fork/exit: move tty_kref_put() outside of __cleanup_signal()\n\ntty_kref_put() has two callsites in copy_process() paths,\n\n\t1. if copy_process() suceeds it is called before we copy\n\t   signal-\u003etty from parent\n\n\t2. otherwise it is called from __cleanup_signal() under\n\t   bad_fork_cleanup_signal: label\n\nIn both cases tty_kref_put() is not right and unneeded because we don\u0027t\nhave the balancing tty_kref_get().  Fortunately, this is harmless because\nthis can only happen without CLONE_THREAD, and in this case signal-\u003etty\nmust be NULL.\n\nRemove tty_kref_put() from copy_process() and __cleanup_signal(), and\nchange another caller of __cleanup_signal(), __exit_signal(), to call\ntty_kref_put() by hand.\n\nI hope this change makes sense by itself, but it is also needed to make\n-\u003esignal refcountable.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Alan Cox \u003calan@linux.intel.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\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": "4a5999429739844367d0f77a65efdd7db8202779",
      "tree": "fff1158fa43466b30294a7db2c4629ca14973770",
      "parents": [
        "d344193a05da89c97e965da2c5cbf687d7385eae"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "exit: avoid sig-\u003ecount in __exit_signal() to detect the group-dead case\n\nChange __exit_signal() to check thread_group_leader() instead of\natomic_dec_and_test(\u0026sig-\u003ecount).  This must be equivalent, the group\nleader must be released only after all other threads have exited and\npassed __exit_signal().\n\nHenceforth sig-\u003ecount is not actually used, except in fs/proc for\nget_nr_threads/etc.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Veaceslav Falico \u003cvfalico@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": "d344193a05da89c97e965da2c5cbf687d7385eae",
      "tree": "6267b68c31c4547f1749acd35d2a5bfaff919839",
      "parents": [
        "09faef11df8c559a23e2405d123cb2683733a79a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:46 2010 -0700"
      },
      "message": "exit: avoid sig-\u003ecount in de_thread/__exit_signal synchronization\n\nde_thread() and __exit_signal() use signal_struct-\u003ecount/notify_count for\nsynchronization.  We can simplify the code and use -\u003enotify_count only.\nInstead of comparing these two counters, we can change de_thread() to set\n-\u003enotify_count \u003d nr_of_sub_threads, then change __exit_signal() to\ndec-and-test this counter and notify group_exit_task.\n\nNote that __exit_signal() checks \"notify_count \u003e 0\" just for symmetry with\nexit_notify(), we could just check it is !\u003d 0.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Veaceslav Falico \u003cvfalico@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": "9c3391684415c9dca239130d9e433a60a4edf04b",
      "tree": "a8019b964c625cfeeda0e9d85bafa48991546212",
      "parents": [
        "269b005a28e124a341df4adef2c3661cf7371fcc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed May 26 14:43:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:45 2010 -0700"
      },
      "message": "exit: exit_notify() can trust signal-\u003enotify_count \u003c 0\n\nsignal_struct-\u003ecount in its current form must die.\n\n- it has no reasons to be atomic_t\n\n- it looks like a reference counter, but it is not\n\n- otoh, we really need to make task-\u003esignal refcountable, just look at\n  the extremely ugly task_rq_unlock_wait() called from __exit_signals().\n\n- we should change the lifetime rules for task-\u003esignal, it should be\n  pinned to task_struct.  We have a lot of code which can be simplified\n  after that.\n\n- it is not needed!  while the code is correct, any usage of this\n  counter is artificial, except fs/proc uses it correctly to show the\n  number of threads.\n\nThis series removes the usage of sig-\u003ecount from exit pathes.\n\nThis patch:\n\nNow that Veaceslav changed copy_signal() to use zalloc(), exit_notify()\ncan just check notify_count \u003c 0 to ensure the execing sub-threads needs\nthe notification from us.  No need to do other checks, notify_count !\u003d 0\nmust always mean -\u003egroup_exit_task !\u003d NULL is waiting for us.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Veaceslav Falico \u003cvfalico@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": "c0ff7453bb5c7c98e0885fb94279f2571946f280",
      "tree": "8bb2b169a5145f0496575dbd2f48bb4b1c83f819",
      "parents": [
        "708c1bbc9d0c3e57f40501794d9b0eed29d10fce"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon May 24 14:32:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:06:57 2010 -0700"
      },
      "message": "cpuset,mm: fix no node to alloc memory when changing cpuset\u0027s mems\n\nBefore applying this patch, cpuset updates task-\u003emems_allowed and\nmempolicy by setting all new bits in the nodemask first, and clearing all\nold unallowed bits later.  But in the way, the allocator may find that\nthere is no node to alloc memory.\n\nThe reason is that cpuset rebinds the task\u0027s mempolicy, it cleans the\nnodes which the allocater can alloc pages on, for example:\n\n(mpol: mempolicy)\n\ttask1\t\t\ttask1\u0027s mpol\ttask2\n\talloc page\t\t1\n\t  alloc on node0? NO\t1\n\t\t\t\t1\t\tchange mems from 1 to 0\n\t\t\t\t1\t\trebind task1\u0027s mpol\n\t\t\t\t0-1\t\t  set new bits\n\t\t\t\t0\t  \t  clear disallowed bits\n\t  alloc on node1? NO\t0\n\t  ...\n\tcan\u0027t alloc page\n\t  goto oom\n\nThis patch fixes this problem by expanding the nodes range first(set newly\nallowed bits) and shrink it lazily(clear newly disallowed bits).  So we\nuse a variable to tell the write-side task that read-side task is reading\nnodemask, and the write-side task clears newly disallowed nodes after\nread-side task ends the current memory allocation.\n\n[akpm@linux-foundation.org: fix spello]\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b257c14ceb1194a6181144210056d38f22127189",
      "tree": "c803925f1d5bf2237e7495d306bf43929df0c952",
      "parents": [
        "371fd7e7a56a5c136d31aa980011bd2f131c3ef5",
        "2ba3abd8186f24c7fb418927025b4e2120e3a362"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 15 09:35:24 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 15 09:36:16 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into sched/core\n\nMerge reason: merge the latest fixes, update to -rc4.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a3a2e76c77fa22b114e421ac11dec0c56c3503fb",
      "tree": "cc67bbd8d5d364e55ea7a00d0b5ad68d5eac08ac",
      "parents": [
        "b01d0942c2b7a3026d2b7d38b5773d3d00420e06"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 06 14:34:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 07 08:38:02 2010 -0700"
      },
      "message": "mm: avoid null-pointer deref in sync_mm_rss()\n\n- We weren\u0027t zeroing p-\u003erss_stat[] at fork()\n\n- Consequently sync_mm_rss() was dereferencing tsk-\u003emm for kernel\n  threads and was oopsing.\n\n- Make __sync_task_rss_stat() static, too.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d15648\n\n[akpm@linux-foundation.org: remove the BUG_ON(!mm-\u003erss)]\nReported-by: Troels Liebe Bentsen \u003ctlb@rapanden.dk\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\n\"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@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": "32bd7eb5a7f4596c8440dd9440322fe9e686634d",
      "tree": "f1d0c0a215c1305aec0a8f407b431a975f7ad072",
      "parents": [
        "c9494727cf293ae2ec66af57547a3e79c724fec2"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 24 13:17:19 2010 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 20:12:00 2010 +0200"
      },
      "message": "sched: Remove remaining USER_SCHED code\n\nThis is left over from commit 7c9414385e (\"sched: Remove USER_SCHED\"\")\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Dhaval Giani \u003cdhaval.giani@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nLKML-Reference: \u003c4BA9A05F.7010407@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4e3eaddd142e2142c048c5052a0a9d2604fccfc6",
      "tree": "5bc45a286502e54e790c54948f22364c5afd9d89",
      "parents": [
        "8655e7e3ddec60603c4f6c14cdf642e2ba198df8",
        "b97c4bc16734a2e597dac7f91ee9eb78f4aeef9a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:43:01 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:43:01 2010 -0800"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  locking: Make sparse work with inline spinlocks and rwlocks\n  x86/mce: Fix RCU lockdep splats\n  rcu: Increase RCU CPU stall timeouts if PROVE_RCU\n  ftrace: Replace read_barrier_depends() with rcu_dereference_raw()\n  rcu: Suppress RCU lockdep warnings during early boot\n  rcu, ftrace: Fix RCU lockdep splat in ftrace_perf_buf_prepare()\n  rcu: Suppress __mpol_dup() false positive from RCU lockdep\n  rcu: Make rcu_read_lock_sched_held() handle !PREEMPT\n  rcu: Add control variables to lockdep_rcu_dereference() diagnostics\n  rcu, cgroup: Relax the check in task_subsys_state() as early boot is now handled by lockdep-RCU\n  rcu: Use wrapper function instead of exporting tasklist_lock\n  sched, rcu: Fix rcu_dereference() for RCU-lockdep\n  rcu: Make task_subsys_state() RCU-lockdep checks handle boot-time use\n  rcu: Fix holdoff for accelerated GPs for last non-dynticked CPU\n  x86/gart: Unexport gart_iommu_aperture\n\nFix trivial conflicts in kernel/trace/ftrace.c\n"
    },
    {
      "commit": "f3abd4f9531becb71626bd206955d47d5ea54f06",
      "tree": "512d5d72d02f6dae87af66c7e044d597eb7e067c",
      "parents": [
        "9c03c383563f147907f1a90cf16f1e190e2f4aae"
      ],
      "author": {
        "name": "Thiago Farina",
        "email": "tfransosi@gmail.com",
        "time": "Fri Mar 05 13:42:52 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:32 2010 -0800"
      },
      "message": "kernel/exit.c: fix shadows sparse warning\n\nkernel/exit.c:1183:26: warning: symbol \u0027status\u0027 shadows an earlier one\nkernel/exit.c:1173:21: originally declared here\n\nSigned-off-by: Thiago Farina \u003ctfransosi@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": "34e55232e59f7b19050267a05ff1226e5cd122a5",
      "tree": "6b94e776e87d2a2fe1ceca7c5606901575323900",
      "parents": [
        "d559db086ff5be9bcc259e5aa50bf3d881eaf1d1"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Mar 05 13:41:40 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:24 2010 -0800"
      },
      "message": "mm: avoid false sharing of mm_counter\n\nConsidering the nature of per mm stats, it\u0027s the shared object among\nthreads and can be a cache-miss point in the page fault path.\n\nThis patch adds per-thread cache for mm_counter.  RSS value will be\ncounted into a struct in task_struct and synchronized with mm\u0027s one at\nevents.\n\nNow, in this patch, the event is the number of calls to handle_mm_fault.\nPer-thread value is added to mm at each 64 calls.\n\n rough estimation with small benchmark on parallel thread (2threads) shows\n [before]\n     4.5 cache-miss/faults\n [after]\n     4.0 cache-miss/faults\n Anyway, the most contended object is mmap_sem if the number of threads grows.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db1466b3e1bd1727375cdbfcbea4bcce2f860f61",
      "tree": "e56e8d7b82f8851e570d95f531ec62e4d107967a",
      "parents": [
        "0e064caf6402d1d67db4233d26beec88ca212919"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Mar 03 07:46:56 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 04 11:46:14 2010 +0100"
      },
      "message": "rcu: Use wrapper function instead of exporting tasklist_lock\n\nLockdep-RCU commit d11c563d exported tasklist_lock, which is not\na good thing.  This patch instead exports a function that uses\nlockdep to check whether tasklist_lock is held.\n\nSuggested-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nLKML-Reference: \u003c1267631219-8713-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d11c563dd20ff35da5652c3e1c989d9e10e1d6d0",
      "tree": "b189f50de7a01d7603935d4da7e755d764dfe67e",
      "parents": [
        "a898def29e4119bc01ebe7ca97423181f4c0ea2d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon Feb 22 17:04:50 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 25 10:34:26 2010 +0100"
      },
      "message": "sched: Use lockdep-based checking on rcu_dereference()\n\nUpdate the rcu_dereference() usages to take advantage of the new\nlockdep-based checking.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1266887105-1528-6-git-send-email-paulmck@linux.vnet.ibm.com\u003e\n[ -v2: fix allmodconfig missing symbol export build failure on x86 ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9cd80bbb07fcd6d4d037fad4297496d3b132ac6b",
      "tree": "322216d34b6d5ba2366f53ba0d677950c4cde766",
      "parents": [
        "0f67b0b0392ccca98459bf40b36c0037793b5f71"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Dec 17 15:27:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 15:45:31 2009 -0800"
      },
      "message": "do_wait() optimization: do not place sub-threads on task_struct-\u003echildren list\n\nThanks to Roland who pointed out de_thread() issues.\n\nCurrently we add sub-threads to -\u003ereal_parent-\u003echildren list.  This buys\nnothing but slows down do_wait().\n\nWith this patch -\u003echildren contains only main threads (group leaders).\nThe only complication is that forget_original_parent() should iterate over\nsub-threads by hand, and de_thread() needs another list_replace() when it\nchanges -\u003egroup_leader.\n\nHenceforth do_wait_thread() can never see task_detached() \u0026\u0026 !EXIT_DEAD\ntasks, we can remove this check (and we can unify do_wait_thread() and\nptrace_do_wait()).\n\nThis change can confuse the optimistic search in mm_update_next_owner(),\nbut this is fixable and minor.\n\nPerhaps badness() and oom_kill_process() should be updated, but they\nshould be fixed in any case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d615482547584b9a8bb6316a58fed6ce90dd9ff",
      "tree": "21dae4b70acb3ce0bdaeeaee1dbd970be41d26e2",
      "parents": [
        "fe841226bd954fba4fd79f037a876053fe9c3217"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 14:54:03 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:33 2009 +0100"
      },
      "message": "sched: Convert pi_lock to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5ec93d1154fd1e269162398f8e70efc7e004485d",
      "tree": "2a76835812d3502b036a7234faeaa0f6ba0356da",
      "parents": [
        "38c70b27f9502c31c1d0c29676275f7362cdb0d9"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@linux.intel.com",
        "time": "Mon Nov 30 13:18:45 2009 +0000"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Dec 11 15:18:08 2009 -0800"
      },
      "message": "tty: Move the leader test in disassociate\n\nThere are two call points, both want to check that tty-\u003esignal-\u003eleader is\nset. Move the test into disassociate_ctty() as that will make locking\nchanges easier in a bit\n\nSigned-off-by: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "6035ccd8e9e40bb654fbfdef325902ab531679a5",
      "tree": "c1810d8a4d4ef150cdf14af72e6087dfc3f4b6e0",
      "parents": [
        "23eb3b64b5e44680c867e165fe1cd18e57fba255",
        "878eaddd05d251cefa9632c2b8046833c5eead66"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 08:19:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 08:19:16 2009 -0800"
      },
      "message": "Merge branch \u0027for-2.6.33\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.33\u0027 of git://git.kernel.dk/linux-2.6-block: (113 commits)\n  cfq-iosched: Do not access cfqq after freeing it\n  block: include linux/err.h to use ERR_PTR\n  cfq-iosched: use call_rcu() instead of doing grace period stall on queue exit\n  blkio: Allow CFQ group IO scheduling even when CFQ is a module\n  blkio: Implement dynamic io controlling policy registration\n  blkio: Export some symbols from blkio as its user CFQ can be a module\n  block: Fix io_context leak after failure of clone with CLONE_IO\n  block: Fix io_context leak after clone with CLONE_IO\n  cfq-iosched: make nonrot check logic consistent\n  io controller: quick fix for blk-cgroup and modular CFQ\n  cfq-iosched: move IO controller declerations to a header file\n  cfq-iosched: fix compile problem with !CONFIG_CGROUP\n  blkio: Documentation\n  blkio: Wait on sync-noidle queue even if rq_noidle \u003d 1\n  blkio: Implement group_isolation tunable\n  blkio: Determine async workload length based on total number of queues\n  blkio: Wait for cfq queue to get backlogged if group is empty\n  blkio: Propagate cgroup weight updation to cfq groups\n  blkio: Drop the reference to queue once the task changes cgroup\n  blkio: Provide some isolation between groups\n  ...\n"
    },
    {
      "commit": "897e81bea1fcfcd2c5cdb720c9efdb25da9ff374",
      "tree": "92cf33ed2c35c1ece633f09365702f1c8e24d415",
      "parents": [
        "c3fa27d1367fac63ac8533d6f20ea851d0d70a10",
        "0cf55e1ec08bb5a22e068309e2d8ba1180ab4239"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 05 15:30:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 05 15:30:49 2009 -0800"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (35 commits)\n  sched, cputime: Introduce thread_group_times()\n  sched, cputime: Cleanups related to task_times()\n  Revert \"sched, x86: Optimize branch hint in __switch_to()\"\n  sched: Fix isolcpus boot option\n  sched: Revert 498657a478c60be092208422fefa9c7b248729c2\n  sched, time: Define nsecs_to_jiffies()\n  sched: Remove task_{u,s,g}time()\n  sched: Introduce task_times() to replace task_{u,s}time() pair\n  sched: Limit the number of scheduler debug messages\n  sched.c: Call debug_show_all_locks() when dumping all tasks\n  sched, x86: Optimize branch hint in __switch_to()\n  sched: Optimize branch hint in context_switch()\n  sched: Optimize branch hint in pick_next_task_fair()\n  sched_feat_write(): Update ppos instead of file-\u003ef_pos\n  sched: Sched_rt_periodic_timer vs cpu hotplug\n  sched, kvm: Fix race condition involving sched_in_preempt_notifers\n  sched: More generic WAKE_AFFINE vs select_idle_sibling()\n  sched: Cleanup select_task_rq_fair()\n  sched: Fix granularity of task_u/stime()\n  sched: Fix/add missing update_rq_clock() calls\n  ...\n"
    },
    {
      "commit": "b69f2292063d2caf37ca9aec7d63ded203701bf3",
      "tree": "be4acb81ea4ab7014047808ec2b2c908e8334f55",
      "parents": [
        "61cc74fbb87af6aa551a06a370590c9bc07e29d9"
      ],
      "author": {
        "name": "Louis Rilling",
        "email": "louis.rilling@kerlabs.com",
        "time": "Fri Dec 04 14:52:42 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 04 16:36:18 2009 +0100"
      },
      "message": "block: Fix io_context leak after failure of clone with CLONE_IO\n\nWith CLONE_IO, parent\u0027s io_context-\u003enr_tasks is incremented, but never\ndecremented whenever copy_process() fails afterwards, which prevents\nexit_io_context() from calling IO schedulers exit functions.\n\nGive a task_struct to exit_io_context(), and call exit_io_context() instead of\nput_io_context() in copy_process() cleanup path.\n\nSigned-off-by: Louis Rilling \u003clouis.rilling@kerlabs.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0cf55e1ec08bb5a22e068309e2d8ba1180ab4239",
      "tree": "6102662a9594d51155bee11666fe8517fcbe6039",
      "parents": [
        "d99ca3b977fc5a93141304f571475c2af9e6c1c5"
      ],
      "author": {
        "name": "Hidetoshi Seto",
        "email": "seto.hidetoshi@jp.fujitsu.com",
        "time": "Wed Dec 02 17:28:07 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 02 17:32:40 2009 +0100"
      },
      "message": "sched, cputime: Introduce thread_group_times()\n\nThis is a real fix for problem of utime/stime values decreasing\ndescribed in the thread:\n\n   http://lkml.org/lkml/2009/11/3/522\n\nNow cputime is accounted in the following way:\n\n - {u,s}time in task_struct are increased every time when the thread\n   is interrupted by a tick (timer interrupt).\n\n - When a thread exits, its {u,s}time are added to signal-\u003e{u,s}time,\n   after adjusted by task_times().\n\n - When all threads in a thread_group exits, accumulated {u,s}time\n   (and also c{u,s}time) in signal struct are added to c{u,s}time\n   in signal struct of the group\u0027s parent.\n\nSo {u,s}time in task struct are \"raw\" tick count, while\n{u,s}time and c{u,s}time in signal struct are \"adjusted\" values.\n\nAnd accounted values are used by:\n\n - task_times(), to get cputime of a thread:\n   This function returns adjusted values that originates from raw\n   {u,s}time and scaled by sum_exec_runtime that accounted by CFS.\n\n - thread_group_cputime(), to get cputime of a thread group:\n   This function returns sum of all {u,s}time of living threads in\n   the group, plus {u,s}time in the signal struct that is sum of\n   adjusted cputimes of all exited threads belonged to the group.\n\nThe problem is the return value of thread_group_cputime(),\nbecause it is mixed sum of \"raw\" value and \"adjusted\" value:\n\n  group\u0027s {u,s}time \u003d foreach(thread){{u,s}time} + exited({u,s}time)\n\nThis misbehavior can break {u,s}time monotonicity.\nAssume that if there is a thread that have raw values greater\nthan adjusted values (e.g. interrupted by 1000Hz ticks 50 times\nbut only runs 45ms) and if it exits, cputime will decrease (e.g.\n-5ms).\n\nTo fix this, we could do:\n\n  group\u0027s {u,s}time \u003d foreach(t){task_times(t)} + exited({u,s}time)\n\nBut task_times() contains hard divisions, so applying it for\nevery thread should be avoided.\n\nThis patch fixes the above problem in the following way:\n\n - Modify thread\u0027s exit (\u003d __exit_signal()) not to use task_times().\n   It means {u,s}time in signal struct accumulates raw values instead\n   of adjusted values.  As the result it makes thread_group_cputime()\n   to return pure sum of \"raw\" values.\n\n - Introduce a new function thread_group_times(*task, *utime, *stime)\n   that converts \"raw\" values of thread_group_cputime() to \"adjusted\"\n   values, in same calculation procedure as task_times().\n\n - Modify group\u0027s exit (\u003d wait_task_zombie()) to use this introduced\n   thread_group_times().  It make c{u,s}time in signal struct to\n   have adjusted values like before this patch.\n\n - Replace some thread_group_cputime() by thread_group_times().\n   This replacements are only applied where conveys the \"adjusted\"\n   cputime to users, and where already uses task_times() near by it.\n   (i.e. sys_times(), getrusage(), and /proc/\u003cPID\u003e/stat.)\n\nThis patch have a positive side effect:\n\n - Before this patch, if a group contains many short-life threads\n   (e.g. runs 0.9ms and not interrupted by ticks), the group\u0027s\n   cputime could be invisible since thread\u0027s cputime was accumulated\n   after adjusted: imagine adjustment function as adj(ticks, runtime),\n     {adj(0, 0.9) + adj(0, 0.9) + ....} \u003d {0 + 0 + ....} \u003d 0.\n   After this patch it will not happen because the adjustment is\n   applied after accumulated.\n\nv2:\n - remove if()s, put new variables into signal_struct.\n\nSigned-off-by: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Spencer Candland \u003cspencer@bluehost.com\u003e\nCc: Americo Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nLKML-Reference: \u003c4B162517.8040909@jp.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d5b7c78e975302a1bab28263266c39ecb71acad4",
      "tree": "47d9a18b2e81b3f93faf89b548b50beff29dd4fe",
      "parents": [
        "d180c5bccec02612256fd8076ff3c1fac3429553"
      ],
      "author": {
        "name": "Hidetoshi Seto",
        "email": "seto.hidetoshi@jp.fujitsu.com",
        "time": "Thu Nov 26 14:49:05 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 26 12:59:20 2009 +0100"
      },
      "message": "sched: Remove task_{u,s,g}time()\n\nNow all task_{u,s}time() pairs are replaced by task_times().\nAnd task_gtime() is too simple to be an inline function.\n\nCleanup them all.\n\nSigned-off-by: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Spencer Candland \u003cspencer@bluehost.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Americo Wang \u003cxiyou.wangcong@gmail.com\u003e\nLKML-Reference: \u003c4B0E16D1.70902@jp.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d180c5bccec02612256fd8076ff3c1fac3429553",
      "tree": "1ef4a45c81531645640380965916c68bbe7f6abb",
      "parents": [
        "16bc67edeb49b531940b2ba6c183780a1b5c472d"
      ],
      "author": {
        "name": "Hidetoshi Seto",
        "email": "seto.hidetoshi@jp.fujitsu.com",
        "time": "Thu Nov 26 14:48:30 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 26 12:59:19 2009 +0100"
      },
      "message": "sched: Introduce task_times() to replace task_{u,s}time() pair\n\nFunctions task_{u,s}time() are called in pair in almost all\ncases.  However task_stime() is implemented to call task_utime()\nfrom its inside, so such paired calls run task_utime() twice.\n\nIt means we do heavy divisions (div_u64 + do_div) twice to get\nutime and stime which can be obtained at same time by one set\nof divisions.\n\nThis patch introduces a function task_times(*tsk, *utime,\n*stime) to retrieve utime and stime at once in better, optimized\nway.\n\nSigned-off-by: Hidetoshi Seto \u003cseto.hidetoshi@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Spencer Candland \u003cspencer@bluehost.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Americo Wang \u003cxiyou.wangcong@gmail.com\u003e\nLKML-Reference: \u003c4B0E16AE.906@jp.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "96200591a34f8ecb98481c626125df43a2463b55",
      "tree": "314c376b01f254d04f9aaf449b1f9147ad177fa6",
      "parents": [
        "7031281e02bf951a2259849217193fb9d75a9762",
        "68efa37df779b3e04280598e8b5b3a1919b65fee"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 21 14:07:23 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 21 14:07:23 2009 +0100"
      },
      "message": "Merge branch \u0027tracing/hw-breakpoints\u0027 into perf/core\n\nConflicts:\n\tarch/x86/kernel/kprobes.c\n\tkernel/trace/Makefile\n\nMerge reason: hw-breakpoints perf integration is looking\n              good in testing and in reviews, plus conflicts\n              are mounting up - so merge \u0026 resolve.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "24f1e32c60c45c89a997c73395b69c8af6f0a84e",
      "tree": "4f30f16e18cb4abbcf96b3b331e6a3f01bfa26e6",
      "parents": [
        "2da3e160cb3d226d87b907fab26850d838ed8d7c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 09 19:22:48 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 08 15:34:42 2009 +0100"
      },
      "message": "hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events\n\nThis patch rebase the implementation of the breakpoints API on top of\nperf events instances.\n\nEach breakpoints are now perf events that handle the\nregister scheduling, thread/cpu attachment, etc..\n\nThe new layering is now made as follows:\n\n       ptrace       kgdb      ftrace   perf syscall\n          \\          |          /         /\n           \\         |         /         /\n                                        /\n            Core breakpoint API        /\n                                      /\n                     |               /\n                     |              /\n\n              Breakpoints perf events\n\n                     |\n                     |\n\n               Breakpoints PMU ---- Debug Register constraints handling\n                                    (Part of core breakpoint API)\n                     |\n                     |\n\n             Hardware debug registers\n\nReasons of this rewrite:\n\n- Use the centralized/optimized pmu registers scheduling,\n  implying an easier arch integration\n- More powerful register handling: perf attributes (pinned/flexible\n  events, exclusive/non-exclusive, tunable period, etc...)\n\nImpact:\n\n- New perf ABI: the hardware breakpoints counters\n- Ptrace breakpoints setting remains tricky and still needs some per\n  thread breakpoints references.\n\nTodo (in the order):\n\n- Support breakpoints perf counter events for perf tools (ie: implement\n  perf_bpcounter_event())\n- Support from perf tools\n\nChanges in v2:\n\n- Follow the perf \"event \" rename\n- The ptrace regression have been fixed (ptrace breakpoint perf events\n  weren\u0027t released when a task ended)\n- Drop the struct hw_breakpoint and store generic fields in\n  perf_event_attr.\n- Separate core and arch specific headers, drop\n  asm-generic/hw_breakpoint.h and create linux/hw_breakpoint.h\n- Use new generic len/type for breakpoint\n- Handle off case: when breakpoints api is not supported by an arch\n\nChanges in v3:\n\n- Fix broken CONFIG_KVM, we need to propagate the breakpoint api\n  changes to kvm when we exit the guest and restore the bp registers\n  to the host.\n\nChanges in v4:\n\n- Drop the hw_breakpoint_restore() stub as it is only used by KVM\n- EXPORT_SYMBOL_GPL hw_breakpoint_restore() as KVM can be built as a\n  module\n- Restore the breakpoints unconditionally on kvm guest exit:\n  TIF_DEBUG_THREAD doesn\u0027t anymore cover every cases of running\n  breakpoints and vcpu-\u003earch.switch_db_regs might not always be\n  set when the guest used debug registers.\n  (Waiting for a reliable optimization)\n\nChanges in v5:\n\n- Split-up the asm-generic/hw-breakpoint.h moving to\n  linux/hw_breakpoint.h into a separate patch\n- Optimize the breakpoints restoring while switching from kvm guest\n  to host. We only want to restore the state if we have active\n  breakpoints to the host, otherwise we don\u0027t care about messed-up\n  address registers.\n- Add asm/hw_breakpoint.h to Kbuild\n- Fix bad breakpoint type in trace_selftest.c\n\nChanges in v6:\n\n- Fix wrong header inclusion in trace.h (triggered a build\n  error with CONFIG_FTRACE_SELFTEST\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "0d0df599f1f11f12d589318bacb59a50fb5c0310",
      "tree": "084ab3d1562502ad6a056aa3fd8dd748683c8c2f",
      "parents": [
        "370c28def65b3a5765192753a164403619b41d01"
      ],
      "author": {
        "name": "Christian Borntraeger",
        "email": "borntraeger@de.ibm.com",
        "time": "Mon Oct 26 16:49:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 29 07:39:25 2009 -0700"
      },
      "message": "connector: fix regression introduced by sid connector\n\nSince commit 02b51df1b07b4e9ca823c89284e704cadb323cd1 (proc connector: add\nevent for process becoming session leader) we have the following warning:\n\nBadness at kernel/softirq.c:143\n[...]\nKrnl PSW : 0404c00180000000 00000000001481d4 (local_bh_enable+0xb0/0xe0)\n[...]\nCall Trace:\n([\u003c000000013fe04100\u003e] 0x13fe04100)\n [\u003c000000000048a946\u003e] sk_filter+0x9a/0xd0\n [\u003c000000000049d938\u003e] netlink_broadcast+0x2c0/0x53c\n [\u003c00000000003ba9ae\u003e] cn_netlink_send+0x272/0x2b0\n [\u003c00000000003baef0\u003e] proc_sid_connector+0xc4/0xd4\n [\u003c0000000000142604\u003e] __set_special_pids+0x58/0x90\n [\u003c0000000000159938\u003e] sys_setsid+0xb4/0xd8\n [\u003c00000000001187fe\u003e] sysc_noemu+0x10/0x16\n [\u003c00000041616cb266\u003e] 0x41616cb266\n\nThe warning is\n---\u003e    WARN_ON_ONCE(in_irq() || irqs_disabled());\n\nThe network code must not be called with disabled interrupts but\nsys_setsid holds the tasklist_lock with spinlock_irq while calling the\nconnector.\n\nAfter a discussion we agreed that we can move proc_sid_connector from\n__set_special_pids to sys_setsid.\n\nWe also agreed that it is sufficient to change the check from\ntask_session(curr) !\u003d pid into err \u003e 0, since if we don\u0027t change the\nsession, this means we were already the leader and return -EPERM.\n\nOne last thing:\nThere is also daemonize(), and some people might want to get a\nnotification in that case. Since daemonize() is only needed if a user\nspace does kernel_thread this does not look important (and there seems\nto be no consensus if this connector should be called in daemonize). If\nwe really want this, we can add proc_sid_connector to daemonize() in an\nadditional patch (Scott?)\n\nSigned-off-by: Christian Borntraeger \u003cborntraeger@de.ibm.com\u003e\nCc: Scott James Remnant \u003cscott@ubuntu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f579bbcd9bb8b688df03191b92c56ab8af4d6322",
      "tree": "d450f986022aab73f86f794a03c7f21ad0ece8ec",
      "parents": [
        "e80fb7e52fd305b916a671755ca31ecf8f92e94e",
        "da085681014fb43d67d9bf6d14bc068e9254bd49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 08 12:16:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 08 12:16:35 2009 -0700"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  futex: fix requeue_pi key imbalance\n  futex: Fix typo in FUTEX_WAIT/WAKE_BITSET_PRIVATE definitions\n  rcu: Place root rcu_node structure in separate lockdep class\n  rcu: Make hot-unplugged CPU relinquish its own RCU callbacks\n  rcu: Move rcu_barrier() to rcutree\n  futex: Move exit_pi_state() call to release_mm()\n  futex: Nullify robust lists after cleanup\n  futex: Fix locking imbalance\n  panic: Fix panic message visibility by calling bust_spinlocks(0) before dying\n  rcu: Replace the rcu_barrier enum with pointer to call_rcu*() function\n  rcu: Clean up code based on review feedback from Josh Triplett, part 4\n  rcu: Clean up code based on review feedback from Josh Triplett, part 3\n  rcu: Fix rcu_lock_map build failure on CONFIG_PROVE_LOCKING\u003dy\n  rcu: Clean up code to address Ingo\u0027s checkpatch feedback\n  rcu: Clean up code based on review feedback from Josh Triplett, part 2\n  rcu: Clean up code based on review feedback from Josh Triplett\n"
    },
    {
      "commit": "322a2c100a8998158445599ea437fb556aa95b11",
      "tree": "8039af7452e0fac73f3083cb7e9c1e00d3007811",
      "parents": [
        "fc6b177dee33365ccb29fe6d2092223cf8d679f9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 05 18:18:03 2009 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Oct 06 17:00:01 2009 +0200"
      },
      "message": "futex: Move exit_pi_state() call to release_mm()\n\nexit_pi_state() is called from do_exit() but not from do_execve().\nMove it to release_mm() so it gets called from do_execve() as well.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003cnew-submission\u003e\nCc: stable@kernel.org\nCc: Anirban Sinha \u003cani@anirban.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n\n"
    },
    {
      "commit": "801460d0cf5c5288153b722565773059b0f44348",
      "tree": "ff2542903572a546ac59e92f295e9a18e718afa0",
      "parents": [
        "2fa4341074cd02fb39aa23410740764948755635"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Wed Sep 23 15:57:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:05 2009 -0700"
      },
      "message": "task_struct cleanup: move binfmt field to mm_struct\n\nBecause the binfmt is not different between threads in the same process,\nit can be moved from task_struct to mm_struct.  And binfmt moudle is\nhandled per mm_struct instead of task_struct.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Roland McGrath \u003croland@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": "b6fe2d117e98805ee76352e6468f87d494a97292",
      "tree": "3de99eb7652647000b53bca1f6ea740c926ccfca",
      "parents": [
        "dfe16dfa4ac178d9a10b489a73d535c6976e48d2"
      ],
      "author": {
        "name": "Vitaly Mayatskikh",
        "email": "v.mayatskih@gmail.com",
        "time": "Wed Sep 23 15:56:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "wait_noreap_copyout(): check for -\u003ewo_info !\u003d NULL\n\nCurrent behaviour of sys_waitid() looks odd.  If user passes infop \u003d\u003d\nNULL, sys_waitid() returns success.  When user additionally specifies flag\nWNOWAIT, sys_waitid() returns -EFAULT on the same conditions.  When user\ncombines WNOWAIT with WCONTINUED, sys_waitid() again returns success.\n\nThis patch adds check for -\u003ewo_info in wait_noreap_copyout().\n\nUser-visible change: starting from this commit, sys_waitid() always checks\ninfop !\u003d NULL and does not fail if it is NULL.\n\nSigned-off-by: Vitaly Mayatskikh \u003cv.mayatskih@gmail.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@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": "dfe16dfa4ac178d9a10b489a73d535c6976e48d2",
      "tree": "0ebd7bddf7e99915baed4955faeed2af5bba4203",
      "parents": [
        "b6e763f07fba6243d2a553ed9a4f3e10a789932a"
      ],
      "author": {
        "name": "Vitaly Mayatskikh",
        "email": "v.mayatskih@gmail.com",
        "time": "Wed Sep 23 15:56:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait: fix sys_waitid()-specific behaviour\n\ndo_wait() checks -\u003ewo_info to figure out who is the caller.  If it\u0027s not\nNULL the caller should be sys_waitid(), in that case do_wait() fixes up\nthe retval or zeros -\u003ewo_info, depending on retval from underlying\nfunction.\n\nThis is bug: user can pass -\u003ewo_info \u003d\u003d NULL and sys_waitid() will return\nincorrect value.\n\nman 2 waitid says:\n\n\twaitid(): returns 0 on success\n\nTest-case:\n\n\tint main(void)\n\t{\n\t\tif (fork())\n\t\t\tassert(waitid(P_ALL, 0, NULL, WEXITED) \u003d\u003d 0);\n\n\t\treturn 0;\n\t}\n\nResult:\n\n\tAssertion `waitid(P_ALL, 0, ((void *)0), 4) \u003d\u003d 0\u0027 failed.\n\nMove that code to sys_waitid().\n\nUser-visible change: sys_waitid() will return 0 on success, either\ninfop is set or not.\n\nNote, there\u0027s another bug in wait_noreap_copyout() which affects\nreturn value of sys_waitid(). It will be fixed in next patch.\n\nSigned-off-by: Vitaly Mayatskikh \u003cv.mayatskih@gmail.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@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": "b6e763f07fba6243d2a553ed9a4f3e10a789932a",
      "tree": "10f2f4c8dc44400eb8e1ac1d4875b517f02f4f17",
      "parents": [
        "989264f4645c183331a1279d513f4b1ddc06e1f5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "wait_consider_task: kill \"parent\" argument\n\nKill the unused \"parent\" argument in wait_consider_task(), it was never used.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@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": "989264f4645c183331a1279d513f4b1ddc06e1f5",
      "tree": "44dc1d6ae0ba66229a6b9e85ac22a3edc87a4b8d",
      "parents": [
        "5c01ba49e6647d86bc7576105f82027200d1f303"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait-wakeup-optimization: simplify task_pid_type()\n\ntask_pid_type() is only used by eligible_pid() which has to check wo_type\n!\u003d PIDTYPE_MAX anyway.  Remove this check from task_pid_type() and factor\nout -\u003epids[type] access, this shrinks .text a bit and simplifies the code.\n\nThe matches the behaviour of other similar helpers, say get_task_pid().\nThe caller must ensure that pid_type is valid, not the callee.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5c01ba49e6647d86bc7576105f82027200d1f303",
      "tree": "700aa5dbda7c726e8b60803225587a1bc4fdbdb5",
      "parents": [
        "b4fe51823d797d6959b2eee7868023e61606daa9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait-wakeup-optimization: fix child_wait_callback()-\u003eeligible_child() usage\n\nchild_wait_callback()-\u003eeligible_child() is not right, we can miss the\nwakeup if the task was detached before __wake_up_parent() and the caller\nof do_wait() didn\u0027t use __WALL.\n\nMove -\u003ewo_pid checks from eligible_child() to the new helper,\neligible_pid(), and change child_wait_callback() to use it instead of\neligible_child().\n\nNote: actually I think it would be better to fix the __WCLONE check in\neligible_child(), it doesn\u0027t look exactly right.  But it is not clear what\nis the supposed behaviour, and any change is user-visible.\n\nReported-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@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": "b4fe51823d797d6959b2eee7868023e61606daa9",
      "tree": "e078feaa1cdfbbdc98b5f5f668fecc37c1907b2e",
      "parents": [
        "0b7570e77f7c3abd43107dabc47ea89daf9a1cba"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:00 2009 -0700"
      },
      "message": "do_wait() wakeup optimization: child_wait_callback: check __WNOTHREAD case\n\nSuggested by Roland.\n\ndo_wait(__WNOTHREAD) can only succeed if the caller is either ptracer, or\nit is -\u003ereal_parent and the child is not traced. IOW, caller \u003d\u003d p-\u003eparent\notherwise we should not wake up.\n\nChange child_wait_callback() to check this. Ratan reports the workload with\nCPU load \u003e99% caused by unnecessary wakeups, should be fixed by this patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@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": "0b7570e77f7c3abd43107dabc47ea89daf9a1cba",
      "tree": "8dd93b4a189b4e98384d4470a289ecfb7818cc26",
      "parents": [
        "a2322e1d272938d192d8c24cdacf57c0c7a2683f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "do_wait() wakeup optimization: change __wake_up_parent() to use filtered wakeup\n\nRatan Nalumasu reported that in a process with many threads doing\nunnecessary wakeups.  Every waiting thread in the process wakes up to loop\nthrough the children and see that the only ones it cares about are still\nnot ready.\n\nNow that we have struct wait_opts we can change do_wait/__wake_up_parent\nto use filtered wakeups.\n\nWe can make child_wait_callback() more clever later, right now it only\nchecks eligible_child().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nTested-by: Valdis Kletnieks \u003cvaldis.kletnieks@vt.edu\u003e\nAcked-by: David Howells \u003cdhowells@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": "a2322e1d272938d192d8c24cdacf57c0c7a2683f",
      "tree": "f53bbed32d44a190df42cddc9f3635371272e329",
      "parents": [
        "a7f0765edfd53aed09cb7b0e15863688b39447de"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "do_wait() wakeup optimization: shift security_task_wait() from eligible_child() to wait_consider_task()\n\nPreparation, no functional changes.\n\neligible_child() has a single caller, wait_consider_task(). We can move\nsecurity_task_wait() out from eligible_child(), this allows us to use it\nfor filtered wake_up().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ratan Nalumasu \u003crnalumasu@gmail.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@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": "a7f0765edfd53aed09cb7b0e15863688b39447de",
      "tree": "c89adfe418f9988ad4044e0f22827458bdf6b155",
      "parents": [
        "1dd3a27326d307952f8ad2499478c84dc7311517"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Sep 23 15:56:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "ptrace: __ptrace_detach: do __wake_up_parent() if we reap the tracee\n\nThe bug is old, it wasn\u0027t cause by recent changes.\n\nTest case:\n\n\tstatic void *tfunc(void *arg)\n\t{\n\t\tint pid \u003d (long)arg;\n\n\t\tassert(ptrace(PTRACE_ATTACH, pid, NULL, NULL) \u003d\u003d 0);\n\t\tkill(pid, SIGKILL);\n\n\t\tsleep(1);\n\t\treturn NULL;\n\t}\n\n\tint main(void)\n\t{\n\t\tpthread_t th;\n\t\tlong pid \u003d fork();\n\n\t\tif (!pid)\n\t\t\tpause();\n\n\t\tsignal(SIGCHLD, SIG_IGN);\n\t\tassert(pthread_create(\u0026th, NULL, tfunc, (void*)pid) \u003d\u003d 0);\n\n\t\tint r \u003d waitpid(-1, NULL, __WNOTHREAD);\n\t\tprintf(\"waitpid: %d %m\\n\", r);\n\n\t\treturn 0;\n\t}\n\nBefore the patch this program hangs, after this patch waitpid() correctly\nfails with errno \u003d\u003d -ECHILD.\n\nThe problem is, __ptrace_detach() reaps the EXIT_ZOMBIE tracee if its\n-\u003ereal_parent is our sub-thread and we ignore SIGCHLD.  But in this case\nwe should wake up other threads which can sleep in do_wait().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@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": "1f10206cf8e945220f7220a809d8bfc15c21f9a5",
      "tree": "4f2c48ccf9cc52dad9610df54e301e631a351288",
      "parents": [
        "b28cfd2c0616e1b42acc6ee3c77ef6cc3873c510"
      ],
      "author": {
        "name": "Jiri Pirko",
        "email": "jpirko@redhat.com",
        "time": "Tue Sep 22 16:44:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:30 2009 -0700"
      },
      "message": "getrusage: fill ru_maxrss value\n\nMake -\u003eru_maxrss value in struct rusage filled accordingly to rss hiwater\nmark.  This struct is filled as a parameter to getrusage syscall.\n-\u003eru_maxrss value is set to KBs which is the way it is done in BSD\nsystems.  /usr/bin/time (gnu time) application converts -\u003eru_maxrss to KBs\nwhich seems to be incorrect behavior.  Maintainer of this util was\nnotified by me with the patch which corrects it and cc\u0027ed.\n\nTo make this happen we extend struct signal_struct by two fields.  The\nfirst one is -\u003emaxrss which we use to store rss hiwater of the task.  The\nsecond one is -\u003ecmaxrss which we use to store highest rss hiwater of all\ntask childs.  These values are used in k_getrusage() to actually fill\n-\u003eru_maxrss.  k_getrusage() uses current rss hiwater value directly if mm\nstruct exists.\n\nNote:\nexec() clear mm-\u003ehiwater_rss, but doesn\u0027t clear sig-\u003emaxrss.\nit is intetionally behavior. *BSD getrusage have exec() inheriting.\n\ntest programs\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\ngetrusage.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n #include \u003cstdio.h\u003e\n #include \u003cstdlib.h\u003e\n #include \u003cstring.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/time.h\u003e\n #include \u003csys/resource.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/wait.h\u003e\n #include \u003cunistd.h\u003e\n #include \u003csignal.h\u003e\n #include \u003csys/mman.h\u003e\n\n #include \"common.h\"\n\n #define err(str) perror(str), exit(1)\n\nint main(int argc, char** argv)\n{\n\tint status;\n\n\tprintf(\"allocate 100MB\\n\");\n\tconsume(100);\n\n\tprintf(\"testcase1: fork inherit? \\n\");\n\tprintf(\"  expect: initial.self ~\u003d child.self\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t} else {\n\t\tshow_rusage(\"fork child\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase2: fork inherit? (cont.) \\n\");\n\tprintf(\"  expect: initial.children ~\u003d 100MB, but child.children \u003d 0\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t} else {\n\t\tshow_rusage(\"child\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase3: fork + malloc \\n\");\n\tprintf(\"  expect: child.self ~\u003d initial.self + 50MB\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t} else {\n\t\tprintf(\"allocate +50MB\\n\");\n\t\tconsume(50);\n\t\tshow_rusage(\"fork child\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase4: grandchild maxrss\\n\");\n\tprintf(\"  expect: post_wait.children ~\u003d 300MB\\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\twait(\u0026status);\n\t\tshow_rusage(\"post_wait\");\n\t} else {\n\t\tsystem(\"./child -n 0 -g 300\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase5: zombie\\n\");\n\tprintf(\"  expect: pre_wait ~\u003d initial, IOW the zombie process is not accounted.\\n\");\n\tprintf(\"          post_wait ~\u003d 400MB, IOW wait() collect child\u0027s max_rss. \\n\");\n\tshow_rusage(\"initial\");\n\tif (__fork()) {\n\t\tsleep(1); /* children become zombie */\n\t\tshow_rusage(\"pre_wait\");\n\t\twait(\u0026status);\n\t\tshow_rusage(\"post_wait\");\n\t} else {\n\t\tsystem(\"./child -n 400\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\n\tprintf(\"testcase6: SIG_IGN\\n\");\n\tprintf(\"  expect: initial ~\u003d after_zombie (child\u0027s 500MB alloc should be ignored).\\n\");\n\tshow_rusage(\"initial\");\n\tsignal(SIGCHLD, SIG_IGN);\n\tif (__fork()) {\n\t\tsleep(1); /* children become zombie */\n\t\tshow_rusage(\"after_zombie\");\n\t} else {\n\t\tsystem(\"./child -n 500\");\n\t\t_exit(0);\n\t}\n\tprintf(\"\\n\");\n\tsignal(SIGCHLD, SIG_DFL);\n\n\tprintf(\"testcase7: exec (without fork) \\n\");\n\tprintf(\"  expect: initial ~\u003d exec \\n\");\n\tshow_rusage(\"initial\");\n\texecl(\"./child\", \"child\", \"-v\", NULL);\n\n\treturn 0;\n}\n\nchild.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n #include \u003csys/types.h\u003e\n #include \u003cunistd.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/wait.h\u003e\n #include \u003cstdio.h\u003e\n #include \u003cstdlib.h\u003e\n #include \u003cstring.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/time.h\u003e\n #include \u003csys/resource.h\u003e\n\n #include \"common.h\"\n\nint main(int argc, char** argv)\n{\n\tint status;\n\tint c;\n\tlong consume_size \u003d 0;\n\tlong grandchild_consume_size \u003d 0;\n\tint show \u003d 0;\n\n\twhile ((c \u003d getopt(argc, argv, \"n:g:v\")) !\u003d -1) {\n\t\tswitch (c) {\n\t\tcase \u0027n\u0027:\n\t\t\tconsume_size \u003d atol(optarg);\n\t\t\tbreak;\n\t\tcase \u0027v\u0027:\n\t\t\tshow \u003d 1;\n\t\t\tbreak;\n\t\tcase \u0027g\u0027:\n\n\t\t\tgrandchild_consume_size \u003d atol(optarg);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (show)\n\t\tshow_rusage(\"exec\");\n\n\tif (consume_size) {\n\t\tprintf(\"child alloc %ldMB\\n\", consume_size);\n\t\tconsume(consume_size);\n\t}\n\n\tif (grandchild_consume_size) {\n\t\tif (fork()) {\n\t\t\twait(\u0026status);\n\t\t} else {\n\t\t\tprintf(\"grandchild alloc %ldMB\\n\", grandchild_consume_size);\n\t\t\tconsume(grandchild_consume_size);\n\n\t\t\texit(0);\n\t\t}\n\t}\n\n\treturn 0;\n}\n\ncommon.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n #include \u003cstdio.h\u003e\n #include \u003cstdlib.h\u003e\n #include \u003cstring.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/time.h\u003e\n #include \u003csys/resource.h\u003e\n #include \u003csys/types.h\u003e\n #include \u003csys/wait.h\u003e\n #include \u003cunistd.h\u003e\n #include \u003csignal.h\u003e\n #include \u003csys/mman.h\u003e\n\n #include \"common.h\"\n #define err(str) perror(str), exit(1)\n\nvoid show_rusage(char *prefix)\n{\n    \tint err, err2;\n    \tstruct rusage rusage_self;\n    \tstruct rusage rusage_children;\n\n    \tprintf(\"%s: \", prefix);\n    \terr \u003d getrusage(RUSAGE_SELF, \u0026rusage_self);\n    \tif (!err)\n    \t\tprintf(\"self %ld \", rusage_self.ru_maxrss);\n    \terr2 \u003d getrusage(RUSAGE_CHILDREN, \u0026rusage_children);\n    \tif (!err2)\n    \t\tprintf(\"children %ld \", rusage_children.ru_maxrss);\n\n    \tprintf(\"\\n\");\n}\n\n/* Some buggy OS need this worthless CPU waste. */\nvoid make_pagefault(void)\n{\n\tvoid *addr;\n\tint size \u003d getpagesize();\n\tint i;\n\n\tfor (i\u003d0; i\u003c1000; i++) {\n\t\taddr \u003d mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);\n\t\tif (addr \u003d\u003d MAP_FAILED)\n\t\t\terr(\"make_pagefault\");\n\t\tmemset(addr, 0, size);\n\t\tmunmap(addr, size);\n\t}\n}\n\nvoid consume(int mega)\n{\n    \tsize_t sz \u003d mega * 1024 * 1024;\n    \tvoid *ptr;\n\n    \tptr \u003d malloc(sz);\n    \tmemset(ptr, 0, sz);\n\tmake_pagefault();\n}\n\npid_t __fork(void)\n{\n\tpid_t pid;\n\n\tpid \u003d fork();\n\tmake_pagefault();\n\n\treturn pid;\n}\n\ncommon.h\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nvoid show_rusage(char *prefix);\nvoid make_pagefault(void);\nvoid consume(int mega);\npid_t __fork(void);\n\nFreeBSD result (expected result)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nallocate 100MB\ntestcase1: fork inherit?\n  expect: initial.self ~\u003d child.self\ninitial: self 103492 children 0\nfork child: self 103540 children 0\n\ntestcase2: fork inherit? (cont.)\n  expect: initial.children ~\u003d 100MB, but child.children \u003d 0\ninitial: self 103540 children 103540\nchild: self 103564 children 0\n\ntestcase3: fork + malloc\n  expect: child.self ~\u003d initial.self + 50MB\ninitial: self 103564 children 103564\nallocate +50MB\nfork child: self 154860 children 0\n\ntestcase4: grandchild maxrss\n  expect: post_wait.children ~\u003d 300MB\ninitial: self 103564 children 154860\ngrandchild alloc 300MB\npost_wait: self 103564 children 308720\n\ntestcase5: zombie\n  expect: pre_wait ~\u003d initial, IOW the zombie process is not accounted.\n          post_wait ~\u003d 400MB, IOW wait() collect child\u0027s max_rss.\ninitial: self 103564 children 308720\nchild alloc 400MB\npre_wait: self 103564 children 308720\npost_wait: self 103564 children 411312\n\ntestcase6: SIG_IGN\n  expect: initial ~\u003d after_zombie (child\u0027s 500MB alloc should be ignored).\ninitial: self 103564 children 411312\nchild alloc 500MB\nafter_zombie: self 103624 children 411312\n\ntestcase7: exec (without fork)\n  expect: initial ~\u003d exec\ninitial: self 103624 children 411312\nexec: self 103624 children 411312\n\nLinux result (actual test result)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nallocate 100MB\ntestcase1: fork inherit?\n  expect: initial.self ~\u003d child.self\ninitial: self 102848 children 0\nfork child: self 102572 children 0\n\ntestcase2: fork inherit? (cont.)\n  expect: initial.children ~\u003d 100MB, but child.children \u003d 0\ninitial: self 102876 children 102644\nchild: self 102572 children 0\n\ntestcase3: fork + malloc\n  expect: child.self ~\u003d initial.self + 50MB\ninitial: self 102876 children 102644\nallocate +50MB\nfork child: self 153804 children 0\n\ntestcase4: grandchild maxrss\n  expect: post_wait.children ~\u003d 300MB\ninitial: self 102876 children 153864\ngrandchild alloc 300MB\npost_wait: self 102876 children 307536\n\ntestcase5: zombie\n  expect: pre_wait ~\u003d initial, IOW the zombie process is not accounted.\n          post_wait ~\u003d 400MB, IOW wait() collect child\u0027s max_rss.\ninitial: self 102876 children 307536\nchild alloc 400MB\npre_wait: self 102876 children 307536\npost_wait: self 102876 children 410076\n\ntestcase6: SIG_IGN\n  expect: initial ~\u003d after_zombie (child\u0027s 500MB alloc should be ignored).\ninitial: self 102876 children 410076\nchild alloc 500MB\nafter_zombie: self 102880 children 410076\n\ntestcase7: exec (without fork)\n  expect: initial ~\u003d exec\ninitial: self 102880 children 410076\nexec: self 102880 children 410076\n\nSigned-off-by: Jiri Pirko \u003cjpirko@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02b51df1b07b4e9ca823c89284e704cadb323cd1",
      "tree": "c68de4809f261d742f597c686826cdc9d047fb4a",
      "parents": [
        "88e9d34c727883d7d6f02cf1475b3ec98b8480c7"
      ],
      "author": {
        "name": "Scott James Remnant",
        "email": "scott@ubuntu.com",
        "time": "Tue Sep 22 16:43:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:29 2009 -0700"
      },
      "message": "proc connector: add event for process becoming session leader\n\nThe act of a process becoming a session leader is a useful signal to a\nsupervising init daemon such as Upstart.\n\nWhile a daemon will normally do this as part of the process of becoming a\ndaemon, it is rare for its children to do so.  When the children do, it is\nnearly always a sign that the child should be considered detached from the\nparent and not supervised along with it.\n\nThe poster-child example is OpenSSH; the per-login children call setsid()\nso that they may control the pty connected to them.  If the primary daemon\ndies or is restarted, we do not want to consider the per-login children\nand want to respawn the primary daemon without killing the children.\n\nThis patch adds a new PROC_SID_EVENT and associated structure to the\nproc_event event_data union, it arranges for this to be emitted when the\nspecial PIDTYPE_SID pid is set.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Scott James Remnant \u003cscott@ubuntu.com\u003e\nAcked-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdd6c482c9ff9c55475ee7392ec8f672eddb7be6",
      "tree": "81f98a3ab46c589792057fe2392c1e10f8ad7893",
      "parents": [
        "dfc65094d0313cc48969fa60bcf33d693aeb05a7"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 21 12:02:48 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Sep 21 14:28:04 2009 +0200"
      },
      "message": "perf: Do the big rename: Performance Counters -\u003e Performance Events\n\nBye-bye Performance Counters, welcome Performance Events!\n\nIn the past few months the perfcounters subsystem has grown out its\ninitial role of counting hardware events, and has become (and is\nbecoming) a much broader generic event enumeration, reporting, logging,\nmonitoring, analysis facility.\n\nNaming its core object \u0027perf_counter\u0027 and naming the subsystem\n\u0027perfcounters\u0027 has become more and more of a misnomer. With pending\ncode like hw-breakpoints support the \u0027counter\u0027 name is less and\nless appropriate.\n\nAll in one, we\u0027ve decided to rename the subsystem to \u0027performance\nevents\u0027 and to propagate this rename through all fields, variables\nand API names. (in an ABI compatible fashion)\n\nThe word \u0027event\u0027 is also a bit shorter than \u0027counter\u0027 - which makes\nit slightly more convenient to write/handle as well.\n\nThanks goes to Stephane Eranian who first observed this misnomer and\nsuggested a rename.\n\nUser-space tooling and ABI compatibility is not affected - this patch\nshould be function-invariant. (Also, defconfigs were not touched to\nkeep the size down.)\n\nThis patch has been generated via the following script:\n\n  FILES\u003d$(find * -type f | grep -vE \u0027oprofile|[^K]config\u0027)\n\n  sed -i \\\n    -e \u0027s/PERF_EVENT_/PERF_RECORD_/g\u0027 \\\n    -e \u0027s/PERF_COUNTER/PERF_EVENT/g\u0027 \\\n    -e \u0027s/perf_counter/perf_event/g\u0027 \\\n    -e \u0027s/nb_counters/nb_events/g\u0027 \\\n    -e \u0027s/swcounter/swevent/g\u0027 \\\n    -e \u0027s/tpcounter_event/tp_event/g\u0027 \\\n    $FILES\n\n  for N in $(find . -name perf_counter.[ch]); do\n    M\u003d$(echo $N | sed \u0027s/perf_counter/perf_event/g\u0027)\n    mv $N $M\n  done\n\n  FILES\u003d$(find . -name perf_event.*)\n\n  sed -i \\\n    -e \u0027s/COUNTER_MASK/REG_MASK/g\u0027 \\\n    -e \u0027s/COUNTER/EVENT/g\u0027 \\\n    -e \u0027s/\\\u003cevent\\\u003e/event_id/g\u0027 \\\n    -e \u0027s/counter/event/g\u0027 \\\n    -e \u0027s/Counter/Event/g\u0027 \\\n    $FILES\n\n... to keep it as correct as possible. This script can also be\nused by anyone who has pending perfcounters patches - it converts\na Linux kernel tree over to the new naming. We tried to time this\nchange to the point in time where the amount of pending patches\nis the smallest: the end of the merge window.\n\nNamespace clashes were fixed up in a preparatory patch - and some\nstylistic fallout will be fixed up in a subsequent patch.\n\n( NOTE: \u0027counters\u0027 are still the proper terminology when we deal\n  with hardware registers - and these sed scripts are a bit\n  over-eager in renaming them. I\u0027ve undone some of that, but\n  in case there\u0027s something left where \u0027counter\u0027 would be\n  better than \u0027event\u0027 we can undo that on an individual basis\n  instead of touching an otherwise nicely automated patch. )\n\nSuggested-by: Stephane Eranian \u003ceranian@google.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nReviewed-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eee2775d9924b22643bd89b2e568cc5eed7e8a04",
      "tree": "095ad7851895c5d39596f3ff7ee1e078235a2501",
      "parents": [
        "53e16fbd30005905168d9b75555fdc7e0a2eac58",
        "7db905e636f08ea5bc9825c1f73d77802e8ccad5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:20:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:20:18 2009 -0700"
      },
      "message": "Merge branch \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (28 commits)\n  rcu: Move end of special early-boot RCU operation earlier\n  rcu: Changes from reviews: avoid casts, fix/add warnings, improve comments\n  rcu: Create rcutree plugins to handle hotplug CPU for multi-level trees\n  rcu: Remove lockdep annotations from RCU\u0027s _notrace() API members\n  rcu: Add #ifdef to suppress __rcu_offline_cpu() warning in !HOTPLUG_CPU builds\n  rcu: Add CPU-offline processing for single-node configurations\n  rcu: Add \"notrace\" to RCU function headers used by ftrace\n  rcu: Remove CONFIG_PREEMPT_RCU\n  rcu: Merge preemptable-RCU functionality into hierarchical RCU\n  rcu: Simplify rcu_pending()/rcu_check_callbacks() API\n  rcu: Use debugfs_remove_recursive() simplify code.\n  rcu: Merge per-RCU-flavor initialization into pre-existing macro\n  rcu: Fix online/offline indication for rcudata.csv trace file\n  rcu: Consolidate sparse and lockdep declarations in include/linux/rcupdate.h\n  rcu: Renamings to increase RCU clarity\n  rcu: Move private definitions from include/linux/rcutree.h to kernel/rcutree.h\n  rcu: Expunge lingering references to CONFIG_CLASSIC_RCU, optimize on !SMP\n  rcu: Delay rcu_barrier() wait until beginning of next CPU-hotunplug operation.\n  rcu: Fix typo in rcu_irq_exit() comment header\n  rcu: Make rcupreempt_trace.c look at offline CPUs\n  ...\n"
    },
    {
      "commit": "e0e817392b9acf2c98d3be80c233dddb1b52003d",
      "tree": "ee680c020039313c9f9c40ab3542bb30a7363381",
      "parents": [
        "ed6d76e4c32de0c2ad5f1d572b948ef49e465176"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Sep 02 09:13:40 2009 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Sep 02 21:29:01 2009 +1000"
      },
      "message": "CRED: Add some configurable debugging [try #6]\n\nAdd a config option (CONFIG_DEBUG_CREDENTIALS) to turn on some debug checking\nfor credential management.  The additional code keeps track of the number of\npointers from task_structs to any given cred struct, and checks to see that\nthis number never exceeds the usage count of the cred struct (which includes\nall references, not just those from task_structs).\n\nFurthermore, if SELinux is enabled, the code also checks that the security\npointer in the cred struct is never seen to be invalid.\n\nThis attempts to catch the bug whereby inode_has_perm() faults in an nfsd\nkernel thread on seeing cred-\u003esecurity be a NULL pointer (it appears that the\ncredential struct has been previously released):\n\n\thttp://www.kerneloops.org/oops.php?number\u003d252883\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "f41d911f8c49a5d65c86504c19e8204bb605c4fd",
      "tree": "59bcd3048652ef290b3e19d2904409afd5c90eb3",
      "parents": [
        "a157229cabd6dd8cfa82525fc9bf730c94cc9ac2"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 22 13:56:52 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 23 10:32:40 2009 +0200"
      },
      "message": "rcu: Merge preemptable-RCU functionality into hierarchical RCU\n\nCreate a kernel/rcutree_plugin.h file that contains definitions\nfor preemptable RCU (or, under the #else branch of the #ifdef,\nempty definitions for the classic non-preemptable semantics).\nThese definitions fit into plugins defined in kernel/rcutree.c\nfor this purpose.\n\nThis variant of preemptable RCU uses a new algorithm whose\nread-side expense is roughly that of classic hierarchical RCU\nunder CONFIG_PREEMPT. This new algorithm\u0027s update-side expense\nis similar to that of classic hierarchical RCU, and, in absence\nof read-side preemption or blocking, is exactly that of classic\nhierarchical RCU.  Perhaps more important, this new algorithm\nhas a much simpler implementation, saving well over 1,000 lines\nof code compared to mainline\u0027s implementation of preemptable\nRCU, which will hopefully be retired in favor of this new\nalgorithm.\n\nThe simplifications are obtained by maintaining per-task\nnesting state for running tasks, and using a simple\nlock-protected algorithm to handle accounting when tasks block\nwithin RCU read-side critical sections, making use of lessons\nlearned while creating numerous user-level RCU implementations\nover the past 18 months.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: akpm@linux-foundation.org\nCc: mathieu.desnoyers@polymtl.ca\nCc: josht@linux.vnet.ibm.com\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c12509746134003-git-send-email-\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b43f3cbd21ffbd719fd4fa6642bfe6af255ded34",
      "tree": "f09372f7aa3057a4cca32d5c7fc19032bd7cda5a",
      "parents": [
        "622f8061a68d3f7a576c20a47b7f3bae7c8cfbef"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jul 08 01:54:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 08 09:31:56 2009 -0700"
      },
      "message": "headers: mnt_namespace.h redux\n\nFix various silly problems wrt mnt_namespace.h:\n\n - exit_mnt_ns() isn\u0027t used, remove it\n - done that, sched.h and nsproxy.h inclusions aren\u0027t needed\n - mount.h inclusion was need for vfsmount_lock, but no longer\n - remove mnt_namespace.h inclusion from files which don\u0027t use anything\n   from mnt_namespace.h\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "befca96779b0259ac8fad0183e748a62935c39cb",
      "tree": "ab4962e27ce10abc932de4c7a4c1c29fac2988cf",
      "parents": [
        "e6229bec25be4ba00f31dd26e25721cc96c22262"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Jun 18 16:49:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 19 16:46:06 2009 -0700"
      },
      "message": "ptrace: wait_task_zombie: do not account traced sub-threads\n\nThe bug is ancient.\n\nIf we trace the sub-thread of our natural child and this sub-thread exits,\nwe update parent-\u003esignal-\u003ecxxx fields.  But we should not do this until\nthe whole thread-group exits, otherwise we account this thread (and all\nother live threads) twice.\n\nAdd the task_detached() check.  No need to check thread_group_empty(),\nwait_consider_task()-\u003edelay_group_leader() already did this.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@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": "e1eb1ebcca871673c76caf63335c4237680040f1",
      "tree": "d5a1b0e667222a43ec2780787ac21011072d45f1",
      "parents": [
        "f95d39d10fe7d47336e65172f52bf64e0096f983"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Wed Jun 17 16:27:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "mm: exit.c reorder wait_opts to remove padding on 64 bit builds\n\nReorder struct wait_opts to remove 8 bytes of alignment padding on 64 bit\nbuilds.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Roland McGrath \u003croland@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": "f95d39d10fe7d47336e65172f52bf64e0096f983",
      "tree": "14b469b68455968dfd707695083ece72287dfaab",
      "parents": [
        "a3f6dfb7295facb0505b5beca5a7ce48b0612379"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "do_wait: fix the theoretical race with stop/trace/cont\n\ndo_wait:\n\n\tcurrent-\u003estate \u003d TASK_INTERRUPTIBLE;\n\n\tread_lock(\u0026tasklist_lock);\n\t... search for the task to reap ...\n\nIn theory, the -\u003estate changing can leak into the critical section.  Since\nthe child can change its status under read_lock(tasklist) in parallel\n(finish_stop/ptrace_stop), we can miss the wakeup if __wake_up_parent()\nsees us in TASK_RUNNING state.  Add the barrier.\n\nAlso, use __set_current_state() to set TASK_RUNNING.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Roland McGrath \u003croland@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": "a3f6dfb7295facb0505b5beca5a7ce48b0612379",
      "tree": "882e1103eaf759ab0e3bc53c08ff69b1f096b1bf",
      "parents": [
        "64a16caf5e3417ee32f670debcb5857b02a9e08e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "do_wait: kill the old BUG_ON, use while_each_thread()\n\ndo_wait() does BUG_ON(tsk-\u003esignal !\u003d current-\u003esignal), this looks like a\nraher obsolete check.  At least, I don\u0027t think do_wait() is the best place\nto verify that all threads have the same -\u003esignal.  Remove it.\n\nAlso, change the code to use while_each_thread().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Roland McGrath \u003croland@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": "64a16caf5e3417ee32f670debcb5857b02a9e08e",
      "tree": "1e32f8ac1ad0d7cefeeb6bfdac995ec1ad6d7396",
      "parents": [
        "9e8ae01d1c86dcaa6443c897662545d088036e4c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:53 2009 -0700"
      },
      "message": "do_wait: simplify retval/tsk_result/notask_error mess\n\nNow that we don\u0027t pass \u0026retval down to other helpers we can simplify\nthe code more.\n\n- kill tsk_result, just use retval\n\n- add the \"notask\" label right after the main loop, and\n  s/got end/goto notask/ after the fastpath pid check.\n\n  This way we don\u0027t need to initialize retval before this\n  check and the code becomes a bit more clean, if this pid\n  has no attached tasks we should just skip the list search.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Roland McGrath \u003croland@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": "9e8ae01d1c86dcaa6443c897662545d088036e4c",
      "tree": "d9465ffe404d318e0038d3133f76550faa3ce3c3",
      "parents": [
        "47918025efdabd34e96b13b26eb2cf2fd6fd1f7c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "introduce \"struct wait_opts\" to simplify do_wait() patches\n\nIntroduce \"struct wait_opts\" which holds the parameters for misc helpers\nin do_wait() pathes.\n\nThis adds 13 lines to kernel/exit.c, but saves 256 bytes from .o and imho\nmakes the code much more readable.\n\nThis patch temporary uglifies rusage/siginfo code a little bit, will be\naddressed by further cleanups.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Roland McGrath \u003croland@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": "47918025efdabd34e96b13b26eb2cf2fd6fd1f7c",
      "tree": "bae081deabe6e955e94c5510ae408b50b930c225",
      "parents": [
        "3b34fc5880a2dcc7e5ed9837ef8d6bae051ab266"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "shift \"ptrace implies WUNTRACED\" from ptrace_do_wait() to wait_task_stopped()\n\nNo functional changes, preparation for the next patch.\n\nptrace_do_wait() adds WUNTRACED to options for wait_task_stopped() which\nshould always accept the stopped tracee, even if do_wait() was called\nwithout WUNTRACED.\n\nChange wait_task_stopped() to check \"ptrace || WUNTRACED\" instead.  This\nmakes the code more explicit, and \"int options\" argument becomes const in\ndo_wait() pathes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "77d1ef79568b337f599b75795acc8f78a87ba9ba",
      "tree": "4fc0f622c6e064e76e6fd28981c3375ee3d153a9",
      "parents": [
        "e49612544c695117644af48bb4625264a3d2918f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:52 2009 -0700"
      },
      "message": "wait_task_zombie: do not use thread_group_cputime()\n\nThere is no reason for thread_group_cputime() in wait_task_zombie(), there\nmust be no other threads.\n\nThis call was previously needed to collect the per-cpu data which we do\nnot have any longer.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nCc: Vitaly Mayatskikh \u003cvmayatsk@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": "d1e98f429aa10132b3010ba3b0be47552a2eb14b",
      "tree": "bd4458a65ac9ff942a3ba6dfcd70c281e15e067a",
      "parents": [
        "8053bdd5ce15dcf043d41a4dd6cac4a5567effdc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: wait_task_zombie: s/-\u003eparent/-\u003ereal_parent/\n\nChange wait_task_zombie() to use -\u003ereal_parent instead of -\u003eparent.  We\ncould even use current afaics, but -\u003ereal_parent is more clean.\n\nWe know that the child is not ptrace_reparented() and thus they are equal.\n But we should avoid using task_struct-\u003eparent, we are going to remove it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "5cb11446892833e50970fb2277a9f7563b0a8bd3",
      "tree": "9cb858cb093c4b927601ef8a612d8dd791aeb1c8",
      "parents": [
        "1c216279539bd65c5a3d497e25d441dbddbcf1ec"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:51 2009 -0700"
      },
      "message": "ptrace: do not use task-\u003eptrace directly in core kernel\n\nNo functional changes.\n\n- Nobody except ptrace.c \u0026 co should use ptrace flags directly, we have\n  task_ptrace() for that.\n\n- No need to specially check PT_PTRACED, we must not have other PT_ bits\n  set without PT_PTRACED. And no need to know this flag exists.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@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": "dea33cfd99022d82d923a0c6a3bd895fb6683fb2",
      "tree": "889ea712abbbb8b8c220dd593383ec6f9ad15ffc",
      "parents": [
        "48597760fad3d6a3e30a14241a3ce5ccb1a0e9bc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:49 2009 -0700"
      },
      "message": "ptrace: mm_need_new_owner: use -\u003ereal_parent to search in the siblings\n\n\"Search in the siblings\" should use -\u003ereal_parent, not -\u003eparent.  If the\ntask is traced then -\u003eparent \u003d\u003d tracer, while the task\u0027s parent is always\n-\u003ereal_parent.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "87245135d5057edd5a8037131f81eeffd76d4fef",
      "tree": "9c6c695f474dfced54311467fd5c14de57f6dbb9",
      "parents": [
        "2ffebca6aa7e1687905c842dd8c5c1e811e574e7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jun 17 16:27:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:48 2009 -0700"
      },
      "message": "allow_signal: kill the bogus -\u003emm check, add a note about CLONE_SIGHAND\n\nallow_signal() checks -\u003emm \u003d\u003d NULL.  Not sure why.  Perhaps to make sure\ncurrent is the kernel thread.  But this helper must not be used unless we\nare the kernel thread, kill this check.\n\nAlso, document the fact that the CLONE_SIGHAND kthread must not use\nallow_signal(), unless the caller really wants to change the parent\u0027s\n-\u003esighand-\u003eaction as well.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@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": "8a1ca8cedd108c8e76a6ab34079d0bbb4f244799",
      "tree": "636c715524f1718599209cc289908ea44b6cb859",
      "parents": [
        "b640f042faa2a2fad6464f259a8afec06e2f6386",
        "940010c5a314a7bd9b498593bc6ba1718ac5aec5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 14:01:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 14:01:07 2009 -0700"
      },
      "message": "Merge branch \u0027perfcounters-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perfcounters-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (574 commits)\n  perf_counter: Turn off by default\n  perf_counter: Add counter-\u003eid to the throttle event\n  perf_counter: Better align code\n  perf_counter: Rename L2 to LL cache\n  perf_counter: Standardize event names\n  perf_counter: Rename enums\n  perf_counter tools: Clean up u64 usage\n  perf_counter: Rename perf_counter_limit sysctl\n  perf_counter: More paranoia settings\n  perf_counter: powerpc: Implement generalized cache events for POWER processors\n  perf_counters: powerpc: Add support for POWER7 processors\n  perf_counter: Accurate period data\n  perf_counter: Introduce struct for sample data\n  perf_counter tools: Normalize data using per sample period data\n  perf_counter: Annotate exit ctx recursion\n  perf_counter tools: Propagate signals properly\n  perf_counter tools: Small frequency related fixes\n  perf_counter: More aggressive frequency adjustment\n  perf_counter/x86: Fix the model number of Intel Core2 processors\n  perf_counter, x86: Correct some event and umask values for Intel processors\n  ...\n"
    },
    {
      "commit": "3296ca27f50ecbd71db1d808c7a72d311027f919",
      "tree": "833eaa58b2013bda86d4bd95faf6efad7a2d5ca4",
      "parents": [
        "e893123c7378192c094747dadec326b7c000c190",
        "73fbad283cfbbcf02939bdbda31fc4a30e729cca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:01:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:01:41 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (44 commits)\n  nommu: Provide mmap_min_addr definition.\n  TOMOYO: Add description of lists and structures.\n  TOMOYO: Remove unused field.\n  integrity: ima audit dentry_open failure\n  TOMOYO: Remove unused parameter.\n  security: use mmap_min_addr indepedently of security models\n  TOMOYO: Simplify policy reader.\n  TOMOYO: Remove redundant markers.\n  SELinux: define audit permissions for audit tree netlink messages\n  TOMOYO: Remove unused mutex.\n  tomoyo: avoid get+put of task_struct\n  smack: Remove redundant initialization.\n  integrity: nfsd imbalance bug fix\n  rootplug: Remove redundant initialization.\n  smack: do not beyond ARRAY_SIZE of data\n  integrity: move ima_counts_get\n  integrity: path_check update\n  IMA: Add __init notation to ima functions\n  IMA: Minimal IMA policy and boot param for TCB IMA policy\n  selinux: remove obsolete read buffer limit from sel_read_bool\n  ...\n"
    },
    {
      "commit": "940010c5a314a7bd9b498593bc6ba1718ac5aec5",
      "tree": "d141e08ced08c40c6a8e3ab2cdecde5ff14e560f",
      "parents": [
        "8dc8e5e8bc0ce00b0f656bf972f67cd8a72759e5",
        "991ec02cdca33b03a132a0cacfe6f0aa0be9aa8d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 11 17:55:42 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 11 17:55:42 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into perfcounters/core\n\nConflicts:\n\tarch/x86/kernel/irqinit.c\n\tarch/x86/kernel/irqinit_64.c\n\tarch/x86/kernel/traps.c\n\tarch/x86/mm/fault.c\n\tinclude/linux/sched.h\n\tkernel/exit.c\n"
    },
    {
      "commit": "a63eaf34ae60bdb067a354cc8def2e8f4a01f5f4",
      "tree": "9e81e5e0299bd524b3d07c17a05760e33c7d58a0",
      "parents": [
        "34adc8062227f41b04ade0ff3fbd1dbe3002669e"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Fri May 22 14:17:31 2009 +1000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 22 12:18:19 2009 +0200"
      },
      "message": "perf_counter: Dynamically allocate tasks\u0027 perf_counter_context struct\n\nThis replaces the struct perf_counter_context in the task_struct with\na pointer to a dynamically allocated perf_counter_context struct.  The\nmain reason for doing is this is to allow us to transfer a\nperf_counter_context from one task to another when we do lazy PMU\nswitching in a later patch.\n\nThis has a few side-benefits: the task_struct becomes a little smaller,\nwe save some memory because only tasks that have perf_counters attached\nget a perf_counter_context allocated for them, and we can remove the\ninclusion of \u003clinux/perf_counter.h\u003e in sched.h, meaning that we don\u0027t\nend up recompiling nearly everything whenever perf_counter.h changes.\n\nThe perf_counter_context structures are reference-counted and freed\nwhen the last reference is dropped.  A context can have references\nfrom its task and the counters on its task.  Counters can outlive the\ntask so it is possible that a context will be freed well after its\ntask has exited.\n\nContexts are allocated on fork if the parent had a context, or\notherwise the first time that a per-task counter is created on a task.\nIn the latter case, we set the context pointer in the task struct\nlocklessly using an atomic compare-and-exchange operation in case we\nraced with some other task in creating a context for the subject task.\n\nThis also removes the task pointer from the perf_counter struct.  The\ntask pointer was not used anywhere and would make it harder to move a\ncontext from one task to another.  Anything that needed to know which\ntask a counter was attached to was already using counter-\u003ectx-\u003etask.\n\nThe __perf_counter_init_context function moves up in perf_counter.c\nso that it can be called from find_get_context, and now initializes\nthe refcount, but is otherwise unchanged.\n\nWe were potentially calling list_del_counter twice: once from\n__perf_counter_exit_task when the task exits and once from\n__perf_counter_remove_from_context when the counter\u0027s fd gets closed.\nThis adds a check in list_del_counter so it doesn\u0027t do anything if\nthe counter has already been removed from the lists.\n\nSince perf_counter_task_sched_in doesn\u0027t do anything if the task doesn\u0027t\nhave a context, and leaves cpuctx-\u003etask_ctx \u003d NULL, this adds code to\n__perf_install_in_context to set cpuctx-\u003etask_ctx if necessary, i.e. in\nthe case where the current task adds the first counter to itself and\nthus creates a context for itself.\n\nThis also adds similar code to __perf_counter_enable to handle a\nsimilar situation which can arise when the counters have been disabled\nusing prctl; that also leaves cpuctx-\u003etask_ctx \u003d NULL.\n\n[ Impact: refactor counter context management to prepare for new feature ]\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003c18966.10075.781053.231153@cargo.ozlabs.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "33b2fb303fe7f6b08bbb32f708e67b96eaa94a7a",
      "tree": "32ab4cb3cca6c61a2d6cf351bb8f732045464e28",
      "parents": [
        "b68f1d2e7aa21029d73c7d453a8046e95d351740"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun May 17 11:08:41 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 20 00:22:24 2009 +0200"
      },
      "message": "perf_counter: fix counter freeing logic\n\nFix counter lifetime bugs which explain the crashes reported by\nMarcelo Tosatti and Arnaldo Carvalho de Melo.\n\nThe new rule is: flushing + freeing is only done for a task\u0027s\nown counters, never for other tasks.\n\n[ Impact: fix crashes/lockups with inherited counters ]\n\nReported-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nReported-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0203026b58b4299ba7281c0b4b417207c1f05d0e",
      "tree": "02c9f3486544b0f7db1922f05cf12e6480eaf95f",
      "parents": [
        "856d56b9e5de650a64a6c41c17aaed702b55d578"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun May 17 11:24:08 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun May 17 11:26:57 2009 +0200"
      },
      "message": "perf_counter: fix threaded task exit\n\nFlushing counters in __exit_signal() with irqs disabled is not\na good idea as perf_counter_exit_task() acquires mutexes. So\nflush it before acquiring the tasklist lock.\n\n(Note, we still need a fix for when the PID has been unhashed.)\n\n[ Impact: fix crash with inherited counters ]\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "856d56b9e5de650a64a6c41c17aaed702b55d578",
      "tree": "af2fcfe19f0ab27fa220216285e4703ecc7887e1",
      "parents": [
        "8bc2095951517e2c74b8aeeca4685ddd6b16ed4b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri May 15 20:45:59 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun May 17 07:52:24 2009 +0200"
      },
      "message": "perf_counter: Fix counter inheritance\n\nSrivatsa Vaddagiri reported that a Java workload triggers this\nwarning in kernel/exit.c:\n\n   WARN_ON_ONCE(!list_empty(\u0026tsk-\u003eperf_counter_ctx.counter_list));\n\nAdd the inherited counter propagation on self-detach, this could\ncause counter leaks and incomplete stats in threaded code like\nthe below:\n\n  #include \u003cpthread.h\u003e\n  #include \u003cunistd.h\u003e\n\n  void *thread(void *arg)\n  {\n          sleep(5);\n          return NULL;\n  }\n\n  void main(void)\n  {\n          pthread_t thr;\n          pthread_create(\u0026thr, NULL, thread, NULL);\n  }\n\nReported-by: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d254117099d711f215e62427f55dfb8ebd5ad011",
      "tree": "0848ff8dd74314fec14a86497f8d288c86ba7c65",
      "parents": [
        "07ff7a0b187f3951788f64ae1f30e8109bc8e9eb",
        "8c9ed899b44c19e81859fbb0e9d659fe2f8630fc"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 08 17:56:47 2009 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 08 17:56:47 2009 +1000"
      },
      "message": "Merge branch \u0027master\u0027 into next\n"
    },
    {
      "commit": "78a3d9d5654a7fd99cf8b2ab06b9497b9c7aad64",
      "tree": "763ab08a72b381327b2868702818d527f91bce50",
      "parents": [
        "ecd6de3c88e8cbcad175b2eab48ba05c2014f7b6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 29 18:01:23 2009 +0200"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 01 08:49:29 2009 +1000"
      },
      "message": "do_wait: do take security_task_wait() into account\n\nI was never able to understand what should we actually do when\nsecurity_task_wait() fails, but the current code doesn\u0027t look right.\n\nIf -\u003etask_wait() returns the error, we update *notask_error correctly.\nBut then we either reap the child (despite the fact this was forbidden)\nor clear *notask_error (and hide the securiy policy problems).\n\nThis patch assumes that \"stolen by ptrace\" doesn\u0027t matter. If selinux\ndenies the child we should ignore it but make sure we report -EACCESS\ninstead of -ECHLD if there are no other eligible children.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "ad8d75fff811a6a230f7f43b05a6483099349533",
      "tree": "764f75c0785b29067b141719b6e8000f005da7fd",
      "parents": [
        "ecda8ae02a08ef065ff387f5cb2a2d4999da2408"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 14 19:39:12 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 22:05:43 2009 -0400"
      },
      "message": "tracing/events: move trace point headers into include/trace/events\n\nImpact: clean up\n\nCreate a sub directory in include/trace called events to keep the\ntrace point headers in their own separate directory. Only headers that\ndeclare trace points should be defined in this directory.\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a8d154b009168337494fbf345671bab74d3e4b8b",
      "tree": "4097612e1a5cc8bf7658542f7d0f51b815113eaf",
      "parents": [
        "ea20d9293ce423a39717ed4375393129a2e701f9"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 10 09:36:00 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:57:28 2009 -0400"
      },
      "message": "tracing: create automated trace defines\n\nThis patch lowers the number of places a developer must modify to add\nnew tracepoints. The current method to add a new tracepoint\ninto an existing system is to write the trace point macro in the\ntrace header with one of the macros TRACE_EVENT, TRACE_FORMAT or\nDECLARE_TRACE, then they must add the same named item into the C file\nwith the macro DEFINE_TRACE(name) and then add the trace point.\n\nThis change cuts out the needing to add the DEFINE_TRACE(name).\nEvery file that uses the tracepoint must still include the trace/\u003ctype\u003e.h\nfile, but the one C file must also add a define before the including\nof that file.\n\n #define CREATE_TRACE_POINTS\n #include \u003ctrace/mytrace.h\u003e\n\nThis will cause the trace/mytrace.h file to also produce the C code\nnecessary to implement the trace point.\n\nNote, if more than one trace/\u003ctype\u003e.h is used to create the C code\nit is best to list them all together.\n\n #define CREATE_TRACE_POINTS\n #include \u003ctrace/foo.h\u003e\n #include \u003ctrace/bar.h\u003e\n #include \u003ctrace/fido.h\u003e\n\nThanks to Mathieu Desnoyers and Christoph Hellwig for coming up with\nthe cleaner solution of the define above the includes over my first\ndesign to have the C code include a \"special\" header.\n\nThis patch converts sched, irq and lockdep and skb to use this new\nmethod.\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nCc: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5ea472a77f8e4811ceee3f44a9deda6ad6e8b789",
      "tree": "a9ec5019e2b666a19874fc344ffb0dd5da6bce94",
      "parents": [
        "6c009ecef8cca28c7c09eb16d0802e37915a76e1",
        "577c9c456f0e1371cbade38eaf91ae8e8a308555"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 10:35:30 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 08 10:35:30 2009 +0200"
      },
      "message": "Merge commit \u0027v2.6.30-rc1\u0027 into perfcounters/core\n\nConflicts:\n\tarch/powerpc/include/asm/systbl.h\n\tarch/powerpc/include/asm/unistd.h\n\tinclude/linux/init_task.h\n\nMerge reason: the conflicts are non-trivial: PowerPC placement\n              of sys_perf_counter_open has to be mixed with the\n\t      new preadv/pwrite syscalls.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c61b79b6ef266890954213a701d8f6021d8c1289",
      "tree": "9b000a7dae5a782a0d667137ab43e4f1bea70d58",
      "parents": [
        "2b2ec7554cf7ec5e4412f89a5af6abe8ce950700",
        "9efe21cb82b5dbe3b0b2ae4de4eccc64ecb94e95"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 14:07:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 14:07:52 2009 -0700"
      },
      "message": "Merge branch \u0027irq/threaded\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq/threaded\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  genirq: fix devres.o build for GENERIC_HARDIRQS\u003dn\n  genirq: provide old request_irq() for CONFIG_GENERIC_HARDIRQ\u003dn\n  genirq: threaded irq handlers review fixups\n  genirq: add support for threaded interrupts to devres\n  genirq: add threaded interrupt handler support\n"
    },
    {
      "commit": "6c009ecef8cca28c7c09eb16d0802e37915a76e1",
      "tree": "11c773f780186fdb9fbc9c80a73fb7c8426b1fba",
      "parents": [
        "98c2aaf8be5baf7193be37fb28bce8e7327158bc",
        "d508afb437daee7cf07da085b635c44a4ebf9b38"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 12:05:21 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 12:05:25 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into perfcounters/core\n\nMerge reason: need the upstream facility added by:\n\n  7f1e2ca: hrtimer: fix rq-\u003elock inversion (again)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "432870dab85a2f69dc417022646cb9a70acf7f94",
      "tree": "4c9c08d7fb77744b1fd04615a76ab0a9105fad07",
      "parents": [
        "22ae77bc7ac115b9d518d5cbc13d39317079b2b0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Apr 06 16:16:02 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 14:57:23 2009 -0700"
      },
      "message": "exit_notify: kill the wrong capable(CAP_KILL) check\n\nThe CAP_KILL check in exit_notify() looks just wrong, kill it.\n\nWhatever logic we have to reset -\u003eexit_signal, the malicious user\ncan bypass it if it execs the setuid application before exiting.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f541ae326fa120fa5c57433e4d9a133df212ce41",
      "tree": "bdbd94ec72cfc601118051cb35e8617d55510177",
      "parents": [
        "e255357764f92afcafafbd4879b222b8c752065a",
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 09:02:57 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 09:02:57 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into perfcounters/core-v2\n\nMerge reason: we have gathered quite a few conflicts, need to merge upstream\n\nConflicts:\n\tarch/powerpc/kernel/Makefile\n\tarch/x86/ia32/ia32entry.S\n\tarch/x86/include/asm/hardirq.h\n\tarch/x86/include/asm/unistd_32.h\n\tarch/x86/include/asm/unistd_64.h\n\tarch/x86/kernel/cpu/common.c\n\tarch/x86/kernel/irq.c\n\tarch/x86/kernel/syscall_table_32.S\n\tarch/x86/mm/iomap_32.c\n\tinclude/linux/sched.h\n\tkernel/Makefile\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9efe21cb82b5dbe3b0b2ae4de4eccc64ecb94e95",
      "tree": "7ff8833745d2f268f897f6fa4a27263b4a572245",
      "parents": [
        "de18836e447c2dc30120c0919b8db8ddc0401cc4",
        "0221c81b1b8eb0cbb6b30a0ced52ead32d2b4e4c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 01:41:22 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Apr 06 01:41:22 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into irq/threaded\n\nConflicts:\n\tinclude/linux/irq.h\n\tkernel/irq/handle.c\n"
    },
    {
      "commit": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "1b0f7ffd0ea27cd3a0b9ca04e3df9522048c32a3",
      "tree": "a8c27acdf95f55f93fe86661c6cba4cd36c8e4f1",
      "parents": [
        "52ee2dfdd4f51cf422ea6a96a0846dc94244aa37"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:02 2009 -0700"
      },
      "message": "pids: kill signal_struct-\u003e __pgrp/__session and friends\n\nWe are wasting 2 words in signal_struct without any reason to implement\ntask_pgrp_nr() and task_session_nr().\n\ntask_session_nr() has no callers since\n2e2ba22ea4fd4bb85f0fa37c521066db6775cbef, we can remove it.\n\ntask_pgrp_nr() is still (I believe wrongly) used in fs/autofsX and\nfs/coda.\n\nThis patch reimplements task_pgrp_nr() via task_pgrp_nr_ns(), and kills\n__pgrp/__session and the related helpers.\n\nThe change in drivers/char/tty_io.c is cosmetic, but hopefully makes sense\nanyway.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Alan Cox \u003cnumber6@the-village.bc.nu\u003e\t\t[tty parts]\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Roland McGrath \u003croland@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": "2ae448efc87df6d328f5835969076c7f9fce59c3",
      "tree": "f110b43fa7c6b3c80f9b18a8e4fef728ed57f448",
      "parents": [
        "6dda81f4384b94930826eded254d8c16f89a9248"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:02 2009 -0700"
      },
      "message": "pids: improve get_task_pid() to fix the unsafe sys_wait4()-\u003etask_pgrp()\n\nsys_wait4() does get_pid(task_pgrp(current)), this is not safe.  We can\nadd rcu lock/unlock around, but we already have get_task_pid() which can\nbe improved to handle the special pids in more reliable manner.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Louis Rilling \u003cLouis.Rilling@kerlabs.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Roland McGrath \u003croland@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": "5dfc80be73dd0c212d2e6dd8dbf5afa07e680bbe",
      "tree": "ac173fb3fcfe2970781591f620f22d30f4ce090c",
      "parents": [
        "39c626ae47c469abdfd30c6e42eff884931380d6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:00 2009 -0700"
      },
      "message": "forget_original_parent: do not abuse child-\u003eptrace_entry\n\nBy discussion with Roland.\n\n- Use -\u003esibling instead of -\u003eptrace_entry to chain the need to be\n  release_task\u0027d childs. Nobody else can use -\u003esibling, this task\n  is EXIT_DEAD and nobody can find it on its own list.\n\n- rename ptrace_dead to dead_childs.\n\n- Now that we don\u0027t have the \"parallel\" untrace code, change back\n  reparent_thread() to return void, pass dead_childs as an argument.\n\nActually, I don\u0027t understand why do we notify /sbin/init when we\nreparent a zombie, probably it is better to reap it unconditionally.\n\n[akpm@linux-foundation.org: s/childs/children/]\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Metzger, Markus T\" \u003cmarkus.t.metzger@intel.com\u003e\nCc: Roland McGrath \u003croland@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": "39c626ae47c469abdfd30c6e42eff884931380d6",
      "tree": "58cbe75bac79ce8ef55c94189df26448d0283918",
      "parents": [
        "7f5d3652d469cdf9eb2365dfea7ce3fb9e1409cc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:00 2009 -0700"
      },
      "message": "forget_original_parent: split out the un-ptrace part\n\nBy discussion with Roland.\n\n- Rename ptrace_exit() to exit_ptrace(), and change it to do all the\n  necessary work with -\u003eptraced list by its own.\n\n- Move this code from exit.c to ptrace.c\n\n- Update the comment in ptrace_detach() to explain the rechecking of\n  the child-\u003eptrace.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Metzger, Markus T\" \u003cmarkus.t.metzger@intel.com\u003e\nCc: Roland McGrath \u003croland@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": "7f5d3652d469cdf9eb2365dfea7ce3fb9e1409cc",
      "tree": "590f845665e166694ba0f9ba0e6d2267e15d8aae",
      "parents": [
        "b1442b055c154699a6a2c436f3352f71b6beede3"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:59 2009 -0700"
      },
      "message": "reparent_thread: fix a zombie leak if /sbin/init ignores SIGCHLD\n\nIf /sbin/init ignores SIGCHLD and we re-parent a zombie, it is leaked.\nreparent_thread() does do_notify_parent() which sets -\u003eexit_signal \u003d -1 in\nthis case.  This means that nobody except us can reap it, the detached\ntask is not visible to do_wait().\n\nChange reparent_thread() to return a boolean (like __pthread_detach) to\nindicate that the thread is dead and must be released.  Also change\nforget_original_parent() to add the child to ptrace_dead list in this\ncase.\n\nThe naming becomes insane, the next patch does the cleanup.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: \"Eric W. 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": "b1442b055c154699a6a2c436f3352f71b6beede3",
      "tree": "dda315fddb15936bc74eb9c74bec29b64e65b71c",
      "parents": [
        "0a967a044a777e8b9c739120927114ddc0094298"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:59 2009 -0700"
      },
      "message": "reparent_thread: fix the \"is it traced\" check\n\nreparent_thread() uses ptrace_reparented() to check whether this thread is\nptraced, in that case we should not notify the new parent.\n\nBut ptrace_reparented() is not exactly correct when the reparented thread\nis traced by /sbin/init, because forget_original_parent() has already\nchanged -\u003ereal_parent.\n\nCurrently, the only problem is the false notification.  But with the next\npatch the kernel crash in this (yes, pathological) case.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: \"Eric W. 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": "0a967a044a777e8b9c739120927114ddc0094298",
      "tree": "aa1abba4c643e0f502623870045a4c978db5683b",
      "parents": [
        "4576145c1ecdaaea9ef8976a48335206aa1ebf91"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:59 2009 -0700"
      },
      "message": "reparent_thread: don\u0027t call kill_orphaned_pgrp() if task_detached()\n\nIf task_detached(p) \u003d\u003d T, then either\n\n  a) p is not the main thread, we will find the group leader on the\n     -\u003echildren list.\n\nor\n\n  b) p is the group leader but its -\u003eexit_state \u003d EXIT_DEAD.  This\n     can only happen when the last sub-thread has died, but in that case\n     that thread has already called kill_orphaned_pgrp() from\n     exit_notify().\n\nIn both cases kill_orphaned_pgrp() looks bogus.\n\nMove the task_detached() check up and simplify the code, this is also\nright from the \"common sense\" pov: we should do nothing with the detached\nchilds, except move them to the new parent\u0027s -\u003echildren list.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: \"Eric W. 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": "b1b4c6799fb59e710454bfe0ab477cb8523a8667",
      "tree": "1cdd19f00c584a8800ce0d3a5530b78d1cbd6e56",
      "parents": [
        "6d69cb87f05eef3b02370b2f7bae608ad2301a00"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:59 2009 -0700"
      },
      "message": "ptrace: reintroduce __ptrace_detach() as a callee of ptrace_exit()\n\nNo functional changes, preparation for the next patch.\n\nMove the \"should we release this child\" logic into the separate handler,\n__ptrace_detach().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Denys Vlasenko \u003cdvlasenk@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": "6d69cb87f05eef3b02370b2f7bae608ad2301a00",
      "tree": "69f38afc49df51a1a75fc5c7792ced6888af329d",
      "parents": [
        "95c3eb76dc07fd81289888ffc42948196b34b444"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:58:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:59 2009 -0700"
      },
      "message": "ptrace: simplify ptrace_exit()-\u003eignoring_children() path\n\nignoring_children() takes parent-\u003esighand-\u003esiglock and checks\nk_sigaction[SIGCHLD] atomically.  But this buys nothing, we can\u0027t get the\n\"really\" wrong result even if we race with sigaction(SIGCHLD).  If we read\nthe \"stale\" sa_handler/sa_flags we can pretend it was changed right after\nthe check.\n\nRemove spin_lock(-\u003esiglock), and kill \"int ign\" which caches the result of\nignoring_children() which becomes rather trivial.\n\nPerhaps it makes sense to export this helper, do_notify_parent() can use\nit too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Denys Vlasenko \u003cdvlasenk@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": "90bc8d8b1a38f1ab131a2399a202e1889db95de8",
      "tree": "97001737dc3c1c7fd364ddd995bcbfc1c27b4c3a",
      "parents": [
        "6d7b2f5f9e88902b19f91d0c8a7ef58a5455f1a2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Apr 02 16:57:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:57 2009 -0700"
      },
      "message": "do_wait: fix waiting for the group stop with the dead leader\n\ndo_wait(WSTOPPED) assumes that p-\u003estate must be \u003d\u003d TASK_STOPPED, this is\nnot true if the leader is already dead.  Check SIGNAL_STOP_STOPPED instead\nand use signal-\u003egroup_exit_code.\n\nTrivial test-case:\n\n\tvoid *tfunc(void *arg)\n\t{\n\t\tpause();\n\t\treturn NULL;\n\t}\n\n\tint main(void)\n\t{\n\t\tpthread_t thr;\n\t\tpthread_create(\u0026thr, NULL, tfunc, NULL);\n\t\tpthread_exit(NULL);\n\t\treturn 0;\n\t}\n\nIt doesn\u0027t react to ^Z (and then to ^C or ^\\). The task is stopped, but\nbash can\u0027t see this.\n\nThe bug is very old, and it was reported multiple times. This patch was sent\nmore than a year ago (http://marc.info/?t\u003d119713920000003) but it was ignored.\n\nThis change also fixes other oddities (but not all) in this area.  For\nexample, before this patch:\n\n\t$ sleep 100\n\t^Z\n\t[1]+  Stopped                 sleep 100\n\t$ strace -p `pidof sleep`\n\tProcess 11442 attached - interrupt to quit\n\nstrace hangs in do_wait(), because -\u003eexit_code was already consumed by\nbash.  After this patch, strace happily proceeds:\n\n\t--- SIGTSTP (Stopped) @ 0 (0) ---\n\trestart_syscall(\u003c... resuming interrupted call ...\u003e\n\nTo me, this looks much more \"natural\" and correct.\n\nAnother example.  Let\u0027s suppose we have the main thread M and sub-thread\nT, the process is stopped, and its parent did wait(WSTOPPED).  Now we can\nptrace T but not M.  This looks at least strange to me.\n\nImho, do_wait() should not confuse the per-thread ptrace stops with the\nper-process job control stops.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Denys Vlasenko \u003cdvlasenk@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Jan Kratochvil \u003cjan.kratochvil@redhat.com\u003e\nCc: Kaz Kylheku \u003ckkylheku@gmail.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "5ad4e53bd5406ee214ddc5a41f03f779b8b2d526",
      "tree": "b3dab5140284b3edf02bf2b13f74bfddb25aa62a",
      "parents": [
        "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:50:06 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Get rid of indirect include of fs_struct.h\n\nDon\u0027t pull it in sched.h; very few files actually need it and those\ncan include directly.  sched.h itself only needs forward declaration\nof struct fs_struct;\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3e93cd671813e204c258f1e6c797959920cf7772",
      "tree": "a1e0b2d2da7d296cc1c53be9cd6efa5b94b01b5c",
      "parents": [
        "f8ef3ed2bebd2c4cb9ece92efa185d7aead8831a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:00:13 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "Take fs_struct handling to new file (fs/fs_struct.c)\n\nPure code move; two new helper functions for nfsd and daemonize\n(unshare_fs_struct() and daemonize_fs_struct() resp.; for now -\nthe same code as used to be in callers).  unshare_fs_struct()\nexported (for nfsd, as copy_fs_struct()/exit_fs() used to be),\ncopy_fs_struct() and exit_fs() don\u0027t need exports anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3aa551c9b4c40018f0e261a178e3d25478dc04a9",
      "tree": "2a696109273fcc421d774cc8fefa4180331a85ad",
      "parents": [
        "80c5520811d3805adcb15c570ea5e2d489fa5d0b"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 23 18:28:15 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 24 12:15:23 2009 +0100"
      },
      "message": "genirq: add threaded interrupt handler support\n\nAdd support for threaded interrupt handlers:\n\nA device driver can request that its main interrupt handler runs in a\nthread. To achive this the device driver requests the interrupt with\nrequest_threaded_irq() and provides additionally to the handler a\nthread function. The handler function is called in hard interrupt\ncontext and needs to check whether the interrupt originated from the\ndevice. If the interrupt originated from the device then the handler\ncan either return IRQ_HANDLED or IRQ_WAKE_THREAD. IRQ_HANDLED is\nreturned when no further action is required. IRQ_WAKE_THREAD causes\nthe genirq code to invoke the threaded (main) handler. When\nIRQ_WAKE_THREAD is returned handler must have disabled the interrupt\non the device level. This is mandatory for shared interrupt handlers,\nbut we need to do it as well for obscure x86 hardware where disabling\nan interrupt on the IO_APIC level redirects the interrupt to the\nlegacy PIC interrupt lines.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n"
    },
    {
      "commit": "f8a6b2b9cee298a9663cbe38ce1eb5240987cb62",
      "tree": "b356490269c9e77d164dcc1477792b882fbb8bdb",
      "parents": [
        "ba1511bf7fbda452138e4096bf10d5a382710f4f",
        "071a0bc2ceace31266836801510879407a3701fa"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 09:44:22 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 13 09:44:22 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into x86/apic\n\nConflicts:\n\tarch/x86/kernel/acpi/boot.c\n\tarch/x86/mm/fault.c\n"
    }
  ],
  "next": "e9c4ffb11f0b19005b5b9dc8481687a3637e5887"
}
