Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp2155450imw; Wed, 6 Jul 2022 00:41:14 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sOa1SACWdvcShM01OOE1ekBLi2zNTlkGjd+uiSwPKQdDjBxaT7+2njf2LOLnZlyBevE+mg X-Received: by 2002:a17:90b:38c4:b0:1ef:84e0:90f5 with SMTP id nn4-20020a17090b38c400b001ef84e090f5mr20768714pjb.149.1657093274148; Wed, 06 Jul 2022 00:41:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657093274; cv=none; d=google.com; s=arc-20160816; b=zHqIIdSBuO85AV2wzrrdyNKoAcZPDqnKXi9nYMdDXGDIe5dqFWEdE6o5xXrbJGT1A5 6pKRgMpPS52ihretmHFJeAx+DIPxkgbHFwZ8KOTGuafr+akjeozsHhp8mvGp0/BQuBcH vZzEpOIL0zfUhXCPch7ygknW0+OTGwHr2FX2cziaey8QEszGpDriuARNSIvzMf87AMUg KJ6Se4MsqHhyGGDQ9aMVww85c19gGeAhw/jcnQdhRaeywinqhhhsftC7LgpTJ6rCpXnf zxfwu3C1aqwkQD21D0tu8s8gl/W/ont/grSPwrWLpNJWmbOxpYlZbPls9LQuy5dWfIHD 3w1Q== 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=fP9UL96cxJNu+e/w1ZAS0SabjOjSeie47tNUCSGsUoc=; b=v0CyzTaSYp/XxluZlWEGx+akNT+qD5JgtOO/N+aYrX/36vxUeKH5wpVHFQsxTkvhaQ zbTeY/x6DJDDO7Ic2ecO/b/Exlaos7GE6us9kvDGnuSp0hKtnD/NeMfZuqsKT8Fv3KdV wBkej24uQLW8xEjjXkwctdD8PXlqWG5YQCywhyILwXTkVEZyBUr2+UU2DYYIwHk1Ka2s cXBYxsBAUMD4boSEYnjYpeIFL0SZEGXTeUMisgoey0sv5x/hVr1ishi/qRLEmVtgM67m eVlY9zpdMIyBv6msqEcgO/azZJ4v2fGyMtTDSsbpKvqEB4dCg1JCi7qosuQl4y62TUIk pJfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=bInBYldf; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a5-20020a656545000000b003fa2f024afcsi19701583pgw.433.2022.07.06.00.40.58; Wed, 06 Jul 2022 00:41:14 -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=@google.com header.s=20210112 header.b=bInBYldf; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231263AbiGFHAh (ORCPT + 99 others); Wed, 6 Jul 2022 03:00:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53510 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231130AbiGFHAY (ORCPT ); Wed, 6 Jul 2022 03:00:24 -0400 Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F18D1F2C2 for ; Wed, 6 Jul 2022 00:00:23 -0700 (PDT) Received: by mail-yb1-xb29.google.com with SMTP id g4so25835867ybg.9 for ; Wed, 06 Jul 2022 00:00:23 -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=fP9UL96cxJNu+e/w1ZAS0SabjOjSeie47tNUCSGsUoc=; b=bInBYldfUKoDTJgam4jbKqa+UaD8EA8WAlBbf3FnOC4E50CpfP8GkcYd+oT8YoNZce jEaHOJ5DcEI5VMT/pCfcH847uP5MbHL6gLoCuevejao+xJxQiLAmM4TAiLFEIHjZFZsn sUFOErAxxxRrJTktcR+YDboQkteP4+At0xLApZ5Md/uSwKQUMbjUfkWxLHbbzL3oP28S zbQHnkZpcb7HwiIZ0zGYVbbG0e70enGSkiJaX/jfe7FSoRtsghLgPd8vIY5vCD855Vzw Qpy3wIqI/3r8EJVjVzAfTT4qSTaurvTTTKgrKveJkVzawr+kJhAYC5YdbIIrv7VIZfvA pTfQ== 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=fP9UL96cxJNu+e/w1ZAS0SabjOjSeie47tNUCSGsUoc=; b=foGZQsi/4PvZ4h+ZW+ZvOc809GtoRnNnV5Hl6PbV1tGQcR/n+k4V8rQYTtWMDzsHmq 0rVjM4qjCQ+fIXD3aHGa7UEGcsdVSGDRwKSTZQRgPgr78qg10BQT9B1G5amng5DwlkcG cifwgfJMC016mJZD3S7qs5Gx9Gbot5fWGd7ZVaPQBl690ZMqDo4NQrrmiVWqLCYx01iM s4zX1h5DfwOaiavcLG1M5RNjzIlqWGAXeKp49wDyd41+RZt16WYsem1IFc8rPjTGXF46 xxxBzH6ek5mgSHHhwQbkUvuaP7pPiSZVNvHYkCDrfoR4Wvtz9EmYbzVm+S1LmUnjLzpl +a4g== X-Gm-Message-State: AJIora9bg606WXMy7oMoR9tSLkYt1ovnQk/w3JagRrW6QnAh7STRNDZ7 G3bQqT8ubzirsa5U0mE5a5vDoJOOEufm+dR4xcAJFw== X-Received: by 2002:a25:7455:0:b0:66e:2daf:8924 with SMTP id p82-20020a257455000000b0066e2daf8924mr22469402ybc.427.1657090822296; Wed, 06 Jul 2022 00:00:22 -0700 (PDT) MIME-Version: 1.0 References: <20220706052130.16368-1-kuniyu@amazon.com> <20220706052130.16368-4-kuniyu@amazon.com> In-Reply-To: <20220706052130.16368-4-kuniyu@amazon.com> From: Eric Dumazet Date: Wed, 6 Jul 2022 09:00:11 +0200 Message-ID: Subject: Re: [PATCH v1 net 03/16] sysctl: Add proc_dointvec_lockless(). To: Kuniyuki Iwashima Cc: "David S. Miller" , Jakub Kicinski , Paolo Abeni , Luis Chamberlain , Kees Cook , Iurii Zaikin , Kuniyuki Iwashima , netdev , LKML Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL 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 Wed, Jul 6, 2022 at 7:22 AM Kuniyuki Iwashima wrote: > > A sysctl variable is accessed concurrently, and there is always a chance of > data-race. So, all readers and writers need some basic protection to avoid > load/store-tearing. > > This patch changes proc_dointvec() to use READ_ONCE()/WRITE_ONCE() > internally to fix a data-race on the sysctl side. For now, proc_dointvec() > itself is tolerant to a data-race, but we still need to add annotations on > the other subsystem's side. > > In case we miss such fixes, this patch converts proc_dointvec() to a > wrapper of proc_dointvec_lockless(). When we fix a data-race in the other > subsystem, we can explicitly set it as a handler. > > Also, this patch removes proc_dointvec()'s document and adds > proc_dointvec_lockless()'s one so that no one will use proc_dointvec() > anymore. > > While we are on it, we remove some trailing spaces. I do not see why you add more functions. Really all sysctls can change locklessly by nature, as I pointed out. So I would simply add WRITE_ONCE() whenever they are written, and READ_ONCE() when they are read. If stable teams care enough, they will have to backport these changes, so I would rather not have to change proc_dointvec() to proc_dointvec_lockless() in many files, with many conflicts, that ultimately will either add bugs, or ask extra work for maintainers.