public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
* [PATCH net 1/1] via-rhine: fix VLAN receive handling regression.
@ 2015-10-14 22:14 Francois Romieu
  2015-10-15  7:24 ` Nick Alcock
  2015-10-16  8:02 ` David Miller
  0 siblings, 2 replies; 5+ messages in thread
From: Francois Romieu @ 2015-10-14 22:14 UTC (permalink / raw)
  To: netdev; +Cc: David Miller, Andrej Ota, Nix

From: Andrej Ota <andrej@ota•si>

Because eth_type_trans() consumes ethernet header worth of bytes, a call
to read TCI from end of packet using rhine_rx_vlan_tag() no longer works
as it's reading from an invalid offset.

Tested to be working on PCEngines Alix board.

Fixes: 810f19bcb862 ("via-rhine: add consistent memory barrier in vlan receive code.")
Signed-off-by: Andrej Ota <andrej@ota•si>
Acked-by: Francois Romieu <romieu@fr•zoreil.com>

---

 Applies fine as of 0f8b8e28fb3241f9fd82ce13bac2b40c35e987e0
 ("tipc: eliminate risk of stalled link synchronization").

 Andrej posted it on l-k the 2015/10/04, see
 http://marc.info/?l=linux-kernel&m=144398918324349

 Kernel v4.2 exhibits the regression. Stable v4.[01] kernels don't.

 drivers/net/ethernet/via/via-rhine.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index a832637..2b7550c 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -2134,10 +2134,11 @@ static int rhine_rx(struct net_device *dev, int limit)
 			}
 
 			skb_put(skb, pkt_len);
-			skb->protocol = eth_type_trans(skb, dev);
 
 			rhine_rx_vlan_tag(skb, desc, data_size);
 
+			skb->protocol = eth_type_trans(skb, dev);
+
 			netif_receive_skb(skb);
 
 			u64_stats_update_begin(&rp->rx_stats.syncp);
-- 
2.4.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread
* [PATCH net] ipv6: don't stop backtracking in fib6_lookup_1 if subtree does not match
@ 2013-08-07  0:34 Hannes Frederic Sowa
  2013-08-07 19:58 ` Teco Boot
  0 siblings, 1 reply; 5+ messages in thread
From: Hannes Frederic Sowa @ 2013-08-07  0:34 UTC (permalink / raw)
  To: netdev; +Cc: teco, yoshfuji, equinox, boutier

In case a subtree did not match we currently stop backtracking and return
NULL (root table from fib_lookup). This could yield in invalid routing
table lookups when using subtrees.

Instead continue to backtrack until a valid subtree or node is found
and return this match.

Also remove unneeded NULL check.

Reported-by: Teco Boot <teco@inf-net•nl>
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6•org>
Cc: David Lamparter <equinox@diac24•net>
Cc: <boutier@pps•univ-paris-diderot.fr>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion•org>
---
 net/ipv6/ip6_fib.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index ed828d6..73db48e 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -993,14 +993,22 @@ static struct fib6_node * fib6_lookup_1(struct fib6_node *root,
 
 			if (ipv6_prefix_equal(&key->addr, args->addr, key->plen)) {
 #ifdef CONFIG_IPV6_SUBTREES
-				if (fn->subtree)
-					fn = fib6_lookup_1(fn->subtree, args + 1);
+				if (fn->subtree) {
+					struct fib6_node *sfn;
+					sfn = fib6_lookup_1(fn->subtree,
+							    args + 1);
+					if (!sfn)
+						goto backtrack;
+					fn = sfn;
+				}
 #endif
-				if (!fn || fn->fn_flags & RTN_RTINFO)
+				if (fn->fn_flags & RTN_RTINFO)
 					return fn;
 			}
 		}
-
+#ifdef CONFIG_IPV6_SUBTREES
+backtrack:
+#endif
 		if (fn->fn_flags & RTN_ROOT)
 			break;
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-12-03 20:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-14 22:14 [PATCH net 1/1] via-rhine: fix VLAN receive handling regression Francois Romieu
2015-10-15  7:24 ` Nick Alcock
2015-10-16  8:02 ` David Miller
  -- strict thread matches above, loose matches on Subject: below --
2013-08-07  0:34 [PATCH net] ipv6: don't stop backtracking in fib6_lookup_1 if subtree does not match Hannes Frederic Sowa
2013-08-07 19:58 ` Teco Boot
2015-12-02  9:55   ` [PATCH net 1/1] via-rhine: fix VLAN receive handling regression Teco Boot
2015-12-03 20:11     ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox