Skip to content

Commit 5f990d3

Browse files
nonapodeaxboe
authored andcommitted
block: sed-opal: fix u64 short atom length
The length must be given as bytes and not as 4 bit tuples. Reviewed-by: Scott Bauer <scott.bauer@intel.com> Signed-off-by: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 17cb960 commit 5f990d3

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

block/sed-opal.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -554,26 +554,23 @@ static void add_token_u64(int *err, struct opal_dev *cmd, u64 number)
554554

555555
size_t len;
556556
int msb;
557-
u8 n;
558557

559558
if (!(number & ~TINY_ATOM_DATA_MASK)) {
560559
add_token_u8(err, cmd, number);
561560
return;
562561
}
563562

564-
msb = fls(number);
565-
len = DIV_ROUND_UP(msb, 4);
563+
msb = fls64(number);
564+
len = DIV_ROUND_UP(msb, 8);
566565

567566
if (cmd->pos >= IO_BUFFER_LENGTH - len - 1) {
568567
pr_debug("Error adding u64: end of buffer.\n");
569568
*err = -ERANGE;
570569
return;
571570
}
572571
add_short_atom_header(cmd, false, false, len);
573-
while (len--) {
574-
n = number >> (len * 8);
575-
add_token_u8(err, cmd, n);
576-
}
572+
while (len--)
573+
add_token_u8(err, cmd, number >> (len * 8));
577574
}
578575

579576
static void add_token_bytestring(int *err, struct opal_dev *cmd,

0 commit comments

Comments
 (0)