From e9d686d62ee544098a3d2534574b7ae9c22f4163 Mon Sep 17 00:00:00 2001 From: Akinobu Mita Date: Thu, 25 Jun 2015 22:39:41 +0900 Subject: [PATCH] Fix testing and setting set_options bitmap set_options bitmap is an array of uint64_t. But while testing and setting a bit in the bitmap, the bit mask is calculated with an unsigned long value. For the systems which have 32-bit long type, upper 32-bit cannot be set correctly. Fix it by using (uint64_t)1 instead of 1UL to calculate correct bit mask. Signed-off-by: Akinobu Mita Signed-off-by: Jens Axboe --- options.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/options.c b/options.c index 76146a71..ed5d37e4 100644 --- a/options.c +++ b/options.c @@ -4365,7 +4365,7 @@ static int opt_is_set(struct thread_options *o, struct fio_option *opt) opt_off = opt - &fio_options[0]; index = opt_off / (8 * sizeof(uint64_t)); offset = opt_off & ((8 * sizeof(uint64_t)) - 1); - return (o->set_options[index] & (1UL << offset)) != 0; + return (o->set_options[index] & ((uint64_t)1 << offset)) != 0; } int __fio_option_is_set(struct thread_options *o, unsigned int off1) @@ -4390,5 +4390,5 @@ void fio_option_mark_set(struct thread_options *o, struct fio_option *opt) opt_off = opt - &fio_options[0]; index = opt_off / (8 * sizeof(uint64_t)); offset = opt_off & ((8 * sizeof(uint64_t)) - 1); - o->set_options[index] |= 1UL << offset; + o->set_options[index] |= (uint64_t)1 << offset; } -- 2.25.1