Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759685AbdCVNWY (ORCPT ); Wed, 22 Mar 2017 09:22:24 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:33296 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750721AbdCVNWT (ORCPT ); Wed, 22 Mar 2017 09:22:19 -0400 Message-ID: <1490188936.16816.143.camel@edumazet-glaptop3.roam.corp.google.com> Subject: Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t From: Eric Dumazet To: Peter Zijlstra Cc: Kees Cook , Herbert Xu , David Miller , "Reshetova, Elena" , Network Development , bridge@lists.linux-foundation.org, LKML , Alexey Kuznetsov , James Morris , Patrick McHardy , Stephen Hemminger , Hans Liljestrand , David Windsor , Andrew Morton Date: Wed, 22 Mar 2017 06:22:16 -0700 In-Reply-To: <20170322122540.odnm4j3r4c4uf7wt@hirez.programming.kicks-ass.net> References: <20170318.182121.439615057765380575.davem@davemloft.net> <20170320103937.lq7nfnutupr3gkn7@hirez.programming.kicks-ass.net> <20170320131629.GA26405@gondor.apana.org.au> <20170320132357.acygo3umw6fiwb4p@hirez.programming.kicks-ass.net> <20170320132713.GA26954@gondor.apana.org.au> <20170320134017.h3c2jrsnd4guuyu7@hirez.programming.kicks-ass.net> <1490131389.16816.123.camel@edumazet-glaptop3.roam.corp.google.com> <1490148199.16816.126.camel@edumazet-glaptop3.roam.corp.google.com> <20170322122540.odnm4j3r4c4uf7wt@hirez.programming.kicks-ass.net> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1136 Lines: 31 On Wed, 2017-03-22 at 13:25 +0100, Peter Zijlstra wrote: > On Tue, Mar 21, 2017 at 07:03:19PM -0700, Eric Dumazet wrote: > > > Note that we might define two refcount_inc() : One that does whole > > tests, and refcount_inc_relaxed() that might translate to atomic_inc() > > on non debug kernels. > > So you'd want a duplicate interface, such that most code, which doesn't > care about refcount performance much, can still have all the tests > enabled. > > But the code that cares about it (and preferably can prove it with > numbers) can use the other. > > I'm also somewhat hesitant to use _relaxed for this distinction, as it > has a clear meaning in atomics, maybe _nocheck? > > Also; what operations do you want _nocheck variants of, only > refcount_inc() ? I was mostly thinking of points where we were already checking the value either before or after the atomic_inc(), using some lazy check (a la WARN_ON(atomic_read(p) == 0) or something like that. But admittedly we can replace all these by standard refcount_inc() and simply provide a CONFIG option to turn off the checks, and let brave people enable this option.