Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2840992imu; Fri, 23 Nov 2018 15:53:12 -0800 (PST) X-Google-Smtp-Source: AFSGD/Xzy1LoODRwYKxY+AW52xWnnDZVq89q+YO4Vo8BQYmb93Xp6iLbb9ntJIwCZf9B7YXjDaQ1 X-Received: by 2002:a63:2054:: with SMTP id r20mr15930594pgm.328.1543017192012; Fri, 23 Nov 2018 15:53:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543017191; cv=none; d=google.com; s=arc-20160816; b=IBpEkVYIKdgttCnSroJt8RblddtTafd+MOwvWGcxHQ0ps3OVC5AI5C91r1BBTVetxa X4Q8XhbcSbp2+r/cy19+khl8S2vdfHg6c/7/VsRW/xBJy+PAejC4IafJnRjgWWqlrV3Q 3AqjQz97eLy6X3A5LS1EaYtX0mDsC/30w/g4XFUJmJjVD1wTBfmXWIiAoRo/u/fZIQQY Z9YuAFPFdesdLBTNoWZfAr16XGPyJBjpKM1pCyGfjOJtGbbil0f3117rLuWM5eXwRNcF pjyrr8neynGxZ4CPPSDbLpWYfj6FtkKnEh/KjKM1DCrBC4HK0d0igYBn+uje08VcqA3z r8Mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=eVQDalsN2NCuqDYDmELUKpklQT46/SjZ3zMuyWPvVZw=; b=UqL0yF6xb0GTy9uq2xe1KBnG1hJfbtUAcngcZLT6+d/i1ZDQnHisxIdRVUQ9xQNPDa 9yGlvMSeCoYCZ0SjNIdzdnEWEXpcYtLI5/AHm3IO9J8ZGzRo0l/A292SSQryzAENNIFQ ltX1Vik0BvSdnfTnEHXwwYZOPMgPMIxpWtbpPN5T+g6I39xHFCEKQWDNAH1+/bgY+wrO rAcMZ8dxmgR6s2HzWFai/BUhb02vOYl8+M526kyGe/MCBEkORlQTGvKE83kV0UUOLax0 kueeWqWaSNhVsSiX95LR6b5/q91gbEzuyXl3U4ZH/xsW3gMTCvhTp1T2jOjk6CCcI09X CRWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i189si29482320pfg.265.2018.11.23.15.52.54; Fri, 23 Nov 2018 15:53:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404046AbeKWBpN (ORCPT + 99 others); Thu, 22 Nov 2018 20:45:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47674 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726758AbeKWBpM (ORCPT ); Thu, 22 Nov 2018 20:45:12 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B589C3164983; Thu, 22 Nov 2018 15:05:27 +0000 (UTC) Received: from dhcp-27-174.brq.redhat.com (unknown [10.43.17.142]) by smtp.corp.redhat.com (Postfix) with SMTP id 09B615C21E; Thu, 22 Nov 2018 15:05:25 +0000 (UTC) Received: by dhcp-27-174.brq.redhat.com (nbSMTP-1.00) for uid 1000 oleg@redhat.com; Thu, 22 Nov 2018 16:05:27 +0100 (CET) Date: Thu, 22 Nov 2018 16:05:24 +0100 From: Oleg Nesterov To: Andrea Parri Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Alexander Shishkin , Jiri Olsa , Namhyung Kim , linux-kernel@vger.kernel.org Subject: Re: [Question] smp_wmb() in prepare_uprobe() Message-ID: <20181122150524.GF28270@redhat.com> References: <20181121224124.GB4016@andrea> <20181122123655.GD28270@redhat.com> <20181122134400.GA10327@andrea> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181122134400.GA10327@andrea> User-Agent: Mutt/1.5.24 (2015-08-30) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.41]); Thu, 22 Nov 2018 15:05:28 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/22, Andrea Parri wrote: > > > See 142b18ddc81439acda4bc4231b291e99fe67d507 ("uprobes: Fix handle_swbp() > > vs unregister() + register() race") and the comment above this rmb(). > > Mmh..., at first glance, this suggests me that the above set_bit() and > test_bit() to/from uprobe->flags are among these memory accesses. But > this doesn't make sense to me: these accesses do not "alternate" (i.e., > they both appear after the corresponding barrier..); instead I'd expect > something like (on top of the above diff): > > diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c > index 2d29977522017..a75b9a08dee54 100644 > --- a/kernel/events/uprobes.c > +++ b/kernel/events/uprobes.c > @@ -2178,10 +2178,18 @@ static void handle_swbp(struct pt_regs *regs) > * After we hit the bp, _unregister + _register can install the > * new and not-yet-analyzed uprobe at the same address, restart. > */ > - smp_rmb(); /* pairs with the smp_wmb() in prepare_uprobe() */ > if (unlikely(!test_bit(UPROBE_COPY_INSN, &uprobe->flags))) > goto out; > > + /* > + * Pairs with the smp_wmb() in prepare_uprobe(). > + * > + * Guarantees that if we see the UPROBE_COPY_INSN bit set, then > + * we must (can) also see the stores to &uprobe->arch performed > + * by prepare_uprobe() (say). > + */ > + smp_rmb(); OOPS, you are right! Thanks. Oleg.