)]}'
{
  "commit": "babba877daf7a7ee0cb03dfb5e63f23e2d32dddf",
  "tree": "024acb25011c38ad4b28e5f6c09e726ab350f62a",
  "parents": [
    "4641f8a010eb97303fbc9bd8a094139b52ffd629"
  ],
  "author": {
    "name": "Richard Cochran",
    "email": "richardcochran@gmail.com",
    "time": "Fri Oct 21 00:49:15 2011 +0000"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Fri Nov 11 09:35:52 2011 -0800"
  },
  "message": "net: hold sock reference while processing tx timestamps\n\ncommit da92b194cc36b5dc1fbd85206aeeffd80bee0c39 upstream.\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\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\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7da5fa845959ab3dc9c2a393d7336a318c113aeb",
      "old_mode": 33188,
      "old_path": "include/linux/phy.h",
      "new_id": "4d3f63ac242ad61f473db4a7d1150f6ac1755a9d",
      "new_mode": 33188,
      "new_path": "include/linux/phy.h"
    },
    {
      "type": "modify",
      "old_id": "c0a4f3ab0cc047490eb9eaf20d9cf577cc5c2d65",
      "old_mode": 33188,
      "old_path": "include/linux/skbuff.h",
      "new_id": "b920a72a7a9aa80df64a1a6bad2b0f48e55ff9c4",
      "new_mode": 33188,
      "new_path": "include/linux/skbuff.h"
    },
    {
      "type": "modify",
      "old_id": "7e7ca375d4316e93d85482dacf0b5da951b5b12e",
      "old_mode": 33188,
      "old_path": "net/core/timestamping.c",
      "new_id": "97d036a6b899d77e829e1a8871fdba3832b5804f",
      "new_mode": 33188,
      "new_path": "net/core/timestamping.c"
    }
  ]
}
