)]}'
{
  "commit": "6adebb0e1d4820435e0c6739b0de20a196cc20d5",
  "tree": "2e572784e0ddf58832e1cc9aba859e365834f5a5",
  "parents": [
    "956b165f9e89e37aff44d615321d1e3166589701"
  ],
  "author": {
    "name": "Lai Jiangshan",
    "email": "laijs@cn.fujitsu.com",
    "time": "Sun Sep 02 00:28:19 2012 +0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Tue Oct 02 10:30:33 2012 -0700"
  },
  "message": "workqueue: UNBOUND -\u003e REBIND morphing in rebind_workers() should be atomic\n\ncommit 96e65306b81351b656835c15931d1d237b252f27 upstream.\n\nThe compiler may compile the following code into TWO write/modify\ninstructions.\n\n\tworker-\u003eflags \u0026\u003d ~WORKER_UNBOUND;\n\tworker-\u003eflags |\u003d WORKER_REBIND;\n\nso the other CPU may temporarily see worker-\u003eflags which doesn\u0027t have\neither WORKER_UNBOUND or WORKER_REBIND set and perform local wakeup\nprematurely.\n\nFix it by using single explicit assignment via ACCESS_ONCE().\n\nBecause idle workers have another WORKER_NOT_RUNNING flag, this bug\ndoesn\u0027t exist for them; however, update it to use the same pattern for\nconsistency.\n\ntj: Applied the change to idle workers too and updated comments and\n    patch description a bit.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f483dd0bc9c9d601ee6e96ccea2b2a9f1e89e8d9",
      "old_mode": 33188,
      "old_path": "kernel/workqueue.c",
      "new_id": "7584322349c19d556c8b96107ee2fc10b725ea84",
      "new_mode": 33188,
      "new_path": "kernel/workqueue.c"
    }
  ]
}
