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;
}