)]}'
{
  "commit": "2df9001edc382c331f338f45d259feeaa740c418",
  "tree": "eb92c3ef77973295469743a1087c551acf7ece67",
  "parents": [
    "5d4e039b2cb1ca4de9774344ea7b61ad7fa1b0a1"
  ],
  "author": {
    "name": "Ilpo Järvinen",
    "email": "ilpo.jarvinen@helsinki.fi",
    "time": "Fri May 29 15:02:29 2009 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Fri May 29 15:02:29 2009 -0700"
  },
  "message": "tcp: fix loop in ofo handling code and reduce its complexity\n\nSomewhat luckily, I was looking into these parts with very fine\ncomb because I\u0027ve made somewhat similar changes on the same\narea (conflicts that arose weren\u0027t that lucky though). The loop\nwas very much overengineered recently in commit 915219441d566\n(tcp: Use SKB queue and list helpers instead of doing it\nby-hand), while it basically just wants to know if there are\nskbs after \u0027skb\u0027.\n\nAlso it got broken because skb1 \u003d skb-\u003enext got translated into\nskb1 \u003d skb1-\u003enext (though abstracted) improperly. Note that\n\u0027skb1\u0027 is pointing to previous sk_buff than skb or NULL if at\nhead. Two things went wrong:\n- We\u0027ll kfree \u0027skb\u0027 on the first iteration instead of the\n  skbuff following \u0027skb\u0027 (it would require required SACK reneging\n  to recover I think).\n- The list head case where \u0027skb1\u0027 is NULL is checked too early\n  and the loop won\u0027t execute whereas it previously did.\n\nConclusion, mostly revert the recent changes which makes the\ncset very messy looking but using proper accessor in the\nprevious-like version.\n\nThe effective changes against the original can be viewed with:\n  git-diff 915219441d566f1da0caa0e262be49b666159e17^ \\\n\t\tnet/ipv4/tcp_input.c | sed -n -e \u002757,70 p\u0027\n\nSigned-off-by: Ilpo Järvinen \u003cilpo.jarvinen@helsinki.fi\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ba34a23c1bfb29e51fbfa3fe0921305df403cf28",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp_input.c",
      "new_id": "2bdb0da237e69f52f411dd8bcd87219a9b1c14e9",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp_input.c"
    }
  ]
}
