diff --git a/Changelog b/Changelog
index e0e5fa3..aa6d05b 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,6 @@
+- Patch to fix leaky interface/template call depth calculator from Vaclav
+  Ovsik.
+
 * Wed Apr 02 2008 Chris PeBenito <selinux@tresys.com> - 20080402
 - Add core Security Enhanced X Windows support.
 - Fix winbind socket connection interface for default location of the
diff --git a/policy/support/loadable_module.spt b/policy/support/loadable_module.spt
index b28488e..1fe3ab3 100644
--- a/policy/support/loadable_module.spt
+++ b/policy/support/loadable_module.spt
@@ -62,14 +62,10 @@ define(`policy_m4_comment',`
 define(`template',` dnl
 	ifdef(`$1',`refpolicyerr(`duplicate definition of $1(). Original definition on '$1.) define(`__if_error')',`define(`$1',__line__)') dnl
 	`define(`$1',` dnl
-	define(`policy_temp',incr(policy_call_depth)) dnl
-	pushdef(`policy_call_depth',policy_temp) dnl
-	undefine(`policy_temp') dnl
+	pushdef(`policy_call_depth',incr(policy_call_depth)) dnl
 	policy_m4_comment(policy_call_depth,begin `$1'(dollarsstar)) dnl
 	$2 dnl
-	define(`policy_temp',decr(policy_call_depth)) dnl
-	pushdef(`policy_call_depth',policy_temp) dnl
-	undefine(`policy_temp') dnl
+	popdef(`policy_call_depth') dnl
 	policy_m4_comment(policy_call_depth,end `$1'(dollarsstar)) dnl
 	'')
 ')
@@ -83,14 +79,10 @@ define(`template',` dnl
 define(`interface',` dnl
 	ifdef(`$1',`refpolicyerr(`duplicate definition of $1(). Original definition on '$1.) define(`__if_error')',`define(`$1',__line__)') dnl
 	`define(`$1',` dnl
-	define(`policy_temp',incr(policy_call_depth)) dnl
-	pushdef(`policy_call_depth',policy_temp) dnl
-	undefine(`policy_temp') dnl
+	pushdef(`policy_call_depth',incr(policy_call_depth)) dnl
 	policy_m4_comment(policy_call_depth,begin `$1'(dollarsstar)) dnl
 	$2
-	define(`policy_temp',decr(policy_call_depth)) dnl
-	pushdef(`policy_call_depth',policy_temp) dnl
-	undefine(`policy_temp') dnl
+	popdef(`policy_call_depth') dnl
 	policy_m4_comment(policy_call_depth,end `$1'(dollarsstar)) dnl
 	'')
 ')