Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a73dbbc authored by Wu Fengguang's avatar Wu Fengguang
Browse files

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: default avatarWitold Baryluk <baryluk@smp.if.uj.edu.pl>
Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
parent 31555213
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -1097,13 +1097,13 @@ static void balance_dirty_pages(struct address_space *mapping,
		pos_ratio = bdi_position_ratio(bdi, dirty_thresh,
		pos_ratio = bdi_position_ratio(bdi, dirty_thresh,
					       background_thresh, nr_dirty,
					       background_thresh, nr_dirty,
					       bdi_thresh, bdi_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;
			pause = max_pause;
			goto pause;
			goto pause;
		}
		}
		task_ratelimit = (u64)dirty_ratelimit *
		pause = HZ * pages_dirtied / task_ratelimit;
					pos_ratio >> RATELIMIT_CALC_SHIFT;
		pause = (HZ * pages_dirtied) / (task_ratelimit | 1);
		if (unlikely(pause <= 0)) {
		if (unlikely(pause <= 0)) {
			trace_balance_dirty_pages(bdi,
			trace_balance_dirty_pages(bdi,
						  dirty_thresh,
						  dirty_thresh,