)]}'
{
  "commit": "fb64bb560e181363c29ed4fe12a0d82765d61733",
  "tree": "d3f5f15e9840964657bf40326705d79abe06e9e1",
  "parents": [
    "5ccdcecb72692d46d7a9264e62751241c7eca559"
  ],
  "author": {
    "name": "Michal Ostrowski",
    "email": "mostrows@gmail.com",
    "time": "Mon Oct 26 16:23:20 2009 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Oct 26 16:23:20 2009 -0700"
  },
  "message": "PPPoE: Fix flush/close races.\n\nBe more careful about the state of pointers during tear-down.\nThe \"pppoe_dev\" field can only be looked at safely while holding socket locks.\nThis subsequently allows for the flush_lock to be killed.\n\nWe depend on the PPPOX_CONNECTED state to tell us that that those fields are\nvalid, so whoever clears that state (pppox_unbind_sock()) is responsible for\nthe dev_put() call.\n\nWe also have to ensure that we delete_item() on all sockets before they are\ncleaned up.\n\nThe need for these changes has been exposed by scenarios wherein namespace\nbindings of ethernet devices change while there are ongoing PPPoE sessions,\nwhich resulted in oopses due to unusual socket connection termination paths,\nexposing these issues.\n\nSigned-off-by: Michal Ostrowski \u003cmostrows@gmail.com\u003e\nReviewed-by: Cyril Gorcunov \u003cgorcunov@gmail.com\u003e\nReported-by: Denys Fedoryschenko \u003cdenys@visp.net.lb\u003e\nTested-by: Denys Fedoryschenko \u003cdenys@visp.net.lb\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7cbf6f9b51deddb790372a652e169ca0ccf0ef77",
      "old_mode": 33188,
      "old_path": "drivers/net/pppoe.c",
      "new_id": "2559991eea6a59e23a88837a897cf8e8dad7cc0a",
      "new_mode": 33188,
      "new_path": "drivers/net/pppoe.c"
    }
  ]
}
