From: Jens Axboe Date: Thu, 22 Mar 2018 02:09:36 +0000 (-0600) Subject: sg: fix sign extension X-Git-Tag: fio-3.6~26 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=7ad2ddffe2bdc5e47fb86cab276db1db9e350f1b;p=fio.git sg: fix sign extension Signed-off-by: Jens Axboe --- diff --git a/engines/sg.c b/engines/sg.c index 3d927eab..72eed8b3 100644 --- a/engines/sg.c +++ b/engines/sg.c @@ -455,8 +455,10 @@ static int fio_sgio_read_capacity(struct thread_data *td, unsigned int *bs, return ret; } - *bs = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7]; - *max_lba = ((buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]) & MAX_10B_LBA; // for some reason max_lba is being sign extended even though unsigned. + *bs = ((unsigned long) buf[4] << 24) | ((unsigned long) buf[5] << 16) | + ((unsigned long) buf[6] << 8) | (unsigned long) buf[7]; + *max_lba = ((unsigned long) buf[0] << 24) | ((unsigned long) buf[1] << 16) | + ((unsigned long) buf[2] << 8) | (unsigned long) buf[3]; /* * If max lba masked by MAX_10B_LBA equals MAX_10B_LBA,