Linux MIPS Architecture development
 help / color / mirror / Atom feed
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 */
>
>

  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