)]}'
{
  "log": [
    {
      "commit": "8767ba2796a1c894e6d9524584a26a8224f0543d",
      "tree": "cefe04f3420ae11d46c4badbd1d3b2993da156b7",
      "parents": [
        "42d53b4ff7d61487d18274ebdf1f70c1aef6f122"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Fri Jan 08 14:42:38 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 11 09:34:04 2010 -0800"
      },
      "message": "kmod: fix resource leak in call_usermodehelper_pipe()\n\nFix resource (write-pipe file) leak in call_usermodehelper_pipe().\n\nWhen call_usermodehelper_exec() fails, write-pipe file is opened and\ncall_usermodehelper_pipe() just returns an error.  Since it is hard for\ncaller to determine whether the error occured when opening the pipe or\nexecuting the helper, the caller cannot close the pipe by themselves.\n\nI\u0027ve found this resoruce leak when testing coredump.  You can check how\nthe resource leaks as below;\n\n$ echo \"|nocommand\" \u003e /proc/sys/kernel/core_pattern\n$ ulimit -c unlimited\n$ while [ 1 ]; do ./segv; done \u0026\u003e /dev/null \u0026\n$ cat /proc/meminfo (\u003c- repeat it)\n\nwhere segv.c is;\n//-----\nint main () {\n        char *p \u003d 0;\n        *p \u003d 1;\n}\n//-----\n\nThis patch closes write-pipe file if call_usermodehelper_exec() failed.\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd8dbf2e6880e30c00b18600c962d0cb5a03c555",
      "tree": "24835aaf40cec5ceb2aeecccde9240ee173f70f1",
      "parents": [
        "6e65f92ff0d6f18580737321718d09035085a3fb"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Nov 03 16:35:32 2009 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Nov 10 09:33:46 2009 +1100"
      },
      "message": "security: report the module name to security_module_request\n\nFor SELinux to do better filtering in userspace we send the name of the\nmodule along with the AVC denial when a program is denied module_request.\n\nExample output:\n\ntype\u003dSYSCALL msg\u003daudit(11/03/2009 10:59:43.510:9) : arch\u003dx86_64 syscall\u003dwrite success\u003dyes exit\u003d2 a0\u003d3 a1\u003d7fc28c0d56c0 a2\u003d2 a3\u003d7fffca0d7440 items\u003d0 ppid\u003d1727 pid\u003d1729 auid\u003dunset uid\u003droot gid\u003droot euid\u003droot suid\u003droot fsuid\u003droot egid\u003droot sgid\u003droot fsgid\u003droot tty\u003d(none) ses\u003dunset comm\u003drpc.nfsd exe\u003d/usr/sbin/rpc.nfsd subj\u003dsystem_u:system_r:nfsd_t:s0 key\u003d(null)\ntype\u003dAVC msg\u003daudit(11/03/2009 10:59:43.510:9) : avc:  denied  { module_request } for  pid\u003d1729 comm\u003drpc.nfsd kmod\u003d\"net-pf-10\" scontext\u003dsystem_u:system_r:nfsd_t:s0 tcontext\u003dsystem_u:system_r:kernel_t:s0 tclass\u003dsystem\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "483e3cd6a34ad2d7e41100bc1b98614ac42a4567",
      "tree": "ef544ccdd1e95991c32fd8b656714583b7398371",
      "parents": [
        "774a694f8cd08115d130a290d73c6d8563f26b1b",
        "d28daf923ac5e4a0d7cecebae56f3e339189366b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:24:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 11 13:24:03 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (105 commits)\n  ring-buffer: only enable ring_buffer_swap_cpu when needed\n  ring-buffer: check for swapped buffers in start of committing\n  tracing: report error in trace if we fail to swap latency buffer\n  tracing: add trace_array_printk for internal tracers to use\n  tracing: pass around ring buffer instead of tracer\n  tracing: make tracing_reset safe for external use\n  tracing: use timestamp to determine start of latency traces\n  tracing: Remove mentioning of legacy latency_trace file from documentation\n  tracing/filters: Defer pred allocation, fix memory leak\n  tracing: remove users of tracing_reset\n  tracing: disable buffers and synchronize_sched before resetting\n  tracing: disable update max tracer while reading trace\n  tracing: print out start and stop in latency traces\n  ring-buffer: disable all cpu buffers when one finds a problem\n  ring-buffer: do not count discarded events\n  ring-buffer: remove ring_buffer_event_discard\n  ring-buffer: fix ring_buffer_read crossing pages\n  ring-buffer: remove unnecessary cpu_relax\n  ring-buffer: do not swap buffers during a commit\n  ring-buffer: do not reset while in a commit\n  ...\n"
    },
    {
      "commit": "e0e817392b9acf2c98d3be80c233dddb1b52003d",
      "tree": "ee680c020039313c9f9c40ab3542bb30a7363381",
      "parents": [
        "ed6d76e4c32de0c2ad5f1d572b948ef49e465176"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Sep 02 09:13:40 2009 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Sep 02 21:29:01 2009 +1000"
      },
      "message": "CRED: Add some configurable debugging [try #6]\n\nAdd a config option (CONFIG_DEBUG_CREDENTIALS) to turn on some debug checking\nfor credential management.  The additional code keeps track of the number of\npointers from task_structs to any given cred struct, and checks to see that\nthis number never exceeds the usage count of the cred struct (which includes\nall references, not just those from task_structs).\n\nFurthermore, if SELinux is enabled, the code also checks that the security\npointer in the cred struct is never seen to be invalid.\n\nThis attempts to catch the bug whereby inode_has_perm() faults in an nfsd\nkernel thread on seeing cred-\u003esecurity be a NULL pointer (it appears that the\ncredential struct has been previously released):\n\n\thttp://www.kerneloops.org/oops.php?number\u003d252883\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "7ead8b8313d92b3a69a1a61b0dcbc4cd66c960dc",
      "tree": "614759ec1b24ea9f6d1409b866c80df0611e5d6b",
      "parents": [
        "60d970c254b95ec7a0fc4c590b510253987b64a0"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Aug 17 16:56:28 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 17 11:25:08 2009 +0200"
      },
      "message": "tracing/events: Add module tracepoints\n\nAdd trace points to trace module_load, module_free, module_get,\nmodule_put and module_request, and use trace_event facility to\nget the trace output.\n\nHere\u0027s the sample output:\n\n     TASK-PID    CPU#    TIMESTAMP  FUNCTION\n        | |       |          |         |\n    \u003c...\u003e-42    [000]     1.758380: module_request: fb0 wait\u003d1 call_site\u003dfb_open\n    ...\n    \u003c...\u003e-60    [000]     3.269403: module_load: scsi_wait_scan\n    \u003c...\u003e-60    [000]     3.269432: module_put: scsi_wait_scan call_site\u003dsys_init_module refcnt\u003d0\n    \u003c...\u003e-61    [001]     3.273168: module_free: scsi_wait_scan\n    ...\n    \u003c...\u003e-1021  [000]    13.836081: module_load: sunrpc\n    \u003c...\u003e-1021  [000]    13.840589: module_put: sunrpc call_site\u003dsys_init_module refcnt\u003d-1\n    \u003c...\u003e-1027  [000]    13.848098: module_get: sunrpc call_site\u003dtry_module_get refcnt\u003d0\n    \u003c...\u003e-1027  [000]    13.848308: module_get: sunrpc call_site\u003dget_filesystem refcnt\u003d1\n    \u003c...\u003e-1027  [000]    13.848692: module_put: sunrpc call_site\u003dput_filesystem refcnt\u003d0\n    ...\n modprobe-2587  [001]  1088.437213: module_load: trace_events_sample F\n modprobe-2587  [001]  1088.437786: module_put: trace_events_sample call_site\u003dsys_init_module refcnt\u003d0\n\nNote:\n\n- the taints flag can be \u0027F\u0027, \u0027C\u0027 and/or \u0027P\u0027 if mod-\u003etaints !\u003d 0\n\n- the module refcnt is percpu, so it can be negative in a\n  specific cpu\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nLKML-Reference: \u003c4A891B3C.5030608@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9188499cdb117d86a1ea6b04374095b098d56936",
      "tree": "7c0dd23f2c98630c426cbd0bfbf5e46cc689091e",
      "parents": [
        "a8f80e8ff94ecba629542d9b4b5f5a8ee3eb565c"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Thu Aug 13 09:44:57 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Aug 14 11:18:37 2009 +1000"
      },
      "message": "security: introducing security_request_module\n\nCalling request_module() will trigger a userspace upcall which will load a\nnew module into the kernel.  This can be a dangerous event if the process\nable to trigger request_module() is able to control either the modprobe\nbinary or the module binary.  This patch adds a new security hook to\nrequest_module() which can be used by an LSM to control a processes ability\nto call request_module().\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b43f3cbd21ffbd719fd4fa6642bfe6af255ded34",
      "tree": "f09372f7aa3057a4cca32d5c7fc19032bd7cda5a",
      "parents": [
        "622f8061a68d3f7a576c20a47b7f3bae7c8cfbef"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jul 08 01:54:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 08 09:31:56 2009 -0700"
      },
      "message": "headers: mnt_namespace.h redux\n\nFix various silly problems wrt mnt_namespace.h:\n\n - exit_mnt_ns() isn\u0027t used, remove it\n - done that, sched.h and nsproxy.h inclusions aren\u0027t needed\n - mount.h inclusion was need for vfsmount_lock, but no longer\n - remove mnt_namespace.h inclusion from files which don\u0027t use anything\n   from mnt_namespace.h\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab2b7ebaad16226c9a5e85c5f384d19fa58a7459",
      "tree": "c7a700d9300dca0855721b3a15db150ae5d86f1b",
      "parents": [
        "d4a76f8a619b5d7dfd5a0f122666fee24bb3dcb9"
      ],
      "author": {
        "name": "Tetsuo Handa",
        "email": "penguin-kernel@i-love.sakura.ne.jp",
        "time": "Tue May 26 09:11:03 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 26 12:11:19 2009 -0700"
      },
      "message": "kmod: Release sub_info on cred allocation failure.\n\ncall_usermodehelper_setup() forgot to kfree(sub_info)\nwhen prepare_usermodehelper_creds() failed.\n\nSigned-off-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "acae05156551fd7528fbb616271e672789388e3c",
      "tree": "71cb528037776997aea4d5a3128bd9c2ea723ba1",
      "parents": [
        "8c8ef42aee8fcfb4128bb94c50d55c9f80ade525"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 08 10:42:01 2009 -0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Mar 31 13:05:35 2009 +1030"
      },
      "message": "module: create a request_module_nowait()\n\nThere seems to be a common pattern in the kernel where drivers want to\ncall request_module() from inside a module_init() function. Currently\nthis would deadlock.\n\nAs a result, several drivers go through hoops like scheduling things via\nkevent, or creating custom work queues (because kevent can deadlock on them).\n\nThis patch changes this to use a request_module_nowait() function macro instead,\nwhich just fires the modprobe off but doesn\u0027t wait for it, and thus avoids the\noriginal deadlock entirely.\n\nOn my laptop this already results in one less kernel thread running..\n\n(Includes Jiri\u0027s patch to use enum umh_wait)\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e (bool-ified)\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\n"
    },
    {
      "commit": "1a2142afa5646ad5af44bbe1febaa5e0b7e71156",
      "tree": "1c76670c82adb46a7726421ad0fcba2994758964",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:10 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 +1030"
      },
      "message": "cpumask: remove dangerous CPU_MASK_ALL_PTR, \u0026CPU_MASK_ALL\n\nImpact: cleanup\n\n(Thanks to Al Viro for reminding me of this, via Ingo)\n\nCPU_MASK_ALL is the (deprecated) \"all bits set\" cpumask, defined as so:\n\n\t#define CPU_MASK_ALL (cpumask_t) { { ... } }\n\nTaking the address of such a temporary is questionable at best,\nunfortunately 321a8e9d (cpumask: add CPU_MASK_ALL_PTR macro) added\nCPU_MASK_ALL_PTR:\n\n\t#define CPU_MASK_ALL_PTR (\u0026CPU_MASK_ALL)\n\nWhich formalizes this practice.  One day gcc could bite us over this\nusage (though we seem to have gotten away with it so far).\n\nSo replace everywhere which used \u0026CPU_MASK_ALL or CPU_MASK_ALL_PTR\nwith the modern \"cpu_all_mask\" (a real const struct cpumask *).\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nReported-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "bd4207c9016749f0a212faf7f7f49e5317d96d9b",
      "tree": "e2e5a6efdbadf8a73c292e5b0895a6b4e4bd837e",
      "parents": [
        "d6b54841f4ddd836c886d1e6ac381cf309ee98a3"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Jan 06 14:42:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:27 2009 -0800"
      },
      "message": "kmod: fix varargs kernel-doc\n\nFix varargs kernel-doc format in kmod.c:\nUse @... instead of @varargs.\n\nWarning(kernel/kmod.c:67): Excess function parameter or struct member \u0027varargs\u0027 description in \u0027request_module\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d84f4f992cbd76e8f39c488cf0c5d123843923b1",
      "tree": "fc4a0349c42995715b93d0f7a3c78e9ea9b3f36e",
      "parents": [
        "745ca2475a6ac596e3d8d37c2759c0fbe2586227"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:23 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:23 2008 +1100"
      },
      "message": "CRED: Inaugurate COW credentials\n\nInaugurate copy-on-write credentials management.  This uses RCU to manage the\ncredentials pointer in the task_struct with respect to accesses by other tasks.\nA process may only modify its own credentials, and so does not need locking to\naccess or modify its own credentials.\n\nA mutex (cred_replace_mutex) is added to the task_struct to control the effect\nof PTRACE_ATTACHED on credential calculations, particularly with respect to\nexecve().\n\nWith this patch, the contents of an active credentials struct may not be\nchanged directly; rather a new set of credentials must be prepared, modified\nand committed using something like the following sequence of events:\n\n\tstruct cred *new \u003d prepare_creds();\n\tint ret \u003d blah(new);\n\tif (ret \u003c 0) {\n\t\tabort_creds(new);\n\t\treturn ret;\n\t}\n\treturn commit_creds(new);\n\nThere are some exceptions to this rule: the keyrings pointed to by the active\ncredentials may be instantiated - keyrings violate the COW rule as managing\nCOW keyrings is tricky, given that it is possible for a task to directly alter\nthe keys in a keyring in use by another task.\n\nTo help enforce this, various pointers to sets of credentials, such as those in\nthe task_struct, are declared const.  The purpose of this is compile-time\ndiscouragement of altering credentials through those pointers.  Once a set of\ncredentials has been made public through one of these pointers, it may not be\nmodified, except under special circumstances:\n\n  (1) Its reference count may incremented and decremented.\n\n  (2) The keyrings to which it points may be modified, but not replaced.\n\nThe only safe way to modify anything else is to create a replacement and commit\nusing the functions described in Documentation/credentials.txt (which will be\nadded by a later patch).\n\nThis patch and the preceding patches have been tested with the LTP SELinux\ntestsuite.\n\nThis patch makes several logical sets of alteration:\n\n (1) execve().\n\n     This now prepares and commits credentials in various places in the\n     security code rather than altering the current creds directly.\n\n (2) Temporary credential overrides.\n\n     do_coredump() and sys_faccessat() now prepare their own credentials and\n     temporarily override the ones currently on the acting thread, whilst\n     preventing interference from other threads by holding cred_replace_mutex\n     on the thread being dumped.\n\n     This will be replaced in a future patch by something that hands down the\n     credentials directly to the functions being called, rather than altering\n     the task\u0027s objective credentials.\n\n (3) LSM interface.\n\n     A number of functions have been changed, added or removed:\n\n     (*) security_capset_check(), -\u003ecapset_check()\n     (*) security_capset_set(), -\u003ecapset_set()\n\n     \t Removed in favour of security_capset().\n\n     (*) security_capset(), -\u003ecapset()\n\n     \t New.  This is passed a pointer to the new creds, a pointer to the old\n     \t creds and the proposed capability sets.  It should fill in the new\n     \t creds or return an error.  All pointers, barring the pointer to the\n     \t new creds, are now const.\n\n     (*) security_bprm_apply_creds(), -\u003ebprm_apply_creds()\n\n     \t Changed; now returns a value, which will cause the process to be\n     \t killed if it\u0027s an error.\n\n     (*) security_task_alloc(), -\u003etask_alloc_security()\n\n     \t Removed in favour of security_prepare_creds().\n\n     (*) security_cred_free(), -\u003ecred_free()\n\n     \t New.  Free security data attached to cred-\u003esecurity.\n\n     (*) security_prepare_creds(), -\u003ecred_prepare()\n\n     \t New. Duplicate any security data attached to cred-\u003esecurity.\n\n     (*) security_commit_creds(), -\u003ecred_commit()\n\n     \t New. Apply any security effects for the upcoming installation of new\n     \t security by commit_creds().\n\n     (*) security_task_post_setuid(), -\u003etask_post_setuid()\n\n     \t Removed in favour of security_task_fix_setuid().\n\n     (*) security_task_fix_setuid(), -\u003etask_fix_setuid()\n\n     \t Fix up the proposed new credentials for setuid().  This is used by\n     \t cap_set_fix_setuid() to implicitly adjust capabilities in line with\n     \t setuid() changes.  Changes are made to the new credentials, rather\n     \t than the task itself as in security_task_post_setuid().\n\n     (*) security_task_reparent_to_init(), -\u003etask_reparent_to_init()\n\n     \t Removed.  Instead the task being reparented to init is referred\n     \t directly to init\u0027s credentials.\n\n\t NOTE!  This results in the loss of some state: SELinux\u0027s osid no\n\t longer records the sid of the thread that forked it.\n\n     (*) security_key_alloc(), -\u003ekey_alloc()\n     (*) security_key_permission(), -\u003ekey_permission()\n\n     \t Changed.  These now take cred pointers rather than task pointers to\n     \t refer to the security context.\n\n (4) sys_capset().\n\n     This has been simplified and uses less locking.  The LSM functions it\n     calls have been merged.\n\n (5) reparent_to_kthreadd().\n\n     This gives the current thread the same credentials as init by simply using\n     commit_thread() to point that way.\n\n (6) __sigqueue_alloc() and switch_uid()\n\n     __sigqueue_alloc() can\u0027t stop the target task from changing its creds\n     beneath it, so this function gets a reference to the currently applicable\n     user_struct which it then passes into the sigqueue struct it returns if\n     successful.\n\n     switch_uid() is now called from commit_creds(), and possibly should be\n     folded into that.  commit_creds() should take care of protecting\n     __sigqueue_alloc().\n\n (7) [sg]et[ug]id() and co and [sg]et_current_groups.\n\n     The set functions now all use prepare_creds(), commit_creds() and\n     abort_creds() to build and check a new set of credentials before applying\n     it.\n\n     security_task_set[ug]id() is called inside the prepared section.  This\n     guarantees that nothing else will affect the creds until we\u0027ve finished.\n\n     The calling of set_dumpable() has been moved into commit_creds().\n\n     Much of the functionality of set_user() has been moved into\n     commit_creds().\n\n     The get functions all simply access the data directly.\n\n (8) security_task_prctl() and cap_task_prctl().\n\n     security_task_prctl() has been modified to return -ENOSYS if it doesn\u0027t\n     want to handle a function, or otherwise return the return value directly\n     rather than through an argument.\n\n     Additionally, cap_task_prctl() now prepares a new set of credentials, even\n     if it doesn\u0027t end up using it.\n\n (9) Keyrings.\n\n     A number of changes have been made to the keyrings code:\n\n     (a) switch_uid_keyring(), copy_keys(), exit_keys() and suid_keys() have\n     \t all been dropped and built in to the credentials functions directly.\n     \t They may want separating out again later.\n\n     (b) key_alloc() and search_process_keyrings() now take a cred pointer\n     \t rather than a task pointer to specify the security context.\n\n     (c) copy_creds() gives a new thread within the same thread group a new\n     \t thread keyring if its parent had one, otherwise it discards the thread\n     \t keyring.\n\n     (d) The authorisation key now points directly to the credentials to extend\n     \t the search into rather pointing to the task that carries them.\n\n     (e) Installing thread, process or session keyrings causes a new set of\n     \t credentials to be created, even though it\u0027s not strictly necessary for\n     \t process or session keyrings (they\u0027re shared).\n\n(10) Usermode helper.\n\n     The usermode helper code now carries a cred struct pointer in its\n     subprocess_info struct instead of a new session keyring pointer.  This set\n     of credentials is derived from init_cred and installed on the new process\n     after it has been cloned.\n\n     call_usermodehelper_setup() allocates the new credentials and\n     call_usermodehelper_freeinfo() discards them if they haven\u0027t been used.  A\n     special cred function (prepare_usermodeinfo_creds()) is provided\n     specifically for call_usermodehelper_setup() to call.\n\n     call_usermodehelper_setkeys() adjusts the credentials to sport the\n     supplied keyring as the new session keyring.\n\n(11) SELinux.\n\n     SELinux has a number of changes, in addition to those to support the LSM\n     interface changes mentioned above:\n\n     (a) selinux_setprocattr() no longer does its check for whether the\n     \t current ptracer can access processes with the new SID inside the lock\n     \t that covers getting the ptracer\u0027s SID.  Whilst this lock ensures that\n     \t the check is done with the ptracer pinned, the result is only valid\n     \t until the lock is released, so there\u0027s no point doing it inside the\n     \t lock.\n\n(12) is_single_threaded().\n\n     This function has been extracted from selinux_setprocattr() and put into\n     a file of its own in the lib/ directory as join_session_keyring() now\n     wants to use it too.\n\n     The code in SELinux just checked to see whether a task shared mm_structs\n     with other tasks (CLONE_VM), but that isn\u0027t good enough.  We really want\n     to know if they\u0027re part of the same thread group (CLONE_THREAD).\n\n(13) nfsd.\n\n     The NFS server daemon now has to use the COW credentials to set the\n     credentials it is going to use.  It really needs to pass the credentials\n     down to the functions it calls, but it can\u0027t do that until other patches\n     in this series have been applied.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "8bbf4976b59fc9fc2861e79cab7beb3f6d647640",
      "tree": "9bd621217cbdfcf94aca5b220de7363254d7fc23",
      "parents": [
        "e9e349b051d98799b743ebf248cc2d986fedf090"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:14 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:14 2008 +1100"
      },
      "message": "KEYS: Alter use of key instantiation link-to-keyring argument\n\nAlter the use of the key instantiation and negation functions\u0027 link-to-keyring\narguments.  Currently this specifies a keyring in the target process to link\nthe key into, creating the keyring if it doesn\u0027t exist.  This, however, can be\na problem for copy-on-write credentials as it means that the instantiating\nprocess can alter the credentials of the requesting process.\n\nThis patch alters the behaviour such that:\n\n (1) If keyctl_instantiate_key() or keyctl_negate_key() are given a specific\n     keyring by ID (ringid \u003e\u003d 0), then that keyring will be used.\n\n (2) If keyctl_instantiate_key() or keyctl_negate_key() are given one of the\n     special constants that refer to the requesting process\u0027s keyrings\n     (KEY_SPEC_*_KEYRING, all \u003c\u003d 0), then:\n\n     (a) If sys_request_key() was given a keyring to use (destringid) then the\n     \t key will be attached to that keyring.\n\n     (b) If sys_request_key() was given a NULL keyring, then the key being\n     \t instantiated will be attached to the default keyring as set by\n     \t keyctl_set_reqkey_keyring().\n\n (3) No extra link will be made.\n\nDecision point (1) follows current behaviour, and allows those instantiators\nwho\u0027ve searched for a specifically named keyring in the requestor\u0027s keyring so\nas to partition the keys by type to still have their named keyrings.\n\nDecision point (2) allows the requestor to make sure that the key or keys that\nget produced by request_key() go where they want, whilst allowing the\ninstantiator to request that the key is retained.  This is mainly useful for\nsituations where the instantiator makes a secondary request, the key for which\nshould be retained by the initial requestor:\n\n\t+-----------+        +--------------+        +--------------+\n\t|           |        |              |        |              |\n\t| Requestor |-------\u003e| Instantiator |-------\u003e| Instantiator |\n\t|           |        |              |        |              |\n\t+-----------+        +--------------+        +--------------+\n\t           request_key()           request_key()\n\nThis might be useful, for example, in Kerberos, where the requestor requests a\nticket, and then the ticket instantiator requests the TGT, which someone else\nthen has to go and fetch.  The TGT, however, should be retained in the\nkeyrings of the requestor, not the first instantiator.  To make this explict\nan extra special keyring constant is also added.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "c8d8a2321f9c4ee18fbcc399fdc2a77e580a03b9",
      "tree": "edfd028285e21ba549d047c0caa4ffe523272f94",
      "parents": [
        "e4856a70cfc23266631a78e78277cf2b195babee",
        "118a9069f06ff591d51a3133e242f0c256ba2db7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 12:38:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 12:38:34 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  module: remove CONFIG_KMOD in comment after #endif\n  remove CONFIG_KMOD from fs\n  remove CONFIG_KMOD from drivers\n\nManually fix conflict due to include cleanups in drivers/md/md.c\n"
    },
    {
      "commit": "1bfcf1304ea79c46efc3724e548b13b4b442b418",
      "tree": "5adbf95b25d1d9e86fc0e5d0784550ccb9bf5be9",
      "parents": [
        "574f34cee2b6574d43bf4506f771c1cec6a5d391"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Oct 15 22:01:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:29 2008 -0700"
      },
      "message": "pm: rework disabling of user mode helpers during suspend/hibernation\n\nWe currently use a PM notifier to disable user mode helpers before suspend\nand hibernation and to re-enable them during resume.  However, this is not\nan ideal solution, because if any drivers want to upload firmware into\nmemory before suspend, they have to use a PM notifier for this purpose and\nthere is no guarantee that the ordering of PM notifiers will be as\nexpected (ie.  the notifier that disables user mode helpers has to be run\nafter the driver\u0027s notifier used for uploading the firmware).\n\nFor this reason, it seems better to move the disabling and enabling of\nuser mode helpers to separate functions that will be called by the PM core\nas necessary.\n\n[akpm@linux-foundation.org: remove unneeded ifdefs]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nAcked-by: Pavel Machek \u003cpavel@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "118a9069f06ff591d51a3133e242f0c256ba2db7",
      "tree": "eafdda824a7273c6d32d0a28db4d13e196f86ad5",
      "parents": [
        "5f4123be3cdb1dbd77fa9d6d2bb96bb9689a0a19"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Oct 17 02:38:36 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Oct 17 02:38:37 2008 +1100"
      },
      "message": "module: remove CONFIG_KMOD in comment after #endif\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "ac331d158e198d2a91a5b0a3ec4ca9991fdb57af",
      "tree": "b0921e2bc8e59d5df2c554c41c3b9f04e05d6d7c",
      "parents": [
        "f557d0996a6f9c06912528ea85e1dba0fb7d485f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Jul 25 01:45:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:28 2008 -0700"
      },
      "message": "call_usermodehelper(): increase reliability\n\nPresently call_usermodehelper_setup() uses GFP_ATOMIC.  but it can return\nNULL _very_ easily.\n\nGFP_ATOMIC is needed only when we can\u0027t sleep.  and, GFP_KERNEL is robust\nand better.\n\nthus, I add gfp_mask argument to call_usermodehelper_setup().\n\nSo, its callers pass the gfp_t as below:\n\ncall_usermodehelper() and call_usermodehelper_keys():\n\tdepend on \u0027wait\u0027 argument.\ncall_usermodehelper_pipe():\n\talways GFP_KERNEL because always run under process context.\norderly_poweroff():\n\tpass to GFP_ATOMIC because may run under interrupt context.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \"Paul Menage\" \u003cmenage@google.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be61a86d7237dd80510615f38ae21d6e1e98660c",
      "tree": "3dfe6c8275c724533f88525970a4065ae795f6e3",
      "parents": [
        "6b1ef0e60d42f2fdaec26baee8327eb156347b4f"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: NONBLOCK in pipe\n\nThis patch adds O_NONBLOCK support to pipe2.  It is minimally more involved\nthan the patches for eventfd et.al but still trivial.  The interfaces of the\ncreate_write_pipe and create_read_pipe helper functions were changed and the\none other caller as well.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_pipe2\n# ifdef __x86_64__\n#  define __NR_pipe2 293\n# elif defined __i386__\n#  define __NR_pipe2 331\n# else\n#  error \"need __NR_pipe2\"\n# endif\n#endif\n\nint\nmain (void)\n{\n  int fds[2];\n  if (syscall (__NR_pipe2, fds, 0) \u003d\u003d -1)\n    {\n      puts (\"pipe2(0) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      int fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if (fl \u0026 O_NONBLOCK)\n        {\n          printf (\"pipe2(0) set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  if (syscall (__NR_pipe2, fds, O_NONBLOCK) \u003d\u003d -1)\n    {\n      puts (\"pipe2(O_NONBLOCK) failed\");\n      return 1;\n    }\n  for (int i \u003d 0; i \u003c 2; ++i)\n    {\n      int fl \u003d fcntl (fds[i], F_GETFL);\n      if (fl \u003d\u003d -1)\n        {\n          puts (\"fcntl failed\");\n          return 1;\n        }\n      if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n        {\n          printf (\"pipe2(O_NONBLOCK) does not set non-blocking mode for fds[%d]\\n\", i);\n          return 1;\n        }\n      close (fds[i]);\n    }\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1ef5adb4cad43460ebba23c5a78cf4a55bb6a5b",
      "tree": "1556b41ff7a03a6941cb363d97204bfef501f9c4",
      "parents": [
        "a00caa1fa954c734f4214a074727a329a9ba6568"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue Jul 08 19:00:17 2008 +0200"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 22 19:24:31 2008 +1000"
      },
      "message": "remove CONFIG_KMOD from core kernel code\n\nAlways compile request_module when the kernel allows modules.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\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": "f70316dace2bb99730800d47044acb818c6735f6",
      "tree": "03c0178c8d6c0213a82b800f4a3e00c2da9a4d5c",
      "parents": [
        "fc0e474840d1fd96f28fbd76d4f36b80e7ad1cc3"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Fri Apr 04 18:11:06 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Apr 19 19:44:58 2008 +0200"
      },
      "message": "generic: use new set_cpus_allowed_ptr function\n\n  * Use new set_cpus_allowed_ptr() function added by previous patch,\n    which instead of passing the \"newly allowed cpus\" cpumask_t arg\n    by value,  pass it by pointer:\n\n    -int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)\n    +int set_cpus_allowed_ptr(struct task_struct *p, const cpumask_t *new_mask)\n\n  * Modify CPU_MASK_ALL\n\nDepends on:\n\t[sched-devel]: sched: add new set_cpus_allowed_ptr function\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "db74ece990ea59a9ec9f00f8881026059ef5caf5",
      "tree": "78de32a720defaeee1ab17d1de7b04a508fe0979",
      "parents": [
        "0d63e4f9ea61df1d727bd52a174aba732e6e1853"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:32 2008 -0800"
      },
      "message": "Dont touch fs_struct in usermodehelper\n\nThis test seems to be unnecessary since we always have rootfs mounted before\ncalling a usermodehelper.\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\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "784680336b616dcc4c17cbd25add3b49c555cdeb",
      "tree": "e607ed69188a99590a7708c922500882702b8578",
      "parents": [
        "34aebfd3bdc93c0c5614f1f61e43b6ddc4be52ae"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "nigel@nigel.suspend2.net",
        "time": "Thu Jan 17 15:21:21 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 17 15:38:59 2008 -0800"
      },
      "message": "Fix unbalanced helper_lock in kernel/kmod.c\n\ncall_usermodehelper_exec() has an exit path that can leave the\nhelper_lock() call at the top of the routine unbalanced.  The attached\npatch fixes this issue.\n\nSigned-off-by: Nigel Cunningham \u003cnigel@tuxonice.net\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": "3210f0ecdba6a81c3f8efe6f442d2e1f57db98f9",
      "tree": "e7f928376db3d0c72413760fe2232b9a50fa08b1",
      "parents": [
        "f629307c857c030d5a3dd777fee37c8bb395e171"
      ],
      "author": {
        "name": "Michael Ellerman",
        "email": "michael@ellerman.id.au",
        "time": "Tue Sep 11 15:23:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Sep 11 17:21:20 2007 -0700"
      },
      "message": "Restore call_usermodehelper_pipe() behaviour\n\nThe semantics of call_usermodehelper_pipe() used to be that it would fork\nthe helper, and wait for the kernel thread to be started.  This was\nimplemented by setting sub_info.wait to 0 (implicitly), and doing a\nwait_for_completion().\n\nAs part of the cleanup done in 0ab4dc92278a0f3816e486d6350c6652a72e06c8,\ncall_usermodehelper_pipe() was changed to pass 1 as the value for wait to\ncall_usermodehelper_exec().\n\nThis is equivalent to setting sub_info.wait to 1, which is a change from\nthe previous behaviour.  Using 1 instead of 0 causes\n__call_usermodehelper() to start the kernel thread running\nwait_for_helper(), rather than directly calling ____call_usermodehelper().\n\nThe end result is that the calling kernel code blocks until the user mode\nhelper finishes.  As the helper is expecting input on stdin, and now no one\nis writing anything, everything locks up (observed in do_coredump).\n\nThe fix is to change the 1 to UMH_WAIT_EXEC (aka 0), indicating that we\nwant to wait for the kernel thread to be started, but not for the helper to\nfinish.\n\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nAcked-by: 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": "61df47c8da1b4ba0f243975f11efc8956de0cba6",
      "tree": "2a8e6d6ae2036bf3cd0a63c8165adaecac6e96bf",
      "parents": [
        "f50cadaa8ffa72ad430e5beabe02eb752f3f72a3"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Jul 26 10:40:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:33:06 2007 -0700"
      },
      "message": "kernel-doc fix for kmod.c\n\nFix kmod.c:\nWarning(linux-2.6.23-rc1//kernel/kmod.c:364): No description found for parameter \u0027envp\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@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": "ccd4b65aef4be2278543fde5b999e55a4d694fd8",
      "tree": "2753440a79dab444eb3fa01fcaed1c996e1cfe28",
      "parents": [
        "8cdd4936c17bd8085cb0dfacc4a37ccf8d0ada7b"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "PM: prevent frozen user mode helpers from failing the freezing of tasks\n\nAt present, if a user mode helper is running while\nusermodehelper_pm_callback() is executed, the helper may be frozen and the\ncompletion in call_usermodehelper_exec() won\u0027t be completed until user\nspace processes are thawed.  As a result, the freezing of kernel threads\nmay fail, which is not desirable.\n\nPrevent this from happening by introducing a counter of running user mode\nhelpers and allowing usermodehelper_pm_callback() to succeed for action \u003d\nPM_HIBERNATION_PREPARE or action \u003d PM_SUSPEND_PREPARE only if there are no\nhelpers running.  [Namely, usermodehelper_pm_callback() waits for at most\nRUNNING_HELPERS_TIMEOUT for the number of running helpers to become zero\nand fails if that doesn\u0027t happen.]\n\nSpecial thanks to Uli Luckas \u003cu.luckas@road.de\u003e, Pavel Machek\n\u003cpavel@ucw.cz\u003e and Oleg Nesterov \u003coleg@tv-sign.ru\u003e for reviewing the\nprevious versions of this patch and for very useful comments.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Uli Luckas \u003cu.luckas@road.de\u003e\nAcked-by: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\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": "8cdd4936c17bd8085cb0dfacc4a37ccf8d0ada7b",
      "tree": "0a9ff7cf1b1a797b1267beeb317507210f4dd170",
      "parents": [
        "b10d911749d37dccfa5873d2088aea3f074b9e45"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Jul 19 01:47:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:42 2007 -0700"
      },
      "message": "PM: disable usermode helper before hibernation and suspend\n\nUse a hibernation and suspend notifier to disable the user mode helper before\na hibernation/suspend and enable it after the operation.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nAcked-by: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86313c488a6848b7ec2ba04e74f25f79dd32a0b7",
      "tree": "3b190f7afc338362470573b563f65a1eb83795ac",
      "parents": [
        "10a0a8d4e3f6bf2d077f94344441909abe670f5a"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:03 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:40 2007 -0700"
      },
      "message": "usermodehelper: Tidy up waiting\n\nRather than using a tri-state integer for the wait flag in\ncall_usermodehelper_exec, define a proper enum, and use that.  I\u0027ve\npreserved the integer values so that any callers I\u0027ve missed should\nstill work OK.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "0ab4dc92278a0f3816e486d6350c6652a72e06c8",
      "tree": "84bc321c94ca86a3b5eafa308c8dba9af85a725c",
      "parents": [
        "d84d1cc7647c7e4f77d517e2d87b4a106a0420d9"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@xensource.com",
        "time": "Tue Jul 17 18:37:02 2007 -0700"
      },
      "committer": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Jul 18 08:47:40 2007 -0700"
      },
      "message": "usermodehelper: split setup from execution\n\nRather than having hundreds of variations of call_usermodehelper for\nvarious pieces of usermode state which could be set up, split the\ninfo allocation and initialization from the actual process execution.\n\nThis means the general pattern becomes:\n info \u003d call_usermodehelper_setup(path, argv, envp); /* basic state */\n call_usermodehelper_\u003cSET EXTRA STATE\u003e(info, stuff...);\t/* extra state */\n call_usermodehelper_exec(info, wait);\t/* run process and free info */\n\nThis patch introduces wrappers for all the existing calling styles for\ncall_usermodehelper_*, but folds their implementations into one.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Bj?rn Steinbrink \u003cB.Steinbrink@gmx.de\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "90cce03d9bfcb28600a56efef6b0a5a4fbf6c2b1",
      "tree": "f0b1909311fe5662eeac7923bd7830a9811ac2aa",
      "parents": [
        "b8a124da9261873e3e3541898d5c46d273afee34"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "wait_for_helper: remove unneeded do_sigaction()\n\nallow_signal(SIGCHLD) does all necessary job, no need to call do_sigaction()\nprior to.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\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": "c93465181fed0f8f5942a41108943dadea0aa345",
      "tree": "a2c1a8fe514b97c31bd3832136894933c3f28fee",
      "parents": [
        "28e53bddf814485699a4142bc056fd37d4e11dd4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "____call_usermodehelper: don\u0027t flush_signals()\n\n____call_usermodehelper() has no reason for flush_signals().  It is a fresh\nforked process which is going to exec a user-space application or exit on\nfailure.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b73a7e76c1eeaa770a41554698917c3c45686a07",
      "tree": "70c9016ca24bc06d1781ace007ce557bbe3d3cf8",
      "parents": [
        "6672f76a5a1878d42264c1deba8f1ab52b4618d9"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@linux01.gwdg.de",
        "time": "Tue May 08 00:28:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "Fix kevent\u0027s childs priority greediness\n\nFix kevent\u0027s childs priority greediness.  Such tasks were always scheduled\nat nice level -5 and, at that time, udev stole us the CPU time with -5.\n\nAlready posted at http://lkml.org/lkml/2005/1/10/85\n\n[akpm@linux-foundation.org: add comment]\nSigned-off-by: Jan Engelhardt \u003cjengelh@gmx.de\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@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": "dfff0a0671baf4e69fc676bf8150635407548288",
      "tree": "a477399030ef79029b7c8ef064a2695ea5f07c56",
      "parents": [
        "82f0cf9b7c42684c29189ddb6d0bc86eb1137fc4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Feb 23 14:54:57 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Feb 23 14:54:57 2007 -0800"
      },
      "message": "Revert \"Driver core: let request_module() send a /sys/modules/kmod/-uevent\"\n\nThis reverts commit c353c3fb0700a3c17ea2b0237710a184232ccd7f.\n\nIt turns out that we end up with a loop trying to load the unix\nmodule and calling netfilter to do that.  Will redo the patch\nlater to not have this loop.\n\nAcked-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "4541ac94d0ea0b00776edd5904ac91dd6d6330f7",
      "tree": "bb2e9dac1923a9f7e5ad3b660f14177c14d38068",
      "parents": [
        "2a9df4945106d62ed9249a44d666fab93c685f7a"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Feb 20 01:07:49 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Feb 23 14:52:09 2007 -0800"
      },
      "message": "make kernel/kmod.c:kmod_mk static\n\nThis patch makes the needlessly global struct kmod_mk static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c353c3fb0700a3c17ea2b0237710a184232ccd7f",
      "tree": "7b5fd590bd9b0a08bee8425ad074e993629683d1",
      "parents": [
        "89790fd789e024b23eb1fbccedd84a2015441ce0"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Fri Feb 02 16:39:12 2007 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Feb 16 15:19:15 2007 -0800"
      },
      "message": "Driver core: let request_module() send a /sys/modules/kmod/-uevent\n\nOn recent systems, calls to /sbin/modprobe are handled by udev depending\non the kind of device the kernel has discovered. This patch creates an\nuevent for the kernels internal request_module(), to let udev take control\nover the request, instead of forking the binary directly by the kernel.\nThe direct execution of /sbin/modprobe can be disabled by setting:\n  /sys/module/kmod/mod_request_helper (/proc/sys/kernel/modprobe)\nto an empty string, the same way /proc/sys/kernel/hotplug is disabled on an\nudev system.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "a98f0dd34d94ea0b5f3816196bea5dba467827bb",
      "tree": "019235e4d668b95366dd98dc6474716139c1584b",
      "parents": [
        "24ce0e96f2dea558762c994d054ea2f3c01fa95a"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Feb 13 13:26:23 2007 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Tue Feb 13 13:26:23 2007 +0100"
      },
      "message": "[PATCH] x86-64: Allow to run a program when a machine check event is detected\n\nWhen a machine check event is detected (including a AMD RevF threshold\noverflow event) allow to run a \"trigger\" program. This allows user space\nto react to such events sooner.\n\nThe trigger is configured using a new trigger entry in the\nmachinecheck sysfs interface. It is currently shared between\nall CPUs.\n\nI also fixed the AMD threshold handler to run the machine\ncheck polling code immediately to actually log any events\nthat might have caused the threshold interrupt.\n\nAlso added some documentation for the mce sysfs interface.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "6b3286ed1169d74fea401367d6d4d6c6ec758a81",
      "tree": "faf5beddb797875bb92855f8606735478267959a",
      "parents": [
        "1ec320afdc9552c92191d5f89fcd1ebe588334ca"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@sw.ru",
        "time": "Fri Dec 08 02:37:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:51 2006 -0800"
      },
      "message": "[PATCH] rename struct namespace to struct mnt_namespace\n\nRename \u0027struct namespace\u0027 to \u0027struct mnt_namespace\u0027 to avoid confusion with\nother namespaces being developped for the containers : pid, uts, ipc, etc.\n\u0027namespace\u0027 variables and attributes are also renamed to \u0027mnt_ns\u0027\n\nSigned-off-by: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c1ac1b49122b805adfa4efc620592f68dccf5db",
      "tree": "87557f4bc2fd4fe65b7570489c2f610c45c0adcd",
      "parents": [
        "c4028958b6ecad064b1a6303a6a5906d4fe48d73",
        "d916faace3efc0bf19fe9a615a1ab8fa1a24cd93"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Dec 05 14:37:56 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@warthog.cambridge.redhat.com",
        "time": "Tue Dec 05 14:37:56 2006 +0000"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6\n\nConflicts:\n\n\tdrivers/infiniband/core/iwcm.c\n\tdrivers/net/chelsio/cxgb2.c\n\tdrivers/net/wireless/bcm43xx/bcm43xx_main.c\n\tdrivers/net/wireless/prism54/islpci_eth.c\n\tdrivers/usb/core/hub.h\n\tdrivers/usb/input/hid-core.c\n\tnet/core/netpoll.c\n\nFix up merge failures with Linus\u0027s head and fix new compilation failures.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "3cce4856ff3dfa663b1a168dab48120d70820da6",
      "tree": "8d71aa53cff785eb89acd2499179deaf8bc44ca3",
      "parents": [
        "967bf623e9f5eecfb056b1ba7e0efd74a21c9c3a"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Nov 28 12:29:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Tue Nov 28 17:26:50 2006 -0800"
      },
      "message": "[PATCH] fix create_write_pipe() error check\n\nThe return value of create_write_pipe()/create_read_pipe() should be\nchecked by IS_ERR().\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "65f27f38446e1976cc98fd3004b110fedcddd189",
      "tree": "68f8be93feae31dfa018c22db392a05546b63ee1",
      "parents": [
        "365970a1ea76d81cb1ad2f652acb605f06dae256"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:55:48 2006 +0000"
      },
      "message": "WorkStruct: Pass the work_struct pointer instead of context data\n\nPass the work_struct pointer to the work function rather than context data.\nThe work function can use container_of() to work out the data.\n\nFor the cases where the container of the work_struct may go away the moment the\npending bit is cleared, it is made possible to defer the release of the\nstructure by deferring the clearing of the pending bit.\n\nTo make this work, an extra flag is introduced into the management side of the\nwork_struct.  This governs auto-release of the structure upon execution.\n\nOrdinarily, the work queue executor would release the work_struct for further\nscheduling or deallocation by clearing the pending bit prior to jumping to the\nwork function.  This means that, unless the driver makes some guarantee itself\nthat the work_struct won\u0027t go away, the work function may not access anything\nelse in the work_struct or its container lest they be deallocated..  This is a\nproblem if the auxiliary data is taken away (as done by the last patch).\n\nHowever, if the pending bit is *not* cleared before jumping to the work\nfunction, then the work function *may* access the work_struct and its container\nwith no problems.  But then the work function must itself release the\nwork_struct by calling work_release().\n\nIn most cases, automatic release is fine, so this is the default.  Special\ninitiators exist for the non-auto-release case (ending in _NAR).\n\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "6760856791c6e527da678021ee6a67896549d4da",
      "tree": "31bf78dac3a2ea68282ae394aeedb15bc92ae7d7",
      "parents": [
        "2453a3062d36f39f01302f9f1ad18e7a0c54fe38"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 02 02:18:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:23 2006 -0700"
      },
      "message": "[PATCH] introduce kernel_execve\n\nThe use of execve() in the kernel is dubious, since it relies on the\n__KERNEL_SYSCALLS__ mechanism that stores the result in a global errno\nvariable.  As a first step of getting rid of this, change all users to a\nglobal kernel_execve function that returns a proper error code.\n\nThis function is a terrible hack, and a later patch removes it again after the\nkernel syscalls are gone.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Hirokazu Takata \u003ctakata.hirokazu@renesas.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d025c9db7f31fc0554ce7fb2dfc78d35a77f3487",
      "tree": "5da0a10cbc4b1a5cd5f04d7af2df334352df3728",
      "parents": [
        "e239ca540594cff00adcce163dc332b27015d8e5"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sat Sep 30 23:29:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] Support piping into commands in /proc/sys/kernel/core_pattern\n\nUsing the infrastructure created in previous patches implement support to\npipe core dumps into programs.\n\nThis is done by overloading the existing core_pattern sysctl\nwith a new syntax:\n\n|program\n\nWhen the first character of the pattern is a \u0027|\u0027 the kernel will instead\nthreat the rest of the pattern as a command to run.  The core dump will be\nwritten to the standard input of that program instead of to a file.\n\nThis is useful for having automatic core dump analysis without filling up\ndisks.  The program can do some simple analysis and save only a summary of\nthe core dump.\n\nThe core dump proces will run with the privileges and in the name space of\nthe process that caused the core dump.\n\nI also increased the core pattern size to 128 bytes so that longer command\nlines fit.\n\nMost of the changes comes from allowing core dumps without seeks.  They are\nfairly straight forward though.\n\nOne small incompatibility is that if someone had a core pattern previously\nthat started with \u0027|\u0027 they will get suddenly new behaviour.  I think that\u0027s\nunlikely to be a real problem though.\n\nAdditional background:\n\n\u003e Very nice, do you happen to have a program that can accept this kind of\n\u003e input for crash dumps?  I\u0027m guessing that the embedded people will\n\u003e really want this functionality.\n\nI had a cheesy demo/prototype.  Basically it wrote the dump to a file again,\nran gdb on it to get a backtrace and wrote the summary to a shared directory.\nThen there was a simple CGI script to generate a \"top 10\" crashes HTML\nlisting.\n\nUnfortunately this still had the disadvantage to needing full disk space for a\ndump except for deleting it afterwards (in fact it was worse because over the\npipe holes didn\u0027t work so if you have a holey address map it would require\nmore space).\n\nFortunately gdb seems to be happy to handle /proc/pid/fd/xxx input pipes as\ncores (at least it worked with zsh\u0027s \u003d(cat core) syntax), so it would be\nlikely possible to do it without temporary space with a simple wrapper that\ncalls it in the right way.  I ran out of time before doing that though.\n\nThe demo prototype scripts weren\u0027t very good.  If there is really interest I\ncan dig them out (they are currently on a laptop disk on the desk with the\nlaptop itself being in service), but I would recommend to rewrite them for any\nserious application of this and fix the disk space problem.\n\nAlso to be really useful it should probably find a way to automatically fetch\nthe debuginfos (I cheated and just installed them in advance).  If nobody else\ndoes it I can probably do the rewrite myself again at some point.\n\nMy hope at some point was that desktops would support it in their builtin\ncrash reporters, but at least the KDE people I talked too seemed to be happy\nwith their user space only solution.\n\nAlan sayeth:\n\n  I don\u0027t believe that piping as such as neccessarily the right model, but\n  the ability to intercept and processes core dumps from user space is asked\n  for by many enterprise users as well.  They want to know about, capture,\n  analyse and process core dumps, often centrally and in automated form.\n\n[akpm@osdl.org: loff_t !\u003d unsigned long]\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e239ca540594cff00adcce163dc332b27015d8e5",
      "tree": "8dfb5c0be4864d738df5a5282e56d9e57ce8261f",
      "parents": [
        "d6cbd281d189977b38eac7eb2a4678de19b6b483"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Sat Sep 30 23:29:27 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] Create call_usermodehelper_pipe()\n\nA new member in the ever growing family of call_usermode* functions is\nborn.  The new call_usermodehelper_pipe() function allows to pipe data to\nthe stdin of the called user mode progam and behaves otherwise like the\nnormal call_usermodehelp() (except that it always waits for the child to\nfinish)\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "111dbe0c8a21dffa473239861be47ebc87f593b3",
      "tree": "e2bbc7f3abdf3110f0292f0fd0d3a13a0b018dcd",
      "parents": [
        "3e26a423e78c1bb1ebd29c49d4ae4ccbbacd861b"
      ],
      "author": {
        "name": "Björn Steinbrink",
        "email": "B.Steinbrink@gmx.de",
        "time": "Fri Sep 29 02:00:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:16 2006 -0700"
      },
      "message": "[PATCH] Fix ____call_usermodehelper errors being silently ignored\n\nIf ____call_usermodehelper fails, we\u0027re not interested in the child\nprocess\u0027 exit value, but the real error, so let\u0027s stop wait_for_helper from\noverwriting it in that case.\n\nIssue discovered by Benedikt Böhm while working on a Linux-VServer usermode\nhelper.\n\nSigned-off-by: Björn Steinbrink \u003cB.Steinbrink@gmx.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e4b69aa2a1bcee21f8d5e089b8682dd8aaace5eb",
      "tree": "ccc3ff548d892965999d2ec2d64617e6daff41ac",
      "parents": [
        "1ab7a1f3b496aae5b1e062a6f50d62830c248190"
      ],
      "author": {
        "name": "Kenneth Lee",
        "email": "kenlee@dg.gov.cn",
        "time": "Sat Sep 16 12:15:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 16 12:54:32 2006 -0700"
      },
      "message": "[PATCH] bug fix in kernel/kmod.c\n\nI think there is a bug in kmod.c: In __call_usermodehelper(), when\nkernel_thread(wait_for_helper, ...) return success, since wait_for_helper()\nmight call complete() at any time, the sub_info should not be used any\nmore.\n\nNormally wait_for_helper() take a long time to finish, you may not get\nproblem for most of the case.  But if you remove /sbin/modprobe, it may\nbecome easier for you to get a oop in khelper.\n\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "60be6b9a41cb0da0df7a9f11486da56baebf04cd",
      "tree": "26cb558d0d57183fdbf9136ad54b581328d6f016",
      "parents": [
        "366c7f554e888e51b8395f9b07b273fe775c7ff3"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:09 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate on-stack completions\n\nlockdep needs to have the waitqueue lock initialized for on-stack waitqueues\nimplicitly initialized by DECLARE_COMPLETION().  Annotate on-stack completions\naccordingly.\n\nHas no effect on non-lockdep kernels.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "8292d633add73d40eda1d26089e2fc758944ac7c",
      "tree": "963c4ec3c3a30223f1929cb67abe18f58ec17f5c",
      "parents": [
        "6ac781b11ade6e3451f6b460991c8b2b87e58280"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Tue Mar 28 16:11:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 18:36:41 2006 -0800"
      },
      "message": "[PATCH] wait_for_helper: trivial style cleanup\n\nUse NULL instead of (... *)0\n\nSigned-off-by: 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": "20e1129ab831486c811d50d3905343ad48c4275f",
      "tree": "ab99b7172b903d2b4d3c58d45c11c41e4bba9c87",
      "parents": [
        "29db9190634067c5a328ee5fcc2890251b836b4b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sun Oct 30 15:02:44 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:23 2005 -0800"
      },
      "message": "[PATCH] Keys: Get rid of warning in kmod.c if keys disabled\n\nThe attached patch gets rid of a \"statement without effect\" warning when\nCONFIG_KEYS is disabled by making use of the return value of key_get().\nThe compiler will optimise all of this away when keys are disabled.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7888e7ff4ee579442128d7d12a9c9dbf2cf7de6a",
      "tree": "abe428ecb966e1dae07fce17f38e3e0c0ab4f134",
      "parents": [
        "76d8aeabfeb1c42641a81c44280177b9a08670d8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Jun 23 22:00:51 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:18 2005 -0700"
      },
      "message": "[PATCH] Keys: Pass session keyring to call_usermodehelper()\n\nThe attached patch makes it possible to pass a session keyring through to the\nprocess spawned by call_usermodehelper().  This allows patch 3/3 to pass an\nauthorisation key through to /sbin/request-key, thus permitting better access\ncontrols when doing just-in-time key creation.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\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"
    }
  ]
}
