diff --git a/kernel/smp.c b/kernel/smp.c
index 1a5b6f4f65ed0d0822a576d16d6d38964a6a8131..06c67bb19d034b9bd2bba3115d01515fd8edd758 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -193,7 +193,7 @@ void generic_smp_call_function_interrupt(void)
 
 		data->csd.func(data->csd.info);
 
-		refs = atomic_sub_return(1, &data->refs);
+		refs = atomic_dec_return(&data->refs);
 		WARN_ON(refs < 0);
 		if (!refs) {
 			spin_lock(&call_function.lock);