)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
