Message ID | mvmy5ebt3ol.fsf@hawking.suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 --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; };
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(-)