diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h
index 4da7fa465b4c408a0c0c942e4217e985e8752934..b892cda9e429fb3b35076e5983919f1dbaf16cff 100644
--- a/include/asterisk/utils.h
+++ b/include/asterisk/utils.h
@@ -578,6 +578,13 @@ void DO_CRASH_NORETURN __ast_assert_failed(int condition, const char *condition_
 
 #ifdef AST_DEVMODE
 #define ast_assert(a) _ast_assert(a, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+#define ast_assert_return(a, ...) \
+({ \
+	if (__builtin_expect(!(a), 1)) { \
+		_ast_assert(0, # a, __FILE__, __LINE__, __PRETTY_FUNCTION__); \
+		return __VA_ARGS__; \
+	}\
+})
 static void force_inline _ast_assert(int condition, const char *condition_str, const char *file, int line, const char *function)
 {
 	if (__builtin_expect(!condition, 1)) {
@@ -586,6 +593,12 @@ static void force_inline _ast_assert(int condition, const char *condition_str, c
 }
 #else
 #define ast_assert(a)
+#define ast_assert_return(a, ...) \
+({ \
+	if (__builtin_expect(!(a), 1)) { \
+		return __VA_ARGS__; \
+	}\
+})
 #endif
 
 /*!