Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp58599lfv; Tue, 12 Apr 2022 17:11:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxwxnlaP3rOH+mm8e59sSVak3nrgAF6pc9yrgYuUNxnXCBOuuieJ5tw3GF3GI7hDt8e/lhI X-Received: by 2002:a17:90b:1b51:b0:1cb:a2e9:7145 with SMTP id nv17-20020a17090b1b5100b001cba2e97145mr7716965pjb.180.1649808676429; Tue, 12 Apr 2022 17:11:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649808676; cv=none; d=google.com; s=arc-20160816; b=JobFiRfztIips0kvOPujssS/Z5l4sjmdHc0zJHJyaXIkqR5HXfBl9UUMHfwcWyxvfn N4pmw8lFMU6v+izbfbZ9wSAU1KdZ3ScrCer/lMHWasNLIF45P8WorM+ULogchzz3ETQc flWgock69yY6OR+zaN6O+1IGIJTQdyPBENoS/guXNt/1HozXCt63/UWrtjQeaQlQVX0h DuDh6Ss/OUtVuD2kE/koygvObhy5L24ChC/OfCnZ3BJxa27Cl2jH0cg689oM1qi18dhx neqXimr4XY3IkwPXYN9HH8RIoATPgpQ44utVlI0GdDDv56zOzYqfNb/D+tyPUvhUILZC freA== 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=FowTEmVpm1uPIFJNe+klnaydiP7lfevazg4UCPLydfM=; b=Wi8k8wod7EOD7uYAAp5ULzztySI12Ll7nSg1V2naJBenqtnHxhh/e2IQzTmWwJBQdW 8y65o+/yGLPuadszetQlkwPIwzbJAeNqldV1LmKxUlzNfyORXVHc5QvcQ4DpFKX4ccZ9 9xyz1Zv22Vr9+JRfkWM2vEVw3c9LJwW4QVCn3RmO7qbRUcGbk9Adod17i8ixXZyh5O33 w4j+tP+NBWJtyrwI5oy6y0cbhd8d/IFsftoyv7a/uNwK+OTLBxrL4QHvvTC9DLqx4Xso UlaNlOBsF1tw3GtYHNsD/F7zmpCC6futrtojOqLxRI1LDTe1qqB2LoKqAINmtLPiJ8HM 1KFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="K7tdn/q/"; 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 d19-20020a630e13000000b0039cc85e85e9si4017401pgl.531.2022.04.12.17.11.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 17:11:16 -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="K7tdn/q/"; 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 07420E5E20; Tue, 12 Apr 2022 15:24:53 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354730AbiDLMEq (ORCPT + 99 others); Tue, 12 Apr 2022 08:04:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351251AbiDLMCg (ORCPT ); Tue, 12 Apr 2022 08:02:36 -0400 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B2BF765A6; Tue, 12 Apr 2022 03:58:55 -0700 (PDT) Received: by mail-ej1-x62a.google.com with SMTP id ks6so11907419ejb.1; Tue, 12 Apr 2022 03:58:55 -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=FowTEmVpm1uPIFJNe+klnaydiP7lfevazg4UCPLydfM=; b=K7tdn/q/E1KWRJsGRBNoo8W3aoSvNQK66Im4Nk/Szs4rsCwKSPSUMqsmadZAf36Vn1 PmqO1YfKAILsMrn38IZBTNi12ZTE0WJZRwUUBIIPPLp6IT91kIWFiH8YkyP6f7F8qPTh uuw53VEL/i5KKVXcqIS8kirS//a8IJR0TE/SBcdtyrAgvCyL7PHKDMTaMTZxmKxw5yUh ILCaV4J0hAyoFLPQwxGs6FdHYv2ATMwW6OEnuCFejmAoRxf0/hr5de0M3a3YSxCCE8F3 3jBq7O4JK6sk970XlEkRdHOmf7sqnOSMlWNAgkBbJhXYyJLZ4zShhuo5KqihsxnSQHs4 LF4g== 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=FowTEmVpm1uPIFJNe+klnaydiP7lfevazg4UCPLydfM=; b=lSVDvyqIKgDHyWONgIV1RoYTHu35Iwe/RpKSteE+fIkYohtaQhqsowCxO/d3PxYavg 7Ts9j2fwjp8wBSTTwrP2Pv4nL6unaf6zuUesmwaWHWI3ZfDxHCmLp0UmmtjWAjIMzyi2 pPNDgjd1rlPH0m4V+SFsRP3tANS80mJ7qGVk7N8SHyVX3ONc4xk76BlXZtBBBEwbvSmw shyTkxDOZYQ42bJwPfmCvNq+vIzxsFuOi/UJ6QcGCvSz4g+tuJdbc/liPSkfA+FHfYC1 z6pC5Yf9AcGwNC9KY67RtHR/vHqzb3Tfgl0CvW15SMx/tr+Mtaz74ClVZhEzIA/B6Q+A ZvjQ== X-Gm-Message-State: AOAM532VMSmRkTWZdd+h5uYbElfiIiJJGTwPbRXWjgqYdcCmGuiPeEA+ HHJD3G/im6ndUdUJj0n6y84= X-Received: by 2002:a17:906:a005:b0:6e8:947b:7530 with SMTP id p5-20020a170906a00500b006e8947b7530mr8124695ejy.320.1649761134236; Tue, 12 Apr 2022 03:58:54 -0700 (PDT) Received: from localhost.localdomain (i130160.upc-i.chello.nl. [62.195.130.160]) by smtp.googlemail.com with ESMTPSA id f1-20020a056402194100b00416b174987asm16986370edz.35.2022.04.12.03.58.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 03:58:53 -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 , Colin Ian King , Arnd Bergmann , Michael Walle , Christophe JAILLET , 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 v2 02/18] net: dsa: sja1105: remove use of iterator after list_for_each_entry() loop Date: Tue, 12 Apr 2022 12:58:14 +0200 Message-Id: <20220412105830.3495846-3-jakobkoschel@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220412105830.3495846-1-jakobkoschel@gmail.com> References: <20220412105830.3495846-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,T_SCC_BODY_TEXT_LINE 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 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: Jakob Koschel Signed-off-by: Vladimir Oltean --- 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