Merge "primary-hal: Fix double free of fds"
diff --git a/hal/audio_extn/sndmonitor.c b/hal/audio_extn/sndmonitor.c
index e86d6b6..5e39d37 100644
--- a/hal/audio_extn/sndmonitor.c
+++ b/hal/audio_extn/sndmonitor.c
@@ -81,8 +81,6 @@
 #define AUDIO_PARAMETER_KEY_EXT_AUDIO_DEVICE "ext_audio_device"
 #define INIT_MAP_SIZE 5
 
-#define FD_INVALID -1
-
 typedef enum {
     audio_event_on,
     audio_event_off
@@ -247,11 +245,8 @@
         }
 
         ret = add_new_sndcard(atoi(ptr), fd);
-
-        close(fd);
-        fd = FD_INVALID;
-
         if (ret != 0) {
+            close(fd);
             continue;
         }
 
@@ -280,11 +275,8 @@
             continue;
 
         ret = add_new_sndcard(CPE_MAGIC_NUM+num_cpe, fd);
-
-        close(fd);
-        fd = FD_INVALID;
-
         if (ret != 0) {
+            close(fd);
             continue;
         }
 
@@ -312,11 +304,10 @@
         }
         if (fd >= 0) {
             ret = add_new_sndcard(SLPI_MAGIC_NUM, fd);
-            if (ret == 0)
+            if (ret != 0)
+                close(fd);
+            else
                 num_cards++;
-
-            close(fd);
-            fd = FD_INVALID;
         }
     }