Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/minidump_machdep.c
Context not available. | |||||
dumpsize += PAGE_SIZE; | dumpsize += PAGE_SIZE; | ||||
/* Determine dump offset on device. */ | /* Determine dump offset on device. */ | ||||
if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { | if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2 + | ||||
kerneldumpcrypto_dumpkeysize(di->kdc)) { | |||||
error = E2BIG; | error = E2BIG; | ||||
goto fail; | goto fail; | ||||
} | } | ||||
dumplo = di->mediaoffset + di->mediasize - dumpsize; | dumplo = di->mediaoffset + di->mediasize - dumpsize; | ||||
dumplo -= sizeof(kdh) * 2; | dumplo -= sizeof(kdh) * 2; | ||||
dumplo -= kerneldumpcrypto_dumpkeysize(di->kdc); | |||||
progress = dumpsize; | progress = dumpsize; | ||||
/* Initialize kernel dump crypto. */ | |||||
error = kerneldumpcrypto_init(di->kdc); | |||||
if (error) | |||||
goto fail; | |||||
/* Initialize mdhdr */ | /* Initialize mdhdr */ | ||||
bzero(&mdhdr, sizeof(mdhdr)); | bzero(&mdhdr, sizeof(mdhdr)); | ||||
strcpy(mdhdr.magic, MINIDUMP_MAGIC); | strcpy(mdhdr.magic, MINIDUMP_MAGIC); | ||||
Context not available. | |||||
mdhdr.dmapend = DMAP_MAX_ADDRESS; | mdhdr.dmapend = DMAP_MAX_ADDRESS; | ||||
mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_AARCH64_VERSION, | mkdumpheader(&kdh, KERNELDUMPMAGIC, KERNELDUMP_AARCH64_VERSION, | ||||
dumpsize, di->blocksize); | dumpsize, kerneldumpcrypto_dumpkeysize(di->kdc), di->blocksize); | ||||
printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, | printf("Dumping %llu out of %ju MB:", (long long)dumpsize >> 20, | ||||
ptoa((uintmax_t)physmem) / 1048576); | ptoa((uintmax_t)physmem) / 1048576); | ||||
/* Dump leader */ | /* Dump leader */ | ||||
error = dump_write(di, &kdh, 0, dumplo, sizeof(kdh)); | error = dump_write_header(di, &kdh, 0, dumplo); | ||||
if (error) | if (error) | ||||
goto fail; | goto fail; | ||||
dumplo += sizeof(kdh); | dumplo += sizeof(kdh); | ||||
/* Dump key */ | |||||
error = dump_write_key(di, 0, dumplo); | |||||
if (error) | |||||
goto fail; | |||||
dumplo += kerneldumpcrypto_dumpkeysize(di->kdc); | |||||
/* Dump my header */ | /* Dump my header */ | ||||
bzero(&tmpbuffer, sizeof(tmpbuffer)); | bzero(&tmpbuffer, sizeof(tmpbuffer)); | ||||
bcopy(&mdhdr, &tmpbuffer, sizeof(mdhdr)); | bcopy(&mdhdr, &tmpbuffer, sizeof(mdhdr)); | ||||
Context not available. | |||||
goto fail; | goto fail; | ||||
/* Dump trailer */ | /* Dump trailer */ | ||||
error = dump_write(di, &kdh, 0, dumplo, sizeof(kdh)); | error = dump_write_header(di, &kdh, 0, dumplo); | ||||
if (error) | if (error) | ||||
goto fail; | goto fail; | ||||
dumplo += sizeof(kdh); | dumplo += sizeof(kdh); | ||||
Context not available. |