)]}'
{
  "log": [
    {
      "commit": "af76aba00fdcfb21535c9f9872245d14097a4561",
      "tree": "221ec0b2cd01c7629abc1f30f0f563e1731c1683",
      "parents": [
        "1a2142afa5646ad5af44bbe1febaa5e0b7e71156"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:11 2009 +1030"
      },
      "message": "cpumask: fix seq_bitmap_*() functions.\n\n1) seq_bitmap_list() should take a const.\n2) All the seq_bitmap should use cpumask_bits().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "8f19d472935c83d823fa4cf02bcc0a7b9952db30",
      "tree": "25cabc0b48ad0acb05fa69f92de617cf588fec8d",
      "parents": [
        "55ec82176eca52e4e0530a82a0eb59160a1a95a1"
      ],
      "author": {
        "name": "Eric Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 18 14:48:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:53 2009 -0800"
      },
      "message": "seq_file: properly cope with pread\n\nCurrently seq_read assumes that the offset passed to it is always the\noffset it passed to user space.  In the case pread this assumption is\nbroken and we do the wrong thing when presented with pread.\n\nTo solve this I introduce an offset cache inside of struct seq_file so we\nknow where our logical file position is.  Then in seq_read if we try to\nread from another offset we reset our data structures and attempt to go to\nthe offset user space wanted.\n\n[akpm@linux-foundation.org: restore FMODE_PWRITE]\n[pjt@google.com: seq_open needs its fmode opened up to take advantage of this]\nSigned-off-by: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x, 2.6.27.x, 2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f01d1d546abb2f4028b5299092f529eefb01253a",
      "tree": "625a9f9923ae53cc9bf75cf46fcebbbeb8ac84a8",
      "parents": [
        "33da8892a2f9e7d4b2d9a35fc80833ba2d2b1aa6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Feb 06 00:30:05 2009 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 05 14:18:14 2009 -0800"
      },
      "message": "seq_file: fix big-enough lseek() + read()\n\nlseek() further than length of the file will leave stale -\u003eindex\n(second-to-last during iteration). Next seq_read() will not notice\nthat -\u003ef_pos is big enough to return 0, but will print last item\nas if -\u003ef_pos is pointing to it.\n\nIntroduced in commit cb510b8172602a66467f3551b4be1911f5a7c8c2\naka \"seq_file: more atomicity in traverse()\".\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33da8892a2f9e7d4b2d9a35fc80833ba2d2b1aa6",
      "tree": "4261b553653438775461fd408669f1942a383d2e",
      "parents": [
        "361916a943cd9dbda1c0b00879d0225cc919d868"
      ],
      "author": {
        "name": "Eric Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Feb 04 15:12:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 05 12:56:49 2009 -0800"
      },
      "message": "seq_file: move traverse so it can be used from seq_read\n\nIn 2.6.25 some /proc files were converted to use the seq_file\ninfrastructure.  But seq_files do not correctly support pread(), which\nbroke some usersapce applications.\n\nTo handle pread correctly we can\u0027t assume that f_pos is where we left it\nin seq_read.  So move traverse() so that we can eventually use it in\nseq_read and do thus some day support pread().\n\nSigned-off-by: Eric Biederman \u003cebiederm@xmission.com\u003e\nCc: Paul Turner \u003cpjt@google.com\u003e\nCc: 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": "7d3b56ba37a95f1f370f50258ed3954c304c524b",
      "tree": "86102527b92f02450aa245f084ffb491c18d2e0a",
      "parents": [
        "269b012321f2f1f8e4648c43a93bf432b42c6668",
        "ab14398abd195af91a744c320a52a1bce814dd1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 03 12:04:39 2009 -0800"
      },
      "message": "Merge branch \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027cpus4096-for-linus-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (77 commits)\n  x86: setup_per_cpu_areas() cleanup\n  cpumask: fix compile error when CONFIG_NR_CPUS is not defined\n  cpumask: use alloc_cpumask_var_node where appropriate\n  cpumask: convert shared_cpu_map in acpi_processor* structs to cpumask_var_t\n  x86: use cpumask_var_t in acpi/boot.c\n  x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids\n  sched: put back some stack hog changes that were undone in kernel/sched.c\n  x86: enable cpus display of kernel_max and offlined cpus\n  ia64: cpumask fix for is_affinity_mask_valid()\n  cpumask: convert RCU implementations, fix\n  xtensa: define __fls\n  mn10300: define __fls\n  m32r: define __fls\n  h8300: define __fls\n  frv: define __fls\n  cris: define __fls\n  cpumask: CONFIG_DISABLE_OBSOLETE_CPUMASK_FUNCTIONS\n  cpumask: zero extra bits in alloc_cpumask_var_node\n  cpumask: replace for_each_cpu_mask_nr with for_each_cpu in kernel/time/\n  cpumask: convert mm/\n  ...\n"
    },
    {
      "commit": "52afeefb9dac9287429642189996426a2bfd6a25",
      "tree": "cbc7baf2a2f4e8dc16861ad4b13de0183f4afa7e",
      "parents": [
        "be42c4c433c2c0d3f1583c08908fead00d36d222"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Dec 01 14:35:00 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:41 2008 -0500"
      },
      "message": "expand some comments (d_path / seq_path)\n\nExplain that you really need to use the return value of d_path rather than\nthe buffer you passed into it.\n\nAlso fix the comment for seq_path(), the function arguments changed\nrecently but the comment hadn\u0027t been updated in sync.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cb78a0ce69fad2026825f957e24e2d9cda1ec9f1",
      "tree": "9a1359350c46f34394f715d9bebadc9cde842fa5",
      "parents": [
        "4b0bc0bca83f3fb7cf920e2ec80684c15d2269c0"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:14 2008 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Dec 30 09:05:14 2008 +1030"
      },
      "message": "bitmap: fix seq_bitmap and seq_cpumask to take const pointer\n\nImpact: cleanup\n\nseq_bitmap just calls bitmap_scnprintf on the bits: that arg can be const.\nSimilarly, seq_cpumask just calls seq_bitmap.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "604094f4615180f71da799e7e5b191f5c2a42a28",
      "tree": "812243adb5a661dc96de628b0ba875aef7a40399",
      "parents": [
        "c7425acb42fff1e723b05fbf4ea11e9a455d95dc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 28 18:03:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 28 18:07:10 2008 +0100"
      },
      "message": "vfs, seqfile: export mangle_path() generally\n\nmangle_path() is trivial enough to make  export restrictions on it\npointless - so change the export from EXPORT_SYMBOL_GPL to EXPORT_SYMBOL.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\n"
    },
    {
      "commit": "958086d1784459be3fe85e4cad79d42b17d33381",
      "tree": "7db8b7d8ed2938e9d8e5262b8b87dad6a049f12a",
      "parents": [
        "e38da59269be8c0196d16dff1be5bb26076afc6a"
      ],
      "author": {
        "name": "Török Edwin",
        "email": "edwintorok@gmail.com",
        "time": "Sun Nov 23 23:24:53 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 22:36:35 2008 +0100"
      },
      "message": "vfs, seqfile: fix comment style on mangle_path\n\nImpact: use standard docbook tags\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Török Edwin \u003cedwintorok@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "74e2f334f4440cbcb63e9ebbcdcea430d41bdfa3",
      "tree": "99a0aa61963601d998563e45b3ea40c5f2e4357c",
      "parents": [
        "02b67518e2b1c490787dac7f35e1204e74fe21ba"
      ],
      "author": {
        "name": "Török Edwin",
        "email": "edwintorok@gmail.com",
        "time": "Sat Nov 22 13:28:48 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 09:45:39 2008 +0100"
      },
      "message": "vfs, seqfile: make mangle_path() global\n\nImpact: expose new VFS API\n\nmake mangle_path() available, as per the suggestions of Christoph Hellwig\nand Al Viro:\n\n  http://lkml.org/lkml/2008/11/4/338\n\nSigned-off-by: Török Edwin \u003cedwintorok@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3eda20118000941e7e8994fc5fac8706d8c10f00",
      "tree": "7873d4760af7801f8e5b95cc7d6b719894aad6f5",
      "parents": [
        "85dd030edb174376ef43bc95e5fae4755af1ec98"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Sat Oct 18 20:28:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:39 2008 -0700"
      },
      "message": "seq_file: add seq_cpumask_list(), seq_nodemask_list()\n\nseq_cpumask_list(), seq_nodemask_list() are very like seq_cpumask(),\nseq_nodemask(), but they print human readable string.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Paul Jackson \u003cpj@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": "85dd030edb174376ef43bc95e5fae4755af1ec98",
      "tree": "60e0ca69da813ce50dacdc9fdfe9597e33ac6119",
      "parents": [
        "40b6a76237563c70466ec7315f644ba87d57dbe5"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Sat Oct 18 20:28:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:39 2008 -0700"
      },
      "message": "seq_file: don\u0027t call bitmap_scnprintf_len()\n\n\"m-\u003ecount + len \u003c m-\u003esize\" is true commonly, so bitmap_scnprintf()\nis commonly called. this fix saves a call to bitmap_scnprintf_len().\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Paul Jackson \u003cpj@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": "4cdfe84b51420c9ac95c7133da2d4c8a191094af",
      "tree": "b15ad9cd9d9db1117be13b5da1b00399ee544c70",
      "parents": [
        "59af1584bf33810639cb98d79856021253e2177c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 24 07:45:33 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 25 01:18:10 2008 -0400"
      },
      "message": "[PATCH] deal with the first call of -\u003eshow() generating no output\n\nseq_read() has a subtle bug - we want the first loop there to go\nuntil at least one *non-empty* record had fit entirely into buffer.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "50ac2d694f2dd1658341cf97bcf2ffb836d772cb",
      "tree": "c4466ecb7c5211ee9423380783f00027411d5d5a",
      "parents": [
        "dd763460eb628b57814251a15a39f8d75c044d76"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Aug 12 15:09:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:30 2008 -0700"
      },
      "message": "seq_file: add seq_cpumask(), seq_nodemask()\n\nShort enough reads from /proc/irq/*/smp_affinity return -EINVAL for no\ngood reason.\n\nThis became noticed with NR_CPUS\u003d4096 patches, when length of printed\nrepresentation of cpumask becase 1152, but cat(1) continued to read with\n1024-byte chunks.  bitmap_scnprintf() in good faith fills buffer, returns\n1023, check returns -EINVAL.\n\nFix it by switching to seq_file, so handler will just fill buffer and\ndoesn\u0027t care about offsets, length, filling EOF and all this crap.\n\nFor that add seq_bitmap(), and wrappers around it -- seq_cpumask() and\nseq_nodemask().\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nReviewed-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Mike Travis \u003ctravis@sgi.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": "9d1bc60138977d9c79471b344a64f2df13b2ccef",
      "tree": "84ed2e1920a1a88ae84515bd9d90240faed5805c",
      "parents": [
        "6092d048183b76bfa3f84b32f8158dd8d10bd811"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Mar 27 13:06:21 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 00:04:38 2008 -0400"
      },
      "message": "[patch 2/7] vfs: mountinfo: add seq_file_root()\n\nAdd a new function:\n\n  seq_file_root()\n\nThis is similar to seq_path(), but calculates the path relative to the\ngiven root, instead of current-\u003efs-\u003eroot.  If the path was unreachable\nfrom root, then modify the root parameter to reflect this.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6092d048183b76bfa3f84b32f8158dd8d10bd811",
      "tree": "2d38af32961eb52b36daca2f29ce69e80f6e7283",
      "parents": [
        "934b25c597c0e98304a7eaec198a87e4633a42bb"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Thu Mar 27 13:06:20 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 00:04:32 2008 -0400"
      },
      "message": "[patch 1/7] vfs: mountinfo: add dentry_path()\n\n[mszeredi@suse.cz] split big patch into managable chunks\n\nAdd the following functions:\n\n  dentry_path()\n  seq_dentry()\n\nThese are similar to d_path() and seq_path().  But instead of\ncalculating the path within a mount namespace, they calculate the path\nfrom the root of the filesystem to a given dentry, ignoring mounts\ncompletely.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "94bc891b00e40cbec375feb4568780af183fd7f4",
      "tree": "fd48d354c61d2e736aa593c324a6d794afd8a4e7",
      "parents": [
        "934b7024f0ed29003c95cef447d92737ab86dc4f",
        "1ec7f1ddbe5ba49f7b10c3b129d6d5c90c43526c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 22 18:27:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 22 18:28:34 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  [PATCH] get rid of __exit_files(), __exit_fs() and __put_fs_struct()\n  [PATCH] proc_readfd_common() race fix\n  [PATCH] double-free of inode on alloc_file() failure exit in create_write_pipe()\n  [PATCH] teach seq_file to discard entries\n  [PATCH] umount_tree() will unhash everything itself\n  [PATCH] get rid of more nameidata passing in namespace.c\n  [PATCH] switch a bunch of LSM hooks from nameidata to path\n  [PATCH] lock exclusively in collect_mounts() and drop_collected_mounts()\n  [PATCH] move a bunch of declarations to fs/internal.h\n"
    },
    {
      "commit": "16abef0e9e79643827fd5a2a14a07bced851ae72",
      "tree": "ff2648a70755154ee93ad2ad5b11014329158e66",
      "parents": [
        "e199ceee15c8f8652cc3bb97651bdf246ba23c5f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Apr 22 15:09:22 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 22 15:17:11 2008 -0700"
      },
      "message": "fs: use loff_t type instead of long long\n\nUse offset type consistently.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "521b5d0c40386f4a9805cdec7bd979fc96a86aeb",
      "tree": "2193c12ee3dc0551790c79370603acb57e0f59e7",
      "parents": [
        "4e1b36fb485dd81b0818ef1bc8fb5c0f2923a283"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 28 00:46:41 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 21 23:14:02 2008 -0400"
      },
      "message": "[PATCH] teach seq_file to discard entries\n\nAllow -\u003eshow() return SEQ_SKIP; that will discard all\noutput from that element and move on.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9",
      "tree": "65c91f6911b34c32e517938289621ce0e7baeaf3",
      "parents": [
        "c32c2f63a9d6c953aaf168c0b2551da9734f76d2"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "d_path: Make d_path() use a struct path\n\nd_path() is used on a \u003cdentry,vfsmount\u003e pair.  Lets use a struct path to\nreflect this.\n\n[akpm@linux-foundation.org: fix build in mm/memory.c]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@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": "c32c2f63a9d6c953aaf168c0b2551da9734f76d2",
      "tree": "14eca3083f3de4a87a95359ab66109c10add1ae7",
      "parents": [
        "e83aece3afad4d56cc01abe069d3519e851cd2de"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "d_path: Make seq_path() use a struct path argument\n\nseq_path() is always called with a dentry and a vfsmount from a struct path.\nMake seq_path() take it directly as an argument.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39699037a5c94d7cd1363dfe48a50c78c643fd9a",
      "tree": "ea5a0ab329dbe43531c3b713536e45491e1cb51f",
      "parents": [
        "59e90b2d22500f2e9cc635793562154abc8f4621"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed Oct 10 02:28:42 2007 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Wed Oct 10 16:55:33 2007 -0700"
      },
      "message": "[FS] seq_file: Introduce the seq_open_private()\n\nThis function allocates the zeroed chunk of memory and\ncall seq_open(). The __seq_open_private() helper returns\nthe allocated memory to make it possible for the caller\nto initialize it.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "cb510b8172602a66467f3551b4be1911f5a7c8c2",
      "tree": "4905ee309e3147bb64f8a8a4446937424540fd5f",
      "parents": [
        "18d96779d92902d2113b6f39bd2d42e805fa05e7"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Sun Jul 15 23:40:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:45 2007 -0700"
      },
      "message": "seq_file: more atomicity in traverse()\n\nOriginal problem: in some circumstances seq_file interface can present\ninfinite proc file to the following script when normally said proc file is\nfinite:\n\n\twhile read line; do\n\t\t[do something with $line]\n\tdone \u003c/proc/$FILE\n\nbash, to implement such loop does essentially\n\n\tread(0, buf, 128);\n\t[find \\n]\n\tlseek(0, -difference, SEEK_CUR);\n\nConsider, proc file prints list of objects each of them consists of many\nlines, each line is shorter than 128 bytes.\n\nTwo objects in list, with -\u003eindex\u0027es being 0 and 1.  Current one is 1, as\nbash prints second object line by line.\n\nImagine first object being removed right before lseek().\ntraverse() will be called, because there is negative offset.\ntraverse() will reset -\u003eindex to 0 (!).\ntraverse() will call -\u003enext() and get NULL in any usual iterate-over-list\ncode using list_for_each_entry_continue() and such. There is one object in\nlist now after all...\ntraverse() will return 0, lseek() will update file position and pretend\neverything is OK.\n\nSo, what we have now: -\u003ef_pos points to place where second object will be\nprinted, but -\u003eindex is 0.  seq_read() instead of returning EOF, will start\nprinting first line of first object every time it\u0027s called, until enough\nobjects are added to -\u003ef_pos return in bounds.\n\nFix is to update -\u003eindex only after we\u0027re sure we saw enough objects down\nthe road.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\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": "00c5746da9fc6a793b9d94a8001ded5929f3a773",
      "tree": "3e8bf3568ef813a3dba10420aa31efaad8b2ad5d",
      "parents": [
        "a6739af8b9e8bf0fd1fb3f4f8406a9f650cb733a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Sun Jul 15 23:40:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:44 2007 -0700"
      },
      "message": "mutex_unlock() later in seq_lseek()\n\nAll manipulations with struct seq_file::version are done under\nstruct seq_file::lock except one introduced in commit\nd6b7a781c51c91dd054e5c437885205592faac21\naka \"[PATCH] Speed up /proc/pid/maps\"\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": "bcf67e16251c42302499499b1c50f7d35622f564",
      "tree": "3df64aa83005c0a153acf3a1a0d7a6e6d49dc688",
      "parents": [
        "c14d444b55f285063a4018c10d521614b70b581a"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@sw.ru",
        "time": "Tue Jul 10 17:22:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 10 17:51:13 2007 -0700"
      },
      "message": "Make common helpers for seq_files that work with list_heads\n\nMany places in kernel use seq_file API to iterate over a regular list_head.\nThe code for such iteration is identical in all the places, so it\u0027s worth\nintroducing a common helpers.\n\nThis makes code about 300 lines smaller:\n\nThe first version of this patch made the helper functions static inline\nin the seq_file.h header. This patch moves them to the fs/seq_file.c as\nAndrew proposed. The vmlinux .text section sizes are as follows:\n\n2.6.22-rc1-mm1:              0x001794d5\nwith the previous version:   0x00179505\nwith this patch:             0x00179135\n\nThe config file used was make allnoconfig with the \"y\" inclusion of all\nthe possible options to make the files modified by the patch compile plus\ndrivers I have on the test node.\n\nThis patch:\n\nMany places in kernel use seq_file API to iterate over a regular list_head.\nThe code for such iteration is identical in all the places, so it\u0027s worth\nintroducing a common helpers.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "15ad7cdcfd76450d4beebc789ec646664238184d",
      "tree": "279d05a76ae0906c23ee2de8c5684d95d9886ad3",
      "parents": [
        "4a08a9f68168e547c2baf100020e9b96cae5fbd1"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Dec 06 20:40:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] struct seq_operations and struct file_operations constification\n\n - move some file_operations structs into the .rodata section\n\n - move static strings from policy_types[] array into the .rodata section\n\n - fix generic seq_operations usages, so that those structs may be defined\n   as \"const\" as well\n\n[akpm@osdl.org: couple of fixes]\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0ac1759abc69fb62438c30a7e422f628a1120d67",
      "tree": "953fd417cc63bae48245ab03c04123a45e21125e",
      "parents": [
        "7cf34c761db8827818a27e23c50756f8b821a9b0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 23 03:00:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:12 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: fs/seq_file.c\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1abe77b0fc4b485927f1f798ae81a752677e1d05",
      "tree": "f7a2de3728fa475975144310e67b643c446e5a6f",
      "parents": [
        "ccd48bc7fac284caf704dcdcafd223a24f70bccf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Nov 07 17:15:34 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:09 2005 -0800"
      },
      "message": "[PATCH] allow callers of seq_open do allocation themselves\n\nAllow caller of seq_open() to kmalloc() seq_file + whatever else they\nwant and set -\u003eprivate_data to it.  seq_open() will then abstain from\ndoing allocation itself.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67be2dd1bace0ec7ce2dbc1bba3f8df3d7be597e",
      "tree": "317d114a0288d3b19ef9902f94b536a5a8731dbd",
      "parents": [
        "6013d5445f9a6d0b28090027868f455c5012d1cc"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "message": "[PATCH] DocBook: fix some descriptions\n\nSome KernelDoc descriptions are updated to match the current code.\nNo code changes.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
