From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754135AbbGSUZC (ORCPT ); Sun, 19 Jul 2015 16:25:02 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42368 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753530AbbGSUZA (ORCPT ); Sun, 19 Jul 2015 16:25:00 -0400 Date: Sun, 19 Jul 2015 22:23:12 +0200 From: Oleg Nesterov To: Ingo Molnar Cc: Andy Lutomirski , Pratyush Anand , Srikar Dronamraju , linux-kernel@vger.kernel.org Subject: [GIT PULL] uprobes: longjmp / special-mapping fixes Message-ID: <20150719202312.GA32378@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Ingo, please pull from git://git.kernel.org/pub/scm/linux/kernel/git/oleg/misc uprobes/core Based on tip:perf/core Currently ret-probes can't work (the application will likely crash) if the probed function does not return, and this is even documented in handle_trampoline(). This tries to make the first step to fix the problem, assuming that the probed functions use the same stack. Also, xol_add_vma() doesn't use install_special_mapping() correctly, and we can name the xol vma which currently looks like anon mapping. Oleg Nesterov (14): uprobes: Introduce get_uprobe() uprobes: Introduce free_ret_instance() uprobes: Send SIGILL if handle_trampoline() fails uprobes: Change prepare_uretprobe() to use uprobe_warn() uprobes: Change handle_trampoline() to find the next chain beforehand uprobes: Export struct return_instance, introduce arch_uretprobe_is_alive() uprobes/x86: Reimplement arch_uretprobe_is_alive() uprobes: Change handle_trampoline() to flush the frames invalidated by longjmp() uprobes: Change prepare_uretprobe() to (try to) flush the dead frames uprobes: Add the "enum rp_check ctx" arg to arch_uretprobe_is_alive() uprobes/x86: Make arch_uretprobe_is_alive(RP_CHECK_CALL) more clever uprobes: fix the usage of install_special_mapping() uprobes: use vm_special_mapping to name the xol vma uprobes: fix the waitqueue_active() check in xol_free_insn_slot() arch/x86/kernel/uprobes.c | 9 ++ include/linux/uprobes.h | 17 ++++ kernel/events/uprobes.c | 228 ++++++++++++++++++++++++++------------------- 3 files changed, 156 insertions(+), 98 deletions(-)