android_kernel_motorola_sm6375/block
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nathan Chancellor 2870cd0286 blk-iocost: Avoid using clamp() on inuse in __propagate_weights()
[ Upstream commit 57e420c84f9ab55ba4c5e2ae9c5f6c8e1ea834d2 ]

After a recent change to clamp() and its variants [1] that increases the
coverage of the check that high is greater than low because it can be
done through inlining, certain build configurations (such as s390
defconfig) fail to build with clang with:

  block/blk-iocost.c:1101:11: error: call to '__compiletime_assert_557' declared with 'error' attribute: clamp() low limit 1 greater than high limit active
   1101 |                 inuse = clamp_t(u32, inuse, 1, active);
        |                         ^
  include/linux/minmax.h:218:36: note: expanded from macro 'clamp_t'
    218 | #define clamp_t(type, val, lo, hi) __careful_clamp(type, val, lo, hi)
        |                                    ^
  include/linux/minmax.h:195:2: note: expanded from macro '__careful_clamp'
    195 |         __clamp_once(type, val, lo, hi, __UNIQUE_ID(v_), __UNIQUE_ID(l_), __UNIQUE_ID(h_))
        |         ^
  include/linux/minmax.h:188:2: note: expanded from macro '__clamp_once'
    188 |         BUILD_BUG_ON_MSG(statically_true(ulo > uhi),                            \
        |         ^

__propagate_weights() is called with an active value of zero in
ioc_check_iocgs(), which results in the high value being less than the
low value, which is undefined because the value returned depends on the
order of the comparisons.

The purpose of this expression is to ensure inuse is not more than
active and at least 1. This could be written more simply with a ternary
expression that uses min(inuse, active) as the condition so that the
value of that condition can be used if it is not zero and one if it is.
Do this conversion to resolve the error and add a comment to deter
people from turning this back into clamp().

Fixes: 7caa47151a ("blkcg: implement blk-iocost")
Link: https://lore.kernel.org/r/34d53778977747f19cce2abb287bb3e6@AcuMS.aculab.com/ [1]
Suggested-by: David Laight <david.laight@aculab.com>
Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Closes: https://lore.kernel.org/llvm/CA+G9fYsD7mw13wredcZn0L-KBA3yeoVSTuxnss-AEWMN3ha0cA@mail.gmail.com/
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202412120322.3GfVe3vF-lkp@intel.com/
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-19 18:05:04 +01:00
..
partitions block/partition: fix signedness issue for Amiga partitions 2023-07-27 08:37:29 +02:00
badblocks.c
bfq-cgroup.c
bfq-iosched.c block, bfq: don't break merge chain in bfq_split_bfqq() 2024-11-08 16:20:28 +01:00
bfq-iosched.h
bfq-wf2q.c
bio-integrity.c block: initialize integrity buffer to zero before writing it to media 2024-09-12 11:03:50 +02:00
bio.c block: prevent an integer overflow in bvec_try_merge_hw_page 2024-02-23 08:24:59 +01:00
blk-cgroup.c blk-cgroup: fix missing pd_online_fn() while activating policy 2023-02-06 07:52:48 +01:00
blk-core.c block: fix and cleanup bio_check_ro 2023-02-06 07:52:47 +01:00
blk-exec.c
blk-flush.c
blk-integrity.c
blk-ioc.c
blk-iocost.c blk-iocost: Avoid using clamp() on inuse in __propagate_weights() 2024-12-19 18:05:04 +01:00
blk-iolatency.c
blk-lib.c
blk-map.c
blk-merge.c treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
blk-mq-cpumap.c
blk-mq-debugfs-zoned.c
blk-mq-debugfs.c
blk-mq-debugfs.h
blk-mq-pci.c
blk-mq-rdma.c
blk-mq-sched.c blk-mq: correct stale comment of .get_budget 2023-03-11 16:43:34 +01:00
blk-mq-sched.h
blk-mq-sysfs.c
blk-mq-tag.c
blk-mq-tag.h
blk-mq-virtio.c
blk-mq.c block: fix ordering between checking BLK_MQ_S_STOPPED request adding 2024-12-14 19:44:38 +01:00
blk-mq.h block: fix ordering between checking BLK_MQ_S_STOPPED request adding 2024-12-14 19:44:38 +01:00
blk-pm.c
blk-pm.h
blk-rq-qos.c blk-rq-qos: fix crash on rq_qos_wait vs. rq_qos_wake_function race 2024-11-08 16:20:48 +01:00
blk-rq-qos.h
blk-settings.c
blk-softirq.c
blk-stat.c block: prevent division by zero in blk_rq_stat_sum() 2024-04-13 12:51:38 +02:00
blk-stat.h
blk-sysfs.c
blk-throttle.c blk-throttle: fix lockdep warning of "cgroup_mutex or RCU read lock required!" 2023-12-20 15:41:20 +01:00
blk-timeout.c
blk-wbt.c
blk-wbt.h
blk-zoned.c
blk.h
bounce.c
bsg-lib.c
bsg.c
cmdline-parser.c
compat_ioctl.c
elevator.c
genhd.c
ioctl.c
ioprio.c
Kconfig
Kconfig.iosched
kyber-iosched.c
Makefile
mq-deadline.c
opal_proto.h block: sed-opal: handle empty atoms when parsing response 2024-03-26 18:22:12 -04:00
partition-generic.c
scsi_ioctl.c
sed-opal.c block: sed-opal: handle empty atoms when parsing response 2024-03-26 18:22:12 -04:00
t10-pi.c