Patchwork sparc32 broke

login
register
mail settings
Submitter David Miller
Date Jan. 10, 2009, 6:22 a.m.
Message ID <20090109.222204.61442525.davem@davemloft.net>
Download mbox | patch
Permalink /patch/17719/
State Superseded
Delegated to: David Miller
Headers show

Comments

David Miller - Jan. 10, 2009, 6:22 a.m.
From: Robert Reif <reif@earthlink.net>
Date: Fri, 09 Jan 2009 23:19:19 -0500

> I bisected it down to: ece93487c31607558f4b91f378fcee4b43956dbc
> sparc: unify signal.h

Sam, the first thing I notice is that _NSIG_BPW changed.

It's supposed to be 32 for sparc32 and 64 for sparc64.
But now it's unconditionally 64 in the unified header.
This also makes _NSIG_WORDS et al. wrong.

Robert, does this fix the bug for you?

sparc: Fix asm/signal.h for 32-bit.

Fix a 32-bit sparc regression reported by Robert Reif.

_NSIG_BPW needs to be 32 for 32-bit and 64 for 64-bit

Signed-off-by: David S. Miller <davem@davemloft.net>

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg - Jan. 10, 2009, 7:33 a.m.
On Fri, Jan 09, 2009 at 10:22:04PM -0800, David Miller wrote:
> From: Robert Reif <reif@earthlink.net>
> Date: Fri, 09 Jan 2009 23:19:19 -0500
> 
> > I bisected it down to: ece93487c31607558f4b91f378fcee4b43956dbc
> > sparc: unify signal.h
> 
> Sam, the first thing I notice is that _NSIG_BPW changed.
> 
> It's supposed to be 32 for sparc32 and 64 for sparc64.
> But now it's unconditionally 64 in the unified header.
> This also makes _NSIG_WORDS et al. wrong.

I cannot explain why this happened - it is obviously buggy.

    Sorry!

I will re-review the commit later today after I get some coffee.

Thanks for testing & bisect Robert!

> 
> diff --git a/arch/sparc/include/asm/signal.h b/arch/sparc/include/asm/signal.h
> index 41535e7..047fbd0 100644
> --- a/arch/sparc/include/asm/signal.h
> +++ b/arch/sparc/include/asm/signal.h
> @@ -84,7 +84,7 @@
>  
>  #define __OLD_NSIG	32
>  #define __NEW_NSIG      64
> -#define _NSIG_BPW       64
> +#define _NSIG_BPW       CONFIG_BITS

The real fix should look like this:

#ifdef __arch64__
#define _NSIG_BPW       64
#else
#define _NSIG_BPW       64
#endif

This is required because this header is exported to userspace
where we do not have access to CONFIG_* symbols.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Jan. 10, 2009, 7:35 a.m.
From: Sam Ravnborg <sam@ravnborg.org>
Date: Sat, 10 Jan 2009 08:33:21 +0100

> The real fix should look like this:
> 
> #ifdef __arch64__
> #define _NSIG_BPW       64
> #else
> #define _NSIG_BPW       64
> #endif
> 
> This is required because this header is exported to userspace
> where we do not have access to CONFIG_* symbols.

I assume you meant to use "32" in the #else branch :-)
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sam Ravnborg - Jan. 10, 2009, 8:16 a.m.
On Fri, Jan 09, 2009 at 11:35:24PM -0800, David Miller wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Sat, 10 Jan 2009 08:33:21 +0100
> 
> > The real fix should look like this:
> > 
> > #ifdef __arch64__
> > #define _NSIG_BPW       64
> > #else
> > #define _NSIG_BPW       64
> > #endif
> > 
> > This is required because this header is exported to userspace
> > where we do not have access to CONFIG_* symbols.
> 
> I assume you meant to use "32" in the #else branch :-)
Freudian attempt or similar...

I now did a re-review of the unified signal.h.
And I could not spot any other subtle differences.

	Sam
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Robert Reif - Jan. 10, 2009, 2:56 p.m.
David Miller wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Sat, 10 Jan 2009 08:33:21 +0100
>
>   
>> The real fix should look like this:
>>
>> #ifdef __arch64__
>> #define _NSIG_BPW       64
>> #else
>> #define _NSIG_BPW       64
>> #endif
>>
>> This is required because this header is exported to userspace
>> where we do not have access to CONFIG_* symbols.
>>     
>
> I assume you meant to use "32" in the #else branch :-)
>
>   
This fixed it (with the 32).
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/arch/sparc/include/asm/signal.h b/arch/sparc/include/asm/signal.h
index 41535e7..047fbd0 100644
--- a/arch/sparc/include/asm/signal.h
+++ b/arch/sparc/include/asm/signal.h
@@ -84,7 +84,7 @@ 
 
 #define __OLD_NSIG	32
 #define __NEW_NSIG      64
-#define _NSIG_BPW       64
+#define _NSIG_BPW       CONFIG_BITS
 #define _NSIG_WORDS     (__NEW_NSIG / _NSIG_BPW)
 
 #define SIGRTMIN       32