)]}'
{
  "log": [
    {
      "commit": "92b29b86fe2e183d44eb467e5e74a5f718ef2e43",
      "tree": "1bac8a1aa11d47322b66d10ec3a370016d843d06",
      "parents": [
        "b9d7ccf56be1ac77b71a284a1c0e6337f9a7aff0",
        "98d9c66ab07471006fd7910cb16453581c41a3e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:35:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:35:07 2008 -0700"
      },
      "message": "Merge branch \u0027tracing-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (131 commits)\n  tracing/fastboot: improve help text\n  tracing/stacktrace: improve help text\n  tracing/fastboot: fix initcalls disposition in bootgraph.pl\n  tracing/fastboot: fix bootgraph.pl initcall name regexp\n  tracing/fastboot: fix issues and improve output of bootgraph.pl\n  tracepoints: synchronize unregister static inline\n  tracepoints: tracepoint_synchronize_unregister()\n  ftrace: make ftrace_test_p6nop disassembler-friendly\n  markers: fix synchronize marker unregister static inline\n  tracing/fastboot: add better resolution to initcall debug/tracing\n  trace: add build-time check to avoid overrunning hex buffer\n  ftrace: fix hex output mode of ftrace\n  tracing/fastboot: fix initcalls disposition in bootgraph.pl\n  tracing/fastboot: fix printk format typo in boot tracer\n  ftrace: return an error when setting a nonexistent tracer\n  ftrace: make some tracers reentrant\n  ring-buffer: make reentrant\n  ring-buffer: move page indexes into page headers\n  tracing/fastboot: only trace non-module initcalls\n  ftrace: move pc counter in irqtrace\n  ...\n\nManually fix conflicts:\n - init/main.c: initcall tracing\n - kernel/module.c: verbose level vs tracepoints\n - scripts/bootgraph.pl: fallout from cherry-picking commits.\n"
    },
    {
      "commit": "c465a76af658b443075d6efee1c3131257643020",
      "tree": "63c28c9fab02dedec7f03cee4a3ef7fe4dc1c072",
      "parents": [
        "2d42244ae71d6c7b0884b5664cf2eda30fb2ae68",
        "1b02469088ac7a13d7e622b618b7410d0f1ce5ec",
        "fb02fbc14d17837b4b7b02dbb36142c16a7bf208",
        "d40e944c25fb4642adb2a4c580a48218a9f3f824",
        "1508487e7f16d992ad23cabd3712563ff912f413",
        "322acf6585f3c4e82ee32a246b0483ca0f6ad3f4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Oct 20 13:14:06 2008 +0200"
      },
      "message": "Merge branches \u0027timers/clocksource\u0027, \u0027timers/hrtimers\u0027, \u0027timers/nohz\u0027, \u0027timers/ntp\u0027, \u0027timers/posixtimers\u0027 and \u0027timers/debug\u0027 into v28-timers-for-linus\n"
    },
    {
      "commit": "9363b9f23c9cc36cc8ef6c05fdf879ee4a96ae92",
      "tree": "482746b06d6fdd8be606de4dff584a3a40054c4c",
      "parents": [
        "1648993fb05c487947c1cec6307aca29d8002abe"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Oct 15 22:01:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:28 2008 -0700"
      },
      "message": "memrlimit: cgroup mm owner callback changes to add task info\n\nThis patch adds an additional field to the mm_owner callbacks. This field\nis required to get to the mm that changed. Hold mmap_sem in write mode\nbefore calling the mm_owner_changed callback\n\n[hugh@veritas.com: fix mmap_sem deadlock]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a16b6075843325dc402edf80c1662838b929aff",
      "tree": "124e49d8c0196f3c6eb7aa09a7c4c3c3157fff7a",
      "parents": [
        "4a0897526bbc5c6ac0df80b16b8c60339e717ae2"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Jul 18 12:16:17 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:30:52 2008 +0200"
      },
      "message": "tracing, sched: LTTng instrumentation - scheduler\n\nInstrument the scheduler activity (sched_switch, migration, wakeups,\nwait for a task, signal delivery) and process/thread\ncreation/destruction (fork, exit, kthread stop). Actually, kthread\ncreation is not instrumented in this patch because it is architecture\ndependent. It allows to connect tracers such as ftrace which detects\nscheduling latencies, good/bad scheduler decisions. Tools like LTTng can\nexport this scheduler information along with instrumentation of the rest\nof the kernel activity to perform post-mortem analysis on the scheduler\nactivity.\n\nAbout the performance impact of tracepoints (which is comparable to\nmarkers), even without immediate values optimizations, tests done by\nHideo Aoki on ia64 show no regression. His test case was using hackbench\non a kernel where scheduler instrumentation (about 5 events in code\nscheduler code) was added. See the \"Tracepoints\" patch header for\nperformance result detail.\n\nChangelog :\n\n- Change instrumentation location and parameter to match ftrace\n  instrumentation, previously done with kernel markers.\n\n[ mingo@elte.hu: conflict resolutions ]\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: \u0027Peter Zijlstra\u0027 \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "31a78f23bac0069004e69f98808b6988baccb6b6",
      "tree": "edca8cffb4682de6be2e79b0b8d381dbb1b70964",
      "parents": [
        "bf5cb66447e7d9f7f111c1d0ebb6d7c90ec24b4d"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Sun Sep 28 23:09:31 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 29 08:41:47 2008 -0700"
      },
      "message": "mm owner: fix race between swapoff and exit\n\nThere\u0027s a race between mm-\u003eowner assignment and swapoff, more easily\nseen when task slab poisoning is turned on.  The condition occurs when\ntry_to_unuse() runs in parallel with an exiting task.  A similar race\ncan occur with callers of get_task_mm(), such as /proc/\u003cpid\u003e/\u003cmmstats\u003e\nor ptrace or page migration.\n\nCPU0                                    CPU1\n                                        try_to_unuse\n                                        looks at mm \u003d task0-\u003emm\n                                        increments mm-\u003emm_users\ntask 0 exits\nmm-\u003eowner needs to be updated, but no\nnew owner is found (mm_users \u003e 1, but\nno other task has task-\u003emm \u003d task0-\u003emm)\nmm_update_next_owner() leaves\n                                        mmput(mm) decrements mm-\u003emm_users\ntask0 freed\n                                        dereferencing mm-\u003eowner fails\n\nThe fix is to notify the subsystem via mm_owner_changed callback(),\nif no new owner is found, by specifying the new task as NULL.\n\nJiri Slaby:\nmm-\u003eowner was set to NULL prior to calling cgroup_mm_owner_callbacks(), but\nmust be set after that, so as not to pass NULL as old owner causing oops.\n\nDaisuke Nishimura:\nmm_update_next_owner() may set mm-\u003eowner to NULL, but mem_cgroup_from_task()\nand its callers need to take account of this situation to avoid oops.\n\nHugh Dickins:\nLockdep warning and hang below exec_mmap() when testing these patches.\nexit_mm() up_reads mmap_sem before calling mm_update_next_owner(),\nso exec_mmap() now needs to do the same.  And with that repositioning,\nthere\u0027s now no point in mm_need_new_owner() allowing for NULL mm.\n\nReported-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@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": "f06febc96ba8e0af80bcc3eaec0a109e88275fac",
      "tree": "46dba9432ef25d2eae9434ff2df638c7a268c0f1",
      "parents": [
        "6bfb09a1005193be5c81ebac9f3ef85210142650"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Fri Sep 12 09:54:39 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Sep 14 16:25:35 2008 +0200"
      },
      "message": "timers: fix itimer/many thread hang\n\nOverview\n\nThis patch reworks the handling of POSIX CPU timers, including the\nITIMER_PROF, ITIMER_VIRT timers and rlimit handling.  It was put together\nwith the help of Roland McGrath, the owner and original writer of this code.\n\nThe problem we ran into, and the reason for this rework, has to do with using\na profiling timer in a process with a large number of threads.  It appears\nthat the performance of the old implementation of run_posix_cpu_timers() was\nat least O(n*3) (where \"n\" is the number of threads in a process) or worse.\nEverything is fine with an increasing number of threads until the time taken\nfor that routine to run becomes the same as or greater than the tick time, at\nwhich point things degrade rather quickly.\n\nThis patch fixes bug 9906, \"Weird hang with NPTL and SIGPROF.\"\n\nCode Changes\n\nThis rework corrects the implementation of run_posix_cpu_timers() to make it\nrun in constant time for a particular machine.  (Performance may vary between\none machine and another depending upon whether the kernel is built as single-\nor multiprocessor and, in the latter case, depending upon the number of\nrunning processors.)  To do this, at each tick we now update fields in\nsignal_struct as well as task_struct.  The run_posix_cpu_timers() function\nuses those fields to make its decisions.\n\nWe define a new structure, \"task_cputime,\" to contain user, system and\nscheduler times and use these in appropriate places:\n\nstruct task_cputime {\n\tcputime_t utime;\n\tcputime_t stime;\n\tunsigned long long sum_exec_runtime;\n};\n\nThis is included in the structure \"thread_group_cputime,\" which is a new\nsubstructure of signal_struct and which varies for uniprocessor versus\nmultiprocessor kernels.  For uniprocessor kernels, it uses \"task_cputime\" as\na simple substructure, while for multiprocessor kernels it is a pointer:\n\nstruct thread_group_cputime {\n\tstruct task_cputime totals;\n};\n\nstruct thread_group_cputime {\n\tstruct task_cputime *totals;\n};\n\nWe also add a new task_cputime substructure directly to signal_struct, to\ncache the earliest expiration of process-wide timers, and task_cputime also\nreplaces the it_*_expires fields of task_struct (used for earliest expiration\nof thread timers).  The \"thread_group_cputime\" structure contains process-wide\ntimers that are updated via account_user_time() and friends.  In the non-SMP\ncase the structure is a simple aggregator; unfortunately in the SMP case that\nsimplicity was not achievable due to cache-line contention between CPUs (in\none measured case performance was actually _worse_ on a 16-cpu system than\nthe same test on a 4-cpu system, due to this contention).  For SMP, the\nthread_group_cputime counters are maintained as a per-cpu structure allocated\nusing alloc_percpu().  The timer functions update only the timer field in\nthe structure corresponding to the running CPU, obtained using per_cpu_ptr().\n\nWe define a set of inline functions in sched.h that we use to maintain the\nthread_group_cputime structure and hide the differences between UP and SMP\nimplementations from the rest of the kernel.  The thread_group_cputime_init()\nfunction initializes the thread_group_cputime structure for the given task.\nThe thread_group_cputime_alloc() is a no-op for UP; for SMP it calls the\nout-of-line function thread_group_cputime_alloc_smp() to allocate and fill\nin the per-cpu structures and fields.  The thread_group_cputime_free()\nfunction, also a no-op for UP, in SMP frees the per-cpu structures.  The\nthread_group_cputime_clone_thread() function (also a UP no-op) for SMP calls\nthread_group_cputime_alloc() if the per-cpu structures haven\u0027t yet been\nallocated.  The thread_group_cputime() function fills the task_cputime\nstructure it is passed with the contents of the thread_group_cputime fields;\nin UP it\u0027s that simple but in SMP it must also safely check that tsk-\u003esignal\nis non-NULL (if it is it just uses the appropriate fields of task_struct) and,\nif so, sums the per-cpu values for each online CPU.  Finally, the three\nfunctions account_group_user_time(), account_group_system_time() and\naccount_group_exec_runtime() are used by timer functions to update the\nrespective fields of the thread_group_cputime structure.\n\nNon-SMP operation is trivial and will not be mentioned further.\n\nThe per-cpu structure is always allocated when a task creates its first new\nthread, via a call to thread_group_cputime_clone_thread() from copy_signal().\nIt is freed at process exit via a call to thread_group_cputime_free() from\ncleanup_signal().\n\nAll functions that formerly summed utime/stime/sum_sched_runtime values from\nfrom all threads in the thread group now use thread_group_cputime() to\nsnapshot the values in the thread_group_cputime structure or the values in\nthe task structure itself if the per-cpu structure hasn\u0027t been allocated.\n\nFinally, the code in kernel/posix-cpu-timers.c has changed quite a bit.\nThe run_posix_cpu_timers() function has been split into a fast path and a\nslow path; the former safely checks whether there are any expired thread\ntimers and, if not, just returns, while the slow path does the heavy lifting.\nWith the dedicated thread group fields, timers are no longer \"rebalanced\" and\nthe process_timer_rebalance() function and related code has gone away.  All\nsumming loops are gone and all code that used them now uses the\nthread_group_cputime() inline.  When process-wide timers are set, the new\ntask_cputime structure in signal_struct is used to cache the earliest\nexpiration; this is checked in the fast path.\n\nPerformance\n\nThe fix appears not to add significant overhead to existing operations.  It\ngenerally performs the same as the current code except in two cases, one in\nwhich it performs slightly worse (Case 5 below) and one in which it performs\nvery significantly better (Case 2 below).  Overall it\u0027s a wash except in those\ntwo cases.\n\nI\u0027ve since done somewhat more involved testing on a dual-core Opteron system.\n\nCase 1: With no itimer running, for a test with 100,000 threads, the fixed\n\tkernel took 1428.5 seconds, 513 seconds more than the unfixed system,\n\tall of which was spent in the system.  There were twice as many\n\tvoluntary context switches with the fix as without it.\n\nCase 2: With an itimer running at .01 second ticks and 4000 threads (the most\n\tan unmodified kernel can handle), the fixed kernel ran the test in\n\teight percent of the time (5.8 seconds as opposed to 70 seconds) and\n\thad better tick accuracy (.012 seconds per tick as opposed to .023\n\tseconds per tick).\n\nCase 3: A 4000-thread test with an initial timer tick of .01 second and an\n\tinterval of 10,000 seconds (i.e. a timer that ticks only once) had\n\tvery nearly the same performance in both cases:  6.3 seconds elapsed\n\tfor the fixed kernel versus 5.5 seconds for the unfixed kernel.\n\nWith fewer threads (eight in these tests), the Case 1 test ran in essentially\nthe same time on both the modified and unmodified kernels (5.2 seconds versus\n5.8 seconds).  The Case 2 test ran in about the same time as well, 5.9 seconds\nversus 5.4 seconds but again with much better tick accuracy, .013 seconds per\ntick versus .025 seconds per tick for the unmodified kernel.\n\nSince the fix affected the rlimit code, I also tested soft and hard CPU limits.\n\nCase 4: With a hard CPU limit of 20 seconds and eight threads (and an itimer\n\trunning), the modified kernel was very slightly favored in that while\n\tit killed the process in 19.997 seconds of CPU time (5.002 seconds of\n\twall time), only .003 seconds of that was system time, the rest was\n\tuser time.  The unmodified kernel killed the process in 20.001 seconds\n\tof CPU (5.014 seconds of wall time) of which .016 seconds was system\n\ttime.  Really, though, the results were too close to call.  The results\n\twere essentially the same with no itimer running.\n\nCase 5: With a soft limit of 20 seconds and a hard limit of 2000 seconds\n\t(where the hard limit would never be reached) and an itimer running,\n\tthe modified kernel exhibited worse tick accuracy than the unmodified\n\tkernel: .050 seconds/tick versus .028 seconds/tick.  Otherwise,\n\tperformance was almost indistinguishable.  With no itimer running this\n\ttest exhibited virtually identical behavior and times in both cases.\n\nIn times past I did some limited performance testing.  those results are below.\n\nOn a four-cpu Opteron system without this fix, a sixteen-thread test executed\nin 3569.991 seconds, of which user was 3568.435s and system was 1.556s.  On\nthe same system with the fix, user and elapsed time were about the same, but\nsystem time dropped to 0.007 seconds.  Performance with eight, four and one\nthread were comparable.  Interestingly, the timer ticks with the fix seemed\nmore accurate:  The sixteen-thread test with the fix received 149543 ticks\nfor 0.024 seconds per tick, while the same test without the fix received 58720\nfor 0.061 seconds per tick.  Both cases were configured for an interval of\n0.01 seconds.  Again, the other tests were comparable.  Each thread in this\ntest computed the primes up to 25,000,000.\n\nI also did a test with a large number of threads, 100,000 threads, which is\nimpossible without the fix.  In this case each thread computed the primes only\nup to 10,000 (to make the runtime manageable).  System time dominated, at\n1546.968 seconds out of a total 2176.906 seconds (giving a user time of\n629.938s).  It received 147651 ticks for 0.015 seconds per tick, still quite\naccurate.  There is obviously no comparable test without the fix.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "49048622eae698e5c4ae61f7e71200f265ccc529",
      "tree": "e568595fe5329e1293eafc3a3cc833dfe89ffbf2",
      "parents": [
        "56c7426b3951e4f35a71d695f1c982989399d6fd"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Fri Sep 05 18:12:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 05 18:14:35 2008 +0200"
      },
      "message": "sched: fix process time monotonicity\n\nSpencer reported a problem where utime and stime were going negative despite\nthe fixes in commit b27f03d4bdc145a09fb7b0c0e004b29f1ee555fa. The suspected\nreason for the problem is that signal_struct maintains it\u0027s own utime and\nstime (of exited tasks), these are not updated using the new task_utime()\nroutine, hence sig-\u003eutime can go backwards and cause the same problem\nto occur (sig-\u003eutime, adds tsk-\u003eutime and not task_utime()). This patch\nfixes the problem\n\nTODO: using max(task-\u003eprev_utime, derived utime) works for now, but a more\ngeneric solution is to implement cputime_max() and use the cputime_gt()\nfunction for comparison.\n\nReported-by: spencer@bluehost.com\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "950bbabb5a804690a0201190de5c22837f72f83f",
      "tree": "0d198ac02244138936acdf201c80aa4cd2da0bbc",
      "parents": [
        "add0d4dfd660e9e4fd0af3eac3cad23583c9558f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Sep 02 14:35:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 02 19:21:38 2008 -0700"
      },
      "message": "pid_ns: (BUG 11391) change -\u003echild_reaper when init-\u003egroup_leader exits\n\nWe don\u0027t change pid_ns-\u003echild_reaper when the main thread of the\nsubnamespace init exits.  As Robert Rex \u003crobert.rex@exasol.com\u003e pointed\nout this is wrong.\n\nYes, the re-parenting itself works correctly, but if the reparented task\nexits it needs -\u003eparent-\u003ensproxy-\u003epid_ns in do_notify_parent(), and if the\nmain thread is zombie its -\u003ensproxy was already cleared by\nexit_task_namespaces().\n\nIntroduce the new function, find_new_reaper(), which finds the new\n-\u003eparent for the re-parenting and changes -\u003echild_reaper if needed.  Kill\nthe now unneeded exit_child_reaper().\n\nAlso move the changing of -\u003echild_reaper from zap_pid_ns_processes() to\nfind_new_reaper(), this consolidates the games with -\u003echild_reaper and\nmakes it stable under tasklist_lock.\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d11391\n\nReported-by: Robert Rex \u003crobert.rex@exasol.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2633f0e57b1127f4060d70bf460140dc9bb19386",
      "tree": "db67beb9715fee165f8c8baaee47fc023b26dceb",
      "parents": [
        "74870172824a78640ec4f03058d9bd35dfa08618"
      ],
      "author": {
        "name": "Steve VanDeBogart",
        "email": "vandebo-lkml@NerdBox.Net",
        "time": "Tue Aug 26 15:14:36 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Aug 27 09:10:09 2008 +0200"
      },
      "message": "exit signals: use of uninitialized field notify_count\n\ntask-\u003esignal-\u003enotify_count is only initialized if\ntask-\u003esignal-\u003egroup_exit_task is not NULL.  Reorder a conditional so\nthat uninitialised memory is not used.  Found by Valgrind.\n\nSigned-off-by: Steve VanDeBogart \u003cvandebo-lkml@nerdbox.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5c7edcd7ee6b77b88252fe4096dce1a46a60c829",
      "tree": "4936df589df33c671e2e98ea45b89e7f45278f61",
      "parents": [
        "1e24b15b267293567a8d752721c7ae63f281325a"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Thu Jul 31 02:04:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 12:01:11 2008 -0700"
      },
      "message": "tracehook: fix exit_signal\u003d0 case\n\nMy commit 2b2a1ff64afbadac842bbc58c5166962cf4f7664 introduced a regression\n(sorry about that) for the odd case of exit_signal\u003d0 (e.g. clone_flags\u003d0).\nThis is not a normal use, but it\u0027s used by a case in the glibc test suite.\n\nDying with exit_signal\u003d0 sends no signal, but it\u0027s supposed to wake up a\nparent\u0027s blocked wait*() calls (unlike the delayed_group_leader case).\nThis fixes tracehook_notify_death() and its caller to distinguish a\n\"signal 0\" wakeup from the delayed_group_leader case (with no wakeup).\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nTested-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5995477ab7f3522c497c9c4a1c55373e9d655574",
      "tree": "a147fb61642a7ac5441855964eb97a2ff1e37202",
      "parents": [
        "605ccb73f6a1c891a16268b3a2923208fc637958"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "righi.andrea@gmail.com",
        "time": "Sun Jul 27 17:29:15 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 27 09:58:20 2008 -0700"
      },
      "message": "task IO accounting: improve code readability\n\nPut all i/o statistics in struct proc_io_accounting and use inline functions to\ninitialize and increment statistics, removing a lot of single variable\nassignments.\n\nThis also reduces the kernel size as following (with CONFIG_TASK_XACCT\u003dy and\nCONFIG_TASK_IO_ACCOUNTING\u003dy).\n\n    text    data     bss     dec     hex filename\n   11651       0       0   11651    2d83 kernel/exit.o.before\n   11619       0       0   11619    2d63 kernel/exit.o.after\n   10886     132     136   11154    2b92 kernel/fork.o.before\n   10758     132     136   11026    2b12 kernel/fork.o.after\n\n 3082029  807968 4818600 8708597  84e1f5 vmlinux.o.before\n 3081869  807968 4818600 8708437  84e155 vmlinux.o.after\n\nSigned-off-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f2da1e7d0330395e5e9e350b879b98a1ea495df",
      "tree": "adc01ced45bb1de10fe58511e7143bbbd138a192",
      "parents": [
        "8bb79224b87aab92071e94d46e70bd160d89bf34"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 10 20:44:54 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:20 2008 -0400"
      },
      "message": "[PATCH] kill altroot\n\nlong overdue...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2b2a1ff64afbadac842bbc58c5166962cf4f7664",
      "tree": "660640eb95117ce6f7436331f23f73805abced10",
      "parents": [
        "fa00b80b3c41a845b3d56f866fb40a2e98754c51"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:09 2008 -0700"
      },
      "message": "tracehook: death\n\nThis moves the ptrace logic in task death (exit_notify) into tracehook.h\ninlines.  Some code is rearranged slightly to make things nicer.  There is\nno change, only cleanup.\n\nThere is one hook called with the tasklist_lock write-locked, as ptrace\nneeds.  There is also a new hook called after exit_state changes and\nwithout locks.  This is a better place for tracing work to be in the\nfuture, since it doesn\u0027t delay the whole system with locking.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: 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": "dae33574dcf5211e1f43c7e45fa29f73ba3e00cb",
      "tree": "090eb4af17451836fb39cebf57fbee64a6bd23b5",
      "parents": [
        "daded34be96b1975ff8539ff62ad8b158ce7d842"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:08 2008 -0700"
      },
      "message": "tracehook: release_task\n\nThis moves the ptrace-related logic from release_task into tracehook.h and\nptrace.h inlines.  It provides clean hooks both before and after locking\ntasklist_lock, for future tracing logic to do more cleanup without the\nlock.\n\nThis also changes release_task() itself in the rare \"zap_leader\" case to\nset the leader to EXIT_DEAD before iterating.  This maintains the\ninvariant that release_task() only ever handles a task in EXIT_DEAD.  This\nis a common-sense invariant that is already always true except in this one\narcane case of zombie leader whose parent ignores SIGCHLD.\n\nThis change is harmless and only costs one store in this one rare case.\nIt keeps the expected state more consisently sane, which is nicer when\ndebugging weirdness in release_task().  It also lets some future code in\nthe tracehook entry points rely on this invariant for bookkeeping.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: 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": "30199f5a46aee204bf437a4f5b0740f3efe448b7",
      "tree": "9855ecf45727f6c41e9d75d4a5ac68c35546c14d",
      "parents": [
        "ff1188646c6870f336e910fb894eeed74f50471f"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:08 2008 -0700"
      },
      "message": "tracehook: exit\n\nThis moves the PTRACE_EVENT_EXIT tracing into a tracehook.h inline,\ntracehook_report_exec().  The change has no effect, just clean-up.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: 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": "297c5d92634c809cef23d73e7b2556f2528ff7e2",
      "tree": "d006fa29daa24242c64cff3b66dd75fbb0003b0f",
      "parents": [
        "0c18d7a5df82524e634637c3aec24d4cba096442"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "righi.andrea@gmail.com",
        "time": "Fri Jul 25 01:48:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "task IO accounting: provide distinct tgid/tid I/O statistics\n\nReport per-thread I/O statistics in /proc/pid/task/tid/io and aggregate\nparent I/O statistics in /proc/pid/io.  This approach follows the same\nmodel used to account per-process and per-thread CPU times.\n\nAs a practial application, this allows for example to quickly find the top\nI/O consumer when a process spawns many child threads that perform the\nactual I/O work, because the aggregated I/O statistics can always be found\nin /proc/pid/io.\n\n[ Oleg Nesterov points out that we should check that the task is still\n  alive before we iterate over the threads, but also says that we can do\n  that fixup on top of this later.  - Linus ]\n\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrea Righi \u003crighi.andrea@gmail.com\u003e\nCc: Matt Heaton \u003cmatt@hostmonster.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nAcked-by-with-comments: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a94e2d408eaedbd85aae259621d46fafc10479a2",
      "tree": "d853f7b2e183875c6ad90fb6ab38e084b037d043",
      "parents": [
        "182c515fd2a942623aed4e4e0e0b37fe96571b05"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:40 2008 -0700"
      },
      "message": "coredump: kill mm-\u003ecore_done\n\nNow that we have core_state-\u003edumper list we can use it to wake up the\nsub-threads waiting for the coredump completion.\n\nThis uglifies the code and .text grows by 47 bytes, but otoh mm_struct\nlessens by sizeof(struct completion).  Also, with this change we can\ndecouple exit_mm() from the coredumping code.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "b564daf806d492dd4f7afe9b6c83b8d35d137669",
      "tree": "fbd6d186035b9a0a270fca97887da5d6b106a60c",
      "parents": [
        "9d5b327bf198d2720666de958dcc2ae219d86952"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:40 2008 -0700"
      },
      "message": "coredump: construct the list of coredumping threads at startup time\n\nbinfmt-\u003ecore_dump() has to iterate over the all threads in system in order\nto find the coredumping threads and construct the list using the\nGFP_ATOMIC allocations.\n\nWith this patch each thread allocates the list node on exit_mm()\u0027s stack and\nadds itself to the list.\n\nThis allows us to do further changes:\n\n\t- simplify -\u003ecore_dump()\n\n\t- change exit_mm() to clear -\u003emm first, then wait for -\u003ecore_done.\n\t  this makes the coredumping process visible to oom_kill\n\n\t- kill mm-\u003ecore_done\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "c5f1cc8c1828486a61ab3e575da6e2c62b34d399",
      "tree": "9cc88e7d1dae063482e1e9117ded747578cbd7ad",
      "parents": [
        "8cd9c249128a59e8e833d454a784b0cbd338d468"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "coredump: turn core_state-\u003enr_threads into atomic_t\n\nTurn core_state-\u003enr_threads into atomic_t and kill now unneeded\ndown_write(\u0026mm-\u003emmap_sem) in exit_mm().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "999d9fc1670bc082928b93b11d1f2e0e417d973c",
      "tree": "e540e7fd2fab970ba2be5e39ac9f8282a373bc24",
      "parents": [
        "32ecb1f26dd50eeaac4e3f4dea4541c97848e459"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "coredump: move mm-\u003ecore_waiters into struct core_state\n\nMove mm-\u003ecore_waiters into \"struct core_state\" allocated on stack.  This\nshrinks mm_struct a little bit and allows further changes.\n\nThis patch mostly does s/core_waiters/core_state.  The only essential\nchange is that coredump_wait() must clear mm-\u003ecore_state before return.\n\nThe coredump_wait()\u0027s path is uglified and .text grows by 30 bytes, this\nis fixed by the next patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "32ecb1f26dd50eeaac4e3f4dea4541c97848e459",
      "tree": "4c2f3b6af9ff6babf2f395432de8e870508f2ec3",
      "parents": [
        "24d5288f06ed8b3a368eba967d587cdb012dfdf7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "coredump: turn mm-\u003ecore_startup_done into the pointer to struct core_state\n\nmm-\u003ecore_startup_done points to \"struct completion startup_done\" allocated\non the coredump_wait()\u0027s stack.  Introduce the new structure, core_state,\nwhich holds this \"struct completion\".  This way we can add more info\nvisible to the threads participating in coredump without enlarging\nmm_struct.\n\nNo changes in affected .o files.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "7b34e4283c685f5cc6ba6d30e939906eee0d4bcf",
      "tree": "6822edd5c63db79e97b8c5379a18a058bc5405ff",
      "parents": [
        "3d749b9e676b26584a47e75c235aa6f69d0697ae"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:39 2008 -0700"
      },
      "message": "introduce PF_KTHREAD flag\n\nIntroduce the new PF_KTHREAD flag to mark the kernel threads.  It is set\nby INIT_TASK() and copied to the forked childs (we could set it in\nkthreadd() along with PF_NOFREEZE instead).\n\ndaemonize() was changed as well.  In that case testing of PF_KTHREAD is\nracy, but daemonize() is hopeless anyway.\n\nThis flag is cleared in do_execve(), before search_binary_handler().\nProbably not the best place, we can do this in exec_mmap() or in\nstart_thread(), or clear it along with PF_FORKNOEXEC.  But I think this\ndoesn\u0027t matter in practice, and if do_execve() fails kthread should die\nsoon.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "3854a771821c970065e3203a0b40ddc4101538cc",
      "tree": "b6f56b8d426c4a9682dfc8605a08a5c60f96a599",
      "parents": [
        "100360f03077663b7bef3af44805b6cf700c3bee"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 25 01:47:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:38 2008 -0700"
      },
      "message": "__exit_signal: don\u0027t take rcu lock\n\nThere is no reason for rcu_read_lock() in __exit_signal().  tsk-\u003esighand\ncan only be changed if tsk does exec, obviously this is not possible.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "666f164f4fbfa78bd00fb4b74788b42a39842c64",
      "tree": "27c6a77edbce3da0860b5bd05cf3a7a842140c2c",
      "parents": [
        "14dd0b81414a58caf0296dbeace016bb0a5d11ab"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Tue Apr 08 23:12:30 2008 -0700"
      },
      "committer": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Jul 16 18:02:34 2008 -0700"
      },
      "message": "fix dangling zombie when new parent ignores children\n\nThis fixes an arcane bug that we think was a regression introduced\nby commit b2b2cbc4b2a2f389442549399a993a8306420baf.  When a parent\nignores SIGCHLD (or uses SA_NOCLDWAIT), its children would self-reap\nbut they don\u0027t if it\u0027s using ptrace on them.  When the parent thread\nlater exits and ceases to ptrace a child but leaves other live\nthreads in the parent\u0027s thread group, any zombie children are left\ndangling.  The fix makes them self-reap then, as they would have\ndone earlier if ptrace had not been in use.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "14dd0b81414a58caf0296dbeace016bb0a5d11ab",
      "tree": "cbb81c1f73b13c41645ff01019d303e48a5ca7af",
      "parents": [
        "f470021adb9190819c03d6d8c5c860a17480aa6d"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Sun Mar 30 18:41:25 2008 -0700"
      },
      "committer": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Jul 16 18:02:34 2008 -0700"
      },
      "message": "do_wait: return security_task_wait() error code in place of -ECHILD\n\nThis reverts the effect of commit f2cc3eb133baa2e9dc8efd40f417106b2ee520f3\n\"do_wait: fix security checks\".  That change reverted the effect of commit\n73243284463a761e04d69d22c7516b2be7de096c.  The rationale for the original\ncommit still stands.  The inconsistent treatment of children hidden by\nptrace was an unintended omission in the original change and in no way\ninvalidates its purpose.\n\nThis makes do_wait return the error returned by security_task_wait()\n(usually -EACCES) in place of -ECHILD when there are some children the\ncaller would be able to wait for if not for the permission failure.  A\npermission error will give the user a clue to look for security policy\nproblems, rather than for mysterious wait bugs.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "f470021adb9190819c03d6d8c5c860a17480aa6d",
      "tree": "9e5c2808138624e272b562a502cfd035ae59c268",
      "parents": [
        "98abed02007b19bbfd68b6d06a5485afc3eeb01b"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Mon Mar 24 18:36:23 2008 -0700"
      },
      "committer": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Jul 16 18:02:33 2008 -0700"
      },
      "message": "ptrace children revamp\n\nptrace no longer fiddles with the children/sibling links, and the\nold ptrace_children list is gone.  Now ptrace, whether of one\u0027s own\nchildren or another\u0027s via PTRACE_ATTACH, just uses the new ptraced\nlist instead.\n\nThere should be no user-visible difference that matters.  The only\nchange is the order in which do_wait() sees multiple stopped\nchildren and stopped ptrace attachees.  Since wait_task_stopped()\nwas changed earlier so it no longer reorders the children list, we\nalready know this won\u0027t cause any new problems.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "98abed02007b19bbfd68b6d06a5485afc3eeb01b",
      "tree": "3f0091b409592d74d56bb53847566fb32aaa0bfa",
      "parents": [
        "33af79d12e0fa25545d49e86afc67ea8ad5f2f40"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Mar 19 19:24:59 2008 -0700"
      },
      "committer": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed Jul 16 18:02:33 2008 -0700"
      },
      "message": "do_wait reorganization\n\nThis breaks out the guts of do_wait into three subfunctions.\nThe control flow is less nonobvious without so much goto.\ndo_wait_thread and ptrace_do_wait contain the main work of the outer loop.\nwait_consider_task contains the main work of the inner loop.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "da9cbc87395308a21465bd25441297bbba0477e1",
      "tree": "fabea3326cea434c0011fa00f3eb57854162117c",
      "parents": [
        "b984679efe1a616ec4ac919dba08286d71593900"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jun 30 20:42:08 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:14 2008 +0200"
      },
      "message": "block: blkdev.h cleanup, move iocontext stuff to iocontext.h\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "da7978b0348d497688541e2d2f5739aa2a2c334f",
      "tree": "f4f55bf4293ff203f598e7a57959da1c5a7ad295",
      "parents": [
        "dfc7064500061677720fa26352963c772d3ebe6b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri May 23 13:04:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "signals: fix sigqueue_free() vs __exit_signal() race\n\n__exit_signal() does flush_sigqueue(tsk-\u003epending) outside of -\u003esiglock.\nThis can race with another thread doing sigqueue_free(), we can free the\nsame SIGQUEUE_PREALLOC sigqueue twice or corrupt the pending-\u003elist.\n\nNote that even sys_exit_group() can trigger this race, not only\nsys_timer_delete().\n\nMove the callsite of flush_sigqueue(tsk-\u003epending) under -\u003esiglock.\n\nThis patch doesn\u0027t touch flush_sigqueue(-\u003eshared_pending) below, it is\ncalled when there are no other threads which can play with signals, and\nsigqueue_free() can\u0027t be used outside of our thread group.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "9f3acc3140444a900ab280de942291959f0f615d",
      "tree": "0d7f3f9698071ff90fb9a127a4c6e86e1c37c945",
      "parents": [
        "a2dcb44c3c5a8151d2d9f6ac8ad0789efcdbe184"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Apr 24 07:44:08 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 01 13:08:16 2008 -0400"
      },
      "message": "[PATCH] split linux/file.h\n\nInitial splitoff of the low-level stuff; taken to fdtable.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7d8da0962eaee30b4a380ded177349bfbdd6ac46",
      "tree": "cfbdb6d94922264e7e06892275f1e4d5a29017a6",
      "parents": [
        "83beaf3c6c75b36b7c9be7f555c8cf7797842cc5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:54:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:49 2008 -0700"
      },
      "message": "pids: __set_special_pids: use change_pid() helper\n\nUse change_pid() instead of detach_pid() + attach_pid() in\n__set_special_pids().\n\nThis way task_session() is not NULL in between.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc:  \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\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": "53b6f9fbd3b63af14b4f6268e8b5b80d178d05bc",
      "tree": "93a5bd26974e07a3d7fa20dc17c8b70daacc1d85",
      "parents": [
        "2800d8d19e51414403df8144eaa214bb03400b87"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:53:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:38 2008 -0700"
      },
      "message": "ptrace: introduce ptrace_reparented() helper\n\nAdd another trivial helper for the sake of grep.  It also auto-documents the\nfact that -\u003eparent !\u003d real_parent implies -\u003eptrace.\n\nNo functional changes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "2800d8d19e51414403df8144eaa214bb03400b87",
      "tree": "d5b01302c7109d7ffdc140ce8d6e31cebcdb233a",
      "parents": [
        "376e1d2531860358c8a79fecf5f4f42994d03c4d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:53:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:38 2008 -0700"
      },
      "message": "document de_thread() with exit_notify() connection\n\nAdd a couple of small comments, it is not easy to see what this code does.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "376e1d2531860358c8a79fecf5f4f42994d03c4d",
      "tree": "7d90aa39ee7250e1ba0593fa927118b4a9c911e9",
      "parents": [
        "d839fd4d2e95a5fbc4d50aa9d17eed6a5f2094e6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:53:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:38 2008 -0700"
      },
      "message": "reparent_thread: use same_thread_group()\n\nTrivial, use same_thread_group() in reparent_thread().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "d839fd4d2e95a5fbc4d50aa9d17eed6a5f2094e6",
      "tree": "bfeccf3201208a9ce0e994cff9eacdc4647002a6",
      "parents": [
        "5a8da0ea82db6fa9737041381079fd16f25dcce2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:53:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:38 2008 -0700"
      },
      "message": "ptrace: introduce task_detached() helper\n\nexit.c has numerous \"-\u003eexit_signal \u003d\u003d -1\" comparisons, this check is subtle\nand deserves a helper.  Imho makes the code more parseable for humans.  At\nleast it\u0027s surely more greppable.\n\nAlso, a couple of whitespace cleanups. No functional changes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "bfc4b0890af566940de6e7aeb4b5faf46d3c3513",
      "tree": "d3c0d7ad6e3d619345acf7130f053514177bf5c7",
      "parents": [
        "573cf9ad72c13750e86c91de43477e9dfb440523"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:52:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "signals: do_group_exit(): use signal_group_exit() more consistently\n\ndo_group_exit() checks SIGNAL_GROUP_EXIT to avoid taking sighand-\u003esiglock.\nSince ed5d2cac114202fe2978a9cbcab8f5032796d538 exec() doesn\u0027t set this\nflag, we should use signal_group_exit().\n\nThis is not needed for correctness, but can speedup the multithreaded exec\nand makes the code more consistent.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "cf475ad28ac35cc9ba612d67158f29b73b38b05d",
      "tree": "2c7cd568d00357bd42643ea602884e731cc24f26",
      "parents": [
        "29486df325e1fe6e1764afcb19e3370804c2b002"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Apr 29 01:00:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "cgroups: add an owner to the mm_struct\n\nRemove the mem_cgroup member from mm_struct and instead adds an owner.\n\nThis approach was suggested by Paul Menage.  The advantage of this approach\nis that, once the mm-\u003eowner is known, using the subsystem id, the cgroup\ncan be determined.  It also allows several control groups that are\nvirtually grouped by mm_struct, to exist independent of the memory\ncontroller i.e., without adding mem_cgroup\u0027s for each controller, to\nmm_struct.\n\nA new config option CONFIG_MM_OWNER is added and the memory resource\ncontroller selects this config option.\n\nThis patch also adds cgroup callbacks to notify subsystems when mm-\u003eowner\nchanges.  The mm_cgroup_changed callback is called with the task_lock() of\nthe new task held and is called just prior to changing the mm-\u003eowner.\n\nI am indebted to Paul Menage for the several reviews of this patchset and\nhelping me make it lighter and simpler.\n\nThis patch was tested on a powerpc box, it was compiled with both the\nMM_OWNER config turned on and off.\n\nAfter the thread group leader exits, it\u0027s moved to init_css_state by\ncgroup_exit(), thus all future charges from runnings threads would be\nredirected to the init_css_set\u0027s subsystem.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e,\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0be3d32b05d3fea2fcdbbb81a39dac2a7163169",
      "tree": "5794ce6a8befbce82cd3e44ff15fbf3bb5f2f3bf",
      "parents": [
        "3b1163006332302117b1b2acf226d4014ff46525"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mempolicy: rename mpol_free to mpol_put\n\nThis is a change that was requested some time ago by Mel Gorman.  Makes sense\nto me, so here it is.\n\nNote: I retain the name \"mpol_free_shared_policy()\" because it actually does\nfree the shared_policy, which is NOT a reference counted object.  However, ...\n\nThe mempolicy object[s] referenced by the shared_policy are reference counted,\nso mpol_put() is used to release the reference held by the shared_policy.  The\nmempolicy might not be freed at this time, because some task attached to the\nshared object associated with the shared policy may be in the process of\nallocating a page based on the mempolicy.  In that case, the task performing\nthe allocation will hold a reference on the mempolicy, obtained via\nmpol_shared_policy_lookup().  The mempolicy will be freed when all tasks\nholding such a reference have called mpol_put() for the mempolicy.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3b1253880b7a9e6db54b943b2d40bcf2202f58ab",
      "tree": "5301be7b4d4310faa8db5a0d027b81421e36570e",
      "parents": [
        "fd8328be874f4190a811c58cd4778ec2c74d2c05"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 22 05:31:30 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 25 09:23:59 2008 -0400"
      },
      "message": "[PATCH] sanitize unshare_files/reset_files_struct\n\n* let unshare_files() give caller the displaced files_struct\n* don\u0027t bother with grabbing reference only to drop it in the\n  caller if it hadn\u0027t been shared in the first place\n* in that form unshare_files() is trivially implemented via\n  unshare_fd(), so we eliminate the duplicate logics in fork.c\n* reset_files_struct() is not just only called for current;\n  it will break the system if somebody ever calls it for anything\n  else (we can\u0027t modify -\u003efiles of somebody else).  Lose the\n  task_struct * argument.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fd8328be874f4190a811c58cd4778ec2c74d2c05",
      "tree": "b44ae8e99ce96a1a4739b04d4d1a23c40ab8b163",
      "parents": [
        "6b335d9c80d7f3c2a3f6545f664ae9007a0f3821"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 22 05:11:59 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 25 09:23:53 2008 -0400"
      },
      "message": "[PATCH] sanitize handling of shared descriptor tables in failing execve()\n\n* unshare_files() can fail; doing it after irreversible actions is wrong\n  and de_thread() is certainly irreversible.\n* since we do it unconditionally anyway, we might as well do it in do_execve()\n  and save ourselves the PITA in binfmt handlers, etc.\n* while we are at it, binfmt_som actually leaked files_struct on failure.\n\nAs a side benefit, unshare_files(), put_files_struct() and reset_files_struct()\nbecome unexported.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1ec7f1ddbe5ba49f7b10c3b129d6d5c90c43526c",
      "tree": "c5bd86c748fe42b14698aa29a5b4dadf981cfcfd",
      "parents": [
        "9b4f526cdc0f95f635607dfba6ac788b3deca188"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 22 05:35:42 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 22 19:55:09 2008 -0400"
      },
      "message": "[PATCH] get rid of __exit_files(), __exit_fs() and __put_fs_struct()\n\nThe only reason to have separated __...() for those was to keep them inlined\nfor local users in exit.c.  Since Alexey removed the inline on those, there\u0027s\nno reason whatsoever to keep them around; just collapse with normal variants.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "54a015104136974262afa4b8ddd943ea70dec8a2",
      "tree": "713f0c1f4d0afe62e5c568a424e309f70388cf7f",
      "parents": [
        "783e391b7b5b273cd20856d8f6f4878da8ec31b3"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Thu Apr 10 15:37:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 10 17:28:26 2008 -0700"
      },
      "message": "asmlinkage_protect replaces prevent_tail_call\n\nThe prevent_tail_call() macro works around the problem of the compiler\nclobbering argument words on the stack, which for asmlinkage functions\nis the caller\u0027s (user\u0027s) struct pt_regs.  The tail/sibling-call\noptimization is not the only way that the compiler can decide to use\nstack argument words as scratch space, which we have to prevent.\nOther optimizations can do it too.\n\nUntil we have new compiler support to make \"asmlinkage\" binding on the\ncompiler\u0027s own use of the stack argument frame, we have work around all\nthe manifestations of this issue that crop up.\n\nMore cases seem to be prevented by also keeping the incoming argument\nvariables live at the end of the function.  This makes their original\nstack slots attractive places to leave those variables, so the compiler\ntends not clobber them for something else.  It\u0027s still no guarantee, but\nit handles some observed cases that prevent_tail_call() did not.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6efcae460186c0c1c94afff58a92784e1fc0d10b",
      "tree": "da67b86b65e8dde1f52245e25b1889f87cc96b4e",
      "parents": [
        "84c6f6046c5a2189160a8f0dca8b90427bf690ea"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Sat Mar 08 11:41:22 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Mar 08 11:54:00 2008 -0800"
      },
      "message": "Fix waitid si_code regression\n\nIn commit ee7c82da830ea860b1f9274f1f0cdf99f206e7c2 (\"wait_task_stopped:\nsimplify and fix races with SIGCONT/SIGKILL/untrace\"), the magic (short)\ncast when storing si_code was lost in wait_task_stopped.  This leaks the\nin-kernel CLD_* values that do not match what userland expects.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "821c7de7194e77afee1a69d50830a329a6d9af9f",
      "tree": "6755cb5f57822c142b228ad8ca817c18b8f31884",
      "parents": [
        "05e83df624fe682bb8571cdb2c6d5284a99c3066"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Mar 02 21:44:44 2008 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 03 14:53:16 2008 -0800"
      },
      "message": "exit_notify: fix kill_orphaned_pgrp() usage with mt exit\n\n1. exit_notify() always calls kill_orphaned_pgrp(). This is wrong, we\n   should do this only when the whole process exits.\n\n2. exit_notify() uses \"current\" as \"ignored_task\", obviously wrong.\n   Use -\u003egroup_leader instead.\n\nTest case:\n\n\tvoid hup(int sig)\n\t{\n\t\tprintf(\"HUP received\\n\");\n\t}\n\n\tvoid *tfunc(void *arg)\n\t{\n\t\tsleep(2);\n\t\tprintf(\"sub-thread exited\\n\");\n\t\treturn NULL;\n\t}\n\n\tint main(int argc, char *argv[])\n\t{\n\t\tif (!fork()) {\n\t\t\tsignal(SIGHUP, hup);\n\t\t\tkill(getpid(), SIGSTOP);\n\t\t\texit(0);\n\t\t}\n\n\t\tpthread_t thr;\n\t\tpthread_create(\u0026thr, NULL, tfunc, NULL);\n\n\t\tsleep(1);\n\t\tprintf(\"main thread exited\\n\");\n\t\tsyscall(__NR_exit, 0);\n\n\t\treturn 0;\n\t}\n\noutput:\n\n\tmain thread exited\n\tHUP received\n\tHangup\n\nWith this patch the output is:\n\n\tmain thread exited\n\tsub-thread exited\n\tHUP received\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05e83df624fe682bb8571cdb2c6d5284a99c3066",
      "tree": "c55df1d1258f2fae4069aa7954a2c74ba1831192",
      "parents": [
        "f49ee505b1ecb5960984880740f09aba87f870dc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Mar 02 21:44:42 2008 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 03 14:53:16 2008 -0800"
      },
      "message": "will_become_orphaned_pgrp: partially fix insufficient -\u003eexit_state check\n\np-\u003eexit_state !\u003d 0 doesn\u0027t mean this process is dead, it may have\nsub-threads.  Change the code to use \"p-\u003eexit_state \u0026\u0026 thread_group_empty(p)\"\ninstead.\n\nWithout this patch, ^Z doesn\u0027t deliver SIGTSTP to the foreground process\nif the main thread has exited.\n\nHowever, the new check is not perfect either.  There is a window when\nexit_notify() drops tasklist and before release_task().  Suppose that\nthe last (non-leader) thread exits.  This means that entire group exits,\nbut thread_group_empty() is not true yet.\n\nAs Eric pointed out, is_global_init() is wrong as well, but I did not\ndare to do other changes.\n\nJust for the record, has_stopped_jobs() is absolutely wrong too.  But we\ncan\u0027t fix it now, we should first fix SIGNAL_STOP_STOPPED issues.\n\nEven with this patch ^Z doesn\u0027t play well with the dead main thread.\nThe task is stopped correctly but do_wait(WSTOPPED) won\u0027t see it.  This\nis another unrelated issue, will be (hopefully) fixed separately.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f49ee505b1ecb5960984880740f09aba87f870dc",
      "tree": "2ff1289ecd2741d3f9d3a298662bc9b5a6266a3d",
      "parents": [
        "5ce2087ed0eb424e0889bdc9102727f65d2ecdde"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Mar 02 21:44:40 2008 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 03 14:53:16 2008 -0800"
      },
      "message": "introduce kill_orphaned_pgrp() helper\n\nFactor out the common code in reparent_thread() and exit_notify().\n\nNo functional changes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ac08c39a16f72c2d3e845cb6849a1392fa03e80",
      "tree": "d7603571e9ab3ea4b57b7901211320e48d0c5ed8",
      "parents": [
        "5dd784d04924be5d8bc066aded0ec3274b20e612"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:38 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Use struct path in fs_struct\n\n* Use struct path in fs_struct.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ad5b3a505e68cfdc342933d6e0fc0eaa5e0a4f7",
      "tree": "6715ffd8df509d3d53dea581bb97418a21bc7cbc",
      "parents": [
        "fc9b52cd8f5f459b88adcf67c47668425ae31a78"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Fri Feb 08 04:19:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:31 2008 -0800"
      },
      "message": "kernel: remove fastcall in kernel/*\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nAcked-by: 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": "6c5f3e7b43300508fe3947ff3cfff0f86043bb57",
      "tree": "9843b8897ec3357b09f62bb6423cd4753e1d4516",
      "parents": [
        "fea9d175545b38cb3e84569400419eb81bc90fa3"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Feb 08 04:19:20 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:29 2008 -0800"
      },
      "message": "Pidns: make full use of xxx_vnr() calls\n\nSome time ago the xxx_vnr() calls (e.g.  pid_vnr or find_task_by_vpid) were\n_all_ converted to operate on the current pid namespace.  After this each call\nlike xxx_nr_ns(foo, current-\u003ensproxy-\u003epid_ns) is nothing but a xxx_vnr(foo)\none.\n\nSwitch all the xxx_nr_ns() callers to use the xxx_vnr() calls where\nappropriate.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nReviewed-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "161550d74c07303ffa6187ba776f62df5a906a21",
      "tree": "c47ece377d76141ba48b3e7ffd2d7dbd31c906e1",
      "parents": [
        "5dee1707dfbfc55eb7569b9ae5abaf932bd4c377"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Feb 08 04:19:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "pid: sys_wait... fixes\n\nThis modifies do_wait and eligible child to take a pair of enum pid_type\nand struct pid *pid to precisely specify what set of processes are eligible\nto be waited for, instead of the raw pid_t value from sys_wait4.\n\nThis fixes a bug in sys_waitid where you could not wait for children in\njust process group 1.\n\nThis fixes a pid namespace crossing case in eligible_child.  Allowing us to\nwait for a processes in our current process group even if our current\nprocess group \u003d\u003d 0.\n\nThis allows the no child with this pid case to be optimized.  This allows\nus to optimize the pid membership test in eligible child to be optimized.\n\nThis even closes a theoretical pid wraparound race where in a threaded\nparent if two threads are waiting for the same child and one thread picks\nup the child and the pid numbers wrap around and generate another child\nwith that same pid before the other thread is scheduled (teribly insanely\nunlikely) we could end up waiting on the second child with the same pid#\nand not discover that the specific child we were waiting for has exited.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dee1707dfbfc55eb7569b9ae5abaf932bd4c377",
      "tree": "6e162f61f9645f790aa14cb4146882b918bb0286",
      "parents": [
        "6806aac6d282d58b97763f5e17e2787e62c3b440"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:13 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "move the related code from exit_notify() to exit_signals()\n\nThe previous bugfix was not optimal, we shouldn\u0027t care about group stop\nwhen we are the only thread or the group stop is in progress.  In that case\nnothing special is needed, just set PF_EXITING and return.\n\nAlso, take the related \"TIF_SIGPENDING re-targeting\" code from exit_notify().\n\nSo, from the performance POV the only difference is that we don\u0027t trust\n!signal_pending() until we take -\u003esiglock.  But this in fact fixes another\n___pure___ theoretical minor race.  __group_complete_signal() finds the\ntask without PF_EXITING and chooses it as the target for signal_wake_up().\nBut nothing prevents this task from exiting in between without noticing the\npending signal and thus unpredictably delaying the actual delivery.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\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": "d12619b5ff5664623524aef796514d1946ea3b4a",
      "tree": "23140ca0148f9154440d3056e2040d8df468a24b",
      "parents": [
        "430c623121ea88ca80595c99fdc63b7f8a803ae5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:12 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "fix group stop with exit race\n\ndo_signal_stop() counts all sub-thread and sets -\u003egroup_stop_count\naccordingly.  Every thread should decrement -\u003egroup_stop_count and stop,\nthe last one should notify the parent.\n\nHowever a sub-thread can exit before it notices the signal_pending(), or it\nmay be somewhere in do_exit() already.  In that case the group stop never\nfinishes properly.\n\nNote: this is a minimal fix, we can add some optimizations later.  Say we\ncan return quickly if thread_group_empty().  Also, we can move some signal\nrelated code from exit_notify() to exit_signals().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\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": "297bd42b15daed02453ff59ce6d31216a58b0398",
      "tree": "4b1fecc6e285c50d55961ed85e013419f5810164",
      "parents": [
        "8520d7c7f8611216e3b270becec95bb35b6899d4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:10 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "move daemonized kernel threads into the swapper\u0027s session\n\nDaemonized kernel threads run in the init\u0027s session. This doesn\u0027t match the\nbehaviour of kthread_create()\u0027ed threads, and this is one of the 2 reasons\nwhy we need a special hack in sys_setsid().\n\nNow that set_special_pids() was changed to use struct pid, not pid_t, we can\nuse init_struct_pid and set 0,0 special pids.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8520d7c7f8611216e3b270becec95bb35b6899d4",
      "tree": "77001e6830bb415590067e9d4be24cd8bdd36219",
      "parents": [
        "e4cc0a9c876d4d4eadaef97a2bff4a199946d202"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:09 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "teach set_special_pids() to use struct pid\n\nChange set_special_pids() to work with struct pid, not pid_t from global name\nspace. This again speedups and imho cleanups the code, also a preparation for\nthe next patch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c543f1ee08ea6c2176dbdc47df0d0f6357c88713",
      "tree": "ae2d4de96aabbafd3792316d14f40330ec64572d",
      "parents": [
        "3a515e4a62dbf7e4c213740268a5267faa69e5b2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "wait_task_zombie: remove -\u003eexit_state/exit_signal checks for WNOWAIT\n\nThe first \"p-\u003eexit_state !\u003d EXIT_ZOMBIE\" check doesn\u0027t make too much sense.\nThe exit_state was EXIT_ZOMBIE when the function was called, and another\nthread can change it to EXIT_DEAD right after the check.\n\nThe second condition is not possible, detached non-traced threads were already\nfiltered out by eligible_child(), we didn\u0027t drop tasklist since then.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "3a515e4a62dbf7e4c213740268a5267faa69e5b2",
      "tree": "51f98e662c80ca5de628f09c5eb24d18f1794f6c",
      "parents": [
        "f2cc3eb133baa2e9dc8efd40f417106b2ee520f3"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "wait_task_continued/zombie: don\u0027t use task_pid_nr_ns() lockless\n\nSurprise, the other two wait_task_*() functions also abuse the\ntask_pid_nr_ns() function, and may cause read-after-free or report nr \u003d\u003d 0\nin wait_task_continued().  wait_task_zombie() doesn\u0027t have this problem,\nbut it is still better to cache pid_t rather than call task_pid_nr_ns()\nthree times on the saved pid_namespace.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "f2cc3eb133baa2e9dc8efd40f417106b2ee520f3",
      "tree": "37b08158ee5296e79a61aad086be36c742825e3b",
      "parents": [
        "96fabbf55ae79826f2e8a86f4066d7e8834315ae"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "do_wait: fix security checks\n\nImho, the current usage of security_task_wait() is not logical.\n\nSuppose we have the single child p, and security_task_wait(p) return\n-EANY.  In that case waitpid(-1) returns this error.  Why? Isn\u0027t it\nbetter to return ECHLD? We don\u0027t really have reapable children.\n\nNow suppose that child was stolen by gdb.  In that case we find this\nchild on -\u003eptrace_children and set flag \u003d 1, but we don\u0027t check that the\nchild was denied.  So, do_wait(..., WNOHANG) returns 0, this doesn\u0027t\nmatch the behaviour above.  Without WNOHANG do_wait() blocks only to\nreturn the error later, when the child will be untraced.  Inho, really\nstrange.\n\nI think eligible_child() should return the error only if the child\u0027s pid\nwas requested explicitly, otherwise we should silently ignore the tasks\nwhich were nacked by security_task_wait().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96fabbf55ae79826f2e8a86f4066d7e8834315ae",
      "tree": "e4b3259a744a1e0c8fa477e3dfba02e4ea1993c8",
      "parents": [
        "1bad95c3bee183719e15eebffef66afc3fb3f8b0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "do_wait: cleanup delay_group_leader() usage\n\neligible_child() \u003d\u003d 2 means delay_group_leader().  With the previous patch\nthis only matters for EXIT_ZOMBIE task, we can move that special check to\nthe only place it is really needed.\n\nAlso, with this patch we don\u0027t skip security_task_wait() for the group\nleaders in a non-empty thread group.  I don\u0027t really understand the exact\nsemantics of security_task_wait(), but imho this change is a bugfix.\n\nAlso rearrange the code a bit to kill an ugly \"check_continued\" backdoor.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1bad95c3bee183719e15eebffef66afc3fb3f8b0",
      "tree": "b875db7096572a69f3906db631708d7e75e22f3f",
      "parents": [
        "20686a309aa98c518adbbd9b57cdbb1804143deb"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:03 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "wait_task_stopped(): remove unneeded delay_group_leader check\n\nwait_task_stopped() doesn\u0027t need the \"delay_group_leader\" parameter.  If\nthe child is not traced it must be a group leader.  With or without\nsubthreads -\u003egroup_stop_count \u003d\u003d 0 when the whole task is stopped.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Mika Penttila \u003cmika.penttila@kolumbus.fi\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": "9cbab8100538efdd93aeae6fc37787d986f2f558",
      "tree": "a34cf1b3d6bdb3b2bbede801a9acdb23d35903ff",
      "parents": [
        "ee7c82da830ea860b1f9274f1f0cdf99f206e7c2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "do_wait: factor out \"retval !\u003d 0\" checks\n\nEvery branch if the main \"if\" statement does the same code at the end.  Move\nit down.  Also, fix the indentation.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "ee7c82da830ea860b1f9274f1f0cdf99f206e7c2",
      "tree": "449477479b25ec73a1c2242723b3fb1c09cd936d",
      "parents": [
        "6405f7f4675884b671bee66678e1c2859bdb0e56"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "wait_task_stopped: simplify and fix races with SIGCONT/SIGKILL/untrace\n\nwait_task_stopped() has multiple races with SIGCONT/SIGKILL.  tasklist_lock\ndoes not pin the child in TASK_TRACED/TASK_STOPPED stated, almost all info\nreported (including exit_code) may be wrong.\n\nIn fact, the code under write_lock_irq(tasklist_lock) is not safe.  The child\nmay be PTRACE_DETACH\u0027ed at this time by another subthread, in that case it is\npossible we are no longer its -\u003eparent.\n\nChange wait_task_stopped() to take -\u003esiglock before inspecting the task.  This\nguarantees that the child can\u0027t resume and (for example) clear its\n-\u003eexit_code, so we don\u0027t need to use xchg(\u0026p-\u003eexit_code) and re-check.  The\nonly exception is ptrace_stop() which changes -\u003estate and -\u003eexit_code without\n-\u003esiglock held during abort.  But this can only happen if both the tracer and\nthe tracee are dying (coredump is in progress), we don\u0027t care.\n\nWith this patch wait_task_stopped() doesn\u0027t move the child to the end of\nthe -\u003eparent list on success.  This optimization could be restored, but\nin that case we have to take write_lock(tasklist) and do some nasty\nchecks.\n\nAlso change the do_wait() since we don\u0027t return EAGAIN any longer.\n\n[akpm@linux-foundation.org: fix up after Willy renamed everything]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "34a1738f7da0b3d28d4b066d03a78f46b8cab68f",
      "tree": "4e7312642adb1aab0ba9fa4f29b4912c9ee035d2",
      "parents": [
        "6b39c7bfbd1436836c0fb34c5b437fda1a7a3dd4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:18:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "kill my_ptrace_child()\n\nNow that my_ptrace_child() is trivial we can use the \"p-\u003eptrace \u0026 PT_PTRACED\"\ninline and simplify the corresponding logic in do_wait: we can\u0027t find the\nchild in TASK_TRACED state without PT_PTRACED flag set, ptrace_untrace()\neither sets TASK_STOPPED or wakes up the tracee.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b39c7bfbd1436836c0fb34c5b437fda1a7a3dd4",
      "tree": "60d3d9719eef3076527fcbf9c3cb362fe0f52d61",
      "parents": [
        "01b8b07a5d77d22e609267dcae74d15e3e9c5f13"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:18:58 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:26 2008 -0800"
      },
      "message": "kill PT_ATTACHED\n\nSince the patch\n\n\t\"Fix ptrace_attach()/ptrace_traceme()/de_thread() race\"\n\tcommit f5b40e363ad6041a96e3da32281d8faa191597b9\n\nwe set PT_ATTACHED and change child-\u003eparent \"atomically\" wrt task_list lock.\n\nThis means we can remove the checks like \"PT_ATTACHED \u0026\u0026 -\u003eparent !\u003d ptracer\"\nwhich were needed to catch the \"ptrace attach is in progress\" case.  We can\nalso remove the flag itself since nobody else uses it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a76fe8e50ee93a9d4a1badb1ec995852a6bcaf1",
      "tree": "57a6a1b8bdb101a1ac5fd54971bfe172de949da0",
      "parents": [
        "f10db6277dfd6dffb80b2182a256d35adb3134bc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Feb 06 01:37:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:04 2008 -0800"
      },
      "message": "do_wait: remove one \"else if\" branch\n\nMinor cleanup. We can remove one \"else if\" branch.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "ed5d2cac114202fe2978a9cbcab8f5032796d538",
      "tree": "aa9aaea1aa0945bd9159685d1b04897d105a90c9",
      "parents": [
        "f558b7e408026eb3c6afcd0e8fc1f7fe31195a6a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Feb 04 22:27:24 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:07 2008 -0800"
      },
      "message": "exec: rework the group exit and fix the race with kill\n\nAs Roland pointed out, we have the very old problem with exec.  de_thread()\nsets SIGNAL_GROUP_EXIT, kills other threads, changes -\u003egroup_leader and then\nclears signal-\u003eflags.  All signals (even fatal ones) sent in this window\n(which is not too small) will be lost.\n\nWith this patch exec doesn\u0027t abuse SIGNAL_GROUP_EXIT.  signal_group_exit(),\nthe new helper, should be used to detect exit_group() or exec() in progress.\nIt can have more users, but this patch does only strictly necessary changes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Robin Holt \u003cholt@sgi.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": "06c93e875747f3020d997220b3e7c98083acc7c3",
      "tree": "daed1cf5919f4f8acdbcc0c668a3bfee45b14c92",
      "parents": [
        "ef08cce81d9be38063ec7796e36f2b32bdf82ff2"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Sun Feb 03 16:22:12 2008 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sun Feb 03 16:22:12 2008 +0200"
      },
      "message": "Remove one useless extern declaration\n\nThe file exit.c contains one useless extern declaration of sem_exit().\nMoreover, it refers to nothing.\n\nThis trivial patch removes it.\n\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "338077e54e17e656da470a84724b773816207316",
      "tree": "79194e34d4ca5a454bf996640fa78c1964b727cc",
      "parents": [
        "e1abb39c60971590b6580c0d3a12119dcbad9c50"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 11:09:35 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:35:17 2007 -0500"
      },
      "message": "exit: Use task_is_*\n\nAlso restructure the loop in do_wait()\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "e6ceb32aa25fc33f21af84cc7a32fe289b3e860c",
      "tree": "6a7684a5ac0f841a0bb85ce3a679e5836bd0e2df",
      "parents": [
        "14816b1e2b0eb24ef41dbe37dcb558338e54a603"
      ],
      "author": {
        "name": "Scott James Remnant",
        "email": "scott@ubuntu.com",
        "time": "Wed Nov 28 16:22:07 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 29 09:24:55 2007 -0800"
      },
      "message": "wait_task_stopped(): pass correct exit_code to wait_noreap_copyout()\n\nIn wait_task_stopped() exit_code already contains the right value for the\nsi_status member of siginfo, and this is simply set in the non WNOWAIT\ncase.\n\nIf you call waitid() with a stopped or traced process, you\u0027ll get the signal\nin siginfo.si_status as expected -- however if you call waitid(WNOWAIT) at the\nsame time, you\u0027ll get the signal \u003c\u003c 8 | 0x7f\n\nPass it unchanged to wait_noreap_copyout(); we would only need to shift it\nand add 0x7f if we were returning it in the user status field and that\nisn\u0027t used for any function that permits WNOWAIT.\n\nSigned-off-by: Scott James Remnant \u003cscott@ubuntu.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c895078355b6b6e05c60aa205892526dd3390f0a",
      "tree": "922a0b9204b0cfcd5c59762f4d02e167d587ccd2",
      "parents": [
        "c2319540cd7330fa9066e5b9b84d357a2c8631a2"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Nov 28 16:21:24 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 29 09:24:52 2007 -0800"
      },
      "message": "wait_task_stopped(): don\u0027t use task_pid_nr_ns() lockless\n\nwait_task_stopped(WNOWAIT) does task_pid_nr_ns() without tasklist/rcu lock,\nwe can read an already freed memory.  Use the cached pid_t value.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nLooks-good-to: Roland McGrath \u003croland@redhat.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3474224e6a01924be40a8255636ea5522c1023a",
      "tree": "e190dfea1792d364b93b0fbfe45019a0e8cdad09",
      "parents": [
        "99fee6d7e5748d96884667a4628118f7fc130ea0"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Tue Nov 13 22:11:50 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 15 08:36:27 2007 -0800"
      },
      "message": "wait_task_stopped: Check p-\u003eexit_state instead of TASK_TRACED\n\nThe original meaning of the old test (p-\u003estate \u003e TASK_STOPPED) was\n\"not dead\", since it was before TASK_TRACED existed and before the\nstate/exit_state split.  It was a wrong correction in commit\n14bf01bb0599c89fc7f426d20353b76e12555308 to make this test for\nTASK_TRACED instead.  It should have been changed when TASK_TRACED\nwas introducted and again when exit_state was introduced.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Kees Cook \u003ckees@ubuntu.com\u003e\nAcked-by: Scott James Remnant \u003cscott@ubuntu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a39bc51691a0c8880b7d10fa7c2f034f3ba9a037",
      "tree": "6f74815a32b5344cbfc2b3eca6def411308c06fb",
      "parents": [
        "a24efe62dd165be7d03431cf936ae17d345fed69"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Thu Oct 18 23:41:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:56 2007 -0700"
      },
      "message": "Uninline fork.c/exit.c\n\nSave ~650 bytes here.\n\nadd/remove: 4/0 grow/shrink: 0/7 up/down: 430/-1088 (-658)\nfunction                                     old     new   delta\n__copy_fs_struct                               -     202    +202\n__put_fs_struct                                -     112    +112\n__exit_fs                                      -      58     +58\n__exit_files                                   -      58     +58\nexit_files                                    58       2     -56\nput_fs_struct                                112       5    -107\nexit_fs                                      161       2    -159\nsys_unshare                                  774     590    -184\ncopy_process                                4031    3840    -191\ndo_exit                                     1791    1597    -194\ncopy_fs_struct                               202       5    -197\n\nNo difference in lmbench lat_proc tests on 2-way Opteron 246.\nSmaaaal degradation on UP P4 (within errors).\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\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": "ba25f9dcc4ea6e30839fcab5a5516f2176d5bfed",
      "tree": "3123c03b25dd5c0cd24b6ab4fc16731217838157",
      "parents": [
        "9a2e70572e94e21e7ec4186702d045415422bda0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:43 2007 -0700"
      },
      "message": "Use helpers to obtain task pid in printks\n\nThe task_struct-\u003epid member is going to be deprecated, so start\nusing the helpers (task_pid_nr/task_pid_vnr/task_pid_nr_ns) in\nthe kernel.\n\nThe first thing to start with is the pid, printed to dmesg - in\nthis case we may safely use task_pid_nr(). Besides, printks produce\nmore (much more) than a half of all the explicit pid usage.\n\n[akpm@linux-foundation.org: git-drm went and changed lots of stuff]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a2e70572e94e21e7ec4186702d045415422bda0",
      "tree": "a6cd54dc559cbf6840dac4077f507a961486e21b",
      "parents": [
        "270f722d4d5f94b02fd48eed47e57917ab00a858"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:43 2007 -0700"
      },
      "message": "Isolate the explicit usage of signal-\u003epgrp\n\nThe pgrp field is not used widely around the kernel so it is now marked as\ndeprecated with appropriate comment.\n\nThe initialization of INIT_SIGNALS is trimmed because\na) they are set to 0 automatically;\nb) gcc cannot properly initialize two anonymous (the second one\n   is the one with the session) unions. In this particular case\n   to make it compile we\u0027d have to add some field initialized\n   right before the .pgrp.\n\nThis is the same patch as the 1ec320afdc9552c92191d5f89fcd1ebe588334ca one\n(from Cedric), but for the pgrp field.\n\nSome progress report:\n\nWe have to deprecate the pid, tgid, session and pgrp fields on struct\ntask_struct and struct signal_struct.  The session and pgrp are already\ndeprecated.  The tgid value is close to being such - the worst known usage\nin in fs/locks.c and audit code.  The pid field deprecation is mainly\nblocked by numerous printk-s around the kernel that print the tsk-\u003epid to\nlog.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b488893a390edfe027bae7a46e9af8083e740668",
      "tree": "c469a7f99ad01005a73011c029eb5e5d15454559",
      "parents": [
        "3eb07c8c8adb6f0572baba844ba2d9e501654316"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:40 2007 -0700"
      },
      "message": "pid namespaces: changes to show virtual ids to user\n\nThis is the largest patch in the set. Make all (I hope) the places where\nthe pid is shown to or get from user operate on the virtual pids.\n\nThe idea is:\n - all in-kernel data structures must store either struct pid itself\n   or the pid\u0027s global nr, obtained with pid_nr() call;\n - when seeking the task from kernel code with the stored id one\n   should use find_task_by_pid() call that works with global pids;\n - when showing pid\u0027s numerical value to the user the virtual one\n   should be used, but however when one shows task\u0027s pid outside this\n   task\u0027s namespace the global one is to be used;\n - when getting the pid from userspace one need to consider this as\n   the virtual one and use appropriate task/pid-searching functions.\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: nuther build fix]\n[akpm@linux-foundation.org: yet nuther build fix]\n[akpm@linux-foundation.org: remove unneeded casts]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Paul Menage \u003cmenage@google.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": "3eb07c8c8adb6f0572baba844ba2d9e501654316",
      "tree": "5c3d527f6b003b316d41119320ebd5c589c8afd0",
      "parents": [
        "0fbc26a6cfab9f377e82e28225f2c0c6b4661e5c"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu Oct 18 23:40:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:40 2007 -0700"
      },
      "message": "pid namespaces: destroy pid namespace on init\u0027s death\n\nTerminate all processes in a namespace when the reaper of the namespace is\nexiting.  We do this by walking the pidmap of the namespace and sending\nSIGKILL to all processes.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.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": "60347f6716aa49831ac311e04d77ccdc50dc024a",
      "tree": "82e666fef22f43550da42ad368a61a5e9a59ef96",
      "parents": [
        "8bf9725c29f2589237dd696d06a204230add0ba3"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "pid namespaces: prepare proc_flust_task() to flush entries from multiple proc trees\n\nThe first part is trivial - we just make the proc_flush_task() to operate on\narbitrary vfsmount with arbitrary ids and pass the pid and global proc_mnt to\nit.\n\nThe other change is more tricky: I moved the proc_flush_task() call in\nrelease_task() higher to address the following problem.\n\nWhen flushing task from many proc trees we need to know the set of ids (not\njust one pid) to find the dentries\u0027 names to flush.  Thus we need to pass the\ntask\u0027s pid to proc_flush_task() as struct pid is the only object that can\nprovide all the pid numbers.  But after __exit_signal() task has detached all\nhis pids and this information is lost.\n\nThis creates a tiny gap for proc_pid_lookup() to bring some dentries back to\ntree and keep them in hash (since pids are still alive before __exit_signal())\ntill the next shrink, but since proc_flush_task() does not provide a 100%\nguarantee that the dentries will be flushed, this is OK to do so.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.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": "2e4a707269a409950c3f315010c20f9719c594e2",
      "tree": "d25109a6b36bdcb78382d379bdba4c4e83150389",
      "parents": [
        "762a24beed3f3ab93224bd447710e6c36fcf1968"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "pid namespaces: move exit_task_namespaces()\n\nMake task release its namespaces after it has reparented all his children to\nchild_reaper, but before it notifies its parent about its death.\n\nThe reason to release namespaces after reparenting is that when task exits it\nmay send a signal to its parent (SIGCHLD), but if the parent has already\nexited its namespaces there will be no way to decide what pid to dever to him\n- parent can be from different namespace.\n\nThe reason to release namespace before notifying the parent it that when task\nsends a SIGCHLD to parent it can call wait() on this taks and release it.  But\nreleasing the mnt namespace implies dropping of all the mounts in the mnt\nnamespace and NFS expects the task to have valid sighand pointer.\n\nThanks to Oleg for pointing out some races that can apear and helping with\npatches and fixes.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.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": "762a24beed3f3ab93224bd447710e6c36fcf1968",
      "tree": "5753a796e11e53173194199292fdfcaae04efb47",
      "parents": [
        "d4c5e41f3f1b0c19448fcf2d259bdab1ede75e2e"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Thu Oct 18 23:40:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "pid namespaces: rework forget_original_parent()\n\nA pid namespace is a \"view\" of a particular set of tasks on the system.  They\nwork in a similar way to filesystem namespaces.  A file (or a process) can be\naccessed in multiple namespaces, but it may have a different name in each.  In\na filesystem, this name might be /etc/passwd in one namespace, but\n/chroot/etc/passwd in another.\n\nFor processes, a process may have pid 1234 in one namespace, but be pid 1 in\nanother.  This allows new pid namespaces to have basically arbitrary pids, and\nnot have to worry about what pids exist in other namespaces.  This is\nessential for checkpoint/restart where a restarted process\u0027s pid might collide\nwith an existing process on the system\u0027s pid.\n\nIn this particular implementation, pid namespaces have a parent-child\nrelationship, just like processes.  A process in a pid namespace may see all\nof the processes in the same namespace, as well as all of the processes in all\nof the namespaces which are children of its namespace.  Processes may not,\nhowever, see others which are in their parent\u0027s namespace, but not in their\nown.  The same goes for sibling namespaces.\n\nThe know issue to be solved in the nearest future is signal handling in the\nnamespace boundary.  That is, currently the namespace\u0027s init is treated like\nan ordinary task that can be killed from within an namespace.  Ideally, the\nsignal handling by the namespace\u0027s init should have two sides: when signaling\nthe init from its namespace, the init should look like a real init task, i.e.\nreceive only those signals, that is explicitly wants to; when signaling the\ninit from one of the parent namespaces, init should look like an ordinary\ntask, i.e.  receive any signal, only taking the general permissions into\naccount.\n\nThe pid namespace was developed by Pavel Emlyanov and Sukadev Bhattiprolu and\nwe eventually came to almost the same implementation, which differed in some\ndetails.  This set is based on Pavel\u0027s patches, but it includes comments and\npatches that from Sukadev.\n\nMany thanks to Oleg, who reviewed the patches, pointed out many BUGs and made\nvaluable advises on how to make this set cleaner.\n\nThis patch:\n\nWe have to call exit_task_namespaces() only after the exiting task has\nreparented all his children and is sure that no other threads will reparent\ntheirs for it.  Why this is needed is explained in appropriate patch.  This\none only reworks the forget_original_parent() so that after calling this a\ntask cannot be/become parent of any other task.\n\nWe check PF_EXITING instead of -\u003eexit_state while choosing the new parent.\nNote that tasklits_lock acts as a barrier, everyone who takes tasklist after\nus (when forget_original_parent() drops it) must see PF_EXITING.\n\nThe other changes are just cleanups.  They just move some code from\nexit_notify to forget_original_parent().  It is a bit silly to declare\nptrace_dead in exit_notify(), take tasklist, pass ptrace_dead to\nforget_original_parent(), unlock-lock-unlock tasklist, and then use\nptrace_dead.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.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": "d4c5e41f3f1b0c19448fcf2d259bdab1ede75e2e",
      "tree": "5a5ae3a1967c39f728b42e2fa0fc7cbcddcd2108",
      "parents": [
        "7b1915a989ea4d426d0fd98974ab80f30ef1d779"
      ],
      "author": {
        "name": "Daniel Walker",
        "email": "dwalker@mvista.com",
        "time": "Thu Oct 18 23:39:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "whitespace fixes: task exit handling\n\nSigned-off-by: Daniel Walker \u003cdwalker@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03ff17979c58a0b63b0fe30a373f41b719731bd2",
      "tree": "c6369ebab7a3035b309de5f288d6e8fc149b3d69",
      "parents": [
        "d473012710b815741043942bc41945d444abab40"
      ],
      "author": {
        "name": "Matthias Kaehlcke",
        "email": "matthias.kaehlcke@gmail.com",
        "time": "Thu Oct 18 23:39:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "kernel/exit.c: Use list_for_each_entry(_safe) instead of list_for_each(_safe)\n\nkernel/exit.c: Convert list_for_each(_safe) to\nlist_for_each_entry(_safe) in forget_original_parent(), exit_notify()\nand do_wait()\n\nSigned-off-by: Matthias Kaehlcke \u003cmatthias.kaehlcke@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": "cf7b708c8d1d7a27736771bcf4c457b332b0f818",
      "tree": "10f80257b052313b283f18ddfe35145882e0b47f",
      "parents": [
        "a6f5e06378970a2687332c2d54046245fcff1e7e"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:39:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:37 2007 -0700"
      },
      "message": "Make access to task\u0027s nsproxy lighter\n\nWhen someone wants to deal with some other taks\u0027s namespaces it has to lock\nthe task and then to get the desired namespace if the one exists.  This is\nslow on read-only paths and may be impossible in some cases.\n\nE.g.  Oleg recently noticed a race between unshare() and the (sent for\nreview in cgroups) pid namespaces - when the task notifies the parent it\nhas to know the parent\u0027s namespace, but taking the task_lock() is\nimpossible there - the code is under write locked tasklist lock.\n\nOn the other hand switching the namespace on task (daemonize) and releasing\nthe namespace (after the last task exit) is rather rare operation and we\ncan sacrifice its speed to solve the issues above.\n\nThe access to other task namespaces is proposed to be performed\nlike this:\n\n     rcu_read_lock();\n     nsproxy \u003d task_nsproxy(tsk);\n     if (nsproxy !\u003d NULL) {\n             / *\n               * work with the namespaces here\n               * e.g. get the reference on one of them\n               * /\n     } / *\n         * NULL task_nsproxy() means that this task is\n         * almost dead (zombie)\n         * /\n     rcu_read_unlock();\n\nThis patch has passed the review by Eric and Oleg :) and,\nof course, tested.\n\n[clg@fr.ibm.com: fix unshare()]\n[ebiederm@xmission.com: Update get_net_ns_by_pid]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b460cbc581a53cc088ceba80608021dd49c63c43",
      "tree": "83c28d0adbc15f4157c77b40fa60c40a71cb8673",
      "parents": [
        "3743ca05ff464b8a9e345c08a6c9ce30485f9805"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Thu Oct 18 23:39:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:37 2007 -0700"
      },
      "message": "pid namespaces: define is_global_init() and is_container_init()\n\nis_init() is an ambiguous name for the pid\u003d\u003d1 check.  Split it into\nis_global_init() and is_container_init().\n\nA cgroup init has it\u0027s tsk-\u003epid \u003d\u003d 1.\n\nA global init also has it\u0027s tsk-\u003epid \u003d\u003d 1 and it\u0027s active pid namespace\nis the init_pid_ns.  But rather than check the active pid namespace,\ncompare the task structure with \u0027init_pid_ns.child_reaper\u0027, which is\ninitialized during boot to the /sbin/init process and never changes.\n\nChangelog:\n\n\t2.6.22-rc4-mm2-pidns1:\n\t- Use \u0027init_pid_ns.child_reaper\u0027 to determine if a given task is the\n\t  global init (/sbin/init) process. This would improve performance\n\t  and remove dependence on the task_pid().\n\n\t2.6.21-mm2-pidns2:\n\n\t- [Sukadev Bhattiprolu] Changed is_container_init() calls in {powerpc,\n\t  ppc,avr32}/traps.c for the _exception() call to is_global_init().\n\t  This way, we kill only the cgroup if the cgroup\u0027s init has a\n\t  bug rather than force a kernel panic.\n\n[akpm@linux-foundation.org: fix comment]\n[sukadev@us.ibm.com: Use is_global_init() in arch/m32r/mm/fault.c]\n[bunk@stusta.de: kernel/pid.c: remove unused exports]\n[sukadev@us.ibm.com: Fix capability.c to work with threaded init]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nAcked-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Herbert Poetzel \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88f21d818255bc61c002478d21caf52f8a9b8def",
      "tree": "de16e38862622b3d295f7850cdb006922307fb8d",
      "parents": [
        "2894d650cd9715d00ca196c711265819ef6ebd2d"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu Oct 18 23:39:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:37 2007 -0700"
      },
      "message": "pid namespaces: rename child_reaper() function\n\nRename the child_reaper() function to task_child_reaper() to be similar to\nother task_* functions and to distinguish the function from \u0027struct\npid_namspace.child_reaper\u0027.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Herbert Poetzel \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a47afb0f9d794d525a372c8d69902147cc88222a",
      "tree": "7bd67280e2edc1c3b1803d4a93bee794088e9342",
      "parents": [
        "858d72ead4864da0fb0b89b919524125ce998e27"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:39:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:37 2007 -0700"
      },
      "message": "pid namespaces: round up the API\n\nThe set of functions process_session, task_session, process_group and\ntask_pgrp is confusing, as the names can be mixed with each other when looking\nat the code for a long time.\n\nThe proposals are to\n* equip the functions that return the integer with _nr suffix to\n  represent that fact,\n* and to make all functions work with task (not process) by making\n  the common prefix of the same name.\n\nFor monotony the routines signal_session() and set_signal_session() are\nreplaced with task_session_nr() and set_task_session(), especially since they\nare only used with the explicit task-\u003esignal dereference.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nAcked-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8793d854edbc2774943a4b0de3304dc73991159a",
      "tree": "380b3403a0fedfcce61d9af5af1ffbcc71017abf",
      "parents": [
        "81a6a5cdd2c5cd70874b88afe524ab09e9e869af"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Thu Oct 18 23:39:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:36 2007 -0700"
      },
      "message": "Task Control Groups: make cpusets a client of cgroups\n\nRemove the filesystem support logic from the cpusets system and makes cpusets\na cgroup subsystem\n\nThe \"cpuset\" filesystem becomes a dummy filesystem; attempts to mount it get\npassed through to the cgroup filesystem with the appropriate options to\nemulate the old cpuset filesystem behaviour.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4f48b6363c81ca743ef46943ef23fd72e60f679",
      "tree": "40437b78e2d7a7d9d71e7bd63bc96e1ad02daa94",
      "parents": [
        "355e0c48b757b7fcc79ccb98fda8105ed37a1598"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Thu Oct 18 23:39:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:36 2007 -0700"
      },
      "message": "Task Control Groups: add fork()/exit() hooks\n\nThis adds the necessary hooks to the fork() and exit() paths to ensure\nthat new children inherit their parent\u0027s cgroup assignments, and that\nexiting processes release reference counts on their cgroups.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42b2dd0a02c512cf59c96f5c227bf54bfe5bbf08",
      "tree": "f9e4a572804897772d97e2db1ab0d2adcd28840c",
      "parents": [
        "bcbba6c10ef6b14b0542d7ed7380e95168175818"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue Oct 16 23:27:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:55 2007 -0700"
      },
      "message": "Shrink task_struct if CONFIG_FUTEX\u003dn\n\nrobust_list, compat_robust_list, pi_state_list, pi_state_cache are\nreally used if futexes are on.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nAcked-by: 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": "6db840fa7887980ef68a649640d506fe069eef0c",
      "tree": "6248c1e65b572f1c2b14c46848e5a18df003f60e",
      "parents": [
        "356d6d5058c8082b9e811838ab2fa27825c947e4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:27:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:54 2007 -0700"
      },
      "message": "exec: RT sub-thread can livelock and monopolize CPU on exec\n\nde_thread() yields waiting for -\u003egroup_leader to be a zombie. This deadlocks\nif an rt-prio execer shares the same cpu with -\u003egroup_leader. Change the code\nto use -\u003egroup_exit_task/notify_count mechanics.\n\nThis patch certainly uglifies the code, perhaps someone can suggest something\nbetter.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "715015e8da37c4d13e234def054bcbea116297e9",
      "tree": "3c3f2cd1d516d13d50ad33519dfe98a75243eb0d",
      "parents": [
        "18442cf28af81378cf8996d264b368bba47cf846"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:27:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:52 2007 -0700"
      },
      "message": "wait_task_stopped/continued: remove unneeded p-\u003esignal !\u003d NULL check\n\nThe child was found on -\u003echildren list under tasklist_lock, it must have a\nvalid -\u003esignal. __exit_signal() both removes the task from parent-\u003echildren\nand clears -\u003esignal \"atomically\" under write_lock(tasklist).\n\nRemove unneeded checks.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "442a10cf9e1c350b4de4dd6f22c72618a0b13d7f",
      "tree": "13ab9fc1bd97be616511425d422e0c9188fbf5f3",
      "parents": [
        "ebca4cda1133775111e8b09f7124a7e5e391926d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:51 2007 -0700"
      },
      "message": "wait_task_zombie: don\u0027t fight with non-existing race with a dying ptracee\n\nThe \"p-\u003eexit_signal \u003d\u003d -1 \u0026\u0026 p-\u003eptrace \u003d\u003d 0\" check and the comment are\nbogus.  We already did exactly the same check in eligible_child(), we did\nnot drop tasklist_lock since then, and both variables need\nwrite_lock(tasklist) to be changed.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "3ae4cbadf4bf97ee137b921a1b928d2a5dcd26ca",
      "tree": "1d8bea4faeae056da20b2401645900daa3c86c55",
      "parents": [
        "2f4e6e2a814eb1305a873a045401708d73f870bc"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:51 2007 -0700"
      },
      "message": "exit_notify: don\u0027t take tasklist for TIF_SIGPENDING re-targeting\n\n-\u003esiglock provides enough protection to iterate over the thread group.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "2f4e6e2a814eb1305a873a045401708d73f870bc",
      "tree": "8860a0e557c6849143c363eb7c1c9e82333e7fe3",
      "parents": [
        "407af46a967ffd2f208f0a5fb3f1ff954801494a"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:51 2007 -0700"
      },
      "message": "wait_task_zombie: fix 2/3 races vs forget_original_parent()\n\nTwo threads, T1 and T2.  T2 ptraces P, and P is not a child of ptracer\u0027s\nthread group.  P exits and goes to TASK_ZOMBIE.\n\nT1 does wait_task_zombie(P):\n\n\tP-\u003eexit_state \u003d TASK_DEAD;\n\t...\n\tread_unlock(\u0026tasklist_lock);\n\n\t\t\t\t\tT2 does exit(), takes tasklist,\n\t\t\t\t\tforget_original_parent() does\n\t\t\t\t\t__ptrace_unlink(P) but doesn\u0027t\n\t\t\t\t\tcall do_notify_parent(P) because\n\t\t\t\t\tp-\u003eexit_state \u003d\u003d EXIT_DEAD.\n\nNow, P is not visible to our process: __ptrace_unlink() removed it from\n-\u003echildren. We should send notification to P-\u003eparent and release P if and\nonly if SIGCHLD is ignored.\n\nAnd we have 3 bugs:\n\n1. P-\u003eparent does do_wait() and gets -ECHILD (P is on -\u003eparent-\u003echildren,\n   but its state is TASK_DEAD).\n\n2. // wait_task_zombie() continues\n\n\tif (put_user(...)) {\n\t\t// TODO: is this safe?\n\t\tp-\u003eexit_state \u003d EXIT_ZOMBIE;\n\t\treturn;\n\t}\n\n   we return without notification/release, task_struct leaked.\n\n   Solution: ignore -EFAULT and proceed. It is an application\u0027s bug if\n   we can\u0027t fill infop/stat_addr (in case of VM_FAULT_OOM we have much\n   more problems).\n\n3. // wait_task_zombie() continues\n\n\tif (p-\u003ereal_parent !\u003d p-\u003eparent) {\n\t\t// Not taken, it was untraced\u0027ed\n\t\t...\n\t}\n\n\trelease_task(p);\n\n   we released the task which we shouldn\u0027t.\n\n   Solution: check -\u003ereal_parent !\u003d -\u003eparent before, under tasklist_lock,\n   but use ptrace_unlink() instead of __ptrace_unlink() to check -\u003eptrace.\n\nThis patch hopefully solves 2 and 3, the 1st bug will be fixed later, we need\nsome cleanups in forget_original_parent/reparent_thread.\n\nHowever, the first race is very unlikely and not critical, so I hope it makes\nsense to fix 1 and 2 for now.\n\n4. Small cleanup: don\u0027t \"restore\" EXIT_ZOMBIE unless we know we are not going\n   to realease the child.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "407af46a967ffd2f208f0a5fb3f1ff954801494a",
      "tree": "cf9b98874efb3f6a9e244c4f2be6eaf69db3306e",
      "parents": [
        "a8b0ac0873cd911b3bf3d6e2db98f80d0b158d56"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:51 2007 -0700"
      },
      "message": "wait_task_zombie: remove unneeded child-\u003esignal check\n\nA zombie must have a valid -\u003esignal, we are going to release it and\n__exit_signal() starts with BUG_ON(!sig).\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\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": "84eb646b6eabcd82ec563f30d2d9d40c2054a9c9",
      "tree": "96219c5844c80c40cbc9814a13a9a72de7430fc7",
      "parents": [
        "8e9073ed027771bcdee4033eb900a3c09ac90a19"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:51 2007 -0700"
      },
      "message": "handle the multi-threaded init\u0027s exit() properly\n\nWith or without this patch, multi-threaded init\u0027s are not fully supported,\nbut do_exit() is completely wrong.  This becomes a real problem when we\nsupport pid namespaces.\n\n1. do_exit() panics when the main thread of /sbin/init exits. It should not\n   until the whole thread group exits. Move the code below, under the\n   \"if (group_dead)\" check.\n\n   Note: this means that forget_original_parent() can use an already dead\n   child_reaper()\u0027s task_struct. This is OK for /sbin/init because\n\n   \t- do_wait() from alive sub-thread still can reap a zombie, we iterate\n   \t  over all sub-thread\u0027s -\u003echildren lists\n\n   \t- do_notify_parent() will wakeup some alive sub-thread because it sends\n   \t  the group-wide signal\n\n   However, we should remove choose_new_parent()-\u003eBUG_ON(reaper-\u003eexit_state)\n   for this.\n\n2. We are playing games with -\u003ensproxy-\u003epid_ns. This code is bogus today, and\n   it has to be changed anyway when we really support pid namespaces, just\n   remove it.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nRoland McGrath \u003croland@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\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": "d2ee7198cc2414aade234a3cebc69e6cbff35d9b",
      "tree": "e89d52b8b64f6eb675add025ba8507863e4bc0f8",
      "parents": [
        "7917ff9a4cefd0500aa4a1b1942da96dbce6999f"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Oct 16 23:26:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:51 2007 -0700"
      },
      "message": "pi-futex: set PF_EXITING without taking -\u003epi_lock\n\nIt is a bit annoying that do_exit() takes -\u003epi_lock to set PF_EXITING.  All\nwe need is to synchronize with lookup_pi_state() which saw this task\nwithout PF_EXITING under -\u003epi_lock.\n\nChange do_exit() to use spin_unlock_wait().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: 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": "a9022e9cb9e919e31d5bc15fcef5c7186740645e",
      "tree": "48aea98aec8d9822155b2054bc60f9142f478769",
      "parents": [
        "ea0b7d5da0024df1c6f2c2139dbeb4fd260baac6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Tue Oct 16 23:26:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:48 2007 -0700"
      },
      "message": "Clean up duplicate includes in kernel/\n\nThis patch cleans up duplicate includes in\n\tkernel/\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Satyam Sharma \u003cssatyam@cse.iitk.ac.in\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ac52315d4cf5f561f36dabaf0720c00d3553162",
      "tree": "afe7284f34a65d2540fcb2a9b764834f9d790fa7",
      "parents": [
        "5e84cfde51cf303d368fcb48f22059f37b3872de"
      ],
      "author": {
        "name": "Laurent Vivier",
        "email": "Laurent.Vivier@bull.net",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 15 17:00:19 2007 +0200"
      },
      "message": "sched: guest CPU accounting: add guest-CPU /proc/\u003cpid\u003e/stat fields\n\nlike for cpustat, introduce the \"gtime\" (guest time of the task) and\n\"cgtime\" (guest time of the task children) fields for the\ntasks. Modify signal_struct and task_struct.\n\nModify /proc/\u003cpid\u003e/stat to display these new fields.\n\nSigned-off-by: Laurent Vivier \u003cLaurent.Vivier@bull.net\u003e\nAcked-by: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b8fceee17a310f189188599a8fa5e9beaff57eb0",
      "tree": "21308319be2579059a4d4d7db680a73334659f82",
      "parents": [
        "9db619e66503494e41159de3c76fafabe80d016b"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu Sep 20 12:40:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Sep 20 13:19:59 2007 -0700"
      },
      "message": "signalfd simplification\n\nThis simplifies signalfd code, by avoiding it to remain attached to the\nsighand during its lifetime.\n\nIn this way, the signalfd remain attached to the sighand only during\npoll(2) (and select and epoll) and read(2).  This also allows to remove\nall the custom \"tsk \u003d\u003d current\" checks in kernel/signal.c, since\ndequeue_signal() will only be called by \"current\".\n\nI think this is also what Ben was suggesting time ago.\n\nThe external effect of this, is that a thread can extract only its own\nprivate signals and the group ones.  I think this is an acceptable\nbehaviour, in that those are the signals the thread would be able to\nfetch w/out signalfd.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2ab6d8889422c1f5354f014e8bef337b1d1bade",
      "tree": "ab7de371c86ce9e72015363fc06563709d823354",
      "parents": [
        "c24c55c75a0d799be07ad6c1a7ff4ccfe25da75b"
      ],
      "author": {
        "name": "Jonathan Lim",
        "email": "jlim@sgi.com",
        "time": "Thu Aug 30 23:56:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:22 2007 -0700"
      },
      "message": "Assign task_struct.exit_code before taskstats_exit()\n\ntaskstats.ac_exitcode is assigned to task_struct.exit_code in bacct_add_tsk()\nthrough the following kernel function calls:\n\n  do_exit()\n    taskstats_exit()\n      fill_pid()\n        bacct_add_tsk()\n\nThe problem is that in do_exit(), task_struct.exit_code is set to \u0027code\u0027 only\nafter taskstats_exit() has been called.  So we need to move the assignment\nbefore taskstats_exit().\n\nSigned-off-by: Jonathan Lim \u003cjlim@sgi.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "247284481ca40288bd120cf0707681c3bdbee78f",
      "tree": "d0de3020d9961561b66b44af8ddc9e4d1442a7fe",
      "parents": [
        "b6b1d87785712474d0ed80689c17107d616a1171"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sat Aug 04 01:04:41 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 03 15:06:33 2007 -0700"
      },
      "message": "Kill some obsolete sub-thread-ptrace stuff\n\nThere is a couple of subtle checks which were needed to handle ptracing from\nthe same thread group. This was deprecated a long ago, imho this code just\ncomplicates the understanding.\n\nAnd, the \"-\u003eparent-\u003esignal-\u003eflags \u0026 SIGNAL_GROUP_EXIT\" check in exit_notify()\nis not right. SIGNAL_GROUP_EXIT can mean exec(), not exit_group(). This means\nptracer can lose a ptraced zombie on exec(). Minor problem, but still the bug.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "0c1eecfb345401629aa57c9d3b077273e56c45a7"
}
