Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:FrontRunner
crash.24895
0014-diskdump-Introduce-read_pd.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0014-diskdump-Introduce-read_pd.patch of Package crash.24895
From 881f33d97cee9895796829d0cc969b51dd34d831 Mon Sep 17 00:00:00 2001 From: Roman Bolshakov <r.bolshakov@yadro.com> Date: Thu, 17 Jun 2021 02:27:35 +0300 Subject: [PATCH] diskdump: Introduce read_pd() Standalone function for reading of page descriptors is needed later for of expected core size and detection of incomplete dumps. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> --- diskdump.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/diskdump.c b/diskdump.c index 0f94022..de3eeb2 100644 --- a/diskdump.c +++ b/diskdump.c @@ -510,6 +510,27 @@ arm_kdump_header_adjust(int header_version) } #endif /* __i386__ && (ARM || MIPS) */ +/* + * Read page descriptor. + */ +static int +read_pd(int fd, off_t offset, page_desc_t *pd) +{ + const off_t failed = (off_t)-1; + + if (FLAT_FORMAT()) { + if (!read_flattened_format(fd, offset, pd, sizeof(*pd))) + return READ_ERROR; + } else { + if (lseek(fd, offset, SEEK_SET) == failed) + return SEEK_ERROR; + if (read(fd, pd, sizeof(*pd)) != sizeof(*pd)) + return READ_ERROR; + } + + return 0; +} + static int read_dump_header(char *file) { @@ -1130,15 +1151,9 @@ cache_page(physaddr_t paddr) + (off_t)(desc_pos - 1)*sizeof(page_desc_t); /* read page descriptor */ - if (FLAT_FORMAT()) { - if (!read_flattened_format(dd->dfd, seek_offset, &pd, sizeof(pd))) - return READ_ERROR; - } else { - if (lseek(dd->dfd, seek_offset, SEEK_SET) == failed) - return SEEK_ERROR; - if (read(dd->dfd, &pd, sizeof(pd)) != sizeof(pd)) - return READ_ERROR; - } + ret = read_pd(dd->dfd, seek_offset, &pd); + if (ret) + return ret; /* sanity check */ if (pd.size > block_size) -- 2.33.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor