ras-events: quit loop in read_ras_event when kbuf data is broken
Resolves: RHEL-68127 Signed-off-by: Aristeu Rozanski <arozansk@redhat.com>
This commit is contained in:
parent
0d211e2538
commit
09ea5ccc0c
35
794530fbf270eae9f6f43c6d0bbd3ec6f2b210f3.patch
Normal file
35
794530fbf270eae9f6f43c6d0bbd3ec6f2b210f3.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
commit 794530fbf270eae9f6f43c6d0bbd3ec6f2b210f3
|
||||||
|
Author: hubin <hubin73@huawei.com>
|
||||||
|
Date: Thu May 18 16:14:41 2023 +0800
|
||||||
|
|
||||||
|
ras-events: quit loop in read_ras_event when kbuf data is broken
|
||||||
|
|
||||||
|
when kbuf data is broken, kbuffer_next_event() may move kbuf->index back to
|
||||||
|
the current kbuf->index position, causing dead loop.
|
||||||
|
|
||||||
|
In this situation, rasdaemon will repeatedly parse an invalid event, and
|
||||||
|
print warning like "ug! negative record size -8!", pushing cpu utilization
|
||||||
|
rate to 100%.
|
||||||
|
|
||||||
|
when kbuf data is broken, discard current page and continue reading next page
|
||||||
|
kbuf.
|
||||||
|
|
||||||
|
Signed-off-by: hubin <hubin73@huawei.com>
|
||||||
|
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||||
|
|
||||||
|
diff --git a/ras-events.c b/ras-events.c
|
||||||
|
index 2662467..fced7ab 100644
|
||||||
|
--- a/ras-events.c
|
||||||
|
+++ b/ras-events.c
|
||||||
|
@@ -512,6 +512,11 @@ static int read_ras_event_all_cpus(struct pthread_data *pdata,
|
||||||
|
kbuffer_load_subbuffer(kbuf, page);
|
||||||
|
|
||||||
|
while ((data = kbuffer_read_event(kbuf, &time_stamp))) {
|
||||||
|
+ if (kbuffer_curr_size(kbuf) < 0) {
|
||||||
|
+ log(TERM, LOG_ERR, "invalid kbuf data, discard\n");
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
parse_ras_data(&pdata[i],
|
||||||
|
kbuf, data, time_stamp);
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Name: rasdaemon
|
Name: rasdaemon
|
||||||
Version: 0.6.7
|
Version: 0.6.7
|
||||||
Release: 16%{?dist}
|
Release: 17%{?dist}
|
||||||
Summary: Utility to receive RAS error tracings
|
Summary: Utility to receive RAS error tracings
|
||||||
License: GPL-2.0-only
|
License: GPL-2.0-only
|
||||||
URL: http://git.infradead.org/users/mchehab/rasdaemon.git
|
URL: http://git.infradead.org/users/mchehab/rasdaemon.git
|
||||||
@ -43,6 +43,7 @@ Patch34: ad0444190e02bca309a61a4bad51bc0e16c0aef5.patch
|
|||||||
Patch35: b1ace39286e287282a275b6edc90dc2f64e60a3c.patch
|
Patch35: b1ace39286e287282a275b6edc90dc2f64e60a3c.patch
|
||||||
Patch36: 045ab08eaa00172d50621df9502f6910f3fe3af4.patch
|
Patch36: 045ab08eaa00172d50621df9502f6910f3fe3af4.patch
|
||||||
Patch37: 79065939fc4bc1da72a3718937fab80e73a6dd75.patch
|
Patch37: 79065939fc4bc1da72a3718937fab80e73a6dd75.patch
|
||||||
|
Patch38: 794530fbf270eae9f6f43c6d0bbd3ec6f2b210f3.patch
|
||||||
|
|
||||||
ExcludeArch: s390 s390x
|
ExcludeArch: s390 s390x
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
@ -115,6 +116,7 @@ an utility for reporting current error counts from the EDAC sysfs files.
|
|||||||
%patch35 -p1
|
%patch35 -p1
|
||||||
%patch36 -p1
|
%patch36 -p1
|
||||||
%patch37 -p1
|
%patch37 -p1
|
||||||
|
%patch38 -p1
|
||||||
|
|
||||||
# The tarball is locked in time the first time aclocal was ran and will keep
|
# The tarball is locked in time the first time aclocal was ran and will keep
|
||||||
# requiring an older version of automake
|
# requiring an older version of automake
|
||||||
@ -150,6 +152,9 @@ sed -i "s/^PAGE_CE_ACTION=.*/PAGE_CE_ACTION=account/" %{buildroot}/%{_sysconfdir
|
|||||||
%{_sysconfdir}/sysconfig/rasdaemon
|
%{_sysconfdir}/sysconfig/rasdaemon
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Nov 19 2024 Aristeu Rozanski <aris@redhat.com> 0.6.7-17
|
||||||
|
- ras-events: quit loop in read_ras_event when kbuf data is broken [RHEL-68127]
|
||||||
|
|
||||||
* Thu Sep 05 2024 Aristeu Rozanski <aris@redhat.com> 0.6.7-16
|
* Thu Sep 05 2024 Aristeu Rozanski <aris@redhat.com> 0.6.7-16
|
||||||
- rasdaemon: Add support to parse the PPIN field of mce tracepoint [RHEL-52911]
|
- rasdaemon: Add support to parse the PPIN field of mce tracepoint [RHEL-52911]
|
||||||
- rasdaemon: Add support to parse microcode field of mce tracepoint [RHEL-52911]
|
- rasdaemon: Add support to parse microcode field of mce tracepoint [RHEL-52911]
|
||||||
|
Loading…
Reference in New Issue
Block a user