)]}'
{
  "commit": "2e636d5e66c35dfcbaf617aa8fa963f6847478fe",
  "tree": "5a3d291d3856121b07f32655ddc8552c752c69c3",
  "parents": [
    "bc231d9ede99518b67a77544d9084f15b898fe2e"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Mon May 16 15:01:11 2016 +0200"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Tue May 17 12:24:21 2016 +0200"
  },
  "message": "sched/preempt: Fix preempt_count manipulations\n\nVikram reported that his ARM64 compiler managed to \u0027optimize\u0027 away the\npreempt_count manipulations in code like:\n\n\tpreempt_enable_no_resched();\n\tput_user();\n\tpreempt_disable();\n\nIrrespective of that fact that that is horrible code that should be\nfixed for many reasons, it does highlight a deficiency in the generic\npreempt_count manipulators. As it is never right to combine/elide\npreempt_count manipulations like this.\n\nTherefore sprinkle some volatile in the two generic accessors to\nensure the compiler is aware of the fact that the preempt_count is\nobserved outside of the regular program-order view and thus cannot be\noptimized away like this.\n\nx86; the only arch not using the generic code is not affected as we\ndo all this in asm in order to use the segment base per-cpu stuff.\n\nReported-by: Vikram Mulukutla \u003cmarkivx@codeaurora.org\u003e\nTested-by: Vikram Mulukutla \u003cmarkivx@codeaurora.org\u003e\nSigned-off-by: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nFixes: a787870924db (\"sched, arch: Create asm/preempt.h\")\nLink: http://lkml.kernel.org/r/20160516131751.GH3205@twins.programming.kicks-ass.net\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5d8ffa3e6f8c8a4e3715f3da4294abc860390386",
      "old_mode": 33188,
      "old_path": "include/asm-generic/preempt.h",
      "new_id": "c1cde3577551817c9f5581b98f331406e8c61f83",
      "new_mode": 33188,
      "new_path": "include/asm-generic/preempt.h"
    }
  ]
}
