[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20140902225548.885.79277.stgit@ahduyck-bv4.jf.intel.com>
Date: Tue, 02 Sep 2014 18:55:48 -0400
From: Alexander Duyck <alexander.h.duyck@...el.com>
To: netdev@...r.kernel.org, davem@...emloft.net
Subject: [PATCH] net: Validate frames going through the direct_xmit path
In commit 50cbe9ab5f8d92d2d4a327b56e96559d8f63a1fa "net: Validate xmit SKBs
right when we pull them out of the qdisc" the validation code was moved out
of dev_hard_start_xmit and into dequeue_skb. However this overlooked the
fact that we do not always enqueue the skb onto a qdisc.
As a result I was seeing issues trying to connect to a vhost_net interface
after this patch was applied. To resolve the issue I have added a call to
validate_xmit_skb in sched_direct_xmit and this seems to have resolved the
issue by restoring the validation to this xmit path.
Signed-off-by: Alexander Duyck <alexander.h.duyck@...el.com>
---
net/sched/sch_generic.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index a8bf9f9..203ee65 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -128,8 +128,13 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q,
spin_unlock(root_lock);
HARD_TX_LOCK(dev, txq, smp_processor_id());
- if (!netif_xmit_frozen_or_stopped(txq))
- skb = dev_hard_start_xmit(skb, dev, txq, &ret);
+ if (!netif_xmit_frozen_or_stopped(txq)) {
+ skb = validate_xmit_skb(skb, dev);
+ if (!skb)
+ ret = NETDEV_TX_OK;
+ else
+ skb = dev_hard_start_xmit(skb, dev, txq, &ret);
+ }
HARD_TX_UNLOCK(dev, txq);
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists