)]}'
{
  "commit": "8b9d3728977760f6bd1317c4420890f73695354e",
  "tree": "5e397a8ab86e69eb429b3fd0e3c2585c798239e5",
  "parents": [
    "9e9fd12dc0679643c191fc9795a3021807e77de4"
  ],
  "author": {
    "name": "Jarek Poplawski",
    "email": "jarkao2@gmail.com",
    "time": "Mon Jan 19 17:03:56 2009 -0800"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Mon Jan 19 17:03:56 2009 -0800"
  },
  "message": "net: Fix data corruption when splicing from sockets.\n\nThe trick in socket splicing where we try to convert the skb-\u003edata\ninto a page based reference using virt_to_page() does not work so\nwell.\n\nThe idea is to pass the virt_to_page() reference via the pipe\nbuffer, and refcount the buffer using a SKB reference.\n\nBut if we are splicing from a socket to a socket (via sendpage)\nthis doesn\u0027t work.\n\nThe from side processing will grab the page (and SKB) references.\nThe sendpage() calls will grab page references only, return, and\nthen the from side processing completes and drops the SKB ref.\n\nThe page based reference to skb-\u003edata is not enough to keep the\nkmalloc() buffer backing it from being reused.  Yet, that is\nall that the socket send side has at this point.\n\nThis leads to data corruption if the skb-\u003edata buffer is reused\nby SLAB before the send side socket actually gets the TX packet\nout to the device.\n\nThe fix employed here is to simply allocate a page and copy the\nskb-\u003edata bytes into that page.\n\nThis will hurt performance, but there is no clear way to fix this\nproperly without a copy at the present time, and it is important\nto get rid of the data corruption.\n\nWith fixes from Herbert Xu.\n\nTested-by: Willy Tarreau \u003cw@1wt.eu\u003e\nForeseen-by: Changli Gao \u003cxiaosuo@gmail.com\u003e\nDiagnosed-by: Willy Tarreau \u003cw@1wt.eu\u003e\nReported-by: Willy Tarreau \u003cw@1wt.eu\u003e\nFixed-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Jarek Poplawski \u003cjarkao2@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "65eac77390337e9857c73736618a60ff09737d84",
      "old_mode": 33188,
      "old_path": "net/core/skbuff.c",
      "new_id": "56272ac6dfd8f5a1a2dc44866d0edf87bd8d7100",
      "new_mode": 33188,
      "new_path": "net/core/skbuff.c"
    }
  ]
}
