[PATCH] scsi: scsi_debug: fix one-partition tape setup bounds

From: Samuel Moelius

Date: Wed Jun 03 2026 - 14:25:32 EST


The tape setup path writes partition metadata one element past the
allocated tape_blocks array when a one-partition configuration is
selected.

That corrupts adjacent state during device initialization before any
command is issued.

Use the allocated partition bounds when initializing the tape block
array.

Assisted-by: Codex:gpt-5.5-cyber-preview
Signed-off-by: Samuel Moelius <sam.moelius@xxxxxxxxxxxxxxx>
---
drivers/scsi/scsi_debug.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
index 1515495fd9ea..dda19793862d 100644
--- a/drivers/scsi/scsi_debug.c
+++ b/drivers/scsi/scsi_debug.c
@@ -3664,9 +3664,13 @@ static int partition_tape(struct sdebug_dev_info *devip, int nbr_partitions,
devip->tape_eop[0] = part_0_size;
devip->tape_blocks[0]->fl_size = TAPE_BLOCK_EOD_FLAG;
devip->tape_eop[1] = part_1_size;
- devip->tape_blocks[1] = devip->tape_blocks[0] +
- devip->tape_eop[0];
- devip->tape_blocks[1]->fl_size = TAPE_BLOCK_EOD_FLAG;
+ if (nbr_partitions > 1 && part_1_size > 0) {
+ devip->tape_blocks[1] = devip->tape_blocks[0] +
+ devip->tape_eop[0];
+ devip->tape_blocks[1]->fl_size = TAPE_BLOCK_EOD_FLAG;
+ } else {
+ devip->tape_blocks[1] = NULL;
+ }

for (i = 0 ; i < TAPE_MAX_PARTITIONS; i++)
devip->tape_location[i] = 0;
--
2.43.0