All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Amnon Shiloh <u3557@miso.sublimeip.com>,
	Denys Vlasenko <dvlasenk@redhat.com>,
	Pedro Alves <palves@redhat.com>,
	Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>,
	Pavel Emelyanov <xemul@parallels.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-kernel@vger.kernel.org
Subject: PTRACE_SYSCALL && vsyscall (Was: arch_check_bp_in_kernelspace: fix the range check)
Date: Sun, 2 Dec 2012 20:30:58 +0100	[thread overview]
Message-ID: <20121202193058.GA4264@redhat.com> (raw)
In-Reply-To: <20121125234834.DAC34592076@miso.sublimeip.com>

Amnon, sorry for delay...

On 11/26, Amnon Shiloh wrote:
>
> > Why do you need to _prevent_, say, sys_gettimeofday()? Why we can't
> > change emulate_vsyscall() to respect PTRACE_SYSCALL and report
> > TRAP_VSYSCALL or PTRACE_EVENT_VSYSCALL as I tried to suggest in
> > http://marc.info/?l=linux-kernel&m=135343635523715 ?
> >
> > Oleg.
> >
>
> For my own application, I would be happy with this.

OK, good.

> But I suspect it might break current versions of "strace",
> ...
> I think it COULD work, but not based on PTRACE_SYSCALL
> (or PTRACE_SYSEMU) alone.  A new ptrace option will be needed, saying:
> "Yes, I am aware of TRAP_VSYSCALL and I know how to handle it."

Yes, that is why I said this needs the new option.

However. Of course it would be nice to avoid the new option. IMO it
would be better to do nothing ;) vsyscall is deprecated, and EMULATE
is x86-specific.


May be we could simply do something like the patch below? (Just in
case, this hack is only for illustration, it is not complete).

If the tracer does PTRACE_SYSCALL the tracee reports syscall exit
_after_ gettimeofday/etc. The tracer can look at regs->orig_ax == -1
and detect that this is not syscall but vsyscall, it can look at
regs->ip then (not with the patch below).

Denys, Jan, Pedro. Do you think this change can break/confuse
gdb/strace ?


> While for my own application, just fixing the range-check in
> arch_check_bp_in_kernelspace will do,

You forgot again that EMULATE does not execute the code in the
vsyscall page.

Oleg.

--- a/arch/x86/kernel/vsyscall_64.c
+++ b/arch/x86/kernel/vsyscall_64.c
@@ -186,6 +186,8 @@ static bool write_ok_or_segv(unsigned long ptr, size_t size)
 	}
 }
 
+#include <linux/tracehook.h>
+
 bool emulate_vsyscall(struct pt_regs *regs, unsigned long address)
 {
 	struct task_struct *tsk;
@@ -312,6 +314,8 @@ do_ret:
 	regs->ip = caller;
 	regs->sp += 8;
 done:
+	if (test_thread_flag(TIF_SYSCALL_TRACE))
+		ptrace_report_syscall(regs);
 	return true;
 
 sigsegv:


  reply	other threads:[~2012-12-02 19:31 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-09 18:29 [PATCH] arch_check_bp_in_kernelspace: fix the range check Oleg Nesterov
2012-11-09 18:30 ` Oleg Nesterov
2012-11-19 17:47   ` Oleg Nesterov
2012-11-19 18:25     ` Steven Rostedt
2012-11-20 10:33       ` u3557
2012-11-20 15:48       ` Oleg Nesterov
2012-11-20 15:55         ` Steven Rostedt
2012-11-20 18:32         ` Oleg Nesterov
2012-11-20 23:16           ` u3557
2012-11-21 14:16             ` Oleg Nesterov
2012-11-21 17:30               ` Amnon Shiloh
2012-11-22 16:12                 ` vdso && cr (Was: arch_check_bp_in_kernelspace: fix the range check) Oleg Nesterov
2012-11-22 20:57                   ` Pavel Emelyanov
2012-11-23  0:20                     ` vdso && cr (Was: arch_check_bp_in_kernelspace: fix the range Amnon Shiloh
2012-11-23 17:45                       ` Oleg Nesterov
2012-11-24 12:47                         ` Amnon Shiloh
2012-11-23 17:42                     ` vdso && cr (Was: arch_check_bp_in_kernelspace: fix the range check) Oleg Nesterov
2012-11-23  9:14                   ` arch_check_bp_in_kernelspace: fix the range check Amnon Shiloh
2012-11-23 16:33                     ` Oleg Nesterov
2012-11-23 17:05                       ` Oleg Nesterov
2012-11-24 14:14                         ` Amnon Shiloh
2012-11-24 13:45                       ` Amnon Shiloh
2012-11-25 22:55                         ` Oleg Nesterov
2012-11-25 23:48                           ` Amnon Shiloh
2012-12-02 19:30                             ` Oleg Nesterov [this message]
2012-12-02 23:54                               ` PTRACE_SYSCALL && vsyscall (Was: arch_check_bp_in_kernelspace: fix the range check) u3557
2012-12-04 17:59                                 ` Oleg Nesterov
2012-12-04 22:44                                   ` u3557
2013-01-08 17:08                                   ` Pedro Alves
2013-01-09 17:52                                     ` Oleg Nesterov
2013-01-10  6:54                                       ` u3557
2013-01-12 18:12                                         ` Oleg Nesterov
2013-01-14  2:31                                           ` u3557
2013-01-14 16:01                                             ` Oleg Nesterov
2013-02-18  1:39                                               ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-18  5:44                                                 ` prctl(PR_SET_MM) Randy Dunlap
2013-02-18 15:21                                                 ` prctl(PR_SET_MM) Steven Rostedt
2013-02-18 16:33                                                   ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-18 19:49                                                     ` prctl(PR_SET_MM) Steven Rostedt
2013-02-19  6:25                                                       ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-20  8:39                                                         ` prctl(PR_SET_MM) Cyrill Gorcunov
2013-02-20  9:38                                                           ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-20 10:51                                                             ` prctl(PR_SET_MM) Cyrill Gorcunov
2013-02-20 11:16                                                               ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-21  7:46                                                               ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-21  8:00                                                                 ` prctl(PR_SET_MM) Cyrill Gorcunov
2013-02-21  8:03                                                                   ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-21  8:09                                                                     ` prctl(PR_SET_MM) Cyrill Gorcunov
2013-02-21 22:18                                                                   ` prctl(PR_SET_MM) Andrew Morton
2013-02-21 22:42                                                                     ` prctl(PR_SET_MM) Cyrill Gorcunov
2013-02-22  1:18                                                                     ` prctl(PR_SET_MM) Amnon Shiloh
2013-02-22 14:23                                                         ` prctl(PR_SET_MM) Denys Vlasenko
2012-12-05  9:29                               ` PTRACE_SYSCALL && vsyscall (Was: arch_check_bp_in_kernelspace: fix the range check) Jan Kratochvil
2012-12-05 13:14                                 ` u3557
2012-11-26  9:44                   ` vdso && cr " Cyrill Gorcunov
2012-11-26 12:27                     ` Andrey Wagin
2012-11-26 12:55                       ` Amnon Shiloh
2012-11-26 14:18                         ` Cyrill Gorcunov
2012-11-26 14:26                           ` vdso && cr (Was: arch_check_bp_in_kernelspace: fix the range Amnon Shiloh
2012-11-26 14:41                             ` vdso && cr Cyrill Gorcunov

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=20121202193058.GA4264@redhat.com \
    --to=oleg@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=dvlasenk@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=gorcunov@openvz.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=palves@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=u3557@miso.sublimeip.com \
    --cc=xemul@parallels.com \
    /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.