)]}'
{
  "log": [
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efe9e77997f6e0306fedc6efa98df491dcf5ecb0",
      "tree": "a42458a88c0a2ea8c967e924c206ff7a002d9a21",
      "parents": [
        "ffc6421f0720f433b5b35b89ff56e998eabff93b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jul 23 21:27:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:14 2008 -0700"
      },
      "message": "mspec: convert nopfn to fault\n\n[akpm@linux-foundation.org: remove unused variable]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Jes Sorensen \u003cjes@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": "e4a064dfa2b242519a9f06f9a1e58c27bf0c371b",
      "tree": "671214b5b256e4b397ce321346d58a551845fe68",
      "parents": [
        "e617fce64e5faea149fcf3bffc1b42e4ba29e7e5"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dcn@sgi.com",
        "time": "Fri Apr 25 15:22:19 2008 -0500"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Tue Apr 29 13:49:01 2008 -0700"
      },
      "message": "[IA64] allocate multiple contiguous pages via uncached allocator\n\nEnable the uncached allocator to allocate multiple pages of contiguous\nuncached memory.\n\nSigned-off-by: Dean Nelson \u003cdcn@sgi.com\u003e\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "2f98735c9c24ea1f0d40a364d4e63611b689b795",
      "tree": "a42b3802449af474d36cda3b6f9fb190a717defb",
      "parents": [
        "fe2528b96b02173395f5a75e37714c07f3e25e73"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Feb 02 03:08:53 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 07:55:38 2008 -0800"
      },
      "message": "vm audit: add VM_DONTEXPAND to mmap for drivers that need it\n\nDrivers that register a -\u003efault handler, but do not range-check the\noffset argument, must set VM_DONTEXPAND in the vm_flags in order to\nprevent an expanding mremap from overflowing the resource.\n\nI\u0027ve audited the tree and attempted to fix these problems (usually by\nadding VM_DONTEXPAND where it is not obvious).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dca53a9dabe76f49209c9128313347510416c68",
      "tree": "73b58d1f6277305b592f2c53d7b43b151a3f9e3b",
      "parents": [
        "f64dc58c5412233d4d44b0275eaebdc11bde23b3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 01:25:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:58 2007 -0700"
      },
      "message": "Memoryless nodes: Uncached allocator updates\n\nThe checks for node_online in the uncached allocator are made to make sure\nthat memory is available on these nodes.  Thus switch all the checks to use\nN_HIGH_MEMORY and to N_ONLINE.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nAcked-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "afa684f6fda6086b229348f0ea21df7c8ad17964",
      "tree": "2a7c1fb54b6383af854a19f2545ad49abb3dc64a",
      "parents": [
        "f9b7cba1b8a74c10b0771ca28d4c554aeb9803fc"
      ],
      "author": {
        "name": "Cliff Wickman",
        "email": "cpw@sgi.com",
        "time": "Mon Sep 24 21:24:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Sep 25 08:51:04 2007 -0700"
      },
      "message": "fix \"mspec: handle shrinking virtual memory areas\"\n\nThe vma_data structure may be shared by vma\u0027s from multiple tasks, with no\nway of knowing which areas are shared or not shared, so release/clear pages\nonly when the refcount (of vma\u0027s) goes to zero.\n\nSigned-off-by: Cliff Wickman \u003ccpw@sgi.com\u003e\nCc: Jes Sorensen \u003cjes@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": "4191ba26dae8338892e73f6e67bd18068b4344e9",
      "tree": "150cbb20ba7b2c1e73b378df22c8179425ace848",
      "parents": [
        "49cc886aea1d79cdb0ea409554866238b07fe26f"
      ],
      "author": {
        "name": "Cliff Wickman",
        "email": "cpw@sgi.com",
        "time": "Tue Sep 18 22:46:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Sep 19 11:24:17 2007 -0700"
      },
      "message": "mspec: handle shrinking virtual memory areas\n\nThe shrinking of a virtual memory area that is mmap(2)\u0027d to a memory\nspecial file (device drivers/char/mspec.c) can cause a panic.\n\nIf the mapped size of the vma (vm_area_struct) is very large, mspec allocates\na large vma_data structure with vmalloc(). But such a vma can be shrunk by\nan munmap(2).  The current driver uses the current size of each vma to\ndeduce whether its vma_data structure was allocated by kmalloc() or vmalloc().\nSo if the vma was shrunk it appears to have been allocated by kmalloc(),\nand mspec attempts to free it with kfree().  This results in a panic.\n\nThis patch avoids the panic (by preserving the type of the allocation) and\nalso makes mspec work correctly as the vma is split into pieces by the\nmunmap(2)\u0027s.\n\nAll vma\u0027s derived from such a split vma share the same vma_data structure that\nrepresents all the pages mapped into this set of vma\u0027s.  The mpec driver\nmust be made capable of using the right portion of the structure for each\nmember vma.  In other words, it must index into the array of page addresses\nusing the portion of the array that represents the current vma. This is\nenabled by storing the vma group\u0027s vm_start in the vma_data structure.\n\nThe shared vma_data\u0027s are not protected by mm-\u003emmap_sem in the fork() case\nso the reference count is left as atomic_t.\n\nSigned-off-by: Cliff Wickman \u003ccpw@sgi.com\u003e\nAcked-by: Jes Sorensen \u003cjes@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": "4e950f6f0189f65f8bf069cf2272649ef418f5e4",
      "tree": "95710bedf2a5aa3b61002f3399e0950192fdd504",
      "parents": [
        "673d5b43daa00b42759cecc6b0760b8bf6be80d2"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jul 30 02:36:13 2007 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 29 17:09:29 2007 -0700"
      },
      "message": "Remove fs.h from mm.h\n\nRemove fs.h from mm.h. For this,\n 1) Uninline vma_wants_writenotify(). It\u0027s pretty huge anyway.\n 2) Add back fs.h or less bloated headers (err.h) to files that need it.\n\nAs result, on x86_64 allyesconfig, fs.h dependencies cut down from 3929 files\nrebuilt down to 3444 (-12.3%).\n\nCross-compile tested without regressions on my two usual configs and (sigh):\n\nalpha              arm-mx1ads        mips-bigsur          powerpc-ebony\nalpha-allnoconfig  arm-neponset      mips-capcella        powerpc-g5\nalpha-defconfig    arm-netwinder     mips-cobalt          powerpc-holly\nalpha-up           arm-netx          mips-db1000          powerpc-iseries\narm                arm-ns9xxx        mips-db1100          powerpc-linkstation\narm-assabet        arm-omap_h2_1610  mips-db1200          powerpc-lite5200\narm-at91rm9200dk   arm-onearm        mips-db1500          powerpc-maple\narm-at91rm9200ek   arm-picotux200    mips-db1550          powerpc-mpc7448_hpc2\narm-at91sam9260ek  arm-pleb          mips-ddb5477         powerpc-mpc8272_ads\narm-at91sam9261ek  arm-pnx4008       mips-decstation      powerpc-mpc8313_rdb\narm-at91sam9263ek  arm-pxa255-idp    mips-e55             powerpc-mpc832x_mds\narm-at91sam9rlek   arm-realview      mips-emma2rh         powerpc-mpc832x_rdb\narm-ateb9200       arm-realview-smp  mips-excite          powerpc-mpc834x_itx\narm-badge4         arm-rpc           mips-fulong          powerpc-mpc834x_itxgp\narm-carmeva        arm-s3c2410       mips-ip22            powerpc-mpc834x_mds\narm-cerfcube       arm-shannon       mips-ip27            powerpc-mpc836x_mds\narm-clps7500       arm-shark         mips-ip32            powerpc-mpc8540_ads\narm-collie         arm-simpad        mips-jazz            powerpc-mpc8544_ds\narm-corgi          arm-spitz         mips-jmr3927         powerpc-mpc8560_ads\narm-csb337         arm-trizeps4      mips-malta           powerpc-mpc8568mds\narm-csb637         arm-versatile     mips-mipssim         powerpc-mpc85xx_cds\narm-ebsa110        i386              mips-mpc30x          powerpc-mpc8641_hpcn\narm-edb7211        i386-allnoconfig  mips-msp71xx         powerpc-mpc866_ads\narm-em_x270        i386-defconfig    mips-ocelot          powerpc-mpc885_ads\narm-ep93xx         i386-up           mips-pb1100          powerpc-pasemi\narm-footbridge     ia64              mips-pb1500          powerpc-pmac32\narm-fortunet       ia64-allnoconfig  mips-pb1550          powerpc-ppc64\narm-h3600          ia64-bigsur       mips-pnx8550-jbs     powerpc-prpmc2800\narm-h7201          ia64-defconfig    mips-pnx8550-stb810  powerpc-ps3\narm-h7202          ia64-gensparse    mips-qemu            powerpc-pseries\narm-hackkit        ia64-sim          mips-rbhma4200       powerpc-up\narm-integrator     ia64-sn2          mips-rbhma4500       s390\narm-iop13xx        ia64-tiger        mips-rm200           s390-allnoconfig\narm-iop32x         ia64-up           mips-sb1250-swarm    s390-defconfig\narm-iop33x         ia64-zx1          mips-sead            s390-up\narm-ixp2000        m68k              mips-tb0219          sparc\narm-ixp23xx        m68k-amiga        mips-tb0226          sparc-allnoconfig\narm-ixp4xx         m68k-apollo       mips-tb0287          sparc-defconfig\narm-jornada720     m68k-atari        mips-workpad         sparc-up\narm-kafa           m68k-bvme6000     mips-wrppmc          sparc64\narm-kb9202         m68k-hp300        mips-yosemite        sparc64-allnoconfig\narm-ks8695         m68k-mac          parisc               sparc64-defconfig\narm-lart           m68k-mvme147      parisc-allnoconfig   sparc64-up\narm-lpd270         m68k-mvme16x      parisc-defconfig     um-x86_64\narm-lpd7a400       m68k-q40          parisc-up            x86_64\narm-lpd7a404       m68k-sun3         powerpc              x86_64-allnoconfig\narm-lubbock        m68k-sun3x        powerpc-cell         x86_64-defconfig\narm-lusl7200       mips              powerpc-celleb       x86_64-up\narm-mainstone      mips-atlas        powerpc-chrp32\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dc4ac6324094cd52dc77ddf88296a94b90bbafc",
      "tree": "11308d4def090b4e88737aad05d914f339ca7b52",
      "parents": [
        "b49ad484c54116862d717ffafcab1c9a46600b48"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sun Jul 15 23:38:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "mspec_mmap: don\u0027t set VM_LOCKED\n\nmspec_mmap was setting VM_LOCKED (without adjusting locked_vm): don\u0027t do\nthat, it serves no purpose in 2.6, other than to mess up the locked_vm\naccounting - mspec\u0027s pages won\u0027t get reclaimed anyway.  Thanks to Dmitry\nMonakhov for raising the issue.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Dmitry Monakhov \u003cdmonakhov@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": "2b8693c0617e972fc0b2fd1ebf8de97e15b656c3",
      "tree": "3eb7dfbc8d5e4031e4992bdd566e211f5ada71f3",
      "parents": [
        "5dfe4c964a0dd7bb3a1d64a4166835a153146207"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Feb 12 00:55:32 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 3\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": "1a4b0fc503ff4149f5915be4aeb179b9453cf485",
      "tree": "0f8ccd1b383f486a71b3f5526eb10d245bd9425c",
      "parents": [
        "d67afe5ed00070de0965bfc98de5f6ed3a80a73e"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Fri Nov 10 12:27:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 13 07:40:42 2006 -0800"
      },
      "message": "[PATCH] mspec driver build fix\n\nFix MSPEC driver to build for non SN2 enabled configs as the driver should\nwork in cached and uncached modes (no fetchop) on these systems.  In\naddition make MSPEC select IA64_UNCACHED_ALLOCATOR, which is required for\nit and move it to arch/ia64/Kconfig to avoid warnings on non ia64\narchitectures running allmodconfig.  Once the Kconfig code is fixed, we can\nmove it back.\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Fernando Luis Vzquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "038b0a6d8d32db934bba6a24e74e76e4e327a94f",
      "tree": "5fbeb3e8f140e20f8ce0e33e12b32ec5b0724cd6",
      "parents": [
        "78b656b8bf933101b42409b4492734b23427bfc3"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Wed Oct 04 03:38:54 2006 -0400"
      },
      "committer": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Wed Oct 04 03:38:54 2006 -0400"
      },
      "message": "Remove all inclusions of \u003clinux/config.h\u003e\nkbuild explicitly includes this at build time.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\n"
    },
    {
      "commit": "17a3b05047119b7fc72ef03962e202becc659579",
      "tree": "bbf7dc536cfdb3b399223317b661a286671d3d55",
      "parents": [
        "f4b81804a2d1ab341a4613089dc31ecce0800ed8"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Wed Sep 27 01:50:11 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:13 2006 -0700"
      },
      "message": "[PATCH] mspec driver\n\nImplement the special memory driver (mspec) based on the do_no_pfn\napproach.  The driver is currently used only on SN2 hardware with special\nfetchop support but could be beneficial on other architectures using the\nuncached mode.\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
