)]}'
{
  "log": [
    {
      "commit": "b4df2b92d8461444fac429c75ba6e125c63056bc",
      "tree": "15149c192776b817eeb6124978f74411490aa1ce",
      "parents": [
        "fe0bdec68b77020281dc814805edfe594ae89e0f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 27 22:48:36 2008 +0300"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 05 12:27:44 2009 +0300"
      },
      "message": "proc: stop using BKL\n\nThere are four BKL users in proc: de_put(), proc_lookup_de(),\nproc_readdir_de(), proc_root_readdir(),\n\n1) de_put()\n-----------\nde_put() is classic atomic_dec_and_test() refcount wrapper -- no BKL\nneeded. BKL doesn\u0027t matter to possible refcount leak as well.\n\n2) proc_lookup_de()\n-------------------\nWalking PDE list is protected by proc_subdir_lock(), proc_get_inode() is\npotentially blocking, all callers of proc_lookup_de() eventually end up\nfrom -\u003elookup hooks which is protected by directory\u0027s -\u003ei_mutex -- BKL\ndoesn\u0027t protect anything.\n\n3) proc_readdir_de()\n--------------------\n\".\" and \"..\" part doesn\u0027t need BKL, walking PDE list is under\nproc_subdir_lock, calling filldir callback is potentially blocking\nbecause it writes to luserspace. All proc_readdir_de() callers\neventually come from -\u003ereaddir hook which is under directory\u0027s\n-\u003ei_mutex -- BKL doesn\u0027t protect anything.\n\n4) proc_root_readdir_de()\n-------------------------\nproc_root_readdir_de is -\u003ereaddir hook, see (3).\n\nSince readdir hooks doesn\u0027t use BKL anymore, switch to\ngeneric_file_llseek, since it also takes directory\u0027s i_mutex.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "59c7572e82d69483a66eaa67b46548baeb69ecf4",
      "tree": "a395888324ac02149f77920e06337e8612f37535",
      "parents": [
        "5aa140c2deca3701238d5acddf436ad7b02664c7"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 14:49:39 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 18:54:05 2008 +0400"
      },
      "message": "proc: remove fs/proc/proc_misc.c\n\nNow that everything was moved to their more or less expected places,\napply rm(1).\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "5bcd7ff9e1690dbdbccb2a1cb3c2ea8b8381c435",
      "tree": "4655120e76654512a1229bb4af0a41fb55c23663",
      "parents": [
        "7c88db0cb589df980acfb2f73c3595a0653004ec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Oct 17 03:43:55 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 13:27:50 2008 +0400"
      },
      "message": "proc: proc_init_inodecache() can\u0027t fail\n\nkmem_cache creation code will panic, don\u0027t return anything.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "59b7435149eab2dd06dd678742faff6049cb655f",
      "tree": "ceadbf157a001b83a3ab2c89156426e88a782208",
      "parents": [
        "b640a89ddd742782bd2d83873da30d4776d1b9c6"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Apr 29 01:02:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:20 2008 -0700"
      },
      "message": "proc: introduce proc_create_data to setup de-\u003edata\n\nThis set of patches fixes an proc -\u003eopen\u0027less usage due to -\u003eproc_fops flip in\nthe most part of the kernel code.  The original OOPS is described in the\ncommit 2d3a4e3666325a9709cc8ea2e88151394e8f20fc:\n\n    Typical PDE creation code looks like:\n\n    \tpde \u003d create_proc_entry(\"foo\", 0, NULL);\n    \tif (pde)\n    \t\tpde-\u003eproc_fops \u003d \u0026foo_proc_fops;\n\n    Notice that PDE is first created, only then -\u003eproc_fops is set up to\n    final value. This is a problem because right after creation\n    a) PDE is fully visible in /proc , and\n    b) -\u003eproc_fops are proc_file_operations which do not have -\u003eopen callback. So, it\u0027s\n       possible to -\u003eread without -\u003eopen (see one class of oopses below).\n\n    The fix is new API called proc_create() which makes sure -\u003eproc_fops are\n    set up before gluing PDE to main tree. Typical new code looks like:\n\n    \tpde \u003d proc_create(\"foo\", 0, NULL, \u0026foo_proc_fops);\n    \tif (!pde)\n    \t\treturn -ENOMEM;\n\n    Fix most networking users for a start.\n\n    In the long run, create_proc_entry() for regular files will go.\n\nIn addition to this, proc_create_data is introduced to fix reading from\nproc without PDE-\u003edata. The race is basically the same as above.\n\ncreate_proc_entries is replaced in the entire kernel code as new method\nis also simply better.\n\nThis patch:\n\nThe problem is the same as for de-\u003eproc_fops.  Right now PDE becomes visible\nwithout data set.  So, the entry could be looked up without data.  This, in\nmost cases, will simply OOPS.\n\nproc_create_data call is created to address this issue.  proc_create now\nbecomes a wrapper around it.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Grant Grundler \u003cgrundler@parisc-linux.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Jaroslav Kysela \u003cperex@suse.cz\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Jesper Nilsson \u003cjesper.nilsson@axis.com\u003e\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nCc: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Pierre Peiffer \u003cpeifferp@gmail.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c74c120a21d87b0b6925ada5830d8cac21e852d9",
      "tree": "79558a29ecadc7b71eeb5bdf0945680f0560b2ed",
      "parents": [
        "928b4d8c8963e75bdb133f562b03b07f9aa4844a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Apr 29 01:01:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:18 2008 -0700"
      },
      "message": "proc: remove proc_root from drivers\n\nRemove proc_root export.  Creation and removal works well if parent PDE is\nsupplied as NULL -- it worked always that way.\n\nSo, one useless export removed and consistency added, some drivers created\nPDEs with \u0026proc_root as parent but removed them as NULL and so on.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "928b4d8c8963e75bdb133f562b03b07f9aa4844a",
      "tree": "18de7e85fe403f681a954ed04254b2d9085e7fe4",
      "parents": [
        "36a5aeb8787fbf92510ed20d806e229c55726f93"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Apr 29 01:01:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:18 2008 -0700"
      },
      "message": "proc: remove proc_root_driver\n\nUse creation by full path: \"driver/foo\".\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36a5aeb8787fbf92510ed20d806e229c55726f93",
      "tree": "7e6efd56b357a3f66a72b3e0d7540116214db338",
      "parents": [
        "9c37066d888bf6e1b96ad12304971b3ddeabbad0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Apr 29 01:01:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:18 2008 -0700"
      },
      "message": "proc: remove proc_root_fs\n\nUse creation by full path instead: \"fs/foo\".\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9c37066d888bf6e1b96ad12304971b3ddeabbad0",
      "tree": "87f39924be4d36b25918cf7a90eb0db7743cba99",
      "parents": [
        "5e971dce0b2f6896e02372512df0d1fb0bfe2d55"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Apr 29 01:01:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:18 2008 -0700"
      },
      "message": "proc: remove proc_bus\n\nRemove proc_bus export and variable itself. Using pathnames works fine\nand is slightly more understandable and greppable.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d3a4e3666325a9709cc8ea2e88151394e8f20fc",
      "tree": "c3e75289de8c824f5e2bb2e97d4b6853d48da3f3",
      "parents": [
        "c6caeb7c4544608e8ae62731334661fc396c7f85"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Fri Feb 08 04:18:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:24 2008 -0800"
      },
      "message": "proc: fix -\u003eopen\u0027less usage due to -\u003eproc_fops flip\n\nTypical PDE creation code looks like:\n\n\tpde \u003d create_proc_entry(\"foo\", 0, NULL);\n\tif (pde)\n\t\tpde-\u003eproc_fops \u003d \u0026foo_proc_fops;\n\nNotice that PDE is first created, only then -\u003eproc_fops is set up to\nfinal value. This is a problem because right after creation\na) PDE is fully visible in /proc , and\nb) -\u003eproc_fops are proc_file_operations which do not have -\u003eopen callback. So, it\u0027s\n   possible to -\u003eread without -\u003eopen (see one class of oopses below).\n\nThe fix is new API called proc_create() which makes sure -\u003eproc_fops are\nset up before gluing PDE to main tree. Typical new code looks like:\n\n\tpde \u003d proc_create(\"foo\", 0, NULL, \u0026foo_proc_fops);\n\tif (!pde)\n\t\treturn -ENOMEM;\n\nFix most networking users for a start.\n\nIn the long run, create_proc_entry() for regular files will go.\n\nBUG: unable to handle kernel NULL pointer dereference at virtual address 00000024\nprinting eip: c1188c1b *pdpt \u003d 000000002929e001 *pde \u003d 0000000000000000\nOops: 0002 [#1] PREEMPT SMP DEBUG_PAGEALLOC\nlast sysfs file: /sys/block/sda/sda1/dev\nModules linked in: foo af_packet ipv6 cpufreq_ondemand loop serio_raw psmouse k8temp hwmon sr_mod cdrom\n\nPid: 24679, comm: cat Not tainted (2.6.24-rc3-mm1 #2)\nEIP: 0060:[\u003cc1188c1b\u003e] EFLAGS: 00210002 CPU: 0\nEIP is at mutex_lock_nested+0x75/0x25d\nEAX: 000006fe EBX: fffffffb ECX: 00001000 EDX: e9340570\nESI: 00000020 EDI: 00200246 EBP: e9340570 ESP: e8ea1ef8\n DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\nProcess cat (pid: 24679, ti\u003dE8EA1000 task\u003dE9340570 task.ti\u003dE8EA1000)\nStack: 00000000 c106f7ce e8ee05b4 00000000 00000001 458003d0 f6fb6f20 fffffffb\n       00000000 c106f7aa 00001000 c106f7ce 08ae9000 f6db53f0 00000020 00200246\n       00000000 00000002 00000000 00200246 00200246 e8ee05a0 fffffffb e8ee0550\nCall Trace:\n [\u003cc106f7ce\u003e] seq_read+0x24/0x28a\n [\u003cc106f7aa\u003e] seq_read+0x0/0x28a\n [\u003cc106f7ce\u003e] seq_read+0x24/0x28a\n [\u003cc106f7aa\u003e] seq_read+0x0/0x28a\n [\u003cc10818b8\u003e] proc_reg_read+0x60/0x73\n [\u003cc1081858\u003e] proc_reg_read+0x0/0x73\n [\u003cc105a34f\u003e] vfs_read+0x6c/0x8b\n [\u003cc105a6f3\u003e] sys_read+0x3c/0x63\n [\u003cc10025f2\u003e] sysenter_past_esp+0x5f/0xa5\n [\u003cc10697a7\u003e] destroy_inode+0x24/0x33\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nINFO: lockdep is turned off.\nCode: 75 21 68 e1 1a 19 c1 68 87 00 00 00 68 b8 e8 1f c1 68 25 73 1f c1 e8 84 06 e9 ff e8 52 b8 e7 ff 83 c4 10 9c 5f fa e8 28 89 ea ff \u003cf0\u003e fe 4e 04 79 0a f3 90 80 7e 04 00 7e f8 eb f0 39 76 34 74 33\nEIP: [\u003cc1188c1b\u003e] mutex_lock_nested+0x75/0x25d SS:ESP 0068:e8ea1ef8\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a622f2d0f86b316b07b55a4866ecb5518dd1cf7",
      "tree": "f89bb875b5b440dced320336db6cac24b9e4d8b7",
      "parents": [
        "d4beaf4ab5f89496f2bcf67db62ad95d99bfeff6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue Dec 04 23:45:28 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Dec 05 09:21:20 2007 -0800"
      },
      "message": "proc: fix proc_dir_entry refcounting\n\nCreating PDEs with refcount 0 and \"deleted\" flag has problems (see below).\nSwitch to usual scheme:\n* PDE is created with refcount 1\n* every de_get does +1\n* every de_put() and remove_proc_entry() do -1\n* once refcount reaches 0, PDE is freed.\n\nThis elegantly fixes at least two following races (both observed) without\nintroducing new locks, without abusing old locks, without spreading\nlock_kernel():\n\n1) PDE leak\n\nremove_proc_entry\t\t\tde_put\n-----------------\t\t\t------\n\t\t\t[refcnt \u003d 1]\nif (atomic_read(\u0026de-\u003ecount) \u003d\u003d 0)\n\t\t\t\t\tif (atomic_dec_and_test(\u0026de-\u003ecount))\n\t\t\t\t\t\tif (de-\u003edeleted)\n\t\t\t\t\t\t\t/* also not taken! */\n\t\t\t\t\t\t\tfree_proc_entry(de);\nelse\n\tde-\u003edeleted \u003d 1;\n\t\t[refcount\u003d0, deleted\u003d1]\n\n2) use after free\n\nremove_proc_entry\t\t\tde_put\n-----------------\t\t\t------\n\t\t\t[refcnt \u003d 1]\n\n\t\t\t\t\tif (atomic_dec_and_test(\u0026de-\u003ecount))\nif (atomic_read(\u0026de-\u003ecount) \u003d\u003d 0)\n\tfree_proc_entry(de);\n\t\t\t\t\t\t/* boom! */\n\t\t\t\t\t\tif (de-\u003edeleted)\n\t\t\t\t\t\t\tfree_proc_entry(de);\n\nBUG: unable to handle kernel paging request at virtual address 6b6b6b6b\nprinting eip: c10acdda *pdpt \u003d 00000000338f8001 *pde \u003d 0000000000000000\nOops: 0000 [#1] PREEMPT SMP\nModules linked in: af_packet ipv6 cpufreq_ondemand loop serio_raw psmouse k8temp hwmon sr_mod cdrom\nPid: 23161, comm: cat Not tainted (2.6.24-rc2-8c0863403f109a43d7000b4646da4818220d501f #4)\nEIP: 0060:[\u003cc10acdda\u003e] EFLAGS: 00210097 CPU: 1\nEIP is at strnlen+0x6/0x18\nEAX: 6b6b6b6b EBX: 6b6b6b6b ECX: 6b6b6b6b EDX: fffffffe\nESI: c128fa3b EDI: f380bf34 EBP: ffffffff ESP: f380be44\n DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\nProcess cat (pid: 23161, ti\u003df380b000 task\u003df38f2570 task.ti\u003df380b000)\nStack: c10ac4f0 00000278 c12ce000 f43cd2a8 00000163 00000000 7da86067 00000400\n       c128fa20 00896b18 f38325a8 c128fe20 ffffffff 00000000 c11f291e 00000400\n       f75be300 c128fa20 f769c9a0 c10ac779 f380bf34 f7bfee70 c1018e6b f380bf34\nCall Trace:\n [\u003cc10ac4f0\u003e] vsnprintf+0x2ad/0x49b\n [\u003cc10ac779\u003e] vscnprintf+0x14/0x1f\n [\u003cc1018e6b\u003e] vprintk+0xc5/0x2f9\n [\u003cc10379f1\u003e] handle_fasteoi_irq+0x0/0xab\n [\u003cc1004f44\u003e] do_IRQ+0x9f/0xb7\n [\u003cc117db3b\u003e] preempt_schedule_irq+0x3f/0x5b\n [\u003cc100264e\u003e] need_resched+0x1f/0x21\n [\u003cc10190ba\u003e] printk+0x1b/0x1f\n [\u003cc107c8ad\u003e] de_put+0x3d/0x50\n [\u003cc107c8f8\u003e] proc_delete_inode+0x38/0x41\n [\u003cc107c8c0\u003e] proc_delete_inode+0x0/0x41\n [\u003cc1066298\u003e] generic_delete_inode+0x5e/0xc6\n [\u003cc1065aa9\u003e] iput+0x60/0x62\n [\u003cc1063c8e\u003e] d_kill+0x2d/0x46\n [\u003cc1063fa9\u003e] dput+0xdc/0xe4\n [\u003cc10571a1\u003e] __fput+0xb0/0xcd\n [\u003cc1054e49\u003e] filp_close+0x48/0x4f\n [\u003cc1055ee9\u003e] sys_close+0x67/0xa5\n [\u003cc10026b6\u003e] sysenter_past_esp+0x5f/0x85\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCode: c9 74 0c f2 ae 74 05 bf 01 00 00 00 4f 89 fa 5f 89 d0 c3 85 c9 57 89 c7 89 d0 74 05 f2 ae 75 01 4f 89 f8 5f c3 89 c1 89 c8 eb 06 \u003c80\u003e 38 00 74 07 40 4a 83 fa ff 75 f4 29 c8 c3 90 90 90 57 83 c9\nEIP: [\u003cc10acdda\u003e] strnlen+0x6/0x18 SS:ESP 0068:f380be44\n\nAlso, remove broken usage of -\u003edeleted from reiserfs: if sget() succeeds,\nmodule is already pinned and remove_proc_entry() can\u0027t happen \u003d\u003e nobody\ncan mark PDE deleted.\n\nDummy proc root in netns code is not marked with refcount 1. AFAICS, we\nnever get it, it\u0027s just for proper /proc/net removal. I double checked\nCLONE_NETNS continues to work.\n\nPatch survives many hours of modprobe/rmmod/cat loops without new bugs\nwhich can be attributed to refcounting.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2319540cd7330fa9066e5b9b84d357a2c8631a2",
      "tree": "e63a0aeae5a9951a9cbc705fdb48eecc7ec62110",
      "parents": [
        "a7839e960675b549f06209d18283d5cee2ce9261"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Wed Nov 28 16:21:23 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 29 09:24:52 2007 -0800"
      },
      "message": "proc: fix NULL -\u003ei_fop oops\n\nproc_kill_inodes() can clear -\u003ei_fop in the middle of vfs_readdir resulting in\nNULL dereference during \"file-\u003ef_op-\u003ereaddir(file, buf, filler)\".\n\nThe solution is to remove proc_kill_inodes() completely:\n\na) we don\u0027t have tricky modules implementing their tricky readdir hooks which\n   could keeping this revoke from hell.\n\nb) In a situation when module is gone but PDE still alive, standard\n   readdir will return only \".\" and \"..\", because pde-\u003enext was cleared by\n   remove_proc_entry().\n\nc) the race proc_kill_inode() destined to prevent is not completely\n   fixed, just race window made smaller, because vfs_readdir() is run\n   without sb_lock held and without file_list_lock held.  Effectively,\n   -\u003ei_fop is cleared at random moment, which can\u0027t fix properly anything.\n\nBUG: unable to handle kernel NULL pointer dereference at virtual address 00000018\nprinting eip: c1061205 *pdpt \u003d 0000000005b22001 *pde \u003d 0000000000000000\nOops: 0000 [#1] PREEMPT SMP\nModules linked in: foo af_packet ipv6 cpufreq_ondemand loop serio_raw sr_mod k8temp cdrom hwmon amd_rng\nPid: 2033, comm: find Not tainted (2.6.24-rc1-b1d08ac064268d0ae2281e98bf5e82627e0f0c56 #2)\nEIP: 0060:[\u003cc1061205\u003e] EFLAGS: 00010246 CPU: 0\nEIP is at vfs_readdir+0x47/0x74\nEAX: c6b6a780 EBX: 00000000 ECX: c1061040 EDX: c5decf94\nESI: c6b6a780 EDI: fffffffe EBP: c9797c54 ESP: c5decf78\n DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\nProcess find (pid: 2033, ti\u003dc5dec000 task\u003dc64bba90 task.ti\u003dc5dec000)\nStack: c5decf94 c1061040 fffffff7 0805ffbc 00000000 c6b6a780 c1061295 0805ffbc\n       00000000 00000400 00000000 00000004 0805ffbc 4588eff4 c5dec000 c10026ba\n       00000004 0805ffbc 00000400 0805ffbc 4588eff4 bfdc6c70 000000dc 0000007b\nCall Trace:\n [\u003cc1061040\u003e] filldir64+0x0/0xc5\n [\u003cc1061295\u003e] sys_getdents64+0x63/0xa5\n [\u003cc10026ba\u003e] sysenter_past_esp+0x5f/0x85\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCode: 49 83 78 18 00 74 43 8d 6b 74 bf fe ff ff ff 89 e8 e8 b8 c0 12 00 f6 83 2c 01 00 00 10 75 22 8b 5e 10 8b 4c 24 04 89 f0 8b 14 24 \u003cff\u003e 53 18 f6 46 1a 04 89 c7 75 0b 8b 56 0c 8b 46 08 e8 c8 66 00\nEIP: [\u003cc1061205\u003e] vfs_readdir+0x47/0x74 SS:ESP 0068:c5decf78\n\nhch: \"Nice, getting rid of this is a very good step formwards.\n      Unfortunately we have another copy of this junk in\n      security/selinux/selinuxfs.c:sel_remove_entries() which would need the\n      same treatment.\"\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1a1c997afe907e6ec4799e4be0f38cffd8b418c",
      "tree": "3c1154a95c0a44a1015f3bfeb7e73d19024924cb",
      "parents": [
        "7105458563213b6f6fb523065474cfe1d6c22a67"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 14 16:59:08 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:38 2007 -0800"
      },
      "message": "proc: fix proc_kill_inodes to kill dentries on all proc superblocks\n\nIt appears we overlooked support for removing generic proc files\nwhen we added support for multiple proc super blocks.  Handle\nthat now.\n\n[akpm@linux-foundation.org: coding-style cleanups]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nAcked-by: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f4e643353aea52d80f33960bd88954a7c074f0f",
      "tree": "5b7e452f7e31be89f06a52a2c077183b7fe74c3b",
      "parents": [
        "130f77ecb2e7d5ac3e53e620f55e374f4a406b20"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:40 2007 -0700"
      },
      "message": "pid namespaces: initialize the namespace\u0027s proc_mnt\n\nThe namespace\u0027s proc_mnt must be kern_mount-ed to make this pointer always\nvalid, independently of whether the user space mounted the proc or not.  This\nsolves raced in proc_flush_task, etc.  with the proc_mnt switching from NULL\nto not-NULL.\n\nThe initialization is done after the init\u0027s pid is created and hashed to make\nproc_get_sb() finr it and get for root inode.\n\nSice the namespace holds the vfsmnt, vfsmnt holds the superblock and the\nsuperblock holds the namespace we must explicitly break this circle to destroy\nall the stuff.  This is done after the init of the namespace dies.  Running a\nfew steps forward - when init exits it will kill all its children, so no\nproc_mnt will be needed after its death.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "07543f5c75cee744b791cf7716c69571486fe753",
      "tree": "3e0d78f869114e5a6e2629fc157ee8f9023316bd",
      "parents": [
        "425fb2b4bf5dde24be4a82e9a2c344bb49ac92e4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:39 2007 -0700"
      },
      "message": "pid namespaces: make proc have multiple superblocks - one for each namespace\n\nEach pid namespace have to be visible through its own proc mount.  Thus we\nneed to have per-namespace proc trees with their own superblocks.\n\nWe cannot easily show different pid namespace via one global proc tree, since\neach pid refers to different tasks in different namespaces.  E.g.  pid 1\nrefers to the init task in the initial namespace and to some other task when\nseeing from another namespace.  Moreover - pid, exisintg in one namespace may\nnot exist in the other.\n\nThis approach has one move advantage is that the tasks from the init namespace\ncan see what tasks live in another namespace by reading entries from another\nproc tree.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Sukadev Bhattiprolu \u003csukadev@us.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "457c4cbc5a3dde259d2a1f15d5f9785290397267",
      "tree": "a2ceee88780cbce27433b9a4434b3e9251efd81a",
      "parents": [
        "07feaebfcc10cd35e745c7073667935246494bee"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Sep 12 12:01:34 2007 +0200"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:49:06 2007 -0700"
      },
      "message": "[NET]: Make /proc/net per network namespace\n\nThis patch makes /proc/net per network namespace.  It modifies the global\nvariables proc_net and proc_net_stat to be per network namespace.\nThe proc_net file helpers are modified to take a network namespace argument,\nand all of their callers are fixed to pass \u0026init_net for that argument.\nThis ensures that all of the /proc/net files are only visible and\nusable in the initial network namespace until the code behind them\nhas been updated to be handle multiple network namespaces.\n\nMaking /proc/net per namespace is necessary as at least some files\nin /proc/net depend upon the set of network devices which is per\nnetwork namespace, and even more files in /proc/net have contents\nthat are relevant to a single network namespace.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "05565b65a5309e3e5c86db1975b57f75661bee8f",
      "tree": "b7de5495abd95f89235c546068ed6512d4c90f5e",
      "parents": [
        "2e175a90047a2dbc76fde169c990164895b25dfc"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun Apr 01 23:49:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Apr 02 10:06:08 2007 -0700"
      },
      "message": "[PATCH] proc: fix linkage with CONFIG_SYSCTL\u003dy, CONFIG_PROC_SYSCTL\u003dn\n\nWe\u0027re using #ifdef CONFIG_SYSCTL, but we should be using CONFIG_PROC_SYSCTL,\nso we get\n\n fs/built-in.o: In function `proc_root_init\u0027:\n /usr/src/linux/fs/proc/root.c:83: undefined reference to `proc_sys_init\u0027\n\nFix that up and remove an ifdef-in-C.\n\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Helge Hafting \u003chelgehaf@aitel.hist.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77b14db502cb85a031fe8fde6c85d52f3e0acb63",
      "tree": "4201f6a4dfe1062d1dc00659c403d630401b87cc",
      "parents": [
        "1ff007eb8e8c7c44e9a384a67d0fdd0fd06ba811"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 14 00:34:12 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 14 08:10:00 2007 -0800"
      },
      "message": "[PATCH] sysctl: reimplement the sysctl proc support\n\nWith this change the sysctl inodes can be cached and nothing needs to be done\nwhen removing a sysctl table.\n\nFor a cost of 2K code we will save about 4K of static tables (when we remove\nde from ctl_table) and 70K in proc_dir_entries that we will not allocate, or\nabout half that on a 32bit arch.\n\nThe speed feels about the same, even though we can now cache the sysctl\ndentries :(\n\nWe get the core advantage that we don\u0027t need to have a 1 to 1 mapping between\nctl table entries and proc files.  Making it possible to have /proc/sys vary\ndepending on the namespace you are in.  The currently merged namespaces don\u0027t\nhave an issue here but the network namespace under /proc/sys/net needs to have\ndifferent directories depending on which network adapters are visible.  By\nsimply being a cache different directories being visible depending on who you\nare is trivial to implement.\n\n[akpm@osdl.org: fix uninitialised var]\n[akpm@osdl.org: fix ARM build]\n[bunk@stusta.de: make things static]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2abc26fc6b6f60fc70d6957b842ef4e5f805df7b",
      "tree": "017fc02dbd50a401970f6b92224be177a85cda43",
      "parents": [
        "a5494dcd8b92dce64317f2f7dd0d62747c54980b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 14 00:34:07 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 14 08:09:59 2007 -0800"
      },
      "message": "[PATCH] sysctl: create sys/fs/binfmt_misc as an ordinary sysctl entry\n\nbinfmt_misc has a mount point in the middle of the sysctl and that mount point\nis created as a proc_generic directory.\n\nDoing it that way gets in the way of cleaning up the sysctl proc support as it\ncontinues the existence of a horrible hack.  So instead simply create the\ndirectory as an ordinary sysctl directory.  At least that removes the magic\nspecial case.\n\n[akpm@osdl.org: warning fix]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5ef1c42c51b1b5b4a401a6517bdda30933ddbaf",
      "tree": "e1a9804a8af427f700aaba4b386cf8679b317e83",
      "parents": [
        "92e1d5be91a0e3ffa5c4697eeb09b2aa22792122"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:40 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:46 2007 -0800"
      },
      "message": "[PATCH] mark struct inode_operations const 3\n\nMany struct inode_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@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": "00977a59b951207d38380c75f03a36829950265c",
      "tree": "26933feafebffca95df02c19df03f5e56aada47e",
      "parents": [
        "d54b1fdb1d9f82e375a299e22bd366aad52d4c34"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:34 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:45 2007 -0800"
      },
      "message": "[PATCH] mark struct file_operations const 6\n\nMany struct file_operations in the kernel can be \"const\".  Marking them const\nmoves these to the .rodata section, which avoids false sharing with potential\ndirty data.  In addition it\u0027ll catch accidental writes at compile time to\nthese shared resources.\n\nSigned-off-by: Arjan van de Ven \u003carjan@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": "914e26379decf1fd984b22e51fd2e4209b7a7f1b",
      "tree": "4f20ee40e959699e344cdff0e117d309d238f6be",
      "parents": [
        "f6a570333e554b48ad589e7137c77c57809eee81"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 18 13:55:46 2006 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 04 02:00:24 2006 -0500"
      },
      "message": "[PATCH] severing fs.h, radix-tree.h -\u003e sched.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f6c7a1f34e92b0b561024ead9fa70623683025e4",
      "tree": "6906523c635c28ccf7b1d4f726e8ac67cf22d362",
      "parents": [
        "20cdc894c45d2e4ab0c69e95a56b7c5ed36ae0dd"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Oct 02 02:17:07 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:13 2006 -0700"
      },
      "message": "[PATCH] proc: give the root directory a task\n\nHelper functions in base.c like proc_pident_readdir and proc_pident_lookup\nassume the directories have an associated task, and cannot currently be used\non the /proc root directory because it does not have such a task.\n\nThis small changes allows for base.c to be simplified and later when multiple\npid spaces are introduced it makes getting the needed context information\ntrivial.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "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": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "76b6159ba094544e003a237cedcf555d82fa3bfe",
      "tree": "134d104a2e1568d752a8d509cdeba86815f8f66d",
      "parents": [
        "e30809fde59d591809f00caa1a4c960cca5916af"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 08 14:37:40 2006 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 18 15:54:36 2006 -0500"
      },
      "message": "[PATCH] fix handling of st_nlink on procfs root\n\n1) it should use nr_processes(), not nr_threads; otherwise we are getting\nvery confused find(1) and friends, among other things.\n2) better do that at stat() time than at every damn lookup in procfs root.\n\nPatch had been sitting in FC4 kernels for many months now...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fee781e6c25772db862d3322b4745a896022a4f1",
      "tree": "ab1d3ea15594c684eb054bd333a8a38d2ab873a6",
      "parents": [
        "80851ef2a5a404e6054211ca96ecd5ac4b06d297"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Jan 08 01:04:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:14:03 2006 -0800"
      },
      "message": "[PATCH] fs/proc/: function prototypes belong in header files\n\nFunction prototypes belong into header files.\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": "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"
    }
  ]
}
