From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleg Nesterov Subject: Re: [RFC PATCH] freezer: revert 27920651fe "PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too" Date: Tue, 1 Nov 2011 19:13:29 +0100 Message-ID: <20111101181329.GA6739@redhat.com> References: <20111031221743.GA18855@google.com> <201111010024.16659.rjw@sisk.pl> <20111031233059.GI18855@google.com> <20111101005505.GO18855@google.com> <20111101041337.39077229@tlielax.poochiereds.net> <20111101065958.50addab5@tlielax.poochiereds.net> <20111101163059.GR18855@google.com> <20111101175953.GB5358@redhat.com> <20111101180601.GV18855@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jeff Layton , "Rafael J. Wysocki" , Steve French , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "J. Bruce Fields" , Neil Brown , trond.myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org, linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Tejun Heo Return-path: Content-Disposition: inline In-Reply-To: <20111101180601.GV18855-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> Sender: linux-nfs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-cifs.vger.kernel.org On 11/01, Tejun Heo wrote: > > Yeah yeah, Trond already pointed it out. I forgot about the > sigpending special case in schedule(), which I think is rather odd, I disagree with "rather odd" ;) We have a lot of examples of current->state = TASK_INTERRUPTIBLE; ... if (signal_pending()) break; schedule(); Without that special case in schedule() the code above becomes racy. Just consider __wait_event_interruptible(). > Any better ideas? Well. As a simple (probably temporary) fix, I'd suggest #define wait_event_freezekillable(wq, condition) { freezer_do_not_count(); __retval = wait_event_killable(condition); freezer_count(); __retval; } Do you think it can work? Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: linux-nfs-owner@vger.kernel.org Received: from mx1.redhat.com ([209.132.183.28]:15508 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755824Ab1KASRz (ORCPT ); Tue, 1 Nov 2011 14:17:55 -0400 Date: Tue, 1 Nov 2011 19:13:29 +0100 From: Oleg Nesterov To: Tejun Heo Cc: Jeff Layton , "Rafael J. Wysocki" , Steve French , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, linux-cifs@vger.kernel.org, "J. Bruce Fields" , Neil Brown , trond.myklebust@netapp.com, linux-nfs@vger.kernel.org Subject: Re: [RFC PATCH] freezer: revert 27920651fe "PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too" Message-ID: <20111101181329.GA6739@redhat.com> References: <20111031221743.GA18855@google.com> <201111010024.16659.rjw@sisk.pl> <20111031233059.GI18855@google.com> <20111101005505.GO18855@google.com> <20111101041337.39077229@tlielax.poochiereds.net> <20111101065958.50addab5@tlielax.poochiereds.net> <20111101163059.GR18855@google.com> <20111101175953.GB5358@redhat.com> <20111101180601.GV18855@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <20111101180601.GV18855@google.com> Sender: linux-nfs-owner@vger.kernel.org List-ID: On 11/01, Tejun Heo wrote: > > Yeah yeah, Trond already pointed it out. I forgot about the > sigpending special case in schedule(), which I think is rather odd, I disagree with "rather odd" ;) We have a lot of examples of current->state = TASK_INTERRUPTIBLE; ... if (signal_pending()) break; schedule(); Without that special case in schedule() the code above becomes racy. Just consider __wait_event_interruptible(). > Any better ideas? Well. As a simple (probably temporary) fix, I'd suggest #define wait_event_freezekillable(wq, condition) { freezer_do_not_count(); __retval = wait_event_killable(condition); freezer_count(); __retval; } Do you think it can work? Oleg.