]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/loader/i386/xnu.c (guessfsb): Avoid division by 0.
authorVladimir Serbinenko <phcoder@gmail.com>
Tue, 20 Jan 2015 20:07:41 +0000 (21:07 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Wed, 21 Jan 2015 16:42:14 +0000 (17:42 +0100)
ChangeLog
grub-core/loader/i386/xnu.c

index c2551db3023d84bc60634989076ecb0f74114036..03769742ca8c2df52fd4d863f85998a7deb88916 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/loader/i386/xnu.c (guessfsb): Avoid division by 0.
+
 2015-01-20  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/i386/tsc.c (calibrate_tsc): Ensure that
index 94daa021efa768e18de03294ad1d539dcc546a55..e0506a67633e334eb207aa4df4947c93b4c29d84 100644 (file)
@@ -126,7 +126,7 @@ guessfsb (void)
 {
   const grub_uint64_t sane_value = 100000000;
   grub_uint32_t manufacturer[3], max_cpuid, capabilities, msrlow;
-  grub_uint32_t a, b, d;
+  grub_uint32_t a, b, d, divisor;
 
   if (! grub_cpu_is_cpuid_supported ())
     return sane_value;
@@ -166,8 +166,10 @@ guessfsb (void)
   r = (2000ULL << 32) - v * grub_tsc_rate;
   v += r / grub_tsc_rate;
 
-  return grub_divmod64 (v, ((msrlow >> 7) & 0x3e) | ((msrlow >> 14) & 1),
-                        0);
+  divisor = ((msrlow >> 7) & 0x3e) | ((msrlow >> 14) & 1);
+  if (divisor == 0)
+    return sane_value;
+  return grub_divmod64 (v, divisor, 0);
 }
 
 struct property_descriptor