On Thu, 1 Oct 2015, Eric Dumazet wrote: > On Thu, Oct 1, 2015 at 4:43 AM, Holger Hoffstätte > <holger.hoffstaette@xxxxxxxxxxxxxx> wrote: > > On 10/01/15 13:29, Eric Dumazet wrote: > > >> commit 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af > >> Author: Eric Dumazet <edumazet@xxxxxxxxxx> > >> Date: Thu Aug 13 15:44:51 2015 -0700 > >> > >> inet: fix potential deadlock in reqsk_queue_unlink() > >> > >> When replacing del_timer() with del_timer_sync(), I introduced > >> a deadlock condition : > >> > >> reqsk_queue_unlink() is called from inet_csk_reqsk_queue_drop() > >> > >> inet_csk_reqsk_queue_drop() can be called from many contexts, > >> one being the timer handler itself (reqsk_timer_handler()). > >> > >> In this case, del_timer_sync() loops forever. > >> > >> Simple fix is to test if timer is pending. > >> > >> Fixes: 2235f2ac75fd ("inet: fix races with reqsk timers") > >> Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx> > >> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> > > > > Whohoo! It applies/builds cleanly to 4.1.10-rc1 and is running as > > we speak. Let's hope that this fixes the lockups. > > > > It definitely should help ! What makes sure, that the timer cannot be readded while that timer callback is running? Thanks, tglx