Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp1083024pxx; Tue, 27 Oct 2020 07:55:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0OrDvd31f7kkMNFxlR3NNT4AUgzDKfZMxsxzfNPuyMNbeKr3/OH9c0caPO21MGypfMmw4 X-Received: by 2002:a17:906:e42:: with SMTP id q2mr2800229eji.261.1603810504417; Tue, 27 Oct 2020 07:55:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603810504; cv=none; d=google.com; s=arc-20160816; b=miGFQrcGeMVirKPvPhVNh1Twcsmm6fvvptMXfE+uefiycoZf8ovP3CXXrOGsM8weaG ZA5J+gUWX0s0cPvPy0gKsov7rjLQNzj7A1pV/Z7eoLQpX09477zB7iYQHGSXfCp/B6v8 8ITMWsxrePqp+1b4SeBGSny4iY788054SAOYCRt8g1mw1pBq9/72oXsuI6jSwC27WdzG 9x2WzaCj4Rr1TYr8YJwrxXkgmKWSIUE985qHoa5NBrhbJrjB4vg0vqCAXG/svpLAkTHe yinAlBOh1VQLjGEj/GhKiAnw6CSmEk8cyHOhZxEmNXwYtmqNAuLkV9oOO8PrQbmQahuU HeBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:thread-index:thread-topic :content-transfer-encoding:mime-version:subject:references :in-reply-to:message-id:cc:to:from:date:dkim-signature:dkim-filter; bh=5vxbruFVegvc+6TjTUjdAWbbpMPPX6No3cdGEm7syY0=; b=ky/LZHdRrVNV1tlYxDnUwU9e9kw0MTXnMwLYw62jFs7ART/hM2FSQPWvv63caTgy4n 3iWkqHO2l+7cO8sIJYYUNbuQBb+hpeu9owi5W2RRWNGBfmW/oBa/2pAWPSbHdSXC4kPD 8M5x1ejj7ByFzsoz5BbOwGhv0fXqafMsqjx2/Z/5z60lBG6HHa1emK6DDKuqrLkziAps qeFtULW1jfJUxCmuN8Oe7g4rYMPsZewyfB3gP3lipEeefaUlYwOwzTkK20e2n3uYLZDT 0OH5p5ws9JPszHdM7qzPtAzNaJV88Fxv6YGUp7Y7a7ud8k6GxjRqgK/QSjEnRuf6LUYC OY/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@efficios.com header.s=default header.b=XfwWiQxr; 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=efficios.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r18si1129752ejx.6.2020.10.27.07.54.40; Tue, 27 Oct 2020 07:55:04 -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=@efficios.com header.s=default header.b=XfwWiQxr; 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=efficios.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752353AbgJ0NhN (ORCPT + 99 others); Tue, 27 Oct 2020 09:37:13 -0400 Received: from mail.efficios.com ([167.114.26.124]:44956 "EHLO mail.efficios.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752347AbgJ0NhL (ORCPT ); Tue, 27 Oct 2020 09:37:11 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.efficios.com (Postfix) with ESMTP id 3D86E2C212D; Tue, 27 Oct 2020 09:37:09 -0400 (EDT) Received: from mail.efficios.com ([127.0.0.1]) by localhost (mail03.efficios.com [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id uOhxkHk0w0PA; Tue, 27 Oct 2020 09:37:09 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.efficios.com (Postfix) with ESMTP id E0F1E2C203F; Tue, 27 Oct 2020 09:37:08 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.efficios.com E0F1E2C203F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=default; t=1603805828; bh=5vxbruFVegvc+6TjTUjdAWbbpMPPX6No3cdGEm7syY0=; h=Date:From:To:Message-ID:MIME-Version; b=XfwWiQxr7vg4LSL6tApC2uCPISf2hu6lBusE69I8zAy/icwY5kzj1hTV4Kmjx0AF+ 0HaDK11C9EvwAJpxnrwSCcu34p62jB+V/u5VJ0D4/5s8OPZ631SDvGQMLLLt2yokVG iWp2fEYw5QAkYI5dmxWrpVkBXAsG2nGf+gV3bbZxmOZru1cflkG1m6na9prE1ShHzB d3s2k9cNj3pIe0HxwnNSlgee7Fwa7jzP6u2v9IDJbO43LIKh13L4Iye47Ig1KsmtOY S6KkTevvTbh9AgjlCHKUDNb2xPLRESx4CoKQ3ClrWEt+zOn5YWqRUq0epIrSuERo63 nMVEA19qfBvSg== X-Virus-Scanned: amavisd-new at efficios.com Received: from mail.efficios.com ([127.0.0.1]) by localhost (mail03.efficios.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id vn7AgBRFUqT6; Tue, 27 Oct 2020 09:37:08 -0400 (EDT) Received: from mail03.efficios.com (mail03.efficios.com [167.114.26.124]) by mail.efficios.com (Postfix) with ESMTP id CD58A2C212B; Tue, 27 Oct 2020 09:37:08 -0400 (EDT) Date: Tue, 27 Oct 2020 09:37:08 -0400 (EDT) From: Mathieu Desnoyers To: Alexei Starovoitov Cc: Michael Jeanson , linux-kernel , rostedt , Peter Zijlstra , Alexei Starovoitov , Yonghong Song , paulmck , Ingo Molnar , acme , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , "Joel Fernandes, Google" , bpf Message-ID: <1631556114.38532.1603805828748.JavaMail.zimbra@efficios.com> In-Reply-To: <20201026224301.gi4bakmj3pov5zyu@ast-mbp.dhcp.thefacebook.com> References: <20201023195352.26269-1-mjeanson@efficios.com> <20201023195352.26269-2-mjeanson@efficios.com> <20201026224301.gi4bakmj3pov5zyu@ast-mbp.dhcp.thefacebook.com> Subject: Re: [RFC PATCH 1/6] tracing: introduce sleepable tracepoints MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [167.114.26.124] X-Mailer: Zimbra 8.8.15_GA_3968 (ZimbraWebClient - FF82 (Linux)/8.8.15_GA_3968) Thread-Topic: tracing: introduce sleepable tracepoints Thread-Index: 4pHNdC5/eJo5J7MQUBxo9CiBOWhRyg== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ----- On Oct 26, 2020, at 6:43 PM, Alexei Starovoitov alexei.starovoitov@gmail.com wrote: > 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? Yes, exactly. > 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. Good point! We will do that for the next round. By the way, we named this "sleepable" tracepoint (with flag TRACEPOINT_MAYSLEEP), but we are open to a better name. Would TRACEPOINT_MAYFAULT be more descriptive ? (a "faultable" tracepoint sounds weird though) Thanks, Mathieu > >> + rcu_read_lock_trace(); \ >> + } else { \ >> + /* keep srcu and sched-rcu usage consistent */ \ >> + preempt_disable_notrace(); \ > > + } \ -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com