From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7CEBFC3DA4A for ; Thu, 22 Aug 2024 16:59:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B9EE380040; Thu, 22 Aug 2024 12:59:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B4DD58001E; Thu, 22 Aug 2024 12:59:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 99F7480040; Thu, 22 Aug 2024 12:59:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 77BDC8001E for ; Thu, 22 Aug 2024 12:59:45 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9E9F51218E3 for ; Thu, 22 Aug 2024 16:59:44 +0000 (UTC) X-FDA: 82480493088.16.00B0A69 Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) by imf22.hostedemail.com (Postfix) with ESMTP id C5972C0006 for ; Thu, 22 Aug 2024 16:59:42 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dyxumodC; spf=pass (imf22.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.179 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724345875; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=x1QyWs8fwaiHTqcav5Inx6vs/UZ87QiYkIE4fUFV/YQ=; b=T6W5BqW4Z6nwZxxhU5vFk4t8MAMgkS6NIxmrSjdznQ/MdFTh1ucKJ0YqiQlSNIceHQGVZ4 +UOky1m5zh+euFjwXP7n8QTq/u9lCHenQsdyB0qFxTT1nasImgaOcMeZFJEASGEgvHqEN5 oyvQ/geOoT1NxDUBOqHUgOML22y4eTA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dyxumodC; spf=pass (imf22.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.179 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724345875; a=rsa-sha256; cv=none; b=0+c/mqzJDg68PEhYQyEBqqn/ie0X2y9xbcnBlxwN77KqaF/J//s68hNJMOcdikjL4s3Vfc 1Xlr7uLebkOrM7+sV0+LlEJnTfjAOVPTFKC5eJJ4RBU2i0OpfFdcT9QHvKM7She1YRTyh1 eU9CciPRz+EhrAE1TNNmZj6HoHyWFfE= Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-6bce380eb96so636718a12.0 for ; Thu, 22 Aug 2024 09:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724345981; x=1724950781; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=x1QyWs8fwaiHTqcav5Inx6vs/UZ87QiYkIE4fUFV/YQ=; b=dyxumodChg7WDkt9z32zc5OuRR25qLzerFIbCgzJPoE1eJnMXHSX72mpoMSWasQ3tS C6qPtEl2bPJtMh1vPZiJS4tgL/jlDVT4GF7yKlYLRxlhj7OpucesbkQjzZO0agZ00a+N 7TpFtNMS8tBFsKuNJx/LScrFj/6Z7+1O+KlBLqP16bDcAYtk/MexX1MbOofogqH7xIRF 5WcNDmxk8YBvTV/3qCgRxNoQho6cjRr+j2VLyjkubvJXEM69YfqGezNWtkqwCxlLbePh HVaN7lvo1LIvguY0am/wyvn0+ljAP/wwGdBWmpHOqEJgqJprReS5fG4WfrTY8WxYAYWw mvwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724345981; x=1724950781; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x1QyWs8fwaiHTqcav5Inx6vs/UZ87QiYkIE4fUFV/YQ=; b=Gj33GuDX73oEcNQ/goSQlfbv0BYlu0/dFvp8RGPLWyHiNwGQ6ZErjzowgkXdtmxKcz 4ca7dXX/DLAmm8z+3iehgLVCGnyZLN1rRX/M/ae4b7E/9BuXBjpJK9tfjWfM39mjWnVJ xxUJ61jSFX2/+CzzhLhT7Xing6iwkCc5WoZE2Pm/RJsJ2/SqqU+AG0FUbAcVKOFiaZFv gf1b62LTpUZDcec4SRLcjS7x3Q41L2EZ3iKUpzBNzRgC1M9HmI1R8DjCFeJtFTbVrjgn NMkg/E5Ad3FU8p8OLaWCwTtSndIH6mVHB+iFab1RUiPDazCcF2v6ckXMTIXKoMjcA1OJ 5lvg== X-Forwarded-Encrypted: i=1; AJvYcCXI+TfO4Cb38O1qOQRmTamgjwJwaAWptCMuCdLPyFfv+r+Tm0skkhMINOGXvUMVjm0ROUwfjEY+lg==@kvack.org X-Gm-Message-State: AOJu0Yya3qBXjVC8xS/KpXnYiueVokt94x0mQddt6Y0Ki9fjEXCH+dMM VNH0BR9sZ1IgTh/sWXRQfC5+y6SWWeGFJm93I7uraWfxnFJ0rCBrDn97E/Ngeh6d7a9cPWOABe2 1d0c9dMWYPkBMFAuizSzzELhqBEo= X-Google-Smtp-Source: AGHT+IFVaeRmZ4B8Kf0yi9/jkvJQM5UIqKnx5lAPNwm9PjfCF+priLscW++esQqsFO5l8fCVLB+f35Ce6QU80a3GQq8= X-Received: by 2002:a17:90a:8a8e:b0:2c9:e24d:bbaa with SMTP id 98e67ed59e1d1-2d5e9fc9af3mr7215837a91.27.1724345981232; Thu, 22 Aug 2024 09:59:41 -0700 (PDT) MIME-Version: 1.0 References: <20240813042917.506057-1-andrii@kernel.org> <20240813042917.506057-5-andrii@kernel.org> In-Reply-To: From: Andrii Nakryiko Date: Thu, 22 Aug 2024 09:59:29 -0700 Message-ID: Subject: Re: [PATCH v3 04/13] uprobes: travers uprobe's consumer list locklessly under SRCU protection To: Jiri Olsa Cc: Andrii Nakryiko , linux-trace-kernel@vger.kernel.org, peterz@infradead.org, oleg@redhat.com, rostedt@goodmis.org, mhiramat@kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org, paulmck@kernel.org, willy@infradead.org, surenb@google.com, akpm@linux-foundation.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: C5972C0006 X-Stat-Signature: myffwgaeji4iu95jti6s7u9o83e8ucin X-Rspam-User: X-HE-Tag: 1724345982-865030 X-HE-Meta: U2FsdGVkX18d2t/dYIMJHIWTBKlUcpZPOqSsUYKk0SGhhsNo1Mp6+iHMTXnOvSfay/rM6cd+mw20a3Q8XGufwj9EGEO65BlgE5EHKHv6mVfMovfeAt4QXmiUWFVniK7rhihv1OHXoVqarcI39V3ykn0C79cxF8XkS0elIpi+kP5UE8qOLykL/OSsbwVzypl01DHBWA/rvFnsCioRpw9Lt3ly45ixA8mm6SrjtEARlkUed9lI7bu2j2VihU6HbWevicymKY14mWgcyCmHstGewc8vv0tJqWvvK14gPk0naz5/2KmdYR2ufpgaeffGQIYryVpENn1siCNOEnLRNEaKdDCCFKtxOJAWZa2t569QYamYngwazpSK2XanZvPUUv/I9qJAEzSKIOlodNADz+EUN0g1GJRytAJIQV6152nXG+bXs4wSUvXn1nl/fHtb5w/LPPAaGgjy9TbDx/bx5F4UL+JbhN6VUtxuPEcfnCxIKQsOFhpLh6Q7e3mfWf99+NwacAp4hY9E0Z5OT0mm/O+frwHUeMRQyp4dSY7C5uY16SlEnmb8s36BFusPUuVTi3PQfuRJL+fLh2EkxsSpFKIq/fCwGsandw4CnSQKPIJqrIFXBC1Omn3AFZZ/MxVwuPb4zUGzRhUEeRZtCmDzf8JPsV4RcSOMTLq3/QYMmNljX+pG8lfv8dtpG0wq8rxPn1TgXRl4W82aYlMOgK6uhGIuK2sXToz1GhHJpw2TAQeFcLzXzLNIJmLdZVVovjl2WDWqCr5KzI9E2GOw941aR3NJUDyJbj5YpIfp6fSyIjQV3SYGf+KeA2lHFsMr/ZeXa1AF0ZIzTZwnn+HHeeoinKg5XfFPrpmB5Nfszkq0VRMIYXozF47Hwr1faY5lprYuMg5+3MkTq8UDfBzQiLsNHPSFJ63ZmGHiC8lb5PXJQoJAbf9WMQKW6l1a7XKAsS7WHd7tgxiRq48upkL2zNr0lbo eonPyfsM AFdrujVm/WqM/rm/dzinfjRfcBAggYT4cNMS5j4W2i0v845JX24Yoj6kChjcpGzzGdWQbFZTWhL5N7Xzy9XMX2uFoLcI4f6V80P1ExpnK9ET52ki+UF15H2u61fRm4laZ7u1OS5/7UIe+tBLkuTC+vT+poWjM860aD77ab+urZBMoF5aPQ34PEU9YsW5as1r+SbjWSYga8V3T7urXQSMe4e4gmnIQYgrwc7BLp9rByMf5tsTUAvGrk1QMY2+MtaahCAqNTXzad0d3tX8tc5+VURfkZZaw+q5lQWXD5c8/j64x8Vpx6carFnP3PNvJHekHkOxDF0ECAOZWphnoNQVSb3axStkQEd/sA6yM X-Bogosity: Ham, tests=bogofilter, spamicity=0.006135, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Aug 22, 2024 at 7:22=E2=80=AFAM Jiri Olsa wrot= e: > > On Mon, Aug 12, 2024 at 09:29:08PM -0700, Andrii Nakryiko wrote: > > SNIP > > > @@ -1125,18 +1103,31 @@ void uprobe_unregister(struct uprobe *uprobe, s= truct uprobe_consumer *uc) > > int err; > > > > down_write(&uprobe->register_rwsem); > > - if (WARN_ON(!consumer_del(uprobe, uc))) { > > - err =3D -ENOENT; > > - } else { > > - err =3D register_for_each_vma(uprobe, NULL); > > - /* TODO : cant unregister? schedule a worker thread */ > > - if (unlikely(err)) > > - uprobe_warn(current, "unregister, leaking uprobe"= ); > > - } > > + > > + list_del_rcu(&uc->cons_node); > > hi, > I'm using this patchset as base for my changes and stumbled on this today= , > I'm probably missing something, but should we keep the 'uprobe->consumer_= rwsem' > lock around the list_del_rcu? > Note that original code also didn't take consumer_rwsem, but rather kept register_rwsem (which we still use). There is a bit of mix of using register_rwsem and consumer_rwsem for working with consumer list. Code hints at this as being undesirable and "temporary", but you know, it's not broken :) Anyways, my point is that we didn't change the behavior, this should be fine. That _rcu() in list_del_rcu() is not about lockless modification of the list, but rather modification in such a way as to keep lockless RCU-protected *readers* correct. It just does some more memory barrier/release operations more carefully. > jirka > > > > + err =3D register_for_each_vma(uprobe, NULL); > > + > > up_write(&uprobe->register_rwsem); > > > > - if (!err) > > - put_uprobe(uprobe); > > + /* TODO : cant unregister? schedule a worker thread */ > > + if (unlikely(err)) { > > + uprobe_warn(current, "unregister, leaking uprobe"); > > + goto out_sync; > > + } > > + > > + put_uprobe(uprobe); > > +