Revert "[securemem] Fix for use-after scope bug in SetPhysicalSecureHeaps"

This reverts commit 3bc92dc3e3f17f39b1555c2707b1659e85d1b436.

Reason for revert: This seems to be causing some securemem problems in smart displays:  https://paste.googleplex.com/6421987821879296 

Original change's description:
> [securemem] Fix for use-after scope bug in SetPhysicalSecureHeaps
> 
> The fit::defer is run after response goes out of scope (because of C++
> destructor invocation order).
> 
> Fixed: 48997
> 
> Change-Id: Idce68a6cb08668cc49fc349c218e7394c9f67279

TBR=bprosnitz@google.com,pascallouis@google.com

Change-Id: I6843a7e1d6945237991558575b4a40ebe89dadea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
diff --git a/src/devices/securemem/drivers/aml-securemem/sysmem-secure-mem-server.cc b/src/devices/securemem/drivers/aml-securemem/sysmem-secure-mem-server.cc
index d3c6c3b..bcab508 100644
--- a/src/devices/securemem/drivers/aml-securemem/sysmem-secure-mem-server.cc
+++ b/src/devices/securemem/drivers/aml-securemem/sysmem-secure-mem-server.cc
@@ -115,17 +115,22 @@
     llcpp::fuchsia::sysmem::SecureMem::Interface::SetPhysicalSecureHeapsCompleter::Sync completer) {
   ZX_DEBUG_ASSERT(thrd_current() == loop_thread_);
   // must out-live |complete|
+  fidl::aligned<llcpp::fuchsia::sysmem::SecureMem_SetPhysicalSecureHeaps_Response> response;
+  // must out-live |complete|
   llcpp::fuchsia::sysmem::SecureMem_SetPhysicalSecureHeaps_Result result;
+  // ~complete before ~result or ~response
+  auto complete = fit::defer([&completer, &result] {
+    ZX_DEBUG_ASSERT(!result.has_invalid_tag());
+    completer.Reply(std::move(result));
+  });
   zx_status_t status = SetPhysicalSecureHeapsInternal(heaps);
   if (status != ZX_OK) {
     LOG(ERROR, "SetPhysicalSecureHeapsInternal() failed - status: %d", status);
     result.set_err(fidl::unowned_ptr(&status));
     return;
   }
-  fidl::aligned<llcpp::fuchsia::sysmem::SecureMem_SetPhysicalSecureHeaps_Response> response;
   result.set_response(fidl::unowned_ptr(&response));
-  ZX_DEBUG_ASSERT(!result.has_invalid_tag());
-  completer.Reply(std::move(result));
+  // ~complete, ~result, ~response in that order
 }
 
 void SysmemSecureMemServer::PostToLoop(fit::closure to_run) {