Free buffer only in case of error in NFC_DATA_CEVT

Bug: 120711800
Test: Read/Write tag 15693
Change-Id: Ieedc80b6f4e3c40b5ade7c242ae1366c9c8b694b
diff --git a/src/nfc/tags/rw_i93.cc b/src/nfc/tags/rw_i93.cc
index c8667a4..1e62d34 100644
--- a/src/nfc/tags/rw_i93.cc
+++ b/src/nfc/tags/rw_i93.cc
@@ -2912,8 +2912,10 @@
         p_resp = p_i93->p_retry_cmd;
         p_i93->p_retry_cmd = nullptr;
         if (rw_i93_send_to_lower(p_resp)) {
-          p_resp = (NFC_HDR*)p_data->data.p_data;
-          GKI_freebuf(p_resp);
+          if (event == NFC_DATA_CEVT) {
+            p_resp = (NFC_HDR*)p_data->data.p_data;
+            GKI_freebuf(p_resp);
+          }
           return;
         }
       }
@@ -2936,8 +2938,10 @@
       NFC_SetStaticRfCback(nullptr);
       p_i93->state = RW_I93_STATE_NOT_ACTIVATED;
     }
-    p_resp = (NFC_HDR*)p_data->data.p_data;
-    GKI_freebuf(p_resp);
+    if ((event == NFC_DATA_CEVT) && (p_data->status != NFC_STATUS_OK)) {
+      p_resp = (NFC_HDR*)p_data->data.p_data;
+      GKI_freebuf(p_resp);
+    }
     return;
   }