diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index 7ad25a402..9e9335b75 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -5405,12 +5405,13 @@ int scst_sbc_generic_parse(struct scst_cmd *cmd, } if (cmd->op_flags & SCST_TRANSFER_LEN_TYPE_FIXED) { + int block_shift = get_block_shift(cmd); /* * No need for locks here, since *_detach() can not be * called, when there are existing commands. */ - cmd->bufflen = cmd->bufflen << get_block_shift(cmd); - cmd->out_bufflen = cmd->out_bufflen << get_block_shift(cmd); + cmd->bufflen = cmd->bufflen << block_shift; + cmd->out_bufflen = cmd->out_bufflen << block_shift; } set_timeout: @@ -5468,8 +5469,9 @@ int scst_cdrom_generic_parse(struct scst_cmd *cmd, } if (cmd->op_flags & SCST_TRANSFER_LEN_TYPE_FIXED) { - cmd->bufflen = cmd->bufflen << get_block_shift(cmd); - cmd->out_bufflen = cmd->out_bufflen << get_block_shift(cmd); + int block_shift = get_block_shift(cmd); + cmd->bufflen = cmd->bufflen << block_shift; + cmd->out_bufflen = cmd->out_bufflen << block_shift; } set_timeout: @@ -5527,8 +5529,9 @@ int scst_modisk_generic_parse(struct scst_cmd *cmd, } if (cmd->op_flags & SCST_TRANSFER_LEN_TYPE_FIXED) { - cmd->bufflen = cmd->bufflen << get_block_shift(cmd); - cmd->out_bufflen = cmd->out_bufflen << get_block_shift(cmd); + int block_shift = get_block_shift(cmd); + cmd->bufflen = cmd->bufflen << block_shift; + cmd->out_bufflen = cmd->out_bufflen << block_shift; } set_timeout: @@ -5583,8 +5586,9 @@ int scst_tape_generic_parse(struct scst_cmd *cmd, } if (cmd->op_flags & SCST_TRANSFER_LEN_TYPE_FIXED & cmd->cdb[1]) { - cmd->bufflen = cmd->bufflen * get_block_size(cmd); - cmd->out_bufflen = cmd->out_bufflen * get_block_size(cmd); + int block_size = get_block_size(cmd); + cmd->bufflen = cmd->bufflen * block_size; + cmd->out_bufflen = cmd->out_bufflen * block_size; } if ((cmd->op_flags & (SCST_SMALL_TIMEOUT | SCST_LONG_TIMEOUT)) == 0) diff --git a/scst/src/scst_targ.c b/scst/src/scst_targ.c index f394fdefc..a882ee92b 100644 --- a/scst/src/scst_targ.c +++ b/scst/src/scst_targ.c @@ -4844,6 +4844,7 @@ out: return res; } +/* IRQs supposed to be disabled */ static bool __scst_check_unblock_aborted_cmd(struct scst_cmd *cmd, struct list_head *list_entry) {