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. Signed-off-by: Maxim Patlasov <mpatlasov@parallels.com> Acked-by: Rik van Riel <riel@redhat.com> Cc: Michal Hocko <mhocko@suse.cz> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Wu Fengguang <fengguang.wu@intel.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
26bcd8b725
commit
f6789593d5
|
@ -1306,9 +1306,9 @@ static inline void bdi_dirty_limits(struct backing_dev_info *bdi,
|
|||
*bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh);
|
||||
|
||||
if (bdi_bg_thresh)
|
||||
*bdi_bg_thresh = div_u64((u64)*bdi_thresh *
|
||||
background_thresh,
|
||||
dirty_thresh);
|
||||
*bdi_bg_thresh = dirty_thresh ? div_u64((u64)*bdi_thresh *
|
||||
background_thresh,
|
||||
dirty_thresh) : 0;
|
||||
|
||||
/*
|
||||
* In order to avoid the stacked BDI deadlock we need
|
||||
|
|
Loading…
Reference in New Issue