blk-iocost: fix divide by 0 error in calc_lcoefs()
echo max of u64 to cost.model can cause divide by 0 error. # echo 8:0 rbps=18446744073709551615 > /sys/fs/cgroup/io.cost.model divide error: 0000 [#1] PREEMPT SMP RIP: 0010:calc_lcoefs+0x4c/0xc0 Call Trace: <TASK> ioc_refresh_params+0x2b3/0x4f0 ioc_cost_model_write+0x3cb/0x4c0 ? _copy_from_iter+0x6d/0x6c0 ? kernfs_fop_write_iter+0xfc/0x270 cgroup_file_write+0xa0/0x200 kernfs_fop_write_iter+0x17d/0x270 vfs_write+0x414/0x620 ksys_write+0x73/0x160 __x64_sys_write+0x1e/0x30 do_syscall_64+0x35/0x80 entry_SYSCALL_64_after_hwframe+0x63/0xcd calc_lcoefs() uses the input value of cost.model in DIV_ROUND_UP_ULL, overflow would happen if bps plus IOC_PAGE_SIZE is greater than ULLONG_MAX, it can cause divide by 0 error. Fix the problem by setting basecost Signed-off-by:Li Nan <linan122@huawei.com> Signed-off-by:
Yu Kuai <yukuai3@huawei.com> Acked-by:
Tejun Heo <tj@kernel.org> Link: https://lore.kernel.org/r/20230117070806.3857142-5-yukuai1@huaweicloud.com Signed-off-by:
Jens Axboe <axboe@kernel.dk>
-
mentioned in commit b2e3d283
-
mentioned in commit a69d792d
-
mentioned in commit fd14671d
-
mentioned in commit 9540bafb
-
mentioned in commit 9671533e
-
mentioned in commit 36411749
-
mentioned in commit c189381c
-
mentioned in commit ab09ae74
-
mentioned in commit 661347fc
-
mentioned in commit c4113d37
-
mentioned in commit acb8ae78
-
mentioned in commit 04d2a4b5
-
mentioned in commit 24771f6e
-
mentioned in commit 49bbd346
-
mentioned in commit 39232717
-
mentioned in commit 5f5ff478
-
mentioned in commit b8d6058a
-
mentioned in commit d4f64272
-
mentioned in commit d06e7efa
-
mentioned in commit 10d94a12
-
mentioned in commit 23134c82
-
mentioned in commit 47b3ee0b
-
mentioned in commit 2076b41e
-
mentioned in commit 822fb5b1
-
mentioned in commit 2a528034
-
mentioned in commit b6863ae9
-
mentioned in commit e819a5f5
-
mentioned in commit 331917d4
-
mentioned in commit 040662b9
-
mentioned in commit eca0f41f