Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp621130pxx; Mon, 26 Oct 2020 17:10:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwoA5JjdKpI9feldg8r+yrcZWpa6BrLHUu4LF9iHkCvMZ5gnDeSb4BoXsD0jES9j1rb8wi9 X-Received: by 2002:a17:906:a996:: with SMTP id jr22mr18649684ejb.463.1603757412818; Mon, 26 Oct 2020 17:10:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603757412; cv=none; d=google.com; s=arc-20160816; b=hOg8hzzuPmyWZ8e/RbtRDnTxoBWkp/RxStrMJs/VNyXOXxQR92sdhMh1aZ/HGm8XiQ NK4bFL0LAM+16XdMxpBszQkqxKUReJ/xEaZ8XsciyzXiEwAkBSqLQ6kbxO+Bx+D/y5PS 6dPEI5uSq5mCJHhOKuudebC/HYv+BNSMb/C7XqW4H52iTXIfc3hERoioztpL509vQYCx KSmMbOIOgaPvRDjv8157vonLrTFjZNiainjFYUcxgKjhxbHNMPRYMAUsnSgUPNQ8REMy Wox/rjmErHtO0Yq10mZE+7NnIC5j9z7khp3yXtfYkMdevgBWWKfGDYGLiufHVmr25Q3b qTAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=5MfRXofF9NlrBG9ZLP3LfU6oLq4PML8/2jaAtOVRPAE=; b=kiLrvEHsyqyNC6lEncVr9doTLs7ecGgjrBH09RqrOoIadA3+cgh5mo4AXXLhbkmhge dVtyUAxiGE2NG+CipQrSuj4cdy9/l7kZVxuxlZOguSSgm8XTIEBj4Nk8J1pnS/dAGaLM 4SJw9bxsAD4jzAMTEhEAzWk1Jm7/CX3Vybq9oAKU+P1NpdB8kYJZXxWIyFBVl/8Kn1v5 B51SSbX4H2dXLNw+XC6vz9Q7lmhUWsCJ/bIwP1Qn/lDxpAP2FPGvZWHkohHornBsLHwL Svdgycdm9/0DAbtU6gmx1UhoTSEKTG15IX3n1yTlw4oqRvpHMFmCh76mj77vwU6oUH6I b5xQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GEesgwUv; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b20si8264720ejq.608.2020.10.26.17.09.50; Mon, 26 Oct 2020 17:10:12 -0700 (PDT) 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=@gmail.com header.s=20161025 header.b=GEesgwUv; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2394652AbgJZWnH (ORCPT + 99 others); Mon, 26 Oct 2020 18:43:07 -0400 Received: from mail-pj1-f67.google.com ([209.85.216.67]:51625 "EHLO mail-pj1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2394645AbgJZWnG (ORCPT ); Mon, 26 Oct 2020 18:43:06 -0400 Received: by mail-pj1-f67.google.com with SMTP id a17so3997202pju.1; Mon, 26 Oct 2020 15:43:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=5MfRXofF9NlrBG9ZLP3LfU6oLq4PML8/2jaAtOVRPAE=; b=GEesgwUvUQx4cf0Qe1lkyvKBaJjqtEle2qmu0urkRafskaqjdbpMeWf/VtJYR4AOr1 SEI3t8eyiGbBN2BAb9qTkOTv0yeB2aUXL32AsAmyfhPTsphAk2iv6193YqoDdYyPk8YL b+aJlQSs8OZhZ+VEYlrXMKWXE4Z/aW4N2na7MUCaiMiJmKeHSx8iNM8AH8U1uNLTGleM PxQJIZYgIJ2OGCNMkfxeXnm3CIiIFDIcCHH096yC6+PSzLUqSPabSt10PRIKJk87liEU 8YgRwBBj72/8VSxMWI3AAnHLp+3GIoXZSqZG+tAFIvCSqWIPq3A5luFBfqul19us01WU MVzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=5MfRXofF9NlrBG9ZLP3LfU6oLq4PML8/2jaAtOVRPAE=; b=H9595bHcHoXapJNuPaC4uhJoieDF/gRxAHtlnrvCCc3khVKDek0MxzoQGuHCxwqM5h 4hgwCPEdySY3lxJEOnFrytoprj5uY+ZSTVB9nwvlOoTGCA+YVDh1bQ6OgHRyXbVnD/ET lvcced7XqNr/k//RgwgxZ9iF0BlG54zID+MORD6mtWWI12N0JA3sZsyzKuIpOOIKC2Je XgSedhCJRu8wqY5Y7WnOGkJnBw1z2IzSqkCqo1a6sUrXKyQb+jdXlu0405nRJtptQRJI z3MiWNH+JVp9xrOQBWxq6W2OXpScLnpdFvl+QXAs4okoTRimsNBRVwl12zn+u5SF8qdb edpg== X-Gm-Message-State: AOAM5337ZWT1jIZp98ECTgBul2TqW6jhywxve7k1rDItnGZupYBks3yk dgh2PuUnfWaqcXeGXLqatB8= X-Received: by 2002:a17:902:690b:b029:d6:41d8:bdc7 with SMTP id j11-20020a170902690bb02900d641d8bdc7mr45315plk.7.1603752185932; Mon, 26 Oct 2020 15:43:05 -0700 (PDT) Received: from ast-mbp.dhcp.thefacebook.com ([2620:10d:c090:400::4:e0b4]) by smtp.gmail.com with ESMTPSA id i1sm12086337pfa.168.2020.10.26.15.43.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 15:43:04 -0700 (PDT) Date: Mon, 26 Oct 2020 15:43:01 -0700 From: Alexei Starovoitov To: Michael Jeanson Cc: linux-kernel@vger.kernel.org, mathieu.desnoyers@efficios.com, Steven Rostedt , Peter Zijlstra , Alexei Starovoitov , Yonghong Song , "Paul E . McKenney" , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Joel Fernandes , bpf@vger.kernel.org Subject: Re: [RFC PATCH 1/6] tracing: introduce sleepable tracepoints Message-ID: <20201026224301.gi4bakmj3pov5zyu@ast-mbp.dhcp.thefacebook.com> References: <20201023195352.26269-1-mjeanson@efficios.com> <20201023195352.26269-2-mjeanson@efficios.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201023195352.26269-2-mjeanson@efficios.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 23, 2020 at 03:53:47PM -0400, Michael Jeanson wrote: > -#define __DO_TRACE(tp, proto, args, cond, rcuidle) \ > +#define __DO_TRACE(tp, proto, args, cond, rcuidle, tp_flags) \ > do { \ > struct tracepoint_func *it_func_ptr; \ > void *it_func; \ > void *__data; \ > int __maybe_unused __idx = 0; \ > + bool maysleep = (tp_flags) & TRACEPOINT_MAYSLEEP; \ > \ > if (!(cond)) \ > return; \ > @@ -170,8 +178,13 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) > /* srcu can't be used from NMI */ \ > WARN_ON_ONCE(rcuidle && in_nmi()); \ > \ > - /* keep srcu and sched-rcu usage consistent */ \ > - preempt_disable_notrace(); \ > + if (maysleep) { \ > + might_sleep(); \ The main purpose of the patch set is to access user memory in tracepoints, right? In such case I suggest to use stronger might_fault() here. We used might_sleep() in sleepable bpf and it wasn't enough to catch a combination where sleepable hook was invoked while mm->mmap_lock was taken which may cause a deadlock. > + rcu_read_lock_trace(); \ > + } else { \ > + /* keep srcu and sched-rcu usage consistent */ \ > + preempt_disable_notrace(); \ > + } \