All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Michael J. Ruhl" <michael.j.ruhl@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v4 06/18] platform/x86/intel/pmt: Do not remap when using callbacks
Date: Tue, 01 Sep 2026 19:51:51 +0000	[thread overview]
Message-ID: <20260901195151.E26A11F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260901192736.626777-26-michael.j.ruhl@intel.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] NULL pointer dereference in `pmt_telem_read32()` when endpoints use telemetry callbacks.
- [High] The sysfs `.mmap` handler unconditionally maps physical telemetry memory to userspace, bypassing the newly added parent driver read callback.
--

commit a657165fa233afba9ebccd9da3e933c1ff49ccee
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>

platform/x86/intel/pmt: Do not remap when using callbacks

This commit updates the PMT class driver to skip creating a memory remap
when a read_telem callback is provided. It intends to let the parent
driver handle data area access when a callback is present.

> diff --git a/drivers/platform/x86/intel/pmt/class.c b/drivers/platform/x86/intel/pmt/class.c
> index af7c951b569a2..350129121ff13 100644
> --- a/drivers/platform/x86/intel/pmt/class.c
> +++ b/drivers/platform/x86/intel/pmt/class.c

[ ... ]

> @@ -403,14 +402,18 @@ 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;
> +	if (!is_cb_read_telem(entry->cb)) {
> +		struct resource res = {0};
>  
> -	entry->base = devm_ioremap_resource(dev, &res);
> -	if (IS_ERR(entry->base)) {
> -		ret = PTR_ERR(entry->base);
> -		goto fail_ioremap;
> +		res.start = entry->base_addr;
> +		res.end = res.start + entry->size - 1;
> +		res.flags = IORESOURCE_MEM;
> +
> +		entry->base = devm_ioremap_resource(dev, &res);
> +		if (IS_ERR(entry->base)) {
> +			ret = PTR_ERR(entry->base);
> +			goto fail_ioremap;
> +		}
>  	}

[Severity: High]
Does this leave entry->base uninitialized (NULL) when a telemetry callback
is present?

If a callback is provided, we skip mapping the device memory. However, the
exported pmt_telem_read32() API unconditionally dereferences ep->base without
checking for the callback:

drivers/platform/x86/intel/pmt/telemetry.c:pmt_telem_read32() {
        ...
        memcpy_fromio(data, ep->base + offset, NUM_BYTES_DWORD(count));
        ...
}

Unlike pmt_telem_read(), which safely delegates to pmt_telem_read_mmio(),
any driver invoking pmt_telem_read32() on a callback-enabled endpoint might
trigger a NULL pointer dereference.

>  
>  	sysfs_bin_attr_init(&entry->pmt_bin_attr);

[Severity: High]
Since the intel_pmt_mmap handler is unconditionally assigned to the sysfs
binary attribute just below this, can userspace map the physical telemetry
memory directly, bypassing the parent driver's read callback?

When userspace mmaps the sysfs file, intel_pmt_mmap() handles it:

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;
        ...
}

This directly maps the physical memory to userspace using
io_remap_pfn_range(), which seems to defeat the callback-based access
control and hardware state management intended by skipping the ioremap.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260901192736.626777-20-michael.j.ruhl@intel.com?part=6

  reply	other threads:[~2026-09-01 19:51 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-01 19:27 [PATCH v4 00/18] Crescent Island PMT support Michael J. Ruhl
2026-09-01 19:27 ` [PATCH v4 01/18] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
2026-09-01 19:27 ` [PATCH v4 02/18] platform/x86/intel/pmt: refactor rmw with a return value Michael J. Ruhl
2026-09-02  9:05   ` Ilpo Järvinen
2026-09-02  9:07   ` Ilpo Järvinen
2026-09-01 19:27 ` [PATCH v4 03/18] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
2026-09-01 19:38   ` sashiko-bot
2026-09-02  9:08   ` Ilpo Järvinen
2026-09-01 19:27 ` [PATCH v4 04/18] platform/x86/intel/pmt: Add register access callbacks Michael J. Ruhl
2026-09-01 19:45   ` sashiko-bot
2026-09-01 19:27 ` [PATCH v4 05/18] platform/x86/intel/pmt: Add helpers for callback info Michael J. Ruhl
2026-09-01 19:40   ` sashiko-bot
2026-09-02  9:10   ` Ilpo Järvinen
2026-09-01 19:27 ` [PATCH v4 06/18] platform/x86/intel/pmt: Do not remap when using callbacks Michael J. Ruhl
2026-09-01 19:51   ` sashiko-bot [this message]
2026-09-02  9:18   ` Ilpo Järvinen
2026-09-01 19:27 ` [PATCH v4 07/18] drm/xe/vsec: Do not register BMG PMT for VF Michael J. Ruhl
2026-09-02 19:06   ` Rodrigo Vivi
2026-09-02 20:47     ` Ruhl, Michael J
2026-09-01 19:27 ` [PATCH v4 08/18] drm/xe/vsec: Correct locking order Michael J. Ruhl
2026-09-02 19:08   ` Rodrigo Vivi
2026-09-02 19:11     ` Matthew Brost
2026-09-01 19:27 ` [PATCH v4 09/18] drm/xe/vsec: Use correct pm state get Michael J. Ruhl
2026-09-02 19:10   ` Rodrigo Vivi
2026-09-01 19:27 ` [PATCH v4 10/18] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
2026-09-02 19:15   ` Rodrigo Vivi
2026-09-01 19:27 ` [PATCH v4 11/18] drm/xe/vsec: Support Crescent Island PMT Michael J. Ruhl
2026-09-02 19:16   ` Rodrigo Vivi
2026-09-01 19:27 ` [PATCH v4 12/18] drm/xe/vsec: Refactor BattleMage PMT defines Michael J. Ruhl
2026-09-02 19:18   ` Rodrigo Vivi
2026-09-01 19:27 ` [PATCH v4 13/18] drm/xe/vsec: Crescent Island PMT decode Michael J. Ruhl
2026-09-01 19:27 ` [PATCH v4 14/18] drm/xe/vsec: Crescent Island PMT callbacks Michael J. Ruhl
2026-09-01 19:27 ` [PATCH v4 15/18] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
2026-09-01 20:14   ` sashiko-bot
2026-09-01 19:27 ` [PATCH v4 16/18] drm/xe/vsec: Add PMT GUID internal access Michael J. Ruhl
2026-09-01 20:20   ` sashiko-bot
2026-09-01 19:27 ` [PATCH v4 17/18] drm/xe/vsec: Update PMT " Michael J. Ruhl
2026-09-01 20:21   ` sashiko-bot
2026-09-03  5:50   ` Poosa, Karthik
2026-09-01 19:27 ` [PATCH v4 18/18] drm/xe/vsec: Refactor platform check Michael J. Ruhl
2026-09-03  5:57   ` Poosa, Karthik
2026-09-01 19:34 ` ✗ CI.checkpatch: warning for Crescent Island PMT support (rev6) Patchwork
2026-09-01 19:35 ` ✗ 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=20260901195151.E26A11F00A3A@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.