aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-05-10 23:03:34 -0400
committerLuis Henriques <luis.henriques@canonical.com>2012-07-03 11:29:03 -0400
commitb88e03548cfb25586337284c0087b305c563979c (patch)
tree2d2bd23b66ace39665295311bde07c9d1c444f8d /net
parent82080f4405dac93d0671a6a60f50cd48e50f0fb9 (diff)
Revert "net: maintain namespace isolation between vlan and real device"
BugLink: http://bugs.launchpad.net/bugs/1013748 [ Upstream commit 59b9997baba5242997ddc7bd96b1391f5275a5a4 ] This reverts commit 8a83a00b0735190384a348156837918271034144. It causes regressions for S390 devices, because it does an unconditional DST drop on SKBs for vlans and the QETH device needs the neighbour entry hung off the DST for certain things on transmit. Arnd can't remember exactly why he even needed this change. Conflicts: drivers/net/macvlan.c net/8021q/vlan_dev.c net/core/dev.c Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
Diffstat (limited to 'net')
-rw-r--r--net/8021q/vlan_dev.c2
-rw-r--r--net/core/dev.c36
2 files changed, 6 insertions, 32 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 5b4f51d440f..d54845618c2 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -154,7 +154,7 @@ static netdev_tx_t vlan_dev_hard_start_xmit(struct sk_buff *skb,
154 skb = __vlan_hwaccel_put_tag(skb, vlan_tci); 154 skb = __vlan_hwaccel_put_tag(skb, vlan_tci);
155 } 155 }
156 156
157 skb_set_dev(skb, vlan_dev_info(dev)->real_dev); 157 skb->dev = vlan_dev_info(dev)->real_dev;
158 len = skb->len; 158 len = skb->len;
159 ret = dev_queue_xmit(skb); 159 ret = dev_queue_xmit(skb);
160 160
diff --git a/net/core/dev.c b/net/core/dev.c
index 1e778977486..a71eafc392e 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1533,10 +1533,14 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
1533 kfree_skb(skb); 1533 kfree_skb(skb);
1534 return NET_RX_DROP; 1534 return NET_RX_DROP;
1535 } 1535 }
1536 skb_set_dev(skb, dev); 1536 skb->dev = dev;
1537 skb_dst_drop(skb);
1537 skb->tstamp.tv64 = 0; 1538 skb->tstamp.tv64 = 0;
1538 skb->pkt_type = PACKET_HOST; 1539 skb->pkt_type = PACKET_HOST;
1539 skb->protocol = eth_type_trans(skb, dev); 1540 skb->protocol = eth_type_trans(skb, dev);
1541 skb->mark = 0;
1542 secpath_reset(skb);
1543 nf_reset(skb);
1540 return netif_rx(skb); 1544 return netif_rx(skb);
1541} 1545}
1542EXPORT_SYMBOL_GPL(dev_forward_skb); 1546EXPORT_SYMBOL_GPL(dev_forward_skb);
@@ -1791,36 +1795,6 @@ void netif_device_attach(struct net_device *dev)
1791} 1795}
1792EXPORT_SYMBOL(netif_device_attach); 1796EXPORT_SYMBOL(netif_device_attach);
1793 1797
1794/**
1795 * skb_dev_set -- assign a new device to a buffer
1796 * @skb: buffer for the new device
1797 * @dev: network device
1798 *
1799 * If an skb is owned by a device already, we have to reset
1800 * all data private to the namespace a device belongs to
1801 * before assigning it a new device.
1802 */
1803#ifdef CONFIG_NET_NS
1804void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
1805{
1806 skb_dst_drop(skb);
1807 if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) {
1808 secpath_reset(skb);
1809 nf_reset(skb);
1810 skb_init_secmark(skb);
1811 skb->mark = 0;
1812 skb->priority = 0;
1813 skb->nf_trace = 0;
1814 skb->ipvs_property = 0;
1815#ifdef CONFIG_NET_SCHED
1816 skb->tc_index = 0;
1817#endif
1818 }
1819 skb->dev = dev;
1820}
1821EXPORT_SYMBOL(skb_set_dev);
1822#endif /* CONFIG_NET_NS */
1823
1824/* 1798/*
1825 * Invalidate hardware checksum when packet is to be mangled, and 1799 * Invalidate hardware checksum when packet is to be mangled, and
1826 * complete checksum manually on outgoing path. 1800 * complete checksum manually on outgoing path.