diff --git a/res/snmp/agent.c b/res/snmp/agent.c
index 6acf53680c2ad772f4b0d09fa5938bdf2f6b53a2..0a47879cf77ff9365d3031de0f12702efd75c59c 100644
--- a/res/snmp/agent.c
+++ b/res/snmp/agent.c
@@ -569,9 +569,9 @@ static u_char *ast_var_channel_types_table(struct variable *vp, oid *name, size_
 	case ASTCHANTYPECHANNELS:
 		long_ret = 0;
 		for (chan = ast_channel_walk_locked(NULL); chan; chan = ast_channel_walk_locked(chan)) {
-			ast_channel_unlock(chan);
 			if (chan->tech == tech)
 				long_ret++;
+			ast_channel_unlock(chan);
 		}
 		return (u_char *)&long_ret;
 	default: