)]}'
{
  "log": [
    {
      "commit": "1f8cdae43929d32e3706c314eb2a302dc3683fba",
      "tree": "cc99ca58e77d383dec6c78e034fdb30ee3e6d73a",
      "parents": [
        "97922b5462fa543484831d42ab0fe4562b9373fc"
      ],
      "author": {
        "name": "Hui Zhu",
        "email": "teawater@gmail.com",
        "time": "Fri Jan 15 17:01:07 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 16 12:15:37 2010 -0800"
      },
      "message": "markup_oops.pl: fix error with x86\n\nWhen I try to use markup_oops.pl in x86, I always get:\n\ncat 1 | perl markup_oops.pl ./vmlinux\nobjdump: --start-address: bad number: NaN\nNo matching code found\n\nThis is because in line:\n\tif ($line \u003d~ /EIP is at ([a-zA-Z0-9\\_]+)\\+0x([0-9a-f]+)\\/[a-f0-9]/) {\n \t\t$function \u003d $1;\n \t\t$func_offset \u003d $2;\n \t}\n\n$func_offset will get a number like \"0x2\"\n\nBut in follow code:\n\nmy $decodestart \u003d Math::BigInt-\u003efrom_hex(\"0x$target\") -\nMath::BigInt-\u003efrom_hex(\"0x$func_offset\");\n\nIt add other ox to ox2.  Then this value will be set to NaN.\n\nSo I made a small patch to fix it.\n\nSigned-off-by: Hui Zhu \u003cteawater@gmail.com\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82fa39552fd858468a5647fa58d14955ecd50eb4",
      "tree": "92b29c2f4780dc5480a1125354415f8f3bfd4bf1",
      "parents": [
        "f9d490ab374236a115440c771ecf0fb2890eb929"
      ],
      "author": {
        "name": "Ozan Çaglayan",
        "email": "ozan@pardus.org.tr",
        "time": "Fri Sep 18 12:49:27 2009 -0700"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Sep 20 12:27:43 2009 +0200"
      },
      "message": "markup_oops: use modinfo to avoid confusion with underscored module names\n\nWhen EIP is at a module having an underscore in its name, the current code\nfails to find it because the module filenames has \u0027-\u0027 instead of \u0027_\u0027.  Use\nmodinfo for a better path finding.\n\nSigned-off-by: Ozan Çaglayan \u003cozan@pardus.org.tr\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "51fbb4bab6c8710eb897ab3fb06efbbc921f3a8d",
      "tree": "bb6c71ef38c85ec8db5c6475e1426a96c3375662",
      "parents": [
        "f5886c7f96f2542382d3a983c5f13e03d7fc5259"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Wed Jul 29 15:02:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 29 19:10:34 2009 -0700"
      },
      "message": "markup_oops: fix it with 32-bit userspace on a 64-bit kernel\n\nA 32-bit perl can\u0027t handle 64-bit addresses without using the BigInt\npackage.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nAcked-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11df65c3c6f7fdc837a5be8787d31011e8bb93c1",
      "tree": "83447de3b35d2c211ccae7046b8ca8365a948776",
      "parents": [
        "c19ef7fd8e534c870166213e9e30de9c44b34a76"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 15 11:30:55 2009 +0100"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Feb 15 12:50:10 2009 +0100"
      },
      "message": "scripts: add x86 64 bit support to the markup_oops.pl script\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "c19ef7fd8e534c870166213e9e30de9c44b34a76",
      "tree": "163e722b2a0bc6370e27504e403c066dd306a096",
      "parents": [
        "5123b327c107db9e560fd62d50c27a3816e5a078"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Feb 15 11:30:52 2009 +0100"
      },
      "committer": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Sun Feb 15 12:50:10 2009 +0100"
      },
      "message": "scripts: add x86 register parser to markup_oops.pl\n\nAn oops dump also contains the register values.\n\nThis patch parses these for (32 bit) x86, and then annotates the\ndisassembly with these values; this helps in analysis of the oops by the\ndeveloper, for example, NULL pointer or other pointer bugs show up clearly\nthis way.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\n"
    },
    {
      "commit": "d32ad102c6d748b510fd89f1af4232eac1be8732",
      "tree": "a4ce3739944046310efa0b190a320867ebe198f5",
      "parents": [
        "7df52316601bfe308e427e0882f3e801682d800b"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Jan 11 15:03:23 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 12 16:39:58 2009 -0800"
      },
      "message": "script: improve markup_oops.pl to also decode oopses in modules\n\nThere has been some light flamewar on lkml about decoding oopses\nin modules (as part of the crashdump flamewar).\n\nNow this isn\u0027t rocket science, just the markup_oops.pl script\ncheaped out and didn\u0027t handle modules. But really; a flamewar\nall about that?? What happened to C++ in the kernel or reading\nfiles from inside the kernel?\n\nThis patch adds module support to markup_oops.pl; it\u0027s not the\nmost pretty perl but it works for my testcases...\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5aea50b5c76b07f2b6bda3426dba998156eaf6d0",
      "tree": "20e522f88586e8c0835893e9236dded9fc6d87f2",
      "parents": [
        "d6624f996ae539344e8d748cce1117ae7af06fbf"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Jan 06 14:40:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:12 2009 -0800"
      },
      "message": "scripts: script from kerneloops.org to pretty print oops dumps\n\nWe\u0027re struggling all the time to figure out where the code came from that\noopsed..  The script below (a adaption from a script used by\nkerneloops.org) can help developers quite a bit, at least for non-module\ncases.\n\nIt works and looks like this:\n\n[/home/arjan/linux]$ dmesg | perl scripts/markup_oops.pl vmlinux\n {\n \tstruct agp_memory *memory;\n\n \tmemory \u003d agp_allocate_memory(agp_bridge, pg_count, type);\n c055c10f:\t89 c2                \tmov    %eax,%edx\n \tif (memory \u003d\u003d NULL)\n c055c111:\t74 19                \tje     c055c12c \u003cagp_allocate_memory_wrap+0x30\u003e\n /* This function must only be called when current_controller !\u003d NULL */\n static void agp_insert_into_pool(struct agp_memory * temp)\n {\n \tstruct agp_memory *prev;\n\n \tprev \u003d agp_fe.current_controller-\u003epool;\n c055c113:\ta1 ec dc 8f c0       \tmov    0xc08fdcec,%eax\n*c055c118:\t8b 40 10             \tmov    0x10(%eax),%eax     \u003c----- faulting instruction\n\n \tif (prev !\u003d NULL) {\n c055c11b:\t85 c0                \ttest   %eax,%eax\n c055c11d:\t74 05                \tje     c055c124 \u003cagp_allocate_memory_wrap+0x28\u003e\n \t\tprev-\u003eprev \u003d temp;\n c055c11f:\t89 50 04             \tmov    %edx,0x4(%eax)\n \t\ttemp-\u003enext \u003d prev;\n c055c122:\t89 02                \tmov    %eax,(%edx)\n \t}\n \tagp_fe.current_controller-\u003epool \u003d temp;\n c055c124:\ta1 ec dc 8f c0       \tmov    0xc08fdcec,%eax\n c055c129:\t89 50 10             \tmov    %edx,0x10(%eax)\n \tif (memory \u003d\u003d NULL)\n \t\treturn NULL;\n\n \tagp_insert_into_pool(memory);\n\nso in this case, we faulted while dereferencing agp_fe.current_controller\npointer, and we get to see exactly which function and line it affects...\nPersonally I find this very useful, and I can see value for having this\nscript in the kernel for more-than-just-me to use.\n\nCaveats:\n* It only works for oopses not-in-modules\n* It only works nicely for kernels compiled with CONFIG_DEBUG_INFO\n* It\u0027s not very fast.\n* It only works on x86\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
