diff options
author | Artyom V. Poptsov <poptsov.artyom@gmail.com> | 2024-11-03 12:01:04 +0300 |
---|---|---|
committer | Artyom V. Poptsov <poptsov.artyom@gmail.com> | 2024-11-03 13:09:22 +0300 |
commit | da70c25a3b6e722a16e15e758373b08d1099ded1 (patch) | |
tree | 1c766102a0a70eb67c7c2acc2fd062a5f189a31e /gnu/packages | |
parent | 0d7115b867424240425e5eef20efcf6abf6b7e92 (diff) | |
download | guix-da70c25a3b6e722a16e15e758373b08d1099ded1.tar guix-da70c25a3b6e722a16e15e758373b08d1099ded1.tar.gz |
gnu: btop: Fix SEGFAULT error on Intel GPUs.
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>
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/admin.scm | 4 | ||||
-rw-r--r-- | gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch | 49 |
2 files changed, 52 insertions, 1 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index cd5a76579d..88d68a3afc 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -775,7 +775,9 @@ console.") (file-name (git-file-name name version)) (sha256 (base32 - "0vgw6hwqh6zbzrvrn3i0xwi9ykm1qdvhqcyz3mjakd7w303lx603")))) + "0vgw6hwqh6zbzrvrn3i0xwi9ykm1qdvhqcyz3mjakd7w303lx603")) + (patches + (search-patches "btop-fix-segfault-on-intel-gpus.patch")))) (build-system gnu-build-system) (native-inputs (list lowdown)) (arguments diff --git a/gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch b/gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch new file mode 100644 index 0000000000..27e2541dbc --- /dev/null +++ b/gnu/packages/patches/btop-fix-segfault-on-intel-gpus.patch @@ -0,0 +1,49 @@ +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 + |