)]}'
{
  "commit": "cef401de7be8c4e155c6746bfccf721a4fa5fab9",
  "tree": "af082329bf0613ed9de5b9575e3f94f3f03b77ec",
  "parents": [
    "61550022b9586972082904b80de26a464c558437"
  ],
  "author": {
    "name": "Eric Dumazet",
    "email": "edumazet@google.com",
    "time": "Fri Jan 25 20:34:37 2013 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Jan 28 00:27:15 2013 -0500"
  },
  "message": "net: fix possible wrong checksum generation\n\nPravin Shelar mentioned that GSO could potentially generate\nwrong TX checksum if skb has fragments that are overwritten\nby the user between the checksum computation and transmit.\n\nHe suggested to linearize skbs but this extra copy can be\navoided for normal tcp skbs cooked by tcp_sendmsg().\n\nThis patch introduces a new SKB_GSO_SHARED_FRAG flag, set\nin skb_shinfo(skb)-\u003egso_type if at least one frag can be\nmodified by the user.\n\nTypical sources of such possible overwrites are {vm}splice(),\nsendfile(), and macvtap/tun/virtio_net drivers.\n\nTested:\n\n$ netperf -H 7.7.8.84\nMIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to\n7.7.8.84 () port 0 AF_INET\nRecv   Send    Send\nSocket Socket  Message  Elapsed\nSize   Size    Size     Time     Throughput\nbytes  bytes   bytes    secs.    10^6bits/sec\n\n 87380  16384  16384    10.00    3959.52\n\n$ netperf -H 7.7.8.84 -t TCP_SENDFILE\nTCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 7.7.8.84 ()\nport 0 AF_INET\nRecv   Send    Send\nSocket Socket  Message  Elapsed\nSize   Size    Size     Time     Throughput\nbytes  bytes   bytes    secs.    10^6bits/sec\n\n 87380  16384  16384    10.00    3216.80\n\nPerformance of the SENDFILE is impacted by the extra allocation and\ncopy, and because we use order-0 pages, while the TCP_STREAM uses\nbigger pages.\n\nReported-by: Pravin Shelar \u003cpshelar@nicira.com\u003e\nSigned-off-by: Eric Dumazet \u003cedumazet@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0f0f9ce3a7769ec552cc9f01f1915b44e44958fe",
      "old_mode": 33188,
      "old_path": "drivers/net/macvtap.c",
      "new_id": "b181dfb3d6d600362235f7be38703a6827530f96",
      "new_mode": 33188,
      "new_path": "drivers/net/macvtap.c"
    },
    {
      "type": "modify",
      "old_id": "c81680dc10eb7c43baaf61a0bfea1456dbe33c5c",
      "old_mode": 33188,
      "old_path": "drivers/net/tun.c",
      "new_id": "293ce8dfc9e657206ebf2007800e3ffc397bb062",
      "new_mode": 33188,
      "new_path": "drivers/net/tun.c"
    },
    {
      "type": "modify",
      "old_id": "701408a1ded6b50aae333b1cd709d9da7bfc35f8",
      "old_mode": 33188,
      "old_path": "drivers/net/virtio_net.c",
      "new_id": "58914c8ea68f8aec4a9ba0c98e33c4a50f1a3849",
      "new_mode": 33188,
      "new_path": "drivers/net/virtio_net.c"
    },
    {
      "type": "modify",
      "old_id": "8b2256e880e0ea135892b2deb5f5957dfc7568e9",
      "old_mode": 33188,
      "old_path": "include/linux/skbuff.h",
      "new_id": "0259b719bebf504d6ab7001a36a68cdebe41dacd",
      "new_mode": 33188,
      "new_path": "include/linux/skbuff.h"
    },
    {
      "type": "modify",
      "old_id": "c69cd8721b284051ee29febdb3f778ba1df2935a",
      "old_mode": 33188,
      "old_path": "net/core/dev.c",
      "new_id": "a83375d3af72eb29e9939016666a0c6e745b8fdd",
      "new_mode": 33188,
      "new_path": "net/core/dev.c"
    },
    {
      "type": "modify",
      "old_id": "2568c449fe36cb488269986402c31915d00ac647",
      "old_mode": 33188,
      "old_path": "net/core/skbuff.c",
      "new_id": "bddc1dd2e7f221331136aec6e4b6efebdf4feb2c",
      "new_mode": 33188,
      "new_path": "net/core/skbuff.c"
    },
    {
      "type": "modify",
      "old_id": "4b70539199765de41e9356dfca738cb63ba7c16a",
      "old_mode": 33188,
      "old_path": "net/ipv4/af_inet.c",
      "new_id": "49ddca31c4daf4ac50923d540901b99f33a29f0e",
      "new_mode": 33188,
      "new_path": "net/ipv4/af_inet.c"
    },
    {
      "type": "modify",
      "old_id": "303012adf9e6e0b442268b6f53b50ac8aea745fe",
      "old_mode": 33188,
      "old_path": "net/ipv4/ip_gre.c",
      "new_id": "af6be70821c49557baf10a2d8e0ba8dc8916cdab",
      "new_mode": 33188,
      "new_path": "net/ipv4/ip_gre.c"
    },
    {
      "type": "modify",
      "old_id": "191fc24a745a9668332f74106fd39831d9f01c53",
      "old_mode": 33188,
      "old_path": "net/ipv4/ipip.c",
      "new_id": "8f024d41eefa9d828af4969b84134e8c94087ffd",
      "new_mode": 33188,
      "new_path": "net/ipv4/ipip.c"
    },
    {
      "type": "modify",
      "old_id": "52271947a471355cad0688e061e731e7298121f6",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp.c",
      "new_id": "3ec1f69c5ceb2ed0670c242c7eab2c0ac579c285",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp.c"
    },
    {
      "type": "modify",
      "old_id": "0905997e5873338d10f6a1d6bd22ece551cd5fb8",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_input.c",
      "new_id": "492c7cfe14532aed43a1df27c433c76b2ab4cf68",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_input.c"
    },
    {
      "type": "modify",
      "old_id": "667a6adfccf89629360f824d814e66575c4994b1",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_output.c",
      "new_id": "367e2ec01da1f25afcf067351bf17ce673851af6",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_output.c"
    },
    {
      "type": "modify",
      "old_id": "f26f0da7f095763050d891e2543105c3f996320e",
      "old_mode": 33188,
      "old_path": "net/ipv6/ip6_offload.c",
      "new_id": "d141fc32a2eab7c41557488000e5811620ef799f",
      "new_mode": 33188,
      "new_path": "net/ipv6/ip6_offload.c"
    }
  ]
}
