mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-02-01 23:36:35 +01:00
da70c25a3b
btop would fail on built-in Intel GPUs, this patch fixes that (see <https://github.com/aristocratos/btop/pull/958>.) * gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/admin.scm (btop): Use it. Change-Id: Ic2bbf55a5f892a37bde17db6fb15025733b9bad6 Reviewed-by: Z572 <zhengjunjie@iscas.ac.cn>
49 lines
1.9 KiB
Diff
49 lines
1.9 KiB
Diff
From 0ed4e9e907b3a3f1c2ae209b1dab384b1fa7a490 Mon Sep 17 00:00:00 2001
|
|
From: "Artyom V. Poptsov" <poptsov.artyom@gmail.com>
|
|
Date: Sun, 3 Nov 2024 09:02:45 +0300
|
|
Subject: [PATCH] intel_name_lookup_shim.c (get_intel_device_name): Fix
|
|
SEGFAULT
|
|
|
|
btop would always fail with "Segmentation fault" when used on machines where the
|
|
GPU does not have a codename (e.g. on embedded Intel graphics on Intel(R)
|
|
Atom(TM) CPU D2500.) The reason for this behavior is that when a GPU does not
|
|
have codename (it is NULL) the call to "strcpy" segfaults as the procedure
|
|
effectively tries to access a NULL pointer.
|
|
|
|
See <https://github.com/aristocratos/btop/pull/958>.
|
|
|
|
* src/linux/intel_gpu_top/intel_name_lookup_shim.c (get_intel_device_name): Add
|
|
a check if "info->codename" is null; if it is, set the device name to
|
|
"(unknown)" to prevent the SEGFAULT error.
|
|
---
|
|
src/linux/intel_gpu_top/intel_name_lookup_shim.c | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/linux/intel_gpu_top/intel_name_lookup_shim.c b/src/linux/intel_gpu_top/intel_name_lookup_shim.c
|
|
index e714f80..38f87fa 100644
|
|
--- a/src/linux/intel_gpu_top/intel_name_lookup_shim.c
|
|
+++ b/src/linux/intel_gpu_top/intel_name_lookup_shim.c
|
|
@@ -84,10 +84,14 @@ char *get_intel_device_name(const char *device_id) {
|
|
char full_name[256];
|
|
const struct intel_device_info *info = intel_get_device_info(devid);
|
|
if (info) {
|
|
- strcpy(dev_name, info->codename);
|
|
- dev_name[0] = toupper(dev_name[0]);
|
|
+ if (info->codename == NULL) {
|
|
+ strcpy(dev_name, "(unknown)");
|
|
+ } else {
|
|
+ strcpy(dev_name, info->codename);
|
|
+ dev_name[0] = toupper(dev_name[0]);
|
|
+ }
|
|
snprintf(full_name, sizeof(full_name), "Intel %s (Gen%u)", dev_name, info->graphics_ver);
|
|
return strdup(full_name);
|
|
}
|
|
return NULL;
|
|
-}
|
|
\ No newline at end of file
|
|
+}
|
|
|
|
base-commit: 2e7208d59c54515080027a5ecbb89d2054047985
|
|
--
|
|
2.46.0
|
|
|