Re: [uml-devel] [PATCH] UML - Fix irqstack crash

From: Paolo Giarrusso
Date: Thu Sep 20 2007 - 12:02:33 EST


On mercoledì 19 settembre 2007, Andrew Morton wrote:
> On Tue, 18 Sep 2007 19:33:36 -0400

> Jeff Dike <jdike@xxxxxxxxxxx> wrote:
> > ===================================================================
> > --- linux-2.6.17.orig/arch/um/os-Linux/signal.c 2007-09-09
> > 11:15:37.000000000 -0400 +++
> > linux-2.6.17/arch/um/os-Linux/signal.c 2007-09-18 12:32:40.000000000
> > -0400 @@ -119,7 +119,7 @@ void (*handlers[_NSIG])(int sig, struct
> >
> > void handle_signal(int sig, struct sigcontext *sc)
> > {
> > - unsigned long pending = 0;
> > + unsigned long pending = 1 << sig;

> You want 1UL there.

Yes, indeed - or sign extension on 64bit machines would set to 1 the whole
high-word.

But using long for that mask makes no difference; either int or long long (or
better, either u32 or u64) should be used, given that the used signal range
is the same on 32 and 64bit machines, it should be u32 for normal signals or
u64 if RT-signals are also allowed.
--
"Doh!" (cit.), I've made another mistake!
Paolo Giarrusso, aka Blaisorblade

Attachment: signature.asc
Description: This is a digitally signed message part.