diff --git a/fs/seq_file.c b/fs/seq_file.c
index df5e89002ee203ed239b3d2e2a03eaf2f9967fa9..03f46abf893004c1e041918852a959cac69791eb 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -36,9 +36,11 @@ static void *seq_buf_alloc(unsigned long size)
 {
 	void *buf;
 
-	buf = kmalloc(size, GFP_KERNEL | __GFP_NOWARN);
-	if (!buf && size > PAGE_SIZE)
+	if (size > PAGE_SIZE)
 		buf = vmalloc(size);
+	else
+		buf = kmalloc(size, GFP_KERNEL | __GFP_NOWARN);
+
 	return buf;
 }