)]}'
{
  "log": [
    {
      "commit": "f9fb860f67b9542cd78d1558dec7058092b57d8e",
      "tree": "1c14a2d7013df108b6103b7d24b1201fd78b922b",
      "parents": [
        "6af866af34a96fed24a55979a78b6f73bd4e8e87"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Jan 07 18:08:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:12 2009 -0800"
      },
      "message": "pid: implement ns_of_pid\n\nA current problem with the pid namespace is that it is easy to do pid\nrelated work after exit_task_namespaces which drops the nsproxy pointer.\n\nHowever if we are doing pid namespace related work we are always operating\non some struct pid which retains the pid_namespace pointer of the pid\nnamespace it was allocated in.\n\nSo provide ns_of_pid which allows us to find the pid namespace a pid was\nallocated in.\n\nUsing this we have the needed infrastructure to do pid namespace related\nwork at anytime we have a struct pid, removing the chance of accidentally\nhaving a NULL pointer dereference when accessing current-\u003ensproxy.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@linux.vnet.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Bastian Blank \u003cbastian@waldi.eu.org\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nAcked-by: Serge Hallyn \u003cserue@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": "5ef6476190d24419a9a537baa0b5641845136989",
      "tree": "668d3e02acf97745d2a2e701e4b161cbd6f890bf",
      "parents": [
        "804a685162a7080386714166776f57255a75238e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Dec 04 00:26:39 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:09:37 2008 +0100"
      },
      "message": "pid: fix the do_each_pid_task() macro\n\nImpact: macro side-effects fix\n\nThis patch adds parenthesis around \u0027pid\u0027 in the do_each_pid_task\nmacro to allow callers to pass in more complex parameters.\n\ne.g.  do_each_pid_task(*pid, type, task)\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d70b68d42b5196a48ccb639e3797f097ef5bea3",
      "tree": "b3040706cd69e0e7bc6d846e08fd91a441b34310",
      "parents": [
        "141d87e7debe3334018e46859c7565c44cebda65"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Wed Aug 20 14:09:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:32 2008 -0700"
      },
      "message": "fix setpriority(PRIO_PGRP) thread iterator breakage\n\nWhen user calls sys_setpriority(PRIO_PGRP ...) on a NPTL style multi-LWP\nprocess, only the task leader of the process is affected, all other\nsibling LWP threads didn\u0027t receive the setting.  The problem was that the\niterator used in sys_setpriority() only iteartes over one task for each\nprocess, ignoring all other sibling thread.\n\nIntroduce a new macro do_each_pid_thread / while_each_pid_thread to walk\neach thread of a process.  Convert 4 call sites in {set/get}priority and\nioprio_{set/get}.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbda0de52618d13d1b927c7ba7bb839cfddc4e8c",
      "tree": "026bd6c9da6e6e81a21a6e47dcc738bddbb3fe22",
      "parents": [
        "e49859e71e0318b564de1546bdc30fab738f9deb"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 25 01:48:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:45 2008 -0700"
      },
      "message": "pidns: remove find_task_by_pid, unused for a long time\n\nIt seems to me that it was a mistake marking this function as deprecated\nand scheduling it for removal, rather than resolutely removing it after\nthe last caller\u0027s death.\n\nAnyway - better late, then never.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\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": "e49859e71e0318b564de1546bdc30fab738f9deb",
      "tree": "74f63bbfad6ca9682404e85c3d69482663273004",
      "parents": [
        "19b0cfcca41dd772065671ad0584e1cea0f3fd13"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Jul 25 01:48:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:45 2008 -0700"
      },
      "message": "pidns: remove now unused find_pid function.\n\nThis one had the only users so far - the kill_proc, which is removed, so\ndrop this (invalid in namespaced world) call too.\n\nAnd of course - erase all references on it from comments.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\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": "33166b1ffca5e1945246bcaa77d72a22b0d3e531",
      "tree": "5e949f9f68c93ad4a487aa84aa959a5658cfd321",
      "parents": [
        "3ae4eed34be0177a8e003411a84e4ee212adbced"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Fri Jul 25 01:48:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:45 2008 -0700"
      },
      "message": "shrink struct pid by removing padding on 64 bit builds\n\nWhen struct pid is built on a 64 bit platform gcc has to insert padding to\nmaintain the correct alignment, by simply reordering its members the\nmemory usage shrinks from 88 bytes to 80.\n\nI\u0027ve successfully run with this patch on my desktop AMD64 machine.\n\nThere are no significant kernel size changes to a default config.X86_64\non the latest git v2.6.26-rc1\n\n   text    data     bss     dec     hex filename\n5404828  976760  734280 7115868  6c945c vmlinux\n5404811  976760  734280 7115851  6c944b vmlinux.pid-patch\n\nAcked-by: \"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": "caafa4324335aeb11bc233d5f87aca8cce30beba",
      "tree": "b6371b0c084ffb91f7304a7e392b28ccfdab8a2e",
      "parents": [
        "ab883af53ec1b87add43b32a28d8347f17d5155b"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Apr 30 00:54:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:49 2008 -0700"
      },
      "message": "pidns: make pid-\u003elevel and pid_ns-\u003elevel unsigned\n\nThese values represent the nesting level of a namespace and pids living in it,\nand it\u0027s always non-negative.\n\nTurning this from int to unsigned int saves some space in pid.c (11 bytes on\nx86 and 64 on ia64) by letting the compiler optimize the pid_nr_ns a bit.\nE.g.  on ia64 this removes the sign extension calls, which compiler adds to\noptimize access to pid-\u003enubers[ns-\u003elevel].\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\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": "24336eaeecea860b2a82530e07c80bc7e0558b73",
      "tree": "12a34660f732e12ba18262083c1a2eea5a824f6a",
      "parents": [
        "65450cebc6a2efde80ed45514f727e6e4dc1eafd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed Apr 30 00:54:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:48 2008 -0700"
      },
      "message": "pids: introduce change_pid() helper\n\nBased on Eric W. Biederman\u0027s idea.\n\nWithout tasklist_lock held task_session()/task_pgrp() can return NULL if the\ncaller races with setprgp()/setsid() which does detach_pid() + attach_pid().\nThis can happen even if task \u003d\u003d current.\n\nIntoduce the new helper, change_pid(), which should be used instead.  This way\nthe caller always sees the special pid !\u003d NULL, either old or new.\n\nAlso change the prototype of attach_pid(), it always returns 0 and nobody\ncheck the returned value.\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": "b3c97528689619fc66569b30bf83d09d9929521a",
      "tree": "91dc53590deab88c9bf255c2b5cbd74bdbc36de1",
      "parents": [
        "aa02cd2d9bd1e24a230bd66a0a741b984d03915a"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Feb 13 15:03:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:18 2008 -0800"
      },
      "message": "include/linux: Remove all users of FASTCALL() macro\n\nFASTCALL() is always expanded to empty, remove it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "46f382d2b69d2221086b823f0dbc8f32c027cac2",
      "tree": "bc71bbdd7f158aea817ef08f9cf13ac515d3776f",
      "parents": [
        "d36174bc2bce0372693a9cfbdef8b2689c9982cb"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Feb 08 04:19:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:28 2008 -0800"
      },
      "message": "uglify while_each_pid_task() to make sure we don\u0027t count the execing pricess twice\n\nThere is a window when de_thread() switches the leader and drops\ntasklist_lock.  In that window do_each_pid_task(PIDTYPE_PID) finds both new\nand old leaders.\n\nThe problem is pretty much theoretical and probably can be ignored.  Currently\nthe only users of do_each_pid_task(PIDTYPE_PID) are send_sigio/send_sigurg, so\nthey can send the signal to the same process twice.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\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": "44c4e1b2581f7273ab14ef30b6430618801c57b1",
      "tree": "9881990d56dd58f0c93991217a999bab145946fa",
      "parents": [
        "161550d74c07303ffa6187ba776f62df5a906a21"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Feb 08 04:19:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:27 2008 -0800"
      },
      "message": "pid: Extend/Fix pid_vnr\n\npid_vnr returns the user space pid with respect to the pid namespace the\nstruct pid was allocated in.  What we want before we return a pid to user\nspace is the user space pid with respect to the pid namespace of current.\n\npid_vnr is a very nice optimization but because it isn\u0027t quite what we want\nit is easy to use pid_vnr at times when we aren\u0027t certain the struct pid\nwas allocated in our pid namespace.\n\nCurrently this describes at least tiocgpgrp and tiocgsid in ttyio.c the\nparent process reported in the core dumps and the parent process in\nget_signal_to_deliver.\n\nSo unless the performance impact is huge having an interface that does what\nwe want instead of always what we want should be much more reliable and\nmuch less error prone.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\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": "74bd59bb39eb08b4379e2590c5f160748d83f812",
      "tree": "2e0b8e18b0d51f9972239a0322aca313b325a8fa",
      "parents": [
        "aee16ce73c71a241190cef3aaa265f6a3ab8e035"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Feb 08 04:18:24 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:23 2008 -0800"
      },
      "message": "namespaces: cleanup the code managed with PID_NS option\n\nJust like with the user namespaces, move the namespace management code into\nthe separate .c file and mark the (already existing) PID_NS option as \"depend\non NAMESPACES\"\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\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": "8990571eb573032c1192440febb17132074c5575",
      "tree": "c5cceff1dbac91ca12917e12f5768a5ab332ec75",
      "parents": [
        "bac0abd6174e427404dd197cdbefece31e97329b"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:41 2007 -0700"
      },
      "message": "Uninline find_pid etc set of functions\n\nThe find_pid/_vpid/_pid_ns functions are used to find the struct pid by its\nid, depending on whic id - global or virtual - is used.\n\nThe find_vpid() is a macro that pushes the current-\u003ensproxy-\u003epid_ns on the\nstack to call another function - find_pid_ns().  It turned out, that this\ndereference together with the push itself cause the kernel text size to\ngrow too much.\n\nMove all these out-of-line.  Together with the previous patch this saves a\nbit less that 400 bytes from .text section.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@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": "19b9b9b54e5f115907efd56be2c3799775a46561",
      "tree": "44340df34980166373f2a57c1283c26026682a95",
      "parents": [
        "228ebcbe634a30aec35132ea4375721bcc41bec0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:40 2007 -0700"
      },
      "message": "pid namespaces: remove the struct pid unneeded fields\n\nSince we\u0027ve switched from using pid-\u003enr to pid-\u003eupids-\u003enr some\nfields on struct pid are no longer needed\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": "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": "198fe21b0a17fe9c68cb519ecc566534b04f122b",
      "tree": "690825669858d0f458fc137e42adf77cdf370ea4",
      "parents": [
        "7af5729474b5b8ad385adadab78d6e723e7655a3"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:39 2007 -0700"
      },
      "message": "pid namespaces: helpers to find the task by its numerical ids\n\nWhen searching the task by numerical id on may need to find it using global\npid (as it is done now in kernel) or by its virtual id, e.g.  when sending a\nsignal to a task from one namespace the sender will specify the task\u0027s virtual\nid and we should find the task by this value.\n\n[akpm@linux-foundation.org: fix gfs2 linkage]\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": "7af5729474b5b8ad385adadab78d6e723e7655a3",
      "tree": "197f8da3e7afd65554f0c0a070eb93036b720fa8",
      "parents": [
        "8ef047aaaeb811247a5639c92e2f2ae1221a28dd"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:39 2007 -0700"
      },
      "message": "pid namespaces: helpers to obtain pid numbers\n\nWhen showing pid to user or getting the pid numerical id for in-kernel use the\nvalue of this id may differ depending on the namespace.\n\nThis set of helpers is used to get the global pid nr, the virtual (i.e.  seen\nby task in its namespace) nr and the nr as it is seen from the specified\nnamespace.\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": "8ef047aaaeb811247a5639c92e2f2ae1221a28dd",
      "tree": "296a61f66daa8ac42b3d77a53d06a97eb71155c9",
      "parents": [
        "faacbfd3a6808bf87d8f353b42eceeaba2c78a47"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:39 2007 -0700"
      },
      "message": "pid namespaces: make alloc_pid(), free_pid() and put_pid() work with struct upid\n\nEach struct upid element of struct pid has to be initialized properly, i.e.\nits nr mst be allocated from appropriate pidmap and ns set to appropriate\nnamespace.\n\nWhen allocating a new pid, we need to know the namespace this pid will live\nin, so the additional argument is added to alloc_pid().\n\nOn the other hand, the rest of the kernel still uses the pid-\u003enr and\npid-\u003epid_chain fields, so these ones are still initialized, but this will be\nremoved soon.\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": "4c3f2ead5a3dff9069a45560ba4d007c8ae2e2ee",
      "tree": "ab47621edf01f64485c99cf2cde56762339c86f1",
      "parents": [
        "60347f6716aa49831ac311e04d77ccdc50dc024a"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "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: introduce struct upid\n\nSince task will be visible from different pid namespaces each of them have to\nbe addressed by multiple pids.  struct upid is to store the information about\nwhich id refers to which namespace.\n\nThe constuciton looks like this.  Each struct pid carried the reference\ncounter and the list of tasks attached to this pid.  At its end it has a\nvariable length array of struct upid-s.  Each struct upid has a numerical id\n(pid itself), pointer to the namespace, this ID is valid in and is hashed into\na pid_hash for searching the pids.\n\nThe nr and pid_chain fields are kept in struct pid for a while to make kernel\nstill work (no patch initialize the upids yet), but it will be removed at the\nend of this series when we switch to upids completely.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\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": "820e45db2380eb1545fa2bc5d34b8b2f2933faeb",
      "tree": "426e89e9205e44559d949d9cdf8bf1035bdc3710",
      "parents": [
        "e713d0dab21a68500720e222fa02567fc7dfb14b"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu May 10 22:23:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "statically initialize struct pid for swapper\n\nStatically initialize a struct pid for the swapper process (pid_t \u003d\u003d 0) and\nattach it to init_task.  This is needed so task_pid(), task_pgrp() and\ntask_session() interfaces work on the swapper process also.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.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: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: \u003ccontainers@lists.osdl.org\u003e\nAcked-by: 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": "e713d0dab21a68500720e222fa02567fc7dfb14b",
      "tree": "a56f90ce94d9287b73da6db72ed0e73542a70a07",
      "parents": [
        "4ac24b3ba9016881b11646114bb5cd12cf23edd9"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Thu May 10 22:22:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "attach_pid() with struct pid parameter\n\nattach_pid() currently takes a pid_t and then uses find_pid() to find the\ncorresponding struct pid.  Sometimes we already have the struct pid.  We can\nthen skip find_pid() if attach_pid() were to take a struct pid parameter.\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.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: \u003ccontainers@lists.osdl.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f57a54b6cf3f626334d97e93b5b917ad11e1efc",
      "tree": "d00c59378853d36b9508708e2d2ee38269eeb018",
      "parents": [
        "41487c65bfcce9c8e4d123da1719fcfd8df6d4d0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Feb 12 00:53:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:32 2007 -0800"
      },
      "message": "[PATCH] pid: remove now unused do_each_task_pid and while_each_task_pid\n\nNow that I have changed all of the users remove the old version of these\nfunctions.  This should be a clear hint to any out of tree users that they\nshould use do_each_pid_task and while_each_pid_task for new code.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\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": "84d737866e2babdeab0c6b18ea155c6a649663b8",
      "tree": "e504da826174c2804d8c680828800aa680090686",
      "parents": [
        "6cc1b22a4acef3816eaa5f8c227d93d749b23195"
      ],
      "author": {
        "name": "Sukadev Bhattiprolu",
        "email": "sukadev@us.ibm.com",
        "time": "Fri Dec 08 02:38:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:52 2006 -0800"
      },
      "message": "[PATCH] add child reaper to pid_namespace\n\nAdd a per pid_namespace child-reaper.  This is needed so processes are reaped\nwithin the same pid space and do not spill over to the parent pid space.  Its\nalso needed so containers preserve existing semantic that pid \u003d\u003d 1 would reap\norphaned children.\n\nThis is based on Eric Biederman\u0027s patch: http://lkml.org/lkml/2006/2/6/285\n\nSigned-off-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1d32849b14bc8792e6f35ab27dd990d74b16126c",
      "tree": "caba51ce9df60e42412119063e582023a534507e",
      "parents": [
        "ad7a3bf30c27d902042bc85c3e54eb2082d633bd"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Oct 03 01:13:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:03:40 2006 -0700"
      },
      "message": "[PATCH] pid.h cleanup\n\nMake the pid.h macros look less revolting in an 80-col window.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1a657f78dcc8ea7c53eaa1f2a45ea2315738c15f",
      "tree": "a19972027792082fed505c8d540f7d877e37c0ab",
      "parents": [
        "1c0d04c9e44f4a248335c33d2be7c7f7b06ff359"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Oct 02 02:18:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:25 2006 -0700"
      },
      "message": "[PATCH] introduce get_task_pid() to fix unsafe get_pid()\n\nproc_pid_make_inode:\n\n\tei-\u003epid \u003d get_pid(task_pid(task));\n\nI think this is not safe.  get_pid() can be preempted after checking \"pid\n!\u003d NULL\".  Then the task exits, does detach_pid(), and RCU frees the pid.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d387cae075b0aec479adbdfb71df39f7de8e9adb",
      "tree": "fe5c9a3b105f3edf4049c16dda4085c5f356fafe",
      "parents": [
        "c88be3eb2e01bbb21c9ccdc3805f0d3546c1898c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Oct 02 02:17:22 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:15 2006 -0700"
      },
      "message": "[PATCH] pid: simplify pid iterators\n\nI think it is hardly possible to read the current do_each_task_pid().  The\nnew version is much simpler and makes the code smaller.\n\nOnly the do_each_task_pid change is tested, the do_each_pid_task isn\u0027t.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5feb8f5f8403d8874a04aac443692dfe83bd63d2",
      "tree": "8dc23051350f9a4bd22c3172dc570e96e73f3e50",
      "parents": [
        "bbf73147e2d46611fbdcbc126f887c614c32350b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 02 02:17:12 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:13 2006 -0700"
      },
      "message": "[PATCH] pid: implement pid_nr\n\nAs we stop storing pid_t\u0027s and move to storing struct pid *.  We need a way to\nget the pid_t from the struct pid to report to user space what we have stored.\n\nHaving a clean well defined way to do this is especially important as we move\nto multiple pid spaces as may need to report a different value to the caller\ndepending on which pid space the caller is in.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "558cb325485aaf655130f140e8ddd25392f6c972",
      "tree": "adfea6c0b901cf6591209d29091ff5ac298843c3",
      "parents": [
        "22c935f47c03399c78e64c71b757eb36fa917ff6"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 02 02:17:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:13 2006 -0700"
      },
      "message": "[PATCH] pid: add do_each_pid_task\n\nTo avoid pid rollover confusion the kernel needs to work with struct pid *\ninstead of pid_t.  Currently there is not an iterator that walks through all\nof the tasks of a given pid type starting with a struct pid.  This prevents us\nreplacing some pid_t instances with struct pid.  So this patch adds\ndo_each_pid_task which walks through the set of task for a given pid type\nstarting with a struct pid.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0804ef4b0de7121261f77c565b20a11ac694e877",
      "tree": "ff12e3b999dc2ce66d97fce5d76cd7df073c0d5c",
      "parents": [
        "2bc2d61a9638dab670d8361e928d1a5a291173ef"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 02 02:17:04 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:12 2006 -0700"
      },
      "message": "[PATCH] proc: readdir race fix (take 3)\n\nThe problem: An opendir, readdir, closedir sequence can fail to report\nprocess ids that are continually in use throughout the sequence of system\ncalls.  For this race to trigger the process that proc_pid_readdir stops at\nmust exit before readdir is called again.\n\nThis can cause ps to fail to report processes, and it is in violation of\nposix guarantees and normal application expectations with respect to\nreaddir.\n\nCurrently there is no way to work around this problem in user space short\nof providing a gargantuan buffer to user space so the directory read all\nhappens in on system call.\n\nThis patch implements the normal directory semantics for proc, that\nguarantee that a directory entry that is neither created nor destroyed\nwhile reading the directory entry will be returned.  For directory that are\neither created or destroyed during the readdir you may or may not see them.\n Furthermore you may seek to a directory offset you have previously seen.\n\nThese are the guarantee that ext[23] provides and that posix requires, and\nmore importantly that user space expects.  Plus it is a simple semantic to\nimplement reliable service.  It is just a matter of calling readdir a\nsecond time if you are wondering if something new has show up.\n\nThese better semantics are implemented by scanning through the pids in\nnumerical order and by making the file offset a pid plus a fixed offset.\n\nThe pid scan happens on the pid bitmap, which when you look at it is\nremarkably efficient for a brute force algorithm.  Given that a typical\ncache line is 64 bytes and thus covers space for 64*8 \u003d\u003d 200 pids.  There\nare only 40 cache lines for the entire 32K pid space.  A typical system\nwill have 100 pids or more so this is actually fewer cache lines we have to\nlook at to scan a linked list, and the worst case of having to scan the\nentire pid bitmap is pretty reasonable.\n\nIf we need something more efficient we can go to a more efficient data\nstructure for indexing the pids, but for now what we have should be\nsufficient.\n\nIn addition this takes no additional locks and is actually less code than\nwhat we are doing now.\n\nAlso another very subtle bug in this area has been fixed.  It is possible\nto catch a task in the middle of de_thread where a thread is assuming the\nthread of it\u0027s thread group leader.  This patch carefully handles that case\nso if we hit it we don\u0027t fail to return the pid, that is undergoing the\nde_thread dance.\n\nThanks to KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e for\nproviding the first fix, pointing this out and working on it.\n\n[oleg@tv-sign.ru: fix it]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Jean Delvare \u003cjdelvare@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c18258c6f0848f97e85287f6271c511a092bb784",
      "tree": "16c057a171b7623895ee208459392c1104193b84",
      "parents": [
        "35fa2048ab13d1be846be612e395c15c200bd51c"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 27 01:51:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:19 2006 -0700"
      },
      "message": "[PATCH] pid: Implement transfer_pid and use it to simplify de_thread\n\nIn de_thread we move pids from one process to another, a rather ugly case.\nThe function transfer_pid makes it clear what we are doing, and makes the\naction atomic.  This is useful we ever want to atomically traverse the\nprocess group and session lists, in a rcu safe manner.\n\nEven if the atomic properties this change should be a win as transfer_pid\nshould be less code to execute than executing both attach_pid and\ndetach_pid, and this should make de_thread slightly smaller as only a\nsingle function call needs to be emitted.  The only downside is that the\ncode might be slower to execute as the odds are against transfer_pid being\nin cache.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "92476d7fc0326a409ab1d3864a04093a6be9aca7",
      "tree": "ea50a5a31522492d9915e0763a7adc6ac87c4fbc",
      "parents": [
        "8c7904a00b06d2ee51149794b619e07369fcf9d4"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Mar 31 02:31:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:19:00 2006 -0800"
      },
      "message": "[PATCH] pidhash: Refactor the pid hash table\n\nSimplifies the code, reduces the need for 4 pid hash tables, and makes the\ncode more capable.\n\nIn the discussions I had with Oleg it was felt that to a large extent the\ncleanup itself justified the work.  With struct pid being dynamically\nallocated meant we could create the hash table entry when the pid was\nallocated and free the hash table entry when the pid was freed.  Instead of\nplaying with the hash lists when ever a process would attach or detach to a\nprocess.\n\nFor myself the fact that it gave what my previous task_ref patch gave for free\nwith simpler code was a big win.  The problem is that if you hold a reference\nto struct task_struct you lock in 10K of low memory.  If you do that in a user\ncontrollable way like /proc does, with an unprivileged but hostile user space\napplication with typical resource limits of 1000 fds and 100 processes I can\ntrigger the OOM killer by consuming all of low memory with task structs, on a\nmachine wight 1GB of low memory.\n\nIf I instead hold a reference to struct pid which holds a pointer to my\ntask_struct, I don\u0027t suffer from that problem because struct pid is 2 orders\nof magnitude smaller.  In fact struct pid is small enough that most other\nkernel data structures dwarf it, so simply limiting the number of referring\ndata structures is enough to prevent exhaustion of low memory.\n\nThis splits the current struct pid into two structures, struct pid and struct\npid_link, and reduces our number of hash tables from PIDTYPE_MAX to just one.\nstruct pid_link is the per process linkage into the hash tables and lives in\nstruct task_struct.  struct pid is given an indepedent lifetime, and holds\npointers to each of the pid types.\n\nThe independent life of struct pid simplifies attach_pid, and detach_pid,\nbecause we are always manipulating the list of pids and not the hash table.\nIn addition in giving struct pid an indpendent life it makes the concept much\nmore powerful.\n\nKernel data structures can now embed a struct pid * instead of a pid_t and\nnot suffer from pid wrap around problems or from keeping unnecessarily\nlarge amounts of memory allocated.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "47e65328a7b1cdfc4e3102e50d60faf94ebba7d3",
      "tree": "78e00a5321cca87767806a91e623e71b5c6637c7",
      "parents": [
        "88531f725bd52e37a7be726860e4ff3f09031d89"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:44 2006 -0800"
      },
      "message": "[PATCH] pids: kill PIDTYPE_TGID\n\nThis patch kills PIDTYPE_TGID pid_type thus saving one hash table in\nkernel/pid.c and speeding up subthreads create/destroy a bit.  It is also a\npreparation for the further tref/pids rework.\n\nThis patch adds \u0027struct list_head thread_group\u0027 to \u0027struct task_struct\u0027\ninstead.\n\nWe don\u0027t detach group leader from PIDTYPE_PID namespace until another\nthread inherits it\u0027s -\u003epid \u003d\u003d -\u003etgid, so we are safe wrt premature\nfree_pidmap(-\u003etgid) call.\n\nCurrently there are no users of find_task_by_pid_type(PIDTYPE_TGID).\nShould the need arise, we can use find_task_by_pid()-\u003egroup_leader.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-By: Eric Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d73d65293e3e2de7e916a89c8da30be0948afab7",
      "tree": "62b0ca76e3099c927f2960856dd060b136a8ccef",
      "parents": [
        "652486fb84a07ed750f1c11639518f55808bf555"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 28 16:11:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:40 2006 -0800"
      },
      "message": "[PATCH] pidhash: kill switch_exec_pids\n\nswitch_exec_pids is only called from de_thread by way of exec, and it is\nonly called when we are exec\u0027ing from a non thread group leader.\n\nCurrently switch_exec_pids gives the leader the pid of the thread and\nunhashes and rehashes all of the process groups.  The leader is already in\nthe EXIT_DEAD state so no one cares about it\u0027s pids.  The only concern for\nthe leader is that __unhash_process called from release_task will function\ncorrectly.  If we don\u0027t touch the leader at all we know that\n__unhash_process will work fine so there is no need to touch the leader.\n\nFor the task becomming the thread group leader, we just need to give it the\npid of the old thread group leader, add it to the task list, and attach it\nto the session and the process group of the thread group.\n\nCurrently de_thread is also adding the task to the task list which is just\nsilly.\n\nCurrently the only leader of __detach_pid besides detach_pid is\nswitch_exec_pids because of the ugly extra work that was being\nperformed.\n\nSo this patch removes switch_exec_pids because it is doing too much, it is\ncreating an unnecessary special case in pid.c, duing work duplicated in\nde_thread, and generally obscuring what it is going on.\n\nThe necessary work is added to de_thread, and it seems to be a little\nclearer there what is going on.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
