)]}'
{
  "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": "6c2f91e077f1b60e7f83b7ee044f965f469cfdb3",
      "tree": "98e31d603d80a03325e6c0903e9d352823b04e30",
      "parents": [
        "1e0edd3f67d5b5c04ef6c0908aac8bd70dffc6f6"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sat Sep 13 19:51:30 2008 -0700"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 13:34:38 2008 +0400"
      },
      "message": "proc: use WARN() rather than printk+backtrace\n\nUse WARN() rather than a printk() + backtrace();\nthis gives a more standard format message as well as complete\ninformation (including line numbers etc) that will be collected\nby kerneloops.org\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "665020c35e89a9e0643e21561e4f8f967f4f2c4b",
      "tree": "23bb7ce5516918da4732e8b9b20d07d93de96a7a",
      "parents": [
        "a551b98d5f6fce5897d497abd8bfb262efb33d2a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Sep 13 02:33:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 13 14:41:50 2008 -0700"
      },
      "message": "proc: more debugging for \"already registered\" case\n\nPrint parent directory name as well.\n\nThe aim is to catch non-creation of parent directory when proc_mkdir will\nreturn NULL and all subsequent registrations go directly in /proc instead\nof intended directory.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Fixed insane printk string while at it.  - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc996099174dc05b35b7a29301026987990e7f8c",
      "tree": "bfdb337167e8d33d5fd88a17503821f189485d3e",
      "parents": [
        "6450f65168bcf3c03b5fb44c2fe96682c0d3086b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Aug 02 07:30:48 2008 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 25 01:18:03 2008 -0400"
      },
      "message": "[PATCH] proc: inode number fixlet\n\nOuch, if number taken from IDA is too big, the intent was to signal an\nerror, not check for overflow and still do overflowing addition.\n\nOne still needs 2^28 proc entries to notice this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9a18540915faaaadd7f71c16fa877a0c19675923",
      "tree": "d7c8d0e44c7f680e77b50bda457925d5d25d826d",
      "parents": [
        "67935df49dae836fa86621861979fafdfd37ae59"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 26 11:21:37 2008 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 01 11:25:28 2008 -0400"
      },
      "message": "[PATCH 2/2] proc: switch inode number allocation to IDA\n\nproc doesn\u0027t use \"associate pointer with id\" feature of IDR, so switch\nto IDA.\n\nNOTE, NOTE, NOTE:\n\tDo not apply if release_inode_number() still mantions MAX_ID_MASK!\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "67935df49dae836fa86621861979fafdfd37ae59",
      "tree": "f1f50d7e854982b302bc4be7da6bb820032b6294",
      "parents": [
        "8266602033d6adc6d10cb8811c1fd694767909b0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 26 11:18:28 2008 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 01 11:25:27 2008 -0400"
      },
      "message": "[PATCH 1/2] proc: fix inode number bogorithmetic\n\nId which proc gets from IDR for inode number and id which proc removes\nfrom IDR do not match. E.g. 0x11a transforms into 0x8000011a.\n\nWhich stayed unnoticed for a long time because, surprise, idr_remove()\nmasks out that high bit before doing anything.\n\nAll of this due to \"| ~MAX_ID_MASK\" in release_inode_number().\n\nI still don\u0027t understand how it\u0027s supposed to work, because \"| ~MASK\"\nis not an inversion for \"\u0026 MAX\" operation.\n\nSo, use just one nice, working addition. Make start offset unsigned int,\nwhile I\u0027m at it. It\u0027s longness is not used anywhere.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "267e2a9c71b8e088ac307f9549f71468e86e26c1",
      "tree": "a2fc7be0ee2d712841b4564abf4e63d814642ec3",
      "parents": [
        "99fcd77d15357e8ba51005c25cc750b9c28b2688"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jul 25 19:45:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:08 2008 -0700"
      },
      "message": "Use WARN() in fs/proc/\n\nUse WARN() instead of a printk+WARN_ON() pair; this way the message\nbecomes part of the warning section for better reporting/collection.\nThis way, the entire if() {} section can collapse into the WARN() as well.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-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": "881adb85358309ea9c6f707394002719982ec607",
      "tree": "e4ffc2f6ca6013bab97bdb77b80e98b46a8d01e1",
      "parents": [
        "6e644c3126149b65460610fe5a00d8a162092abe"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 01:48:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:44 2008 -0700"
      },
      "message": "proc: always do -\u003erelease\n\nCurrent two-stage scheme of removing PDE emphasizes one bug in proc:\n\n\t\topen\n\t\t\t\trmmod\n\t\t\t\tremove_proc_entry\n\t\tclose\n\n-\u003erelease won\u0027t be called because -\u003eproc_fops were cleared.  In simple\ncases it\u0027s small memory leak.\n\nFor every -\u003eopen, -\u003erelease has to be done.  List of openers is introduced\nwhich is traversed at remove_proc_entry() if neeeded.\n\nDiscussions with Al long ago (sigh).\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.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": "78e92b99ec4eb73755abd4e357b0b211eadafd88",
      "tree": "8db0049da6d0ce0a968b11fae12f3f91664881dd",
      "parents": [
        "8b169240e266d7fc58d9b9077d18d50a548d9732"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Fri May 02 04:12:41 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri May 02 04:12:41 2008 -0700"
      },
      "message": "netns: assign PDE-\u003edata before gluing entry into /proc tree\n\nIn this unfortunate case, proc_mkdir_mode wrapper can\u0027t be used anymore and\nthis is no way to reuse proc_create_data due to nlinks assignment. So,\ncopy the code from proc_mkdir and assign PDE-\u003edata at the appropriate\nmoment.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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": "8731f14d37825b54ad0c4c309cba2bc8fdf13a86",
      "tree": "6f0d6d646ad6c1c5b4765953fea004c1758961be",
      "parents": [
        "352ced8e594091d74b92da9bcf07aea81d37ac55"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue Apr 29 01:01:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:19 2008 -0700"
      },
      "message": "proc: remove -\u003eget_info infrastructure\n\nNow that last dozen or so users of -\u003eget_info were removed, ditch it too.\nEveryone sane shouldd have switched to seq_file interface long ago.\n\nP.S.: Co-existing 3 interfaces (-\u003eget_info/-\u003eread_proc/-\u003eproc_fops) for proc\n      is long-standing crap, BTW, thus\n      a) put -\u003eread_proc/-\u003ewrite_proc/read_proc_entry() users on death row,\n      b) new such users should be rejected,\n      c) everyone is encouraged to convert his favourite -\u003eread_proc user or\n         I\u0027ll do it, lazy bastards.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e971dce0b2f6896e02372512df0d1fb0bfe2d55",
      "tree": "bce0356470331c49c92b87042103034e55beaa8e",
      "parents": [
        "7cee4e00e0f8aa7290266382ea903a5a1b92c9a1"
      ],
      "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: drop several \"PDE valid/invalid\" checks\n\nproc-misc code is noticeably full of \"if (de)\" checks when PDE passed is\nalways valid.  Remove them.\n\nAddition of such check in proc_lookup_de() is for failed lookup case.\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": "7cee4e00e0f8aa7290266382ea903a5a1b92c9a1",
      "tree": "3d4ca2241e122f3358433b26538d952eda0226c5",
      "parents": [
        "f649d6d32605c7573884613289fb3b9fbd4f99a1"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Apr 29 01:01:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:17 2008 -0700"
      },
      "message": "proc: less special case in xlate code\n\nIf valid \"parent\" is passed to proc_create/remove_proc_entry(), then name of\nPDE should consist of only one path component, otherwise creation or or\nremoval will fail.  However, if NULL is passed as parent then create/remove\naccept full path as a argument.  This is arbitrary restriction -- all\ninfrastructure is in place.\n\nSo, patch allows the following to succeed:\n\n\tcreate_proc_entry(\"foo/bar\", 0, pde_baz);\n\tremove_proc_entry(\"baz/foo/bar\", \u0026proc_root);\n\nAlso makes the following to behave identically:\n\n\tcreate_proc_entry(\"foo/bar\", 0, NULL);\n\tcreate_proc_entry(\"foo/bar\", 0, \u0026proc_root);\n\nDiscrepancy noticed by Den Lunev (IIRC).\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": "f649d6d32605c7573884613289fb3b9fbd4f99a1",
      "tree": "3fe52e6e5e93edc2f011d8047a8e3ac2eee71930",
      "parents": [
        "638fa202cdb207083a12d6f73e313605a8fc1037"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Apr 29 01:01:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:17 2008 -0700"
      },
      "message": "proc: simplify locking in remove_proc_entry()\n\nproc_subdir_lock protects only modifying and walking through PDE lists, so\nafter we\u0027ve found PDE to remove and actually removed it from lists, there is\nno need to hold proc_subdir_lock for the rest of operation.\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": "e93b4ea20adb20f1f1f07f10ba5d7dd739d2843e",
      "tree": "69afed8fb7a13a0dd9e1f1e1dbfc663620d78363",
      "parents": [
        "7249db2c281ac688977ecc6862cdee9969d310e2"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue Apr 29 01:01:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:17 2008 -0700"
      },
      "message": "proc: print more information when removing non-empty directories\n\nThis usually saves one recompile to insert similar printk like below. :)\n\nSample nastygram:\n\nremove_proc_entry: removing non-empty directory \u0027/proc/foo\u0027, leaking at least \u0027bar\u0027\n------------[ cut here ]------------\nWARNING: at fs/proc/generic.c:776 remove_proc_entry+0x18a/0x200()\nModules linked in: foo(-) container fan battery dock sbs ac sbshc backlight ipv6 loop af_packet amd_rng sr_mod i2c_amd8111 i2c_amd756 cdrom i2c_core button thermal processor\nPid: 3034, comm: rmmod Tainted: G   M     2.6.25-rc1 #5\n\nCall Trace:\n [\u003cffffffff80231974\u003e] warn_on_slowpath+0x64/0x90\n [\u003cffffffff80232a6e\u003e] printk+0x4e/0x60\n [\u003cffffffff802d6c8a\u003e] remove_proc_entry+0x18a/0x200\n [\u003cffffffff8045cd88\u003e] mutex_lock_nested+0x1c8/0x2d0\n [\u003cffffffff8025f0f0\u003e] __try_stop_module+0x0/0x40\n [\u003cffffffff8025effd\u003e] sys_delete_module+0x14d/0x200\n [\u003cffffffff8045df3d\u003e] lockdep_sys_exit_thunk+0x35/0x67\n [\u003cffffffff8031c307\u003e] __up_read+0x27/0xa0\n [\u003cffffffff8045decc\u003e] trace_hardirqs_on_thunk+0x35/0x3a\n [\u003cffffffff8020b6ab\u003e] system_call_after_swapgs+0x7b/0x80\n\n---[ end trace 10ef850597e89c54 ]---\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: 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": "e9720acd728a46cb40daa52c99a979f7c4ff195c",
      "tree": "01380f601384cf93f30dedb64afe80359fecb807",
      "parents": [
        "1ff82fe0024e8070c38346b8abc1ff09612dea4c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Fri Mar 07 11:08:40 2008 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 07 11:08:40 2008 -0800"
      },
      "message": "[NET]: Make /proc/net a symlink on /proc/self/net (v3)\n\nCurrent /proc/net is done with so called \"shadows\", but current\nimplementation is broken and has little chances to get fixed.\n\nThe problem is that dentries subtree of /proc/net directory has\nfancy revalidation rules to make processes living in different\nnet namespaces see different entries in /proc/net subtree, but\ncurrently, tasks see in the /proc/net subdir the contents of any\nother namespace, depending on who opened the file first.\n\nThe proposed fix is to turn /proc/net into a symlink, which points\nto /proc/self/net, which in turn shows what previously was in\n/proc/net - the network-related info, from the net namespace the\nappropriate task lives in.\n\n# ls -l /proc/net\nlrwxrwxrwx  1 root root 8 Mar  5 15:17 /proc/net -\u003e self/net\n\nIn other words - this behaves like /proc/mounts, but unlike\n\"mounts\", \"net\" is not a file, but a directory.\n\nChanges from v2:\n* Fixed discrepancy of /proc/net nlink count and selinux labeling\n  screwup pointed out by Stephen.\n\n  To get the correct nlink count the -\u003egetattr callback for /proc/net\n  is overridden to read one from the net-\u003eproc_net entry.\n\n  To make selinux still work the net-\u003eproc_net entry is initialized\n  properly, i.e. with the \"net\" name and the proc_net parent.\n\nSelinux fixes are\nAcked-by:  Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n\nChanges from v1:\n* Fixed a task_struct leak in get_proc_task_net, pointed out by Paul.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\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": "94413d8807a3c511a3675be4ce27a4d16d6408ee",
      "tree": "d20800024bdfe15d4f6ae1e7cc63a537127afab4",
      "parents": [
        "fd2cbe48883a01f710c2a639877e3b3e4eba6e59"
      ],
      "author": {
        "name": "Zhang Rui",
        "email": "rui.zhang@intel.com",
        "time": "Fri Feb 08 04:18:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:23 2008 -0800"
      },
      "message": "proc: detect duplicate names on registration\n\nPrint a warning if PDE is registered with a name which already exists in\ntarget directory.\n\nBug report and a simple fix can be found here:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d8798\n\n[\\n fixlet and no undescriptive variable usage --adobriyan]\n[akpm@linux-foundation.org: make printk comprehensible]\nSigned-off-by: Zhang Rui \u003crui.zhang@intel.com\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fd2cbe48883a01f710c2a639877e3b3e4eba6e59",
      "tree": "d358e9de25cb8abf06b0f6fb334d6121da19ae07",
      "parents": [
        "76df0c25d0c34eba9fbb8a44106ed096553ba0e8"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Fri Feb 08 04:18:28 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:23 2008 -0800"
      },
      "message": "proc: remove useless check on symlink removal\n\nproc symlinks always have valid -\u003edata containing destination of symlink.  No\nneed to check it on removal -- proc_symlink() already done it.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76df0c25d0c34eba9fbb8a44106ed096553ba0e8",
      "tree": "a68241a860699f952a1cfcf22e50ddbc19bba7c9",
      "parents": [
        "4237e0d3de38da640d7c977d68f5f7f1d207a631"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Fri Feb 08 04:18:27 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:23 2008 -0800"
      },
      "message": "proc: simplify function prototypes\n\nMove code around so as to reduce the number of forward-declarations.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4237e0d3de38da640d7c977d68f5f7f1d207a631",
      "tree": "0bf02984aef945c5d97a5929b82e7ecd6b7f39ed",
      "parents": [
        "5b3fe63b19e00f3b2a14a09c979e84163029e390"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Fri Feb 08 04:18:27 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:23 2008 -0800"
      },
      "message": "proc: less LOCK operations during lookup\n\nPseudo-code for lookup effectively is:\n\n\tLOCK kernel\n\tLOCK proc_subdir_lock\n\t\tfind PDE\n\t\tUNLOCK proc_subdir_lock\n\n\t\tget inode\n\n\t\tLOCK proc_subdir_lock\n\t\tgoto unlock\n\tUNLOCK proc_subdir_lock\n\tUNLOCK kernel\n\nWe can get rid of LOCK/UNLOCK pair after getting inode simply by jumping\nto unlock_kernel() directly.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3790ee4bd86396558eedd86faac1052cb782e4e1",
      "tree": "b5e3142205713d37d23003233352ee7221947c1a",
      "parents": [
        "d84248bf46582a406116c55b94405c05193773b1"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Dec 10 15:49:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 10 19:43:55 2007 -0800"
      },
      "message": "proc: remove/Fix proc generic d_revalidate\n\nUltimately to implement /proc perfectly we need an implementation of\nd_revalidate because files and directories can be removed behind the back\nof the VFS, and d_revalidate is the only way we can let the VFS know that\nthis has happened.\n\nUnfortunately the linux VFS can not cope with anything in the path to a\nmount point going away.  So a proper d_revalidate method that calls d_drop\nalso needs to call have_submounts which is moderately expensive, so you\nreally don\u0027t want a d_revalidate method that unconditionally calls it, but\ninstead only calls it when the backing object has really gone away.\n\nproc generic entries only disappear on module_unload (when not counting the\nfledgling network namespace) so it is quite rare that we actually encounter\nthat case and has not actually caused us real world trouble yet.\n\nSo until we get a proper test for keeping dentries in the dcache fix the\ncurrent d_revalidate method by completely removing it.  This returns us to\nthe current status quo.\n\nSo with CONFIG_NETNS\u003dn things should look as they have always looked.\n\nFor CONFIG_NETNS\u003dy things work most of the time but there are a few rare\ncorner cases that don\u0027t behave properly.  As the network namespace is\nbarely present in 2.6.24 this should not be a problem.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"Denis V. Lunev\" \u003cden@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "8002cedc1adbf51e2d56091534ef7551b88329b4",
      "tree": "2c65c82b2b5300eac581a0ee794d98f0b61593b6",
      "parents": [
        "e87cb5db0dc357473ac71801051954ddd6ff604f",
        "d523a328fb0271e1a763e985a21f2488fd816e7e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 03 08:15:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 03 08:15:36 2007 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/net-2.6: (27 commits)\n  [INET]: Fix inet_diag dead-lock regression\n  [NETNS]: Fix /proc/net breakage\n  [TEXTSEARCH]: Do not allow zero length patterns in the textsearch infrastructure\n  [NETFILTER]: fix forgotten module release in xt_CONNMARK and xt_CONNSECMARK\n  [NETFILTER]: xt_TCPMSS: remove network triggerable WARN_ON\n  [DECNET]: dn_nl_deladdr() almost always returns no error\n  [IPV6]: Restore IPv6 when MTU is big enough\n  [RXRPC]: Add missing select on CRYPTO\n  mac80211: rate limit wep decrypt failed messages\n  rfkill: fix double-mutex-locking\n  mac80211: drop unencrypted frames if encryption is expected\n  mac80211: Fix behavior of ieee80211_open and ieee80211_close\n  ieee80211: fix unaligned access in ieee80211_copy_snap\n  mac80211: free ifsta-\u003eextra_ie and clear IEEE80211_STA_PRIVACY_INVOKED\n  SCTP: Fix build issues with SCTP AUTH.\n  SCTP: Fix chunk acceptance when no authenticated chunks were listed.\n  SCTP: Fix the supported extensions paramter\n  SCTP: Fix SCTP-AUTH to correctly add HMACS paramter.\n  SCTP: Fix the number of HB transmissions.\n  [TCP] illinois: Incorrect beta usage\n  ...\n"
    },
    {
      "commit": "2b1e300a9dfc3196ccddf6f1d74b91b7af55e416",
      "tree": "3181bf4f2c27d185c78b26642f35ed00cb280943",
      "parents": [
        "e03ba84adb62fbc6049325a5bc00ef6932fa5e39"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Dec 02 00:33:17 2007 +1100"
      },
      "committer": {
        "name": "Herbert Xu",
        "email": "herbert@gondor.apana.org.au",
        "time": "Sun Dec 02 00:33:17 2007 +1100"
      },
      "message": "[NETNS]: Fix /proc/net breakage\n\nWell I clearly goofed when I added the initial network namespace support\nfor /proc/net.  Currently things work but there are odd details visible to\nuser space, even when we have a single network namespace.\n\nSince we do not cache proc_dir_entry dentries at the moment we can just\nmodify -\u003elookup to return a different directory inode depending on the\nnetwork namespace of the process looking at /proc/net, replacing the\ncurrent technique of using a magic and fragile follow_link method.\n\nTo accomplish that this patch:\n- introduces a shadow_proc method to allow different dentries to\n  be returned from proc_lookup.\n- Removes the old /proc/net follow_link magic\n- Fixes a weakness in our not caching of proc generic dentries.\n\nAs shadow_proc uses a task struct to decided which dentry to return we can\ngo back later and fix the proc generic caching without modifying any code\nthat uses the shadow_proc method.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\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": "e12ba74d8ff3e2f73a583500d7095e406df4d093",
      "tree": "a0d3385b65f0b3e1e00b0bbf11b75e7538a93edb",
      "parents": [
        "c361be55b3128474aa66d31092db330b07539103"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Group short-lived and reclaimable kernel allocations\n\nThis patch marks a number of allocations that are either short-lived such as\nnetwork buffers or are reclaimable such as inode allocations.  When something\nlike updatedb is called, long-lived and unmovable kernel allocations tend to\nbe spread throughout the address space which increases fragmentation.\n\nThis patch groups these allocations together as much as possible by adding a\nnew MIGRATE_TYPE.  The MIGRATE_RECLAIMABLE type is for allocations that can be\nreclaimed on demand, but not moved.  i.e.  they can be migrated by deleting\nthem and re-reading the information from elsewhere.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99fc06df72fe1c9ad3ec274720dcb5658c40bfd2",
      "tree": "1a5913a12185031e2076618884988afc6ef5759e",
      "parents": [
        "17973f5af741f1758ed57c5115ca394c22bee159"
      ],
      "author": {
        "name": "Changli Gao",
        "email": "xiaosuo@gmail.com",
        "time": "Sun Jul 15 23:40:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:43 2007 -0700"
      },
      "message": "procfs directory entry cleanup\n\nFunction proc_register() will assign proc_dir_operations and\nproc_dir_inode_operations to ent\u0027s members proc_fops and proc_iops\ncorrectly if ent is a directory. So the early assignment isn\u0027t\nnecessary.\n\nCc: 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": "786d7e1612f0b0adb6046f19b906609e4fe8b1ba",
      "tree": "9d5f1623c19c9d3f84606ea160d57cd3c8c97ea9",
      "parents": [
        "5568b0e8028d966ddb16f0be44a9df1fcbd1dc8d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Sun Jul 15 23:39:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:39 2007 -0700"
      },
      "message": "Fix rmmod/read/write races in /proc entries\n\nFix following races:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n1. Write via -\u003ewrite_proc sleeps in copy_from_user(). Module disappears\n   meanwhile. Or, more generically, system call done on /proc file, method\n   supplied by module is called, module dissapeares meanwhile.\n\n   pde \u003d create_proc_entry()\n   if (!pde)\n\treturn -ENOMEM;\n   pde-\u003ewrite_proc \u003d ...\n\t\t\t\topen\n\t\t\t\twrite\n\t\t\t\tcopy_from_user\n   pde \u003d create_proc_entry();\n   if (!pde) {\n\tremove_proc_entry();\n\treturn -ENOMEM;\n\t/* module unloaded */\n   }\n\t\t\t\t*boom*\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n2. bogo-revoke aka proc_kill_inodes()\n\n  remove_proc_entry\t\tvfs_read\n  proc_kill_inodes\t\t[check -\u003ef_op validness]\n\t\t\t\t[check -\u003ef_op-\u003eread validness]\n\t\t\t\t[verify_area, security permissions checks]\n\t-\u003ef_op \u003d NULL;\n\t\t\t\tif (file-\u003ef_op-\u003eread)\n\t\t\t\t\t/* -\u003ef_op dereference, boom */\n\nNOTE, NOTE, NOTE: file_operations are proxied for regular files only. Let\u0027s\nsee how this scheme behaves, then extend if needed for directories.\nDirectories creators in /proc only set -\u003eowner for them, so proxying for\ndirectories may be unneeded.\n\nNOTE, NOTE, NOTE: methods being proxied are -\u003ellseek, -\u003eread, -\u003ewrite,\n-\u003epoll, -\u003eunlocked_ioctl, -\u003eioctl, -\u003ecompat_ioctl, -\u003eopen, -\u003erelease.\nIf your in-tree module uses something else, yell on me. Full audit pending.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59cd0cbc75367b82f704f63b104117462275060d",
      "tree": "695c4f7af4cf840a7e22e7767e1b5705e0b6d8d1",
      "parents": [
        "7695650a924a6859910c8c19dfa43b4d08224d66"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Tue May 08 00:25:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "Fix race between proc_readdir and remove_proc_entry\n\nFix the following race:\n\nproc_readdir\t\t\t\tremove_proc_entry\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nspin_lock(\u0026proc_subdir_lock);\n[choose PDE to start filldir from]\nspin_unlock(\u0026proc_subdir_lock);\n\t\t\t\t\tspin_lock(\u0026proc_subdir_lock);\n\t\t\t\t\t[find PDE]\n\t\t\t\t\t[free PDE, refcount is 0]\n\t\t\t\t\tspin_unlock(\u0026proc_subdir_lock);\n\t\t    /* boom */\nif (filldir(dirent, de-\u003ename, ...\n\n[de_put on error path --adobriyan]\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\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": "7695650a924a6859910c8c19dfa43b4d08224d66",
      "tree": "5947c3e1b24600b6440468c11b30feeef31eee2c",
      "parents": [
        "79c0b2df79eb56fc71e54c75cd7fb3acf84370f9"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@openvz.org",
        "time": "Tue May 08 00:25:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:01 2007 -0700"
      },
      "message": "Fix race between proc_get_inode() and remove_proc_entry()\n\nproc_lookup\t\t\t\tremove_proc_entry\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nlock_kernel();\nspin_lock(\u0026proc_subdir_lock);\n[find PDE with refcount 0]\nspin_unlock(\u0026proc_subdir_lock);\n\t\t\t\t\tspin_lock(\u0026proc_subdir_lock);\n\t\t\t\t\t[find PDE with refcount 0]\n\t\t\t\t\t[check refcount and free PDE]\n\t\t\t\t\tspin_unlock(\u0026proc_subdir_lock);\nproc_get_inode:\n\tde_get(de); /* boom */\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@openvz.org\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": "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": "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": "2fddfeefeed703b7638af97aa3048f82a2d53b03",
      "tree": "a58e1f032b3754d4c55556578a96a32a6f1715ee",
      "parents": [
        "f427f5d5d6b0eb729505a2d9c0a6cad22734a74c"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] proc: change uses of f_{dentry, vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in the proc\nfilesystem code.\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": "99ac48f54a91d02140c497edc31dc57d4bc5c85d",
      "tree": "68719391694a6914191bdf73d2071875f7653f6f",
      "parents": [
        "ec1b9466cb4f6ae6d950bd67055d9410d1056d2a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:05 2006 -0800"
      },
      "message": "[PATCH] mark f_ops const in the inode\n\nMark the f_ops members of inodes as const, as well as fix the\nripple-through this causes by places that copy this f_ops and then \"do\nstuff\" with it.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "64a07bd82ed526d813b64b0957543eef55bdf9c0",
      "tree": "451586526696bc4a80d8a9f4c50460ae2d4e92eb",
      "parents": [
        "cd7b24bb1891a10ee25168a912ff2304a9571d23"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sun Mar 26 01:36:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:53 2006 -0800"
      },
      "message": "[PATCH] protect remove_proc_entry\n\nIt has been discovered that the remove_proc_entry has a race in the removing\nof entries in the proc file system that are siblings.  There\u0027s no protection\naround the traversing and removing of elements that belong in the same\nsubdirectory.\n\nThis subdirectory list is protected in other areas by the BKL.  So the BKL was\nat first used to protect this area too, but unfortunately, remove_proc_entry\nmay be called with spinlocks held.  The BKL may schedule, so this was not a\nsolution.\n\nThe final solution was to add a new global spin lock to protect this list,\ncalled proc_subdir_lock.  This lock now protects the list in\nremove_proc_entry, and I also went around looking for other areas that this\nlist is modified and added this protection there too.  Care must be taken\nsince these locations call several functions that may also schedule.\n\nSince I don\u0027t see any location that these functions that modify the\nsubdirectory list are called by interrupts, the irqsave/restore versions of\nthe spin lock was _not_ used.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\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": "8b90db0df7187a01fb7177f1f812123138f562cf",
      "tree": "8d7029403cc50d822bc22085202bfdbf6110203b",
      "parents": [
        "40c37213a081990b1d3778f57630f97df75a7ec1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Dec 30 08:39:10 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Dec 30 08:39:10 2005 -0800"
      },
      "message": "Insanity avoidance in /proc\n\nThe old /proc interfaces were never updated to use loff_t, and are just\ngenerally broken.  Now, we should be using the seq_file interface for\nall of the proc files, but converting the legacy functions is more work\nthan most people care for and has little upside..\n\nBut at least we can make the non-LFS rules explicit, rather than just\ninsanely wrapping the offset or something.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2f51201662b28dbf8c15fb7eb972bc51c6cc3fa5",
      "tree": "96826df796058560bc5dd1f7d8d476c5a741d7bc",
      "parents": [
        "503af334ecf23b9d65d2ff0cc759f3a0bf338290"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Oct 30 15:02:16 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:19 2005 -0800"
      },
      "message": "[PATCH] reduce sizeof(struct file)\n\nNow that RCU applied on \u0027struct file\u0027 seems stable, we can place f_rcuhead\nin a memory location that is not anymore used at call_rcu(\u0026f-\u003ef_rcuhead,\nfile_free_rcu) time, to reduce the size of this critical kernel object.\n\nThe trick I used is to move f_rcuhead and f_list in an union called f_u\n\nThe callers are changed so that f_rcuhead becomes f_u.fu_rcuhead and f_list\nbecomes f_u.f_list\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2b579beec255d6589fabe51b60933d723630bcd4",
      "tree": "06c0899b0071ec7cc9b3761c185452fa2c6f243b",
      "parents": [
        "230649da7cb73914b8b2a1ffc802a2951e970454"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Sep 06 15:17:18 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:28 2005 -0700"
      },
      "message": "[PATCH] proc: link count fix\n\nThis patch fixes bug titled \"sunrpc as module and bad proc/sys link count\"\nreported by Jiri Slaby.\n\nThe problem was, that only proc_dir_entry-\u003enlink was updated and the\ncorresponding inode-\u003ei_nlink was not.  The fix is to implement the\ninode-\u003egetattr() method, and update i_nlink (if necessary).\n\nA quick audit of proc code shows that no other attribute changes after\ncreation.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "008b150a3c4d971cd65d02d107b8fcc860bc959c",
      "tree": "8594c24dbb13dc253f41ef885a8ac899f0e434c1",
      "parents": [
        "cc314eef0128a807e50fa03baf2d0abc0647952c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@parcelfarce.linux.theplanet.co.uk",
        "time": "Sat Aug 20 00:17:39 2005 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Aug 19 18:08:21 2005 -0700"
      },
      "message": "[PATCH] Fix up symlink function pointers\n\nThis fixes up the symlink functions for the calling convention change:\n\n * afs, autofs4, befs, devfs, freevxfs, jffs2, jfs, ncpfs, procfs,\n   smbfs, sysvfs, ufs, xfs - prototype change for -\u003efollow_link()\n * befs, smbfs, xfs - same for -\u003eput_link()\n\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"
    }
  ]
}
