From: sashiko-bot@kernel.org
To: "Ian Rogers" <irogers@google.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Miguel Ojeda" <ojeda@kernel.org>, "Kees Cook" <kees@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>
Cc: "Nick Desaulniers" <ndesaulniers@google.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Madhavan Srinivasan" <maddy@linux.ibm.com>,
"Michael Ellerman" <mpe@ellerman.id.au>,
"Nicholas Piggin" <npiggin@gmail.com>,
"Christophe Leroy" <chleroy@kernel.org>,
"Nayna Jain" <nayna@linux.ibm.com>,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
"Rich Felker" <dalias@libc.org>,
"John Paul Adrian Glaubitz" <glaubitz@physik.fu-berlin.de>,
"Viresh Kumar" <viresh.kumar@linaro.org>,
"David Teigland" <teigland@redhat.com>,
"Alexander Aring" <aahringo@redhat.com>,
"Juergen Gross" <jgross@suse.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Oleksandr Tyshchenko" <oleksandr_tyshchenko@epam.com>,
"Heiko Carstens" <hca@linux.ibm.com>,
"Vasily Gorbik" <gor@linux.ibm.com>,
"Alexander Gordeev" <agordeev@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Sven Schnelle" <svens@linux.ibm.com>,
"Richard Weinberger" <richard@nod.at>,
"Zhihao Cheng" <chengzhihao1@huawei.com>,
"Felix Kuehling" <Felix.Kuehling@amd.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
linux-s390@vger.kernel.org, linux-mtd@lists.infradead.org,
dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 05/11] ACPI: CPPC: Free cpc_desc in kobject release callback
Date: Tue, 13 Oct 2026 22:54:16 +0000 [thread overview]
Message-ID: <sashiko-outbox-170607@kernel.org> (raw)
In-Reply-To: <20261013223946.1836757-6-irogers@google.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] acpi: cppc: dangling per-CPU pointer after exit leads to UAF
- [Medium] acpi/cppc: missing kobject_del() causes sysfs -EEXIST on driver re-bind
--
commit 1405c81459a62da53ac116a49a65cbdc3bcdcd68
Author: Ian Rogers <irogers@google.com>
ACPI: CPPC: Free cpc_desc in kobject release callback
cpc_desc_ptr embeds a struct kobject that is registered in sysfs via
kobject_init_and_add(), but cppc_ktype lacked a .release callback and
acpi_cppc_processor_exit() freed cpc_ptr immediately after kobject_put().
This patch moves the sys_mem_vaddr unmapping and kfree(cpc_ptr) into a new
cppc_release() callback.
> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
> index f370be8715ae2..0fefe1cdb60ce 100644
> --- a/drivers/acpi/cppc_acpi.c
> +++ b/drivers/acpi/cppc_acpi.c
> [ ... ]
> @@ -961,15 +966,7 @@ void acpi_cppc_processor_exit(struct acpi_processor *pr)
> if (!cpc_ptr)
> return;
>
> - /* Free all the mapped sys mem areas for this CPU */
> - for (i = 2; i < cpc_ptr->num_entries; i++) {
> - addr = cpc_ptr->cpc_regs[i-2].sys_mem_vaddr;
> - if (addr)
> - iounmap(addr);
> - }
> -
> kobject_put(&cpc_ptr->kobj);
[Severity: High]
Does this leave a dangling pointer in the per-CPU variable?
When acpi_cppc_processor_exit() drops the kobject refcount, the underlying
memory is freed. However, it seems per_cpu(cpc_desc_ptr, pr->id) is never
set to NULL.
Could other CPPC functions that rely on this pointer being NULL if
uninitialized, such as cppc_get_perf_caps():
struct cpc_desc *cpc_desc = per_cpu(cpc_desc_ptr, cpunum);
// ...
if (!cpc_desc) {
pr_debug("No CPC descriptor for CPU:%d\n", cpunum);
return -ENODEV;
}
successfully pass the check on the dangling pointer and trigger a
use-after-free upon driver unbind?
[Severity: Medium]
Could omitting kobject_del() here cause a sysfs -EEXIST error when the
driver is re-bound?
The teardown path drops the reference but appears to omit explicitly
unregistering the sysfs directory. If the kobject's refcount does not
immediately reach 0 (for example, if userspace has a CPPC sysfs file open,
or if CONFIG_DEBUG_KOBJECT_RELEASE=y defers the release), the sysfs
directory is not synchronously removed.
Should kobject_del() be called before kobject_put() to ensure a subsequent
kobject_add() in the probe path does not collide with a lingering sysfs
directory?
> - kfree(cpc_ptr);
> }
> EXPORT_SYMBOL_GPL(acpi_cppc_processor_exit);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261013223946.1836757-1-irogers@google.com?part=5
next prev parent reply other threads:[~2026-10-13 22:54 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 22:39 [PATCH 00/11] kobject: Require explicit initialization of struct kobj_type::release Ian Rogers
2026-10-13 22:39 ` [PATCH 01/11] Compiler Attributes: Add __require_explicit_initialization macro Ian Rogers
2026-10-13 22:48 ` sashiko-bot
2026-10-14 7:27 ` Christian König
2026-10-13 22:39 ` [PATCH 02/11] powerpc/secvar: Add missing kobject release callback to secvar_ktype Ian Rogers
2026-10-13 22:47 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 03/11] sh: sq: Add missing kobject release callback to ktype_percpu_entry Ian Rogers
2026-10-13 22:53 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 04/11] cpufreq: Initialize kobj_type release callback in ondemand and conservative governors Ian Rogers
2026-10-13 22:52 ` sashiko-bot
2026-10-14 4:24 ` Zhongqiu Han
2026-10-13 22:39 ` [PATCH 05/11] ACPI: CPPC: Free cpc_desc in kobject release callback Ian Rogers
2026-10-13 22:54 ` sashiko-bot [this message]
2026-10-13 22:39 ` [PATCH 06/11] dlm: Free dlm_ls " Ian Rogers
2026-10-13 22:55 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 07/11] xen/sys-hypervisor: Add release callback to hyp_sysfs_kobj_type Ian Rogers
2026-10-13 22:52 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 08/11] s390/sclp_mem: Allocate struct sclp_mem dynamically and add kobject release Ian Rogers
2026-10-13 22:48 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 09/11] ubifs: sysfs: Use kset_create_and_add() for ubifs_kset Ian Rogers
2026-10-13 22:47 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 10/11] drm/amdkfd: Free queue in procfs_queue_type kobject release callback Ian Rogers
2026-10-13 22:57 ` sashiko-bot
2026-10-13 22:39 ` [PATCH 11/11] kobject: Require explicit initialization of struct kobj_type::release Ian Rogers
2026-10-13 22:56 ` sashiko-bot
2026-10-14 5:36 ` [PATCH 00/11] " Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=sashiko-outbox-170607@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Felix.Kuehling@amd.com \
--cc=aahringo@redhat.com \
--cc=agordeev@linux.ibm.com \
--cc=alexander.deucher@amd.com \
--cc=borntraeger@linux.ibm.com \
--cc=chengzhihao1@huawei.com \
--cc=chleroy@kernel.org \
--cc=christian.koenig@amd.com \
--cc=corbet@lwn.net \
--cc=dakr@kernel.org \
--cc=dalias@libc.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=gor@linux.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=hca@linux.ibm.com \
--cc=irogers@google.com \
--cc=jgross@suse.com \
--cc=justinstitt@google.com \
--cc=kees@kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-s390@vger.kernel.org \
--cc=maddy@linux.ibm.com \
--cc=morbo@google.com \
--cc=mpe@ellerman.id.au \
--cc=nathan@kernel.org \
--cc=nayna@linux.ibm.com \
--cc=ndesaulniers@google.com \
--cc=npiggin@gmail.com \
--cc=ojeda@kernel.org \
--cc=oleksandr_tyshchenko@epam.com \
--cc=rafael@kernel.org \
--cc=richard@nod.at \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sstabellini@kernel.org \
--cc=svens@linux.ibm.com \
--cc=teigland@redhat.com \
--cc=viresh.kumar@linaro.org \
--cc=ysato@users.sourceforge.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox