)]}'
{
  "commit": "158ef8cbb7e0fe8bb430310924b8bebe5f186e6e",
  "tree": "b8a64778abe8dfcd20d1d43462580d5206b49dd5",
  "parents": [
    "83761b9244ad2ed39d3cfabe8a0e901ab906f7bf"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Mon Feb 02 16:36:51 2015 +0100"
  },
  "committer": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Mon Feb 02 16:55:09 2015 +0100"
  },
  "message": "qemu-thread: fix qemu_event without futexes\n\nThis had a possible deadlock that was visible with rcutorture.\n\n    qemu_event_set                    qemu_event_wait\n    ----------------------------------------------------------------\n                                      cmpxchg reads FREE, writes BUSY\n                                      futex_wait: pthread_mutex_lock\n                                      futex_wait: value \u003d\u003d BUSY\n    xchg reads BUSY, writes SET\n    futex_wake: pthread_cond_broadcast\n                                      futex_wait: pthread_cond_wait\n                                      \u003cdeadlock\u003e\n\nThe fix is simply to avoid condvar tricks and do the obvious locking\naround pthread_cond_broadcast:\n\n    qemu_event_set        qemu_event_wait\n    ----------------------------------------------------------------\n                                      cmpxchg reads FREE, writes BUSY\n                                      futex_wait: pthread_mutex_lock\n                                      futex_wait: value \u003d\u003d BUSY\n    xchg reads BUSY, writes SET\n    futex_wake: pthread_mutex_lock\n    (blocks)\n                                      futex_wait: pthread_cond_wait\n    (mutex unlocked)\n    futex_wake: pthread_cond_broadcast\n    futex_wake: pthread_mutex_unlock\n                                      futex_wait: pthread_mutex_unlock\n\nCc: qemu-stable@nongnu.org\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41cb23df0c3995053086b415e10b726acbd914ac",
      "old_mode": 33188,
      "old_path": "util/qemu-thread-posix.c",
      "new_id": "50a29d8f7aad7fe5882ba33d18dce4b7bf2ccb97",
      "new_mode": 33188,
      "new_path": "util/qemu-thread-posix.c"
    }
  ]
}
