Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758719AbXE3VBs (ORCPT ); Wed, 30 May 2007 17:01:48 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755405AbXE3VBk (ORCPT ); Wed, 30 May 2007 17:01:40 -0400 Received: from mail.screens.ru ([213.234.233.54]:42936 "EHLO mail.screens.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754931AbXE3VBk (ORCPT ); Wed, 30 May 2007 17:01:40 -0400 Date: Thu, 31 May 2007 01:01:37 +0400 From: Oleg Nesterov To: Jason Wessel Cc: Stephen Hemminger , "David S. Miller" , Andrew Morton , linux-kernel@vger.kernel.org Subject: Re: + fix-soft-lockup-when-removing-netconsole-module.patch added to -mm tree Message-ID: <20070530210137.GA225@tv-sign.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 991 Lines: 31 Jason Wessel wrote: > > The netpoll_cleanup handler can hang the kernel if there is no work in the > work queue because a call to cancel_rearming_delayed_work() with no work > goes into an infinite loop. This should not be true any longer, cancel_rearming_delayed_work() should work correctly in any case. Could you please clarify? > @@ -771,30 +771,32 @@ void netpoll_cleanup(struct netpoll *np) > > [...snip...] > > + if (atomic_dec_and_test(&npinfo->refcnt)) { > + skb_queue_purge(&npinfo->arp_tx); > + skb_queue_purge(&npinfo->txq); > + if (delayed_work_pending(&npinfo->tx_work)) { > cancel_rearming_delayed_work(&npinfo->tx_work); > flush_scheduled_work(); But this "if (delayed_work_pending())" is racy anyway? Oleg. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/