s390_dump.h: Add DF_S390_DUMPER_MAGIC_SIZE constant

Add DF_S390_DUMPER_MAGIC_SIZE constant to s390_dump.h.
Use it instead of hardcoded length when processing dumper magics
in zgetdump code.

Signed-off-by: Mikhail Zaslonko <zaslonko@linux.ibm.com>
Acked-by: Alexander Egorenkov <egorenar@linux.ibm.com>
Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
This commit is contained in:
Mikhail Zaslonko
2024-03-06 18:12:41 +01:00
committed by Steffen Eiden
parent 8f99e7c4ea
commit 23e9156f43
4 changed files with 27 additions and 16 deletions

View File

@@ -26,6 +26,7 @@
#define DF_S390_EM_STR "DUMP_END"
#define DF_S390_CPU_MAX 512
#define DF_S390_MAGIC_BLK_ECKD 3
#define DF_S390_DUMPER_MAGIC_SIZE 7
#define DF_S390_DUMPER_MAGIC32 "ZECKD31"
#define DF_S390_DUMPER_MAGIC64 "ZECKD64"
#define DF_S390_DUMPER_MAGIC_EXT "XECKD64"

View File

@@ -153,14 +153,17 @@ void df_s390_dumper_read(struct zg_fh *fh, int blk_size,
dumper->version = 0;
switch (dumper->version) {
case 1:
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_EXT, 7) == 0 ||
strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_MV_EXT, 7) == 0)
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_EXT,
DF_S390_DUMPER_MAGIC_SIZE) == 0 ||
strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_MV_EXT,
DF_S390_DUMPER_MAGIC_SIZE) == 0)
dumper->size = STAGE2_DUMPER_SIZE_V3;
else
dumper->size = STAGE2_DUMPER_SIZE_V1;
break;
case 2:
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_EXT, 7) == 0)
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_EXT,
DF_S390_DUMPER_MAGIC_SIZE) == 0)
dumper->size = STAGE2_DUMPER_SIZE_ZLIB;
else
dumper->size = STAGE2_DUMPER_SIZE_V2;

View File

@@ -73,8 +73,8 @@ static struct {
struct df_s390_dumper dumper;
int dump_incomplete;
bool extended;
u64 magic_number; /* Reference value to compare with */
char dumper_magic[7]; /* Reference value to compare with */
u64 magic_number; /* Reference value to compare with */
char dumper_magic[DF_S390_DUMPER_MAGIC_SIZE]; /* Reference value to compare with */
} l;
/*
@@ -273,7 +273,7 @@ static void vol_init(struct vol *vol, struct vol_parm *vol_parm, int ssid,
l.dump_incomplete = 1;
}
if (strncmp(vol->dumper.magic, l.dumper_magic, 7) != 0) {
if (strncmp(vol->dumper.magic, l.dumper_magic, DF_S390_DUMPER_MAGIC_SIZE) != 0) {
vol->sign = SIGN_INVALID;
l.dump_incomplete = 1;
}
@@ -507,7 +507,7 @@ static int mv_dumper_read(void)
ZG_CHECK_NONE) == -1)
return -ENODEV;
df_s390_dumper_read(g.fh, l.blk_size, &l.dumper);
if (strncmp(l.dumper.magic, l.dumper_magic, 7) != 0)
if (strncmp(l.dumper.magic, l.dumper_magic, DF_S390_DUMPER_MAGIC_SIZE) != 0)
return -ENODEV;
table_read(g.fh, l.blk_size, &l.table);
return 0;
@@ -567,10 +567,12 @@ static void set_magic_numbers(void)
{
if (l.extended) {
l.magic_number = DF_S390_MAGIC_EXT;
memcpy(l.dumper_magic, DF_S390_DUMPER_MAGIC_MV_EXT, 7);
memcpy(l.dumper_magic, DF_S390_DUMPER_MAGIC_MV_EXT,
DF_S390_DUMPER_MAGIC_SIZE);
} else {
l.magic_number = DF_S390_MAGIC;
memcpy(l.dumper_magic, DF_S390_DUMPER_MAGIC_MV, 7);
memcpy(l.dumper_magic, DF_S390_DUMPER_MAGIC_MV,
DF_S390_DUMPER_MAGIC_SIZE);
}
}

View File

@@ -34,14 +34,17 @@ static int dumper_read_eckd(int blk_size)
df_s390_dumper_read(g.fh, blk_size, &l.dumper);
if (l.extended) {
if (strncmp(l.dumper.magic, DF_S390_DUMPER_MAGIC_EXT, 7) != 0)
if (strncmp(l.dumper.magic, DF_S390_DUMPER_MAGIC_EXT,
DF_S390_DUMPER_MAGIC_SIZE) != 0)
return -ENODEV;
l.dumper_arch = DFI_ARCH_64;
return 0;
}
if (strncmp(l.dumper.magic, DF_S390_DUMPER_MAGIC64, 7) == 0) {
if (strncmp(l.dumper.magic, DF_S390_DUMPER_MAGIC64,
DF_S390_DUMPER_MAGIC_SIZE) == 0) {
l.dumper_arch = DFI_ARCH_64;
} else if (strncmp(l.dumper.magic, DF_S390_DUMPER_MAGIC32, 7) == 0) {
} else if (strncmp(l.dumper.magic, DF_S390_DUMPER_MAGIC32,
DF_S390_DUMPER_MAGIC_SIZE) == 0) {
l.dumper_arch = DFI_ARCH_32;
} else if (memcmp(l.dumper.magic, OLD_DUMPER_HEX_INSTR1, 4) == 0 &&
l.dumper.version == 0) {
@@ -59,15 +62,17 @@ static int dumper_read_eckd(int blk_size)
static int dumper_check_fba(struct df_s390_dumper *dumper)
{
if (l.extended) {
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_FBA_EXT, 7)
!= 0)
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_FBA_EXT,
DF_S390_DUMPER_MAGIC_SIZE) != 0)
return -ENODEV;
l.dumper_arch = DFI_ARCH_64;
return 0;
}
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC64_FBA, 7) == 0) {
if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC64_FBA,
DF_S390_DUMPER_MAGIC_SIZE) == 0) {
l.dumper_arch = DFI_ARCH_64;
} else if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC32_FBA, 7) == 0) {
} else if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC32_FBA,
DF_S390_DUMPER_MAGIC_SIZE) == 0) {
l.dumper_arch = DFI_ARCH_32;
} else if (memcmp(dumper->magic, OLD_DUMPER_HEX_INSTR1, 4) == 0 &&
memcmp(&dumper->size, OLD_DUMPER_HEX_INSTR2, 2) == 0) {