All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@elte.hu>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC v2 -tip 3/3] x86: ia32_signal: use {get|put}_user_try and catch
Date: Sat, 24 Jan 2009 10:36:38 +0300	[thread overview]
Message-ID: <20090124073638.GA8752@localhost> (raw)
In-Reply-To: <497A57CE.3080602@ct.jp.nec.com>

[Hiroshi Shimamoto - Fri, Jan 23, 2009 at 03:50:38PM -0800]
| From: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
| 
| Impact: use new framework
| 
| Use {get|put}_user_try, catch, and _ex in arch/x86/ia32/ia32_signal.c.
| 
| Note: this patch contains "WARNING: line over 80 characters", because when
| introducing new block I insert an indent to avoid mistakes by edit.
| 
| Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
| ---
|  arch/x86/ia32/ia32_signal.c |  365 +++++++++++++++++++++++--------------------
|  1 files changed, 195 insertions(+), 170 deletions(-)
| 
| diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
| index 9dabd00..dd77ac0 100644
| --- a/arch/x86/ia32/ia32_signal.c
| +++ b/arch/x86/ia32/ia32_signal.c
| @@ -46,78 +46,83 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
|
... 
| +	put_user_try {
| +		/* If you change siginfo_t structure, please make sure that
| +		   this code is fixed accordingly.
| +		   It should never copy any pad contained in the structure
| +		   to avoid security leaks, but must copy the generic
| +		   3 ints plus the relevant union member.  */
| +		put_user_ex(from->si_signo, &to->si_signo);
| +		put_user_ex(from->si_errno, &to->si_errno);
| +		put_user_ex((short)from->si_code, &to->si_code);
| +
| +		if (from->si_code < 0) {
| +			put_user_ex(from->si_pid, &to->si_pid);
| +			put_user_ex(from->si_uid, &to->si_uid);
| +			put_user_ex(ptr_to_compat(from->si_ptr), &to->si_ptr);
| +		} else {
| +			/*
| +			 * First 32bits of unions are always present:
| +			 * si_pid === si_band === si_tid === si_addr(LS half)
| +			 */
| +			put_user_ex(from->_sifields._pad[0],
| +					  &to->_sifields._pad[0]);
| +			switch (from->si_code >> 16) {
| +			case __SI_FAULT >> 16:
| +				break;
| +			case __SI_CHLD >> 16:
| +				put_user_ex(from->si_utime, &to->si_utime);
| +				put_user_ex(from->si_stime, &to->si_stime);
| +				put_user_ex(from->si_status, &to->si_status);
| +				/* FALL THROUGH */
| +			default:

Hi Hiroshi,

may I ask why we use default here?

| +			case __SI_KILL >> 16:
| +				put_user_ex(from->si_uid, &to->si_uid);
| +				break;
| +			case __SI_POLL >> 16:
| +				put_user_ex(from->si_fd, &to->si_fd);
| +				break;
| +			case __SI_TIMER >> 16:
| +				put_user_ex(from->si_overrun, &to->si_overrun);
| +				put_user_ex(ptr_to_compat(from->si_ptr),
| +					    &to->si_ptr);
| +				break;
| +				 /* This is not generated by the kernel as of now.  */
| +			case __SI_RT >> 16:
| +			case __SI_MESGQ >> 16:
| +				put_user_ex(from->si_uid, &to->si_uid);
| +				put_user_ex(from->si_int, &to->si_int);
| +				break;
| +			}
|  		}
| -	}
| +	} put_user_catch(err);
| +
|  	return err;
|  }
|  
...
 
		- Cyrill -

  reply	other threads:[~2009-01-24  7:36 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-06  3:06 [RFC -tip 0/4] x86: reduce fixup of uaccess Hiroshi Shimamoto
2009-01-06  3:08 ` [RFC -tip 1/4] x86: uaccess: rename __put_user_u64() to __put_user_asm_u64() Hiroshi Shimamoto
2009-01-06  3:08 ` [RFC -tip 2/4] x86: uaccess: introduce new __{get|put}_user exception handling framework Hiroshi Shimamoto
2009-01-06  3:09 ` [RFC -tip 3/4] x86: signal: use __{get|put}_user_ex " Hiroshi Shimamoto
2009-01-06  3:10 ` [RFC -tip 4/4] x86: ia32_signal: " Hiroshi Shimamoto
2009-01-06 10:09 ` [RFC -tip 0/4] x86: reduce fixup of uaccess Ingo Molnar
2009-01-07  9:33 ` H. Peter Anvin
2009-01-08  1:43   ` Hiroshi Shimamoto
2009-01-23 23:48   ` [RFC v2 -tip 0/3] " Hiroshi Shimamoto
2009-01-23 23:49     ` [RFC v2 -tip 1/3] x86: uaccess: introduce try and catch framework Hiroshi Shimamoto
2009-01-23 23:50     ` [RFC v2 -tip 2/3] x86: signal: use {get|put}_user_try and catch Hiroshi Shimamoto
2009-01-23 23:50     ` [RFC v2 -tip 3/3] x86: ia32_signal: " Hiroshi Shimamoto
2009-01-24  7:36       ` Cyrill Gorcunov [this message]
2009-01-26 18:31         ` Hiroshi Shimamoto
2009-01-26 18:56           ` Cyrill Gorcunov
2009-01-24  0:51     ` [RFC v2 -tip 0/3] x86: reduce fixup of uaccess H. Peter Anvin
2009-01-24  4:39     ` H. Peter Anvin

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=20090124073638.GA8752@localhost \
    --to=gorcunov@gmail.com \
    --cc=h-shimamoto@ct.jp.nec.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.