)]}'
{
  "commit": "da92b194cc36b5dc1fbd85206aeeffd80bee0c39",
  "tree": "375ead604156d8a8afc5ecef8d76415e999ce903",
  "parents": [
    "f7ff19871bb4a3451e1ca2cf660bf633018cfbec"
  ],
  "author": {
    "name": "Richard Cochran",
    "email": "richardcochran@gmail.com",
    "time": "Fri Oct 21 00:49:15 2011 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Oct 24 02:54:50 2011 -0400"
  },
  "message": "net: hold sock reference while processing tx timestamps\n\nThe pair of functions,\n\n * skb_clone_tx_timestamp()\n * skb_complete_tx_timestamp()\n\nwere designed to allow timestamping in PHY devices. The first\nfunction, called during the MAC driver\u0027s hard_xmit method, identifies\nPTP protocol packets, clones them, and gives them to the PHY device\ndriver. The PHY driver may hold onto the packet and deliver it at a\nlater time using the second function, which adds the packet to the\nsocket\u0027s error queue.\n\nAs pointed out by Johannes, nothing prevents the socket from\ndisappearing while the cloned packet is sitting in the PHY driver\nawaiting a timestamp. This patch fixes the issue by taking a reference\non the socket for each such packet. In addition, the comments\nregarding the usage of these function are expanded to highlight the\nrule that PHY drivers must use skb_complete_tx_timestamp() to release\nthe packet, in order to release the socket reference, too.\n\nThese functions first appeared in v2.6.36.\n\nReported-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: Richard Cochran \u003crichard.cochran@omicron.at\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "54fc4138955f820b9c3918e04082450941f44358",
      "old_mode": 33188,
      "old_path": "include/linux/phy.h",
      "new_id": "79f337c47388ec759bd32190095a853afba978ce",
      "new_mode": 33188,
      "new_path": "include/linux/phy.h"
    },
    {
      "type": "modify",
      "old_id": "8bd383caa363ad31bd965b2f2316298042da8af5",
      "old_mode": 33188,
      "old_path": "include/linux/skbuff.h",
      "new_id": "0f966460a345d8ff0ad82ce9e7b7fa6b84251bc8",
      "new_mode": 33188,
      "new_path": "include/linux/skbuff.h"
    },
    {
      "type": "modify",
      "old_id": "98a52640e7cd836322577d0b40f18018f2965eea",
      "old_mode": 33188,
      "old_path": "net/core/timestamping.c",
      "new_id": "82fb28857b647163b931c7f11294a4cae19e7bbc",
      "new_mode": 33188,
      "new_path": "net/core/timestamping.c"
    }
  ]
}
