diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c
index d035b69a3b457c163a289451e73b3c1aafacb667..cde0e9e2df8f927dad3d420c5327b250ad5ba740 100755
--- a/channels/chan_alsa.c
+++ b/channels/chan_alsa.c
@@ -1077,8 +1077,8 @@ int unload_module()
 	ast_channel_unregister(&alsa_tech);
 	for (x=0;x<sizeof(myclis)/sizeof(struct ast_cli_entry); x++)
 		ast_cli_unregister(myclis + x);
-	close(readdev);
-	close(writedev);
+	snd_pcm_close(alsa.icard);
+	snd_pcm_close(alsa.ocard);
 	if (sndcmd[0] > 0) {
 		close(sndcmd[0]);
 		close(sndcmd[1]);