Don't dump core into a partition that is too small for it.

If we do, we usually wrote backwareds into the proceeding partititon
which is usually the root partition.
This commit is contained in:
julian 2002-12-16 23:04:54 +00:00
parent 1f7478c270
commit 168664d0ec
2 changed files with 18 additions and 0 deletions

View File

@ -75,6 +75,15 @@ dumpsys(struct dumperinfo *di)
strncpy(kdh.panicstring, panicstr, sizeof kdh.panicstring); strncpy(kdh.panicstring, panicstr, sizeof kdh.panicstring);
kdh.parity = kerneldump_parity(&kdh); kdh.parity = kerneldump_parity(&kdh);
if (di->mediasize <
((Maxmem * (off_t)PAGE_SIZE) + /* Memory to save */
(sizeof kdh * 2) + /* header + trailer */
(64*1024))) { /* Room to leave untouched */
/* at partition head. */
/* (an arbitrary amount). */
printf("\nDump failed. Partition too small.\n");
return;
}
dumplo = di->mediaoffset + di->mediasize - Maxmem * (off_t)PAGE_SIZE; dumplo = di->mediaoffset + di->mediasize - Maxmem * (off_t)PAGE_SIZE;
dumplo -= sizeof kdh * 2; dumplo -= sizeof kdh * 2;
i = di->dumper(di->priv, &kdh, 0, dumplo, sizeof kdh); i = di->dumper(di->priv, &kdh, 0, dumplo, sizeof kdh);

View File

@ -75,6 +75,15 @@ dumpsys(struct dumperinfo *di)
strncpy(kdh.panicstring, panicstr, sizeof kdh.panicstring); strncpy(kdh.panicstring, panicstr, sizeof kdh.panicstring);
kdh.parity = kerneldump_parity(&kdh); kdh.parity = kerneldump_parity(&kdh);
if (di->mediasize <
((Maxmem * (off_t)PAGE_SIZE) + /* Memory to save */
(sizeof kdh * 2) + /* header + trailer */
(64*1024))) { /* Room to leave untouched */
/* at partition head. */
/* (an arbitrary amount). */
printf("\nDump failed. Partition too small.\n");
return;
}
dumplo = di->mediaoffset + di->mediasize - Maxmem * (off_t)PAGE_SIZE; dumplo = di->mediaoffset + di->mediasize - Maxmem * (off_t)PAGE_SIZE;
dumplo -= sizeof kdh * 2; dumplo -= sizeof kdh * 2;
i = di->dumper(di->priv, &kdh, 0, dumplo, sizeof kdh); i = di->dumper(di->priv, &kdh, 0, dumplo, sizeof kdh);