mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 21:03:32 +00:00
mm/damon/core: avoid divide-by-zero during monitoring results update
commitd35963bfb0
upstream. When monitoring attributes are changed, DAMON updates access rate of the monitoring results accordingly. For that, it divides some values by the maximum nr_accesses. However, due to the type of the related variables, simple division-based calculation of the divisor can return zero. As a result, divide-by-zero is possible. Fix it by using damon_max_nr_accesses(), which handles the case. Link: https://lkml.kernel.org/r/20231019194924.100347-3-sj@kernel.org Fixes:2f5bef5a59
("mm/damon/core: update monitoring results for new monitoring attributes") Signed-off-by: SeongJae Park <sj@kernel.org> Reported-by: Jakub Acs <acsjakub@amazon.de> Cc: <stable@vger.kernel.org> [6.3+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d44b509ba8
commit
47b6fa9087
1 changed files with 2 additions and 8 deletions
|
@ -476,20 +476,14 @@ static unsigned int damon_age_for_new_attrs(unsigned int age,
|
|||
static unsigned int damon_accesses_bp_to_nr_accesses(
|
||||
unsigned int accesses_bp, struct damon_attrs *attrs)
|
||||
{
|
||||
unsigned int max_nr_accesses =
|
||||
attrs->aggr_interval / attrs->sample_interval;
|
||||
|
||||
return accesses_bp * max_nr_accesses / 10000;
|
||||
return accesses_bp * damon_max_nr_accesses(attrs) / 10000;
|
||||
}
|
||||
|
||||
/* convert nr_accesses to access ratio in bp (per 10,000) */
|
||||
static unsigned int damon_nr_accesses_to_accesses_bp(
|
||||
unsigned int nr_accesses, struct damon_attrs *attrs)
|
||||
{
|
||||
unsigned int max_nr_accesses =
|
||||
attrs->aggr_interval / attrs->sample_interval;
|
||||
|
||||
return nr_accesses * 10000 / max_nr_accesses;
|
||||
return nr_accesses * 10000 / damon_max_nr_accesses(attrs);
|
||||
}
|
||||
|
||||
static unsigned int damon_nr_accesses_for_new_attrs(unsigned int nr_accesses,
|
||||
|
|
Loading…
Reference in a new issue