engines/io_uring: fix coverity issue
authorAnkit Kumar <ankit.kumar@samsung.com>
Tue, 16 May 2023 12:17:17 +0000 (17:47 +0530)
committerJens Axboe <axboe@kernel.dk>
Tue, 16 May 2023 15:01:57 +0000 (09:01 -0600)
*** CID 455020:  Integer handling issues  (BAD_SHIFT)
/engines/io_uring.c: 1201 in fio_ioring_cmd_open_file()

In expression "1 << data->lba_shift", left shifting by more than 31 bits
has undefined behavior.  The shift amount, "data->lba_shift", is 4294967295

Fixes: 345fa8f ("engines/io_uring_cmd: add extended LBA support")

Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
Link: https://lore.kernel.org/r/20230516121717.28508-2-ankit.kumar@samsung.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
engines/io_uring.c

index 90e5a8566ae8c5b9e58ac15b0160f28a01071d90..ff64fc9fbfa9b9980a58e35e0aa3dd9bde3a56b0 100644 (file)
@@ -1198,7 +1198,8 @@ static int fio_ioring_cmd_open_file(struct thread_data *td, struct fio_file *f)
                        FILE_SET_ENG_DATA(f, data);
                }
 
-               lba_size = data->lba_ext ? data->lba_ext : (1 << data->lba_shift);
+               assert(data->lba_shift < 32);
+               lba_size = data->lba_ext ? data->lba_ext : (1U << data->lba_shift);
 
                for_each_rw_ddir(ddir) {
                        if (td->o.min_bs[ddir] % lba_size ||