[PATCH 05/10] platform/x86/intel/pmt: crashlog binary file endpoint
Ilpo Järvinen
ilpo.jarvinen at linux.intel.com
Sat May 31 05:36:31 UTC 2025
On Fri, 30 May 2025, Michael J. Ruhl wrote:
> Usage of the intel_pmt_read() for binary sysfs, requires an
> allocated endpoint struct. The crashlog driver does not
> allocate the endpoint.
>
> Without the ep, the crashlog usage causes the following NULL
> pointer exception:
>
> BUG: kernel NULL pointer dereference, address: 0000000000000000
> Oops: Oops: 0000 [#1] SMP NOPTI
> RIP: 0010:intel_pmt_read+0x3b/0x70 [pmt_class]
> Code:
> Call Trace:
> <TASK>
> ? sysfs_kf_bin_read+0xc0/0xe0
> kernfs_fop_read_iter+0xac/0x1a0
> vfs_read+0x26d/0x350
> ksys_read+0x6b/0xe0
> __x64_sys_read+0x1d/0x30
> x64_sys_call+0x1bc8/0x1d70
> do_syscall_64+0x6d/0x110
>
> Add the endpoint information to the crashlog driver to avoid
> the NULL pointer exception.
>
> Fixes: 416eeb2e1fc7 ("platform/x86/intel/pmt: telemetry: Export API to read telemetry")
Add Cc: <stable at vger.kernel.org> and as this is going to stable so you
should mrk the patches this one depends on with the stable Cc as well,
this is explained in Documentation/process/stable-kernel-rules.rst.
As a general rule, it would be useful to put the patches going to stable
as first and refactor and feature changes only after that (you had some
whitespace and guard() changes before this patch).
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl at intel.com>
> ---
> drivers/platform/x86/intel/pmt/crashlog.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
> index c6d8a7a61d39..94858bfb52f8 100644
> --- a/drivers/platform/x86/intel/pmt/crashlog.c
> +++ b/drivers/platform/x86/intel/pmt/crashlog.c
> @@ -250,6 +250,7 @@ static struct intel_pmt_namespace pmt_crashlog_ns = {
> .xa = &crashlog_array,
> .attr_grp = &pmt_crashlog_group,
> .pmt_header_decode = pmt_crashlog_header_decode,
> + .pmt_add_endpoint = intel_pmt_add_endpoint,
> };
>
> /*
> @@ -260,8 +261,12 @@ static void pmt_crashlog_remove(struct auxiliary_device *auxdev)
> struct pmt_crashlog_priv *priv = auxiliary_get_drvdata(auxdev);
> int i;
>
> - for (i = 0; i < priv->num_entries; i++)
> - intel_pmt_dev_destroy(&priv->entry[i].entry, &pmt_crashlog_ns);
> + for (i = 0; i < priv->num_entries; i++) {
> + struct intel_pmt_entry *entry = &priv->entry[i].entry;
> +
> + intel_pmt_release_endpoint(entry->ep);
> + intel_pmt_dev_destroy(entry, &pmt_crashlog_ns);
> + }
> }
>
> static int pmt_crashlog_probe(struct auxiliary_device *auxdev,
>
--
i.
More information about the Intel-xe
mailing list