diff --git a/module/os/windows/zfs/zfs_windows_zvol_scsi.c b/module/os/windows/zfs/zfs_windows_zvol_scsi.c index cec8313b04a4..6d9f549a00a4 100644 --- a/module/os/windows/zfs/zfs_windows_zvol_scsi.c +++ b/module/os/windows/zfs/zfs_windows_zvol_scsi.c @@ -885,8 +885,13 @@ ScsiOpReportLuns( } } - *((ULONG*)&pLunList->LunListLength) = - RtlUlongByteSwap(totalLun * sizeof (pLunList->Lun[0])); + if (pSrb->DataTransferLength >= + FIELD_OFFSET(LUN_LIST, LunListLength) + + sizeof (pLunList->LunListLength)) { + *((ULONG*)&pLunList->LunListLength) = + RtlUlongByteSwap(totalLun * sizeof (pLunList->Lun[0])); + } + pSrb->DataTransferLength = FIELD_OFFSET(LUN_LIST, Lun) + (GoodLunIdx * sizeof (pLunList->Lun[0]));