drm/panthor: Clean up FW version information display
authorSteven Price <steven.price@arm.com>
Thu, 13 Feb 2025 16:12:48 +0000 (16:12 +0000)
committerSteven Price <steven.price@arm.com>
Wed, 5 Mar 2025 14:15:04 +0000 (14:15 +0000)
Assigning a string to an array which is too small to include the NUL
byte at the end causes a warning on some compilers. But this function
also has some other oddities like the 'header' array which is only ever
used within sizeof().

Tidy up the function by removing the 'header' array, allow the NUL byte
to be present in git_sha_header, and calculate the length directly from
git_sha_header.

Reported-by: Will Deacon <will@kernel.org>
Closes: https://lore.kernel.org/all/20250213154237.GA11897@willie-the-truck/
Fixes: 9d443deb0441 ("drm/panthor: Display FW version information")
Signed-off-by: Steven Price <steven.price@arm.com>
Acked-by: Will Deacon <will@kernel.org>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250213161248.1642392-1-steven.price@arm.com
drivers/gpu/drm/panthor/panthor_fw.c

index 4a9c4afa9ad7430eb81b8b3d600369799d654d64..0f52766a31205859c97c575e37a6c2a83124dff3 100644 (file)
@@ -636,8 +636,8 @@ static int panthor_fw_read_build_info(struct panthor_device *ptdev,
                                      u32 ehdr)
 {
        struct panthor_fw_build_info_hdr hdr;
-       char header[9];
-       const char git_sha_header[sizeof(header)] = "git_sha: ";
+       static const char git_sha_header[] = "git_sha: ";
+       const int header_len = sizeof(git_sha_header) - 1;
        int ret;
 
        ret = panthor_fw_binary_iter_read(ptdev, iter, &hdr, sizeof(hdr));
@@ -651,8 +651,7 @@ static int panthor_fw_read_build_info(struct panthor_device *ptdev,
                return 0;
        }
 
-       if (memcmp(git_sha_header, fw->data + hdr.meta_start,
-                  sizeof(git_sha_header))) {
+       if (memcmp(git_sha_header, fw->data + hdr.meta_start, header_len)) {
                /* Not the expected header, this isn't metadata we understand */
                return 0;
        }
@@ -665,7 +664,7 @@ static int panthor_fw_read_build_info(struct panthor_device *ptdev,
        }
 
        drm_info(&ptdev->base, "Firmware git sha: %s\n",
-                fw->data + hdr.meta_start + sizeof(git_sha_header));
+                fw->data + hdr.meta_start + header_len);
 
        return 0;
 }