Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp374279pxy; Fri, 30 Apr 2021 07:17:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyDnND0fDPvylUJTV8FhtVSKZAsLvauiX39tW3pvtm/5ncuL/i/yF8WizS3Jsk8r9dQ/oJE X-Received: by 2002:a17:90a:b292:: with SMTP id c18mr16023496pjr.179.1619792278239; Fri, 30 Apr 2021 07:17:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619792278; cv=none; d=google.com; s=arc-20160816; b=rFjNW9q2OcJxt77AqLXxzYDXdfmer+2cPxbavpCzWZZ4sh80/8pTEktCamNktuu46a 9XHfvEb8mNG5yBZw6eG27JxdQsv4jCI3d3XjoULNTXulZZv0wM34BZETxk9AparOUnOn LNzJtHey4A3iogbtrv/EmgZ+udTiVRrSmBaZtZ6IaXTNTfY8toM5yqvnRkZ6B0ZBIaDG DjqGZ0FJ58gkYJ+r8CUoMy44NKQrWV9Tibvt2UWha9lYE0im5ys01duW0FoILbedeMfS CRprr8ci5ezuk9aV4V1FXl5SZjSoPIEFiGqZYqXKHAkPR3tX4Mj93opRodIfuCMB47gV l3aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=08k08CgX5BilS2vJ05XkgnS9mG6yls8RajFj4RRSwsA=; b=TlLvTVkglN0qFjp+2/c1RXhmch94eNXnTsm8Qymh+LsVeIscsiebfupRoQoLDQg4jO 2sJS1dJKg4lw7yjlHexCACMAsz8VueGj/VlMmvwgOaIZZYXxN0taE72t5aS1rAkS/Xf6 Busmwa6IXuey7jZ5pCMRGF9bPEN4yuJ3uPU3dkMlMx9y+AICCx/dWKpXgl9KC8D2AgEI S5WYvjm2st9raZhq1Kfb3yqNGv5GeMbASJ71SruxqFXWfgniQc5XZHOnOWw3Mz6eweSw nQvXhSDj2pMBtJXdDAkhTuv5JEbbWfZuORuRvvNbD7kFdGMJShRbDeAytmGUO1GSBwXZ q3Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="Pa/JGrPw"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m8si4076128pgd.18.2021.04.30.07.17.40; Fri, 30 Apr 2021 07:17:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="Pa/JGrPw"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S232609AbhD3ORS (ORCPT + 99 others); Fri, 30 Apr 2021 10:17:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229707AbhD3ORR (ORCPT ); Fri, 30 Apr 2021 10:17:17 -0400 Received: from mail-oi1-x234.google.com (mail-oi1-x234.google.com [IPv6:2607:f8b0:4864:20::234]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31E8AC06174A; Fri, 30 Apr 2021 07:16:28 -0700 (PDT) Received: by mail-oi1-x234.google.com with SMTP id u16so52821005oiu.7; Fri, 30 Apr 2021 07:16:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=08k08CgX5BilS2vJ05XkgnS9mG6yls8RajFj4RRSwsA=; b=Pa/JGrPwzoZCRcYp+/IQbD9dj9lzN1/KDddM9Xnlnf4Hdo+phrGcRuwNwemCNNuGWX GU5V/ZbZuMF1UXZwL1i39SPVOs1hZHZq6ztpvquBLtxZ+xRQm4AMvB5PQtPM7/S5QWRH uTb61LUautMhXWdSti7ze4l6OxTUBhhO+0jDbRm8OntcX9IqtpugyfSwmvFB+EMehuq4 mh+UqsdbJ4a7D5Uy05gdJiwfWugCrCwulw79JWL1r2q3xuGKuiCDQ891ThSAFPiOhhdE Pd43IFFUPz+sr65o3P6yq8idu0GykSRsGJLxnjeDOalzn4A/6bF/UrP+PBVjBjYGWgqq BgqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=08k08CgX5BilS2vJ05XkgnS9mG6yls8RajFj4RRSwsA=; b=nW+dUPH1s2wCgUcONV40C3HObW9zPSe9sbWlNNZW+K8O/a57fHYba/ckGTR5pTM5aC JxRu1IZPc7IfZ+jYCFVuTdArND47VDxxQIXmN4/ofDugU8y8g03QybyollhnDfvRBGY0 6jBZMweEaUYF+M03SZF1AaJxRN+uDDCmDB61/iZXWl3+mRZLWacSW9Le6f/II+XBcJaf k6G3NjingohKkMdq3wl8psHzpboIuH94pMq/g5cnHLlSIJGPV6M/AL5GKrk7wMpF/Q4Y Rtog8M31eQ1ukhbJBmuDjjNisjUtjfbV3FFtxkSYnAZM6yidZ6tYUEPGT/M7L1fZ6HqV QEGg== X-Gm-Message-State: AOAM530bGq6UPDH/Jtlj1J4A59MEYKOkvAxKLtdhC5JQdW379q8d/49q +/Qt++RCxgZi/PJ5oZqSTmVmkadirKi8bhRnsk8= X-Received: by 2002:aca:5c44:: with SMTP id q65mr4062960oib.12.1619792187587; Fri, 30 Apr 2021 07:16:27 -0700 (PDT) MIME-Version: 1.0 References: <20210424221648.809525-1-pctammela@mojatatu.com> <7c789fc1-de3d-5232-4d32-5bd3afbf26ea@iogearbox.net> In-Reply-To: <7c789fc1-de3d-5232-4d32-5bd3afbf26ea@iogearbox.net> From: Pedro Tammela Date: Fri, 30 Apr 2021 11:16:16 -0300 Message-ID: Subject: Re: [PATCH bpf-next] libbpf: handle ENOTSUPP errno in libbpf_strerror() To: Daniel Borkmann Cc: Alexei Starovoitov , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Networking , bpf , open list , Pedro Tammela Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em ter., 27 de abr. de 2021 =C3=A0s 13:18, Daniel Borkmann escreveu: > > On 4/25/21 12:16 AM, Pedro Tammela wrote: > > The 'bpf()' syscall is leaking the ENOTSUPP errno that is internal to t= he kernel[1]. > > More recent code is already using the correct EOPNOTSUPP, but changing > > older return codes is not possible due to dependency concerns, so handl= e ENOTSUPP > > in libbpf_strerror(). > > > > [1] https://lore.kernel.org/netdev/20200511165319.2251678-1-kuba@kernel= .org/ > > > > Signed-off-by: Pedro Tammela > > --- > > tools/lib/bpf/libbpf_errno.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/tools/lib/bpf/libbpf_errno.c b/tools/lib/bpf/libbpf_errno.= c > > index 0afb51f7a919..7de8bbc34a37 100644 > > --- a/tools/lib/bpf/libbpf_errno.c > > +++ b/tools/lib/bpf/libbpf_errno.c > > @@ -13,6 +13,9 @@ > > > > #include "libbpf.h" > > > > +/* This errno is internal to the kernel but leaks in the bpf() syscall= . */ > > +#define ENOTSUPP 524 > > + > > /* make sure libbpf doesn't use kernel-only integer typedefs */ > > #pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64 > > > > @@ -43,6 +46,12 @@ int libbpf_strerror(int err, char *buf, size_t size) > > > > err =3D err > 0 ? err : -err; > > > > + if (err =3D=3D ENOTSUPP) { > > + snprintf(buf, size, "Operation not supported"); > > + buf[size - 1] =3D '\0'; > > + return 0; > > + } > > + > > if (err < __LIBBPF_ERRNO__START) { > > int ret; > > Could you fold this into the __LIBBPF_ERRNO__START test body to denote th= at it > belongs outside the libbpf error range? For example, could be simplified = like this: > > if (err < __LIBBPF_ERRNO__START) { > int ret; > > /* Handle ENOTSUPP separate here given it's kernel inter= nal, > * but for sake of error string it has the same meaning = as > * the EOPNOTSUPP error. > */ > if (err =3D=3D ENOTSUPP) > err =3D EOPNOTSUPP; > ret =3D strerror_r(err, buf, size); > buf[size - 1] =3D '\0'; > return ret; > } > > Thanks, > Daniel Sure, looks simpler indeed. Pedro