From: Greg Kroah-Hartman Date: Wed, 23 Jan 2019 17:09:13 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v4.20.5~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=24f7b39c7504fde3c13ec4ebe3486140a0d5a157;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: net-speed-up-skb_rbtree_purge.patch --- diff --git a/queue-4.4/net-speed-up-skb_rbtree_purge.patch b/queue-4.4/net-speed-up-skb_rbtree_purge.patch new file mode 100644 index 00000000000..841d2449649 --- /dev/null +++ b/queue-4.4/net-speed-up-skb_rbtree_purge.patch @@ -0,0 +1,52 @@ +From 7c90584c66cc4b033a3b684b0e0950f79e7b7166 Mon Sep 17 00:00:00 2001 +From: Eric Dumazet +Date: Sat, 23 Sep 2017 12:39:12 -0700 +Subject: net: speed up skb_rbtree_purge() + +From: Eric Dumazet + +commit 7c90584c66cc4b033a3b684b0e0950f79e7b7166 upstream. + +As measured in my prior patch ("sch_netem: faster rb tree removal"), +rbtree_postorder_for_each_entry_safe() is nice looking but much slower +than using rb_next() directly, except when tree is small enough +to fit in CPU caches (then the cost is the same) + +Also note that there is not even an increase of text size : +$ size net/core/skbuff.o.before net/core/skbuff.o + text data bss dec hex filename + 40711 1298 0 42009 a419 net/core/skbuff.o.before + 40711 1298 0 42009 a419 net/core/skbuff.o + +From: Eric Dumazet + +Signed-off-by: David S. Miller +Signed-off-by: Mao Wenan +Signed-off-by: Greg Kroah-Hartman + +--- + net/core/skbuff.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +--- a/net/core/skbuff.c ++++ b/net/core/skbuff.c +@@ -2388,12 +2388,15 @@ EXPORT_SYMBOL(skb_queue_purge); + */ + void skb_rbtree_purge(struct rb_root *root) + { +- struct sk_buff *skb, *next; ++ struct rb_node *p = rb_first(root); + +- rbtree_postorder_for_each_entry_safe(skb, next, root, rbnode) +- kfree_skb(skb); ++ while (p) { ++ struct sk_buff *skb = rb_entry(p, struct sk_buff, rbnode); + +- *root = RB_ROOT; ++ p = rb_next(p); ++ rb_erase(&skb->rbnode, root); ++ kfree_skb(skb); ++ } + } + + /** diff --git a/queue-4.4/series b/queue-4.4/series index 55602122ceb..f72c0e3aac8 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -100,3 +100,4 @@ scsi-megaraid-fix-out-of-bound-array-accesses.patch ocfs2-fix-panic-due-to-unrecovered-local-alloc.patch mm-page-writeback.c-don-t-break-integrity-writeback-.patch mm-proc-be-more-verbose-about-unstable-vma-flags-in-.patch +net-speed-up-skb_rbtree_purge.patch