Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757428AbXIYPJT (ORCPT ); Tue, 25 Sep 2007 11:09:19 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753518AbXIYPJK (ORCPT ); Tue, 25 Sep 2007 11:09:10 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:42297 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1753161AbXIYPJI (ORCPT ); Tue, 25 Sep 2007 11:09:08 -0400 Date: Tue, 25 Sep 2007 11:09:07 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Tejun Heo cc: Jonathan Corbet , , , , , , Subject: Re: [PATCH 1/4] module: implement module_inhibit_unload() In-Reply-To: <46F91B72.1080109@gmail.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1235 Lines: 28 On Tue, 25 Sep 2007, Tejun Heo wrote: > Alan Stern wrote: > >> The unloading can proceed once module_unload_inhibit_cnt reaches zero. > >> An unloading thread only has to care about inhibition put in effect > >> before unloading has started, so there's no need to check again. > > > > You haven't fully answered Jon's question. Suppose > > module_unload_inhibit_cnt is nonzero, so the task adds itself to the > > module_unload_wait queue, changes to TASK_UNINTERRUPTIBLE, and calls > > schedule. There's nothing to prevent somebody else from waking the > > task back up before the original inhibition has been lifted. > > Hmmm... I might be missing something here. Who else can wake up a > thread in uninterruptible sleep? In principle, anything can. There has never been any guarantee in the kernel that a task sleeping on a waitqueue will remain asleep until the waitqueue is signalled. That's part of the reason why things like __wait_event() are coded as loops. Alan Stern - 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/