blob: 27e2541dbccc3fb68b41241daad9d024fe2252b0 (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
|