diff options
Diffstat (limited to 'drivers/ide/ide-cd.c')
-rw-r--r-- | drivers/ide/ide-cd.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 4a19686fcfe9..f0ede5953af8 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
@@ -876,9 +876,12 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity, | |||
876 | return stat; | 876 | return stat; |
877 | 877 | ||
878 | /* | 878 | /* |
879 | * Sanity check the given block size | 879 | * Sanity check the given block size, in so far as making |
880 | * sure the sectors_per_frame we give to the caller won't | ||
881 | * end up being bogus. | ||
880 | */ | 882 | */ |
881 | blocklen = be32_to_cpu(capbuf.blocklen); | 883 | blocklen = be32_to_cpu(capbuf.blocklen); |
884 | blocklen = (blocklen >> SECTOR_BITS) << SECTOR_BITS; | ||
882 | switch (blocklen) { | 885 | switch (blocklen) { |
883 | case 512: | 886 | case 512: |
884 | case 1024: | 887 | case 1024: |
@@ -886,10 +889,9 @@ static int cdrom_read_capacity(ide_drive_t *drive, unsigned long *capacity, | |||
886 | case 4096: | 889 | case 4096: |
887 | break; | 890 | break; |
888 | default: | 891 | default: |
889 | printk(KERN_ERR PFX "%s: weird block size %u\n", | 892 | printk_once(KERN_ERR PFX "%s: weird block size %u; " |
893 | "setting default block size to 2048\n", | ||
890 | drive->name, blocklen); | 894 | drive->name, blocklen); |
891 | printk(KERN_ERR PFX "%s: default to 2kb block size\n", | ||
892 | drive->name); | ||
893 | blocklen = 2048; | 895 | blocklen = 2048; |
894 | break; | 896 | break; |
895 | } | 897 | } |