)]}'
{
  "commit": "2fdba6b085eb7068e9594cfa55ffe40466184b4d",
  "tree": "2f7325f9f62cc643caf6d6c8dd7a24b1cb94ebd0",
  "parents": [
    "d48102007d068df7ba3055cdc1723e12db1ba30f"
  ],
  "author": {
    "name": "Herbert Xu",
    "email": "herbert@gondor.apana.org.au",
    "time": "Wed May 18 22:52:33 2005 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Wed May 18 22:52:33 2005 -0700"
  },
  "message": "[IPV4/IPV6] Ensure all frag_list members have NULL sk\n\nHaving frag_list members which holds wmem of an sk leads to nightmares\nwith partially cloned frag skb\u0027s.  The reason is that once you unleash\na skb with a frag_list that has individual sk ownerships into the stack\nyou can never undo those ownerships safely as they may have been cloned\nby things like netfilter.  Since we have to undo them in order to make\nskb_linearize happy this approach leads to a dead-end.\n\nSo let\u0027s go the other way and make this an invariant:\n\n\tFor any skb on a frag_list, skb-\u003esk must be NULL.\n\nThat is, the socket ownership always belongs to the head skb.\nIt turns out that the implementation is actually pretty simple.\n\nThe above invariant is actually violated in the following patch\nfor a short duration inside ip_fragment.  This is OK because the\noffending frag_list member is either destroyed at the end of the\nslow path without being sent anywhere, or it is detached from\nthe frag_list before being sent.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "daebd93fd8a06b648bbc725b86af47a01040b741",
      "old_mode": 33188,
      "old_path": "net/ipv4/ip_output.c",
      "new_id": "760dc8238d653e74351d30aa6fbeec6efc3c21d9",
      "new_mode": 33188,
      "new_path": "net/ipv4/ip_output.c"
    },
    {
      "type": "modify",
      "old_id": "0f0711417c9da71d7595e6019033b8976d479b03",
      "old_mode": 33188,
      "old_path": "net/ipv6/ip6_output.c",
      "new_id": "b78a535868042381dbdd42454b7a1c63f16ddffa",
      "new_mode": 33188,
      "new_path": "net/ipv6/ip6_output.c"
    }
  ]
}
