diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-06-26 08:48:53 -1000 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-06-26 08:48:53 -1000 | 
| commit | de6e1317f746fbc527a73976c58b4119e506ff7c (patch) | |
| tree | 45935c444918e3f0b8d544cb31e5ce3055969d53 | |
| parent | 78750f1908869c3bfcbf2a1f1f00f078f2948271 (diff) | |
| parent | 2884d4230867c8a46cf701214051e923301e7429 (diff) | |
Merge tag 'critical_fix_for_3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/rwlove/fcoe
Pull FCoE fix from Robert W Love:
 "This patch fixes a critical bug that was introduced in 3.9 related to
  VLAN tagging FCoE frames"
* tag 'critical_fix_for_3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/rwlove/fcoe:
  fcoe: Use correct API to set vlan tag for FCoE Ethertype skbs
| -rw-r--r-- | drivers/scsi/fcoe/fcoe.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c index 292b24f9bf93..32ae6c67ea3a 100644 --- a/drivers/scsi/fcoe/fcoe.c +++ b/drivers/scsi/fcoe/fcoe.c @@ -1656,9 +1656,12 @@ static int fcoe_xmit(struct fc_lport *lport, struct fc_frame *fp)  	if (fcoe->netdev->priv_flags & IFF_802_1Q_VLAN &&  	    fcoe->realdev->features & NETIF_F_HW_VLAN_CTAG_TX) { -		skb->vlan_tci = VLAN_TAG_PRESENT | -				vlan_dev_vlan_id(fcoe->netdev); +		/* must set skb->dev before calling vlan_put_tag */  		skb->dev = fcoe->realdev; +		skb = __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), +					     vlan_dev_vlan_id(fcoe->netdev)); +		if (!skb) +			return -ENOMEM;  	} else  		skb->dev = fcoe->netdev; | 
