aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page-writeback.c
diff options
context:
space:
mode:
authorWu Fengguang <fengguang.wu@intel.com>2011-11-07 06:19:28 -0500
committerWu Fengguang <fengguang.wu@intel.com>2011-11-07 06:19:28 -0500
commit3a73dbbc9bb3fc8594cd67af4db6c563175dfddb (patch)
treee5120c19fd8e83a38d5c0852336a92c5b7862c6a /mm/page-writeback.c
parent31555213f03bca37d2c02e10946296052f4ecfcd (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/page-writeback.c')
-rw-r--r--mm/page-writeback.c8
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,