|
@@ -1202,13 +1202,16 @@ retry:
|
|
|
if (new_cfqq) {
|
|
|
cfqq = new_cfqq;
|
|
|
new_cfqq = NULL;
|
|
|
- } else if (gfp_mask & __GFP_WAIT) {
|
|
|
+ } else {
|
|
|
spin_unlock_irq(cfqd->queue->queue_lock);
|
|
|
new_cfqq = kmem_cache_alloc(cfq_pool, gfp_mask);
|
|
|
spin_lock_irq(cfqd->queue->queue_lock);
|
|
|
+
|
|
|
+ if (!new_cfqq && !(gfp_mask & __GFP_WAIT))
|
|
|
+ goto out;
|
|
|
+
|
|
|
goto retry;
|
|
|
- } else
|
|
|
- goto out;
|
|
|
+ }
|
|
|
|
|
|
memset(cfqq, 0, sizeof(*cfqq));
|
|
|
|