)]}'
{
  "commit": "d503b30bd648b3cb4e5f50b65d27e389960cc6d9",
  "tree": "ebb3e2ad85f32cd95c767dda75d25873c384e78d",
  "parents": [
    "de9963f0f2dfad128b26ae7bf6005f5948416a6d"
  ],
  "author": {
    "name": "Florian Westphal",
    "email": "fwestphal@astaro.com",
    "time": "Thu Feb 17 11:32:38 2011 +0100"
  },
  "committer": {
    "name": "Patrick McHardy",
    "email": "kaber@trash.net",
    "time": "Thu Feb 17 11:32:38 2011 +0100"
  },
  "message": "netfilter: tproxy: do not assign timewait sockets to skb-\u003esk\n\nAssigning a socket in timewait state to skb-\u003esk can trigger\nkernel oops, e.g. in nfnetlink_log, which does:\n\nif (skb-\u003esk) {\n        read_lock_bh(\u0026skb-\u003esk-\u003esk_callback_lock);\n        if (skb-\u003esk-\u003esk_socket \u0026\u0026 skb-\u003esk-\u003esk_socket-\u003efile) ...\n\nin the timewait case, accessing sk-\u003esk_callback_lock and sk-\u003esk_socket\nis invalid.\n\nEither all of these spots will need to add a test for sk-\u003esk_state !\u003d TCP_TIME_WAIT,\nor xt_TPROXY must not assign a timewait socket to skb-\u003esk.\n\nThis does the latter.\n\nIf a TW socket is found, assign the tproxy nfmark, but skip the skb-\u003esk assignment,\nthus mimicking behaviour of a \u0027-m socket .. -j MARK/ACCEPT\u0027 re-routing rule.\n\nThe \u0027SYN to TW socket\u0027 case is left unchanged -- we try to redirect to the\nlistener socket.\n\nCc: Balazs Scheidler \u003cbazsi@balabit.hu\u003e\nCc: KOVACS Krisztian \u003chidden@balabit.hu\u003e\nSigned-off-by: Florian Westphal \u003cfwestphal@astaro.com\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cd85b3bc8327219f1e036698c253034c27765d66",
      "old_mode": 33188,
      "old_path": "include/net/netfilter/nf_tproxy_core.h",
      "new_id": "e505358d89993c44720529a9890162a25518248f",
      "new_mode": 33188,
      "new_path": "include/net/netfilter/nf_tproxy_core.h"
    },
    {
      "type": "modify",
      "old_id": "4d87befb04c04c793a54360de809e5eb64ee44c2",
      "old_mode": 33188,
      "old_path": "net/netfilter/nf_tproxy_core.c",
      "new_id": "474d621cbc2ea8f992eed715a033b2e77e5835d3",
      "new_mode": 33188,
      "new_path": "net/netfilter/nf_tproxy_core.c"
    },
    {
      "type": "modify",
      "old_id": "640678f47a2ad5420a869e4fbcd63bd677297c2c",
      "old_mode": 33188,
      "old_path": "net/netfilter/xt_TPROXY.c",
      "new_id": "dcfd57eb9d0249cea62289e33e64e76696b2dc00",
      "new_mode": 33188,
      "new_path": "net/netfilter/xt_TPROXY.c"
    },
    {
      "type": "modify",
      "old_id": "00d6ae838303f1dc0904b5a0aba543fbc32d200b",
      "old_mode": 33188,
      "old_path": "net/netfilter/xt_socket.c",
      "new_id": "9cc46356b5773058c0554931bc84866a14113f75",
      "new_mode": 33188,
      "new_path": "net/netfilter/xt_socket.c"
    }
  ]
}
