Merge cherrypicks of [19355798] into tm-release.

Change-Id: I6b03c41000b54a215f11e8527370b9a7a314cedc
diff --git a/gralloc/gr_buf_mgr.cpp b/gralloc/gr_buf_mgr.cpp
index 3110192..cd14a6b 100644
--- a/gralloc/gr_buf_mgr.cpp
+++ b/gralloc/gr_buf_mgr.cpp
@@ -67,14 +67,15 @@
   return static_cast<uint64_t>(ROUND_UP_PAGESIZE(sizeof(MetaData_t) + reserved_region_size));
 }
 
-static void unmapAndReset(private_handle_t *handle, uint64_t reserved_region_size = 0) {
+static void unmapAndReset(private_handle_t *handle) {
+  uint64_t reserved_region_size = handle->reserved_size;
   if (private_handle_t::validate(handle) == 0 && handle->base_metadata) {
     munmap(reinterpret_cast<void *>(handle->base_metadata), getMetaDataSize(reserved_region_size));
     handle->base_metadata = 0;
   }
 }
 
-static int validateAndMap(private_handle_t *handle, uint64_t reserved_region_size = 0) {
+static int validateAndMap(private_handle_t *handle) {
   if (private_handle_t::validate(handle)) {
     ALOGE("%s: Private handle is invalid - handle:%p", __func__, handle);
     return -1;
@@ -85,6 +86,7 @@
   }
 
   if (!handle->base_metadata) {
+    uint64_t reserved_region_size = handle->reserved_size;
     uint64_t size = getMetaDataSize(reserved_region_size);
     void *base = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd_metadata, 0);
     if (base == reinterpret_cast<void *>(MAP_FAILED)) {
@@ -93,24 +95,6 @@
       return -1;
     }
     handle->base_metadata = (uintptr_t)base;
-#ifdef METADATA_V2
-    // The allocator process gets the reserved region size from the BufferDescriptor.
-    // When importing to another process, the reserved size is unknown until mapping the metadata,
-    // hence the re-mapping below
-    auto metadata = reinterpret_cast<MetaData_t*>(handle->base_metadata);
-    if (reserved_region_size == 0 && metadata->reservedSize) {
-        size = getMetaDataSize(metadata->reservedSize);
-        unmapAndReset(handle);
-        void *new_base = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED,
-                              handle->fd_metadata, 0);
-        if (new_base == reinterpret_cast<void*>(MAP_FAILED)) {
-          ALOGE("%s: metadata mmap failed - handle:%p fd: %d err: %s",
-                __func__, handle, handle->fd_metadata, strerror(errno));
-          return -1;
-        }
-        handle->base_metadata = (uintptr_t)new_base;
-    }
-#endif
   }
   return 0;
 }
@@ -741,7 +725,7 @@
     return Error::BAD_BUFFER;
   }
 
-  auto meta_size = getMetaDataSize(buf->reserved_size);
+  auto meta_size = getMetaDataSize(hnd->reserved_size);
 
   if (allocator_->FreeBuffer(reinterpret_cast<void *>(hnd->base), hnd->size, hnd->offset, hnd->fd,
                              buf->ion_handle_main) != 0) {
@@ -1073,6 +1057,7 @@
       data.fd, e_data.fd, INT(flags), INT(alignedw), INT(alignedh), descriptor.GetWidth(),
       descriptor.GetHeight(), format, buffer_type, data.size, usage);
 
+  hnd->reserved_size = descriptor.GetReservedSize();
   hnd->id = ++next_id_;
   hnd->base = 0;
   hnd->base_metadata = 0;
@@ -1083,11 +1068,7 @@
     setMetaDataAndUnmap(hnd, SET_GRAPHICS_METADATA, reinterpret_cast<void *>(&graphics_metadata));
   }
 
-#ifdef METADATA_V2
-  auto error = validateAndMap(hnd, descriptor.GetReservedSize());
-#else
   auto error = validateAndMap(hnd);
-#endif
 
   if (error != 0) {
     ALOGE("validateAndMap failed");
@@ -1109,7 +1090,7 @@
   metadata->crop.right = hnd->width;
   metadata->crop.bottom = hnd->height;
 
-  unmapAndReset(hnd, descriptor.GetReservedSize());
+  unmapAndReset(hnd);
 
   *handle = hnd;