Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp3325588lqp; Tue, 26 Mar 2024 06:24:46 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUGf4ajKJoyJA+1xZFrqeJCfr3k0cTnio5jW81FV6zHFxCAM6AqG8KNNkkD+EymkN6yk3aL7omI+Lbe1jTc43NXh1WgdaJ5LiqMpqBIYQ== X-Google-Smtp-Source: AGHT+IH4O0CswGITVkx5IUMNhSxdx2fslQgU7gvmNfcC33nyt7sBaKVFN3xtiyzP/Mz7PfFnM/Z/ X-Received: by 2002:a17:902:6f01:b0:1e0:25f:acfe with SMTP id w1-20020a1709026f0100b001e0025facfemr7507878plk.42.1711459485960; Tue, 26 Mar 2024 06:24:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711459485; cv=pass; d=google.com; s=arc-20160816; b=PG5n0j8q4UcTregYa09LijpKRZEV/nP+iQ/4RmA3ppPKFJqjIhb9JUKL2sLVf7R41F PsWoCupw8YqduYAHbBjZkK8h2lqmVLE1O9h7lEk4eTnuf8oYMsbYYMZdFXp5RUPHFA/O DWmWjJ28fvKnjupKKxI53nOklMMI9hVG51CVmbyu6+yjHWIQGLj5PhzcixDJstz6bKlq k6bJ6z6hI5TC8tWCE6lYb2WeTHbW5WwSH40eBivICbWmYHCuin1kZ7HXSbsNXeLUI8dy FaDgvXaL9aeIBhfm7o4kVxdE4HP0HdUaO8L6gN1USer81mqgOkyiaIDILiAyyagDKYD9 D+dg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:references:from:subject:cc:to:message-id:date :content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:dkim-signature; bh=i2rD2cb/DHxjEvNyyKuWcSCX93I4cO9FY2bN1Ho6Q7I=; fh=zaEq2GJIJ86K3APXBMorDKq6QYvVAbOnM81WXCDzYPg=; b=LzzFP4FVI9I443c1HoztX1GLI/GT4LrIpO5DOjOJHw/6Oj367rwYNNlVRgzwRAjTRO 8QBeDs8WRSDTK2jukVvH8biKKcqfTdfRp+WYnU5pCMaJ/6Bi7pfEWWDML1j8mKQGREMa z8znhy4l0/auVNCUW9tIvzRyJssVsN+1QJTodkhb/YZmlureXrFOYz8AdtVTQ7f/vtlr mOsC69iBubD7epXECAzBKI9Egx+FJaJX8QoMaD4rg7zAz/s9MAdkq6TjbfPFXDgTurpE MUh8PE1NR0OxANVAIEqf0oq8JImd436rT8yEUhV5Rbcd7YDf4GAzSvVitxqGHu5ulTB1 oAwQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Mnj8t6Ox; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-119048-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-119048-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id j1-20020a170902da8100b001e0b2870953si5554921plx.595.2024.03.26.06.24.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Mar 2024 06:24:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-119048-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Mnj8t6Ox; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-119048-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-119048-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 4148FB23DD0 for ; Tue, 26 Mar 2024 13:18:35 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7B2087441C; Tue, 26 Mar 2024 13:18:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Mnj8t6Ox" 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 8E2BA71739; Tue, 26 Mar 2024 13:18:26 +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=1711459106; cv=none; b=VAg2rcgYuAHp3H8tgcDT5L5qXqyXvauzDsgOFsE9vrvrEFBYGyYr3wDLBQNHXRz0mGYsGYv+vs2dX/UgqNc+DnHSZfpOh6JRfUt6xCvW16sq9DPXL93gX/0JL3shHcXNNXJeK619bCLxqu9Lx6F+ZqxXRVmctBkwBi9O+8FwvlQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711459106; c=relaxed/simple; bh=G+Hn6cNlyKUyvTsdLqpYQU3MpaSHBX/VmoCrwmgKiuA=; h=Mime-Version:Content-Type:Date:Message-Id:To:Cc:Subject:From: References:In-Reply-To; b=dX/OToSOveVNJuuphO95+VJ8Igxa6WqeGb90MpOx6uqa2HMj7MjiW7EpzI93G/H1yJr7F8mQWllNXv0RbJs77qSSEf0+khLadUMwhg1OeGgMsuQGC3g7EZ2AVoBQphqh+06xJjTBbXrJE3znHcqr2EbQiWRPE5Jr0NtHiq0PQ/4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Mnj8t6Ox; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id C1E86C43390; Tue, 26 Mar 2024 13:18:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711459106; bh=G+Hn6cNlyKUyvTsdLqpYQU3MpaSHBX/VmoCrwmgKiuA=; h=Date:To:Cc:Subject:From:References:In-Reply-To:From; b=Mnj8t6OxtLu5AG5u89v26bd8wmZLcN0UmHvjkWAbtmKZtYzeFLucbhoW0h/+cR4WH Uem+3ticvY2WBlCuBTbWDPMtTqaDWzCzkJd7UwMRGPpsp5Tqr+vLCY4s3Nn5iObh/9 6ndmKyH5POpbP/BbyaqBqloIgAPrVvE6f13T5Z8W1iVXCh+ZHMrCyie5kOMtxgMNrM lu/a3BKf0wzlsW8ZU1Z5WyZgaAy2GdqWFUET2XEk6/N2YQKIITonFFq1KwPmNgY7E2 TGHWE7+bkMHXID92ze6dpg2dpwb2xbLo3VyUP5jG55oSeCsByjb3u7AHXy1JnQ5FFS lVxeLvshqqILQ== 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 Date: Tue, 26 Mar 2024 15:18:21 +0200 Message-Id: To: "Jarkko Sakkinen" , "Masami Hiramatsu" Cc: , "Paul Walmsley" , "Palmer Dabbelt" , "Albert Ou" , , "Luis Chamberlain" , , "Naveen N . Rao" , "Anil S Keshavamurthy" , "David S . Miller" Subject: Re: [PATCH v5 1/2] kprobes: textmem API From: "Jarkko Sakkinen" X-Mailer: aerc 0.17.0 References: <20240325215502.660-1-jarkko@kernel.org> <20240326095836.f43d259b7747269a7c0b9d23@kernel.org> In-Reply-To: On Tue Mar 26, 2024 at 4:01 AM EET, Jarkko Sakkinen wrote: > On Tue Mar 26, 2024 at 3:31 AM EET, Jarkko Sakkinen wrote: > > > > +#endif /* _LINUX_EXECMEM_H */ > > > > diff --git a/kernel/kprobes.c b/kernel/kprobes.c > > > > index 9d9095e81792..87fd8c14a938 100644 > > > > --- a/kernel/kprobes.c > > > > +++ b/kernel/kprobes.c > > > > @@ -44,6 +44,7 @@ > > > > #include > > > > #include > > > > #include > > > > +#include > > > > =20 > > > > #define KPROBE_HASH_BITS 6 > > > > #define KPROBE_TABLE_SIZE (1 << KPROBE_HASH_BITS) > > > > @@ -113,17 +114,17 @@ enum kprobe_slot_state { > > > > void __weak *alloc_insn_page(void) > > > > { > > > > /* > > > > - * Use module_alloc() so this page is within +/- 2GB of where the > > > > + * Use alloc_execmem() so this page is within +/- 2GB of where th= e > > > > * kernel image and loaded module images reside. This is required > > > > * for most of the architectures. > > > > * (e.g. x86-64 needs this to handle the %rip-relative fixups.) > > > > */ > > > > - return module_alloc(PAGE_SIZE); > > > > + return alloc_execmem(PAGE_SIZE, GFP_KERNEL); > > > > } > > > > =20 > > > > static void free_insn_page(void *page) > > > > { > > > > - module_memfree(page); > > > > + free_execmem(page); > > > > } > > > > =20 > > > > struct kprobe_insn_cache kprobe_insn_slots =3D { > > > > @@ -1580,6 +1581,7 @@ static int check_kprobe_address_safe(struct k= probe *p, > > > > goto out; > > > > } > > > > =20 > > > > +#ifdef CONFIG_MODULES > > > > > > You don't need this block, because these APIs have dummy functions. > > > > Hmm... I'll verify this tomorrow. > > It depends on having struct module available given "(*probed_mod)->state"= . > > It is non-existent unless CONFIG_MODULES is set given how things are > flagged in include/linux/module.h. Hey, noticed kconfig issue. According to kconfig-language.txt: "select should be used with care. select will force a symbol to a value without visiting the dependencies." So the problem here lies in KPROBES config entry using select statement to pick ALLOC_EXECMEM. It will not take the depends on statement into account and thus will allow to select kprobes without any allocator in place. So to address this I'd suggest to use depends on statement also for describing relation between KPROBES and ALLOC_EXECMEM. It does not make life worse than before for anyone because even with the current kernel you have to select MODULES before you can move forward with kprobes. BR, Jarkko