From nobody Tue Dec 16 09:29:16 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 699CC19B5B8; Mon, 21 Apr 2025 21:45:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745271957; cv=none; b=egxn7igcml5XrGNZKotX+OvYs+hhd94POQM/OWIgSkh86iiVYmZfqaJJ+zdRmGBMYsnmf0vuC2lYr0wzM9sOf4ulPoC6jU4O0m2zMWAgUQut7nqhwHns43H9OdsU33a3tsZPD8q6b99Xmgp7F4JxpRcI51wGMj8w3qFnrR0Mln4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745271957; c=relaxed/simple; bh=5HVHWaig0HEBawYxtqQdeilqzoxF5+c66y72SyzkBlw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qwm6nQH9FOV9+5Bh5VGt4FGhUPYq91Fe5Gpec0XsCcxevP9gKMwq+duLV6IXcNaaSr9cPlJywRleXAUpHykchNAI53HM78cZG0N3vHFdMWbXDz1rJlCxMNkUeWV0g1cL4x4/YtY5vcLhDCTj5w9KFjKMGvccKZZl1lwbSQYvpjk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UEQkmuWN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UEQkmuWN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9DC92C4CEE4; Mon, 21 Apr 2025 21:45:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1745271956; bh=5HVHWaig0HEBawYxtqQdeilqzoxF5+c66y72SyzkBlw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UEQkmuWNapw0a58kRsvpiDRxddPLJVjMIvlClYAdMNORc1Rz9xLDu5dNPvgC4pn6M hSse5BTgRuCocPCoe1a0/a9RC02t0Rj6tJaXUolVGfvB01XtrhjLUy8iDbC5uOOwew COlDoe6sqtetk9QI9/vFh6uAxFCHSWR2ocOIix+zmyLOd+n06sLm1MtzjUly4H00C2 Yt8quWeij+vrEP1adkBnUjMUBa4ib81Tys20wUTp1DJw15LTmR7aZjZ5c6EBcGdyH+ uxunl9svtx5HNGxd7ZFwlg8Ts6ZgFUMyMzkFij3nzWDnlQr4xpsZw5zyg9/QvIKPrU t1uUpf2LQJZMg== From: Jiri Olsa To: Oleg Nesterov , Peter Zijlstra , Andrii Nakryiko Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, x86@kernel.org, Song Liu , Yonghong Song , John Fastabend , Hao Luo , Steven Rostedt , Masami Hiramatsu , Alan Maguire , David Laight , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= , Ingo Molnar Subject: [PATCH perf/core 07/22] uprobes: Remove breakpoint in unapply_uprobe under mmap_write_lock Date: Mon, 21 Apr 2025 23:44:07 +0200 Message-ID: <20250421214423.393661-8-jolsa@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250421214423.393661-1-jolsa@kernel.org> References: <20250421214423.393661-1-jolsa@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently unapply_uprobe takes mmap_read_lock, but it might call remove_breakpoint which eventually changes user pages. Current code writes either breakpoint or original instruction, so it can probably go away with that, but with the upcoming change that writes multiple instructions on the probed address we need to ensure that any update to mm's pages is exclusive. Signed-off-by: Jiri Olsa Acked-by: Andrii Nakryiko --- kernel/events/uprobes.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index c8d88060dfbf..d256c695d7ff 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c @@ -1483,7 +1483,7 @@ static int unapply_uprobe(struct uprobe *uprobe, stru= ct mm_struct *mm) struct vm_area_struct *vma; int err =3D 0; =20 - mmap_read_lock(mm); + mmap_write_lock(mm); for_each_vma(vmi, vma) { unsigned long vaddr; loff_t offset; @@ -1500,7 +1500,7 @@ static int unapply_uprobe(struct uprobe *uprobe, stru= ct mm_struct *mm) vaddr =3D offset_to_vaddr(vma, uprobe->offset); err |=3D remove_breakpoint(uprobe, vma, vaddr); } - mmap_read_unlock(mm); + mmap_write_unlock(mm); =20 return err; } --=20 2.49.0