APEI GHES: 32-bit buildfix
authorLen Brown <len.brown@intel.com>
Tue, 2 Aug 2011 22:00:21 +0000 (18:00 -0400)
committerLen Brown <len.brown@intel.com>
Wed, 3 Aug 2011 15:15:59 +0000 (11:15 -0400)
drivers/acpi/apei/ghes.c:542: warning: integer overflow in expression
drivers/acpi/apei/ghes.c:619: warning: integer overflow in expression

ghes.c:(.text+0x46289): undefined reference to `__udivdi3'
  in function ghes_estatus_cache_add().

Reported-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/apei/ghes.c

index e92c47c..0784f99 100644 (file)
@@ -65,7 +65,7 @@
 
 #define GHES_ESTATUS_CACHES_SIZE       4
 
-#define GHES_ESTATUS_IN_CACHE_MAX_NSEC (10 * NSEC_PER_SEC)
+#define GHES_ESTATUS_IN_CACHE_MAX_NSEC 10000000000ULL
 /* Prevent too many caches are allocated because of RCU */
 #define GHES_ESTATUS_CACHE_ALLOCED_MAX (GHES_ESTATUS_CACHES_SIZE * 3 / 2)
 
@@ -622,7 +622,8 @@ static void ghes_estatus_cache_add(
                        break;
                }
                count = atomic_read(&cache->count);
-               period = duration / (count + 1);
+               period = duration;
+               do_div(period, (count + 1));
                if (period > max_period) {
                        max_period = period;
                        slot = i;