)]}'
{
  "commit": "b9bf60ac3e3779d4ffa03daceebf59df7b46c224",
  "tree": "92b29a20a04ca4aab9b8cf52fd4b3b99371add87",
  "parents": [
    "8c2223fc19032e7b8761e46c15e1ed167a252285"
  ],
  "author": {
    "name": "Cong Wang",
    "email": "amwang@redhat.com",
    "time": "Thu Feb 21 23:32:27 2013 +0000"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Thu Feb 28 06:59:06 2013 -0800"
  },
  "message": "vlan: adjust vlan_set_encap_proto() for its callers\n\n[ Upstream commit da8c87241c26aac81a64c7e4d21d438a33018f4e ]\n\nThere are two places to call vlan_set_encap_proto():\nvlan_untag() and __pop_vlan_tci().\n\nvlan_untag() assumes skb-\u003edata points after mac addr, otherwise\nthe following code\n\n        vhdr \u003d (struct vlan_hdr *) skb-\u003edata;\n        vlan_tci \u003d ntohs(vhdr-\u003eh_vlan_TCI);\n        __vlan_hwaccel_put_tag(skb, vlan_tci);\n\n        skb_pull_rcsum(skb, VLAN_HLEN);\n\nwon\u0027t be correct. But __pop_vlan_tci() assumes points _before_\nmac addr.\n\nIn vlan_set_encap_proto(), it looks for some magic L2 value\nafter mac addr:\n\n        rawp \u003d skb-\u003edata;\n        if (*(unsigned short *) rawp \u003d\u003d 0xFFFF)\n\t...\n\nTherefore __pop_vlan_tci() is obviously wrong.\n\nA quick fix is avoiding using skb-\u003edata in vlan_set_encap_proto(),\nuse \u0027vhdr+1\u0027 is always correct in both cases.\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Jesse Gross \u003cjesse@nicira.com\u003e\nAcked-by: Jesse Gross \u003cjesse@nicira.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "561e130df0b2fe2fa9712cb84a92da82eb5799a7",
      "old_mode": 33188,
      "old_path": "include/linux/if_vlan.h",
      "new_id": "9b0c6142eaed630154e6c82f3717e038ef4ee07d",
      "new_mode": 33188,
      "new_path": "include/linux/if_vlan.h"
    }
  ]
}
