Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1799972pxf; Fri, 26 Mar 2021 15:25:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5iLwGjMJSWCo4PJG1Zou/PIXD8V0f2xn32Mv34VylZALqWKCbopU/+r1sSW7uMXrXdbgW X-Received: by 2002:a17:906:a052:: with SMTP id bg18mr17636402ejb.18.1616797524260; Fri, 26 Mar 2021 15:25:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616797524; cv=none; d=google.com; s=arc-20160816; b=GeUlme1QCD4GIG75/hEeytczINkwDKkGYVmSW71zLAtOVJwFe5davUjXOJW1qQ0ko9 0///CnvHE4tJQlGtdbymJZzhqtSPXHyTa607foCx7zciwswKNpLysnUNmEKJE1wriYoP 5GL/rOqsG2tTCpm8qm9jt1ohlIioHpTIAxc97Cda+93aacwh7EFEgTLo63aNeJR3RzzO axP6VHXY2guCRFIaZnGq1JzTs6HcR2UXaxlQSL2PEPYUfGRSp2HqR6XAefSQCW4sy/+/ M+ycoLfp8V3oNBlHE8hi5Gpw6HRs56drzCa51ETb5TkcNLNDq0kMr7r9TzCcFm8wRI56 efMQ== 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=LXu3XAZp2hdY5DI6CxUXj5bqnMVMfuciWYTdWcsesSY=; b=jL8l79RXv8MTuwBVG1zwtByo7aBTHh79qM9WgzLockbWPEWIylivHgv2tQ+86Uubmn H0apMWVwhuaK441m5kz32FmdaKHZ3wuw3OzFW0PJrt5KEoiCjPY1I4TPCpBJSGNNRYL1 dpOrm0St9ANl02dqcZ/B3T+kafVO1a3NkrFRKSDoYDHthB6iYw/ElijXRoQjEX7Rz4gm AkEKbKYkmE8/dwWSuJrydQWDykniJa8KLBLF0MQnLH0p9Kz8WMuxpy8N4lsQB1GHbqQD 7qxE+u9jeXJUawsu74Kp0K719TRF+Zq2725FCztvFH6WxUNIgNLPS2o9mAN+UcEU0Wrf 1Ecw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=DPB8wNPy; 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 bz20si8830963ejc.70.2021.03.26.15.25.01; Fri, 26 Mar 2021 15:25:24 -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=DPB8wNPy; 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 S230134AbhCZWYD (ORCPT + 99 others); Fri, 26 Mar 2021 18:24:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229969AbhCZWXv (ORCPT ); Fri, 26 Mar 2021 18:23:51 -0400 Received: from mail-yb1-xb2d.google.com (mail-yb1-xb2d.google.com [IPv6:2607:f8b0:4864:20::b2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42619C0613AA; Fri, 26 Mar 2021 15:23:51 -0700 (PDT) Received: by mail-yb1-xb2d.google.com with SMTP id i9so7368787ybp.4; Fri, 26 Mar 2021 15:23:51 -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; bh=LXu3XAZp2hdY5DI6CxUXj5bqnMVMfuciWYTdWcsesSY=; b=DPB8wNPyV8UJUcbxD++4y+WfMPkwnWthrI4Zf1j4/sBoakqgV898gss1K6n8COMP6F tvpfCP4Cvy57smOZf3R8BgU2F8qm4/xnyYZETe8ELhYrska7TAyD0Qu2T1B5fITKZyec 5HYy4iTg0hp9u5120kK0Mvc1IXcF+1eSsyczya+zZ8XzNHsgNxAPvQotquvrcqa55IV2 hMAlbA1pFdTigsEm6EIXUW4vfdV9jR+w/hQ9bImfjDapbGXoiDQkO26+Nbgly1ZLJJd0 XhBs7XHNRUvi4Ome/rnJUkdl6d2ZLhi1aoL5UXwWY+Ndcys5c7IGz9eErAcM80EsEeNM jd3A== 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; bh=LXu3XAZp2hdY5DI6CxUXj5bqnMVMfuciWYTdWcsesSY=; b=huMCQmcH5qJX8yVJsoF1qGGaA3yiZdhdjI9r58mRAmt3UWYUZ+/TF2sVdm3F9weULn +kWLFjxEEktKS2StA+GD6nQPJGrwGQAhLA+1yk5plccEbtUNso6FH+pgN/FNMT4I+xbg 12UIbkjI6S9N7c0/WArrsOIlhKoYhCFIZf3W2IaQk/td2pR7yMSKdQT6TqnhOcZgomgV 2U/MDOVMK3+izC0CRsmAP4IBuXdQG/SZ1Ad7AMa+X4y/7Vw35hE3ECGivMKCJ8Cw0d8z YgViSBVS0u8uq5sue3cEmotKO3VSogL+D1YsSsCNRO+m6TWz3Xh1Q45MxaPgZqFBcrni T6gg== X-Gm-Message-State: AOAM530kkT2Pqhoqk2F/PyqHqIhTDp7sRIKmYlbcrv4HMdx7HNnE/Klv jhECeJKnv0GOIWLv5YmD6kF2gKLgTqrNRlGS4Sk= X-Received: by 2002:a25:37c1:: with SMTP id e184mr22626153yba.260.1616797430401; Fri, 26 Mar 2021 15:23:50 -0700 (PDT) MIME-Version: 1.0 References: <20210324022211.1718762-1-revest@chromium.org> <20210324022211.1718762-3-revest@chromium.org> In-Reply-To: <20210324022211.1718762-3-revest@chromium.org> From: Andrii Nakryiko Date: Fri, 26 Mar 2021 15:23:39 -0700 Message-ID: Subject: Re: [PATCH bpf-next v2 2/6] bpf: Add a ARG_PTR_TO_CONST_STR argument type To: Florent Revest Cc: bpf , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Yonghong Song , KP Singh , Brendan Jackman , open list Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 23, 2021 at 7:23 PM Florent Revest wrote: > > This type provides the guarantee that an argument is going to be a const > pointer to somewhere in a read-only map value. It also checks that this > pointer is followed by a zero character before the end of the map value. > > Signed-off-by: Florent Revest > --- > include/linux/bpf.h | 1 + > kernel/bpf/verifier.c | 38 ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 39 insertions(+) > > diff --git a/include/linux/bpf.h b/include/linux/bpf.h > index a25730eaa148..7b5319d75b3e 100644 > --- a/include/linux/bpf.h > +++ b/include/linux/bpf.h > @@ -308,6 +308,7 @@ enum bpf_arg_type { > ARG_PTR_TO_PERCPU_BTF_ID, /* pointer to in-kernel percpu type */ > ARG_PTR_TO_FUNC, /* pointer to a bpf program function */ > ARG_PTR_TO_STACK_OR_NULL, /* pointer to stack or NULL */ > + ARG_PTR_TO_CONST_STR, /* pointer to a null terminated read-only string */ > __BPF_ARG_TYPE_MAX, > }; > [...] > + > + map_off = reg->off + reg->var_off.value; > + err = map->ops->map_direct_value_addr(map, &map_addr, map_off); > + if (err) > + return err; > + > + str_ptr = (char *)(long)(map_addr); > + if (!strnchr(str_ptr + map_off, > + map->value_size - reg->off - map_off, 0)) you are double subtracting reg->off here. isn't map->value_size - map_off what you want? > + verbose(env, "string is not zero-terminated\n"); I'd prefer `return -EINVAL;`, but at least set err, otherwise what's the point? > } > > return err; > -- > 2.31.0.291.g576ba9dcdaf-goog >