Compare commits
10 Commits
1a98d441f2
...
d0c87b9a35
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0c87b9a35 | ||
|
|
89ecd5aa1a | ||
|
|
371b8ac8fc | ||
|
|
dc426d5fbc | ||
|
|
e6e4280278 | ||
|
|
f98e239148 | ||
|
|
a210cc6234 | ||
|
|
674e4e0ac8 | ||
|
|
b021fddbd4 | ||
|
|
c8510b5b0d |
@ -0,0 +1,118 @@
|
||||
From 0e823890cafdb7220bc916f77b21ca2bdf6cdadc Mon Sep 17 00:00:00 2001
|
||||
From: zhuofeng <zhuofeng2@huawei.com>
|
||||
Date: Thu, 7 Dec 2023 10:26:56 +0800
|
||||
Subject: [PATCH] Fix potential overflow with some arrays at page-isolation
|
||||
logic
|
||||
|
||||
Overflows may happen in the `threshold_string` and `cycle_string` arrays.
|
||||
|
||||
If the PAGE_CE_THRESHOLD value in page isolation is set to 50 bits,
|
||||
there is a risk of array overflow. Because sprintf is an insecure
|
||||
function, use snprintf instead.
|
||||
|
||||
An error is reported when the AddressSanitizer is used.
|
||||
|
||||
rasdaemon: Improper PAGE_CE_ACTION, set to default soft
|
||||
rasdaemon: Page offline choice on Corrected Errors is soft
|
||||
=================================================================
|
||||
==221920==ERROR: AddressSanitizer: stack-buffer-overflow on address 0xffffdd91d932 at pc 0xffffa24071c4 bp 0xffffdd91d720 sp 0xffffdd91ced8
|
||||
WRITE of size 55 at 0xffffdd91d932 thread T0
|
||||
#0 0xffffa24071c0 in vsprintf (/usr/lib64/libasan.so.6+0x5c1c0)
|
||||
#1 0xffffa24073cc in sprintf (/usr/lib64/libasan.so.6+0x5c3cc)
|
||||
#2 0x459558 in parse_env_string /home/rasdaemon/ras-page-isolation.c:185
|
||||
#3 0x4596f4 in page_isolation_init /home/rasdaemon/ras-page-isolation.c:202
|
||||
#4 0x459934 in ras_page_account_init /home/rasdaemon/ras-page-isolation.c:211
|
||||
#5 0x40f700 in handle_ras_events /home/rasdaemon/ras-events.c:902
|
||||
#6 0x405b8c in main /home/rasdaemon/rasdaemon.c:211
|
||||
#7 0xffffa20b6f38 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
|
||||
#8 0xffffa20b7004 in __libc_start_main_impl ../csu/libc-start.c:409
|
||||
#9 0x4038ec in _start (/home/rasdaemon/rasdaemon+0x4038ec)
|
||||
|
||||
Address 0xffffdd91d932 is located in stack of thread T0 at offset 82 in frame
|
||||
#0 0x459574 in page_isolation_init /home/rasdaemon/ras-page-isolation.c:190
|
||||
|
||||
This frame has 2 object(s):
|
||||
[32, 82) 'threshold_string' (line 191)
|
||||
[128, 178) 'cycle_string' (line 192) <== Memory access at offset 82 partially underflows this variable
|
||||
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
|
||||
(longjmp and C++ exceptions *are* supported)
|
||||
SUMMARY: AddressSanitizer: stack-buffer-overflow (/usr/lib64/libasan.so.6+0x5c1c0) in vsprintf
|
||||
Shadow bytes around the buggy address:
|
||||
0x200ffbb23ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
0x200ffbb23ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
0x200ffbb23af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
0x200ffbb23b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
0x200ffbb23b10: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
|
||||
=>0x200ffbb23b20: 00 00 00 00 00 00[02]f2 f2 f2 f2 f2 00 00 00 00
|
||||
0x200ffbb23b30: 00 00 02 f3 f3 f3 f3 f3 00 00 00 00 00 00 00 00
|
||||
0x200ffbb23b40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
||||
0x200ffbb23b50: f1 f1 f1 f1 f1 f1 04 f2 00 00 f2 f2 00 00 00 00
|
||||
0x200ffbb23b60: 00 00 00 f2 f2 f2 f2 f2 00 00 00 00 00 00 00 f2
|
||||
0x200ffbb23b70: f2 f2 f2 f2 00 00 00 00 00 00 00 00 f2 f2 f2 f2
|
||||
Shadow byte legend (one shadow byte represents 8 application bytes):
|
||||
Addressable: 00
|
||||
Partially addressable: 01 02 03 04 05 06 07
|
||||
Heap left redzone: fa
|
||||
Freed heap region: fd
|
||||
Stack left redzone: f1
|
||||
Stack mid redzone: f2
|
||||
Stack right redzone: f3
|
||||
Stack after return: f5
|
||||
Stack use after scope: f8
|
||||
Global redzone: f9
|
||||
Global init order: f6
|
||||
Poisoned by user: f7
|
||||
Container overflow: fc
|
||||
Array cookie: ac
|
||||
Intra object redzone: bb
|
||||
ASan internal: fe
|
||||
Left alloca redzone: ca
|
||||
Right alloca redzone: cb
|
||||
Shadow gap: cc
|
||||
==221920==ABORTING
|
||||
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||
---
|
||||
ras-page-isolation.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ras-page-isolation.c b/ras-page-isolation.c
|
||||
index fd7bd70..caa8c31 100644
|
||||
--- a/ras-page-isolation.c
|
||||
+++ b/ras-page-isolation.c
|
||||
@@ -171,18 +171,18 @@ parse:
|
||||
config->unit = no_unit ? config->unit : "";
|
||||
}
|
||||
|
||||
-static void parse_env_string(struct isolation *config, char *str)
|
||||
+static void parse_env_string(struct isolation *config, char *str, unsigned int size)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (config->overflow) {
|
||||
/* when overflow, use basic unit */
|
||||
for (i = 0; config->units[i].name; i++) ;
|
||||
- sprintf(str, "%lu%s", config->val, config->units[i-1].name);
|
||||
+ snprintf(str, size, "%lu%s", config->val, config->units[i-1].name);
|
||||
log(TERM, LOG_INFO, "%s is set overflow(%s), truncate it\n",
|
||||
config->name, config->env);
|
||||
} else {
|
||||
- sprintf(str, "%s%s", config->env, config->unit);
|
||||
+ snprintf(str, size, "%s%s", config->env, config->unit);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,8 +199,8 @@ static void page_isolation_init(void)
|
||||
|
||||
parse_isolation_env(&threshold);
|
||||
parse_isolation_env(&cycle);
|
||||
- parse_env_string(&threshold, threshold_string);
|
||||
- parse_env_string(&cycle, cycle_string);
|
||||
+ parse_env_string(&threshold, threshold_string, sizeof(threshold_string));
|
||||
+ parse_env_string(&cycle, cycle_string, sizeof(cycle_string));
|
||||
log(TERM, LOG_INFO, "Threshold of memory Corrected Errors is %s / %s\n",
|
||||
threshold_string, cycle_string);
|
||||
}
|
||||
--
|
||||
2.33.0
|
||||
|
||||
32
bugfix-fix-cpu-isolate-errors-when-some-cpus-are-.patch
Normal file
32
bugfix-fix-cpu-isolate-errors-when-some-cpus-are-.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 77600e0cd71cd5c34126635b199e7b66f4d74874 Mon Sep 17 00:00:00 2001
|
||||
From: Shengwei Luo <luoshengwei@huawei.com>
|
||||
Date: Tue, 23 Apr 2024 17:09:10 +0800
|
||||
Subject: [PATCH] rasdaemon: Fix cpu isolate errors when some cpus are offline
|
||||
before the service started.
|
||||
|
||||
The upstream patch use (sysconf(_SC_NPROCESSORS_ONLN)) instead of
|
||||
(sysconf(_SC_NPROCESSORS_CONF)). However ras_cpu_isolation_init()
|
||||
need the all cpu info, so fix it.
|
||||
|
||||
Fixes: f1ea76375281 ("rasdaemon: Check CPUs online, not configured")
|
||||
Signed-off-by: Shengwei Luo <luoshengwei@huawei.com>
|
||||
---
|
||||
ras-events.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ras-events.c b/ras-events.c
|
||||
index ffac02b..1aa6db6 100644
|
||||
--- a/ras-events.c
|
||||
+++ b/ras-events.c
|
||||
@@ -950,7 +950,7 @@ int handle_ras_events(int record_events)
|
||||
cpus = get_num_cpus(ras);
|
||||
|
||||
#ifdef HAVE_CPU_FAULT_ISOLATION
|
||||
- ras_cpu_isolation_init(cpus);
|
||||
+ ras_cpu_isolation_init(sysconf(_SC_NPROCESSORS_CONF));
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MCE
|
||||
--
|
||||
2.33.0
|
||||
|
||||
136
bugfix-set-to-default-when-param-is-overflow.patch
Normal file
136
bugfix-set-to-default-when-param-is-overflow.patch
Normal file
@ -0,0 +1,136 @@
|
||||
From c306d693f86cd9e128a103b1670b653613eb78d2 Mon Sep 17 00:00:00 2001
|
||||
From: luckky <guodashun1@huawei.com>
|
||||
Date: Mon, 16 Dec 2024 17:20:04 +0800
|
||||
Subject: [PATCH] bugfix set to default when param is overflow
|
||||
1. In this patch, we check if the value is overflow before parsing the
|
||||
value with its unit. we replaced sscanf with strtoul cause the strtoul
|
||||
has clear errno ERANGE for overflow case.
|
||||
2. When the value is overflow, the sscanf will produce Undefined Behavior
|
||||
(https://man7.org/linux/man-pages/man3/sscanf.3.html#BUGS).
|
||||
The final value after being truncated is confusing. So in this patch
|
||||
we will set to default value when the value is overflow.
|
||||
|
||||
---
|
||||
ras-page-isolation.c | 56 +++++++++++++++++++++++++++-----------------
|
||||
1 file changed, 35 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/ras-page-isolation.c b/ras-page-isolation.c
|
||||
index caa8c31..ed07b70 100644
|
||||
--- a/ras-page-isolation.c
|
||||
+++ b/ras-page-isolation.c
|
||||
@@ -44,6 +44,7 @@ static struct isolation threshold = {
|
||||
.units = threshold_units,
|
||||
.env = "50",
|
||||
.unit = "",
|
||||
+ .val = 50,
|
||||
};
|
||||
|
||||
static struct isolation cycle = {
|
||||
@@ -51,6 +52,7 @@ static struct isolation cycle = {
|
||||
.units = cycle_units,
|
||||
.env = "24h",
|
||||
.unit = "h",
|
||||
+ .val = 86400,
|
||||
};
|
||||
|
||||
static const char *kernel_offline[] = {
|
||||
@@ -106,10 +108,24 @@ static void page_offline_init(void)
|
||||
offline_choice[offline].name);
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * The 'parse_isolation_env' will parse the real value from the env settings
|
||||
+ * in config file. The valid format of the env is pure positive number
|
||||
+ * (like '12345') or a positive number with specific units (like '24h').
|
||||
+ * When the unit is not set, we use the default unit (threshold for '' and
|
||||
+ * cycle for 'h').
|
||||
+ * The number is only supported in decimal, while others will produce errors.
|
||||
+ * This function will parse the high level units to base units (like 'h' is
|
||||
+ * a high level unit and 's' is a base unit).
|
||||
+ * The valid value range is [1, UNLONG_MAX], and when the value is out of
|
||||
+ * range (whether the origin pure number without units or the parsed number
|
||||
+ * with the base units), the value will be set to the default value.
|
||||
+ */
|
||||
static void parse_isolation_env(struct isolation *config)
|
||||
{
|
||||
char *env = getenv(config->name);
|
||||
char *unit = NULL;
|
||||
+ char *endptr = NULL;
|
||||
const struct config *units = NULL;
|
||||
int i, no_unit;
|
||||
int valid = 0;
|
||||
@@ -146,43 +162,41 @@ static void parse_isolation_env(struct isolation *config)
|
||||
parse:
|
||||
/* if invalid, use default env */
|
||||
if (valid) {
|
||||
- config->env = env;
|
||||
if (!no_unit)
|
||||
config->unit = unit;
|
||||
} else {
|
||||
+ env = config->env;
|
||||
log(TERM, LOG_INFO, "Improper %s, set to default %s.\n",
|
||||
config->name, config->env);
|
||||
}
|
||||
|
||||
/* if env value string is greater than ulong_max, truncate the last digit */
|
||||
- sscanf(config->env, "%lu", &value);
|
||||
+ errno = 0;
|
||||
+ value = strtoul(env, &endptr, 10);
|
||||
+ if (errno == ERANGE)
|
||||
+ config->overflow = true;
|
||||
for (units = config->units; units->name; units++) {
|
||||
if (!strcasecmp(config->unit, units->name))
|
||||
unit_matched = 1;
|
||||
if (unit_matched) {
|
||||
tmp = value;
|
||||
value *= units->val;
|
||||
- if (tmp != 0 && value / tmp != units->val)
|
||||
+ if (tmp != 0 && value / tmp != units->val) {
|
||||
config->overflow = true;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
- config->val = value;
|
||||
- /* In order to output value and unit perfectly */
|
||||
- config->unit = no_unit ? config->unit : "";
|
||||
-}
|
||||
-
|
||||
-static void parse_env_string(struct isolation *config, char *str, unsigned int size)
|
||||
-{
|
||||
- int i;
|
||||
-
|
||||
- if (config->overflow) {
|
||||
- /* when overflow, use basic unit */
|
||||
- for (i = 0; config->units[i].name; i++) ;
|
||||
- snprintf(str, size, "%lu%s", config->val, config->units[i-1].name);
|
||||
- log(TERM, LOG_INFO, "%s is set overflow(%s), truncate it\n",
|
||||
- config->name, config->env);
|
||||
+ if (!config->overflow) {
|
||||
+ config->val = value;
|
||||
+ config->env = env;
|
||||
+ /* In order to output value and unit perfectly */
|
||||
+ config->unit = no_unit ? config->unit : "";
|
||||
} else {
|
||||
- snprintf(str, size, "%s%s", config->env, config->unit);
|
||||
+ log(TERM, LOG_INFO, "%s is set overflow(%s), set to default %s\n",
|
||||
+ config->name, env, config->env);
|
||||
+ /* In order to output value and unit perfectly */
|
||||
+ config->unit = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,8 +213,8 @@ static void page_isolation_init(void)
|
||||
|
||||
parse_isolation_env(&threshold);
|
||||
parse_isolation_env(&cycle);
|
||||
- parse_env_string(&threshold, threshold_string, sizeof(threshold_string));
|
||||
- parse_env_string(&cycle, cycle_string, sizeof(cycle_string));
|
||||
+ snprintf(threshold_string, sizeof(threshold_string), "%s%s", threshold.env, threshold.unit);
|
||||
+ snprintf(cycle_string, sizeof(cycle_string), "%s%s", cycle.env, cycle.unit);
|
||||
log(TERM, LOG_INFO, "Threshold of memory Corrected Errors is %s / %s\n",
|
||||
threshold_string, cycle_string);
|
||||
}
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
From fd9341f5f7f3896c4de2a9a90d7dc366fd2ffedc Mon Sep 17 00:00:00 2001
|
||||
From: shixuantong <shixuantong1@huawei.com>
|
||||
Date: Thu, 1 Dec 2022 12:39:11 +0000
|
||||
Subject: [PATCH] fix ras-mc-ctl.service startup failed when selinux is on
|
||||
|
||||
---
|
||||
util/ras-mc-ctl.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/ras-mc-ctl.in b/util/ras-mc-ctl.in
|
||||
index 9198a23..888b4e8 100755
|
||||
--- a/util/ras-mc-ctl.in
|
||||
+++ b/util/ras-mc-ctl.in
|
||||
@@ -39,7 +39,7 @@ my $dbname = "@RASSTATEDIR@/@RAS_DB_FNAME@";
|
||||
my $prefix = "@prefix@";
|
||||
my $sysconfdir = "@sysconfdir@";
|
||||
my $dmidecode = find_prog ("dmidecode");
|
||||
-my $modprobe = find_prog ("modprobe") or exit (1);
|
||||
+my $modprobe = find_prog ("modprobe");
|
||||
|
||||
my $has_aer = 0;
|
||||
my $has_arm = 0;
|
||||
--
|
||||
2.33.0
|
||||
|
||||
122
rasdaemon-ras-mc-ctl-Modify-check-for-HiSilicon-KunP.patch
Normal file
122
rasdaemon-ras-mc-ctl-Modify-check-for-HiSilicon-KunP.patch
Normal file
@ -0,0 +1,122 @@
|
||||
From bcc5779d52269b5a0b7bae42aaf2a3e650587bdb Mon Sep 17 00:00:00 2001
|
||||
From: Shiju Jose <shiju.jose@huawei.com>
|
||||
Date: Thu, 24 Aug 2023 13:07:17 +0100
|
||||
Subject: [PATCH 12/12] rasdaemon: ras-mc-ctl: Modify check for HiSilicon
|
||||
KunPeng9xx error fields
|
||||
|
||||
Modify check for valid HiSilicon KunPeng9xx error fields.
|
||||
Fixes an error data is not printed when it's value is 0.
|
||||
|
||||
Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||
---
|
||||
util/ras-mc-ctl.in | 72 +++++++++++++++++++++++-----------------------
|
||||
1 file changed, 36 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/util/ras-mc-ctl.in b/util/ras-mc-ctl.in
|
||||
index 4178dcf..07e6fca 100755
|
||||
--- a/util/ras-mc-ctl.in
|
||||
+++ b/util/ras-mc-ctl.in
|
||||
@@ -1672,13 +1672,13 @@ sub vendor_errors
|
||||
if ($module eq 0 || ($module_id && uc($module) eq uc($module_id))) {
|
||||
$out .= "$id. $timestamp Error Info: ";
|
||||
$out .= "version=$version, ";
|
||||
- $out .= "soc_id=$soc_id, " if ($soc_id);
|
||||
- $out .= "socket_id=$socket_id, " if ($socket_id);
|
||||
- $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id);
|
||||
- $out .= "module_id=$module_id, " if ($module_id);
|
||||
- $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id);
|
||||
- $out .= "err_severity=$err_severity, " if ($err_severity);
|
||||
- $out .= "Error Registers: $regs " if ($regs);
|
||||
+ $out .= "soc_id=$soc_id, " if (defined $soc_id && length $soc_id);
|
||||
+ $out .= "socket_id=$socket_id, " if (defined $socket_id && length $socket_id);
|
||||
+ $out .= "nimbus_id=$nimbus_id, " if (defined $nimbus_id && length $nimbus_id);
|
||||
+ $out .= "module_id=$module_id, " if (defined $module_id && length $module_id);
|
||||
+ $out .= "sub_module_id=$sub_module_id, " if (defined $sub_module_id && length $sub_module_id);
|
||||
+ $out .= "err_severity=$err_severity, " if (defined $err_severity && length $err_severity);
|
||||
+ $out .= "Error Registers: $regs " if (defined $regs && length $regs);
|
||||
$out .= "\n\n";
|
||||
$found_module = 1;
|
||||
}
|
||||
@@ -1697,13 +1697,13 @@ sub vendor_errors
|
||||
if ($module eq 0 || ($module_id && uc($module) eq uc($module_id))) {
|
||||
$out .= "$id. $timestamp Error Info: ";
|
||||
$out .= "version=$version, ";
|
||||
- $out .= "soc_id=$soc_id, " if ($soc_id);
|
||||
- $out .= "socket_id=$socket_id, " if ($socket_id);
|
||||
- $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id);
|
||||
- $out .= "module_id=$module_id, " if ($module_id);
|
||||
- $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id);
|
||||
- $out .= "err_severity=$err_severity, " if ($err_severity);
|
||||
- $out .= "Error Registers: $regs " if ($regs);
|
||||
+ $out .= "soc_id=$soc_id, " if (defined $soc_id && length $soc_id);
|
||||
+ $out .= "socket_id=$socket_id, " if (defined $socket_id && length $socket_id);
|
||||
+ $out .= "nimbus_id=$nimbus_id, " if (defined $nimbus_id && length $nimbus_id);
|
||||
+ $out .= "module_id=$module_id, " if (defined $module_id && length $module_id);
|
||||
+ $out .= "sub_module_id=$sub_module_id, " if (defined $sub_module_id && length $sub_module_id);
|
||||
+ $out .= "err_severity=$err_severity, " if (defined $err_severity && length $err_severity);
|
||||
+ $out .= "Error Registers: $regs " if (defined $regs && length $regs);
|
||||
$out .= "\n\n";
|
||||
$found_module = 1;
|
||||
}
|
||||
@@ -1722,15 +1722,15 @@ sub vendor_errors
|
||||
if ($module eq 0 || ($sub_module_id && uc($module) eq uc($sub_module_id))) {
|
||||
$out .= "$id. $timestamp Error Info: ";
|
||||
$out .= "version=$version, ";
|
||||
- $out .= "soc_id=$soc_id, " if ($soc_id);
|
||||
- $out .= "socket_id=$socket_id, " if ($socket_id);
|
||||
- $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id);
|
||||
- $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id);
|
||||
- $out .= "core_id=$core_id, " if ($core_id);
|
||||
- $out .= "port_id=$port_id, " if ($port_id);
|
||||
- $out .= "err_severity=$err_severity, " if ($err_severity);
|
||||
- $out .= "err_type=$err_type, " if ($err_type);
|
||||
- $out .= "Error Registers: $regs " if ($regs);
|
||||
+ $out .= "soc_id=$soc_id, " if (defined $soc_id && length $soc_id);
|
||||
+ $out .= "socket_id=$socket_id, " if (defined $socket_id && length $socket_id);
|
||||
+ $out .= "nimbus_id=$nimbus_id, " if (defined $nimbus_id && length $nimbus_id);
|
||||
+ $out .= "sub_module_id=$sub_module_id, " if (defined $sub_module_id && length $sub_module_id);
|
||||
+ $out .= "core_id=$core_id, " if (defined $core_id && length $core_id);
|
||||
+ $out .= "port_id=$port_id, " if (defined $port_id && length $port_id);
|
||||
+ $out .= "err_severity=$err_severity, " if (defined $err_severity && length $err_severity);
|
||||
+ $out .= "err_type=$err_type, " if (defined $err_type && length $err_type);
|
||||
+ $out .= "Error Registers: $regs " if (defined $regs && length $regs);
|
||||
$out .= "\n\n";
|
||||
$found_module = 1;
|
||||
}
|
||||
@@ -1749,19 +1749,19 @@ sub vendor_errors
|
||||
if ($module eq 0 || ($module_id && uc($module) eq uc($module_id))) {
|
||||
$out .= "$id. $timestamp Error Info: ";
|
||||
$out .= "version=$version, ";
|
||||
- $out .= "soc_id=$soc_id, " if ($soc_id);
|
||||
- $out .= "socket_id=$socket_id, " if ($socket_id);
|
||||
- $out .= "totem_id=$totem_id, " if ($totem_id);
|
||||
- $out .= "nimbus_id=$nimbus_id, " if ($nimbus_id);
|
||||
- $out .= "sub_system_id=$sub_system_id, " if ($sub_system_id);
|
||||
- $out .= "module_id=$module_id, " if ($module_id);
|
||||
- $out .= "sub_module_id=$sub_module_id, " if ($sub_module_id);
|
||||
- $out .= "core_id=$core_id, " if ($core_id);
|
||||
- $out .= "port_id=$port_id, " if ($port_id);
|
||||
- $out .= "err_type=$err_type, " if ($err_type);
|
||||
- $out .= "pcie_info=$pcie_info, " if ($pcie_info);
|
||||
- $out .= "err_severity=$err_severity, " if ($err_severity);
|
||||
- $out .= "Error Registers: $regs" if ($regs);
|
||||
+ $out .= "soc_id=$soc_id, " if (defined $soc_id && length $soc_id);
|
||||
+ $out .= "socket_id=$socket_id, " if (defined $socket_id && length $socket_id);
|
||||
+ $out .= "totem_id=$totem_id, " if (defined $totem_id && length $totem_id);
|
||||
+ $out .= "nimbus_id=$nimbus_id, " if (defined $nimbus_id && length $nimbus_id);
|
||||
+ $out .= "sub_system_id=$sub_system_id, " if (defined $sub_system_id && length $sub_system_id);
|
||||
+ $out .= "module_id=$module_id, " if (defined $module_id && length $module_id);
|
||||
+ $out .= "sub_module_id=$sub_module_id, " if (defined $sub_module_id && length $sub_module_id);
|
||||
+ $out .= "core_id=$core_id, " if (defined $core_id && length $core_id );
|
||||
+ $out .= "port_id=$port_id, " if (defined $port_id && length $port_id);
|
||||
+ $out .= "err_type=$err_type, " if (defined $err_type && length $err_type);
|
||||
+ $out .= "pcie_info=$pcie_info, " if (defined $pcie_info && length $pcie_info);
|
||||
+ $out .= "err_severity=$err_severity, " if (defined $err_severity && length $err_severity);
|
||||
+ $out .= "Error Registers: $regs" if (defined $regs && length $regs);
|
||||
$out .= "\n\n";
|
||||
$found_module = 1;
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: rasdaemon
|
||||
Version: 0.8.0
|
||||
Release: 1
|
||||
Release: 6
|
||||
License: GPLv2
|
||||
Summary: Utility to get Platform Reliability, Availability and Serviceability (RAS) reports via the Kernel tracing events
|
||||
URL: https://github.com/mchehab/rasdaemon.git
|
||||
@ -20,6 +20,9 @@ Requires(post): systemd
|
||||
Requires(preun): systemd
|
||||
Requires(postun): systemd
|
||||
|
||||
Patch0: backport-Fix-potential-overflow-with-some-arrays-at-page-isol.patch
|
||||
Patch1: fix-ras-mc-ctl.service-startup-failed-when-selinux-is-no.patch
|
||||
|
||||
Patch9000: bugfix-rasdaemon-wait-for-file-access.patch
|
||||
Patch9001: bugfix-fix-fd-check.patch
|
||||
Patch9002: bugfix-fix-disk-error-log-storm.patch
|
||||
@ -29,6 +32,9 @@ Patch9005: 0002-rasdaemon-fix-issue-of-signed-and-unsigned-integer-c.patch
|
||||
Patch9006: 0003-rasdaemon-Add-support-for-creating-the-vendor-error-.patch
|
||||
Patch9007: backport-Check-CPUs-online-not-configured.patch
|
||||
Patch9008: backport-rasdaemon-diskerror-fix-incomplete-diskerror-log.patch
|
||||
Patch9009: bugfix-fix-cpu-isolate-errors-when-some-cpus-are-.patch
|
||||
Patch9010: rasdaemon-ras-mc-ctl-Modify-check-for-HiSilicon-KunP.patch
|
||||
Patch9011: bugfix-set-to-default-when-param-is-overflow.patch
|
||||
|
||||
%description
|
||||
The rasdaemon program is a daemon which monitors the platform
|
||||
@ -80,6 +86,37 @@ fi
|
||||
/usr/bin/systemctl disable rasdaemon.service >/dev/null 2>&1 || :
|
||||
|
||||
%changelog
|
||||
* Mon Dec 16 2024 guodashun <guodashun1@huawei.com> - 0.8.0-6
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:set to default when param is overflow
|
||||
|
||||
* Thu Apr 25 2024 Bing Xia <xiabing12@h-partners.com> - 0.8.0-5
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:Modify check for HiSilicon KunPeng9xx error fields.
|
||||
|
||||
* Tue Apr 23 2024 luoshengwei <luoshengwei@huawei.com> - 0.8.0-4
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:fix cpu isolate errors when some cpus are offline
|
||||
before the service started
|
||||
|
||||
* Wed Mar 27 2024 zhuofeng <zhuofeng2@huawei.com> - 0.8.0-3
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC:fix ras-mc-ctl.service startup failed when selinux is on
|
||||
|
||||
* Mon Mar 25 2024 zhangruifang <zhangruifang@h-partners.com> - 0.8.0-2
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
- SUG:NA
|
||||
- DESC: backport patches from upstream
|
||||
|
||||
* Mon Jan 29 2024 zhuofeng <zhuofeng2@huawei.com> - 0.8.0-1
|
||||
- Type:bugfix
|
||||
- ID:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user