)]}'
{
  "commit": "10b3a32d292c21ea5b3ad5ca5975e88bb20b8d68",
  "tree": "773d7546880a333ccdabf72a2480a9e9aabe112e",
  "parents": [
    "1e7e2e05c179a68aaf8830fe91547a87f4589e53"
  ],
  "author": {
    "name": "Jiri Kosina",
    "email": "jkosina@suse.cz",
    "time": "Fri May 24 15:55:33 2013 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Fri May 24 16:22:52 2013 -0700"
  },
  "message": "random: fix accounting race condition with lockless irq entropy_count update\n\nCommit 902c098a3663 (\"random: use lockless techniques in the interrupt\npath\") turned IRQ path from being spinlock protected into lockless\ncmpxchg-retry update.\n\nThat commit removed r-\u003elock serialization between crediting entropy bits\nfrom IRQ context and accounting when extracting entropy on userspace\nread path, but didn\u0027t turn the r-\u003eentropy_count reads/updates in\naccount() to use cmpxchg as well.\n\nIt has been observed, that under certain circumstances this leads to\nread() on /dev/urandom to return 0 (EOF), as r-\u003eentropy_count gets\ncorrupted and becomes negative, which in turn results in propagating 0\nall the way from account() to the actual read() call.\n\nConvert the accounting code to be the proper lockless counterpart of\nwhat has been partially done by 902c098a3663.\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "73e52b7796f9f536b6efb5be3d251710606f6e73",
      "old_mode": 33188,
      "old_path": "drivers/char/random.c",
      "new_id": "35487e8ded59f106e3a7b157aa3d5bf46f9579e8",
      "new_mode": 33188,
      "new_path": "drivers/char/random.c"
    }
  ]
}
