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 87435C48260 for ; Fri, 9 Feb 2024 00:09:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E11D46B0071; Thu, 8 Feb 2024 19:09:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D99196B0072; Thu, 8 Feb 2024 19:09:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C39AB6B0074; Thu, 8 Feb 2024 19:09:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id AD0D06B0071 for ; Thu, 8 Feb 2024 19:09:47 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 6C414805DB for ; Fri, 9 Feb 2024 00:09:47 +0000 (UTC) X-FDA: 81770332014.10.EAE96F5 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by imf24.hostedemail.com (Postfix) with ESMTP id 5D70718001E for ; Fri, 9 Feb 2024 00:09:45 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OnZrcDeX; spf=pass (imf24.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707437385; a=rsa-sha256; cv=none; b=HePZjW9RW7Fr2v2aSriPFSPENyjyonDz4Y8XBA+EhMaHa8kh5u7k5m4PYSILE3n4b7ppjO q2RXUELZg7TMF5MBo5ZgzGrRKgmxC727ae6TCD/TNcQrEDYhfZuNFIegqfGUpLRowU2BZ/ hr5L3UE5+rwVNkkkrdjivsOTfWxSr/4= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OnZrcDeX; spf=pass (imf24.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=alexei.starovoitov@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=1707437385; 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=P8HozhgXGzWsxwtidwRDah0to0vUDQRDhf5YZ4ydn+I=; b=1dJNztcQYZYj2nSv1NwNeFODsCyhRDPoIjX42Lsp6KAasDVjVCHZkQCWAY+/DigdIm3NjR iMfiCUKKk4Pzl34MJ6A4Nm1J/42pMuUJ0nngbHX1ozSUpCVuEXyhkKsjQERtj9QAl+C9n+ KBBMcTPjhU5/MMjNl6d8HcgvLX59aI4= Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-33b5978de44so120504f8f.3 for ; Thu, 08 Feb 2024 16:09:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1707437384; x=1708042184; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=P8HozhgXGzWsxwtidwRDah0to0vUDQRDhf5YZ4ydn+I=; b=OnZrcDeXtaZf0L8QB75PCrYb3pMNp0PnYodEwtXKAqicJ0oD7WtGrhyv9hINVlG5ZJ Z3MKboiRgeqwD2O1IxR5Dn/ekTcb9SwKL0LzZLzB/2hpFMtzzDKm/yU+/T1tgPrtwVcx uQuHej71wFY9tQgnhFH/43/6HqKVl0PCG+Ze69y3yoDhy51xXdMjLYIWiuimO012EgWe BnCAiKQBjs2ENdmX15DBkl9o7KgsxlPo+HZ39UtN7VyFMYL8cqwzC0X2r06qsHA4LZlg SLEifJIKUdmAgqFWg1wbohpKAOr6SJPN/6GzwEV093H/LDw54I/Raig9cumxKGPWctXe r2gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707437384; x=1708042184; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P8HozhgXGzWsxwtidwRDah0to0vUDQRDhf5YZ4ydn+I=; b=NU8fb8QbFZPRAh82kvYQFNR4G9zyoQEUULWnNfyUuYJxAq4dJZ1URpDSZ1WdDwek2X 7DSO6K62uFib/dhlg/47zu1sFNwdfkyi/LEatxozdkuC8CJBk/hv25E2aQMJlqkl/XYc +mz24xmaxtxHrEisgU6g3V8pm/gkhWa95ZJ3PMG4k8O2lWgicjg8ND+3p9O733m3hnCg 9l+x82qd84pLYzeVgSYwEOlwpk3Qs1f+QmnOn/RXPbkImcAgfr2MgbcDmygSzSWx8vxc HoS54y5XSyZlfYGScB8S2MQpa4HAM2oFcappqXriWUZKr2ggDlj2aOX16IL/0+cr4iYX A1fg== X-Gm-Message-State: AOJu0YzoN1KYLlDwHvTLz0pFa0KX8khCSD+tns6hznERnMHBUFW4whsA hI5xzN4TXdGO7JCdUGIh5OH6zoJK6Ke6RvH6+K3jRxfE1rhMM1qxGtKIrAkTNCi+Qru3fOs8zXC p00g1FAAf+1zPZ80MHx0dZowmKSc= X-Google-Smtp-Source: AGHT+IEs70zjjHgurDqYMD606eRSQ2hAzMg3oZF1Bo087Wcp7WpaXTG52uZBWYp2IEMIrHuiNgoB0jbiPdxNwTD64P4= X-Received: by 2002:adf:cc8d:0:b0:33b:1b0b:934a with SMTP id p13-20020adfcc8d000000b0033b1b0b934amr617634wrj.47.1707437383609; Thu, 08 Feb 2024 16:09:43 -0800 (PST) MIME-Version: 1.0 References: <20240206220441.38311-1-alexei.starovoitov@gmail.com> <20240206220441.38311-2-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Thu, 8 Feb 2024 16:09:32 -0800 Message-ID: Subject: Re: [PATCH bpf-next 01/16] bpf: Allow kfuncs return 'void *' To: Andrii Nakryiko Cc: bpf , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Kumar Kartikeya Dwivedi , Eddy Z , Tejun Heo , Barret Rhoden , Johannes Weiner , linux-mm , Kernel Team Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 5D70718001E X-Stat-Signature: 4egitt7xwotoutofapbikj9mjt5r9bt3 X-Rspam-User: X-HE-Tag: 1707437385-766283 X-HE-Meta: U2FsdGVkX1/fKZoEY1PiXrXUTK5YIPSnGoNGHFcjtSMT2DxKIAQGX5tyJhLieaoXQ9zwM9nqa4YYetJIZOddFQf/JDTtOFLVKjYz4VKZqDUArN1/rgWlU4pCouijZELLgyNVacHf/FMb60cckWBylQ2/NWhSLo2/cgNY7jR7hyI0sKkcbx9UwV8uuEmvyPiwdcNOzJ5biy2YQhh40gs3Bf1fEWMZG3jMjOBn2BPM3jS/JfK6IwAdn84t4I3aDiQpDqMtczjKI3k1qMqLekFI7KRdJuk/sqdAjU48DfuvaM1KJMJpYv/OMBPL1YKHftq3UTA4UROCUcCsij7nyLHjcFQDxtoWirh6/3z2hwyaMcdVgwjbzxcKOflUHXcc7OG+APUa1aksgJ3LHjoTOOPxOr5a3wIYzgwMhOpiAxRTnlhL0KurxpDbony3Uzpf79vQC5bK6xYUmioEDIZ3ik6YCmxg2vY+uAxDFYk6EzqanYVU6S9f+kVWqMq2pSfl6BRyqWZndqH7hZo29OHzVNcaby/DvfvTlVbaa0qyegt5rhkJLW/0/YT73Mo1sLcsZsyo8D+AbW/YkY4vgtUXoNMbvvkctSkKQxWejBzUz/A/mcn+kvQ4z810B33UyXsHVMw8Yx68xbg+13mWzua+nACx4/8kpo+ff6bdHs3Jwnd5P7uVsfpQGIc/IbWp+sB9YJ2pwh8jgsfYT43r6BdslpeNcnIEb1MaUDnEONyxPkfb2K8P2bQrH4jEFdB8CH2tMckGbW5i8+2lVmJVnS1W+d4UCh7R+QXtAdQM4lRoAU896KJQjzMK6lQZ6EFNtXayCu4jNNlARVjJDNuNNxYYgJa5uVdKCtfi5SvfgKD20u6IJXLVsXD4/YbzCypkAMuxeoZhc08OvzLQGOLtmiIhit7mf8OUOBq8VQOVoRCXawhnvhtPxXKjrmuCgy5qPt8xVI7+FSWHJLCKs1lGZhEUxn4 6IPbtjc9 0I0sgXRvXAX/QRsyoJ+aeL7Co+FIq+JLMwZFfTWaOaeakPJ5r1Sng4wtmkQozHcktCO9GAQ7gWwD7SLFwuvhpFWNdXRV+wxFlBHVIMzfc81UmnmICNdqhjZkFSoSmqe98AyMsG3E2ElrO/wW9UhsXTtJp03CmhFsYfrZYpsRA4H37KnsisEj7Be0ChjaiGisB3KTixB9fwEbbtb4Y8QnaqCyQ9S/4wUjsGZKdptA0Bc+PLKeR5wpwrGbgnwzBulk45mZxitYWuWUwERh6C8UuHsua4nNUzb2fpCAEvQTTY6/6W8ObedE7wmphOxf9zPCWDQoo7Ida09PqXodvdrrsw9ewpFWJUGQpy38zNLP1ZqZcfnhJdKh1ICY3dR0bPXwkXLk2j8u3vB3qQn9Op62hgwK9NIuLM83rZaK4QtmHEf6z3VcHD0D4C2YI98H0J5NdLX6XlAuM0dfUiAuoJ14JOppIQyS4GQ6jM8BZrASK1N+kj77FdMZtOWs0UMYWxSoGgpHe182nljpR0pZ5R/WQXo9vBOLz0BKg2z4t X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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 Thu, Feb 8, 2024 at 11:40=E2=80=AFAM Andrii Nakryiko wrote: > > On Tue, Feb 6, 2024 at 2:04=E2=80=AFPM Alexei Starovoitov > wrote: > > > > From: Alexei Starovoitov > > > > Recognize return of 'void *' from kfunc as returning unknown scalar. > > > > Signed-off-by: Alexei Starovoitov > > --- > > kernel/bpf/verifier.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c > > index ddaf09db1175..d9c2dbb3939f 100644 > > --- a/kernel/bpf/verifier.c > > +++ b/kernel/bpf/verifier.c > > @@ -12353,6 +12353,9 @@ static int check_kfunc_call(struct bpf_verifier= _env *env, struct bpf_insn *insn, > > meta.func_name); > > return -EFAULT; > > } > > + } else if (btf_type_is_void(ptr_type)) { > > + /* kfunc returning 'void *' is equivalent to re= turning scalar */ > > + mark_reg_unknown(env, regs, BPF_REG_0); > > Acked-by: Andrii Nakryiko > > I think we should do a similar extension when passing `void *` into > global funcs. It's best to treat it as SCALAR instead of rejecting it > because we can't calculate the size. Currently users in practice just > have to define it as `uintptr_t` and then cast (or create static > wrappers doing the casting). Anyways, my point is that it makes sense > to treat `void *` as non-pointer. Makes sense. Will add it to my todo list. On that note I've been thinking how to get rid of __arg_arena that I'm adding in this series. How about the following algorithm? do_check_main() sees that scalar or ptr_to_arena is passed into global subprog that has BTF 'struct foo *' and today would require ptr_to_mem. Instead of rejecting the prog the verifier would override (only once and in one direction) that arg of that global func from ptr_to_mem into scalar. And will proceed as usual. do_check_common() of that global subprog will pick up scalar for that arg, since args are cached. And verification will proceed successfully without special __arg_arena .