From 0aed574e886761ac454a8bff23462dc2be072ec2 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Mon, 3 Aug 2020 02:56:37 +0000 Subject: [PATCH 1/2] scripts/generate-kernel-patch: Make this script appropriate for the trunk and 3.4.x branches git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9098 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scripts/generate-kernel-patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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" From 2bafc3bd5186f8094058da371a9f0e9e7d853cd6 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Mon, 3 Aug 2020 03:29:33 +0000 Subject: [PATCH 2/2] scst: Fix three potential integer overflows git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9103 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/src/scst_lib.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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! "