diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-11-07 06:19:28 -0500 |
---|---|---|
committer | Wu Fengguang <fengguang.wu@intel.com> | 2011-11-07 06:19:28 -0500 |
commit | 3a73dbbc9bb3fc8594cd67af4db6c563175dfddb (patch) | |
tree | e5120c19fd8e83a38d5c0852336a92c5b7862c6a /mm | |
parent | 31555213f03bca37d2c02e10946296052f4ecfcd (diff) |
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>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page-writeback.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 0360d1b5a1dd..a3278f005230 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
@@ -1097,13 +1097,13 @@ static void balance_dirty_pages(struct address_space *mapping, | |||
1097 | pos_ratio = bdi_position_ratio(bdi, dirty_thresh, | 1097 | pos_ratio = bdi_position_ratio(bdi, dirty_thresh, |
1098 | background_thresh, nr_dirty, | 1098 | background_thresh, nr_dirty, |
1099 | bdi_thresh, bdi_dirty); | 1099 | bdi_thresh, bdi_dirty); |
1100 | if (unlikely(pos_ratio == 0)) { | 1100 | task_ratelimit = ((u64)dirty_ratelimit * pos_ratio) >> |
1101 | RATELIMIT_CALC_SHIFT; | ||
1102 | if (unlikely(task_ratelimit == 0)) { | ||
1101 | pause = max_pause; | 1103 | pause = max_pause; |
1102 | goto pause; | 1104 | goto pause; |
1103 | } | 1105 | } |
1104 | task_ratelimit = (u64)dirty_ratelimit * | 1106 | pause = HZ * pages_dirtied / task_ratelimit; |
1105 | pos_ratio >> RATELIMIT_CALC_SHIFT; | ||
1106 | pause = (HZ * pages_dirtied) / (task_ratelimit | 1); | ||
1107 | if (unlikely(pause <= 0)) { | 1107 | if (unlikely(pause <= 0)) { |
1108 | trace_balance_dirty_pages(bdi, | 1108 | trace_balance_dirty_pages(bdi, |
1109 | dirty_thresh, | 1109 | dirty_thresh, |