From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FD8EC5472D for ; Fri, 23 Aug 2024 22:22:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9706A800D1; Fri, 23 Aug 2024 18:22:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 92109800C8; Fri, 23 Aug 2024 18:22:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 80EBC800D1; Fri, 23 Aug 2024 18:22:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 62EC2800C8 for ; Fri, 23 Aug 2024 18:22:09 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 164271201C8 for ; Fri, 23 Aug 2024 22:22:09 +0000 (UTC) X-FDA: 82484934378.01.C22374C Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by imf29.hostedemail.com (Postfix) with ESMTP id 3A89312000C for ; Fri, 23 Aug 2024 22:22:07 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZWlMEf4w; spf=pass (imf29.hostedemail.com: domain of eddyz87@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=eddyz87@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724451645; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=z42+Q8AZanZAyEhdmQQpfFOP7RxuncrUYLIRyjSCh9o=; b=8S5tLedV6iKh3YN6cFXPFwHE6WZT/QgW2CH/nVob+b/WgLoxQOuzu3Bg3M/0HvicDufzYu obIwwK/GPD9AAveuZu3oMZ1gTPW7TEoI1ffEDk3gS0wHYQ1mwcU+6SQxdIAexiX9TqQMT0 6qgg+/zzyxAaHwddJFs80N9VpWVaCSQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724451645; a=rsa-sha256; cv=none; b=xdjg193LLd0lh7mW97LlsjiixCbjBW7O0s/9EeSF1ib0MLjaAbNsAwKG+bfp0gL6SABCfE 6y66bwHMSB0lPPSLVTGKWjy9ZfL/9XpD9IeEhouQeKUa/EaBPeMmo3kd0stcxiUTyKMRZs 663yUfcBxT5pDALn0lQ7f9GT2D/Cabk= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZWlMEf4w; spf=pass (imf29.hostedemail.com: domain of eddyz87@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=eddyz87@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pg1-f174.google.com with SMTP id 41be03b00d2f7-7cda2695893so866625a12.1 for ; Fri, 23 Aug 2024 15:22:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724451726; x=1725056526; darn=kvack.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=z42+Q8AZanZAyEhdmQQpfFOP7RxuncrUYLIRyjSCh9o=; b=ZWlMEf4woGYj7H5gSBWNln4LKeqf5ElWkSQSPV0u2TDlLOgD/3ZNJZgqmGOvVR8iRv YU/N40kqEVVlOVoSbhqXIvGcfVMbEeajmD0uNe8tSVI+Ukj/l9x2TPmPq+4eRL8y93uM WI/I51MLwhS5AGEUmL60Vj3iTd6k9S+hMYoWI5hJENN/6D6t+gE9gVxlC2Qeul63X+ZX iT2gw5K6BIdAYaldIt0MN+JJeyFpfZ8FzlXe3FNaCupw4wXrDH39WQxLPHjCEu+evOrn inMlmAapdi3x4hZZnMP4+Si0jjNk8r/xciiiZ+5usjHFby5t7wb7+m6Zc5TZZks9YAjU 2EMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724451726; x=1725056526; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=z42+Q8AZanZAyEhdmQQpfFOP7RxuncrUYLIRyjSCh9o=; b=UffgAlm5W50Nc7n19du1cqww9Z1cmdPJKonIIskNJxz5+Vvejo71abpylvY+o277z/ CBUQBEc+f75I/aNPqFRSrRsyCa/92OwfgyXhG/RAv7lt1ozerk43AqegeVemh11pILxu mWSSwdscvFzAbwslx+XXMwIf504OyPst7v5NdzRbB/EmDxBwIPcEZB53BDTW2ppzdEhP tH9tAF0OZ6aehSxjz+ercSLaOiNlqlMtrJTfM1Tj148BPC69n8lIbS19nuwBsPc9YWEo mIY6KwAWHKLJ233158MJ9hliOTSjB9degznxUiHRbXjtaXObJMJwJYnA9+GLDIDvdafT iqUw== X-Gm-Message-State: AOJu0YyqNVcvuyRXPFbzu7mp3vrTKVFeaY9mEgcL+9zhd4RLcJcAXibB mNXQsB55oG6wEFpdbXngcGxDtFX0jDhI5GMhRvIgRwv0B4f1tcw4 X-Google-Smtp-Source: AGHT+IHe2MZNqfdwKxtjHPiq7/ZoqoBvwMUroZDtf9P1IkJ3Smw4qpWQdX0dyd5EQEp0cv9vlkwxkQ== X-Received: by 2002:a05:6a20:c793:b0:1c6:f213:83b with SMTP id adf61e73a8af0-1cc89ed955emr3749733637.37.1724451725696; Fri, 23 Aug 2024 15:22:05 -0700 (PDT) Received: from [192.168.0.235] ([38.34.87.7]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2d613a420cdsm4691284a91.28.2024.08.23.15.22.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Aug 2024 15:22:04 -0700 (PDT) Message-ID: <8fc31d49d4666599cc2ac6815ff3e0b09adc8a94.camel@gmail.com> Subject: Re: [PATCH v6 bpf-next 09/10] bpf: wire up sleepable bpf_get_stack() and bpf_get_task_stack() helpers From: Eduard Zingerman To: Andrii Nakryiko , bpf@vger.kernel.org Cc: linux-mm@kvack.org, akpm@linux-foundation.org, adobriyan@gmail.com, shakeel.butt@linux.dev, hannes@cmpxchg.org, ak@linux.intel.com, osandov@osandov.com, song@kernel.org, jannh@google.com, linux-fsdevel@vger.kernel.org, willy@infradead.org Date: Fri, 23 Aug 2024 15:22:00 -0700 In-Reply-To: <20240814185417.1171430-10-andrii@kernel.org> References: <20240814185417.1171430-1-andrii@kernel.org> <20240814185417.1171430-10-andrii@kernel.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.52.4 (3.52.4-1.fc40) MIME-Version: 1.0 X-Rspamd-Queue-Id: 3A89312000C X-Stat-Signature: upg8m3yqyucjjmamedaj5qm9w1m78gwy X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1724451727-88622 X-HE-Meta: U2FsdGVkX1+5WZjjGNroBQXC+l5PNpD8jZnlmGXC1X5db1XXiS2zudcGurvXUuCYthATOkwKqObI3IaUWHAO6nLL+LlgGuf7uMiIRnZjDewYs/ibLo/2PEWe8Oc6cR25lBLasvxr1CdefcH6dgtqUmEsFCO9lYa45wFmy2T7lYtQOcjaohukLe9X8EJNQo0TjoftefwxoFHmegDoYkB5sZYvJySy2GvAi0pE1OfwTIRuk6laizpoNOk44uINd7rXkRRexRkR9joOs2dIsGpLJN3LWjkezlLikWAZ3stGDxS0OGYgmk74oVoqKw8Kb+yT+TyBkCPvWweJ/+myWZuB6ffg0DNmul1YLyZHbsNkEnZkndSt/yaQdao5OLgOiaRTUH9nXWkG8jrHezMCcoGrPiSEqUZ9wMPGiHl+Ye7s9BM4oWI9CFpFh+u4cObyl7EHIl+068k3lTvQvxHPceOgMZsO/oH8uQINl7lbNZzYuHQUn0K1wzBhajznhYCN+cbs0/NAR/aBznuK5RQwQUrV6cr3yGLqlwtYI88XxLgF8NyV1J2n6+CAUtwfr8RIRrjWxdX7GS/XIV9hU2kr+/QdnadO8o/Nv8obeXrfPVSRszeeF2WAMT1CcTb7GV94hVTYYngnRxYUJZ6fI4UZfE8b5jAXnnEqTkq51LKmfc3/Bj9i+G18KrNp5awJ2B0VF5/x4HM/ePvz4HEyhPVopcoD4xKXKzdXItsjhyidPHbKJZyEbUTUPdZTbw9Q/XKsdzOmwWmGq3nr3VogL+HJyeZa6oAhrDlr6nrsrH4ixXaPCP3f6o9gvo6xoqiksXD17hljaAIzcF5juJ6UgUW5KpTRemyJXzEoJnSYQbfUxtXuMsdTAqmSDaRwzzRiqLlvtF56L9LxDVHde3hdMacSjF+eECQjjY8n6DPl75daw93074wei+v8sB4bDFU1UWl6ambiYY+LZHy7tmTXYJsPa6s FyZahzg/ L0wX7Fds5avm6goq6zQbaPyqzoVbQxi7PWmZ90jYrwezPdpJsSEnnZHqYd4PskIYtSFjcRLWeHitjd/J9Zv4kCs6X6RWcQ+ur3bxxaUqmuTovFKnjYBcat3kgjEMHuDEPVtixxV0nXUd0wmTwDrDSxz4C43CayWO+7QF23k3kXI+X3fRh7g/EcjgzbDVjNZpzhTevcqgtIq0P6DXVl0aVhEurC+2nQbCDcI23YR6QISAOkAig1Vh/Wh4iwNMNMKC6jjJ59/9OlPFpOBoA1gWv0WRKTw1i3MN7ah3vH+Ft8L/o7uMdwkxxZLWWj2zYpXSMeLC+3vtrWdHHrXoPLUbVrvDw9KX/BAYLUMP72QN2aMhRZFurwt7rxTfPRdpjhqFZxFP/IJnGdM5yTq7YllIH3QqGHJuNxCrfPOzdk9AVkguMlxtpXwBLaM34f9a5+cJ8782DuhA9tAncOZkXDwyiWHK65g== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, 2024-08-14 at 11:54 -0700, Andrii Nakryiko wrote: > Add sleepable implementations of bpf_get_stack() and > bpf_get_task_stack() helpers and allow them to be used from sleepable > BPF program (e.g., sleepable uprobes). >=20 > Note, the stack trace IPs capturing itself is not sleepable (that would > need to be a separate project), only build ID fetching is sleepable and > thus more reliable, as it will wait for data to be paged in, if > necessary. For that we make use of sleepable build_id_parse() > implementation. >=20 > Now that build ID related internals in kernel/bpf/stackmap.c can be used > both in sleepable and non-sleepable contexts, we need to add additional > rcu_read_lock()/rcu_read_unlock() protection around fetching > perf_callchain_entry, but with the refactoring in previous commit it's > now pretty straightforward. We make sure to do rcu_read_unlock (in > sleepable mode only) right before stack_map_get_build_id_offset() call > which can sleep. By that time we don't have any more use of > perf_callchain_entry. >=20 > Note, bpf_get_task_stack() will fail for user mode if task !=3D current. > And for kernel mode build ID are irrelevant. So in that sense adding > sleepable bpf_get_task_stack() implementation is a no-op. It feel right > to wire this up for symmetry and completeness, but I'm open to just > dropping it until we support `user && crosstask` condition. >=20 > Signed-off-by: Andrii Nakryiko > --- All seems logical. You skip wiring up support for sleepable bpf_get_task_stack() in tp_prog_func_proto(), pe_prog_func_proto() and raw_tp_prog_func_proto(), this is because these are used for programs that are never run in sleepable context, right? Reviewed-by: Eduard Zingerman [...]