From: sashiko-bot@kernel.org
To: "Michael J. Ruhl" <michael.j.ruhl@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v6 05/18] platform/x86/intel/pmt: Do not remap when using callbacks
Date: Fri, 04 Sep 2026 18:42:15 +0000 [thread overview]
Message-ID: <20260904184216.3AFCE1F00A3D@smtp.kernel.org> (raw)
In-Reply-To: <20260904182451.1164868-25-michael.j.ruhl@intel.com>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] NULL pointer dereference in `pmt_telem_read32()` for callback-managed endpoints.
- [High] Resource access control bypass via sysfs `mmap` for callback-managed endpoints.
- [Medium] Application Energy Telemetry (AET) integration silently fails for callback-managed endpoints.
--
commit 4b5eaf240c4891c9b29025f06df395bf25b62269
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
platform/x86/intel/pmt: Do not remap when using callbacks
A callback indicates that the parent driver is responsible for accessing
the data area. Creating a PMT memory remap is redundant. If a read_telem
callback has been provided, do not create a remap.
> diff --git a/drivers/platform/x86/intel/pmt/class.c b/drivers/platform/x86/intel/pmt/class.c
> index 402d51df834a6..1c7a372b4fc42 100644
> --- a/drivers/platform/x86/intel/pmt/class.c
> +++ b/drivers/platform/x86/intel/pmt/class.c
[ ... ]
> @@ -403,14 +403,19 @@ static int intel_pmt_dev_register(struct intel_pmt_entry *entry,
> if (!entry->size)
> return 0;
>
> - res.start = entry->base_addr;
> - res.end = res.start + entry->size - 1;
> - res.flags = IORESOURCE_MEM;
> + /*
> + * The read_telem callback is responsible for this mapping, and may have
> + * different requirements for use. If the callback is present do not
> + * create the map.
> + */
> + if (!(entry->cb && entry->cb->read_telem)) {
> + struct resource res = DEFINE_RES_MEM(entry->base_addr, entry->size);
>
> - entry->base = devm_ioremap_resource(dev, &res);
> - if (IS_ERR(entry->base)) {
> - ret = PTR_ERR(entry->base);
> - goto fail_ioremap;
> + entry->base = devm_ioremap_resource(dev, &res);
> + if (IS_ERR(entry->base)) {
> + ret = PTR_ERR(entry->base);
> + goto fail_ioremap;
> + }
> }
[Severity: High]
Does leaving entry->base unmapped cause a NULL pointer dereference in
pmt_telem_read32()?
Because entry->base is intentionally left unmapped (NULL) for callback-managed
devices, any invocation of pmt_telem_read32() on such a device will
unconditionally dereference ep->base:
drivers/platform/x86/intel/pmt/telemetry.c:pmt_telem_read32() {
...
memcpy_fromio(data, ep->base + offset, NUM_BYTES_DWORD(count));
...
}
[Severity: High]
Does unconditionally registering intel_pmt_mmap() in this function allow
userspace to bypass the device-specific callback requirements?
If a callback is required for safe access, the mmap handler still directly maps
the physical address to userspace:
drivers/platform/x86/intel/pmt/class.c:intel_pmt_mmap() {
...
if (io_remap_pfn_range(vma, vma->vm_start, pfn,
vsize, vma->vm_page_prot))
return -EAGAIN;
...
}
Because entry->pmt_bin_attr.mmap = intel_pmt_mmap; is unconditionally set a
few lines below, this exposes a lockless bypass to userspace for hardware that
explicitly requires callback synchronization.
[Severity: Medium]
Will this silently break Application Energy Telemetry (AET) integration for
callback-managed endpoints?
During runtime reads, the AET driver expects the region address to be mapped,
but since it is now NULL, it skips all regions without emitting errors:
arch/x86/kernel/cpu/resctrl/intel_aet.c:intel_aet_read_event() {
...
for (int i = 0; i < e->pfg->count; i++) {
if (!e->pfg->regions[i].addr)
continue;
...
evtcount = readq(e->pfg->regions[i].addr + idx * sizeof(u64));
...
}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260904182451.1164868-20-michael.j.ruhl@intel.com?part=5
next prev parent reply other threads:[~2026-09-04 18:42 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 18:24 [PATCH v6 00/18] Crescent Island PMT support Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 01/18] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
2026-09-04 18:45 ` sashiko-bot
2026-09-04 18:24 ` [PATCH v6 02/18] platform/x86/intel/pmt: refactor rmw with a return value Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 03/18] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 04/18] platform/x86/intel/pmt: Add register access callbacks Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 05/18] platform/x86/intel/pmt: Do not remap when using callbacks Michael J. Ruhl
2026-09-04 18:42 ` sashiko-bot [this message]
2026-09-04 18:24 ` [PATCH v6 06/18] drm/xe/vsec: Do not register BMG PMT for VF Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 07/18] drm/xe/vsec: Correct locking order Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 08/18] drm/xe/vsec: Use correct pm state get Michael J. Ruhl
2026-09-04 18:24 ` [PATCH v6 09/18] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
2026-09-04 18:25 ` [PATCH v6 10/18] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
2026-09-04 18:25 ` [PATCH v6 11/18] drm/xe/vsec: Support Crescent Island PMT Michael J. Ruhl
2026-09-04 18:25 ` [PATCH v6 12/18] drm/xe/vsec: Refactor BattleMage PMT defines Michael J. Ruhl
2026-09-04 18:53 ` sashiko-bot
2026-09-04 19:37 ` Ruhl, Michael J
2026-09-04 18:25 ` [PATCH v6 13/18] drm/xe/vsec: Crescent Island PMT decode Michael J. Ruhl
2026-09-04 18:50 ` sashiko-bot
2026-09-04 18:25 ` [PATCH v6 14/18] drm/xe/vsec: Crescent Island PMT callbacks Michael J. Ruhl
2026-09-04 18:51 ` sashiko-bot
2026-09-04 18:25 ` [PATCH v6 15/18] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
2026-09-04 18:56 ` sashiko-bot
2026-09-04 18:25 ` [PATCH v6 16/18] drm/xe/vsec: Add PMT GUID internal access Michael J. Ruhl
2026-09-04 18:25 ` [PATCH v6 17/18] drm/xe/vsec: Update PMT " Michael J. Ruhl
2026-09-04 18:55 ` sashiko-bot
2026-09-04 18:25 ` [PATCH v6 18/18] drm/xe/vsec: Refactor platform check Michael J. Ruhl
2026-09-04 18:55 ` ✗ CI.checkpatch: warning for Crescent Island PMT support (rev8) Patchwork
2026-09-04 18:56 ` ✗ CI.KUnit: failure " Patchwork
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=20260904184216.3AFCE1F00A3D@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=michael.j.ruhl@intel.com \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.