]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
selftests: ublk: fix overflow in ublk_queue_auto_zc_fallback()
authorMing Lei <ming.lei@redhat.com>
Fri, 12 Dec 2025 17:16:59 +0000 (10:16 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 12 Dec 2025 19:50:40 +0000 (12:50 -0700)
commit9637fc3bdd10c8e073f71897bd35babbd21e9b29
tree0fa1edb72ccbe87bfdbad87e8121bedecc5e0a9b
parentd9f514d3e6ee48c34d70d637479b4c9384832d4f
selftests: ublk: fix overflow in ublk_queue_auto_zc_fallback()

The functions ublk_queue_use_zc(), ublk_queue_use_auto_zc(), and
ublk_queue_auto_zc_fallback() were returning int, but performing
bitwise AND on q->flags which is __u64.

When a flag bit is set in the upper 32 bits (beyond INT_MAX), the
result of the bitwise AND operation could overflow when cast to int,
leading to incorrect boolean evaluation.

For example, if UBLKS_Q_AUTO_BUF_REG_FALLBACK is 0x8000000000000000:
  - (u64)flags & 0x8000000000000000 = 0x8000000000000000
  - Cast to int: undefined behavior / incorrect value
  - Used in if(): may evaluate incorrectly

Fix by:
1. Changing return type from int to bool for semantic correctness
2. Using !! to explicitly convert to boolean (0 or 1)

This ensures the functions return proper boolean values regardless
of which bit position the flags occupy in the 64-bit field.

Fixes: c3a6d48f86da ("selftests: ublk: remove ublk queue self-defined flags")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
tools/testing/selftests/ublk/kublk.h