Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp4275179pxb; Tue, 2 Mar 2021 10:48:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJwIzIvbXW4Axjpu+adtWBM63haMGK/Z70u2S4Jkbbgf6shi5R5g+qAAQANNNPUbqa4MXwiG X-Received: by 2002:a17:906:95c3:: with SMTP id n3mr21701313ejy.269.1614710923809; Tue, 02 Mar 2021 10:48:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614710923; cv=none; d=google.com; s=arc-20160816; b=Xn6BH/PRoFdt5LlzioorZut4BMXBjb8xYO4SeYjs6++Ux0YqDSOnBSaXhvRmwjIkkX /aZI8hH/RaxXKNNEi0MQWdFYdtZcqR7PKYmsx5E7xlPzhm33plXVmI2Y8UFOivRhEL6k D6Bz5H5FrHj2fkCKWAmwJVP46SKjgeWnkI6tDglTYJsusv8mbG/fDSoe6wJwsq/PcsbN XE4EM06wQlk+pDVHQElvgrer0h5qYSY63fqWZHlsZb+kWrRHjj000Fi4hadxoGv0ZLap lctt246pQmFth3tZ2JRvbjtU6VfabEID69m3659mpYXRXYgRTzrcUeFPNjJiRMZvCK+2 aXkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=xdBb/9h3av9e/adKhoJX/lSFk59hN1abkfeekoKJLN8=; b=wB1WzRGGv/BeyJp5Kt5yDkn9dY+hq6vnr/kB1uG5Sxl/3uTi6Vl14X70XaLHFV0eJr b85lfMRlKUwcE9i5vU1S7rJ6CMJ+EnDWOqoZN7YNEZT8JTIEaP+nQaAG6VBKfUJ17B9D O/htdTduZACmCbL2OHEsHsXDZmAIjOJ9jFu8ceZPEje7Dtb7qkVEpcMZvJQVWM97pS6f S5EcSrDxWla6/RcCYANF7YCydSc1kcDli86wUenbOZxZrjvL4RZaoV/xY1Zvss6CU/ul 6YMQnYzjZdiURHYuSMzDTefv+eIAEQ6Jx0psitN0+tPcGmsY9UAQSexQotW85e7EFy8A 4YRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GAHsMlhV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h22si13200677eje.389.2021.03.02.10.48.20; Tue, 02 Mar 2021 10:48:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=GAHsMlhV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345980AbhCBEtQ (ORCPT + 99 others); Mon, 1 Mar 2021 23:49:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:59106 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1445193AbhCBC5G (ORCPT ); Mon, 1 Mar 2021 21:57:06 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 95F2F61601 for ; Tue, 2 Mar 2021 02:48:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1614653335; bh=Kk6vIAK5e/P2WALpRl5lbSaKaT/Qk60wrNd/8s1Kt94=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=GAHsMlhVr37H5IUoz3jqQrE+Wg0Vjc6JPPWocyHKrAEUTcXUT3ilMNm13qPqzC8zE xaMsTPxP08wCb6ncizFWcjISGepOgyGVWoEZUg3xeSaE1AovoZhnuU03Bluql6n/64 fThRO50hlKMqQJbB+CHAghAGAQZCfPiWp9rwNm/w3s/lyBYDzRgBTa4BAJMe1fLx1n ntfN6rFLKeE9VKqQVlh7Y0Li9la7LY2qa9GAedOHPCRDXiIiGOEjLOiitMvDTjks/g ZPcOX06lds++S0ijxoEKMqUPm75cMPZYbyszMBISP0SWJVH997pUryNGtMwPZ3b9LM p9QschkA345PA== Received: by mail-ed1-f46.google.com with SMTP id b13so14233536edx.1 for ; Mon, 01 Mar 2021 18:48:55 -0800 (PST) X-Gm-Message-State: AOAM533kitAyBgYbXQFWDH1ZZsgpsFZeFwEZXs+bqgja7wf/CmzJfXJE 7dl2CBiEpeilAdDZ8w4ksSAYerirgP4PfqmEuXDDZg== X-Received: by 2002:a05:6402:27cd:: with SMTP id c13mr18775065ede.263.1614653334168; Mon, 01 Mar 2021 18:48:54 -0800 (PST) MIME-Version: 1.0 References: <20210301165130.GA5351@redhat.com> <20210302112224.6b3568434be490fbfbdec790@kernel.org> In-Reply-To: <20210302112224.6b3568434be490fbfbdec790@kernel.org> From: Andy Lutomirski Date: Mon, 1 Mar 2021 18:48:43 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Why do kprobes and uprobes singlestep? To: Masami Hiramatsu Cc: Oleg Nesterov , Andy Lutomirski , Peter Zijlstra , LKML , Anil S Keshavamurthy , "David S. Miller" , X86 ML , Andrew Cooper Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 1, 2021 at 6:22 PM Masami Hiramatsu wrote: > > Hi Oleg and Andy, > > On Mon, 1 Mar 2021 17:51:31 +0100 > Oleg Nesterov wrote: > > > Hi Andy, > > > > sorry for delay. > > > > On 02/23, Andy Lutomirski wrote: > > > > > > A while back, I let myself be convinced that kprobes genuinely need to > > > single-step the kernel on occasion, and I decided that this sucked but > > > I could live with it. it would, however, be Really Really Nice (tm) > > > if we could have a rule that anyone running x86 Linux who single-steps > > > the kernel (e.g. kgdb and nothing else) gets to keep all the pieces > > > when the system falls apart around them. Specifically, if we don't > > > allow kernel single-stepping and if we suitably limit kernel > > > instruction breakpoints (the latter isn't actually a major problem), > > > then we don't really really need to use IRET to return to the kernel, > > > and that means we can avoid some massive NMI nastiness. > > > > Not sure I understand you correctly, I know almost nothing about low-level > > x86 magic. > > x86 has normal interrupt and NMI. When an NMI occurs the CPU masks NMI > (the mask itself is hidden status) and IRET releases the mask. The problem > is that if an INT3 is hit in the NMI handler and does a single-stepping, > it has to use IRET for atomically setting TF and return. > > > > > But I guess this has nothing to do with uprobes, they do not single-step > > in kernel mode, right? > > Agreed, if the problematic case is IRET from NMI handler, uprobes doesn't > hit because it only invoked from user-space. > Andy, what would you think? Indeed, this isn't a problem for uprobes. The problem for uprobes is that all the notifiers from #DB are kind of messy, and I would like to get rid of them if possible.