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 EF275C3DA49 for ; Thu, 25 Jul 2024 19:58:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 64AAA6B007B; Thu, 25 Jul 2024 15:58:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5FAFB6B0082; Thu, 25 Jul 2024 15:58:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4E8F16B0083; Thu, 25 Jul 2024 15:58:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 319CB6B007B for ; Thu, 25 Jul 2024 15:58:20 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id A0E5916112F for ; Thu, 25 Jul 2024 19:58:19 +0000 (UTC) X-FDA: 82379336718.25.42B7684 Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) by imf21.hostedemail.com (Postfix) with ESMTP id D054F1C000D for ; Thu, 25 Jul 2024 19:58:17 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KPKlPvBG; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.179 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721937442; 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=Acxl1eLWMLAI+YhoDcfLtTaqlryH06l7E5ascqhYRFA=; b=ZAiNS/342fvrzTUnwKIPlWybF52d1/iJJ/AKiDsw4EA2y0Ko8T6NIsu30igFs7D7HnncTI mSuqwDMBHgjuyG+bUMqCAvQ1vp94RAXJyKpico8ox1v9dF36fhdIiymL4MBWcf7Y2uL+YM 5f5GPingDDL6eBXIZ6EeOSkr2FJ/GkM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721937442; a=rsa-sha256; cv=none; b=x2H3ECmPWsuUd+Qh3/Ta4ksHPut8lfhA6FM4Qej3nx7GPz/+sc8HOVyBOYmIvTIS5omf6h ELBPa/c+aT7GU6mBsntDZjfZM/QMcBfwQnIE6EBCk9EB2Uc0FO/VZgxdXt/ekZBiJVWqq/ PJoCVrESu3HMTgKr/LAMpREgxo1saKA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=KPKlPvBG; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf21.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.179 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-6c5bcb8e8edso179628a12.2 for ; Thu, 25 Jul 2024 12:58:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721937496; x=1722542296; 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=Acxl1eLWMLAI+YhoDcfLtTaqlryH06l7E5ascqhYRFA=; b=KPKlPvBGwTGMhsYTxUIM93bo8lI4GV30sEcQzynGu4tFNu48oIXELEDfa6oMLaSaR4 6FWed8sm+3oe5UdiuLHDzid47S2E6zUoltqpl/T3qcWv/mJGzHetQqz3vv0AH4DKOhW+ b9Biw9Ln41pxgAIDow+4FDdscctIdFNvK0SY6LOfEaX3mRwo3GCMp6ahIUjnCvkQum7E SGwhTQHe5VhohCYc9BIpYLaGLQ0u04PHivv57vcAB/9xU1k+7zKVUasZUpU57cu79i/R 0iKGG6QV2JRrADcHU/4rCnjZyN963zO4L2j1PhZZOMZXSxtylAqswT/rBjCtRsHacB0i OBkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721937496; x=1722542296; 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=Acxl1eLWMLAI+YhoDcfLtTaqlryH06l7E5ascqhYRFA=; b=bjdZWds43rySmFyp/NkSRT6xFxMnqwp36EYwhqp2JkkizNeR9j3xumZnXb+sa0mTrq kV/YltMhsNbrcQYlvkjc4jLHlyJK/2VStRoktkDqV07sujQ2Xnesqbn04VnsWyKRQGYh JmMT9zzrLwr8svr62xVvVd7EiGwG+hOoyRtiqrDjbop6dsQRwfgEfq9Ms5JHW6eageKy oUDumfCNlUeEYtyL3Cjyx+tjHLO7k1NTMpq2co5M9uwx7QSNGlJzRPPmA7ZTSbq7evlO a16Rb7zWeR44amm/+dOI6be6WYN6bw+1d9NkEtJ+0tekERL396YcpY77vyuZ20a8qjSc 7UbA== X-Forwarded-Encrypted: i=1; AJvYcCVpYpiN2pRrjHbWMw6wWU4HhFbfl6ml1q0H9f85upjORc0mIn7Fqxm60fOESWHp6fq3Eq5tJZ0DefNz/2xIjfQFNCo= X-Gm-Message-State: AOJu0YzQiCsriLDuF16L+Obwla4hCaf49rajw698Dj0AliDB8KxVZufX 1o5rk4zZa5HYpsQPXduZmsEyBjUUSRdxMg2OyQ2l5ejjpZEJYxCI++OCVD6+NIrsf/DvbfnlMt5 L8i54BW3+nvAYeim0ttUJA8F6Ekc= X-Google-Smtp-Source: AGHT+IFVfiZkVAZzL4l1tpvsMn9FT2/kmsEdXVqvIU9SUFMXrzcluVqbGU/RUNs8ApC8jDFtL4bUkVGRlMfud4zDs9w= X-Received: by 2002:a17:90a:ce94:b0:2c9:7f3d:6aea with SMTP id 98e67ed59e1d1-2cf2eb6b0demr3310880a91.32.1721937496438; Thu, 25 Jul 2024 12:58:16 -0700 (PDT) MIME-Version: 1.0 References: <20240724225210.545423-1-andrii@kernel.org> <20240724225210.545423-2-andrii@kernel.org> In-Reply-To: From: Andrii Nakryiko Date: Thu, 25 Jul 2024 12:58:04 -0700 Message-ID: Subject: Re: [PATCH v2 bpf-next 01/10] lib/buildid: add single page-based file reader abstraction To: Jiri Olsa Cc: Andrii Nakryiko , 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: D054F1C000D X-Stat-Signature: b8o9urjgth8tqeje3u1hqdxseukgnn17 X-Rspam-User: X-HE-Tag: 1721937497-131068 X-HE-Meta: U2FsdGVkX19uQYSpNuFS+v+IEKPjC9Lnhim6e7u7vNPYRD06X7cEMglMK/Z7hGy0GY/kXNtMi4sujMT4ALK3xYEZVa9GBlcgbaOwOvX0LlNnp1MJT8YfxEa37Si99twnc1UgGyLe1qreJ4QA1K450s40l6qcL0UaEriE3hsfL456cB1+6PedeQD3RllDyO7wf3Ochi3ZuwMu6FYgIZY5XB4bKPWpK3oHDRJOpP4rFHF2n5OKPWspIEpBlAsRq1ZZyLiVPNALL77n7LLvyFUZSRY2X+5+4M8qFP4Q9iLm5UVmH2SUYNUN0i7gRNqtEbV5dFAvWP/eF/cffSagtStcfnsw7n3bZUi0Dmbzt2qrr4GwIH/lHw/cnWSFAu8VSeomKePtg9W3IqwAhY2kZF0EIZX0b8PzA+/416/6cCQd3V5mNCkfOWiCO1T1z/yv5Bl6pZOk3cn+JWimLyB4NHvE1wciDUVxjAHcFh4TWmFksPsV0lN8elf85GE4Xa+j/RPhph01jUL1moL2KCOaEnSQ2ZfxOszHRRekdp+cnOojfM+S/dBMA8QYz2nYOVdpltpAHJ9QLiU7L7YAwKQTk3yOdHlKHxC+mwRqUdQKEMMGhnpz08G9Kjea2bD+nkCt0c4oMu3nkAw4FWRuO4hlVY42bzuNfY+goeGJFa4oUGoghtGxzgBJQU/jeZb0WTgNdep6Kr1u2G5kgybN4ve8LR0BlyZ2e4BoDAgUNWcVlT+rOmXjBpHEogm0vu44ytOd69FI30eq637C5duHh23GF6isgZlJXj+SjDjO0kBxG53ZQbQmhxMz3lHv8OP6vWIkFrjhg15h3H4Apsp7nh/e6g5lVAdou0fzefT/7ZoVYBxl2n7opd8fArk3dl4EbYw8FLsnZqMr2lhQ2E34OhSpXcDPfNP2jh5ouNYO7RbuY75JcQ4JcCferbJTNTZB9Kce2KTUZDGbFCuTqINBny8y+3E DrW8Te1X /Jm1GK/6Bf/T6Y3+iHxuiD3ei4cZ0/ZMxeys/qg4UqLNCq9ZCgWIDuul505rF4eqy6x5ulM2zQcrhCcmdJe5gggcdfIFPJiHlal/rdQNwyFL/gwG3tPXzjdKKWCBPs8iVYpgj2Sgfn70s4bd5EldE5wewK8JHle6ilzA2YdFRSUJAP3N2QvbfhCAqHug+Zc8o+4cr1eWTGQ0KrbrCFUIJmTZhRzLNataL4pRMaT8U5nNIFemFwO1mlhrQCfUj8ao+BEbXqOP8cUffnOzs2ms6jV3hK1DSf9on0aT/Wluq1W1alrHtjp23ExXU/fbNLmygK/0mUESUPX0ppw8xPHP3f7PDuYt6GXGRPSs4Eu6SC+/CYHY86nKP7/Kz3onX1x7zEy/CVVIcDHgn7njE7uNRk6wbuU7TGuIsXpQCQ2EqxtPPboUUn06vsJmeyQ== 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 Thu, Jul 25, 2024 at 5:03=E2=80=AFAM Jiri Olsa wrot= e: > > 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 =3D file_off >> PAGE_SHIFT; > > + > > + freader_put_page(r); > > + > > + r->page =3D find_get_page(r->mapping, pg_off); > > + if (!r->page) > > + return -EFAULT; /* page not mapped */ > > + > > + r->page_addr =3D kmap_local_page(r->page); > > + r->file_off =3D 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 =3D -E2BIG; > > + return NULL; > > + } > > what's the benefit of having err, would it be easier just to return > error pointer like ERR_PTR(-E2BIG) > There are many calls into freader_fetch() and I didn't want to have a very distracting p =3D freader_fetch(...) if (IS_ERR(p)) { err =3D PTR_ERR(p); ... } pattern everywhere > SNIP > > > +static void freader_cleanup(struct freader *r) > > +{ > > + freader_put_page(r); > > +} > > + > > /* > > * Parse build id from the note segment. This logic can be shared betw= een > > * 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 =3D 0, new_offs; > > + const char note_name[] =3D "GNU"; > > could be static ? could be, but why? it's a 4 byte value, compiler might as well optimize any sort of note_name[i] access into known constants > > SNIP > > > int build_id_parse_buf(const void *buf, unsigned char *build_id, u32 b= uf_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 > probably better to just include freader_cleanup() call, just in case? > jirka > > > } > > > > #if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_VMCORE= _INFO) > > -- > > 2.43.0 > > > >