)]}'
{
  "log": [
    {
      "commit": "399f1e30ac17b77d383444aff480c7390f5adf2a",
      "tree": "da24eab64af0bef6fa4f8fba1c3fedb435a65418",
      "parents": [
        "87400e5406e215e9a1b43cf67794fbb34c15c342"
      ],
      "author": {
        "name": "Ira W. Snyder",
        "email": "iws@ovro.caltech.edu",
        "time": "Thu Sep 30 15:15:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 01 10:50:58 2010 -0700"
      },
      "message": "kfifo: fix scatterlist usage\n\nThe kfifo_dma family of functions use sg_mark_end() on the last element in\ntheir scatterlist.  This forces use of a fresh scatterlist for each DMA\noperation, which makes recycling a single scatterlist impossible.\n\nChange the behavior of the kfifo_dma functions to match the usage of the\ndma_map_sg function.  This means that users must respect the returned\nnents value.  The sample code is updated to reflect the change.\n\nThis bug is trivial to cause: call kfifo_dma_in_prepare() such that it\nprepares a scatterlist with a single entry comprising the whole fifo.\nThis is the case when you map the entirety of a newly created empty fifo.\nThis causes the setup_sgl() function to mark the first scatterlist entry\nas the end of the chain, no matter what comes after it.\n\nAfterwards, add and remove some data from the fifo such that another call\nto kfifo_dma_in_prepare() will create two scatterlist entries.  It returns\nnents\u003d2.  However, due to the previous sg_mark_end() call, sg_is_last()\nwill now return true for the first scatterlist element.  This causes the\nsample code to print a single scatterlist element when it should print\ntwo.\n\nBy removing the call to sg_mark_end(), we make the API as similar as\npossible to the DMA mapping API.  All users are required to respect the\nreturned nents.\n\nSigned-off-by: Ira W. Snyder \u003ciws@ovro.caltech.edu\u003e\nCc: Stefani Seibold \u003cstefani@seibold.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a25effa4d265eb5028c7d4a92a0ddd9267c3c43d",
      "tree": "207c392483a80d7b21fdb92289c5c1b3e49c961a",
      "parents": [
        "d83a71c4219191a9a881318ae5ca9b39aa1d0540"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "arighi@develer.com",
        "time": "Thu Aug 19 14:13:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 20 09:34:54 2010 -0700"
      },
      "message": "kfifo: add explicit error checking in all the examples\n\nProvide a check in all the kfifo examples to validate the correct\nexecution of each testcase.\n\nSigned-off-by: Andrea Righi \u003carighi@develer.com\u003e\nAcked-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d83a71c4219191a9a881318ae5ca9b39aa1d0540",
      "tree": "8556b81fb6a07e53735f4984780f8a8caf133383",
      "parents": [
        "7b34d5257a90c419d67c1c3b52f87a679845ef1e"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "arighi@develer.com",
        "time": "Thu Aug 19 14:13:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 20 09:34:54 2010 -0700"
      },
      "message": "kfifo: fix a memory leak in dma example\n\nWe use a dynamically allocated kfifo in the dma example, so we need to\nfree it when unloading the module.\n\nSigned-off-by: Andrea Righi \u003carighi@develer.com\u003e\nAcked-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b34d5257a90c419d67c1c3b52f87a679845ef1e",
      "tree": "f5b0a4c3d3c52155f026cf5323ea4f8b9ea6fd55",
      "parents": [
        "2aaf2092c168fc02df0645415f524b357ee7ec2e"
      ],
      "author": {
        "name": "Andrea Righi",
        "email": "arighi@develer.com",
        "time": "Thu Aug 19 14:13:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 20 09:34:54 2010 -0700"
      },
      "message": "kfifo: fix kernel BUG in dma example\n\nThe scatterlist is used uninitialized in kfifo_dma_in_prepare().  This\ntriggers the following bug if CONFIG_DEBUG_SG\u003dy:\n\n  ------------[ cut here ]------------\n  kernel BUG at include/linux/scatterlist.h:65!\n  invalid opcode: 0000 [#1] PREEMPT SMP\n  ...\n  Call Trace:\n   [\u003cffffffff810a1eab\u003e] setup_sgl+0x6b/0xe0\n   [\u003cffffffffa03d7000\u003e] ? example_init+0x0/0x265 [dma_example]\n   [\u003cffffffff810a2021\u003e] __kfifo_dma_in_prepare+0x21/0x30\n   [\u003cffffffffa03d7124\u003e] example_init+0x124/0x265 [dma_example]\n   [\u003cffffffff810f9c55\u003e] ? trace_module_notify+0x25/0x370\n   [\u003cffffffff81110c6e\u003e] ? free_pages_prepare+0x11e/0x1e0\n   [\u003cffffffff8106f2b1\u003e] ? get_parent_ip+0x11/0x50\n   [\u003cffffffff810f9c55\u003e] ? trace_module_notify+0x25/0x370\n   [\u003cffffffff810b65fd\u003e] ? trace_hardirqs_on+0xd/0x10\n   [\u003cffffffff814beade\u003e] ? mutex_unlock+0xe/0x10\n   [\u003cffffffff810f9c71\u003e] ? trace_module_notify+0x41/0x370\n   [\u003cffffffff810a77d5\u003e] ? __blocking_notifier_call_chain+0x45/0x80\n   [\u003cffffffff81137b7a\u003e] ? vfree+0x2a/0x30\n   [\u003cffffffff810a6ac3\u003e] ? up_read+0x23/0x40\n   [\u003cffffffff810a77f5\u003e] ? __blocking_notifier_call_chain+0x65/0x80\n   [\u003cffffffff810001e3\u003e] do_one_initcall+0x43/0x180\n   [\u003cffffffff810c577a\u003e] sys_init_module+0xba/0x200\n   [\u003cffffffff8103819b\u003e] system_call_fastpath+0x16/0x1b\n  RIP  [\u003cffffffff810a1e31\u003e] setup_sgl_buf+0x1a1/0x1b0\n   RSP \u003cffff88006720dc98\u003e\n  ---[ end trace a72b979fd3c1d3a5 ]---\n\nAdd the proper initialization to avoid the bug.\n\nSigned-off-by: Andrea Righi \u003carighi@develer.com\u003e\nAcked-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bf2b19320ec31d094d7370fdf536f7fd91fd799",
      "tree": "47052fd9bdb0969d4a4a7d430695388094409964",
      "parents": [
        "2e956fb320568cc70861761483e2f0e2db75fd66"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Tue Aug 10 18:03:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:23 2010 -0700"
      },
      "message": "kfifo: add example files to the kernel sample directory\n\nAdd four examples to the kernel sample directory.\n\nIt shows how to handle:\n- a byte stream fifo\n- a integer type fifo\n- a dynamic record sized fifo\n- the fifo DMA functions\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
