Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp881536rwl; Wed, 12 Apr 2023 05:34:27 -0700 (PDT) X-Google-Smtp-Source: AKy350a3hp5hVdoFy4f0qAH0qxN4ZjZVVyqSJNcYdmND5ulqx4anyVnkfvKTtTnK7+AH4ltRNRgO X-Received: by 2002:a05:6a20:7b2f:b0:eb:a859:e870 with SMTP id s47-20020a056a207b2f00b000eba859e870mr2100390pzh.20.1681302867186; Wed, 12 Apr 2023 05:34:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681302867; cv=none; d=google.com; s=arc-20160816; b=iKrdXSckgE6EPAHDcJ8HZ8q5LDWjjXJIRkO7FGWFZx8yga4d6GA5PXPZRqSL1kULCx VRU1ciJ+tsfizglOXuADSAPcg2uZI0nJqmBM3BN5iFshj4kC6i6Ie2ACW6IyoJ1gR9Wr teg5cwlKYmgx8bzZAO03GL6QxdNQ/gp5bUOqKQroXotiyHvEXeFQqyPeGL+xPWFq2+92 NLUWrqkhBm7s8YclJ1oOmsgB7MpS8gXqpKe8b31dXfD4JtBciT/e/+FwfdLa+OB4MEP9 0LFuECQ+fxbXG5GnEzN+TY/iW8aqr7zAgoZbZG9ArIPCEZfT48sz29pD+/vMj+CdrXeT R+vw== 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=/O6Nj/K8x+UbB7+iXw6fuXB1jhbuZSXJ2zfOCDmF/mM=; b=jQKtsGcPu6ADHoRsppGlI835IsiTbVKLNTTHoX6fvcGfJggJaT0ERBmyZVhLLZR70d XaTuS7Tq6pN1QwyV8xgLvd7Ogni5/nOMF9dugrftsS+tUTyDuoBtqdvClj5SqrgfCj2j 1cCCrib9k3ZRAqAIBAgdkkcIUxrY/CPq8EiF9hWCw52zCzCz09uCBHeWJ3pkh0rDdOuK Tgc3eYnNsRyxOoVIbEHyLFqsOb+6wNd8NZ6wN3fkWJ80ndqZmCEKZix3YYFc6mWUipNo jdvYwHgW5Pv+ZiFjr3tEVA4420bEDAU4ypPBUFJu9Kr6owYYekWjhpCLwHBj6NiqADID YCcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=TG8EySB6; 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 f35-20020a631f23000000b005192614041esi8629471pgf.519.2023.04.12.05.34.14; Wed, 12 Apr 2023 05:34:27 -0700 (PDT) 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=20221208 header.b=TG8EySB6; 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 S230214AbjDLM2u (ORCPT + 99 others); Wed, 12 Apr 2023 08:28:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231533AbjDLM2j (ORCPT ); Wed, 12 Apr 2023 08:28:39 -0400 Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AD9D2697; Wed, 12 Apr 2023 05:28:36 -0700 (PDT) Received: by mail-yb1-xb33.google.com with SMTP id f188so43265731ybb.3; Wed, 12 Apr 2023 05:28:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681302515; x=1683894515; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/O6Nj/K8x+UbB7+iXw6fuXB1jhbuZSXJ2zfOCDmF/mM=; b=TG8EySB6eP49fXKnStYVjTdbyTT2n29bAyQp5kNp8Wq5e3jvPMIkWlq0xhBoOoUlUY co0XbxU6SoCTyB+UJEfgyBagFASojXaAwI2FMV6eYk6pEpqUmItVq1Gr5hUS39vrJkIQ 7NX/XtKCIedG9qUeLJzg6oJVoUyzH9UOr3jtVlBHHCmbjJo9rbMbqlVdlVeBNVmmIhxp MphnqjtEHJYJTUEE1XX9uIUr+25YSa/BEdhXAYzgzesGtnF4GEKDtwlFhugWwIeJ7Cis e76o0Rc6kSlyGSjFDP1LjHnQ4PmzIKUlxSysVgIzewEd9VPQyjm+EEd6ZLlOaX7wbd6k m4og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681302515; x=1683894515; 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=/O6Nj/K8x+UbB7+iXw6fuXB1jhbuZSXJ2zfOCDmF/mM=; b=t9FIczBBRVo03pKUhp3ip9q030djoY8/u7LJUk9vxrDw5Nz8LxLVBOgTW9HMPdZ+1/ pXlbJ5vku5LS5zO8a6r19g3apOxoRdGlJbnaod/SJUTsuQX94aBJfm8dJeNT41MtUyCt emxgzmWV71mMhorEa322Ao3uAfxHS00xwxPW5wgIrgd6bCE+zIj/DmIIu9O0iVLilF1V EW1022s1sF/YPJF4pFejrtG1dlilhH4vnNtrEMnVFXvmVYhoG01XumYUtHYpasb4/iga aQn0fugdW9EDAk22j2CSqx0EY7Bf+GRVPAglER5T22Y0CC2Ljj1zTlXeXmSr5N0Q7Nb6 2vwA== X-Gm-Message-State: AAQBX9cwYtCe66qU/QIOXhirSrgS+2p80rBS+JdwaXBeGt5Fh1vFhR2t TFMbSJ96MsQb9EBR/fX4F0t+L1kqDcJyIcYZCQEmnz8AjwEf9A/hXdU= X-Received: by 2002:a25:be11:0:b0:b7d:4c96:de0 with SMTP id h17-20020a25be11000000b00b7d4c960de0mr6885329ybk.5.1681302515601; Wed, 12 Apr 2023 05:28:35 -0700 (PDT) MIME-Version: 1.0 References: <20230411130025.19704-1-kal.conley@dectris.com> In-Reply-To: <20230411130025.19704-1-kal.conley@dectris.com> From: Magnus Karlsson Date: Wed, 12 Apr 2023 14:28:24 +0200 Message-ID: Subject: Re: [PATCH bpf-next v2] xsk: Elide base_addr comparison in xp_unaligned_validate_desc To: Kal Conley Cc: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson , Maciej Fijalkowski , Jonathan Lemon , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , netdev@vger.kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org 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 Tue, 11 Apr 2023 at 15:03, Kal Conley wrote: > > Remove redundant (base_addr >= pool->addrs_cnt) comparison from the > conditional. > > In particular, addr is computed as: > > addr = base_addr + offset > > where base_addr and offset are stored as 48-bit and 16-bit unsigned > integers, respectively. The above sum cannot overflow u64 since > base_addr has a maximum value of 0x0000ffffffffffff and offset has a > maximum value of 0xffff (implying a maximum sum of 0x000100000000fffe). > Since overflow is impossible, it follows that addr >= base_addr. > > Now if (base_addr >= pool->addrs_cnt), then clearly: > > addr >= base_addr > >= pool->addrs_cnt > > Thus, (base_addr >= pool->addrs_cnt) implies (addr >= pool->addrs_cnt). > Subsequently, the former comparison is unnecessary in the conditional > since for any boolean expressions A and B, (A || B) && (A -> B) is > equivalent to B. Thanks Kal! Just checking again that you ran the xsk selftests on your change and that it passed? If so, here is my ack. Acked-by: Magnus Karlsson > Signed-off-by: Kal Conley > --- > net/xdp/xsk_queue.h | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/net/xdp/xsk_queue.h b/net/xdp/xsk_queue.h > index 66c6f57c9c44..dea4f378327d 100644 > --- a/net/xdp/xsk_queue.h > +++ b/net/xdp/xsk_queue.h > @@ -153,16 +153,12 @@ static inline bool xp_aligned_validate_desc(struct xsk_buff_pool *pool, > static inline bool xp_unaligned_validate_desc(struct xsk_buff_pool *pool, > struct xdp_desc *desc) > { > - u64 addr, base_addr; > - > - base_addr = xp_unaligned_extract_addr(desc->addr); > - addr = xp_unaligned_add_offset_to_addr(desc->addr); > + u64 addr = xp_unaligned_add_offset_to_addr(desc->addr); > > if (desc->len > pool->chunk_size) > return false; > > - if (base_addr >= pool->addrs_cnt || addr >= pool->addrs_cnt || > - addr + desc->len > pool->addrs_cnt || > + if (addr >= pool->addrs_cnt || addr + desc->len > pool->addrs_cnt || > xp_desc_crosses_non_contig_pg(pool, addr, desc->len)) > return false; > > -- > 2.39.2 >