From: David Daney <ddaney.cavm@gmail.com>
To: Petr Malat <oss@malat.biz>
Cc: linux-mips@linux-mips.org
Subject: Re: [PATCH] MIPS: Provide correct siginfo_t.si_stime
Date: Fri, 12 Dec 2014 09:11:36 -0800 [thread overview]
Message-ID: <548B21C8.7020409@gmail.com> (raw)
In-Reply-To: <20141212142800.GA4176@bordel.klfree.net>
On 12/12/2014 06:28 AM, Petr Malat wrote:
> From: Petr Malat <oss@malat.biz>
>
> Provide correct siginfo_t.si_stime on MIPS64
>
> Bug description:
> MIPS version of copy_siginfo() is not aware of alignment on platforms with
> 64-bit long integers, which leads to an incorrect si_stime passed to signal
> handlers, because the last element (si_stime) of _sifields._sigchld is not
> copied. If _MIPS_SZLONG is 64, then the _sifields starts at the offset of
> 4 * sizeof(int).
>
> Patch description:
> Use the generic copy_siginfo, which doesn't have this problem.
>
Please state how this patch effects binary compatibility with previous
releases of the kernel.
Thanks,
David Daney
> Signed-off-by: Petr Malat <oss@malat.biz>
> ---
> Please put me on CC, I'm not signed into the mailing list.
>
> diff -Naurp linux-3.18/arch/mips/include/asm/siginfo.h linux-3.18-new/arch/mips/include/asm/siginfo.h
> --- linux-3.18/arch/mips/include/asm/siginfo.h 2014-12-07 23:21:05.000000000 +0100
> +++ linux-3.18-new/arch/mips/include/asm/siginfo.h 1970-01-01 01:00:00.000000000 +0100
> @@ -1,29 +0,0 @@
> -/*
> - * This file is subject to the terms and conditions of the GNU General Public
> - * License. See the file "COPYING" in the main directory of this archive
> - * for more details.
> - *
> - * Copyright (C) 1998, 1999, 2001, 2003 Ralf Baechle
> - * Copyright (C) 2000, 2001 Silicon Graphics, Inc.
> - */
> -#ifndef _ASM_SIGINFO_H
> -#define _ASM_SIGINFO_H
> -
> -#include <uapi/asm/siginfo.h>
> -
> -
> -/*
> - * Duplicated here because of <asm-generic/siginfo.h> braindamage ...
> - */
> -#include <linux/string.h>
> -
> -static inline void copy_siginfo(struct siginfo *to, struct siginfo *from)
> -{
> - if (from->si_code < 0)
> - memcpy(to, from, sizeof(*to));
> - else
> - /* _sigchld is currently the largest know union member */
> - memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld));
> -}
> -
> -#endif /* _ASM_SIGINFO_H */
> diff -Naurp linux-3.18/arch/mips/include/uapi/asm/siginfo.h linux-3.18-new/arch/mips/include/uapi/asm/siginfo.h
> --- linux-3.18/arch/mips/include/uapi/asm/siginfo.h 2014-12-07 23:21:05.000000000 +0100
> +++ linux-3.18-new/arch/mips/include/uapi/asm/siginfo.h 2014-12-11 17:11:36.698056810 +0100
> @@ -16,13 +16,6 @@
> #define HAVE_ARCH_SIGINFO_T
>
> /*
> - * We duplicate the generic versions - <asm-generic/siginfo.h> is just borked
> - * by design ...
> - */
> -#define HAVE_ARCH_COPY_SIGINFO
> -struct siginfo;
> -
> -/*
> * Careful to keep union _sifields from shifting ...
> */
> #if _MIPS_SZLONG == 32
> @@ -35,8 +28,9 @@ struct siginfo;
>
> #define __ARCH_SIGSYS
>
> -#include <asm-generic/siginfo.h>
> +#include <uapi/asm-generic/siginfo.h>
>
> +/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */
> typedef struct siginfo {
> int si_signo;
> int si_code;
> @@ -120,5 +114,6 @@ typedef struct siginfo {
> #define SI_TIMER __SI_CODE(__SI_TIMER, -3) /* sent by timer expiration */
> #define SI_MESGQ __SI_CODE(__SI_MESGQ, -4) /* sent by real time mesq state change */
>
> +#include <asm-generic/siginfo.h>
>
> #endif /* _UAPI_ASM_SIGINFO_H */
>
>
next prev parent reply other threads:[~2014-12-12 17:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 14:28 [PATCH] MIPS: Provide correct siginfo_t.si_stime Petr Malat
2014-12-12 17:11 ` David Daney [this message]
2014-12-14 20:36 ` Petr Malat
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=548B21C8.7020409@gmail.com \
--to=ddaney.cavm@gmail.com \
--cc=linux-mips@linux-mips.org \
--cc=oss@malat.biz \
/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