aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2007-10-23 09:08:21 -0400
committerJens Axboe <jens.axboe@oracle.com>2007-10-29 06:33:05 -0400
commit0a0836a09ca7a27341703ef154c82e2e7f3e96f4 (patch)
treed4fb7c2a848e7160945405dd3d1bdcf9ae6efd33 /block
parentabbeb88d00bef294ce661a9229c1dc31be064545 (diff)
cfq_get_queue: fix possible NULL pointer access
cfq_get_queue()->cfq_find_alloc_queue() can fail, check the returned value. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Note that this isn't a bug at the moment, since the regular IO path does not call this path without __GFP_WAIT set. However, it could be a future bug, so I've applied it. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block')
-rw-r--r--block/cfq-iosched.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index d77c9719b613..e47a9309eb48 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1443,8 +1443,11 @@ cfq_get_queue(struct cfq_data *cfqd, int is_sync, struct task_struct *tsk,
1443 cfqq = *async_cfqq; 1443 cfqq = *async_cfqq;
1444 } 1444 }
1445 1445
1446 if (!cfqq) 1446 if (!cfqq) {
1447 cfqq = cfq_find_alloc_queue(cfqd, is_sync, tsk, gfp_mask); 1447 cfqq = cfq_find_alloc_queue(cfqd, is_sync, tsk, gfp_mask);
1448 if (!cfqq)
1449 return NULL;
1450 }
1448 1451
1449 /* 1452 /*
1450 * pin the queue now that it's allocated, scheduler exit will prune it 1453 * pin the queue now that it's allocated, scheduler exit will prune it