issue :HAL is still available from the last session

Change-Id: Ie72445741b7299109e611f6bdbdaecac1850b593
diff --git a/helium/radio_helium_hal.c b/helium/radio_helium_hal.c
index 4ba1e11..48ba0cb 100644
--- a/helium/radio_helium_hal.c
+++ b/helium/radio_helium_hal.c
@@ -120,13 +120,6 @@
     if (hal->radio->mode == FM_TURNING_OFF) {
         ALOGD("%s:calling fm close\n", LOG_TAG );
         fm_hci_close(hal->private_data);
-        free(hal->radio);
-        hal->radio = NULL;
-        hal->jni_cb = NULL;
-        pthread_cond_destroy(&hal->cmd_cond);
-        pthread_mutex_destroy(&hal->cmd_lock);
-        free(hal);
-        hal = NULL;
     }
 }
 
@@ -1097,11 +1090,22 @@
 int fm_hci_close_done()
 {
     ALOGI("fm_hci_close_done");
+    fm_hal_callbacks_t *ptr = NULL;
+
     if(hal != NULL){
+        ptr = hal->jni_cb;
+        ALOGI("clearing hal ");
+        free(hal->radio);
+        hal->radio = NULL;
+        hal->jni_cb = NULL;
+        pthread_cond_destroy(&hal->cmd_cond);
+        pthread_mutex_destroy(&hal->cmd_lock);
+        free(hal);
+        hal = NULL;
+
         ALOGI("Notifying FM OFF to JNI");
-        hal->radio->mode = FM_OFF;
-        hal->jni_cb->disabled_cb();
-        hal->jni_cb->thread_evt_cb(1);
+        ptr->disabled_cb();
+        ptr->thread_evt_cb(1);
     }
     return 0;
 }