diff --git a/scst/src/dev_handlers/scst_cdrom.c b/scst/src/dev_handlers/scst_cdrom.c index ef0da692c..107711ed5 100644 --- a/scst/src/dev_handlers/scst_cdrom.c +++ b/scst/src/dev_handlers/scst_cdrom.c @@ -22,6 +22,7 @@ #include #include #include +#include #define LOG_PREFIX "dev_cdrom" @@ -135,8 +136,7 @@ static int cdrom_attach(struct scst_device *dev) } if (rc == 0) { - int sector_size = ((buffer[4] << 24) | (buffer[5] << 16) | - (buffer[6] << 8) | (buffer[7] << 0)); + uint32_t sector_size = get_unaligned_be32(&buffer[4]); if (sector_size == 0) params->block_shift = CDROM_DEF_BLOCK_SHIFT; else diff --git a/scst/src/dev_handlers/scst_disk.c b/scst/src/dev_handlers/scst_disk.c index e4de2e181..f9cdd948a 100644 --- a/scst/src/dev_handlers/scst_disk.c +++ b/scst/src/dev_handlers/scst_disk.c @@ -230,8 +230,7 @@ static int disk_attach(struct scst_device *dev) } } if (rc == 0) { - int sector_size = ((buffer[4] << 24) | (buffer[5] << 16) | - (buffer[6] << 8) | (buffer[7] << 0)); + uint32_t sector_size = get_unaligned_be32(&buffer[4]); if (sector_size == 0) params->block_shift = DISK_DEF_BLOCK_SHIFT; else diff --git a/scst/src/dev_handlers/scst_modisk.c b/scst/src/dev_handlers/scst_modisk.c index 49ba6eb75..7e2198697 100644 --- a/scst/src/dev_handlers/scst_modisk.c +++ b/scst/src/dev_handlers/scst_modisk.c @@ -26,6 +26,7 @@ #include #include #include +#include #define LOG_PREFIX "dev_modisk" @@ -232,8 +233,7 @@ static int modisk_attach(struct scst_device *dev) } if (rc == 0) { - int sector_size = ((buffer[4] << 24) | (buffer[5] << 16) | - (buffer[6] << 8) | (buffer[7] << 0)); + uint32_t sector_size = get_unaligned_be32(&buffer[4]); if (sector_size == 0) params->block_shift = MODISK_DEF_BLOCK_SHIFT; else diff --git a/scst/src/dev_handlers/scst_tape.c b/scst/src/dev_handlers/scst_tape.c index 6d7eaa324..ff8ebd9fb 100644 --- a/scst/src/dev_handlers/scst_tape.c +++ b/scst/src/dev_handlers/scst_tape.c @@ -26,6 +26,7 @@ #include #include #include +#include #define LOG_PREFIX "dev_tape" @@ -219,9 +220,7 @@ static int tape_attach(struct scst_device *dev) if (rc == 0) { int medium_type, mode, speed, density; if (buffer[3] == 8) { - params->block_size = ((buffer[9] << 16) | - (buffer[10] << 8) | - (buffer[11] << 0)); + params->block_size = get_unaligned_be24(&buffer[9]); } else params->block_size = TAPE_DEF_BLOCK_SIZE; medium_type = buffer[1]; @@ -336,15 +335,10 @@ static int tape_done(struct scst_cmd *cmd) if ((cmd->sense[2] & 0x0f) == BLANK_CHECK) /* No need for EOM in this case */ cmd->sense[2] &= 0xcf; - TransferLength = ((cmd->cdb[2] << 16) | - (cmd->cdb[3] << 8) | cmd->cdb[4]); + TransferLength = get_unaligned_be24(&cmd->cdb[2]); /* Compute the residual count */ - if ((cmd->sense[0] & 0x80) != 0) { - Residue = ((cmd->sense[3] << 24) | - (cmd->sense[4] << 16) | - (cmd->sense[5] << 8) | - cmd->sense[6]); - } + if ((cmd->sense[0] & 0x80) != 0) + Residue = get_unaligned_be32(&cmd->sense[3]); TRACE_DBG("Checking the sense key " "sn[2]=%x cmd->cdb[0,1]=%x,%x TransLen/Resid" " %d/%d", (int)cmd->sense[2], cmd->cdb[0],