Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936037AbdGTLDI (ORCPT ); Thu, 20 Jul 2017 07:03:08 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:27612 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935160AbdGTLDG (ORCPT ); Thu, 20 Jul 2017 07:03:06 -0400 Date: Thu, 20 Jul 2017 07:02:54 -0400 From: Sowmini Varadhan To: H??kon Bugge Cc: Santosh Shilimkar , "David S . Miller" , netdev@vger.kernel.org, linux-rdma@vger.kernel.org, rds-devel@oss.oracle.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH net] rds: Make sure updates to cp_send_gen can be observed Message-ID: <20170720110254.GB14156@oracle.com> References: <20170720102855.21961-1-Haakon.Bugge@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170720102855.21961-1-Haakon.Bugge@oracle.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Source-IP: aserv0021.oracle.com [141.146.126.233] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 761 Lines: 24 On (07/20/17 12:28), H??kon Bugge wrote: > cp->cp_send_gen is treated as a normal variable, although it may be > used by different threads. I'm confused by that assertion. If you look at the comments right above the change in your patch, there is a note that acquire_in_xmit/release_in_xmit are the synchronization/serialization points. Can you please clarify? > --- a/net/rds/send.c > +++ b/net/rds/send.c > @@ -170,8 +170,8 @@ int rds_send_xmit(struct rds_conn_path *cp) > * The acquire_in_xmit() check above ensures that only one > * caller can increment c_send_gen at any time. > */ > - cp->cp_send_gen++; > - send_gen = cp->cp_send_gen; > + send_gen = READ_ONCE(cp->cp_send_gen) + 1; > + WRITE_ONCE(cp->cp_send_gen, send_gen); > --Sowmini