diff --git a/cel/cel_pgsql.c b/cel/cel_pgsql.c
index 32ec6302cd0d702514e06510131cb0172459d090..ca064ec2261147e85c1af38a88b292b3079ecdb3 100644
--- a/cel/cel_pgsql.c
+++ b/cel/cel_pgsql.c
@@ -337,31 +337,39 @@ static void pgsql_log(const struct ast_event *event, void *userdata)
 static int my_unload_module(void)
 {
 	struct columns *current;
+	AST_RWLIST_WRLOCK(&psql_columns);
 	if (event_sub) {
 		event_sub = ast_event_unsubscribe(event_sub);
+		event_sub = NULL;
 	}
 	if (conn) {
 		PQfinish(conn);
+		conn = NULL;
 	}
 	if (pghostname) {
 		ast_free(pghostname);
+		pghostname = NULL;
 	}
 	if (pgdbname) {
 		ast_free(pgdbname);
+		pgdbname = NULL;
 	}
 	if (pgdbuser) {
 		ast_free(pgdbuser);
+		pgdbuser = NULL;
 	}
 	if (pgpassword) {
 		ast_free(pgpassword);
+		pgpassword = NULL;
 	}
 	if (pgdbport) {
 		ast_free(pgdbport);
+		pgdbport = NULL;
 	}
 	if (table) {
 		ast_free(table);
+		table = NULL;
 	}
-	AST_RWLIST_WRLOCK(&psql_columns);
 	while ((current = AST_RWLIST_REMOVE_HEAD(&psql_columns, list))) {
 		ast_free(current);
 	}