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. */
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to