-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gnu: btop: Fix SEGFAULT error on Intel GPUs.
btop would fail on built-in Intel GPUs, this patch fixes that (see <aristocratos/btop#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 <[email protected]>
- Loading branch information
1 parent
0d7115b
commit da70c25
Showing
3 changed files
with
53 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
From 0ed4e9e907b3a3f1c2ae209b1dab384b1fa7a490 Mon Sep 17 00:00:00 2001 | ||
From: "Artyom V. Poptsov" <[email protected]> | ||
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 | ||
|