diff --git a/scripts/generate-kernel-patch b/scripts/generate-kernel-patch index 4a891db86..fe0454c84 100755 --- a/scripts/generate-kernel-patch +++ b/scripts/generate-kernel-patch @@ -459,8 +459,9 @@ if [ "${include_fcst}" = true ]; then done fi - add_file "fcst/Kbuild" \ - "drivers/scst/fcst/Makefile" + for f in fcst/Kbuild fcst/Makefile_in-tree; do + [ -e "$f" ] && add_file "$f" "drivers/scst/fcst/Makefile" + done add_file "fcst/Kconfig" "drivers/scst/fcst/Kconfig" diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index 856b580c8..d01481885 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -3640,7 +3640,7 @@ static int scst_full_len_to_data_len(u32 full_len, u32 block_shift) u64 res; u32 rem; - res = full_len << block_shift; + res = (u64)full_len << block_shift; rem = do_div(res, (1 << block_shift) + (1 << SCST_DIF_TAG_SHIFT)); if (unlikely(rem != 0)) TRACE(TRACE_MINOR, "Reminder %d for full len! (full len%d)", @@ -3665,7 +3665,7 @@ int scst_cmd_get_expected_transfer_len_data(struct scst_cmd *cmd) if (!cmd->tgt_dif_data_expected) return cmd->expected_transfer_len_full; - res = cmd->expected_transfer_len_full << cmd->dev->block_shift; + res = (u64)cmd->expected_transfer_len_full << cmd->dev->block_shift; rem = do_div(res, cmd->dev->block_size + (1 << SCST_DIF_TAG_SHIFT)); if (unlikely(rem != 0)) TRACE(TRACE_MINOR, "Reminder %d for expected transfer len " @@ -3691,7 +3691,7 @@ int scst_cmd_get_expected_transfer_len_dif(struct scst_cmd *cmd) if (!cmd->tgt_dif_data_expected) return 0; - res = cmd->expected_transfer_len_full << SCST_DIF_TAG_SHIFT; + res = (u64)cmd->expected_transfer_len_full << SCST_DIF_TAG_SHIFT; rem = do_div(res, cmd->dev->block_size + (1 << SCST_DIF_TAG_SHIFT)); if (unlikely(rem != 0)) TRACE(TRACE_MINOR, "Reminder %d for expected transfer len dif! "