)]}'
{
  "log": [
    {
      "commit": "221af7f87b97431e3ee21ce4b0e77d5411cf1549",
      "tree": "480126aada06d87c09cb62e7c8fa292572438c18",
      "parents": [
        "64a028a6de08545a2c94f302bc7694bf48aee5b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 28 22:14:42 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 29 08:22:01 2010 -0800"
      },
      "message": "Split \u0027flush_old_exec\u0027 into two functions\n\n\u0027flush_old_exec()\u0027 is the point of no return when doing an execve(), and\nit is pretty badly misnamed.  It doesn\u0027t just flush the old executable\nenvironment, it also starts up the new one.\n\nWhich is very inconvenient for things like setting up the new\npersonality, because we want the new personality to affect the starting\nof the new environment, but at the same time we do _not_ want the new\npersonality to take effect if flushing the old one fails.\n\nAs a result, the x86-64 \u002732-bit\u0027 personality is actually done using this\ninsane \"I\u0027m going to change the ABI, but I haven\u0027t done it yet\" bit\n(TIF_ABI_PENDING), with SET_PERSONALITY() not actually setting the\npersonality, but just the \"pending\" bit, so that \"flush_thread()\" can do\nthe actual personality magic.\n\nThis patch in no way changes any of that insanity, but it does split the\n\u0027flush_old_exec()\u0027 function up into a preparatory part that can fail\n(still called flush_old_exec()), and a new part that will actually set\nup the new exec environment (setup_new_exec()).  All callers are changed\nto trivially comply with the new world order.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f6151dfea21496d43dbaba32cfcd9c9f404769bc",
      "tree": "092b73a1cd7edbd0e04fe2076ed678447446aa70",
      "parents": [
        "9cd80bbb07fcd6d4d037fad4297496d3b132ac6b"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Thu Dec 17 15:27:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 15:45:31 2009 -0800"
      },
      "message": "mm: introduce coredump parameter structure\n\nIntroduce coredump parameter data structure (struct coredump_params) to\nsimplify binfmt-\u003ecore_dump() arguments.\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nSuggested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17580d7f2f632ff8c9786d609508c35c9f56e1f3",
      "tree": "488abddb16d4640f4c27fdcf2c36186c6b70bdcc",
      "parents": [
        "fe30af971d896c144ef4708f97cf9d3186303c42"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Jan 03 07:16:23 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:45:54 2009 -0800"
      },
      "message": "sanitize ifdefs in binfmt_aout\n\nThey are actually alpha vs.  i386/arm/m68k i.e. ecoff vs. aout.\n\nIn the only place where we actually tried to handle arm and i386/m68k in\ndifferent ways (START_DATA() in coredump handling), the arm variant\nworks for all of them (i386 and m68k have u.start_code set to 0).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe30af971d896c144ef4708f97cf9d3186303c42",
      "tree": "c69bd377e0144708415a4967ced8469250acd6ef",
      "parents": [
        "e0b685d39a0404e7f87fb7b7808c3b37a115fe11"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Jan 03 07:16:13 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 11:45:54 2009 -0800"
      },
      "message": "remove the rudiment of a.out for sparc\n\nit\u0027s been used only in sunos compat\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6f76f23d297f70e2a6b3ec607f7aeeea9e37e8d",
      "tree": "8f95617996d0974507f176163459212a7def8b9a",
      "parents": [
        "d84f4f992cbd76e8f39c488cf0c5d123843923b1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:24 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:24 2008 +1100"
      },
      "message": "CRED: Make execve() take advantage of copy-on-write credentials\n\nMake execve() take advantage of copy-on-write credentials, allowing it to set\nup the credentials in advance, and then commit the whole lot after the point\nof no return.\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     The credential bits from struct linux_binprm are, for the most part,\n     replaced with a single credentials pointer (bprm-\u003ecred).  This means that\n     all the creds can be calculated in advance and then applied at the point\n     of no return with no possibility of failure.\n\n     I would like to replace bprm-\u003ecap_effective with:\n\n\tcap_isclear(bprm-\u003ecap_effective)\n\n     but this seems impossible due to special behaviour for processes of pid 1\n     (they always retain their parent\u0027s capability masks where normally they\u0027d\n     be changed - see cap_bprm_set_creds()).\n\n     The following sequence of events now happens:\n\n     (a) At the start of do_execve, the current task\u0027s cred_exec_mutex is\n     \t locked to prevent PTRACE_ATTACH from obsoleting the calculation of\n     \t creds that we make.\n\n     (a) prepare_exec_creds() is then called to make a copy of the current\n     \t task\u0027s credentials and prepare it.  This copy is then assigned to\n     \t bprm-\u003ecred.\n\n  \t This renders security_bprm_alloc() and security_bprm_free()\n     \t unnecessary, and so they\u0027ve been removed.\n\n     (b) The determination of unsafe execution is now performed immediately\n     \t after (a) rather than later on in the code.  The result is stored in\n     \t bprm-\u003eunsafe for future reference.\n\n     (c) prepare_binprm() is called, possibly multiple times.\n\n     \t (i) This applies the result of set[ug]id binaries to the new creds\n     \t     attached to bprm-\u003ecred.  Personality bit clearance is recorded,\n     \t     but now deferred on the basis that the exec procedure may yet\n     \t     fail.\n\n         (ii) This then calls the new security_bprm_set_creds().  This should\n\t     calculate the new LSM and capability credentials into *bprm-\u003ecred.\n\n\t     This folds together security_bprm_set() and parts of\n\t     security_bprm_apply_creds() (these two have been removed).\n\t     Anything that might fail must be done at this point.\n\n         (iii) bprm-\u003ecred_prepared is set to 1.\n\n\t     bprm-\u003ecred_prepared is 0 on the first pass of the security\n\t     calculations, and 1 on all subsequent passes.  This allows SELinux\n\t     in (ii) to base its calculations only on the initial script and\n\t     not on the interpreter.\n\n     (d) flush_old_exec() is called to commit the task to execution.  This\n     \t performs the following steps with regard to credentials:\n\n\t (i) Clear pdeath_signal and set dumpable on certain circumstances that\n\t     may not be covered by commit_creds().\n\n         (ii) Clear any bits in current-\u003epersonality that were deferred from\n             (c.i).\n\n     (e) install_exec_creds() [compute_creds() as was] is called to install the\n     \t new credentials.  This performs the following steps with regard to\n     \t credentials:\n\n         (i) Calls security_bprm_committing_creds() to apply any security\n             requirements, such as flushing unauthorised files in SELinux, that\n             must be done before the credentials are changed.\n\n\t     This is made up of bits of security_bprm_apply_creds() and\n\t     security_bprm_post_apply_creds(), both of which have been removed.\n\t     This function is not allowed to fail; anything that might fail\n\t     must have been done in (c.ii).\n\n         (ii) Calls commit_creds() to apply the new credentials in a single\n             assignment (more or less).  Possibly pdeath_signal and dumpable\n             should be part of struct creds.\n\n\t (iii) Unlocks the task\u0027s cred_replace_mutex, thus allowing\n\t     PTRACE_ATTACH to take place.\n\n         (iv) Clears The bprm-\u003ecred pointer as the credentials it was holding\n             are now immutable.\n\n         (v) Calls security_bprm_committed_creds() to apply any security\n             alterations that must be done after the creds have been changed.\n             SELinux uses this to flush signals and signal handlers.\n\n     (f) If an error occurs before (d.i), bprm_free() will call abort_creds()\n     \t to destroy the proposed new credentials and will then unlock\n     \t cred_replace_mutex.  No changes to the credentials will have been\n     \t made.\n\n (2) LSM interface.\n\n     A number of functions have been changed, added or removed:\n\n     (*) security_bprm_alloc(), -\u003ebprm_alloc_security()\n     (*) security_bprm_free(), -\u003ebprm_free_security()\n\n     \t Removed in favour of preparing new credentials and modifying those.\n\n     (*) security_bprm_apply_creds(), -\u003ebprm_apply_creds()\n     (*) security_bprm_post_apply_creds(), -\u003ebprm_post_apply_creds()\n\n     \t Removed; split between security_bprm_set_creds(),\n     \t security_bprm_committing_creds() and security_bprm_committed_creds().\n\n     (*) security_bprm_set(), -\u003ebprm_set_security()\n\n     \t Removed; folded into security_bprm_set_creds().\n\n     (*) security_bprm_set_creds(), -\u003ebprm_set_creds()\n\n     \t New.  The new credentials in bprm-\u003ecreds should be checked and set up\n     \t as appropriate.  bprm-\u003ecred_prepared is 0 on the first call, 1 on the\n     \t second and subsequent calls.\n\n     (*) security_bprm_committing_creds(), -\u003ebprm_committing_creds()\n     (*) security_bprm_committed_creds(), -\u003ebprm_committed_creds()\n\n     \t New.  Apply the security effects of the new credentials.  This\n     \t includes closing unauthorised files in SELinux.  This function may not\n     \t fail.  When the former is called, the creds haven\u0027t yet been applied\n     \t to the process; when the latter is called, they have.\n\n \t The former may access bprm-\u003ecred, the latter may not.\n\n (3) 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) The bprm_security_struct struct has been removed in favour of using\n     \t the credentials-under-construction approach.\n\n     (c) flush_unauthorized_files() now takes a cred pointer and passes it on\n     \t to inode_has_perm(), file_has_perm() and dentry_open().\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "6341c393fcc37d58727865f1ee2f65e632e9d4f0",
      "tree": "6e88d928e17f663b225884e81877a7a069d7c514",
      "parents": [
        "88ac2921a71f788ed693bcd44731dd6bc1994640"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:08 2008 -0700"
      },
      "message": "tracehook: exec\n\nThis moves all the ptrace hooks related to exec into tracehook.h inlines.\n\nThis also lifts the calls for tracing out of the binfmt load_binary hooks\ninto search_binary_handler() after it calls into the binfmt module.  This\nchange has no effect, since all the binfmt modules\u0027 load_binary functions\ndid the call at the end on success, and now search_binary_handler() does\nit immediately after return if successful.  We consolidate the repeated\ncode, and binfmt modules no longer need to import ptrace_notify().\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e50b6ccdaaf0d933bb9d8409cac4b2f088f5a2f",
      "tree": "ba25ec419f3a4fb6e6845ec5b74d6af753e7f78f",
      "parents": [
        "aab3c3b01d1848a5e8a1ddec4e5656fc4de04982"
      ],
      "author": {
        "name": "S.Caglar Onur",
        "email": "caglar@pardus.org.tr",
        "time": "Tue Apr 29 00:59:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:04 2008 -0700"
      },
      "message": "fs/binfmt_aout.c: use printk_ratelimit()\n\nUse printk_ratelimit() instead of jiffies based arithmetic, suggested by Geert\nUytterhoeven\n\nSigned-off-by: S.Caglar Onur \u003ccaglar@pardus.org.tr\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7fa3031500ec9b0a7460c8c23751799006ffee74",
      "tree": "2a7e9202b35a39dc8217e95825263c0629e67e35",
      "parents": [
        "b0b933c08bd5fd053bbba8ba6387f543be03d49f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Feb 08 04:19:28 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:30 2008 -0800"
      },
      "message": "aout: suppress A.OUT library support if !CONFIG_ARCH_SUPPORTS_AOUT\n\nSuppress A.OUT library support if CONFIG_ARCH_SUPPORTS_AOUT is not set.\n\nNot all architectures support the A.OUT binfmt, so the ELF binfmt should not\nbe permitted to go looking for A.OUT libraries to load in such a case.  Not\nonly that, but under such conditions A.OUT core dumps are not produced either.\n\nTo make this work, this patch also does the following:\n\n (1) Makes the existence of the contents of linux/a.out.h contingent on\n     CONFIG_ARCH_SUPPORTS_AOUT.\n\n (2) Renames dump_thread() to aout_dump_thread() as it\u0027s only called by A.OUT\n     core dumping code.\n\n (3) Moves aout_dump_thread() into asm/a.out-core.h and makes it inline.  This\n     is then included only where needed.  This means that this bit of arch\n     code will be stored in the appropriate A.OUT binfmt module rather than\n     the core kernel.\n\n (4) Drops A.OUT support for Blackfin (according to Mike Frysinger it\u0027s not\n     needed) and FRV.\n\nThis patch depends on the previous patch to move STACK_TOP[_MAX] out of\nasm/a.out.h and into asm/processor.h as they\u0027re required whether or not A.OUT\nformat is available.\n\n[jdike@addtoit.com: uml: re-remove accidentally restored code]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e16d89bcd668a95eb22add24c02d80890232b66",
      "tree": "8d5fcab14edac7d36c67e8a57abb5025cfaa2c2d",
      "parents": [
        "ed7b1889da256977574663689b598d88950bbd23"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Thu Feb 07 00:15:57 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:30 2008 -0800"
      },
      "message": "Sanitize the type of struct user.u_ar0\n\nstruct user.u_ar0 is defined to contain a pointer offset on all\narchitectures in which it is defined (all architectures which define an\na.out format except SPARC.) However, it has a pointer type in the headers,\nwhich is pointless -- \u003casm/user.h\u003e is not exported to userspace, and it\njust makes the code messy.\n\nRedefine the field as \"unsigned long\" (which is the same size as a pointer\non all Linux architectures) and change the setting code to user offsetof()\ninstead of hand-coded arithmetic.\n\nCc: Linux Arch Mailing List \u003clinux-arch@vger.kernel.org\u003e\nCc: Bryan Wu \u003cbryan.wu@analog.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\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: Lennert Buytenhek \u003ckernel@wantstofly.org\u003e\nCc: Håvard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c378158d4cd2125b42fe2b8bb23d512fdff6fe6",
      "tree": "ed3f5d368cf39a88022f2956679aa760c691b6ec",
      "parents": [
        "fbdcf18df73758b2e187ab94678b30cd5f6ff9f9"
      ],
      "author": {
        "name": "Ivan Kokshaysky",
        "email": "ink@jurassic.park.msu.ru",
        "time": "Thu Dec 20 11:47:07 2007 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Dec 20 07:49:53 2007 -0800"
      },
      "message": "mm: fix exit_mmap BUG() on a.out binary exit\n\nThe problem was introduced by commit \"mm: variable length argument\nsupport\" (b6a2fea39318e43fee84fa7b0b90d68bed92d2ba)\nas it didn\u0027t update fs/binfmt_aout.c like other binfmt\u0027s.\n\nI noticed that on alpha when accidentally launched old OSF/1\nAcrobat Reader binary. Obviously, other architectures are affected\nas well.\n\nSigned-off-by: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Ollie Wild \u003caaw@google.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7dc0b22e3c54f1f4730354fef84a20f5944f6c5e",
      "tree": "8b281ed3315699eb0b21f00b5933b6222add5b5a",
      "parents": [
        "8e2b705649e294f43a8cd1ea79e4c594c0bd1d9d"
      ],
      "author": {
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com",
        "time": "Tue Oct 16 23:26:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:50 2007 -0700"
      },
      "message": "core_pattern: ignore RLIMIT_CORE if core_pattern is a pipe\n\nFor some time /proc/sys/kernel/core_pattern has been able to set its output\ndestination as a pipe, allowing a user space helper to receive and\nintellegently process a core.  This infrastructure however has some\nshortcommings which can be enhanced.  Specifically:\n\n1) The coredump code in the kernel should ignore RLIMIT_CORE limitation\n   when core_pattern is a pipe, since file system resources are not being\n   consumed in this case, unless the user application wishes to save the core,\n   at which point the app is restricted by usual file system limits and\n   restrictions.\n\n2) The core_pattern code should be able to parse and pass options to the\n   user space helper as an argv array.  The real core limit of the uid of the\n   crashing proces should also be passable to the user space helper (since it\n   is overridden to zero when called).\n\n3) Some miscellaneous bugs need to be cleaned up (specifically the\n   recognition of a recursive core dump, should the user mode helper itself\n   crash.  Also, the core dump code in the kernel should not wait for the user\n   mode helper to exit, since the same context is responsible for writing to\n   the pipe, and a read of the pipe by the user mode helper will result in a\n   deadlock.\n\nThis patch:\n\nRemove the check of RLIMIT_CORE if core_pattern is a pipe.  In the event that\ncore_pattern is a pipe, the entire core will be fed to the user mode helper.\n\nSigned-off-by: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: \u003cmartin.pitt@ubuntu.com\u003e\nCc: \u003cwwoods@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8454aeef6fea944ced757ff8e761b59eb3ee960f",
      "tree": "235e366e3744cdf76381d9e8a709d7564dde94e0",
      "parents": [
        "563d075702454f6fa745ff8b0db605c73478078e"
      ],
      "author": {
        "name": "Eugene Teo",
        "email": "eteo@redhat.com",
        "time": "Fri Sep 29 01:59:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:08 2006 -0700"
      },
      "message": "[PATCH] Require mmap handler for a.out executables\n\nFiles supported by fs/proc/base.c, i.e.  /proc/\u003cpid\u003e/*, are not capable of\nmeeting the validity checks in ELF load_elf_*() handling because they have\nno mmap handler which is required by ELF.  In order to stop a.out\nexecutables being used as part of an exploit attack against /proc-related\nvulnerabilities, we make a.out executables depend on -\u003emmap() existing.\n\nSigned-off-by: Eugene Teo \u003ceteo@redhat.com\u003e\nSigned-off-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "df2e71fb9115a8d4f721fb1464db09adc8332bc5",
      "tree": "460230de8257235dc57f9835582afb0875cbc057",
      "parents": [
        "be4f1bb2627c2d963d09be1cd69f8820995a9112"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Mon Jan 09 20:51:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:25 2006 -0800"
      },
      "message": "[PATCH] dump_thread() cleanup\n\n\r)\n\nFrom: Adrian Bunk \u003cbunk@stusta.de\u003e\n\n- create one common dump_thread() prototype in kernel.h\n\n- dump_thread() is only used in fs/binfmt_aout.c and can therefore be\n  removed on all architectures where CONFIG_BINFMT_AOUT is not\n  available\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "404351e67a9facb475abf1492245374a28d13e90",
      "tree": "5ef4e78b399b36a46eda339ad0cd27556fc5b9a2",
      "parents": [
        "fc2acab31be8e869b2d5f6de12f557f6f054f19c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: mm_init set_mm_counters\n\nHow is anon_rss initialized?  In dup_mmap, and by mm_alloc\u0027s memset; but\nthat\u0027s not so good if an mm_counter_t is a special type.  And how is rss\ninitialized?  By set_mm_counter, all over the place.  Come on, we just need to\ninitialize them both at once by set_mm_counter in mm_init (which follows the\nmemcpy when forking).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1363c3cd8603a913a27e2995dccbd70d5312d8e6",
      "tree": "405e7fc1ef44678f3ca0a54c536d0457e6e80f45",
      "parents": [
        "e7c8d5c9955a4d2e88e36b640563f5d6d5aba48a"
      ],
      "author": {
        "name": "Wolfgang Wander",
        "email": "wwc@rentec.com",
        "time": "Tue Jun 21 17:14:49 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 18:46:16 2005 -0700"
      },
      "message": "[PATCH] Avoiding mmap fragmentation\n\nIngo recently introduced a great speedup for allocating new mmaps using the\nfree_area_cache pointer which boosts the specweb SSL benchmark by 4-5% and\ncauses huge performance increases in thread creation.\n\nThe downside of this patch is that it does lead to fragmentation in the\nmmap-ed areas (visible via /proc/self/maps), such that some applications\nthat work fine under 2.4 kernels quickly run out of memory on any 2.6\nkernel.\n\nThe problem is twofold:\n\n  1) the free_area_cache is used to continue a search for memory where\n     the last search ended.  Before the change new areas were always\n     searched from the base address on.\n\n     So now new small areas are cluttering holes of all sizes\n     throughout the whole mmap-able region whereas before small holes\n     tended to close holes near the base leaving holes far from the base\n     large and available for larger requests.\n\n  2) the free_area_cache also is set to the location of the last\n     munmap-ed area so in scenarios where we allocate e.g.  five regions of\n     1K each, then free regions 4 2 3 in this order the next request for 1K\n     will be placed in the position of the old region 3, whereas before we\n     appended it to the still active region 1, placing it at the location\n     of the old region 2.  Before we had 1 free region of 2K, now we only\n     get two free regions of 1K -\u003e fragmentation.\n\nThe patch addresses thes issues by introducing yet another cache descriptor\ncached_hole_size that contains the largest known hole size below the\ncurrent free_area_cache.  If a new request comes in the size is compared\nagainst the cached_hole_size and if the request can be filled with a hole\nbelow free_area_cache the search is started from the base instead.\n\nThe results look promising: Whereas 2.6.12-rc4 fragments quickly and my\n(earlier posted) leakme.c test program terminates after 50000+ iterations\nwith 96 distinct and fragmented maps in /proc/self/maps it performs nicely\n(as expected) with thread creation, Ingo\u0027s test_str02 with 20000 threads\nrequires 0.7s system time.\n\nTaking out Ingo\u0027s patch (un-patch available per request) by basically\ndeleting all mentions of free_area_cache from the kernel and starting the\nsearch for new memory always at the respective bases we observe: leakme\nterminates successfully with 11 distinctive hardly fragmented areas in\n/proc/self/maps but thread creating is gringdingly slow: 30+s(!) system\ntime for Ingo\u0027s test_str02 with 20000 threads.\n\nNow - drumroll ;-) the appended patch works fine with leakme: it ends with\nonly 7 distinct areas in /proc/self/maps and also thread creation seems\nsufficiently fast with 0.71s for 20000 threads.\n\nSigned-off-by: Wolfgang Wander \u003cwwc@rentec.com\u003e\nCredit-to: \"Richard Purdie\" \u003crpurdie@rpsys.net\u003e\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e (partly)\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"
    }
  ]
}
