This is a note to let you know that I've just added the patch titled
ifb: goto resched directly if error happens and dp->tq isn't empty
to the 2.6.36-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ifb-goto-resched-directly-if-error-happens-and-dp-tq-isn-t-empty.patch
and it can be found in the queue-2.6.36 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From 63eeabe277682c5513fc10dca72bc2393243a0da Mon Sep 17 00:00:00 2001
From: Changli Gao <[email protected]>
Date: Sat, 4 Dec 2010 14:09:08 +0000
Subject: ifb: goto resched directly if error happens and dp->tq isn't empty
From: Changli Gao <[email protected]>
[ Upstream commit 75c1c82566f23dd539fb7ccbf57a1caa7ba82628 ]
If we break the loop when there are still skbs in tq and no skb in
rq, the skbs will be left in txq until new skbs are enqueued into rq.
In rare cases, no new skb is queued, then these skbs will stay in rq
forever.
After this patch, if tq isn't empty when we break the loop, we goto
resched directly.
Signed-off-by: Changli Gao <[email protected]>
Signed-off-by: Jamal Hadi Salim <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/net/ifb.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -104,6 +104,8 @@ static void ri_tasklet(unsigned long dev
rcu_read_unlock();
dev_kfree_skb(skb);
stats->tx_dropped++;
+ if (skb_queue_len(&dp->tq) != 0)
+ goto resched;
break;
}
rcu_read_unlock();
Patches currently in stable-queue which might be from [email protected] are
queue-2.6.36/ifb-goto-resched-directly-if-error-happens-and-dp-tq-isn-t-empty.patch
_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable