Loading drivers/scsi/sd.c +4 −17 Original line number Diff line number Diff line Loading @@ -123,7 +123,6 @@ static void scsi_disk_release(struct device *cdev); static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *); static void sd_print_result(const struct scsi_disk *, const char *, int); static DEFINE_SPINLOCK(sd_index_lock); static DEFINE_IDA(sd_index_ida); /* This semaphore is used to mediate the 0->1 reference get in the Loading Loading @@ -3339,16 +3338,8 @@ static int sd_probe(struct device *dev) if (!gd) goto out_free; do { if (!ida_pre_get(&sd_index_ida, GFP_KERNEL)) goto out_put; spin_lock(&sd_index_lock); error = ida_get_new(&sd_index_ida, &index); spin_unlock(&sd_index_lock); } while (error == -EAGAIN); if (error) { index = ida_alloc(&sd_index_ida, GFP_KERNEL); if (index < 0) { sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n"); goto out_put; } Loading Loading @@ -3392,9 +3383,7 @@ static int sd_probe(struct device *dev) return 0; out_free_index: spin_lock(&sd_index_lock); ida_remove(&sd_index_ida, index); spin_unlock(&sd_index_lock); ida_free(&sd_index_ida, index); out_put: put_disk(gd); out_free: Loading Loading @@ -3459,9 +3448,7 @@ static void scsi_disk_release(struct device *dev) struct scsi_disk *sdkp = to_scsi_disk(dev); struct gendisk *disk = sdkp->disk; spin_lock(&sd_index_lock); ida_remove(&sd_index_ida, sdkp->index); spin_unlock(&sd_index_lock); ida_free(&sd_index_ida, sdkp->index); disk->private_data = NULL; put_disk(disk); Loading Loading
drivers/scsi/sd.c +4 −17 Original line number Diff line number Diff line Loading @@ -123,7 +123,6 @@ static void scsi_disk_release(struct device *cdev); static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *); static void sd_print_result(const struct scsi_disk *, const char *, int); static DEFINE_SPINLOCK(sd_index_lock); static DEFINE_IDA(sd_index_ida); /* This semaphore is used to mediate the 0->1 reference get in the Loading Loading @@ -3339,16 +3338,8 @@ static int sd_probe(struct device *dev) if (!gd) goto out_free; do { if (!ida_pre_get(&sd_index_ida, GFP_KERNEL)) goto out_put; spin_lock(&sd_index_lock); error = ida_get_new(&sd_index_ida, &index); spin_unlock(&sd_index_lock); } while (error == -EAGAIN); if (error) { index = ida_alloc(&sd_index_ida, GFP_KERNEL); if (index < 0) { sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n"); goto out_put; } Loading Loading @@ -3392,9 +3383,7 @@ static int sd_probe(struct device *dev) return 0; out_free_index: spin_lock(&sd_index_lock); ida_remove(&sd_index_ida, index); spin_unlock(&sd_index_lock); ida_free(&sd_index_ida, index); out_put: put_disk(gd); out_free: Loading Loading @@ -3459,9 +3448,7 @@ static void scsi_disk_release(struct device *dev) struct scsi_disk *sdkp = to_scsi_disk(dev); struct gendisk *disk = sdkp->disk; spin_lock(&sd_index_lock); ida_remove(&sd_index_ida, sdkp->index); spin_unlock(&sd_index_lock); ida_free(&sd_index_ida, sdkp->index); disk->private_data = NULL; put_disk(disk); Loading