Message ID | 1527582552-4841-1-git-send-email-bo.liu@linux.alibaba.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 5/29/18 2:29 AM, Liu Bo wrote: > tg in throtl_select_dispatch is used first and then do check. Since tg > may be NULL, it has potential NULL pointer dereference risk. So fix > it. Applied, thanks.
diff --git a/block/blk-throttle.c b/block/blk-throttle.c index dffe982..a168e82 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -1294,7 +1294,7 @@ static int throtl_select_dispatch(struct throtl_service_queue *parent_sq) while (1) { struct throtl_grp *tg = throtl_rb_first(parent_sq); - struct throtl_service_queue *sq = &tg->service_queue; + struct throtl_service_queue *sq; if (!tg) break; @@ -1306,6 +1306,7 @@ static int throtl_select_dispatch(struct throtl_service_queue *parent_sq) nr_disp += throtl_dispatch_tg(tg); + sq = &tg->service_queue; if (sq->nr_queued[0] || sq->nr_queued[1]) tg_update_disptime(tg);