)]}'
{
  "commit": "5cdd2de0a76d0ac47f107c8a7b32d75d25768dc1",
  "tree": "34b4834f0a377f571b050fd13abb4bc8a8da3821",
  "parents": [
    "eda4b716ea1f2a647a39cebae66b3fae4c4b80e4"
  ],
  "author": {
    "name": "Jesper Juhl",
    "email": "jj@chaosbits.net",
    "time": "Sat Dec 25 19:57:41 2010 +0100"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Mon Dec 27 14:33:30 2010 +0100"
  },
  "message": "x86/microcode: Fix double vfree() and remove redundant pointer checks before vfree()\n\nIn arch/x86/kernel/microcode_intel.c::generic_load_microcode()\nwe have  this:\n\n\twhile (leftover) {\n\t\t...\n\t\tif (get_ucode_data(mc, ucode_ptr, mc_size) ||\n\t\t    microcode_sanity_check(mc) \u003c 0) {\n\t\t\tvfree(mc);\n\t\t\tbreak;\n\t\t}\n\t\t...\n\t}\n\n\tif (mc)\n\t\tvfree(mc);\n\nThis will cause a double free of \u0027mc\u0027. This patch fixes that by\njust  removing the vfree() call in the loop since \u0027mc\u0027 will be\nfreed nicely just  after we break out of the loop.\n\nThere\u0027s also a second change in the patch. I noticed a lot of\nchecks for  pointers being NULL before passing them to vfree().\nThat\u0027s completely  redundant since vfree() deals gracefully with\nbeing passed a NULL pointer.  Removing the redundant checks\nyields a nice size decrease for the object  file.\n\nSize before the patch:\n   text    data     bss     dec     hex filename\n   4578     240    1032    5850    16da arch/x86/kernel/microcode_intel.o\nSize after the patch:\n   text    data     bss     dec     hex filename\n   4489     240     984    5713    1651 arch/x86/kernel/microcode_intel.o\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nAcked-by: Tigran Aivazian \u003ctigran@aivazian.fsnet.co.uk\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nLKML-Reference: \u003calpine.LNX.2.00.1012251946100.10759@swampdragon.chaosbits.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dcb65cc0a05368ca096e4d907bffe63f9525fb93",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/microcode_intel.c",
      "new_id": "1a1b606d3e92a879183cd720e3072b4b0832e579",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/microcode_intel.c"
    }
  ]
}
