diff --git a/net/sched/act_mirred.c b/net/sched/act_mirred.c index 4fcccbd..d8946b3 100644 --- a/net/sched/act_mirred.c +++ b/net/sched/act_mirred.c @@ -208,6 +208,12 @@ bad_mirred: skb2->dev = dev; skb2->input_dev = skb->dev; + if (skb2->input_dev == skb2->dev) { + if (net_ratelimit()) + printk(" Mirred: Loop detected to %s\n",skb2->dev->name); + goto bad_mirred; + } + dev_queue_xmit(skb2); spin_unlock(&p->lock); return p->action;