Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp8229528rwb; Tue, 6 Dec 2022 16:05:15 -0800 (PST) X-Google-Smtp-Source: AA0mqf7NZG4X3hSjdSEzwT+zo9xrZ567s3mkM5KW0ndBTGT+mG1bAPUYOhyKPUjb4jtKlknijVb+ X-Received: by 2002:a62:b501:0:b0:573:1959:c356 with SMTP id y1-20020a62b501000000b005731959c356mr72166445pfe.51.1670371514883; Tue, 06 Dec 2022 16:05:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670371514; cv=none; d=google.com; s=arc-20160816; b=Zki+rrvBdM5Pnm8Pu0gJiLd6T8Gc6rIFgA+1FD4GDGnJM1On9Ft8UfG9r37kSgMUUw rnxFWgjrxEdQvT7knJKX+dSjMrxG56kLzJG1E32hSmDyoFKY7DEFVIrnswq49sa/U+BJ 71o6nUDxjgsHOU0sI8PpVgQ/mbpKGXrdWmRLDnnjxRKUPEXZCsE+YAIRx2GcsVCfQCjj z2/lhl+CpxfZdFrhTsv7mqozGNZO1ppMNsWGq5ej7QDpSedfYwmGvuwRLsVbC+rgaYkk Gnn5um10iqeDRczdKZXRdYBbNzggkBicYQ8eM4EiIDxJx5YJuEei0QaIj1nwFRvWyclU Ckcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=jas4TSAtuN6LWbtIF+nPUMnpUZPrF2EDu/+wlEL6xKY=; b=RzcF9ON733++iqgA0vKRt87Kss22yCb9C0xIbvFElusU3ZlXIhZjmM47J1GVvTD8If Lim5tjigZ0LC3M/mqx5EKVN1kd2z7rWc6hn+AFqn5p9qTPdUC5gpdBy1LSaFADryxTfm Oi0BOnRyvX8oEgOZoTNMNoF/dDhNJvlj6DS55OwvYTQyzDas/I7EBrZ136GtU51u2tDM FOz3UsPdKkwkeOvnqE9kzTHioiaEnbI/laVTcBJn7ueActzodtVEAjAH2ROxLvpZFGbz IVplesthytxqpLJVxGKutK+DhI81eaijKNs0tKsUojFN2rl7BrG2tTs195nRvcNnOUX2 4qCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=TrwcaV6u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h16-20020a170902f55000b001899f747c32si20013662plf.348.2022.12.06.16.05.01; Tue, 06 Dec 2022 16:05:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=TrwcaV6u; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229740AbiLGABJ (ORCPT + 77 others); Tue, 6 Dec 2022 19:01:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51624 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229755AbiLGABC (ORCPT ); Tue, 6 Dec 2022 19:01:02 -0500 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A9C64B742; Tue, 6 Dec 2022 16:00:59 -0800 (PST) Received: by mail-ej1-x62e.google.com with SMTP id m18so8656953eji.5; Tue, 06 Dec 2022 16:00:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jas4TSAtuN6LWbtIF+nPUMnpUZPrF2EDu/+wlEL6xKY=; b=TrwcaV6uea9EW0PMoloiHKU/VSG8RGuKCGSV5hMfvnxtYoszOgUEiH17o2x69cfIDi 8jD8YuqOsLSwUreU6OftZ57y2nhckiGwC7ijw3ZgMNgf9ax4w4v1gLubxtC/zMQQC+0C yVAhKTJzt0PekNBrT4o2WNyJAdnKcSlei37WeaKQUylUM3p4pTfisqMfzM/qGvGQj3Pt 5zxz/Nij1OD3/f1atp0xegdXG9VMRPvH+2UZwh2mSEebSlrc18YF5MHajEqdMJUww/o8 xABO8HVOq9ksyM1pRieUM1TLoVgsGg+I1mxLu+Wl00WZxn+EXr6tEXTThGAerwOa8XBo dx+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=jas4TSAtuN6LWbtIF+nPUMnpUZPrF2EDu/+wlEL6xKY=; b=idgx4/5MmJOLKaHgCFngdQayfduGD4hm1AYxcWoqXhXSB9mbSUuXxzL4iJgeGlcPqp O1R6kVaiht6ruzCo/Vg6M25OHHlC4EK3Jimdcz6rGf3Z2KnAKWcbmxjk48uQLuwvx5BA A4RXXa/E8OijZsgw+Ok18Gm7rB+9G1/sZckKvy7RaqJ1gqbKdqBt6t51Cw8fS9qMTiTB /lp5BaWT5j6sJ/8oXZfMqMOxH/hZPI2qiL2yC1APNdOMwUVKSuSxer25VXpXxk9hJC8/ ROJVBjriS5m60ugW3aSmL6wqrqApyCmOFinD8WArTs4qwPSHoGArcpCVVrccPIJKTzQK DAfw== X-Gm-Message-State: ANoB5pkxyGS/95VPpwNmSGeDA3ZpV6mA6sved0QYu69Idma0pTW14hT6 jbLgBg6PqQfzIzWeBQE3ugpO8KnKEKfnUEx3QEk= X-Received: by 2002:a17:906:3e53:b0:7c1:1f2b:945f with SMTP id t19-20020a1709063e5300b007c11f2b945fmr275331eji.302.1670371257785; Tue, 06 Dec 2022 16:00:57 -0800 (PST) MIME-Version: 1.0 References: <20221203093740.218935-1-liuxin350@huawei.com> <6ac9f767-e7f5-6603-6234-97126ea22005@iogearbox.net> In-Reply-To: <6ac9f767-e7f5-6603-6234-97126ea22005@iogearbox.net> From: Andrii Nakryiko Date: Tue, 6 Dec 2022 16:00:45 -0800 Message-ID: Subject: Re: [PATCH bpf-next] libbpf: Optimized return value in libbpf_strerror when errno is libbpf errno To: Daniel Borkmann Cc: Xin Liu , andrii@kernel.org, ast@kernel.org, martin.lau@linux.dev, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org, yanan@huawei.com, wuchangye@huawei.com, xiesongyang@huawei.com, kongweibin2@huawei.com, zhangmingyi5@huawei.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Dec 5, 2022 at 1:11 PM Daniel Borkmann wrote: > > On 12/3/22 10:37 AM, Xin Liu wrote: > > This is a small improvement in libbpf_strerror. When libbpf_strerror > > is used to obtain the system error description, if the length of the > > buf is insufficient, libbpf_sterror returns ERANGE and sets errno to > > ERANGE. > > > > However, this processing is not performed when the error code > > customized by libbpf is obtained. Make some minor improvements here, > > return -ERANGE and set errno to ERANGE when buf is not enough for > > custom description. > > > > Signed-off-by: Xin Liu > > --- > > tools/lib/bpf/libbpf_errno.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/tools/lib/bpf/libbpf_errno.c b/tools/lib/bpf/libbpf_errno.c > > index 96f67a772a1b..48ce7d5b5bf9 100644 > > --- a/tools/lib/bpf/libbpf_errno.c > > +++ b/tools/lib/bpf/libbpf_errno.c > > @@ -54,10 +54,16 @@ int libbpf_strerror(int err, char *buf, size_t size) > > > > if (err < __LIBBPF_ERRNO__END) { > > const char *msg; > > + size_t msg_size; > > > > msg = libbpf_strerror_table[ERRNO_OFFSET(err)]; > > snprintf(buf, size, "%s", msg); > > buf[size - 1] = '\0'; > > + > > + msg_size = strlen(msg); > > + if (msg_size >= size) > > + return libbpf_err(-ERANGE); > > Given this is related to libbpf_strerror_table[] where the error strings are known > lets do compile-time error instead. All callers should pass in a buffer of STRERR_BUFSIZE > size in libbpf. That sounds a bit too pessimistic?.. If the actual error message fits in the buffer, why return -ERANGE just because theoretically some error descriptions might fit? But I don't think we need to calculate strlen(). snprintf above returns the number of bytes required to print a full string, even if it was truncated. So just comparing snprintf's result to size should be enough. > > > return 0; > > } > > > > >