writeback: fix uninitialized task_ratelimit
In balance_dirty_pages() task_ratelimit may be not initialized (initialization skiped by goto pause), and then used when calling tracing hook. Fix it by moving the task_ratelimit assignment before goto pause. Reported-by: Witold Baryluk <baryluk@smp.if.uj.edu.pl> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
This commit is contained in:
parent
31555213f0
commit
3a73dbbc9b
|
@ -1097,13 +1097,13 @@ static void balance_dirty_pages(struct address_space *mapping,
|
|||
pos_ratio = bdi_position_ratio(bdi, dirty_thresh,
|
||||
background_thresh, nr_dirty,
|
||||
bdi_thresh, bdi_dirty);
|
||||
if (unlikely(pos_ratio == 0)) {
|
||||
task_ratelimit = ((u64)dirty_ratelimit * pos_ratio) >>
|
||||
RATELIMIT_CALC_SHIFT;
|
||||
if (unlikely(task_ratelimit == 0)) {
|
||||
pause = max_pause;
|
||||
goto pause;
|
||||
}
|
||||
task_ratelimit = (u64)dirty_ratelimit *
|
||||
pos_ratio >> RATELIMIT_CALC_SHIFT;
|
||||
pause = (HZ * pages_dirtied) / (task_ratelimit | 1);
|
||||
pause = HZ * pages_dirtied / task_ratelimit;
|
||||
if (unlikely(pause <= 0)) {
|
||||
trace_balance_dirty_pages(bdi,
|
||||
dirty_thresh,
|
||||
|
|
Loading…
Reference in New Issue