public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Jeff Dike <jdike@addtoit.com>
Cc: blaisorblade_spam@yahoo.it, bstroesser@fujitsu-siemens.com,
	linux-arch@vger.kernel.org
Subject: Re: [PATCH 9/11] - UML - fix signal mask on delivery error
Date: Fri, 12 Nov 2004 16:34:42 -0800	[thread overview]
Message-ID: <20041112163442.45fc966f.akpm@osdl.org> (raw)
In-Reply-To: <200411130201.iAD210pT005889@ccure.user-mode-linux.org>


(removed linux-kernel, added linux-arch)

Jeff Dike <jdike@addtoit.com> wrote:
>
> >From Bodo Stroesser - If the user stack limit is reached or the
> signal stack assigned with sigaltstack() is invalid when a user signal
> handler with SA_ONSTACK has to be started, the signal mask of the
> interrupted user program is modified. This happens because the mask,
> that should be used with the handler only, is written to
> "current->blocked" even if the handler could not be started. But
> without a handler, no rewrite of the original mask at sys_sigreturn
> will be done. A slightly different case is sys_sigsuspend(), where the
> mask is already modified when kern_do_signal() is started. "*oldset" and
> "current->blocked" are not equal here and thus current->blocked has to
> be set to *oldset, if an error occurs in handle_signal().
> For both cases I've written small tests, and with the patch the result
> is OK.
> This issue is relevant for other architectures too (e.g. i386, I've
> seen).

Could you send one of the test apps?  This is something which the arch
maintainers might want to look into fixing, thanks.


> Signed-off-by: Jeff Dike <jdike@addtoit.com>
> 
> Index: 2.6.9/arch/um/kernel/signal_kern.c
> ===================================================================
> --- 2.6.9.orig/arch/um/kernel/signal_kern.c	2004-11-12 16:24:18.000000000 -0500
> +++ 2.6.9/arch/um/kernel/signal_kern.c	2004-11-12 18:05:26.000000000 -0500
> @@ -79,7 +79,14 @@
>  	else
>  		err = setup_signal_stack_sc(sp, signr, ka, regs, oldset);
>  
> -	if (!err && !(ka->sa.sa_flags & SA_NODEFER)) {
> +	if(err){
> +		spin_lock_irq(&current->sighand->siglock);
> +		current->blocked = *oldset;
> +		recalc_sigpending();
> +		spin_unlock_irq(&current->sighand->siglock);
> +		force_sigsegv(signr, current);
> +	}
> +	else if(!(ka->sa.sa_flags & SA_NODEFER)){
>  		spin_lock_irq(&current->sighand->siglock);
>  		sigorsets(&current->blocked, &current->blocked, 
>  			  &ka->sa.sa_mask);
> @@ -87,9 +94,6 @@
>  		recalc_sigpending();
>  		spin_unlock_irq(&current->sighand->siglock);
>  	}
> -
> -	if(err)
> -		force_sigsegv(signr, current);
>  }
>  
>  static int kern_do_signal(struct pt_regs *regs, sigset_t *oldset)

       reply	other threads:[~2004-11-13  0:30 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200411130201.iAD210pT005889@ccure.user-mode-linux.org>
2004-11-13  0:34 ` Andrew Morton [this message]
2004-11-14 22:13   ` [PATCH 9/11] - UML - fix signal mask on delivery error Jeff Dike
2004-11-15  8:35     ` David Woodhouse
2004-11-22 15:30       ` David Woodhouse
2004-11-15 11:40     ` Bodo Stroesser
2004-11-15 17:18       ` Jeff Dike
2004-11-16  9:39         ` Bodo Stroesser
2004-11-30 14:59     ` David Woodhouse
2004-12-02  9:55       ` Bodo Stroesser
2004-12-02 11:25         ` Paul Mackerras
2004-12-02 11:40           ` Bodo Stroesser

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=20041112163442.45fc966f.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=blaisorblade_spam@yahoo.it \
    --cc=bstroesser@fujitsu-siemens.com \
    --cc=jdike@addtoit.com \
    --cc=linux-arch@vger.kernel.org \
    /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