linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Mahesh Bandewar <maheshb@google.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.18 033/100] bonding: pass link-local packets to bonding master also.
Date: Tue, 16 Oct 2018 00:11:14 -0400	[thread overview]
Message-ID: <20181016041221.135528-33-sashal@kernel.org> (raw)
In-Reply-To: <20181016041221.135528-1-sashal@kernel.org>

From: Mahesh Bandewar <maheshb@google.com>

[ Upstream commit 6a9e461f6fe4434e6172304b69774daff9a3ac4c ]

Commit b89f04c61efe ("bonding: deliver link-local packets with
skb->dev set to link that packets arrived on") changed the behavior
of how link-local-multicast packets are processed. The change in
the behavior broke some legacy use cases where these packets are
expected to arrive on bonding master device also.

This patch passes the packet to the stack with the link it arrived
on as well as passes to the bonding-master device to preserve the
legacy use case.

Fixes: b89f04c61efe ("bonding: deliver link-local packets with skb->dev set to link that packets arrived on")
Reported-by: Michal Soltys <soltys@ziu.info>
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/bonding/bond_main.c | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 217b790d22ed..fc25ad45ea71 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1177,9 +1177,26 @@ static rx_handler_result_t bond_handle_frame(struct sk_buff **pskb)
 		}
 	}
 
-	/* don't change skb->dev for link-local packets */
-	if (is_link_local_ether_addr(eth_hdr(skb)->h_dest))
+	/* Link-local multicast packets should be passed to the
+	 * stack on the link they arrive as well as pass them to the
+	 * bond-master device. These packets are mostly usable when
+	 * stack receives it with the link on which they arrive
+	 * (e.g. LLDP) they also must be available on master. Some of
+	 * the use cases include (but are not limited to): LLDP agents
+	 * that must be able to operate both on enslaved interfaces as
+	 * well as on bonds themselves; linux bridges that must be able
+	 * to process/pass BPDUs from attached bonds when any kind of
+	 * STP version is enabled on the network.
+	 */
+	if (is_link_local_ether_addr(eth_hdr(skb)->h_dest)) {
+		struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC);
+
+		if (nskb) {
+			nskb->dev = bond->dev;
+			netif_rx(nskb);
+		}
 		return RX_HANDLER_PASS;
+	}
 	if (bond_should_deliver_exact_match(skb, slave, bond))
 		return RX_HANDLER_EXACT;
 
-- 
2.17.1


  parent reply	other threads:[~2018-10-16  4:12 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-16  4:10 [PATCH AUTOSEL 4.18 001/100] xfrm: Validate address prefix lengths in the xfrm selector Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 002/100] xfrm6: call kfree_skb when skb is toobig Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 003/100] xfrm: reset transport header back to network header after all input transforms ahave been applied Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 004/100] xfrm: reset crypto_done when iterating over multiple input xfrms Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 005/100] mac80211: Always report TX status Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 006/100] cfg80211: reg: Init wiphy_idx in regulatory_hint_core() Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 007/100] mac80211: fix pending queue hang due to TX_DROP Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 008/100] cfg80211: Address some corner cases in scan result channel updating Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 009/100] mac80211: TDLS: fix skb queue/priority assignment Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 010/100] mac80211: fix TX status reporting for ieee80211s Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 011/100] xfrm: Fix NULL pointer dereference when skb_dst_force clears the dst_entry Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 012/100] ARM: 8799/1: mm: fix pci_ioremap_io() offset check Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 013/100] xfrm: validate template mode Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 014/100] drm/i2c: tda9950: fix timeout counter check Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 015/100] drm/i2c: tda9950: set MAX_RETRIES for errors only Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 016/100] netfilter: bridge: Don't sabotage nf_hook calls from an l3mdev Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 017/100] netfilter: conntrack: get rid of double sizeof Sasha Levin
2018-10-16  4:10 ` [PATCH AUTOSEL 4.18 018/100] arm64: hugetlb: Fix handling of young ptes Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 019/100] ARM: dts: BCM63xx: Fix incorrect interrupt specifiers Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 020/100] net: macb: Clean 64b dma addresses if they are not detected Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 021/100] net: hns: fix for unmapping problem when SMMU is on Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 022/100] soc: fsl: qbman: qman: avoid allocating from non existing gen_pool Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 023/100] soc: fsl: qe: Fix copy/paste bug in ucc_get_tdm_sync_shift() Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 024/100] nl80211: Fix possible Spectre-v1 for NL80211_TXRATE_HT Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 025/100] mac80211_hwsim: fix locking when iterating radios during ns exit Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 026/100] mac80211_hwsim: fix race in radio destruction from netlink notifier Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 027/100] mac80211_hwsim: do not omit multicast announce of first added radio Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 028/100] Bluetooth: SMP: fix crash in unpairing Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 029/100] pxa168fb: prepare the clock Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 030/100] qed: Avoid implicit enum conversion in qed_set_tunn_cls_info Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 031/100] qed: Fix mask parameter in qed_vf_prep_tunn_req_tlv Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 032/100] qed: Avoid implicit enum conversion in qed_roce_mode_to_flavor Sasha Levin
2018-10-16  4:11 ` Sasha Levin [this message]
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 034/100] bonding: avoid possible dead-lock Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 035/100] qed: Avoid constant logical operation warning in qed_vf_pf_acquire Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 036/100] qed: Avoid implicit enum conversion in qed_iwarp_parse_rx_pkt Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 037/100] bnxt_en: Fix TX timeout during netpoll Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 038/100] nl80211: Fix possible Spectre-v1 for CQM RSSI thresholds Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 039/100] scsi: qedi: Initialize the stats mutex lock Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 040/100] rxrpc: Fix checks as to whether we should set up a new call Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 041/100] rxrpc: Fix RTT gathering Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 042/100] rxrpc: Fix transport sockopts to get IPv4 errors on an IPv6 socket Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 043/100] rxrpc: Fix error distribution Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 044/100] netfilter: nft_set_rbtree: add missing rb_erase() in GC routine Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 045/100] netfilter: avoid erronous array bounds warning Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 046/100] qed: Fix shmem structure inconsistency between driver and the mfw Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 047/100] asix: Check for supported Wake-on-LAN modes Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 048/100] ax88179_178a: " Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 049/100] lan78xx: " Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 050/100] sr9800: " Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 051/100] r8152: Check for supported Wake-on-LAN Modes Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 052/100] smsc75xx: Check for Wake-on-LAN modes Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 053/100] smsc95xx: " Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 054/100] qlcnic: fix Tx descriptor corruption on 82xx devices Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 055/100] i2c: i2c-scmi: fix for i2c_smbus_write_block_data Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 056/100] cfg80211: fix use-after-free in reg_process_hint() Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 057/100] KVM: nVMX: Do not expose MPX VMX controls when guest MPX disabled Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 058/100] KVM: x86: Do not use kvm_x86_ops->mpx_supported() directly Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 059/100] KVM: nVMX: Fix emulation of VM_ENTRY_LOAD_BNDCFGS Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 060/100] net/mlx5: E-Switch, Fix out of bound access when setting vport rate Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 061/100] net/mlx5e: Set vlan masks for all offloaded TC rules Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 062/100] tun: remove unused parameters Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 063/100] tun: initialize napi_mutex unconditionally Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 064/100] r8169: fix network stalls due to missing bit TXCFG_AUTO_FIFO Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 065/100] perf/core: Fix perf_pmu_unregister() locking Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 066/100] perf/x86/intel/uncore: Use boot_cpu_data.phys_proc_id instead of hardcorded physical package ID 0 Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 067/100] perf/ring_buffer: Prevent concurent ring buffer access Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 068/100] perf/x86/intel/uncore: Fix PCI BDF address of M3UPI on SKX Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 069/100] perf/x86/amd/uncore: Set ThreadMask and SliceMask for L3 Cache perf events Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 070/100] thunderbolt: Do not handle ICM events after domain is stopped Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 071/100] thunderbolt: Initialize after IOMMUs Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 072/100] net: fec: fix rare tx timeout Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 073/100] declance: Fix continuation with the adapter identification message Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 074/100] nfp: avoid soft lockups under control message storm Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 075/100] RISCV: Fix end PFN for low memory Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 076/100] Revert "serial: 8250_dw: Fix runtime PM handling" Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 077/100] bonding: fix warning message Sasha Levin
2018-10-16  4:11 ` [PATCH AUTOSEL 4.18 078/100] net: qualcomm: rmnet: Skip processing loopback packets Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 079/100] net: qualcomm: rmnet: Fix incorrect allocation flag in transmit Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 080/100] net: qualcomm: rmnet: Fix incorrect allocation flag in receive path Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 081/100] locking/ww_mutex: Fix runtime warning in the WW mutex selftest Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 082/100] drm/amd/display: Signal hw_done() after waiting for flip_done() Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 083/100] net/usb: cancel pending work when unbinding smsc75xx Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 084/100] team: Forbid enslaving team device to itself Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 085/100] bnxt_en: Fix VNIC reservations on the PF Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 086/100] bnxt_en: Fix enables field in HWRM_QUEUE_COS2BW_CFG request Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 087/100] bnxt_en: get the reduced max_irqs by the ones used by RDMA Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 088/100] net: dsa: b53: Keep CPU port as tagged in all VLANs Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 089/100] be2net: don't flip hw_features when VXLANs are added/deleted Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 090/100] net: phy: phylink: fix SFP interface autodetection Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 091/100] powerpc/numa: Skip onlining a offline node in kdump path Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 092/100] net: cxgb3_main: fix a missing-check bug Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 093/100] yam: " Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 094/100] net: mvpp2: Extract the correct ethtype from the skb for tx csum offload Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 095/100] ocfs2: fix crash in ocfs2_duplicate_clusters_by_page() Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 096/100] mm/gup_benchmark: fix unsigned comparison to zero in __gup_benchmark_ioctl Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 097/100] mm/migrate.c: split only transparent huge pages when allocation fails Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 098/100] mm/vmstat.c: fix outdated vmstat_text Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 099/100] x86/paravirt: Fix some warning messages Sasha Levin
2018-10-16  4:12 ` [PATCH AUTOSEL 4.18 100/100] clk: mvebu: armada-37xx-periph: Remove unused var num_parents Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181016041221.135528-33-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maheshb@google.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).