Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934155AbcKVSDQ (ORCPT ); Tue, 22 Nov 2016 13:03:16 -0500 Received: from mail-io0-f180.google.com ([209.85.223.180]:33411 "EHLO mail-io0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933688AbcKVSDO (ORCPT ); Tue, 22 Nov 2016 13:03:14 -0500 MIME-Version: 1.0 In-Reply-To: <20161122175504.GD19939@tuebingen.mpg.de> References: <20161121092855.GA20976@kroah.com> <20161122165912.GA19939@tuebingen.mpg.de> <20161122170654.GA20022@kroah.com> <1479836511.681.165.camel@intel.com> <20161122175504.GD19939@tuebingen.mpg.de> From: Eric Dumazet Date: Tue, 22 Nov 2016 09:56:34 -0800 Message-ID: Subject: Re: Linux 4.4.34 To: Andre Noll Cc: "Duyck, Alexander H" , "gregkh@linuxfoundation.org" , "linux-kernel@vger.kernel.org" , "ast@kernel.org" , "stable@vger.kernel.org" , "willemb@google.com" , "jslaby@suse.cz" , "davem@davemloft.net" , "yibyang@cisco.com" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1222 Lines: 39 On Tue, Nov 22, 2016 at 9:55 AM, Andre Noll wrote: > On Tue, Nov 22, 09:46, Eric Dumazet wrote >> This is an aliasing problem. >> Tom code is hard to read and understand. >> >> Andre, could you try : >> >> diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c >> index 69e4463a4b1b..b045980faaea 100644 >> --- a/net/core/flow_dissector.c >> +++ b/net/core/flow_dissector.c >> @@ -157,6 +157,7 @@ bool __skb_flow_dissect(const struct sk_buff *skb, >> memcpy(key_eth_addrs, ð->h_dest, sizeof(*key_eth_addrs)); >> } >> >> + barrier(); >> again: >> switch (proto) { >> case htons(ETH_P_IP): { > > This patch on top of v4.4.34 makes no difference: I'm still getting > the panic in eth_type_trans(). > What compiler are you using exactly ? Please try : diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 69e4463a4b1b..48791f372aa2 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -551,6 +551,7 @@ bool __skb_flow_dissect(const struct sk_buff *skb, key_control->thoff = (u16)nhoff; out: + barrier(); key_basic->n_proto = proto; key_basic->ip_proto = ip_proto;