svn commit: r298321 - head/sys/x86/acpica

Conrad E. Meyer cem at FreeBSD.org
Wed Apr 20 01:10:08 UTC 2016


Author: cem
Date: Wed Apr 20 01:10:07 2016
New Revision: 298321
URL: https://svnweb.freebsd.org/changeset/base/298321

Log:
  SRAT: Don't overflow domain_pxm table
  
  If we reached MAXMEMDOM, we would previously try to insert an additional
  element and only detect overflow after causing (probably trivial) memory
  overflow.  Instead, detect the ndomain > MAXMEMDOM case before we write past
  the end.
  
  Reported by:	Coverity
  CID:		1354783
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/sys/x86/acpica/srat.c

Modified: head/sys/x86/acpica/srat.c
==============================================================================
--- head/sys/x86/acpica/srat.c	Wed Apr 20 01:05:54 2016	(r298320)
+++ head/sys/x86/acpica/srat.c	Wed Apr 20 01:10:07 2016	(r298321)
@@ -355,17 +355,18 @@ renumber_domains(void)
 		if (j < ndomain && domain_pxm[j] == mem_info[i].domain)
 			continue;
 
+		if (ndomain >= MAXMEMDOM) {
+			ndomain = 1;
+			printf("SRAT: Too many memory domains\n");
+			return (EFBIG);
+		}
+
 		/* Insert the new domain at slot 'j'. */
 		slot = j;
 		for (j = ndomain; j > slot; j--)
 			domain_pxm[j] = domain_pxm[j - 1];
 		domain_pxm[slot] = mem_info[i].domain;
 		ndomain++;
-		if (ndomain > MAXMEMDOM) {
-			ndomain = 1;
-			printf("SRAT: Too many memory domains\n");
-			return (EFBIG);
-		}
 	}
 
 	/* Renumber each domain to its index in the sorted 'domain_pxm' list. */


More information about the svn-src-head mailing list