diff --git a/graphics/mapper/2.0/default/GrallocMapper.cpp b/graphics/mapper/2.0/default/GrallocMapper.cpp
index e06fbcb..d16143d 100644
--- a/graphics/mapper/2.0/default/GrallocMapper.cpp
+++ b/graphics/mapper/2.0/default/GrallocMapper.cpp
@@ -293,31 +293,20 @@
     return Void();
 }
 
-namespace {
-// Load the gralloc module when this shared library is loaded, rather than
-// waiting until HIDL_FETCH_IMapper is called. This allows it (and its
-// dependencies) to be loaded by Zygote, reducing app startup time and sharing
-// pages dirtied during library load between all apps.
-struct GrallocModule {
-    const hw_module_t* module;
-    GrallocModule() : module(nullptr) {
-        int err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &module);
-        ALOGE_IF(err, "failed to get gralloc module: %s (%d)", strerror(-err),
-                 err);
-    }
-};
-GrallocModule gGralloc;
-}  // namespace
-
 IMapper* HIDL_FETCH_IMapper(const char* /* name */) {
-    if (!gGralloc.module) return nullptr;
+    const hw_module_t* module = nullptr;
+    int err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &module);
+    if (err) {
+        ALOGE("failed to get gralloc module");
+        return nullptr;
+    }
 
-    uint8_t major = (gGralloc.module->module_api_version >> 8) & 0xff;
+    uint8_t major = (module->module_api_version >> 8) & 0xff;
     switch (major) {
         case 1:
-            return new Gralloc1Mapper(gGralloc.module);
+            return new Gralloc1Mapper(module);
         case 0:
-            return new Gralloc0Mapper(gGralloc.module);
+            return new Gralloc0Mapper(module);
         default:
             ALOGE("unknown gralloc module major version %d", major);
             return nullptr;
