From: Eric Dumazet Date: Mon, 8 Feb 2010 23:00:39 +0000 (-0800) Subject: dst: call cond_resched() in dst_gc_task() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=2fc1b5dd99f66d93ffc23fd8df82d384c1a354c8;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git dst: call cond_resched() in dst_gc_task() Kernel bugzilla #15239 On some workloads, it is quite possible to get a huge dst list to process in dst_gc_task(), and trigger soft lockup detection. Fix is to call cond_resched(), as we run in process context. Reported-by: Pawel Staszewski Tested-by: Pawel Staszewski Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller --- diff --git a/net/core/dst.c b/net/core/dst.c index 57bc4d5b8d08..cb1b3488b739 100644 --- a/net/core/dst.c +++ b/net/core/dst.c @@ -17,6 +17,7 @@ #include #include #include +#include #include @@ -79,6 +80,7 @@ loop: while ((dst = next) != NULL) { next = dst->next; prefetch(&next->next); + cond_resched(); if (likely(atomic_read(&dst->__refcnt))) { last->next = dst; last = dst;