diff mbox

ide: Correct the CHS 'cyls_max' limit to be 65535

Message ID 1453112371-29760-1-git-send-email-shmulik.ladkani@ravellosystems.com (mailing list archive)
State New, archived
Headers show

Commit Message

Shmulik Ladkani Jan. 18, 2016, 10:19 a.m. UTC
In b7eb0c9:
  hw/block-common: Factor out fall back to legacy -drive cyls=...
'blkconf_geometry()' was introduced, factoring out CHS limit validation
code that was repeated in ide, scsi, virtio-blk.

The original IDE CHS limit prior b7eb0c9 was 65535,16,255 (as per ATA
CHS addressing).
However the 'cyls_max' argument passed to 'blkconf_geometry' in the
ide_dev_initfn case was accidentally set to 65536 instead of 65535.

Fix, providing the correct 'cyls_max'.

Signed-off-by: Shmulik Ladkani <shmulik.ladkani@ravellosystems.com>
---
 hw/ide/qdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

John Snow Jan. 19, 2016, 7:12 p.m. UTC | #1
On 01/18/2016 05:19 AM, Shmulik Ladkani wrote:
> In b7eb0c9:
>   hw/block-common: Factor out fall back to legacy -drive cyls=...
> 'blkconf_geometry()' was introduced, factoring out CHS limit validation
> code that was repeated in ide, scsi, virtio-blk.
> 
> The original IDE CHS limit prior b7eb0c9 was 65535,16,255 (as per ATA
> CHS addressing).
> However the 'cyls_max' argument passed to 'blkconf_geometry' in the
> ide_dev_initfn case was accidentally set to 65536 instead of 65535.
> 
> Fix, providing the correct 'cyls_max'.
> 
> Signed-off-by: Shmulik Ladkani <shmulik.ladkani@ravellosystems.com>
> ---
>  hw/ide/qdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
> index 1f83109..fea5425 100644
> --- a/hw/ide/qdev.c
> +++ b/hw/ide/qdev.c
> @@ -172,7 +172,7 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
>  
>      blkconf_serial(&dev->conf, &dev->serial);
>      if (kind != IDE_CD) {
> -        blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255, &err);
> +        blkconf_geometry(&dev->conf, &dev->chs_trans, 65535, 16, 255, &err);
>          if (err) {
>              error_report_err(err);
>              return -1;
> 

Yep, this value eventually gets reported out via uint16_t, so 65535 is
correct.

Reviewed-by: John Snow <jsnow@redhat.com>

Thanks, applied to my IDE tree:

https://github.com/jnsnow/qemu/commits/ide
https://github.com/jnsnow/qemu.git

--js
diff mbox

Patch

diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 1f83109..fea5425 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -172,7 +172,7 @@  static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
 
     blkconf_serial(&dev->conf, &dev->serial);
     if (kind != IDE_CD) {
-        blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255, &err);
+        blkconf_geometry(&dev->conf, &dev->chs_trans, 65535, 16, 255, &err);
         if (err) {
             error_report_err(err);
             return -1;