)]}'
{
  "commit": "7e9391cfedce34eb9786bfa69d7d545dc93ef930",
  "tree": "e3901037e9269cbf10bd2952835ebcc573e5741d",
  "parents": [
    "1b959e18c4d6b4b981f887260b0f8e7939efa411"
  ],
  "author": {
    "name": "Steven Rostedt",
    "email": "srostedt@redhat.com",
    "time": "Thu Sep 03 10:02:09 2009 -0400"
  },
  "committer": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Fri Sep 04 11:28:39 2009 -0400"
  },
  "message": "ring-buffer: fix ring_buffer_read crossing pages\n\nWhen the ring buffer uses an iterator (static read mode, not on the\nfly reading), when it crosses a page boundery, it will skip the first\nentry on the next page. The reason is that the last entry of a page\nis usually padding if the page is not full. The padding will not be\nreturned to the user.\n\nThe problem arises on ring_buffer_read because it also increments the\niterator. Because both the read and peek use the same rb_iter_peek,\nthe rb_iter_peak will return the padding but also increment to the next\nitem. This is because the ring_buffer_peek will not incerment it\nitself.\n\nThe ring_buffer_read will increment it again and then call rb_iter_peek\nagain to get the next item. But that will be the second item, not the\nfirst one on the page.\n\nThe reason this never showed up before, is because the ftrace utility\nalways calls ring_buffer_peek first and only uses ring_buffer_read\nto increment to the next item. The ring_buffer_peek will always keep\nthe pointer to a valid item and not padding. This just hid the bug.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a05541a8fbae5717854555e4ab2d6e900aa8b2be",
      "old_mode": 33188,
      "old_path": "kernel/trace/ring_buffer.c",
      "new_id": "9d939e7ca924d74091ce496cc4178a81e12bd85a",
      "new_mode": 33188,
      "new_path": "kernel/trace/ring_buffer.c"
    }
  ]
}
