diff mbox

arm64: fix padding computation in struct ucontext

Message ID mvmy5ebt3ol.fsf@hawking.suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Andreas Schwab Feb. 26, 2013, 4:55 p.m. UTC
The expression to compute the padding needed to fill the uc_sigmask field
to 1024 bits actually computes the padding needed for 1080 bits.
Fortunately, due to the 16-byte alignment of the following field
(uc_mcontext) the definition in glibc contains enough bytes of padding
after uc_sigmask so that the overall offsets and size match in both
definitions.

Signed-off-by: Andreas Schwab <schwab@suse.de>
---
 arch/arm64/include/asm/ucontext.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Catalin Marinas Feb. 27, 2013, 11:53 a.m. UTC | #1
On Tue, Feb 26, 2013 at 04:55:54PM +0000, Andreas Schwab wrote:
> The expression to compute the padding needed to fill the uc_sigmask field
> to 1024 bits actually computes the padding needed for 1080 bits.
> Fortunately, due to the 16-byte alignment of the following field
> (uc_mcontext) the definition in glibc contains enough bytes of padding
> after uc_sigmask so that the overall offsets and size match in both
> definitions.
> 
> Signed-off-by: Andreas Schwab <schwab@suse.de>

It looks like I messed the bits vs bytes. Luckily we have the 16-byte
alignment of the last element in ucontext. I'll send the patch upstream.

Thanks.
diff mbox

Patch

diff --git a/arch/arm64/include/asm/ucontext.h b/arch/arm64/include/asm/ucontext.h
index bde9607..42e04c8 100644
--- a/arch/arm64/include/asm/ucontext.h
+++ b/arch/arm64/include/asm/ucontext.h
@@ -22,7 +22,7 @@  struct ucontext {
 	stack_t		  uc_stack;
 	sigset_t	  uc_sigmask;
 	/* glibc uses a 1024-bit sigset_t */
-	__u8		  __unused[(1024 - sizeof(sigset_t)) / 8];
+	__u8		  __unused[1024 / 8 - sizeof(sigset_t)];
 	/* last for future expansion */
 	struct sigcontext uc_mcontext;
 };