diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c
index 9bef8f3c72e023327b9a013d34c1ee510c76fdb5..6f0d36070a1eef27bcb8e38becec8bff52211be8 100644
--- a/channels/chan_alsa.c
+++ b/channels/chan_alsa.c
@@ -1109,8 +1109,10 @@ 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);
-	snd_pcm_close(alsa.icard);
-	snd_pcm_close(alsa.ocard);
+	if (alsa.icard)
+		snd_pcm_close(alsa.icard);
+	if (alsa.ocard)
+		snd_pcm_close(alsa.ocard);
 	if (sndcmd[0] > 0) {
 		close(sndcmd[0]);
 		close(sndcmd[1]);