History

mm/page-writeback.c: fix divide by zero in bdi_dirty_limits()

Under memory pressure, it is possible for dirty_thresh, calculated by global_dirty_limits() in balance_dirty_pages(), to equal zero. Then, if strictlimit is true, bdi_dirty_limits() tries to resolve the proportion: bdi_bg_thresh : bdi_thresh = background_thresh : dirty_thresh by dividing by zero.

Maxim Patlasov committed 12 years ago

Commit f6789591 parent 26bcd8b1 file · +3 −3Browse files

Unified · Split

mm/page-writeback.c+3−3
@@ -1306,9 +1306,9 @@ static inline void bdi_dirty_limits(struct backing_dev_info *bdi, · 1305 unmodified lines
1306 *bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh);1306 *bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh);
1307 1307
1308 if (bdi_bg_thresh)1308 if (bdi_bg_thresh)
1309 *bdi_bg_thresh = div_u64((u64)*bdi_thresh *1309 *bdi_bg_thresh = dirty_thresh ? div_u64((u64)*bdi_thresh *
1310 background_thresh,1310 background_thresh,
1311 dirty_thresh);1311 dirty_thresh) : 0;
1312 1312
1313 /*1313 /*
1314 * In order to avoid the stacked BDI deadlock we need1314 * In order to avoid the stacked BDI deadlock we need