Hi Greg and Sasha,

Please find attached backports of commit 2e43ae7dd71c ("drm/i915/gvt:
fix unterminated-string-initialization warning") to address an instance
of -Wunterminated-string-initialization that appears in the i915 driver
with GCC 15 and Clang 21 due to its use of -Wextra. Please let me know
if there are any issues.

Cheers,
Nathan
>From 604141c490f8e7591a80b27dba1000cceadb35c9 Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nik...@intel.com>
Date: Thu, 27 Mar 2025 14:47:39 +0200
Subject: [PATCH 5.4] drm/i915/gvt: fix unterminated-string-initialization
 warning

commit 2e43ae7dd71cd9bb0d1bce1d3306bf77523feb81 upstream.

Initializing const char opregion_signature[16] = OPREGION_SIGNATURE
(which is "IntelGraphicsMem") drops the NUL termination of the
string. This is intentional, but the compiler doesn't know this.

Switch to initializing header->signature directly from the string
litaral, with sizeof destination rather than source. We don't treat the
signature as a string other than for initialization; it's really just a
blob of binary data.

Add a static assert for good measure to cross-check the sizes.

Reported-by: Kees Cook <k...@kernel.org>
Closes: https://lore.kernel.org/r/20250310222355.work.417-k...@kernel.org
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13934
Tested-by: Nicolas Chauvet <kwiz...@gmail.com>
Tested-by: Damian Tometzki <dam...@riscv-rocks.de>
Cc: sta...@vger.kernel.org
Reviewed-by: Zhenyu Wang <zhenyuw.li...@gmail.com>
Link: https://lore.kernel.org/r/20250327124739.2609656-1-jani.nik...@intel.com
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
(cherry picked from commit 4f8207469094bd04aad952258ceb9ff4c77b6bfa)
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
[nathan: Move static_assert() to top of function to avoid instance of
         -Wdeclaration-after-statement due to lack of b5ec6fd286df]
Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---
 drivers/gpu/drm/i915/gvt/opregion.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/opregion.c 
b/drivers/gpu/drm/i915/gvt/opregion.c
index 867e7629025b..7d347e2944a0 100644
--- a/drivers/gpu/drm/i915/gvt/opregion.c
+++ b/drivers/gpu/drm/i915/gvt/opregion.c
@@ -223,7 +223,8 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
        u8 *buf;
        struct opregion_header *header;
        struct vbt v;
-       const char opregion_signature[16] = OPREGION_SIGNATURE;
+
+       static_assert(sizeof(header->signature) == sizeof(OPREGION_SIGNATURE) - 
1);
 
        gvt_dbg_core("init vgpu%d opregion\n", vgpu->id);
        vgpu_opregion(vgpu)->va = (void *)__get_free_pages(GFP_KERNEL |
@@ -237,8 +238,9 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
        /* emulated opregion with VBT mailbox only */
        buf = (u8 *)vgpu_opregion(vgpu)->va;
        header = (struct opregion_header *)buf;
-       memcpy(header->signature, opregion_signature,
-              sizeof(opregion_signature));
+
+       memcpy(header->signature, OPREGION_SIGNATURE, 
sizeof(header->signature));
+
        header->size = 0x8;
        header->opregion_ver = 0x02000000;
        header->mboxes = MBOX_VBT;

base-commit: 2c8115e4757809ffd537ed9108da115026d3581f
-- 
2.49.0

>From 8df71970af64794683e6c537fbd2c8d6613ab9cf Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nik...@intel.com>
Date: Thu, 27 Mar 2025 14:47:39 +0200
Subject: [PATCH 5.10] drm/i915/gvt: fix unterminated-string-initialization
 warning

commit 2e43ae7dd71cd9bb0d1bce1d3306bf77523feb81 upstream.

Initializing const char opregion_signature[16] = OPREGION_SIGNATURE
(which is "IntelGraphicsMem") drops the NUL termination of the
string. This is intentional, but the compiler doesn't know this.

Switch to initializing header->signature directly from the string
litaral, with sizeof destination rather than source. We don't treat the
signature as a string other than for initialization; it's really just a
blob of binary data.

Add a static assert for good measure to cross-check the sizes.

Reported-by: Kees Cook <k...@kernel.org>
Closes: https://lore.kernel.org/r/20250310222355.work.417-k...@kernel.org
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13934
Tested-by: Nicolas Chauvet <kwiz...@gmail.com>
Tested-by: Damian Tometzki <dam...@riscv-rocks.de>
Cc: sta...@vger.kernel.org
Reviewed-by: Zhenyu Wang <zhenyuw.li...@gmail.com>
Link: https://lore.kernel.org/r/20250327124739.2609656-1-jani.nik...@intel.com
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
(cherry picked from commit 4f8207469094bd04aad952258ceb9ff4c77b6bfa)
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
[nathan: Move static_assert() to top of function to avoid instance of
         -Wdeclaration-after-statement due to lack of b5ec6fd286df]
Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---
 drivers/gpu/drm/i915/gvt/opregion.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/opregion.c 
b/drivers/gpu/drm/i915/gvt/opregion.c
index 33569b910ed5..fbf1e67913f6 100644
--- a/drivers/gpu/drm/i915/gvt/opregion.c
+++ b/drivers/gpu/drm/i915/gvt/opregion.c
@@ -222,7 +222,8 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
        u8 *buf;
        struct opregion_header *header;
        struct vbt v;
-       const char opregion_signature[16] = OPREGION_SIGNATURE;
+
+       static_assert(sizeof(header->signature) == sizeof(OPREGION_SIGNATURE) - 
1);
 
        gvt_dbg_core("init vgpu%d opregion\n", vgpu->id);
        vgpu_opregion(vgpu)->va = (void *)__get_free_pages(GFP_KERNEL |
@@ -236,8 +237,9 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
        /* emulated opregion with VBT mailbox only */
        buf = (u8 *)vgpu_opregion(vgpu)->va;
        header = (struct opregion_header *)buf;
-       memcpy(header->signature, opregion_signature,
-              sizeof(opregion_signature));
+
+       memcpy(header->signature, OPREGION_SIGNATURE, 
sizeof(header->signature));
+
        header->size = 0x8;
        header->opregion_ver = 0x02000000;
        header->mboxes = MBOX_VBT;

base-commit: 024a4a45fdf87218e3c0925475b05a27bcea103f
-- 
2.49.0

>From 6881a5a1bf876e747fd99226e671aaaf85bc8e45 Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nik...@intel.com>
Date: Thu, 27 Mar 2025 14:47:39 +0200
Subject: [PATCH 5.15] drm/i915/gvt: fix unterminated-string-initialization
 warning

commit 2e43ae7dd71cd9bb0d1bce1d3306bf77523feb81 upstream.

Initializing const char opregion_signature[16] = OPREGION_SIGNATURE
(which is "IntelGraphicsMem") drops the NUL termination of the
string. This is intentional, but the compiler doesn't know this.

Switch to initializing header->signature directly from the string
litaral, with sizeof destination rather than source. We don't treat the
signature as a string other than for initialization; it's really just a
blob of binary data.

Add a static assert for good measure to cross-check the sizes.

Reported-by: Kees Cook <k...@kernel.org>
Closes: https://lore.kernel.org/r/20250310222355.work.417-k...@kernel.org
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13934
Tested-by: Nicolas Chauvet <kwiz...@gmail.com>
Tested-by: Damian Tometzki <dam...@riscv-rocks.de>
Cc: sta...@vger.kernel.org
Reviewed-by: Zhenyu Wang <zhenyuw.li...@gmail.com>
Link: https://lore.kernel.org/r/20250327124739.2609656-1-jani.nik...@intel.com
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
(cherry picked from commit 4f8207469094bd04aad952258ceb9ff4c77b6bfa)
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
[nathan: Move static_assert() to top of function to avoid instance of
         -Wdeclaration-after-statement due to lack of b5ec6fd286df]
Signed-off-by: Nathan Chancellor <nat...@kernel.org>
---
 drivers/gpu/drm/i915/gvt/opregion.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/opregion.c 
b/drivers/gpu/drm/i915/gvt/opregion.c
index 33569b910ed5..fbf1e67913f6 100644
--- a/drivers/gpu/drm/i915/gvt/opregion.c
+++ b/drivers/gpu/drm/i915/gvt/opregion.c
@@ -222,7 +222,8 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
        u8 *buf;
        struct opregion_header *header;
        struct vbt v;
-       const char opregion_signature[16] = OPREGION_SIGNATURE;
+
+       static_assert(sizeof(header->signature) == sizeof(OPREGION_SIGNATURE) - 
1);
 
        gvt_dbg_core("init vgpu%d opregion\n", vgpu->id);
        vgpu_opregion(vgpu)->va = (void *)__get_free_pages(GFP_KERNEL |
@@ -236,8 +237,9 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
        /* emulated opregion with VBT mailbox only */
        buf = (u8 *)vgpu_opregion(vgpu)->va;
        header = (struct opregion_header *)buf;
-       memcpy(header->signature, opregion_signature,
-              sizeof(opregion_signature));
+
+       memcpy(header->signature, OPREGION_SIGNATURE, 
sizeof(header->signature));
+
        header->size = 0x8;
        header->opregion_ver = 0x02000000;
        header->mboxes = MBOX_VBT;

base-commit: 98f47d0e9b8c557d3063d3ea661cbea1489af330
-- 
2.49.0

Reply via email to