diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index c4d7d520b8ff450c7777406ed8c893fc88df510e..da3fa417bea19cc718e0a6f0285b0a830f1d1550 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -790,6 +790,7 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
             start_track = buf[6];
             bdrv_get_geometry(s->bdrv, &nb_sectors);
             DPRINTF("Read TOC (track %d format %d msf %d)\n", start_track, format, msf >> 1);
+            nb_sectors /= s->cluster_size;
             switch(format) {
             case 0:
                 toclen = cdrom_read_toc(nb_sectors, outbuf, msf, start_track);