Message ID | 20231219142508.86265-2-jefflexu@linux.alibaba.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mm: fix arithmetic for bdi min_ratio and max_ratio | expand |
On Tue 19-12-23 22:25:07, Jingbo Xu wrote: > Since now bdi->min_ratio is part per million, fix the wrong arithmetic. > Otherwise it will fail with -EINVAL when setting a reasonable min_ratio, > as it tries to set min_ratio to (min_ratio * BDI_RATIO_SCALE) in > percentage unit, which exceeds 100% anyway. > > # cat /sys/class/bdi/253\:0/min_ratio > 0 > # cat /sys/class/bdi/253\:0/max_ratio > 100 > # echo 1 > /sys/class/bdi/253\:0/min_ratio > -bash: echo: write error: Invalid argument > > Fixes: 8021fb3232f2 ("mm: split off __bdi_set_min_ratio() function") > Reported-by: Joseph Qi <joseph.qi@linux.alibaba.com> > Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > mm/page-writeback.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/mm/page-writeback.c b/mm/page-writeback.c > index ee2fd6a6af40..2140382dd768 100644 > --- a/mm/page-writeback.c > +++ b/mm/page-writeback.c > @@ -692,7 +692,6 @@ static int __bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ra > > if (min_ratio > 100 * BDI_RATIO_SCALE) > return -EINVAL; > - min_ratio *= BDI_RATIO_SCALE; > > spin_lock_bh(&bdi_lock); > if (min_ratio > bdi->max_ratio) { > -- > 2.19.1.6.gb485710b > >
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index ee2fd6a6af40..2140382dd768 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -692,7 +692,6 @@ static int __bdi_set_min_ratio(struct backing_dev_info *bdi, unsigned int min_ra if (min_ratio > 100 * BDI_RATIO_SCALE) return -EINVAL; - min_ratio *= BDI_RATIO_SCALE; spin_lock_bh(&bdi_lock); if (min_ratio > bdi->max_ratio) {
Since now bdi->min_ratio is part per million, fix the wrong arithmetic. Otherwise it will fail with -EINVAL when setting a reasonable min_ratio, as it tries to set min_ratio to (min_ratio * BDI_RATIO_SCALE) in percentage unit, which exceeds 100% anyway. # cat /sys/class/bdi/253\:0/min_ratio 0 # cat /sys/class/bdi/253\:0/max_ratio 100 # echo 1 > /sys/class/bdi/253\:0/min_ratio -bash: echo: write error: Invalid argument Fixes: 8021fb3232f2 ("mm: split off __bdi_set_min_ratio() function") Reported-by: Joseph Qi <joseph.qi@linux.alibaba.com> Signed-off-by: Jingbo Xu <jefflexu@linux.alibaba.com> --- mm/page-writeback.c | 1 - 1 file changed, 1 deletion(-)