Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[linux-2.6-microblaze.git] / drivers / scsi / sd.c
index 7493164..a1a2ac0 100644 (file)
@@ -3072,7 +3072,7 @@ static void sd_read_cpr(struct scsi_disk *sdkp)
                goto out;
 
        /* We must have at least a 64B header and one 32B range descriptor */
-       vpd_len = get_unaligned_be16(&buffer[2]) + 3;
+       vpd_len = get_unaligned_be16(&buffer[2]) + 4;
        if (vpd_len > buf_len || vpd_len < 64 + 32 || (vpd_len & 31)) {
                sd_printk(KERN_ERR, sdkp,
                          "Invalid Concurrent Positioning Ranges VPD page\n");
@@ -3521,7 +3521,7 @@ static int sd_probe(struct device *dev)
        error = device_add_disk(dev, gd, NULL);
        if (error) {
                put_device(&sdkp->disk_dev);
-               blk_cleanup_disk(gd);
+               put_disk(gd);
                goto out;
        }
 
@@ -3542,7 +3542,6 @@ static int sd_probe(struct device *dev)
  out_put:
        put_disk(gd);
  out_free:
-       sd_zbc_release_disk(sdkp);
        kfree(sdkp);
  out:
        scsi_autopm_put_device(sdp);
@@ -3579,7 +3578,7 @@ static void scsi_disk_release(struct device *dev)
        struct scsi_disk *sdkp = to_scsi_disk(dev);
 
        ida_free(&sd_index_ida, sdkp->index);
-       sd_zbc_release_disk(sdkp);
+       sd_zbc_free_zone_info(sdkp);
        put_device(&sdkp->device->sdev_gendev);
        free_opal_dev(sdkp->opal_dev);