From: Eric Garver <e@erig.me>
To: Jiri Benc <jbenc@redhat.com>
Cc: Eyal Birger <eyal.birger@gmail.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
pravin shelar <pshelar@ovn.org>
Subject: Re: [PATCH net-next v2 1/3] openvswitch: normalize vlan rx path
Date: Wed, 5 Oct 2016 15:21:32 -0400 [thread overview]
Message-ID: <20161005192132.GR25403@egarver> (raw)
In-Reply-To: <20161005210709.79732b27@griffin>
On Wed, Oct 05, 2016 at 09:07:09PM +0200, Jiri Benc wrote:
> On Wed, 5 Oct 2016 14:44:26 -0400, Eric Garver wrote:
> > On Wed, Oct 05, 2016 at 08:31:52PM +0300, Eyal Birger wrote:
> > > Just seemed less future safe to keep a pointer to an old packet lying around.
> >
> > I agree. Alternatively refresh the eth pointer.
>
> Sorry guys, that just doesn't make sense. Everyone should know that
> reloading of skb pointer means the former pointers to its data may
> become invalid. Please point me to any place in the kernel where we
> reload the data pointer "just because" even when not used.
>
How about this incremental change?
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 7ef02752d4ba..0dd36f353c53 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -562,7 +562,6 @@ static int ovs_packet_cmd_execute(struct sk_buff *skb, struct genl_info *info)
struct sw_flow *flow;
struct sw_flow_actions *sf_acts;
struct datapath *dp;
- struct ethhdr *eth;
struct vport *input_vport;
u16 mru = 0;
int len;
@@ -584,14 +583,12 @@ static int ovs_packet_cmd_execute(struct sk_buff *skb, struct genl_info *info)
nla_memcpy(__skb_put(packet, len), a[OVS_PACKET_ATTR_PACKET], len);
skb_reset_mac_header(packet);
- eth = eth_hdr(packet);
/* Normally, setting the skb 'protocol' field would be handled by a
* call to eth_type_trans(), but it assumes there's a sending
* device, which we may not have. */
- if (eth_proto_is_802_3(eth->h_proto))
- packet->protocol = eth->h_proto;
- else
+ packet->protocol = eth_hdr(packet)->h_proto;
+ if (!eth_proto_is_802_3(packet->protocol))
packet->protocol = htons(ETH_P_802_2);
if (eth_type_vlan(packet->protocol)) {
next prev parent reply other threads:[~2016-10-05 19:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-05 13:07 [PATCH net-next v2 0/3] openvswitch: make vlan handling consistent Jiri Benc
2016-10-05 13:07 ` [PATCH net-next v2 1/3] openvswitch: normalize vlan rx path Jiri Benc
2016-10-05 14:18 ` Eyal Birger
2016-10-05 17:23 ` Jiri Benc
2016-10-05 17:31 ` Eyal Birger
2016-10-05 18:44 ` Eric Garver
2016-10-05 19:07 ` Jiri Benc
2016-10-05 19:21 ` Eric Garver [this message]
2016-10-05 21:07 ` Jiri Benc
2016-10-05 13:07 ` [PATCH net-next v2 2/3] openvswitch: remove unreachable code in vlan parsing Jiri Benc
2016-10-06 5:22 ` Pravin Shelar
2016-10-06 9:08 ` Jiri Benc
2016-10-05 13:07 ` [PATCH net-next v2 3/3] openvswitch: fix vlan subtraction from packet length Jiri Benc
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=20161005192132.GR25403@egarver \
--to=e@erig.me \
--cc=eyal.birger@gmail.com \
--cc=jbenc@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pshelar@ovn.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.