diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index fd08f245710cd4f8455c43dff9489a29b45611ff..fbaed07d6834ce14759fa25aff0d3aaa3626ab54 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -7108,6 +7108,7 @@ static int __unload_module(void)
 	ast_unregister_switch(&iax2_switch);
 	ast_channel_unregister(type);
 	delete_users();
+	iax_provision_unload();
 	return 0;
 }
 
diff --git a/channels/iax2-provision.c b/channels/iax2-provision.c
index b49ea164d916f49600fc50f2cb8cbaa4ebdd2cf0..da109779473b0ca060268d31346a2b4a4dc341f3 100755
--- a/channels/iax2-provision.c
+++ b/channels/iax2-provision.c
@@ -455,6 +455,13 @@ static int iax_provision_init(void)
 	return 0;
 }
 
+int iax_provision_unload(void)
+{
+	provinit = 0;
+	ast_cli_unregister(&cli_show_provisioning);
+	return 0;
+}
+
 int iax_provision_reload(void)
 {
 	struct ast_config *cfg;
diff --git a/channels/iax2-provision.h b/channels/iax2-provision.h
index 2422ce0d3a1c870b7aec698e37d90c760d23b19d..3caaa5d31e292deecd83a9a3f09d4421c2caec90 100755
--- a/channels/iax2-provision.h
+++ b/channels/iax2-provision.h
@@ -38,6 +38,7 @@
 
 extern char *iax_provflags2str(char *buf, int buflen, unsigned int flags);
 extern int iax_provision_reload(void);
+extern int iax_provision_unload(void);
 extern int iax_provision_build(struct iax_ie_data *provdata, unsigned int *signature, const char *template, int force);
 extern int iax_provision_version(unsigned int *signature, const char *template, int force);
 extern char *iax_prov_complete_template(char *line, char *word, int pos, int state);