)]}'
{
  "commit": "ff7ee93f47151e23601856e7eb5510babf956571",
  "tree": "2a62777ebdec1383d3dd6098cfe8a325c99f2dde",
  "parents": [
    "77ceab8ea590d7dc6c8f055ce43dfebd74428107"
  ],
  "author": {
    "name": "Steven Rostedt",
    "email": "rostedt@goodmis.org",
    "time": "Wed Nov 02 13:38:11 2011 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Nov 02 16:06:59 2011 -0700"
  },
  "message": "cgroup/kmemleak: Annotate alloc_page() for cgroup allocations\n\nWhen the cgroup base was allocated with kmalloc, it was necessary to\nannotate the variable with kmemleak_not_leak().  But because it has\nrecently been changed to be allocated with alloc_page() (which skips\nkmemleak checks) causes a warning on boot up.\n\nI was triggering this output:\n\n allocated 8388608 bytes of page_cgroup\n please try \u0027cgroup_disable\u003dmemory\u0027 option if you don\u0027t want memory cgroups\n kmemleak: Trying to color unknown object at 0xf5840000 as Grey\n Pid: 0, comm: swapper Not tainted 3.0.0-test #12\n Call Trace:\n  [\u003cc17e34e6\u003e] ? printk+0x1d/0x1f^M\n  [\u003cc10e2941\u003e] paint_ptr+0x4f/0x78\n  [\u003cc178ab57\u003e] kmemleak_not_leak+0x58/0x7d\n  [\u003cc108ae9f\u003e] ? __rcu_read_unlock+0x9/0x7d\n  [\u003cc1cdb462\u003e] kmemleak_init+0x19d/0x1e9\n  [\u003cc1cbf771\u003e] start_kernel+0x346/0x3ec\n  [\u003cc1cbf1b4\u003e] ? loglevel+0x18/0x18\n  [\u003cc1cbf0aa\u003e] i386_start_kernel+0xaa/0xb0\n\nAfter a bit of debugging I tracked the object 0xf840000 (and others) down\nto the cgroup code.  The change from allocating base with kmalloc to\nalloc_page() has the base not calling kmemleak_alloc() which adds the\npointer to the object_tree_root, but kmemleak_not_leak() adds it to the\ncrt_early_log[] table.  On kmemleak_init(), the entry is found in the\nearly_log[] but not the object_tree_root, and this error message is\ndisplayed.\n\nIf alloc_page() fails then it defaults back to vmalloc() which still uses\nthe kmemleak_alloc() which makes us still need the kmemleak_not_leak()\ncall.  The solution is to call the kmemleak_alloc() directly if the\nalloc_page() succeeds.\n\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Jonathan Nieder \u003cjrnieder@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6bdc67dbbc28920c36d0511057071d7229f58e39",
      "old_mode": 33188,
      "old_path": "mm/page_cgroup.c",
      "new_id": "3749ae15a8c8acb1dfc7a06c08eec3da35d643f1",
      "new_mode": 33188,
      "new_path": "mm/page_cgroup.c"
    }
  ]
}
