public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Shaohua Li <shaohua.li@intel.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Sanjoy Mahajan <sanjoy@mrao.cam.ac.uk>,
	linux-kernel@vger.kernel.org, acpi-devel@lists.sourceforge.net
Subject: Re: [ACPI] S3 and sigwait (was Re: 2.6.13-rc3: swsusp works (TP 600X))
Date: Tue, 02 Aug 2005 13:16:17 +0800	[thread overview]
Message-ID: <1122959777.6864.4.camel@linux-hp.sh.intel.com> (raw)
In-Reply-To: <20050801070926.GI27580@elf.ucw.cz>

On Mon, 2005-08-01 at 09:09 +0200, Pavel Machek wrote:
> Hi!
> 
> > > If you think it is a linux bug, can you produce small test case doing 
> > > just the sigwait, and post it on l-k with big title "sigwait() breaks 
> > > when straced, and on suspend"?
> > > 
> > > That way it is going to get some attetion, and you'll get either 
> > > documentation or kernel fixed. 
> > Looks like a linux bug to me. The refrigerator fake signal waked the
> > task up and without restart for the sigwait case. How about below
> > patch:
> 
> Is there chance to fix strace case, too? sigwait() is broken in more
> than one way it seems...
This patch should fix two cases. Can anybody familiar with signal
handling look at it?
The posix standard said for sigtimedwait:
"If no signal in set is pending at the time of the call, the calling
thread shall be suspended until one or more signals in set become
pending or until it is interrupted by an unblocked, caught signal."
Systemcall might be restarted if it's not interrupted by a caught
signal.

Thanks,
Shaohua



---

 linux-2.6.13-rc4-root/kernel/signal.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff -puN kernel/signal.c~sigwait-suspend-resume kernel/signal.c
--- linux-2.6.13-rc4/kernel/signal.c~sigwait-suspend-resume	2005-08-02 10:33:16.798179984 +0800
+++ linux-2.6.13-rc4-root/kernel/signal.c	2005-08-02 12:49:06.688208376 +0800
@@ -2231,7 +2231,8 @@ sys_rt_sigtimedwait(const sigset_t __use
 			current->state = TASK_INTERRUPTIBLE;
 			timeout = schedule_timeout(timeout);
 
-			try_to_freeze();
+			if (freezing(current))
+				return -ERESTARTNOINTR;
 			spin_lock_irq(&current->sighand->siglock);
 			sig = dequeue_signal(current, &these, &info);
 			current->blocked = current->real_blocked;
@@ -2250,7 +2251,7 @@ sys_rt_sigtimedwait(const sigset_t __use
 	} else {
 		ret = -EAGAIN;
 		if (timeout)
-			ret = -EINTR;
+			ret = -ERESTARTNOHAND;
 	}
 
 	return ret;
_




  reply	other threads:[~2005-08-02  5:18 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-23  0:19 2.6.13-rc3: swsusp works (TP 600X) Sanjoy Mahajan
2005-07-23  0:35 ` Pavel Machek
2005-07-28 20:17   ` Sanjoy Mahajan
2005-07-28 21:36     ` Pavel Machek
2005-07-28 21:55       ` Rafael J. Wysocki
2005-07-29  3:48         ` Sanjoy Mahajan
2005-07-29  4:33         ` Sanjoy Mahajan
2005-07-30  0:50   ` S3 and sigwait (was Re: 2.6.13-rc3: swsusp works (TP 600X)) Sanjoy Mahajan
2005-07-30 10:30     ` [ACPI] " Pavel Machek
2005-08-01  6:51       ` Shaohua Li
2005-08-01  7:09         ` Pavel Machek
2005-08-02  5:16           ` Shaohua Li [this message]
  -- strict thread matches above, loose matches on Subject: below --
2005-08-01 12:36 Li, Shaohua

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1122959777.6864.4.camel@linux-hp.sh.intel.com \
    --to=shaohua.li@intel.com \
    --cc=acpi-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=sanjoy@mrao.cam.ac.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox