diff --git a/include/asm-ia64/pgalloc.h b/include/asm-ia64/pgalloc.h
index 2b7127330ae137f087892ecd77b30a6e5f0f1857..a5f214554afd278830788f5e0673ac2d91fbba04 100644
--- a/include/asm-ia64/pgalloc.h
+++ b/include/asm-ia64/pgalloc.h
@@ -49,12 +49,12 @@ static inline void *pgtable_quicklist_alloc(void)
 		pgtable_quicklist = (unsigned long *)(*ret);
 		ret[0] = 0;
 		--pgtable_quicklist_size;
+		preempt_enable();
 	} else {
+		preempt_enable();
 		ret = (unsigned long *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
 	}
 
-	preempt_enable();
-
 	return ret;
 }