From fa34f0683f2650b616cecc3c416927fe8fa512c7 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Wed, 18 Dec 2024 00:11:05 +0600 Subject: [PATCH] Calculate residue just in case --- src/usb/usb_msd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/usb/usb_msd.c b/src/usb/usb_msd.c index 142264f05e..d8f78224c2 100644 --- a/src/usb/usb_msd.c +++ b/src/usb/usb_msd.c @@ -322,6 +322,9 @@ usb_device_msd_handle_data(usb_device_c *device, USBPacket *p) if (scsi_devices[usb_msd->scsi_bus][usb_msd->current_lun].buffer_length == 0 && cur_phase == SCSI_PHASE_DATA_OUT) scsi_device_command_phase1(&scsi_devices[usb_msd->scsi_bus][usb_msd->current_lun]); usb_msd->current_csw.bCSWStatus = (scsi_devices[usb_msd->scsi_bus][usb_msd->current_lun].phase == SCSI_PHASE_STATUS) ? (scsi_devices[usb_msd->scsi_bus][usb_msd->current_lun].status == SCSI_STATUS_CHECK_CONDITION) : 2; + } else { + if (usb_msd->current_cbw.dCBWDataTransferLength >= scsi_devices[usb_msd->scsi_bus][usb_msd->current_lun].buffer_length) + usb_msd->current_csw.dCSWDataResidue = usb_msd->current_cbw.dCBWDataTransferLength - scsi_devices[usb_msd->scsi_bus][usb_msd->current_lun].buffer_length; } break; }