)]}'
{
  "commit": "577eebeae34d340685d8985dfdb7dfe337c511e8",
  "tree": "047aa135d143ed12035ca04433e563b948f9b059",
  "parents": [
    "e07cccf4046978df10f2e13fe2b99b2f9b3a65db"
  ],
  "author": {
    "name": "Jeremy Fitzhardinge",
    "email": "jeremy.fitzhardinge@citrix.com",
    "time": "Thu Aug 27 12:46:35 2009 -0700"
  },
  "committer": {
    "name": "Jeremy Fitzhardinge",
    "email": "jeremy.fitzhardinge@citrix.com",
    "time": "Wed Sep 09 16:37:39 2009 -0700"
  },
  "message": "xen: make -fstack-protector work under Xen\n\n-fstack-protector uses a special per-cpu \"stack canary\" value.\ngcc generates special code in each function to test the canary to make\nsure that the function\u0027s stack hasn\u0027t been overrun.\n\nOn x86-64, this is simply an offset of %gs, which is the usual per-cpu\nbase segment register, so setting it up simply requires loading %gs\u0027s\nbase as normal.\n\nOn i386, the stack protector segment is %gs (rather than the usual kernel\npercpu %fs segment register).  This requires setting up the full kernel\nGDT and then loading %gs accordingly.  We also need to make sure %gs is\ninitialized when bringing up secondary cpus too.\n\nTo keep things consistent, we do the full GDT/segment register setup on\nboth architectures.\n\nBecause we need to avoid -fstack-protected code before setting up the GDT\nand because there\u0027s no way to disable it on a per-function basis, several\nfiles need to have stack-protector inhibited.\n\n[ Impact: allow Xen booting with stack-protector enabled ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "eefdeee8a871175d49a8a7f10bdebd37ed90265c",
      "old_mode": 33188,
      "old_path": "arch/x86/mm/Makefile",
      "new_id": "72bb3a26c738857fea58887deef7a82304842115",
      "new_mode": 33188,
      "new_path": "arch/x86/mm/Makefile"
    },
    {
      "type": "modify",
      "old_id": "7410640db173b842db79b835dbdc2206e01c0c2a",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/Makefile",
      "new_id": "3bb4fc21f4f28b79eff0fb6f8b0ae50b112842ef",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/Makefile"
    },
    {
      "type": "modify",
      "old_id": "eb33aaa8415de0d7b4e13d7dd18c826829a59466",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/enlighten.c",
      "new_id": "76143136dead5b58d62f6bf1557f4b8a92b53899",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/enlighten.c"
    },
    {
      "type": "modify",
      "old_id": "429834ec1687d9b7de965027f3f8d1c862ea88cd",
      "old_mode": 33188,
      "old_path": "arch/x86/xen/smp.c",
      "new_id": "fe03eeed7b48d383ec76d04bb9d0d92e6b53a7ff",
      "new_mode": 33188,
      "new_path": "arch/x86/xen/smp.c"
    },
    {
      "type": "modify",
      "old_id": "ec2a39b1e26f0438f6a2266cd77ff6173fd7bbc7",
      "old_mode": 33188,
      "old_path": "drivers/xen/Makefile",
      "new_id": "7c284342f30fef956900f93e3386179152873bd0",
      "new_mode": 33188,
      "new_path": "drivers/xen/Makefile"
    }
  ]
}
