Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp1028358iob; Fri, 13 May 2022 20:13:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyauB0hV0IoG/VNhJ1N6kpUJ72tOgeRaqitYj389sGSMSHiI1dnuOTOSCVYTuhNAWn2/oA7 X-Received: by 2002:a05:600c:4f49:b0:394:8125:8b6 with SMTP id m9-20020a05600c4f4900b00394812508b6mr17228155wmq.80.1652497983043; Fri, 13 May 2022 20:13:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652497983; cv=none; d=google.com; s=arc-20160816; b=BfKsMlbRa6bEE1wAOUe6ReMglcUo/uOPUAjpFQfPijz9j2vUFXPbQjbmW5ajVTh8uo 5y+25QbBTCx2Av3zT/x5ZE7gupGei80yE/SBVP5srcfhL+fuYfB0tgDk9Wdnbqqz9bSK onSKg889/fIjYFxbI8xuqaR/ySM1H9YNkZmqWcuPBs7Tvoo7P8K8TCAuMSkmEfqbKtr6 lhjTSc+PfhLAvsWKxf30aYq7Pd0Y5k4D7JKqCfNxRhInXvLJQT/bPGfw0gewpASRPK/C LSMV9DIGWmSA5aYMI2z5VNRTE8KYjSLMaz/jk6KxQNfeSZ95C/hY8U4+AUClvJWEmOkH yiKA== 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=l4JJk+ewG2LNWAOShIee96q+d5mTnr66IKaxT9DB1Ig=; b=QTK5ZSXPCkhhKeuwkYOptV2RzMLbbb2PN417AT6oqplUbQPDxGGhfohaK4JNW1yOZJ n86OsEjL6MnyOm5JxdUG2ZPrqm9aXFtKneV/7SicZ3PyukpzF5YBG55ij+DVCDZMRrUz wsgA+U15ZZlSYF3GlzPMVnzH3VATnYT9WhcqtyFWjw4p8TGkMKY3iV3JOVAdq1vIsWEM RRZQWY8Cwg/hSJ9gGA4+W/Yr6NV8V3DLCZwV7b4x/A5Aws96v30ArVvz2APG/f4/K+mk L2+cXhOjXkgLg1d+Il4AcaDlbiFTv7hNrEwWjz9Cv3Fo86J/7+Qgy9c5E8aeVOAXW6ac SGqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=p+VLViJP; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id b12-20020adfd1cc000000b0020784463feesi5111721wrd.552.2022.05.13.20.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 May 2022 20:13:03 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=p+VLViJP; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 095183D3427; Fri, 13 May 2022 16:52:51 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358677AbiELVS4 (ORCPT + 99 others); Thu, 12 May 2022 17:18:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358678AbiELVSy (ORCPT ); Thu, 12 May 2022 17:18:54 -0400 Received: from mail-yw1-x112c.google.com (mail-yw1-x112c.google.com [IPv6:2607:f8b0:4864:20::112c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E77018D6B8 for ; Thu, 12 May 2022 14:18:52 -0700 (PDT) Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-2f7d7e3b5bfso71322547b3.5 for ; Thu, 12 May 2022 14:18:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=l4JJk+ewG2LNWAOShIee96q+d5mTnr66IKaxT9DB1Ig=; b=p+VLViJPr40k3kQbPAzBNiPW9Kmv8o59a0sJPe4L6FHZdn06b8e+lqxEm2icfgN7M8 cuRdhC5ct+EW4wfjW5CqaunZnXi5GplVU/oqKuWLEWMXx4BRMgVOV7uqsCV6VeR3oedB Sw30gbGMsyOlN+n9zcA6doK9KeWdvJIpmxOn+R0/mmXkxggbp0GjblysEKck1PDWvfg/ aMDknvoRWiwQ2n9nMOWZwW6OrbuX/SnQl3fCWF09MRAZu+QZ4SpBLuhg1SYbWLI5iz1a 3RFmsjz0aWJ3ZsuOLAlXkWhwLn32n1DfyWOOHLjrCHcANtTOmjpItAzkB07EW9JfAurL jQSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=l4JJk+ewG2LNWAOShIee96q+d5mTnr66IKaxT9DB1Ig=; b=Tx7xtnckFo2Ir7OxR4qhj3iKAfIdNwqDae1ac1jX8YxizNp5rg8PKQU7eEtRsYGE8r shXAkVjPVokZlknJnqK3deyLC+q1mhm87feTAoIU3Sk9Snm83vrh8DfIoWuMpylopjuc rIaGjwpoSqeoQhWtiU6HU0f5Uz2VInpcfRF4X+lri/65q92Yh5RqKLqtwJXgNmSZEWEV sBPYlI8Vnl2LrpSefg+ML1bgyHGAN0Q06VjcQC9ppP/lMYOmHwIWGrW9Fn1jsGXYTnGb wfNoJa5ncf594PadDwAa/fVM9HN/m8BaRs/e4wJvhXKHDHdApuFWdk7PJU/olTnJ54fB mafg== X-Gm-Message-State: AOAM530HJ0+WU12WSDG4gSkd29mbNQq0nzhbMxI218DgXYIOSjHCgV8P bYnOd8oRvrKVAbFC33a1Y+N3L1FelyXRT1I/be4h4Q== X-Received: by 2002:a0d:cbd8:0:b0:2fb:958e:d675 with SMTP id n207-20020a0dcbd8000000b002fb958ed675mr2270591ywd.264.1652390331960; Thu, 12 May 2022 14:18:51 -0700 (PDT) MIME-Version: 1.0 References: <20220512103322.380405-1-liujian56@huawei.com> In-Reply-To: From: Marco Elver Date: Thu, 12 May 2022 23:18:15 +0200 Message-ID: Subject: Re: [PATCH net] tcp: Add READ_ONCE() to read tcp_orphan_count To: Eric Dumazet , "Paul E. McKenney" Cc: Liu Jian , Dmitry Vyukov , LKML , David Miller , Hideaki YOSHIFUJI , David Ahern , Jakub Kicinski , Paolo Abeni , Neal Cardwell , netdev Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL 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 On Thu, 12 May 2022 at 22:06, Eric Dumazet wrote: > > On Thu, May 12, 2022 at 3:32 AM Liu Jian wrote: > > > > The tcp_orphan_count per-CPU variable is read locklessly, so this commit > > add the READ_ONCE() to a load in order to avoid below KCSAN warnning: > > > > BUG: KCSAN: data-race in tcp_orphan_count_sum net/ipv4/tcp.c:2476 [inline] > > BUG: KCSAN: data-race in tcp_orphan_update+0x64/0x100 net/ipv4/tcp.c:2487 > > > > race at unknown origin, with read to 0xffff9c63bbdac7a8 of 4 bytes by interrupt on cpu 2: > > tcp_orphan_count_sum net/ipv4/tcp.c:2476 [inline] > > tcp_orphan_update+0x64/0x100 net/ipv4/tcp.c:2487 > > call_timer_fn+0x33/0x210 kernel/time/timer.c:1414 > > > > Fixes: 19757cebf0c5 ("tcp: switch orphan_count to bare per-cpu counters") > > Signed-off-by: Liu Jian > > --- > > net/ipv4/tcp.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c > > index cf18fbcbf123..7245609f41e6 100644 > > --- a/net/ipv4/tcp.c > > +++ b/net/ipv4/tcp.c > > @@ -2718,7 +2718,7 @@ int tcp_orphan_count_sum(void) > > int i, total = 0; > > > > for_each_possible_cpu(i) > > - total += per_cpu(tcp_orphan_count, i); > > + total += READ_ONCE(per_cpu(tcp_orphan_count, i)); > > We might raise the discussion to lkml and/or KCSAN supporters. > > Presumably, all per_cpu() uses in the kernel will have the same issue ? > > By definition per-cpu data can be changed by other cpus. > > So maybe per_cpu() should contain the annotation, instead of having to > annotate all users. I guess the question is, is it the norm that per_cpu() retrieves data that can legally be modified concurrently, or not. If not, and in most cases it's a bug, the annotations should be here. Paul, was there any guidance/documentation on this, but I fail to find it right now? (access-marking.txt doesn't say much about per-CPU data.) Thanks, -- Marco