Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4722487ioa; Wed, 27 Apr 2022 09:40:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwfX/xZlEqF4/5bYCC2pi0nLeCLQHcthpLws6EIsAbLK/PnHczoS/XWBn+l3L0lYW+nCcxw X-Received: by 2002:a63:2357:0:b0:3c1:42fb:cd7f with SMTP id u23-20020a632357000000b003c142fbcd7fmr3893693pgm.468.1651077611977; Wed, 27 Apr 2022 09:40:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651077611; cv=none; d=google.com; s=arc-20160816; b=zPVYTiiTJxMdNJb0P+OnQKaYSsAWJXVjJCS7kVITFfzlRDY99fYzwef6/DKcmtZR0X o23T42RTUyWhUUQgJAn7pIiSJYtt6MFZiazK4A82J2nAYGflBbBfBKDORnfRnNoQgg4W T96EgUoIVkdcxhv1BmNyM1nXMP4hlOSSQRgAYqRvFthA9iWArMCJm32BfDcL76j3B8ut xO1bTGwauYYiV2k5TqalKSQ8c2Dzh5Taz6c+LA2SWhgJUTE8jkz6OYeQQMWuSTJ/dQB2 jPCDvzQ4ab/wFu4xxaouCeWVA6E3MbgOQphK2gOUlKxqXItvgSVx+Dn+4Cvl1e6ret9/ RRkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Ry4cO5XKq+tSuqaPwnaD/oB6fR112JLGwCzZrnPEBlA=; b=qKWl8ngrvzAcB15KT4FLccLYrgMoJJMcCrX9M7T/Qrt9IGNkmxFR9S3cNoBDmjimxg AEdBnaMeJyrVMzAwV63dJyWOhfK3mh69aHnXeVMTVQk98RIv6jSX8EcutqLK8kmXGcV8 nsGv/HO7OL1T3cbIm7n6PrOG5kvfU4etNRDWN2OKQfSaU4HotLTtxcg2l9DQgrKW5PEt Qc19ExJ5pdQ7eAEhBLhjIYeou4m2aBvDBzvCOYTF6m5i8XSwr/SqS+8iQyC4VlxYkAB0 K2AdBvQQbxpi3x7s2K/1BQP+Czu0bXpYfkV3031Yk1i5nEjCtoVF2i8vXVHC4zzH7U57 ecbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=gTz2VhWR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id a2-20020a170902ecc200b001569eedd2dasi2273634plh.408.2022.04.27.09.40.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 09:40:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=gTz2VhWR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 4B47A3A6AD1; Wed, 27 Apr 2022 09:09:38 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241533AbiD0QMJ (ORCPT + 99 others); Wed, 27 Apr 2022 12:12:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241854AbiD0QLv (ORCPT ); Wed, 27 Apr 2022 12:11:51 -0400 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4284C3656E3; Wed, 27 Apr 2022 09:07:46 -0700 (PDT) Received: by mail-ed1-x52f.google.com with SMTP id b24so2485415edu.10; Wed, 27 Apr 2022 09:07:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ry4cO5XKq+tSuqaPwnaD/oB6fR112JLGwCzZrnPEBlA=; b=gTz2VhWRMedOoCha0T1KppSjULk3Bc0IGbzfh8dYjxj0EMR9lXQhicmKaHe9WX8kjX EDzy4DCZgowX8w66jFwEOxdW3OJWSpKXEb7hLc2rGLcGjJLW94luIc1K0woOWuGAT6bs eoru8bk/NksbqyIbrM7zkCX7jp4W8Z+Cl9BI99WOHmGOROz4wHLvdYp6mjCsCPb+XEn2 Aj5pJkeUi6siV5Ti4LW9sACgwKybqhKcVft6ZEOaacEDZVOn6HcPQyUSbRyYwyWCSu16 20AZk0c6WgnbUFseXQhY7NzwsMpDGqhwzgBrDYQdHOZ/vTTYz6MtyG/AlxQQ/ooEqthL PwCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ry4cO5XKq+tSuqaPwnaD/oB6fR112JLGwCzZrnPEBlA=; b=h33tvvPnzjtr9VLHHtFboeKkRz/wGdkRmwWg5t3V1tJotD4O1Nj1EA9b8HwEuc+tnd ZZeI7Hi5oKmzHXer9lblIkSI7r7DJbnzH1Iz3fsg4rbj5t6H8NJyBlW9jwRW+uj2MhWh t+jBpp7/lrx+aviRxRCTM2bucbc25SsQF6sdO0uGmpYVqTw737iomcY9CgfhTqei5Mga I7vEKdDGDEM+wSSnOKxG9tmYy8ZpxBUHAaXAx0hH0a1Qjma6NXgmuRlDjKjFGrPP3H73 8e196c3rJmTknsJEwo5N9RBrK39HB9ULRuY8F3AkAiR/wT/kQuShBMN9Y2H+TS/axO4D 45Mg== X-Gm-Message-State: AOAM532mR/gFdYuH1NdakUU+x0stXsx5O9KmMr2Ejwv7l3mHQJ8au3vF 6d2Chm5PA1Cb/OS0uvZx44k= X-Received: by 2002:a05:6402:486:b0:413:bd00:4f3f with SMTP id k6-20020a056402048600b00413bd004f3fmr31661472edv.103.1651075636619; Wed, 27 Apr 2022 09:07:16 -0700 (PDT) Received: from localhost.localdomain (i130160.upc-i.chello.nl. [62.195.130.160]) by smtp.googlemail.com with ESMTPSA id n5-20020a170906378500b006efb4ab6f59sm6984098ejc.86.2022.04.27.09.07.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 09:07:16 -0700 (PDT) From: Jakob Koschel To: "David S. Miller" Cc: Jakub Kicinski , Paolo Abeni , Andrew Lunn , Vivien Didelot , Florian Fainelli , Vladimir Oltean , Lars Povlsen , Steen Hegelund , UNGLinuxDriver@microchip.com, Ariel Elior , Manish Chopra , Edward Cree , Martin Habets , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , Jiri Pirko , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Casper Andersson , Jakob Koschel , Arnd Bergmann , Jason Gunthorpe , Christophe JAILLET , Colin Ian King , Eric Dumazet , Xu Wang , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, bpf@vger.kernel.org, Mike Rapoport , "Brian Johannesmeyer" , Cristiano Giuffrida , "Bos, H.J." , Vladimir Oltean Subject: [PATCH net-next v5 02/18] net: dsa: sja1105: remove use of iterator after list_for_each_entry() loop Date: Wed, 27 Apr 2022 18:06:19 +0200 Message-Id: <20220427160635.420492-3-jakobkoschel@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220427160635.420492-1-jakobkoschel@gmail.com> References: <20220427160635.420492-1-jakobkoschel@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE autolearn=no 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 From: Vladimir Oltean The link below explains that there is a desire to syntactically change list_for_each_entry() and list_for_each() such that it becomes impossible to use the iterator variable outside the scope of the loop. Although sja1105_insert_gate_entry() makes legitimate use of the iterator pointer when it breaks out, the pattern it uses may become illegal, so it needs to change. It is deemed acceptable to use a copy of the loop iterator, and sja1105_insert_gate_entry() only needs to know the list_head element before which the list insertion should be made. So let's profit from the occasion and refactor the list iteration to a dedicated function. An additional benefit is given by the fact that with the helper function in place, we no longer need to special-case the empty list, since it is equivalent to not having found any gating entry larger than the specified interval in the list. We just need to insert at the tail of that list (list_add vs list_add_tail on an empty list does the same thing). Link: https://patchwork.kernel.org/project/netdevbpf/patch/20220407102900.3086255-3-jakobkoschel@gmail.com/#24810127 Signed-off-by: Vladimir Oltean Signed-off-by: Jakob Koschel Reviewed-by: Florian Fainelli --- drivers/net/dsa/sja1105/sja1105_vl.c | 46 ++++++++++++++++++---------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/drivers/net/dsa/sja1105/sja1105_vl.c b/drivers/net/dsa/sja1105/sja1105_vl.c index b7e95d60a6e4..369be2ac3587 100644 --- a/drivers/net/dsa/sja1105/sja1105_vl.c +++ b/drivers/net/dsa/sja1105/sja1105_vl.c @@ -7,6 +7,27 @@ #define SJA1105_SIZE_VL_STATUS 8 +static struct list_head * +sja1105_first_entry_longer_than(struct list_head *entries, + s64 interval, + struct netlink_ext_ack *extack) +{ + struct sja1105_gate_entry *p; + + list_for_each_entry(p, entries, list) { + if (p->interval == interval) { + NL_SET_ERR_MSG_MOD(extack, "Gate conflict"); + return ERR_PTR(-EBUSY); + } + + if (interval < p->interval) + return &p->list; + } + + /* Empty list, or specified interval is largest within the list */ + return entries; +} + /* Insert into the global gate list, sorted by gate action time. */ static int sja1105_insert_gate_entry(struct sja1105_gating_config *gating_cfg, struct sja1105_rule *rule, @@ -14,6 +35,7 @@ static int sja1105_insert_gate_entry(struct sja1105_gating_config *gating_cfg, struct netlink_ext_ack *extack) { struct sja1105_gate_entry *e; + struct list_head *pos; int rc; e = kzalloc(sizeof(*e), GFP_KERNEL); @@ -24,25 +46,15 @@ static int sja1105_insert_gate_entry(struct sja1105_gating_config *gating_cfg, e->gate_state = gate_state; e->interval = entry_time; - if (list_empty(&gating_cfg->entries)) { - list_add(&e->list, &gating_cfg->entries); - } else { - struct sja1105_gate_entry *p; - - list_for_each_entry(p, &gating_cfg->entries, list) { - if (p->interval == e->interval) { - NL_SET_ERR_MSG_MOD(extack, - "Gate conflict"); - rc = -EBUSY; - goto err; - } - - if (e->interval < p->interval) - break; - } - list_add(&e->list, p->list.prev); + pos = sja1105_first_entry_longer_than(&gating_cfg->entries, + e->interval, extack); + if (IS_ERR(pos)) { + rc = PTR_ERR(pos); + goto err; } + list_add(&e->list, pos->prev); + gating_cfg->num_entries++; return 0; -- 2.25.1