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 BF44FC3DA5D for ; Thu, 25 Jul 2024 12:03:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 46EEE6B0083; Thu, 25 Jul 2024 08:03:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 41F2A6B0085; Thu, 25 Jul 2024 08:03:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E66D6B0088; Thu, 25 Jul 2024 08:03:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 11BC36B0083 for ; Thu, 25 Jul 2024 08:03:54 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id AD7BB121062 for ; Thu, 25 Jul 2024 12:03:53 +0000 (UTC) X-FDA: 82378141146.07.EC54F91 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by imf01.hostedemail.com (Postfix) with ESMTP id 8546E40032 for ; Thu, 25 Jul 2024 12:03:51 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="RsTSnsQ/"; spf=pass (imf01.hostedemail.com: domain of olsajiri@gmail.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=olsajiri@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=1721909030; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=D8zPWrHDS7vF+EvLgmltqmL71OguXyASyp/scEOek/I=; b=CUK+6WlHvc69S0NdIZrT932bR0DOKmOD+kZ7/XPAzl+4E9F31I9MWdttTXOPPXdLXw3k8P Kj7bChLtpLjtj3k88kFTVUHMTk2d4w5S4RQ7qX8K6pLHrEVmoE+YeRDLdS3+EEBSy/DQYv w5kI9nq6a4aRzLq6RyP9pYtD/0kuAEQ= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="RsTSnsQ/"; spf=pass (imf01.hostedemail.com: domain of olsajiri@gmail.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=olsajiri@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721909030; a=rsa-sha256; cv=none; b=N+0I993we+Fk2zgiQK8AIjVNGW01zTZ9aNw0iyn0ts5XSixOLnDVHmJduneGFC8NawLmrY Ow0G/mZjYKVgJHaMvBISaR0VCvZnOYfkRyJ1y3Oki/iYUEjbdDjgvJmMGXQ8xLZu2CZueI ATWLgSlLq3tgfnnYSYslWRNhquwXpTc= Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-426717a2d12so4982745e9.0 for ; Thu, 25 Jul 2024 05:03:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721909030; x=1722513830; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=D8zPWrHDS7vF+EvLgmltqmL71OguXyASyp/scEOek/I=; b=RsTSnsQ/WYdeYgAQxI7FfdXS7jRfYkk9qwfesQj8Qz6DRSX6ChrE57ZTycbfLujPvE wxOzD5ePZ9vvkNfE55C/M7krrlST+vDUgKJWDiW6+D9FGIGdCSdZhv6+bP7/PtIF4x0k 2tTaWlVc3NXNmHMr0QgVlyVHAu1yUftr7zj3NNEECaZA26C+bD4xsRzO6s8j2jKX8DLn 28ObSpXrQEu7IACwCkTzEZaYYAbyOq6pWQcid5FNm4cYaX4/KrHKtHTPxC27p/PQx9Da j3owBrX5YuZ1U4jjtH9GxMS2O35z3gfg21HxbEKNkBXcimvWy8bNqBNQqiRuhOx4ZEfV eHVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721909030; x=1722513830; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=D8zPWrHDS7vF+EvLgmltqmL71OguXyASyp/scEOek/I=; b=UprVIST5CLURNZsyiJE9cliI+zJ6ZpKlYpRDQsr0plzf7VG2IITeOIjmNd2C2OpXZx fiZYjrVzCpO08CCX9QhVAqSjoTd1cVbQONlJ9oGY5RFATM3SRGk3CmZG7qrfUhZclA9y hkrTwJYcI9K2m00mzjVUwg24TbV15m62m+3FIUIerPYIXY1TZ+o/YnPe6lf6B60uU7Za RCIp+JTN/99FOtabN95daYtOsZ2fGt0WWKKXHrf5cxKe84fbZ7eZp28IGgyapqQHmlnc UXfHIbQks31SqaWEtJM3Ay7Cz7jLoclQpki7C8wPWigO7p/6+4i9Yw3WJzZ97AtkWZaz 5WSg== X-Forwarded-Encrypted: i=1; AJvYcCXdUwjKsaLtlX584t0tG/aYn0wJydHPA0yXG9ndjhOHBLLDRp2BPsWG/ym90KVpj5E7m80kUkzpj9emZbngwrwLrwo= X-Gm-Message-State: AOJu0YxEOQ7SEQYmxW0VQm+Fey9Y7+jXdkT+oiyI+TjLO/hTq0+tzlr7 EdL00KnIehtBLqb8GYI7C/B4N9Sm1ZLJGdpKWo4uyqKuNa0H7pPu X-Google-Smtp-Source: AGHT+IFS/vEZz/E0PTEIIQZKR17UrKx6WEv7e5WXfp9WA0FLEpgMW0DsWSig2jQ0r2aQvnJ2XXGt1A== X-Received: by 2002:a05:600c:45d2:b0:426:5fa7:b495 with SMTP id 5b1f17b1804b1-42803b58877mr16727925e9.15.1721909029574; Thu, 25 Jul 2024 05:03:49 -0700 (PDT) Received: from krava (2001-1ae9-1c2-4c00-726e-c10f-8833-ff22.ip6.tmcz.cz. [2001:1ae9:1c2:4c00:726e:c10f:8833:ff22]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-42808457c7fsm16771625e9.32.2024.07.25.05.03.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jul 2024 05:03:49 -0700 (PDT) From: Jiri Olsa X-Google-Original-From: Jiri Olsa Date: Thu, 25 Jul 2024 14:03:47 +0200 To: Andrii Nakryiko Cc: bpf@vger.kernel.org, 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 Subject: Re: [PATCH v2 bpf-next 01/10] lib/buildid: add single page-based file reader abstraction Message-ID: References: <20240724225210.545423-1-andrii@kernel.org> <20240724225210.545423-2-andrii@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240724225210.545423-2-andrii@kernel.org> X-Rspam-User: X-Stat-Signature: x37ubwsg89ss4s7hhyweye3zzytgg9xn X-Rspamd-Queue-Id: 8546E40032 X-Rspamd-Server: rspam11 X-HE-Tag: 1721909031-215792 X-HE-Meta: U2FsdGVkX1+EhqfzhKuH5mgzInnahMWwY5W6/2232frgUSmjb6CNhNrre8mm9zFXI3Nfwemm1v5lDRTr20QoW6JZUXlsxjtTiRstzMrh1MvANvxss5o6Z5pcPjjQsHOCGRPHP4+cMv/f2gSag/3m7nlyemndRV3gZxIbfetQg8w2htZD4IAZyesAEnXF2O3ncsooNfQUrK0istFH77cPXv0bvv1UNKvjNFYHlBUKjYYdvhYAnLGCz5uXZStnWYWSqNRKKhVhw1jMBfsrmdZAUCTrlnfhE9ospQE4u0VtlHFG1gW8ZcW+zrRQoLHO9CweBn+WUlvh+dsPfvNfgDnouLLdf2eKd1Y5i36FEmKa8M1hQWT9H4Yb90Q0iEFuG3bJhUQGfGfa66At40MUFy1K4uWClecJNbKZg1BEe67LD8rLweQ6pdfSDdjSqzu/dLSWyNbRhyh0dNj9BDzyshCfjIqMTeTaPZRe0IXcWmcGKQNXiLeqetx34S1zfO3BgsPA3m0uPNzAIXRGCmq+5UH1jg/QQoGxKA2iE4jYJkHvaL3ULZgk7u0/Z4J5K3lOpwleeu5gRc/5WdV0X5KE+N6UYi+2Uxior2EtJFyB3xlktP9soy4HiBrQY29FVdjcGvp43pLqhzJeH97hoTel1FAXrFvajhbU1ke1RE+2M7fEcwk5rySlBHPssTF5EGZtjkB+w2/0iPCUNEmWRft6cHsSDbSbg92em3d7vNTtpjYqkxEDDAbk75SA+Fmp3kHefl5p6JdHdytT7po4wSCPRPb5Cxu7K79qYC/oUSXN2VPTkIPzAY5iZMeSW1ExWYcRlJa6vdvFqKZ63DhMC63FL7XOpMQU9b+2NVl87UFwHHsnvuaEZgevM180kLPQZqCImr/1gdSnjXG8oazQuw+a9SsfYDMzdmZLZLIRSZl41xdRAO02ZBAYeWpXwO24BXna0FYVtTK9VoR7qESl2gL7GCa MqZWqwJr 5fYxqd8LbAhTb0iruw9jRMPCydufvBRDgIDyImhc8T6RxS9Awc+TJlzpFGbUwOGHqcy+al9tQPW38O8f+cO7WlekwGQd8Ure5ABHvGdReTBcCY5dsZ/RGVkvsssvvUnG5MItqsnhqB88oVyltELgR/NZ3Kpzi+XGVCAeZQ/YXw1tmekNm114/LaQZ8EQ2thVeEmRZK/RJwMWYniXPRUyQ5f95HJfiFHc1gwiZhfTccn7hIHWk/yz0DGyQugtB0FevGy/yCFx18TzeY9MGMeviIWCWUXUZ5jgvCVpj1iQHbrbZs11mtIgQtLzp/o6MLrVBCbMxqN6ERv+z14IlXvP7TVmEQyerySS836ax 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, Jul 24, 2024 at 03:52:01PM -0700, Andrii Nakryiko wrote: SNIP > +static int freader_get_page(struct freader *r, u64 file_off) > +{ > + pgoff_t pg_off = file_off >> PAGE_SHIFT; > + > + freader_put_page(r); > + > + r->page = find_get_page(r->mapping, pg_off); > + if (!r->page) > + return -EFAULT; /* page not mapped */ > + > + r->page_addr = kmap_local_page(r->page); > + r->file_off = file_off & PAGE_MASK; > + > + return 0; > +} > + > +static const void *freader_fetch(struct freader *r, u64 file_off, size_t sz) > +{ > + int err; > + > + /* provided internal temporary buffer should be sized correctly */ > + if (WARN_ON(r->buf && sz > r->buf_sz)) { > + r->err = -E2BIG; > + return NULL; > + } what's the benefit of having err, would it be easier just to return error pointer like ERR_PTR(-E2BIG) SNIP > +static void freader_cleanup(struct freader *r) > +{ > + freader_put_page(r); > +} > + > /* > * Parse build id from the note segment. This logic can be shared between > * 32-bit and 64-bit system, because Elf32_Nhdr and Elf64_Nhdr are > * identical. > */ > -static int parse_build_id_buf(unsigned char *build_id, > - __u32 *size, > - const void *note_start, > - Elf32_Word note_size) > +static int parse_build_id_buf(struct freader *r, > + unsigned char *build_id, __u32 *size, > + u64 note_offs, Elf32_Word note_size) > { > - Elf32_Word note_offs = 0, new_offs; > + const char note_name[] = "GNU"; could be static ? SNIP > int build_id_parse_buf(const void *buf, unsigned char *build_id, u32 buf_size) > { > - return parse_build_id_buf(build_id, NULL, buf, buf_size); > + struct freader r; > + > + freader_init_from_mem(&r, buf, buf_size); > + > + return parse_build_id_buf(&r, build_id, NULL, 0, buf_size); could use a coment in here why freader_cleanup is not needed jirka > } > > #if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_VMCORE_INFO) > -- > 2.43.0 > >