Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756352AbbGGBXs (ORCPT ); Mon, 6 Jul 2015 21:23:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46987 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755353AbbGGBXl (ORCPT ); Mon, 6 Jul 2015 21:23:41 -0400 Date: Tue, 7 Jul 2015 03:22:10 +0200 From: Oleg Nesterov To: Ananth Mavinakayanahalli , Anton Arapov , David Long , Denys Vlasenko , "Frank Ch. Eigler" , Ingo Molnar , Jan Willeke , Jim Keniston , Mark Wielaard , Pratyush Anand , Srikar Dronamraju Cc: linux-kernel@vger.kernel.org Subject: [PATCH v2 00/11] uprobes: longjmp fixes Message-ID: <20150707012210.GA7466@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 Content-Length: 1839 Lines: 50 Sorry for delay, 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 series tries to make the first step to fix the problem, assuming that the probed functions use the same stack. TODO: sigaltstack() can obviously break this assumption. NOTE: I don't think it is possible to make this logic 100% correct, the user-space can do everything with its stack. For example, the application can do longjmp-like tricks to implement the coroutines, the kernel can do nothing in this case. The application (or debugger) should cooperate somehow to let the kernel know whats going on. v2, based on disccsussion with Srikar and Pratyush: 1-5: Unchanged, I preserved the acks from Srikar. 6-11: The only essential change is that we do not add the (ugly) arch_uretprobe, we just export return_instance to arch/. This means that we do not need to touch the !x86 code, and return_instance->stack can be initialized by the generic code. Srikar, I hope you can ack v2 too. 10/11: New. As Pratyush pointed out "bool on_call" is too limited. Plus v2 fixes the problem mentioned in "self nack" email, we must not do cleanup_return_instances() after prepare_uretprobe() checks chained && utask->return_instances != NULL. Oleg. arch/x86/kernel/uprobes.c | 9 ++ include/linux/uprobes.h | 17 ++++ kernel/events/uprobes.c | 184 +++++++++++++++++++++++++-------------------- 3 files changed, 128 insertions(+), 82 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/