diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index e9d112972c7fd236656ee5365971d0dfd44a2bea..e5dd0a5aa088b18099185d87b0fcc8f4e03eaee0 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -3023,7 +3023,7 @@ static int ftrace_allocate_records(struct ftrace_page *pg, int count)
 		/* if we can't allocate this size, try something smaller */
 		if (!order)
 			return -ENOMEM;
-		order >>= 1;
+		order--;
 		goto again;
 	}