svn commit: r184499 - in head/sys: amd64/amd64 geom i386/i386

Konstantin Belousov kib at FreeBSD.org
Fri Oct 31 03:11:36 PDT 2008


Author: kib
Date: Fri Oct 31 10:11:35 2008
New Revision: 184499
URL: http://svn.freebsd.org/changeset/base/184499

Log:
  Revert r184136. Instead, push the check for crashdumpmap overflow into the
  MD i386 and amd64 dump code.
  
  Requested by:	jhb
  Retested by:	pho
  MFC after:	3 days (+ 176304 + 184136)

Modified:
  head/sys/amd64/amd64/dump_machdep.c
  head/sys/amd64/amd64/minidump_machdep.c
  head/sys/geom/geom_disk.c
  head/sys/i386/i386/dump_machdep.c

Modified: head/sys/amd64/amd64/dump_machdep.c
==============================================================================
--- head/sys/amd64/amd64/dump_machdep.c	Fri Oct 31 09:41:06 2008	(r184498)
+++ head/sys/amd64/amd64/dump_machdep.c	Fri Oct 31 10:11:35 2008	(r184499)
@@ -165,7 +165,7 @@ cb_dumpdata(struct md_pa *mdp, int seqnr
 	va = 0;
 	pgs = mdp->md_size / PAGE_SIZE;
 	pa = mdp->md_start;
-	maxdumppgs = di->maxiosize / PAGE_SIZE;
+	maxdumppgs = min(di->maxiosize / PAGE_SIZE, MAXDUMPPGS);
 	if (maxdumppgs == 0)	/* seatbelt */
 		maxdumppgs = 1;
 

Modified: head/sys/amd64/amd64/minidump_machdep.c
==============================================================================
--- head/sys/amd64/amd64/minidump_machdep.c	Fri Oct 31 09:41:06 2008	(r184498)
+++ head/sys/amd64/amd64/minidump_machdep.c	Fri Oct 31 10:11:35 2008	(r184499)
@@ -104,7 +104,7 @@ blk_write(struct dumperinfo *di, char *p
 	int error, i, c;
 	u_int maxdumpsz;
 
-	maxdumpsz = di->maxiosize;
+	maxdumpsz = min(di->maxiosize, MAXDUMPPGS * PAGE_SIZE);
 	if (maxdumpsz == 0)	/* seatbelt */
 		maxdumpsz = PAGE_SIZE;
 	error = 0;

Modified: head/sys/geom/geom_disk.c
==============================================================================
--- head/sys/geom/geom_disk.c	Fri Oct 31 09:41:06 2008	(r184498)
+++ head/sys/geom/geom_disk.c	Fri Oct 31 10:11:35 2008	(r184499)
@@ -179,7 +179,7 @@ g_disk_kerneldump(struct bio *bp, struct
 	di.dumper = dp->d_dump;
 	di.priv = dp;
 	di.blocksize = dp->d_sectorsize;
-	di.maxiosize = min(dp->d_maxsize, MAXDUMPPGS * PAGE_SIZE);
+	di.maxiosize = dp->d_maxsize;
 	di.mediaoffset = gkd->offset;
 	if ((gkd->offset + gkd->length) > dp->d_mediasize)
 		gkd->length = dp->d_mediasize - gkd->offset;

Modified: head/sys/i386/i386/dump_machdep.c
==============================================================================
--- head/sys/i386/i386/dump_machdep.c	Fri Oct 31 09:41:06 2008	(r184498)
+++ head/sys/i386/i386/dump_machdep.c	Fri Oct 31 10:11:35 2008	(r184499)
@@ -165,7 +165,7 @@ cb_dumpdata(struct md_pa *mdp, int seqnr
 	va = 0;
 	pgs = mdp->md_size / PAGE_SIZE;
 	pa = mdp->md_start;
-	maxdumppgs = di->maxiosize / PAGE_SIZE;
+	maxdumppgs = min(di->maxiosize / PAGE_SIZE, MAXDUMPPGS);
 	if (maxdumppgs == 0)	/* seatbelt */
 		maxdumppgs = 1;
 


More information about the svn-src-all mailing list