From patchwork Thu Jan 7 09:49:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 12003413 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4999C433DB for ; Thu, 7 Jan 2021 09:52:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 85DD62333E for ; Thu, 7 Jan 2021 09:52:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727925AbhAGJvu (ORCPT ); Thu, 7 Jan 2021 04:51:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41034 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727903AbhAGJvq (ORCPT ); Thu, 7 Jan 2021 04:51:46 -0500 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 6B22BC061257 for ; Thu, 7 Jan 2021 01:51:11 -0800 (PST) Received: by mail-ej1-x62a.google.com with SMTP id g20so8937147ejb.1 for ; Thu, 07 Jan 2021 01:51:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0lIb6M9mgiYZY3hRKhHnSuCWG9h9HMO9fL86gPEBXrk=; b=WxvOVyjpUGzb2w35wYJGGUpLJ/e6rgZHMPza23pE2a5jOMUomQt6SarMAshUbmDmCt jKOztPdRw1oSLDD/kQ9GGOWmvcXgyux9KX46EEZj4bYRnsINRncR1m/Pq+NMoPHNlB8Y izlSacERS5Nlp6r8hckhTWqYgwozgVNNKVDz6s6ankBIiD2P0c2CwVNqjaEXds/1azft Rd9II9fbn1hl5V+8lCCFCV73A5sz1dks0hgf5U5+LKRLmoywRie+/jgMQgLYr1C9fLme s9OxQrhFWROZO2LJA1g4C9PHELdSF4PibUq1GVs9PtzebC+zrY0+chZ89gejGUg5VAdt DubQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0lIb6M9mgiYZY3hRKhHnSuCWG9h9HMO9fL86gPEBXrk=; b=BUg7JZBwGUiXQmTvEpH+LAAOZ15xDpft9aQd39gyfUtj9nof80P9K2Nk8NxCN8edPZ 2/hvfL9hScj/SnTGhEDrHfnpj4MIO9HHOVmMj5lCcuCMN48LU8jc1gGrCBLyPIg8DQ8s kDUZsHKjTCR9sVBSHvNYcMrGfKGYR0CQ3WAKyBCpE+qgZxC1blpDEyXZIjUgyMuDekQR 5ZwFSt+DhCKjBFQcZ11OsL6zzfgS7yzF0FtFt5Js/fMW4B47yowR5M6jX9w6zMv445UY nkpiG3YwewtEwhpUodi2X0VSaAYRGEbnJnV8AAKjUkadUB6tbpsdQmTxb9wg+VTrqzjy p3cA== X-Gm-Message-State: AOAM531e01WoSKIYXmuoNF5APBjdNke/GLOeUIvVke22m2aYhUP1hsv8 MhQwyD/aEdSAwC/8W3ZaE8g= X-Google-Smtp-Source: ABdhPJxy43sPMdDo4ftMVGMLK1FBqpRFE28YB0T+rAgSZaq1RJNqoYU4CcqYdAHKzpr4Jmk0JvcIlw== X-Received: by 2002:a17:906:9382:: with SMTP id l2mr6013251ejx.162.1610013070160; Thu, 07 Jan 2021 01:51:10 -0800 (PST) Received: from localhost.localdomain (5-12-227-87.residential.rdsnet.ro. [5.12.227.87]) by smtp.gmail.com with ESMTPSA id k15sm2251571ejc.79.2021.01.07.01.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Jan 2021 01:51:09 -0800 (PST) From: Vladimir Oltean To: "David S . Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Andrew Lunn , Florian Fainelli , Cong Wang , Stephen Hemminger , Eric Dumazet , George McCollister , Oleksij Rempel , Jay Vosburgh , Veaceslav Falico , Andy Gospodarek , Arnd Bergmann , Taehee Yoo , Jiri Pirko , Florian Westphal Subject: [PATCH v3 net-next 05/12] s390/appldata_net_sum: hold the netdev lists lock when retrieving device statistics Date: Thu, 7 Jan 2021 11:49:44 +0200 Message-Id: <20210107094951.1772183-6-olteanv@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210107094951.1772183-1-olteanv@gmail.com> References: <20210107094951.1772183-1-olteanv@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Vladimir Oltean In the effort of making .ndo_get_stats64 be able to sleep, we need to ensure the callers of dev_get_stats do not use atomic context. In the case of the appldata driver, an RCU read-side critical section is used to ensure the integrity of the list of network interfaces, because the driver iterates through all net devices in the netns to aggregate statistics. We still need some protection against an interface registering or deregistering, and the writer-side lock, the netns's mutex, is fine for that, because it offers sleepable context. The ops->callback function is called from under appldata_ops_mutex protection, so this is proof that the context is sleepable and holding a mutex is therefore fine. Cc: Heiko Carstens Cc: Vasily Gorbik Cc: linux-s390@vger.kernel.org Signed-off-by: Vladimir Oltean --- Changes in v3: None. Changes in v2: None. arch/s390/appldata/appldata_net_sum.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c index 59c282ca002f..4db886980cba 100644 --- a/arch/s390/appldata/appldata_net_sum.c +++ b/arch/s390/appldata/appldata_net_sum.c @@ -78,8 +78,9 @@ static void appldata_get_net_sum_data(void *data) tx_dropped = 0; collisions = 0; - rcu_read_lock(); - for_each_netdev_rcu(&init_net, dev) { + netif_lists_lock(&init_net); + + for_each_netdev(&init_net, dev) { const struct rtnl_link_stats64 *stats; struct rtnl_link_stats64 temp; @@ -95,7 +96,8 @@ static void appldata_get_net_sum_data(void *data) collisions += stats->collisions; i++; } - rcu_read_unlock(); + + netif_lists_unlock(&init_net); net_data->nr_interfaces = i; net_data->rx_packets = rx_packets;