All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Badal Nilawar" <badal.nilawar@intel.com>
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH v2 04/11] drm/xe/cper: APIs to prepare and log CPER record
Date: Tue, 25 Aug 2026 18:02:18 +0000	[thread overview]
Message-ID: <20260825180219.0EB5A1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260825175916.1103841-17-badal.nilawar@intel.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Unconditional dereference of potentially NULL `THIS_MODULE->srcversion` causes kernel panic.
- [Medium] Assigning `ktime_get_real_seconds()` to `rhdr->timestamp` violates the UEFI CPER standard, which requires a BCD timestamp.
--

commit 1a8a9f568395a2ce2ede1bcececcf688f5a25b63
Author: Badal Nilawar <badal.nilawar@intel.com>

drm/xe/cper: APIs to prepare and log CPER record

Add APIs to initialize Intel-specific CPER metadata, build a non-standard
CPER record, and emit it via the xe_error_cper tracepoint.

> diff --git a/drivers/gpu/drm/xe/xe_cper.c b/drivers/gpu/drm/xe/xe_cper.c
> new file mode 100644
> index 0000000000000..371537052de35
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_cper.c
[ ... ]
> +void xe_cper_init_intel_err_hdr(struct xe_device *xe, const u8 location[12],
> +				u64 first_timestamp, u32 sig_id,
> +				u32 error_count, struct xe_cper_sec_intel_err_hdr *ihdr)
> +{
[ ... ]
> +	strscpy(ihdr->pci_bdf, pci_name(to_pci_dev(xe->drm.dev)), sizeof(ihdr->pci_bdf));
> +	ihdr->valid_bits.pci_bdf = 1;
> +
> +#ifdef MODULE
> +	strscpy(ihdr->drv_version, THIS_MODULE->srcversion, sizeof(ihdr->drv_version));

[Severity: High]
Can this cause a kernel panic if the module's source version is not populated?

When the kernel is compiled without CONFIG_MODULE_SRCVERSION_ALL and the
module lacks an explicit MODULE_VERSION macro, the build system does not
generate the srcversion modinfo attribute. In this case,
THIS_MODULE->srcversion is left as NULL during module load.

Since strscpy() does not handle NULL source pointers gracefully, this
unconditional dereference of THIS_MODULE->srcversion in
xe_cper_init_intel_err_hdr() could lead to a kernel panic when hardware
error reporting is triggered.

> +	ihdr->valid_bits.drv_version = 1;
> +#else
> +	ihdr->valid_bits.drv_version = 0;
> +#endif
> +
> +	fill_fw_id(xe, ihdr);
> +}
[ ... ]
> +void xe_cper_record_emit(struct xe_device *xe, u8 severity,
> +			 guid_t *notification_type,
> +			 struct xe_cper_sec_intel_err_hdr *ihdr,
> +			 const void *einfo, u32 einfo_len)
> +{
[ ... ]
> +	/* Assemble the CPER record header (UEFI Appendix N.2.1) */
> +	memcpy(rhdr->signature, CPER_SIG_RECORD, CPER_SIG_SIZE);
> +	rhdr->revision          = CPER_RECORD_REV;
> +	rhdr->signature_end     = CPER_SIG_END;
> +	rhdr->section_count     = 1;
> +	rhdr->error_severity    = severity;
> +	rhdr->validation_bits   = CPER_VALID_TIMESTAMP;
> +	rhdr->record_length     = total_len;
> +	rhdr->timestamp         = ktime_get_real_seconds();

[Severity: Medium]
Does this assign a raw binary Unix timestamp to a field that requires a BCD
format?

ktime_get_real_seconds() returns a 64-bit binary integer representing
seconds since the Unix epoch. However, the UEFI standard (UEFI 2.8+
Appendix N.2.1) mandates that the timestamp field in a struct
cper_record_header is a 64-bit BCD-encoded date and time value (Century,
Year, Month, Day, Hours, Minutes, Seconds).

Assigning a raw binary Unix timestamp to rhdr->timestamp in
xe_cper_record_emit() could cause standard CPER parsers to read invalid
BCD characters or absurd dates.

> +	if (platform_id) {
> +		rhdr->platform_id      = *platform_id;
> +		rhdr->validation_bits |= CPER_VALID_PLATFORM_ID;
> +	}
[ ... ]

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260825175916.1103841-13-badal.nilawar@intel.com?part=4

  reply	other threads:[~2026-08-25 18:02 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-25 17:59 [PATCH v2 00/11] Add CPER logging support for CRI Badal Nilawar
2026-08-25 17:59 ` [PATCH v2 01/11] drm/xe/xe_ras: Add support to retrieve info queue data " Badal Nilawar
2026-08-25 17:53   ` sashiko-bot
2026-08-26  0:54     ` Rodrigo Vivi
2026-08-25 20:48   ` Michal Wajdeczko
2026-08-25 17:59 ` [PATCH v2 02/11] drm/xe/xe_ras: Refactor get_counter() to return response structure Badal Nilawar
2026-08-25 17:59 ` [PATCH v2 03/11] drm/xe/cper: Add CPER structures and trace event Badal Nilawar
2026-08-25 17:51   ` sashiko-bot
2026-08-28 15:23   ` Rodrigo Vivi
2026-08-25 17:59 ` [PATCH v2 04/11] drm/xe/cper: APIs to prepare and log CPER record Badal Nilawar
2026-08-25 18:02   ` sashiko-bot [this message]
2026-08-26  0:59     ` Rodrigo Vivi
2026-08-25 17:59 ` [PATCH v2 05/11] drm/xe/cper: Prepare Intel CPER error info from info queue Badal Nilawar
2026-08-25 17:54   ` sashiko-bot
2026-08-25 17:59 ` [PATCH v2 06/11] drm/xe/cper: Log CPER records for aggregate counter retrival Badal Nilawar
2026-08-25 17:55   ` sashiko-bot
2026-08-26  1:01   ` Rodrigo Vivi
2026-08-25 17:59 ` [PATCH v2 07/11] drm/xe/cper: Allow hardware error CPER reporting from xe_log Badal Nilawar
2026-08-25 17:54   ` sashiko-bot
2026-08-27 21:27   ` Michal Wajdeczko
2026-08-25 17:59 ` [PATCH v2 08/11] drm/xe/ras: Report device memory errors using SIGID Badal Nilawar
2026-08-25 17:58   ` sashiko-bot
2026-08-27 20:25   ` Michal Wajdeczko
2026-08-25 17:59 ` [PATCH v2 09/11] drm/xe/ras: Report core compute " Badal Nilawar
2026-08-25 17:55   ` sashiko-bot
2026-08-25 17:59 ` [PATCH v2 10/11] drm/xe/ras: Report soc internal " Badal Nilawar
2026-08-28 15:20   ` Rodrigo Vivi
2026-08-25 17:59 ` [PATCH v2 11/11] drm/xe/ras: Report correctable " Badal Nilawar
2026-08-25 18:03   ` sashiko-bot
2026-08-25 18:29 ` ✗ CI.checkpatch: warning for Add CPER logging support for CRI (rev2) Patchwork
2026-08-25 18:31 ` ✓ CI.KUnit: success " Patchwork
2026-08-25 19:25 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-25 22:06 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-08-26 19:50 ` [PATCH v2 00/11] Add CPER logging support for CRI Matt Roper
2026-08-27 20:12   ` Rodrigo Vivi

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=20260825180219.0EB5A1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=badal.nilawar@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --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.